SliTaz GNU/Linux official and community documentation wiki.
.png
This translation is older than the original page and might be outdated. See what has changed.
Translations of this page:

Окружение chroot

Этот документ описывает этапы, необходимые для создания окружения chroot, что даст вам возможность изменить корень файловой системы, и вы сможете в ней работать. При этом вы получите возможность компилировать, тестировать и разрабатывать SliTaz, не боясь повредить основную систему, в которой вы находитесь. В качестве основной системы может служить сам SliTaz, установленный на жесткий диск, или любая другая система GNU/Linux, например, Debian, Fedora, PCLinuxOS и др. Можно также создать окружение chroot в режиме Live CD + USB-носитель. Единственное необходимое условие — наличие ISO-образа SliTaz и немного времени. Важно помнить, что все нижеприведенные команды выполняются от имени системного администратора (root).

Подготовка окружения

Для начала необходимо распаковать содержимое ISO-образа в папку, которая станет нашим chroot. Эту директорию можно создать в любом месте, мы же будем использовать папку /home/slitaz/chroot-env. Чтобы распаковать образ, мы должны смонтировать эту папку в режиме петли (loop), а затем скопировать в нее файл сжатой корневой файловой системы (rootfs.gz). Допустим, образ диска уже находится в этой папке, тогда выполним следующие команды:

# mkdir /tmp/loop
# mount -o loop slitaz-cooking.iso /tmp/loop
# mkdir -p /home/slitaz/chroot-env
# cp /tmp/loop/boot/rootfs.gz /home/slitaz/chroot-env
# umount /tmp/loop

Теперь у нас есть копия сжатой файловой системы, давайте распакуем ее (это cpio-архив, сжатый при помощи gzip или lzma). По завершении удалим сам rootfs.gz, он нам больше не нужен:

# cd /home/slitaz/chroot-env
# (zcat rootfs.gz 2>/dev/null || lzma d rootfs.gz -so) | cpio -id
# rm rootfs rootfs.gz

Если распаковка файла, сжатого lzma, не удалась, можно использовать следующий способ:

# unlzma rootfs.gz -S .gz 
# cat rootfs | cpio -id

Использование окружения

Перед тем как начать работать в окружении chroot, потребуется смонтировать некоторые виртуальные файловые системы и использовать команду chroot. С целью упрощения этой задачи напишем маленький скрипт, автоматизирующий данный процесс. Будем использовать папку /home/slitaz/chroot-env, а сам скрипт назовем chroot_in_env.sh и поместим его в /home/slitaz. В других системах (не SliTaz) вы можете снять комментарий со строк, монтирующих /dev и /tmp. Этот скрипт можно вставить в любой текстовый редактор, чтобы не тратить время на его набор.

 # cat > /home/slitaz/chroot_in_env.sh << "EOF" 
#!/bin/sh
# Chroot in SliTaz to hack.
#
ROOTFS="/home/slitaz/chroot-env"

# подключение виртуальной файловой системы ядра и chroot.
#
#mount --bind /dev $ROOTFS/dev
#mount --bind /tmp $ROOTFS/tmp
mount -t proc proc $ROOTFS/proc
mount -t sysfs sysfs $ROOTFS/sys
mount -t devpts devpts $ROOTFS/dev/pts
mount -t tmpfs shm $ROOTFS/dev/shm

echo "Переключение chroot в $ROOTFS... "
chroot $ROOTFS /bin/sh --login

# отключение виртуальной файловой системы ядра при выходе.
#
umount $ROOTFS/dev/shm
umount $ROOTFS/dev/pts
umount $ROOTFS/sys
umount $ROOTFS/proc
#umount $ROOTFS/tmp
#umount $ROOTFS/dev

echo "Выход из окружения chroot $ROOTFS... "

EOF

Чтобы протестировать окружение, сделаем скрипт исполняемым и запустим его:

# chmod +x /home/slitaz/chroot_in_env.sh
# sh /home/slitaz/chroot_in_env.sh

Запуск сети

Чтобы включить сеть и иметь возможность скачивать и устанавливать пакеты для разработки, запустим клиент DHCP и укажем нужный интерфейс, например:

# udhcpc -i eth1

Установка пакетов

Когда сеть заработает, обновите список пакетов и используйте команду tazpkg get-install для их установки. Если соединения нет, можно брать пакеты из другой системы, копировать их в окружение chroot и устанавливать командой tazpkg install. Для примера, установим базовые утилиты для компиляции:

# tazpkg recharge
# tazpkg get-install slitaz-toolchain 

Как только окружение будет настроено, можно будет компилировать приложения из исходников и создавать из них пакеты, тестовые скрипты и т.д. Подробную информацию вы найдете в Cookbook.

Выход из окружения

Для выхода из окружения chroot просто наберите exit, при этом скрипт chroot_in_env.sh отмонтирует виртуальные файловые системы от ядра Linux и завершит свою работу:

# exit
#

Статью перевел Cyril

 
ru/handbook/chroot.txt · Last modified: 2010/09/17 09:30 by lexeii