Делаю switch_root, и так, и сяк, а оно сыпется ошибками. Не критичными, всё работает, но хотелось бы от них избавиться. Не знаю, как правильно делать switch_root.
[ 1.338833] Run /init as init process
switch_root: failed to mount moving /dev to /newroot/dev: Invalid argument
switch_root: forcing unmount of /dev
switch_root: failed to mount moving /proc to /newroot/proc: Invalid argument
switch_root: forcing unmount of /proc
switch_root: failed to mount moving /sys to /newroot/sys: Invalid argument
switch_root: forcing unmount of /sys
switch_root: failed to mount moving /run to /newroot/run: No such file or directory
switch_root: forcing unmount of /run
INIT: version 2.96 booting
The system is coming up. Please wait.
/init скрипт имеет следующий вид:
# cat init
#!/bin/sh
error() {
setsid sh -c 'exec sh </dev/tty1 >/dev/tty1 2>&1'
}
mount -t proc none /proc || error
mount -t sysfs none /sys || error
mount -t devtmpfs devtmpfs /dev || error
mount -t tmpfs tmpfs /overlay || error
mkdir -p /ro /overlay/rw /overlay/work
mount -t squashfs -o loop,noatime /filesystem.squashfs /ro || error
mount -t overlay -o lowerdir=/ro,upperdir=/overlay/rw,workdir=/overlay/work rootfs /newroot || error
umount /proc
umount /sys
umount /dev
exec switch_root /newroot /sbin/init
error
Ни umount, ни mount --move, ни mount --rbind, ничего не помогает, оно либо говорит что /proc /sys already mounted, либо ещё что похуже. Как правильно приготовить новую ФС перед switch_root?