Проблемы с удаленным inodes обычно могут решаться только с файловой системой, проверяют устройство umounted:
e2fsck -f /dev/sda1
Как сказанный Hauke, самый легкий способ выполнить проверки в umounted файловых системах через Живой носитель.
Вы действительно уверены, что корень архива
находится в отдельной файловой системе, которую можно монтировать и размонтировать?
pivot_root
, а также более современная switch_root
, работает путем манипулирования информацией о смонтированных файловых системах в ядре.
Новая корневая файловая система должна быть «корнем» файловой системы, вы не можете передать ее ». как новый корень, если только "." это корневой каталог смонтированной файловой системы.
Я считаю, что самый простой способ, если вы хотите попробовать pivot_root
из текущей настройки (при условии, что корень архива является подкаталогом, а не корневым каталогом), это создать файловую систему tmpfs
чтобы переключиться, и скопируйте туда необходимые данные.
Что-то вроде этих строк может помочь вам начать: (настройте 500M, чтобы соответствовать du -sh arch-root
)
mkdir /ramroot mount -n -t tmpfs -o size=500M none /ramroot cd arch-root # (containing the root filesystem contents) find . -depth -xdev -print | cpio -pd --quiet /ramroot cd /ramroot mkdir oldroot pivot_root . oldroot exec chroot . bin/sh
С страницы Я считаю, что это ваша проблема:
The following restrictions apply to new_root and put_old:
- They must be directories.
- new_root and put_old must not be on the same file system as the current
root.
- put_old must be underneath new_root, that is, adding a nonzero number of
/.. to the string pointed to by put_old must yield the same directory as
new_root.
- No other file system may be mounted on put_old.
Согласно вышеуказанной той же файловой системе нельзя использовать как для Put_Old
, так и new_root
.