systemd-nspawn как альтернатива chroot ... ?

anode
аргументы?
Никаких, что касается безопасности.
Лично мне удобнее, нагдядно видно, хотя бы в том, что я вижу - где я нахожусь ... а так - решетка там, решетка здесь - и забываю где я нахожусь.
Ну и для размышления - разное окружение ...

Так и не понял - что там с файлами /usr/lib/os-release, /etc/os-release ?
Ошибки не исчезают с опытом - они просто умнеют
Естественно, их нет и быть не должно. /usr/lib/os-release принадлежит systemd.
Если такой файл создать, лучше от єтого не становится.
Да и речь совершенно о другом. Chroot - традиционная юникс команда, предназначенная для выполнения в специальном корневом каталоге команды из этого каталога. Имеет 5 параметров,два из которых --version и --help. И man страницу на 10 строк.
systemd-nspawn - контейнер, со всеми вытекающими, пусть и легковесный, пусть очередной велосипед от Лёни, но контейнер: сотня опций, конфиги и.т.д. Конечно, можно использовать вместо chroot, для наивных так в руководстве и написано: продвинутый chroot, но это из пушки по воробьям.
ЗЫ.
Все привыкли чарутиться с командой /bin/sh -i, но ведь можно и так:
-su-5.0# uname -a
Linux TM8481 4.19.57-1 #1 SMP PREEMPT Sat Jul 6 08:46:19 EEST 2019 x86_64 Intel(R) Core(TM) i3-2357M CPU @ 1.30GHz GenuineIntel GNU/Linux
-su-5.0# chroot /mnt/arch /usr/bin/mkinitcpio -p linux
==> ERROR: /proc must be mounted!
-su-5.0# mount -B /proc /mnt/arch/proc
-su-5.0# mount -B /dev /mnt/arch/dev
-su-5.0# mount -B /sys /mnt/arch/sys
-su-5.0# ls -l /mnt/arch/boot/*.img
-rw-r--r-- 1 root root 3164160 чер 12 21:00 /mnt/arch/boot/intel-ucode.img
-su-5.0# chroot /mnt/arch /usr/bin/mkinitcpio -p linux
==> Building image from preset: /etc/mkinitcpio.d/linux.preset: 'default'
  -> -k /boot/vmlinuz-linux -c /etc/mkinitcpio.conf -g /boot/initramfs-linux.img
==> Starting build: 5.7.2-arch1-1
  -> Running build hook: [base]
  -> Running build hook: [udev]
  -> Running build hook: [resume]
  -> Running build hook: [autodetect]
  -> Running build hook: [modconf]
  -> Running build hook: [block]
  -> Running build hook: [filesystems]
  -> Running build hook: [keyboard]
  -> Running build hook: [fsck]
==> Generating module dependencies
==> Creating gzip-compressed initcpio image: /boot/initramfs-linux.img
==> Image generation successful
==> Building image from preset: /etc/mkinitcpio.d/linux.preset: 'fallback'
  -> -k /boot/vmlinuz-linux -c /etc/mkinitcpio.conf -g /boot/initramfs-linux-fallback.img -S autodetect
==> Starting build: 5.7.2-arch1-1
  -> Running build hook: [base]
  -> Running build hook: [udev]
  -> Running build hook: [resume]
  -> Running build hook: [modconf]
  -> Running build hook: [block]
==> WARNING: Possibly missing firmware for module: aic94xx
==> WARNING: Possibly missing firmware for module: wd719x
  -> Running build hook: [filesystems]
  -> Running build hook: [keyboard]
  -> Running build hook: [fsck]
==> Generating module dependencies
==> Creating gzip-compressed initcpio image: /boot/initramfs-linux-fallback.img
==> Image generation successful
-su-5.0# ls -l /mnt/arch/boot/*.img
-rw-r--r-- 1 root root 34441486 гру  3 12:26 /mnt/arch/boot/initramfs-linux-fallback.img
-rw-r--r-- 1 root root 13052135 гру  3 12:25 /mnt/arch/boot/initramfs-linux.img
-rw-r--r-- 1 root root  3164160 чер 12 21:00 /mnt/arch/boot/intel-ucode.img
Как видите, я сгенерировал образы инитрам для арча находясьв другой ос, не покидая ее и не имея в ней команды mkinitcpio )
Можно и так
-su-5.0# chroot /mnt/arch /usr/bin/pacman -Sy
:: Синхронізування бази даних пакунків...
 core                            132,8 KiB   179 KiB/s 00:01 [################################] 100%
 extra                          1636,4 KiB  1788 KiB/s 00:01 [################################] 100%
 community                         5,2 MiB  2,99 MiB/s 00:02 [################################] 100%
 archlinuxcn                    1433,8 KiB  2,32 MiB/s 00:01 [################################] 100%
-su-5.0#

Это Linux, способов всегда несколько и каждый выбирает то, что ему нравится.
Топик открыл с одной целью, чтобы показать альтернативу ... чем больше способов для решения задачи, тем лучше ...
Обстоятельства могут быть разные и нужно всегда иметь запасной вариант.
Ошибки не исчезают с опытом - они просто умнеют
chroot2pfs
PuppyRusArch (PRA)

[root@TM-8481 ~]# pacstrap /mnt/cont base
.....
[root@TM-8481 ~]# systemd-nspawn -D /mnt/cont/
Spawning container cont on /mnt/cont.
Press ^] three times within 1s to kill container.
[root@cont ~]# hwclock --systohc
hwclock: Cannot access the Hardware Clock via any known method.
hwclock: Use the --verbose option to see the details of our search for an access method.
vasek
а вот вместо chroot
фиг применеш во время установки, хотя часы можно и потом установить, а вот с grubом как? Попробуйте применить параметр --bind для systemd-nspawn или позаписовать что-то типа ' b 8:* rwm' в файл /sys/fs/cgroup/devices/machine.slice/machine-ваш_контейнер.scope/devices.allow на хосте после запуска контейнера. Вам понравится, линукс же, куча методов )))
ЗЫ. Запуск командой systemd-nspawn -D /mnt/cont --bind=/dev/rtc0 -b -- --unit rescue.target не дает установить часы:
[root@cont ~]# hwclock --systohc
hwclock: ioctl(RTC_SET_TIME) to /dev/rtc0 to set the time failed: Permission denied
[root@cont ~]# ls -l /dev
....
crw-rw-rw- 1 root root   1, 8 Dec  6 12:35 random
crw------- 1 root root 249, 0 Dec  5 19:55 rtc0
drwxrwxrwt 2 root root     40 Dec  6 12:35 shm
...
anode, после моего знакомства с systemd-nspawn вынес одно, что фича довольно сложная и навороченная, но лично мне это все не нужно, ... но понравилось одно, использовать, при необходимости, в качестве альтернативы chroot, с загрузкой в emergency mode, для ремонта системы.
Правда давно не вешал так систему, чтобы это использовать, а также так до конца и не понял - что такое можно сделать с использованием systemd-nspawn, чего нельзя сделать с использованием chroot ... пока для себя вижу один плюс - проще запуск.

Ну а вообщем - если в systemd появилась новая фича, то опробовать ее нужно - иначе не будет и развития и знать ни хрена не будешь.
Ошибки не исчезают с опытом - они просто умнеют
anode
не дает установить часы
В DOC написано
systemd-nspawn limits access to various kernel interfaces in the container to read-only, such as /sys, /proc/sys or /sys/fs/selinux. Network interfaces and the system clock may not be changed from within the container. Device nodes may not be created. The host system cannot be rebooted and kernel modules may not be loaded from within the container.
И насколько я понял о /sys, /proc, /dev и часах лучше забыть. Не возможно загрузить и модули - пытался подключить USB 3G modem, не смог ... и больше с этим экпериментировать не буду.
Ошибки не исчезают с опытом - они просто умнеют
 
Зарегистрироваться или войдите чтобы оставить сообщение.