slitaz-doc-wiki-data annotate pages/ru/scratchbook/base-system.txt @ rev 101

Update meta folder.
author Christopher Rogers <slaxemulator@gmail.com>
date Thu Sep 15 06:36:20 2011 +0000 (2011-09-15)
parents
children
rev   line source
slaxemulator@2 1 ======Базовый вариант Slitaz======
slaxemulator@2 2
slaxemulator@2 3 Строим дистрибутив SliTaz, работающий в RAM, на основе Busybox.
slaxemulator@2 4
slaxemulator@2 5
slaxemulator@2 6 =====Введение=====
slaxemulator@2 7
slaxemulator@2 8 Этот документ описывает создание базового варианта SliTaz, а также причины, по которым мы используем ядро Linux, BusyBox и Syslinux для загрузки системы. SliTaz использует архив initramfs, который распаковывается ядром в RAM при загрузке. Мы создадим архив с файлами от 3 до 4 Мб и используем утилиту strip, чтобы уменьшить размер библиотек и исполняемых файлов.
slaxemulator@2 9
slaxemulator@2 10 Скрипты и конфигурационные файлы были созданы в редакторе GNU nano (Ctrl-X для сохранения и выхода), но, безусловно, вы вправе использовать любой другой текстовый редактор.
slaxemulator@2 11
slaxemulator@2 12 Данный документ основывается на инструкции, найденной в архиве BusyBox, которая, в свою очередь, базируется на докладе Эрика Андерсона на Конференции по встроенным системам (Embedded Systems Conference) в 2001 г.
slaxemulator@2 13
slaxemulator@2 14
slaxemulator@2 15 =====Скачиваем исходники через wget=====
slaxemulator@2 16
slaxemulator@2 17 Создаем папку //src// для скачивания и компиляции файлов:
slaxemulator@2 18
slaxemulator@2 19 <code>
slaxemulator@2 20 # mkdir -p src
slaxemulator@2 21 # cd src
slaxemulator@2 22 </code>
slaxemulator@2 23
slaxemulator@2 24 Скачиваем необходимые файлы:
slaxemulator@2 25
slaxemulator@2 26 * Ядро Linux 2.6.20 ([[http://www.kernel.org/|www.kernel.org]]). <code># wget ftp://ftp.kernel.org/pub/linux/kernel/v2.6/linux-2.6.20.tar.bz2</code>
slaxemulator@2 27 * Busybox 1.2.2 ([[http://www.busybox.net/|www.busybox.net]]). <code># wget http://www.busybox.net/downloads/busybox-1.2.2.tar.bz2</code>
slaxemulator@2 28 * Syslinux 3.35 ([[http://syslinux.zytor.com/|syslinux.zytor.com]]). <code># wget ftp://ftp.kernel.org/pub/linux/boot/syslinux/syslinux-3.35.tar.gz</code>
slaxemulator@2 29 * SliTaz tools 1.1 (распаковываем после скачивания): <code># wget http://download.tuxfamily.org/slitaz/sources/tools/slitaz-tools-1.1.tar.gz
slaxemulator@2 30 # tar xzf slitaz-tools-1.1.tar.gz</code>
slaxemulator@2 31
slaxemulator@2 32
slaxemulator@2 33 =====Распаковываем и подготавливаем ядро Linux=====
slaxemulator@2 34
slaxemulator@2 35 Начнем с компиляции ядра Linux, что займет некоторое время.
slaxemulator@2 36
slaxemulator@2 37
slaxemulator@2 38 ===Ядро Linux===
slaxemulator@2 39
slaxemulator@2 40 Ваше ядро должно поддерживать файловую систему initramfs, иначе CD-ROM не сможет загрузиться. Также вы можете устанавливать модули в отдельную папку, чтобы не затрагивать основную систему. Сконфигурировать исходники ядра можно командой ''make menuconfig'', используя ncurses, или графическими утилитами, выполнив команды ''make gconfig'' или ''make xconfig'' (на основе пакетов разработки GTK и/или QT соответственно). В [[ru:cookbook:slitaz-tools|SliTaz tools]] вы можете найти образцы Makefile для различных ядер серии 2.6.xx.
slaxemulator@2 41
slaxemulator@2 42 Характерной чертой ядер 2.6 является то, что, если мы запускаем menuconfig, xconfig или config в первый раз, меню настроек будет основываться на конфигурации нашего текущего ядра.
slaxemulator@2 43
slaxemulator@2 44 Опции настроек зависят от ваших нужд, также вы можете установить module-init-tools для поддержки сжатых модулей или, создавая минимальную систему, выберите только самые необходимые опции.
slaxemulator@2 45
slaxemulator@2 46 Начнем с изменения исходников — команда ''make mrproper'' упорядочит их, а затем запустим интерфейс конфигурации — gconfig, xconfig, menuconfig или oldconfig:
slaxemulator@2 47
slaxemulator@2 48 <code>
slaxemulator@2 49 # tar xjf linux-2.6.20.tar.bz2
slaxemulator@2 50 # cd linux-2.6.20
slaxemulator@2 51 # make mrproper
slaxemulator@2 52 # cp ../slitaz-tools-1.1/Makefiles/linux-2.6.20-slitaz.config .config
slaxemulator@2 53 # make oldconfig
slaxemulator@2 54 (# make menuconfig)
slaxemulator@2 55 # make bzImage
slaxemulator@2 56 # make modules
slaxemulator@2 57 # make INSTALL_MOD_PATH=$PWD/_pkg modules_install
slaxemulator@2 58 # cd ..
slaxemulator@2 59 </code>
slaxemulator@2 60
slaxemulator@2 61 Если вам нужна более подробная информация по компиляции ядра, существует много книг на эту тему. Кстати, вы можете установить ядро, а после перезагрузки компилировать собственное ядро, следуя тем же инструкциям.
slaxemulator@2 62
slaxemulator@2 63
slaxemulator@2 64 =====Создаем корневую файловую систему (rootfs)=====
slaxemulator@2 65
slaxemulator@2 66 Следующим этапом создадим папку с названием //rootfs// (корневая файловая система, Root File System) в нашей рабочей папке //SliTaz///:
slaxemulator@2 67
slaxemulator@2 68 <code># mkdir ../rootfs</code>
slaxemulator@2 69
slaxemulator@2 70
slaxemulator@2 71 ===Устанавливаем BusyBox===
slaxemulator@2 72
slaxemulator@2 73 BusyBox ([[http://www.busybox.net/|www.busybox.net]]) — это один исполняемый файл, содержащий версии основных утилит, необходимых для использования ядра Linux. Его основное назначение — встраиваться в системы и выполнять почти все задачи. Помимо того, что BusyBox предлагает команды оболочки (coreutils) и систему демонов, он также содержит веб-сервер и клиент-сервер (DHCP, udhcpc).
slaxemulator@2 74
slaxemulator@2 75 <code># tar -xjf busybox-1.2.2.tar.bz2</code>
slaxemulator@2 76
slaxemulator@2 77 Cконфигурируем и настроим, запомнив опции dumpkmap, init и др. — подробности вы найдете в файле Makefile в SliTaz BusyBox. Make install создает папку //_install// в текущей папке:
slaxemulator@2 78
slaxemulator@2 79 <code>
slaxemulator@2 80 # cd busybox-1.2.2
slaxemulator@2 81 # cp ../slitaz-tools-1.1/Makefiles/busybox-1.2.2.config .config
slaxemulator@2 82 # make oldconfig
slaxemulator@2 83 (# make menuconfig)
slaxemulator@2 84 # make
slaxemulator@2 85 # make install
slaxemulator@2 86 # chmod 4755 _install/bin/busybox
slaxemulator@2 87 </code>
slaxemulator@2 88
slaxemulator@2 89 Скопируем файлы, скомпилированные BusyBox, в папку //_install// корневой файловой системы (rootfs):
slaxemulator@2 90
slaxemulator@2 91 <code># cp -a _install/* ../../rootfs</code>
slaxemulator@2 92
slaxemulator@2 93 Ccылка //linuxrc//, указывающая на ///bin/busybox// и папки .bin, /lib и /sbin, была добавлена в папку ///rootfs// — можете в этом убедиться. Может оказаться, что ссылки там не окажется, если вы не отметили в BusyBox опцию "initrd support" (поддержка initrd). Удалим ссылку //linuxrc// и создадим ссылку для //init//, указывающую на ///bin/busybox//:
slaxemulator@2 94
slaxemulator@2 95 <code>
slaxemulator@2 96 # cd ../../rootfs
slaxemulator@2 97 # ls -CF</code><file>
slaxemulator@2 98 bin/ linuxrc@ sbin/ usr/</file><code>
slaxemulator@2 99 # rm linuxrc
slaxemulator@2 100 # ln -s bin/busybox init
slaxemulator@2 101 </code>
slaxemulator@2 102
slaxemulator@2 103 ===Выполним команду ldd на BusyBox===
slaxemulator@2 104
slaxemulator@2 105 Команда //ldd// может вывести список библиотек, которые использует та или иная программа. Библиотеки, используемые BusyBox, могут варьироваться в зависимости от основной системы. Например, в системе Debian — путем копирования библиотек в ///lib/tls//. Следующие команды даны с использованием опции //-v// (verbose) для вывода подробных сообщений. Чтобы удалить отладочную информацию из исполнимых файлов и разделяемых библиотек, мы используем команду //strip//. При этом также можно использовать библиотеки mklibs или uClibc.
slaxemulator@2 106
slaxemulator@2 107 <code># mkdir lib</code>
slaxemulator@2 108
slaxemulator@2 109 В SliTaz или другой системе:
slaxemulator@2 110
slaxemulator@2 111 <code>
slaxemulator@2 112 # cp /lib/{libcrypt.so.1,libm.so.6,libc.so.6} lib
slaxemulator@2 113 # cp /lib/ld-linux.so.2 lib
slaxemulator@2 114 </code>
slaxemulator@2 115
slaxemulator@2 116 Пример в Debian Etch:
slaxemulator@2 117
slaxemulator@2 118 <code>
slaxemulator@2 119 # cp /lib/tls/{libcrypt.so.1,libm.so.6,libc.so.6} lib
slaxemulator@2 120 # cp /lib/ld-linux.so.2 lib
slaxemulator@2 121 </code>
slaxemulator@2 122
slaxemulator@2 123 Очистка библиотек командой //strip//:
slaxemulator@2 124
slaxemulator@2 125 <code># strip -v lib/*</code>
slaxemulator@2 126
slaxemulator@2 127
slaxemulator@2 128 ===Дерево папок Linux и начальная настройка===
slaxemulator@2 129
slaxemulator@2 130 Создайте несколько папок, представляющих стандартные папки Linux: ///dev// для устройств, ///etc//, ///home//, ///usr//, ///proc//, ///root// и др. Чтобы больше узнать об иерархии файловой системы и ее содержимом, существует Стандарт иерархии файловой системы (File System Hierarchy Standard), доступный в различных форматах по адресу [[http://www.pathname.com/fhs/|www.pathname.com/fhs/]].
slaxemulator@2 131
slaxemulator@2 132 Вы также можете создать свое дерево папок. В традиционных системах Unix папка ///usr// обычно содержит файлы данного дистрибутива, ///dev// — устройства, ///etc// — файлы конфигурации, ///lib// — библиотеки, ///home// — содержит домашние папки пользователей, а ///var// — различные данные. Обратите внимание, что мы не создаем папок ///lib//, ///bin// и ///sbin// — они будут созданы при установке BusyBox.
slaxemulator@2 133
slaxemulator@2 134 <code>
slaxemulator@2 135 # mkdir -p dev etc root home proc media mnt sys tmp var
slaxemulator@2 136 # mkdir -p usr/{lib,local,games,share} \
slaxemulator@2 137 var/{cache,lib,lock,log,games,run,spool} \
slaxemulator@2 138 media/{cdrom,flash,usbdisk}
slaxemulator@2 139 </code>
slaxemulator@2 140
slaxemulator@2 141 Изменим права доступа для папки ///tmp//:
slaxemulator@2 142
slaxemulator@2 143 <code># chmod 1777 tmp</code>
slaxemulator@2 144
slaxemulator@2 145 Настроим glibc; здесь важно, что файлы ///etc/ld.so.conf// и ///etc/rpc// не являются необходимыми при построении микросистемы:
slaxemulator@2 146
slaxemulator@2 147 <code>
slaxemulator@2 148 # touch etc/ld.so.conf
slaxemulator@2 149 # cp /etc/rpc etc
slaxemulator@2 150 </code>
slaxemulator@2 151
slaxemulator@2 152
slaxemulator@2 153 ===Создаем устройства в /dev===
slaxemulator@2 154
slaxemulator@2 155 Эту процедуру можно выполнить через скрипт //mkdevs.sh// из состава BusyBox — или через наш скрипт //mktazdevs.sh// из SliTaz tools. Если вам нужна более подробная информация, ознакомьтесь с этими скриптами. Если вы воспользовались первым скриптом, всё равно потребуется создать папку //pts//:
slaxemulator@2 156
slaxemulator@2 157 <code>
slaxemulator@2 158 # cp ../src/slitaz-tools-1.1/utils/mktazdevs.sh bin
slaxemulator@2 159 # ./bin/mktazdevs.sh dev
slaxemulator@2 160 </code>
slaxemulator@2 161
slaxemulator@2 162 или
slaxemulator@2 163
slaxemulator@2 164 <code>
slaxemulator@2 165 # cp ../src/busybox-1.2.2/examples/bootfloppy/mkdevs.sh bin
slaxemulator@2 166 # ./bin/mkdevs.sh dev
slaxemulator@2 167 # mkdir -p dev/{pts,input,shm,net,usb}
slaxemulator@2 168 </code>
slaxemulator@2 169
slaxemulator@2 170 Чтобы создавать устройства динамически при загрузке, запускайте //mdev-s// через скрипт //rcS//.
slaxemulator@2 171
slaxemulator@2 172
slaxemulator@2 173 ===Поддержка расширений имен хоста (DNS)===
slaxemulator@2 174
slaxemulator@2 175 Скопируем библиотеки //libnss_*// из основной системы в нашу систему SliTaz. Эти библиотеки используются для расширения имен и их можно очистить при помощи утилиты //strip//:
slaxemulator@2 176
slaxemulator@2 177 <code>
slaxemulator@2 178 # cp /lib/{libnss_dns.so.2,libnss_files.so.2} lib
slaxemulator@2 179 # cp /lib/libresolv.so.2 lib
slaxemulator@2 180 # strip -v lib/*.so*
slaxemulator@2 181 </code>
slaxemulator@2 182
slaxemulator@2 183
slaxemulator@2 184 =====Настраиваем будущую систему=====
slaxemulator@2 185
slaxemulator@2 186 В этом разделе мы займемся созданием необходимых файлов в папке ///etc//. Для более подробной информации просто прочтите сами эти файлы. Начнем с создания файлов, относящихся к основе системы.
slaxemulator@2 187
slaxemulator@2 188
slaxemulator@2 189 ===Сеть===
slaxemulator@2 190
slaxemulator@2 191 Создадим основные файлы, которые будут использоваться для настройки сети:
slaxemulator@2 192
slaxemulator@2 193 <code>
slaxemulator@2 194 # echo "127.0.0.1 localhost" > etc/hosts
slaxemulator@2 195 # echo "localnet 127.0.0.1" > etc/networks
slaxemulator@2 196 # echo "slitaz" > etc/hostname
slaxemulator@2 197 # echo "order hosts,bind" > etc/host.conf
slaxemulator@2 198 # echo "multi on" >> etc/host.conf
slaxemulator@2 199 </code>
slaxemulator@2 200
slaxemulator@2 201
slaxemulator@2 202 ===/etc/nsswitch.conf===
slaxemulator@2 203
slaxemulator@2 204 Файлы конфигурации для разграничения имен:
slaxemulator@2 205
slaxemulator@2 206 <code># nano etc/nsswitch.conf</code>
slaxemulator@2 207 <file>
slaxemulator@2 208 # /etc/nsswitch.conf: GNU Name Service Switch config.
slaxemulator@2 209 #
slaxemulator@2 210
slaxemulator@2 211 passwd: files
slaxemulator@2 212 group: files
slaxemulator@2 213 shadow: files
slaxemulator@2 214
slaxemulator@2 215 hosts: files dns
slaxemulator@2 216 networks: files
slaxemulator@2 217 </file>
slaxemulator@2 218
slaxemulator@2 219
slaxemulator@2 220 ===/etc/securetty===
slaxemulator@2 221
slaxemulator@2 222 Выводит список терминалов, которые могут подключаться к root:
slaxemulator@2 223
slaxemulator@2 224 <code># nano etc/securetty</code>
slaxemulator@2 225 <file>
slaxemulator@2 226 # /etc/securetty: List of terminals on which root is allowed to login.
slaxemulator@2 227 #
slaxemulator@2 228 console
slaxemulator@2 229
slaxemulator@2 230 # For people with serial port consoles
slaxemulator@2 231 ttyS0
slaxemulator@2 232
slaxemulator@2 233 # Standard consoles
slaxemulator@2 234 tty1
slaxemulator@2 235 tty2
slaxemulator@2 236 tty3
slaxemulator@2 237 tty4
slaxemulator@2 238 tty5
slaxemulator@2 239 tty6
slaxemulator@2 240 tty7
slaxemulator@2 241 </file>
slaxemulator@2 242
slaxemulator@2 243
slaxemulator@2 244 ===/etc/shells===
slaxemulator@2 245
slaxemulator@2 246 Список работающих оболочек командной строки. Этот файл используется SSH-сервером (Dropbear):
slaxemulator@2 247
slaxemulator@2 248 <code># nano etc/shells</code>
slaxemulator@2 249 <file>
slaxemulator@2 250 # /etc/shells: valid login shells.
slaxemulator@2 251 /bin/sh
slaxemulator@2 252 /bin/ash
slaxemulator@2 253 /bin/hush
slaxemulator@2 254 </file>
slaxemulator@2 255
slaxemulator@2 256
slaxemulator@2 257 ===/etc/issue и /etc/motd===
slaxemulator@2 258
slaxemulator@2 259 ///etc/issue// отображается на экране в конце загрузки, а после входа в систему выводится сообщение текущего дня (message of the day):
slaxemulator@2 260
slaxemulator@2 261 <code>
slaxemulator@2 262 # echo "SliTaz GNU/Linux 1.0 Kernel \r \l" > etc/issue
slaxemulator@2 263 # echo "" >> etc/issue
slaxemulator@2 264 # nano etc/motd
slaxemulator@2 265 </code>
slaxemulator@2 266 <file>
slaxemulator@2 267 (°- { Документацию вы найдете в /usr/share/doc.
slaxemulator@2 268 //\ Используйте less или more для чтения файлов,
slaxemulator@2 269 v_/_ su чтобы стать root. }
slaxemulator@2 270
slaxemulator@2 271 SliTaz распространяется в надежде, что он будет полезен, но
slaxemulator@2 272 БЕЗ КАКИХ-ЛИБО ГАРАНТИЙ.
slaxemulator@2 273 </file>
slaxemulator@2 274
slaxemulator@2 275
slaxemulator@2 276 ===/etc/busybox.conf===
slaxemulator@2 277
slaxemulator@2 278 Файл конфигурации для BusyBox, в нём можно назначать полномочия приложениям BusyBox. Для более подробной информации прочтите раздел [[ru:handbook:security|Безопасность]] в Настольной книге. Ниже приведен сам файл //busybox.conf//:
slaxemulator@2 279
slaxemulator@2 280 <code># nano etc/busybox.conf</code>
slaxemulator@2 281 <file>
slaxemulator@2 282 # /etc/busybox.conf: SliTaz GNU/linux Busybox configuration.
slaxemulator@2 283 #
slaxemulator@2 284
slaxemulator@2 285 [SUID]
slaxemulator@2 286 # Allow command to be run by anyone.
slaxemulator@2 287 su = ssx root.root
slaxemulator@2 288 passwd = ssx root.root
slaxemulator@2 289 loadkmap = ssx root.root
slaxemulator@2 290 mount = ssx root.root
slaxemulator@2 291 reboot = ssx root.root
slaxemulator@2 292 halt = ssx root.root
slaxemulator@2 293 </file>
slaxemulator@2 294
slaxemulator@2 295 Для дополнительной безопасности измените права доступа этого файла:
slaxemulator@2 296
slaxemulator@2 297 <code># chmod 600 etc/busybox.conf</code>
slaxemulator@2 298
slaxemulator@2 299
slaxemulator@2 300 ===/etc/inittab===
slaxemulator@2 301
slaxemulator@2 302 Минимальный файл конфигурации для init. Он дает возможность пользоваться root-консолью без необходимости выполнять логин и запускать консоль на tty2.
slaxemulator@2 303
slaxemulator@2 304 <code># nano etc/inittab</code>
slaxemulator@2 305 <file>
slaxemulator@2 306 # /etc/inittab: init configuration for SliTaz GNU/Linux.
slaxemulator@2 307
slaxemulator@2 308 ::sysinit:/etc/init.d/rcS
slaxemulator@2 309 ::respawn:-/bin/sh
slaxemulator@2 310 tty2::askfirst:-/bin/sh
slaxemulator@2 311 ::ctrlaltdel:/bin/umount -a -r
slaxemulator@2 312 ::ctrlaltdel:/sbin/reboot
slaxemulator@2 313 </file>
slaxemulator@2 314
slaxemulator@2 315 Более подробный пример файла //inittab// вы найдете в архиве BusyBox.
slaxemulator@2 316
slaxemulator@2 317
slaxemulator@2 318 ===/etc/profile===
slaxemulator@2 319
slaxemulator@2 320 Этот файл считывается при каждом входе в систему и влияет на всех пользователей. Мы должны использовать конфигурационный файл //./profile// для каждого отдельного пользователя:
slaxemulator@2 321
slaxemulator@2 322 <code># nano etc/profile</code>
slaxemulator@2 323 <file>
slaxemulator@2 324 # /etc/profile: system-wide .profile file for the Bourne shells
slaxemulator@2 325
slaxemulator@2 326 PATH="/usr/sbin:/usr/bin:/sbin:/bin:/usr/games"
slaxemulator@2 327 LD_LIBRARY_PATH="/usr/lib:/lib"
slaxemulator@2 328
slaxemulator@2 329 if [ "`id -u`" -eq 0 ]; then
slaxemulator@2 330 PS1='\e[1m\u@\h:\w\#\e[m '
slaxemulator@2 331 else
slaxemulator@2 332 PS1='\e[1m\u@\h:\w\$\e[m '
slaxemulator@2 333 fi
slaxemulator@2 334
slaxemulator@2 335 DISPLAY=:0.0
slaxemulator@2 336
slaxemulator@2 337 export PATH LD_LIBRARY_PATH PS1 DISPLAY ignoreeof
slaxemulator@2 338 umask 022
slaxemulator@2 339 </file>
slaxemulator@2 340
slaxemulator@2 341
slaxemulator@2 342 ===Пользователи, группы и пароли===
slaxemulator@2 343
slaxemulator@2 344 Создадим конфигурационные файлы для пользователей, групп и паролей в папке ///etc// (//passwd//, //shadow//, //group//, //gshadow//) и установим им необходимые права доступа:
slaxemulator@2 345
slaxemulator@2 346 <code>
slaxemulator@2 347 # echo "root:x:0:0:root:/root:/bin/sh" > etc/passwd
slaxemulator@2 348 # echo "root::13525:0:99999:7:::" > etc/shadow
slaxemulator@2 349 # echo "root:x:0:" > etc/group
slaxemulator@2 350 # echo "root:*::" > etc/gshadow
slaxemulator@2 351 # chmod 640 etc/shadow
slaxemulator@2 352 # chmod 640 etc/gshadow
slaxemulator@2 353 </code>
slaxemulator@2 354
slaxemulator@2 355 Также вы можете добавлять других пользователей, например, пользователя hacker для использования в режиме Live CD. Также можно настраивать пароль для root командой //passwd//. Чтобы добавить существующего пользователя в существующуй группу, нужно отредактировать файлы ///etc/group// и ///etc/gshadow//, поскольку апплет //adduser//, предоставляемый BusyBox, не имеет всех опций исходной программы.
slaxemulator@2 356
slaxemulator@2 357
slaxemulator@2 358 ===/etc/fstab или /etc/mtab===
slaxemulator@2 359
slaxemulator@2 360 Список монтируемых файловых систем:
slaxemulator@2 361
slaxemulator@2 362 <code># nano etc/fstab</code>
slaxemulator@2 363 <file>
slaxemulator@2 364 # /etc/fstab: information about static file system.
slaxemulator@2 365 #
slaxemulator@2 366 proc /proc proc defaults 0 0
slaxemulator@2 367 sysfs /sys sysfs defaults 0 0
slaxemulator@2 368 devpts /dev/pts devpts defaults 0 0
slaxemulator@2 369 tmpfs /dev/shm tmpfs defaults 0 0
slaxemulator@2 370 </file>
slaxemulator@2 371
slaxemulator@2 372 ///etc/mtab// используется другими mkfs* для создания списка монтируемых разделов. Он опирается на папку ///proc//, т.к. существует ссылка на ///proc/mounts//:
slaxemulator@2 373
slaxemulator@2 374 <code>
slaxemulator@2 375 # chroot . /bin/ash
slaxemulator@2 376 /# ln -s /proc/mounts /etc/mtab
slaxemulator@2 377 </code>
slaxemulator@2 378
slaxemulator@2 379
slaxemulator@2 380 ===Клавиатура===
slaxemulator@2 381
slaxemulator@2 382 Вы можете создать файл //kmap//, опираясь на специфику вашей клавиатуры, командой //dumpkmap// из BusyBox. Некоторые файлы //kmap// вы также найдете в SliTaz tools. К примеру, создадим файл //kmap// для fr_CH:
slaxemulator@2 383
slaxemulator@2 384 <code>
slaxemulator@2 385 /# mkdir /usr/share/kmap
slaxemulator@2 386 /# /bin/busybox dumpkmap > /usr/share/kmap/fr_CH.kmap
slaxemulator@2 387 /# exit
slaxemulator@2 388 </code>
slaxemulator@2 389
slaxemulator@2 390 Выполнив эти команды, вы можете автоматически загружать клавиатуру, включив команду //loadkmap// в скрипт ///etc/init.d/rcS//.
slaxemulator@2 391
slaxemulator@2 392
slaxemulator@2 393 ===/usr/share/doc===
slaxemulator@2 394
slaxemulator@2 395 Также вы можете добавить в систему различные документы, например, руководство пользователя SliTaz, которое можно скачать с сайта в формате tar.gz:
slaxemulator@2 396
slaxemulator@2 397 <code># mkdir -p usr/share/doc</code>
slaxemulator@2 398
slaxemulator@2 399
slaxemulator@2 400 ===Устанавливаем скрипт udhcpc===
slaxemulator@2 401
slaxemulator@2 402 Udhcpc DHCP-клиент, входящий в состав BusyBox, быстр и стабилен, но его разработка ведется независимо. Сайт проекта: [[http://udhcp.busybox.net/|udhcp.busybox.net]]. Вы можете использовать скрипт по умолчанию из архива BusyBox. Этот скрипт записывается в ///usr/share/udhcpc/default.script//, но это можно изменить через командную строку. В SliTaz данный клиент запускается при загрузке скриптом ///etc/init.d/network.sh// через файл конфигурации ///etc/network.conf//:
slaxemulator@2 403
slaxemulator@2 404 <code>
slaxemulator@2 405 # mkdir usr/share/udhcpc
slaxemulator@2 406 # cp ../src/busybox-1.2.2/examples/udhcp/simple.script \
slaxemulator@2 407 usr/share/udhcpc/default.script
slaxemulator@2 408 # chmod +x usr/share/udhcpc/default.script
slaxemulator@2 409 </code>
slaxemulator@2 410
slaxemulator@2 411
slaxemulator@2 412 ===/etc/init.d/rcS===
slaxemulator@2 413
slaxemulator@2 414 Наконец, чтобы закончить наброски будущей системы, создадим скрипт инициализации ///etc/init.d/rcS//, который будет монтировать файловые системы и выполнять несколько команд. За подробностями обратитесь к странице [[ru:cookbook:boot-scripts|"Загрузочные скрипты"]]. Вы можете изменить значение переменной //KMAP=// для вашей клавиатуры:
slaxemulator@2 415
slaxemulator@2 416 <code>
slaxemulator@2 417 # mkdir etc/init.d
slaxemulator@2 418 # nano etc/init.d/rcS
slaxemulator@2 419 </code>
slaxemulator@2 420 <file>
slaxemulator@2 421 #! /bin/sh
slaxemulator@2 422 # /etc/init.d/rcS: rcS initial script.
slaxemulator@2 423 #
slaxemulator@2 424
slaxemulator@2 425 KMAP=fr_CH
slaxemulator@2 426
slaxemulator@2 427 echo "Processing /etc/init.d/rcS... "
slaxemulator@2 428
slaxemulator@2 429 /bin/mount proc
slaxemulator@2 430 /bin/mount -a
slaxemulator@2 431 /bin/hostname -F /etc/hostname
slaxemulator@2 432 /sbin/ifconfig lo 127.0.0.1 up
slaxemulator@2 433 /sbin/loadkmap < /usr/share/kmap/$KMAP.kmap
slaxemulator@2 434 </file>
slaxemulator@2 435 <code># chmod +x etc/init.d/rcS</code>
slaxemulator@2 436
slaxemulator@2 437
slaxemulator@2 438 ===На заметку===
slaxemulator@2 439
slaxemulator@2 440 Также можно установить созданный нами менеджер пакетов Tazpkg (размером 10 Кб), информацию для установки вы найдете в tar-архиве исходников. И еще вы можете установить различные файлы из набора SliTaz tools, например, лицензию.
slaxemulator@2 441
slaxemulator@2 442
slaxemulator@2 443 =====Собираем cpio-архив initramfs=====
slaxemulator@2 444
slaxemulator@2 445 Initramfs представляет собой архив cpio, собираемый из корневой папки системы, который впоследствии будет при загрузке распаковываться в RAM ядром Linux и создавать файловую систему (также в RAM). Чтобы создать такой архив из корневой папки файлов системы (rootfs), осуществим поиск командой find, добавив несколько конвейеров <nowiki>|</nowiki>. Затем мы создадим cpio-архив, используя gzip, и поместим его в рабочую папку.
slaxemulator@2 446
slaxemulator@2 447 Полученный файл //rootfs.gz// представляет собой корневую папку системы с расширением .gz. Если вы захотите изменить имя этого файла, не забудьте внести изменения в файл конфигурации загрузчика isolinux (//isolinux.cfg//) или в //menu.lst// для GRUB.
slaxemulator@2 448
slaxemulator@2 449 Вот сама команда:
slaxemulator@2 450
slaxemulator@2 451 <code># find . -print | cpio -o -H newc | gzip -9 > ../rootfs.gz</code>
slaxemulator@2 452
slaxemulator@2 453 В конце должен получиться файл //rootfs.gz// размером от 1 до 2 Мб в папке //SliTaz///.
slaxemulator@2 454
slaxemulator@2 455 При создании нового образа, если вам нужно внести изменения в rootfs, просто скопируйте новый //rootfs.gz// в папку ///rootcd/boot// и соберите образ командой //genisoimage// или //mkisofs//. Или же можно использовать команду //mktaziso// из SliTaz tools. Этот скрипт проверит, существуют ли нужные папки, создаст новый сжатый cpio-архив и новый загрузочный ISO-образ.
slaxemulator@2 456
slaxemulator@2 457
slaxemulator@2 458 =====Собираем файлы для rootcd=====
slaxemulator@2 459
slaxemulator@2 460 Следующие действия помогут вам создать корневую папку загрузочного CD-ROM. Начнем с создания папок //rootcd//, //boot// и //isolinux//:
slaxemulator@2 461
slaxemulator@2 462 <code>
slaxemulator@2 463 # cd ..
slaxemulator@2 464 # mkdir -p rootcd/boot/isolinux
slaxemulator@2 465 </code>
slaxemulator@2 466
slaxemulator@2 467 В случае необходимости вы также можете создать и другие папки для различных файлов, например, для документов HTML или пакетов.
slaxemulator@2 468
slaxemulator@2 469
slaxemulator@2 470 ===Копируем ядро===
slaxemulator@2 471
slaxemulator@2 472 Скопируем предварительно скомпилированное ядро в //rootcd/boot//:
slaxemulator@2 473
slaxemulator@2 474 <code># cp src/linux-2.6.20/arch/i386/boot/bzImage rootcd/boot</code>
slaxemulator@2 475
slaxemulator@2 476
slaxemulator@2 477 ===Копируем initramfs в rootcd/boot===
slaxemulator@2 478
slaxemulator@2 479 Скопируем файл //rootfs.gz// в папку //rootcd/boot//. Не забывайте собирать новый //rootfs.gz//, если вы производите любые изменения в rootfs (корневой файловой системе):
slaxemulator@2 480
slaxemulator@2 481 <code># cp rootfs.gz rootcd/boot</code>
slaxemulator@2 482
slaxemulator@2 483
slaxemulator@2 484 ===Устанавливаем загрузчик isolinux===
slaxemulator@2 485
slaxemulator@2 486 Для установки isolinux скопируйте файл //isolinux.bin// из архива исходников Syslinux:
slaxemulator@2 487
slaxemulator@2 488 <code>
slaxemulator@2 489 # cd src
slaxemulator@2 490 # tar xzf syslinux-3.35.tar.gz
slaxemulator@2 491 # cp syslinux-3.35/isolinux.bin ../rootcd/boot/isolinux
slaxemulator@2 492 # cd ..
slaxemulator@2 493 </code>
slaxemulator@2 494
slaxemulator@2 495
slaxemulator@2 496 ===isolinux.cfg — файл настроек isolinux===
slaxemulator@2 497
slaxemulator@2 498 Вот пример //isolinux.cfg//, который, по идее, должен работать. При желании вы можете изменить его:
slaxemulator@2 499
slaxemulator@2 500 <code># nano rootcd/boot/isolinux/isolinux.cfg</code>
slaxemulator@2 501 <file>
slaxemulator@2 502 display display.txt
slaxemulator@2 503 default slitaz
slaxemulator@2 504 label slitaz
slaxemulator@2 505 kernel /boot/bzImage
slaxemulator@2 506 append initrd=/boot/rootfs.gz rw root=/dev/null vga=788
slaxemulator@2 507 implicit 0
slaxemulator@2 508 prompt 1
slaxemulator@2 509 timeout 80
slaxemulator@2 510 </file>
slaxemulator@2 511
slaxemulator@2 512 В частности, вы можете внести следующие изменения:
slaxemulator@2 513
slaxemulator@2 514 * переменная timeout — это отсчет времени в секундах до начала загрузки. Чтобы загрузка начиналась мгновенно, поставьте значение 0 или удалите строку вовсе; иначе можете поставить значение 10.
slaxemulator@2 515 * переменную prompt можно установить в 0, чтобы убрать приглашение //boot://.
slaxemulator@2 516 * можете добавить новые строки, например, для просмотра содержимого определенных текстовых файлов при нажатии F1, F2, F3 и т.д.
slaxemulator@2 517
slaxemulator@2 518
slaxemulator@2 519 ===display.txt===
slaxemulator@2 520
slaxemulator@2 521 Маленькое приветствие, запускаемое isolinux. При желании вы можете внести изменения в этот файл:
slaxemulator@2 522
slaxemulator@2 523 <code># nano rootcd/boot/isolinux/display.txt</code>
slaxemulator@2 524 <file>
slaxemulator@2 525 /* _\|/_
slaxemulator@2 526 (o o)
slaxemulator@2 527 +----oOO-{_}-OOo---------------------------------------------------+
slaxemulator@2 528 ____ _ _ _____
slaxemulator@2 529 / ___|| (_)_ _|_ _ ____
slaxemulator@2 530 \___ \| | | | |/ _` |_ /
slaxemulator@2 531 ___) | | | | | (_| |/ /
slaxemulator@2 532 |____/|_|_| |_|\__,_/___|
slaxemulator@2 533
slaxemulator@2 534 SliTaz GNU/Linux - Temporary Autonomous Zone
slaxemulator@2 535
slaxemulator@2 536 <ENTER> для загрузки.
slaxemulator@2 537
slaxemulator@2 538 */
slaxemulator@2 539 </file>
slaxemulator@2 540
slaxemulator@2 541 =====Создаем ISO-образ при помощи genisoimage или mkisofs=====
slaxemulator@2 542
slaxemulator@2 543 <code>
slaxemulator@2 544 # genisoimage -R -o slitaz-cooking.iso -b boot/isolinux/isolinux.bin \
slaxemulator@2 545 -c boot/isolinux/boot.cat -no-emul-boot -boot-load-size 4 \
slaxemulator@2 546 -V "SliTaz" -input-charset iso8859-1 -boot-info-table rootcd
slaxemulator@2 547 </code>
slaxemulator@2 548
slaxemulator@2 549 При каждом изменении содержимого CD-ROM необходимо создавать новый образ.
slaxemulator@2 550
slaxemulator@2 551 Можно использовать маленький скрипт, который будет создавать новый cpio-архив и новый образ, или //mktaziso// из набора SliTaz tools. Также есть возможность использовать GRUB для загрузки.
slaxemulator@2 552
slaxemulator@2 553
slaxemulator@2 554 =====Записываем образ на диск или проверяем в Qemu=====
slaxemulator@2 555
slaxemulator@2 556 Теперь можно записать образ в Graveman, k3b или wodim и загрузиться с этого диска. Для wodim команда записи проста (также эта команда действительна для cdrecord и ядер серии 2.6.XX):
slaxemulator@2 557
slaxemulator@2 558 <code># wodim -v -speed=24 -data slitaz-cooking.iso</code>
slaxemulator@2 559
slaxemulator@2 560
slaxemulator@2 561 ===Qemu===
slaxemulator@2 562
slaxemulator@2 563 Образ можно также протестировать в эмуляторе Qemu. Чтобы установить его в системе Debian, наберите //# aptitude install qemu//. для эмуляции ISO-образа SliTaz, используйте команду
slaxemulator@2 564
slaxemulator@2 565 <code># qemu -cdrom slitaz-cooking.iso</code>
slaxemulator@2 566
slaxemulator@2 567
slaxemulator@2 568 ===Следующая глава===
slaxemulator@2 569
slaxemulator@2 570 В следующей главе — [[base-apps|"Базовые приложения"]] — мы познакомимся с установкой и настройкой основных приложений и библиотек.
slaxemulator@2 571
slaxemulator@2 572 ----
slaxemulator@2 573 Статью перевел [[http://forum.slitaz.org/index.php/profile/1273/Cyril|Cyril]]