slitaz-doc-wiki-data view pages/ru/handbook/chroot.txt @ rev 2

Add pages/ru folder.
author Christopher Rogers <slaxemulator@gmail.com>
date Sat Feb 26 12:11:48 2011 +0000 (2011-02-26)
parents
children
line source
1 ===== Окружение chroot=====
3 Этот документ описывает этапы, необходимые для создания окружения chroot, что даст вам возможность изменить корень файловой системы, и вы сможете в ней работать. При этом вы получите возможность компилировать, тестировать и разрабатывать SliTaz, не боясь повредить основную систему, в которой вы находитесь. В качестве основной системы может служить сам SliTaz, установленный на жесткий диск, или любая другая система GNU/Linux, например, Debian, Fedora, PCLinuxOS и др. Можно также создать окружение chroot в режиме Live CD + USB-носитель. Единственное необходимое условие — наличие ISO-образа SliTaz и немного времени. Важно помнить, что все нижеприведенные команды выполняются от имени системного администратора (root).
6 ===Подготовка окружения===
8 Для начала необходимо распаковать содержимое ISO-образа в папку, которая станет нашим chroot. Эту директорию можно создать в любом месте, мы же будем использовать папку ///home/slitaz/chroot-env//. Чтобы распаковать образ, мы должны смонтировать эту папку в режиме петли (loop), а затем скопировать в нее файл сжатой корневой файловой системы (//rootfs.gz//). Допустим, образ диска уже находится в этой папке, тогда выполним следующие команды:
10 <code>
11 # mkdir /tmp/loop
12 # mount -o loop slitaz-cooking.iso /tmp/loop
13 # mkdir -p /home/slitaz/chroot-env
14 # cp /tmp/loop/boot/rootfs.gz /home/slitaz/chroot-env
15 # umount /tmp/loop
16 </code>
18 Теперь у нас есть копия сжатой файловой системы, давайте распакуем ее (это cpio-архив, сжатый при помощи gzip или lzma). По завершении удалим сам //rootfs.gz//, он нам больше не нужен:
20 <code>
21 # cd /home/slitaz/chroot-env
22 # (zcat rootfs.gz 2>/dev/null || lzma d rootfs.gz -so) | cpio -id
23 # rm rootfs rootfs.gz
24 </code>
26 Если распаковка файла, сжатого lzma, не удалась, можно использовать следующий способ:
28 <code>
29 # unlzma rootfs.gz -S .gz
30 # cat rootfs | cpio -id
31 </code>
34 =====Использование окружения=====
36 Перед тем как начать работать в окружении chroot, потребуется смонтировать некоторые виртуальные файловые системы и использовать команду chroot. С целью упрощения этой задачи напишем маленький скрипт, автоматизирующий данный процесс. Будем использовать папку ///home/slitaz/chroot-env//, а сам скрипт назовем //chroot_in_env.sh// и поместим его в ///home/slitaz//. В других системах (не SliTaz) вы можете снять комментарий со строк, монтирующих ///dev// и ///tmp//. Этот скрипт можно вставить в любой текстовый редактор, чтобы не тратить время на его набор.
38 <code> # cat > /home/slitaz/chroot_in_env.sh << "EOF" </code>
39 <file>
40 #!/bin/sh
41 # Chroot in SliTaz to hack.
42 #
43 ROOTFS="/home/slitaz/chroot-env"
45 # подключение виртуальной файловой системы ядра и chroot.
46 #
47 #mount --bind /dev $ROOTFS/dev
48 #mount --bind /tmp $ROOTFS/tmp
49 mount -t proc proc $ROOTFS/proc
50 mount -t sysfs sysfs $ROOTFS/sys
51 mount -t devpts devpts $ROOTFS/dev/pts
52 mount -t tmpfs shm $ROOTFS/dev/shm
54 echo "Переключение chroot в $ROOTFS... "
55 chroot $ROOTFS /bin/sh --login
57 # отключение виртуальной файловой системы ядра при выходе.
58 #
59 umount $ROOTFS/dev/shm
60 umount $ROOTFS/dev/pts
61 umount $ROOTFS/sys
62 umount $ROOTFS/proc
63 #umount $ROOTFS/tmp
64 #umount $ROOTFS/dev
66 echo "Выход из окружения chroot $ROOTFS... "
68 EOF
69 </file>
71 Чтобы протестировать окружение, сделаем скрипт исполняемым и запустим его:
73 <code>
74 # chmod +x /home/slitaz/chroot_in_env.sh
75 # sh /home/slitaz/chroot_in_env.sh
76 </code>
79 ===Запуск сети===
81 Чтобы включить сеть и иметь возможность скачивать и устанавливать пакеты для разработки, запустим клиент DHCP и укажем нужный интерфейс, например:
83 <code># udhcpc -i eth1</code>
86 ===Установка пакетов===
88 Когда сеть заработает, обновите список пакетов и используйте команду //tazpkg get-install// для их установки. Если соединения нет, можно брать пакеты из другой системы, копировать их в окружение chroot и устанавливать командой //tazpkg install//. Для примера, установим базовые утилиты для компиляции:
90 <code>
91 # tazpkg recharge
92 # tazpkg get-install slitaz-toolchain
93 </code>
95 Как только окружение будет настроено, можно будет компилировать приложения из исходников и создавать из них пакеты, тестовые скрипты и т.д. Подробную информацию вы найдете в [[ru:cookbook:start|Cookbook]].
98 ===Выход из окружения===
100 Для выхода из окружения chroot просто наберите //exit//, при этом скрипт //chroot_in_env.sh// отмонтирует виртуальные файловые системы от ядра Linux и завершит свою работу:
102 <code>
103 # exit
104 #
105 </code>
107 ----
108 Статью перевел [[http://forum.slitaz.org/index.php/profile/1273/Cyril|Cyril]]