скриптовый chroot, как?

Итак, я смотрю на:

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. Есть ли способ сохранить все это в одном сценарии оболочки?

Изменить: Я хочу, чтобы это был повторяемый процесс, поэтому я хочу сценаризировать все это, а не печатать его во времени и времени снова.

1
задан 19 November 2014 в 12:57

4 ответа

Привет, 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
5
ответ дан 24 May 2018 в 01:45

Дело в 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 в сломанную систему

2
ответ дан 24 May 2018 в 01:45

Вы могли бы создать сценарий .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 в основной скрипт и т. Д.

1
ответ дан 24 May 2018 в 01:45
  • 1
    Это выглядит многообещающе, я немного изменил этот вопрос, чтобы уточнить, что я хотел создать сценарий. Позвольте мне проверить это и получить отчет. – Dr.Avalanche 19 November 2014 в 13:16

Я думаю, что это не означает, что вы должны поместить эти команды в скрипт, но вы должны набирать их; т. е. введите команды mount в оболочку sudo.

-1
ответ дан 24 May 2018 в 01:45
  • 1
    Да, я ищу сценарий для этого, так что это повторяемый процесс, а не тип вещей. – Dr.Avalanche 19 November 2014 в 13:18

Другие вопросы по тегам:

Похожие вопросы: