Итак, я смотрю на:
https://help.ubuntu.com/community/LiveCDCustomizationFromScratch
и пробую следующее в сценарии bash:
sudo chroot chroot
mount none -t proc /proc
mount none -t sysfs /sys
mount none -t devpts /dev/pts
Запуск сценария падает до оболочки в sudo chroot chroot. Когда я exit, я получаю ожидаемые предупреждения о монте, требующем root. Есть ли способ сохранить все это в одном сценарии оболочки?
Изменить: Я хочу, чтобы это был повторяемый процесс, поэтому я хочу сценаризировать все это, а не печатать его во времени и времени снова.
Привет, u должен идти с простым решением, например pipe:
cat << EOF | chroot chroot
rm -rf /
EOF
PS. joking about rm -rf;), все, что вы запускаете внутри EOF - EOF запускается внутри вашего chrooted каталога, вы также можете использовать sudo, если вам нравится
cat << EOF | sudo chroot chroot
ls /
EOF
Дело в chroot s и /proc, /sys и /dev/pts заключается в том, что эти три файловые системы предоставлены ядром, поэтому они остаются неизменными, независимо от того, монтируете ли вы внутри chroot или извне. В самом деле, вы увидите ранее в инструкциях:
sudo mount --bind /dev chroot/dev
/dev заполняется ядром, но не является файловой системой, предоставляемой ядром, поэтому его нужно было установить с помощью связывания. Поэтому на практике вы увидите, что установка его с помощью связочных привязок (или иначе) до ввода chroot работает так же хорошо (предположим sudo):
for i in dev proc sys dev/pts
do
mount -o bind /$i chroot/$i
done
chroot chroot
for i in dev/pts proc sys dev
do
umount -chroot/$i
done
# or
mount -o bind /dev chroot/dev
mount -t sysfs none chroot/sys
mount -t proc none chroot/proc
mount -t devpts none chroot/dev/pts
chroot chroot
for i in dev/pts proc sys dev
do
umount -chroot/$i
done
Соответствующее чтение: [!d2 ] mount dev, proc, sys в среде chroot? Какие из proc, sys и т. Д. Должны быть привязаны (или нет), когда chrooting в «заменяющий» дистрибутив? Автоматизация chroot в сломанную систему
Вы могли бы создать сценарий .bashrc или что-то вроде этого, которое добавлено к chroot env's /root/.bashrc, которое делает все монтирование и т. д. После этого вы восстанавливаете резервную копию .bashrc в / root и выходите из chroot :
Основной скрипт:
#!/usr/bin/env bash
cp bashrcscript chroot/root/
if [ -a chroot/root/.bashrc ]; then
cp chroot/root/.bashrc chroot/root/.bashrc.bak
fi
echo "./bashrcscript" >> chroot/root/.bashrc
chroot chroot/
rm chroot/root/.bashrc
rm chroot/root/bashrcscript
if [ -a chroot/root/.bashrc.bak ]; then
mv chroot/root/.bashrc.bak chroot/root/.bashrc
fi
bashrcscript:
mount none -t proc /proc
mount none -t sysfs /sys
mount none -t devpts /dev/pts
# Anything else you like to do
Бахрскрипт будет выполнен при запуске корневой консоли. Убедитесь, что он выполним.
Вы даже можете скопировать копирование resolv.conf в основной скрипт и т. Д.
Я думаю, что это не означает, что вы должны поместить эти команды в скрипт, но вы должны набирать их; т. е. введите команды mount в оболочку sudo.