Kron4ek / Conty

Easy to use unprivileged Linux container packed into a single portable executable
MIT License
719 stars 36 forks source link

Conversion of xz conty to lz4 / permissions issues with bind mount. #14

Closed satmandu closed 3 years ago

satmandu commented 3 years ago

My steps using the squashfs-tools-ng programs:

cd /usr/local
curl -OLf https://raw.githubusercontent.com/Kron4ek/Conty/master/squashfs-start.sh
curl -OLf https://github.com/Kron4ek/Conty/raw/master/utils.tar 
curl -OLf https://github.com/Kron4ek/Conty/releases/download/1.5/conty.sh
chmod +x conty.sh
dd if=/usr/local/conty.sh of=/usr/local/image.squashfs bs=`/usr/local/conty.sh -o` skip=1
sqfs2tar /usr/local/image.squashfs | tar2sqfs -c lz4 /usr/local/imagelz4.squashfs
cat squashfs-start.sh utils.tar /usr/local/imagelz4.squashfs > conty_lz4.sh
chmod +x conty_lz4.sh

Some stuff works fine:

SUDO_MOUNT=1 USE_SYS_UTILS=1  ./conty_lz4.sh  glxinfo -B
Using system squashfuse and bwrap
Using regular mount command (sudo mount) instead of squashfuse
Running Conty

name of display: :0
display: :0  screen: 0
direct rendering: Yes
Extended renderer info (GLX_MESA_query_renderer):
    Vendor: Intel Open Source Technology Center (0x8086)
    Device: Mesa DRI Intel(R) UHD Graphics 615 (AML-KBL) (0x591c)
    Version: 21.0.1
    Accelerated: yes
    Video memory: 3058MB
    Unified memory: yes
    Preferred profile: core (0x1)
    Max core profile version: 4.6
    Max compat profile version: 3.0
    Max GLES1 profile version: 1.1
    Max GLES[23] profile version: 3.2
OpenGL vendor string: Intel Open Source Technology Center
OpenGL renderer string: Mesa DRI Intel(R) UHD Graphics 615 (AML-KBL)
OpenGL core profile version string: 4.6 (Core Profile) Mesa 21.0.1
OpenGL core profile shading language version string: 4.60
OpenGL core profile context flags: (none)
OpenGL core profile profile mask: core profile

OpenGL version string: 3.0 Mesa 21.0.1
OpenGL shading language version string: 1.30
OpenGL context flags: (none)

OpenGL ES profile version string: OpenGL ES 3.2 Mesa 21.0.1
OpenGL ES profile shading language version string: OpenGL ES GLSL ES 3.20

Some does not:

SUDO_MOUNT=1 USE_SYS_UTILS=1  ./conty_lz4.sh  geany
Using system squashfuse and bwrap
Using regular mount command (sudo mount) instead of squashfuse
Running Conty

(geany:12610): Gtk-WARNING **: 16:02:32.009: Could not find the icon 'window-close-symbolic-ltr'. The 'hicolor' theme
was not found either, perhaps you need to install it.
You can get a copy from:
        http://icon-theme.freedesktop.org/releases

(geany:12610): Gtk-WARNING **: 16:02:32.010: Could not load a pixbuf from /org/gtk/libgtk/icons/16x16/status/image-missing.png.
This may indicate that pixbuf loaders or the mime database could not be found.
**
Gtk:ERROR:../gtk/gtk/gtkiconhelper.c:494:ensure_surface_for_gicon: assertion failed (error == NULL): Failed to load /org/gtk/libgtk/icons/16x16/status/image-missing.png: Unrecognized image file format (gdk-pixbuf-error-quark, 3)
Bail out! Gtk:ERROR:../gtk/gtk/gtkiconhelper.c:494:ensure_surface_for_gicon: assertion failed (error == NULL): Failed to load /org/gtk/libgtk/icons/16x16/status/image-missing.png: Unrecognized image file format (gdk-pixbuf-error-quark, 3)
SUDO_MOUNT=1 USE_SYS_UTILS=1 GDK_BACKEND=x11 ./conty_lz4.sh --bind /usr/local/home $HOME --setenv HOME 
/usr/local/home firefox
Using system squashfuse and bwrap
Using regular mount command (sudo mount) instead of squashfuse
Running Conty

Fontconfig error: No writable cache directories
Fontconfig error: No writable cache directories
Fontconfig error: No writable cache directories
Fontconfig error: No writable cache directories
Fontconfig error: No writable cache directories
Fontconfig error: No writable cache directories
Fontconfig error: No writable cache directories
Fontconfig error: No writable cache directories

(firefox:8751): Gtk-WARNING **: 15:50:02.285: Could not find the icon 'dialog-warning'. The 'hicolor' theme
was not found either, perhaps you need to install it.
You can get a copy from:
        http://icon-theme.freedesktop.org/releases

(firefox:8751): Gtk-WARNING **: 15:50:02.285: Error loading theme icon 'dialog-warning' for stock: Icon 'dialog-warning' not present in theme Adwaita

(firefox:8751): Gtk-WARNING **: 15:50:02.286: Could not load a pixbuf from /org/gtk/libgtk/icons/48x48/status/image-missing.png.
This may indicate that pixbuf loaders or the mime database could not be found.

(firefox:8751): Gtk-WARNING **: 15:50:02.286: Error loading theme icon 'image-missing' for stock: Failed to load /org/gtk/libgtk/icons/48x48/status/image-missing.png: Unrecognized image file format

Now trying playonlinux:

SUDO_MOUNT=1 USE_SYS_UTILS=1  ./conty_lz4.sh --bind /usr/local/home $HOME --setenv HOME /usr/local/home playonlinux

But I'm getting permissions issues:

chronos@localhost /usr/local $ sudo chmod -R 777 home
chronos@localhost /usr/local $ SUDO_MOUNT=1 USE_SYS_UTILS=1 GDK_BACKEND=x11 ./conty_lz4.sh --bind /usr/local/home $HOME --setenv HOME /usr/local/home playonlinux
Using system squashfuse and bwrap
Using regular mount command (sudo mount) instead of squashfuse
Running Conty

Looking for python... 3.9.2 - skipped
Looking for python2.7... 2.7.18 - wxversion(s): 3.0-gtk3
/usr/lib64/python2.7/site-packages/wx-3.0-gtk3/wx/_core.py:16629: UserWarning: wxPython/wxWidgets release number mismatch
  warnings.warn("wxPython/wxWidgets release number mismatch")
selected
/usr/lib64/python2.7/site-packages/wx-3.0-gtk3/wx/_core.py:16629: UserWarning: wxPython/wxWidgets release number mismatch
  warnings.warn("wxPython/wxWidgets release number mismatch")
/bin/sh: line 1: xrdb: command not found
1
Fontconfig error: No writable cache directories
Fontconfig error: No writable cache directories
Fontconfig error: No writable cache directories
Fontconfig error: No writable cache directories
Fontconfig error: No writable cache directories
Fontconfig error: No writable cache directories
Fontconfig error: No writable cache directories
mkdir: cannot create directory ‘/usr/local/home’: Read-only file system
[main] Message: PlayOnLinux (4.3.4) is starting
mkdir: cannot create directory ‘/usr/local/home’: Read-only file system
mkdir: cannot create directory ‘/usr/local/home’: Read-only file system
mkdir: cannot create directory ‘/usr/local/home’: Read-only file system
mkdir: cannot create directory ‘/usr/local/home’: Read-only file system
mkdir: cannot create directory ‘/usr/local/home’: Read-only file system
mkdir: cannot create directory ‘/usr/local/home’: Read-only file system
mkdir: cannot create directory ‘/usr/local/home’: Read-only file system
mkdir: cannot create directory ‘/usr/local/home’: Read-only file system
mkdir: cannot create directory ‘/usr/local/home’: Read-only file system
mkdir: cannot create directory ‘/usr/local/home’: Read-only file system
mkdir: cannot create directory ‘/usr/local/home’: Read-only file system
mkdir: cannot create directory ‘/usr/local/home’: Read-only file system
mkdir: cannot create directory ‘/usr/local/home’: Read-only file system
mkdir: cannot create directory ‘/usr/local/home’: Read-only file system
mkdir: cannot create directory ‘/usr/local/home’: Read-only file system
mkdir: cannot create directory ‘/usr/local/home’: Read-only file system
mkdir: cannot create directory ‘/usr/local/home’: Read-only file system
mkdir: cannot create directory ‘/usr/local/home’: Read-only file system
mkdir: cannot create directory ‘/usr/local/home’: Read-only file system
mkdir: cannot create directory ‘/usr/local/home’: Read-only file system
mkdir: cannot create directory ‘/usr/local/home’: Read-only file system
mkdir: cannot create directory ‘/usr/local/home’: Read-only file system
touch: cannot touch '/usr/local/home/.PlayOnLinux//configurations/custom': No such file or directory
touch: cannot touch '/usr/local/home/.PlayOnLinux//playonlinux.cfg': No such file or directory
touch: cannot touch '/usr/local/home/.PlayOnLinux//extensions.cfg': No such file or directory
touch: cannot touch '/usr/local/home/.PlayOnLinux//configurations/listes/gecko.lst': No such file or directory
touch: cannot touch '/usr/local/home/.PlayOnLinux//configurations/wgetrc': No such file or directory
[clean_tmp] Message: Cleaning temp directory
mv: cannot stat '/usr/local/home/.PlayOnLinux//tmp': No such file or directory
mkdir: cannot create directory ‘/usr/local/home’: Read-only file system
[POL_Config_Write] Message: Config write: VDRIVES_LINK_MADE TRUE
/usr/share/playonlinux/lib/playonlinux.lib: line 103: /usr/local/home/.PlayOnLinux//tmp/newcfg10596: No such file or directory
/usr/share/playonlinux/lib/playonlinux.lib: line 104: /usr/local/home/.PlayOnLinux//tmp/newcfg10596: No such file or directory
mv: cannot stat '/usr/local/home/.PlayOnLinux//tmp/newcfg10596': No such file or directory
ln: failed to create symbolic link "/usr/local/home/PlayOnLinux's virtual drives": No such file or directory
mkdir: cannot create directory ‘/usr/local/home’: Read-only file system
[Check_OpenGL] Warning: check_dd_x86 missing, test skipped
mkdir: cannot create directory ‘/usr/local/home’: Read-only file system
[Check_OpenGL] Warning: check_dd_amd64 missing, test skipped
mkdir: cannot create directory ‘/usr/local/home’: Read-only file system
[main] Message: Filesystem is compatible
wget: WGETRC points to /usr/local/home/.PlayOnLinux//configurations/wgetrc, which couldn't be accessed because of error: No such file or directory.
Traceback (most recent call last):
  File "mainwindow.py", line 1404, in <module>
    app = PlayOnLinuxApp(redirect=False)
  File "/usr/lib64/python2.7/site-packages/wx-3.0-gtk3/wx/_core.py", line 8628, in __init__
    self._BootstrapApp()
  File "/usr/lib64/python2.7/site-packages/wx-3.0-gtk3/wx/_core.py", line 8196, in _BootstrapApp
    return _core_.PyApp__BootstrapApp(*args, **kwargs)
  File "mainwindow.py", line 1197, in OnInit
    self.frame = MainWindow(None, -1, os.environ["APPLICATION_TITLE"])
  File "mainwindow.py", line 328, in __init__
    files = os.listdir(Variables.playonlinux_rep + "/plugins")
OSError: [Errno 2] No such file or directory: '/usr/local/home/.PlayOnLinux//plugins'

(This could be a problem with the conversion of the squashfs image, but in case it isn't... just mentioning it.)

Kron4ek commented 3 years ago

This is probably because of the --setenv HOME argument, try without it. Just --bind /usr/local/home $HOME should be enough.

satmandu commented 3 years ago
SUDO_MOUNT=1 USE_SYS_UTILS=1  ./conty_lz4.sh --bind /usr/local/home $HOME  /usr/local/home playonlinux
Using system squashfuse and bwrap
Using regular mount command (sudo mount) instead of squashfuse
Running Conty

bwrap: execvp /usr/local/home: No such file or directory
satmandu commented 3 years ago

whoops.

SUDO_MOUNT=1 USE_SYS_UTILS=1  ./conty_lz4.sh --bind /usr/local/home $HOME  playonlinux
Using system squashfuse and bwrap
Using regular mount command (sudo mount) instead of squashfuse
Running Conty

Looking for python... 3.9.2 - skipped
Looking for python2.7... 2.7.18 - wxversion(s): 3.0-gtk3
/usr/lib64/python2.7/site-packages/wx-3.0-

So that works...

Kron4ek commented 3 years ago

Though geany doesn't work even without --setenv HOME, maybe there are also some conversion issues.

satmandu commented 3 years ago

the font download still breaks, but wine installs: image

Kron4ek commented 3 years ago

I get these errors during fonts downloading too, probably a PlayOnLinux bug.

satmandu commented 3 years ago

Gets stuck here: image

Kron4ek commented 3 years ago

Hm, i don't know why this happens, for me it downloads the Notepad installer and installs it. What if you try to download the file from the url manually and choose "Use a setup file in my computer"?

p.s. You need to put the installer to /usr/local/home, otherwise PoL won't be able to see it.

satmandu commented 3 years ago

Though geany doesn't work even without --setenv HOME, maybe there are also some conversion issues. This appears to work when running conty as root...

xhost +local:
sudo bash
SUDO_MOUNT=1 USE_SYS_UTILS=1 ALLOW_ROOT=1 ./conty_lz4.sh  geany

image image

Kron4ek commented 3 years ago

But Geany works (or at least worked when you last tried it) with the previous conty_lite_lz4.sh even without root rights, right?

satmandu commented 3 years ago

Let me check. I don't recall trying geany then...