LINUX.ORG.RU

Как запустить AppImage в chroot?

 , , , ,


0

2

Неужели никак?

Сделал

debootstrap --arch=amd64 bionic bionic-chroot
mkdir bionic-chroot/root/binaries
mkdir bionic-chroot/root/binaries/appimage
mkdir bionic-chroot/root/bin
cp appimagetool-x86_64.AppImage bionic-chroot/root/binaries/appimage/
systemd-nspawn -D bionic-chroot/
Получаю
root@bionic-chroot:~# /root/binaries/appimage/appimagetool-x86_64.AppImage --help
fuse: device not found, try 'modprobe fuse' first

Cannot mount AppImage, please check your FUSE setup.
You might still be able to extract the contents of this AppImage 
if you run it with the --appimage-extract option. 
See https://github.com/AppImage/AppImageKit/wiki/FUSE 
for more information
open dir error: No such file or directory
root@bionic-chroot:~#
root@bionic-chroot:~# modprobe fuse
modprobe: FATAL: Module fuse not found in directory /lib/modules/5.4.0-135-generic
root@bionic-chroot:~#

cast derlafff

UPD

Решение: Как запустить AppImage в chroot? (комментарий)

★★★

Последнее исправление: Dimez (всего исправлений: 3)

Загрузить fuse вне чрута (руками или при загрузке системы), либо вкомпилить его в ядро

annulen ★★★★★
()
Ответ на: комментарий от annulen

Вне чрута:

# modprobe fuse
(ничего не вывелось)
# uname -r
5.4.0-135-generic
# cat /boot/config-5.4.0-135-generic | grep FUSE
CONFIG_FUSE_FS=y
# CONFIG_AUFS_BR_FUSE is not set
После systemd-nspawn -D bionic-chroot/ результат запуска файла не поменялся.

damix9 ★★★
() автор топика

попробуй distrobox, это намного лучше чем мутить chroot. Если что хомяк хоста уже будет доступен сразу в контейнере без каких либо танцев с бубном.

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
brew install podman
brew services start podman
curl -s https://raw.githubusercontent.com/89luca89/distrobox/main/install | sudo sh 
distrobox-create --name archlinux --image archlinux
distrobox-enter archlinux
./Appimage.appimage
 distrobox-enter archlinux -- /path/to/Appimage.appimage
 # чтобы сразу с хоста запускать и не входить в контейнер

В день два раза вот это упражнение делай позвоночник не будет болеть.

Unixson
()
Последнее исправление: Unixson (всего исправлений: 2)
Ответ на: комментарий от annulen

Не знаю, как посмотреть?

root@bionic-chroot:~# mount | grep '/dev'
/dev/sda1 on / type ext4 (rw,relatime)
tmpfs on /dev type tmpfs (rw,nosuid,mode=755)
tmpfs on /dev/shm type tmpfs (rw,nosuid,nodev)
devpts on /dev/pts type devpts (rw,nosuid,noexec,relatime,gid=5,mode=620,ptmxmode=666)
devpts on /dev/console type devpts (rw,nosuid,noexec,relatime,gid=5,mode=620,ptmxmode=000)
/dev/sdb2 on /etc/resolv.conf type ext4 (ro,nosuid,nodev,relatime,errors=remount-ro)
cgroup on /sys/fs/cgroup/devices type cgroup (ro,nosuid,nodev,noexec,relatime,devices)

damix9 ★★★
() автор топика
Ответ на: комментарий от damix9

Как вариант - прокинуть не весь /dev, а только /dev/fuse. Или забить на fuse и использовать распаковку, как советует бинарник

annulen ★★★★★
()
Ответ на: комментарий от annulen
systemd-nspawn --bind=/dev/ -D bionic-chroot/
root@bionic-chroot:~# mount | grep '/dev'
/dev/sda1 on / type ext4 (rw,relatime)
tmpfs on /dev type tmpfs (rw,nosuid,mode=755)
tmpfs on /dev/shm type tmpfs (rw,nosuid,nodev)
devpts on /dev/pts type devpts (rw,nosuid,noexec,relatime,gid=5,mode=620,ptmxmode=666)
devpts on /dev/console type devpts (rw,nosuid,noexec,relatime,gid=5,mode=620,ptmxmode=000)
udev on /dev type devtmpfs (rw,nosuid,relatime,size=2975800k,nr_inodes=743950,mode=755)
devpts on /dev/pts type devpts (rw,nosuid,noexec,relatime,gid=5,mode=620,ptmxmode=000)
tmpfs on /dev/shm type tmpfs (rw,nosuid,nodev)
hugetlbfs on /dev/hugepages type hugetlbfs (rw,relatime,pagesize=2M)
mqueue on /dev/mqueue type mqueue (rw,relatime)
/dev/sdb2 on /etc/resolv.conf type ext4 (ro,nosuid,nodev,relatime,errors=remount-ro)
cgroup on /sys/fs/cgroup/devices type cgroup (ro,nosuid,nodev,noexec,relatime,devices)
root@bionic-chroot:~# 
root@bionic-chroot:~# /root/binaries/appimage/appimagetool-x86_64.AppImage --help
fuse: failed to open /dev/fuse: Operation not permitted

Cannot mount AppImage, please check your FUSE setup.
You might still be able to extract the contents of this AppImage 
if you run it with the --appimage-extract option. 
See https://github.com/AppImage/AppImageKit/wiki/FUSE 
for more information
open dir error: No such file or directory
root@bionic-chroot:~#
damix9 ★★★
() автор топика
Ответ на: комментарий от damix9

tmpfs on /dev type tmpfs (rw,nosuid,mode=755)

Системда тебя не поняла, или не хочет понимать

annulen ★★★★★
()
Ответ на: комментарий от annulen

Вот так заработало, спасибо!

systemd-nspawn --bind=/dev/fuse -D bionic-chroot/
После этого стало
root@bionic-chroot:~# mount | grep '/dev/fuse'
udev on /dev/fuse type devtmpfs (rw,nosuid,relatime,size=2975800k,nr_inodes=743950,mode=755)
root@bionic-chroot:~# 
root@bionic-chroot:~# /root/binaries/appimage/appimagetool-x86_64.AppImage --help
Usage:
  appimagetool [OPTION?] SOURCE [DESTINATION] - Generate, extract, and inspect AppImages

Help Options:
  -h, --help                  Show help options

Application Options:
  -l, --list                  List files in SOURCE AppImage
  -u, --updateinformation     Embed update information STRING; if zsyncmake is installed, generate zsync file
  -g, --guess                 Guess update information based on Travis CI or GitLab environment variables
  --bintray-user              Bintray user name
  --bintray-repo              Bintray repository
  --version                   Show version number
  -v, --verbose               Produce verbose output
  -s, --sign                  Sign with gpg[2]
  --comp                      Squashfs compression
  -n, --no-appstream          Do not check AppStream metadata
  --exclude-file              Uses given file as exclude file for mksquashfs, in addition to .appimageignore.
  --runtime-file              Runtime file to use
  --sign-key                  Key ID to use for gpg[2] signatures
  --sign-args                 Extra arguments to use when signing with gpg[2]

root@bionic-chroot:~#

damix9 ★★★
() автор топика
Ответ на: комментарий от damix9

Я подозреваю, что с --bind=/dev (без слэша на конце) то же бы заработало, но может это ограничение «для безопасности» (хотя я осуждаю такую защиту от дурака, многие используют чрут совсем не ради изоляции)

annulen ★★★★★
()
Последнее исправление: annulen (всего исправлений: 2)
Ответ на: комментарий от annulen

Всё гораздо проще, можно было проверить командой ls -al /dev/fuse. Да и собственно даже монтировать не обязательно, можно было просто скопировать туда это устройство.

firkax ★★★★★
()
Последнее исправление: firkax (всего исправлений: 1)
Ответ на: комментарий от firkax

Для чрута все равно нужно байндить /proc и /sys, по моей логике одним путем больше, одним меньше - не суть важно.

annulen ★★★★★
()
Для того чтобы оставить комментарий войдите или зарегистрируйтесь.