===== Окружение 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 Как только окружение будет настроено, можно будет компилировать приложения из исходников и создавать из них пакеты, тестовые скрипты и т.д. Подробную информацию вы найдете в [[ru:cookbook:start|Cookbook]]. ===Выход из окружения=== Для выхода из окружения chroot просто наберите //exit//, при этом скрипт //chroot_in_env.sh// отмонтирует виртуальные файловые системы от ядра Linux и завершит свою работу: # exit # ---- Статью перевел [[http://forum.slitaz.org/index.php/profile/1273/Cyril|Cyril]]