Наши партнеры








Книги по Linux (с отзывами читателей)

Библиотека сайта rus-linux.net

Создание минимальной версии Linux

автор Mooneer Salem

Источник - http://www.ods.com.ua/koi/unix/minlinux.html

Введение

Видели ли вы сайты, которые предлагают работоспособную версию Linux на единственной либо на двух дискетах? Они обычно не содержат много программ или доступа к определенным свойствам. Я покажу Вам как создать загрузочную/корневую дискету, которая будет содержать почти всё, что Вам необходимо или полезно.

Во-первых, Вам нужна одна или две чистых дискеты, в зависимости от того как много программного обеспечения Вы собираетесь включить в Вашу версию Linux. В принципе Ваша версия Linux может представлять собой только загрузочную/корневую дискету и возможно дискету с утилитами. Если Вы не знакомы с любыми из этих терминов, я рекомендую Вам сначала ознакомиться со вторым разделом Bootdisk-howto.

Итак начнем. Здесь описаны основные шаги создания Вашей дискеты с Linux:

  1. Скомпилируйте пользовательское "скелетное" ядро
  2. Создайте файловую систему для Вашего диска
  3. Скопируйте все╖ на дискету(ы)

Компиляция ядра

Так как дискета вмещает всего 1.44Мб (1440Кб), Вы не можете просто скопировать на не╖ Ваше оригинальное ядро. Сначала скопируйте исходные тексты ядра и распакуйте их в /usr/src/linux. Затем введите в этой директории следующую команду:

make config

В программе-конфигураторе выберите то, что Вам действительно нужно. Для себя я устанавливаю только поддержку ex2, гибкого диска, и PPP. Ваши настройки могут быть другими в зависимости от того что Вы устанавливаете. Далее введите следующие команды:

make dep; make clean; make zImage

make zImage - это очень важно! Эта команда сжимает ядро после компиляции. После завершения выполнения этих команд Вы найд╖те ядро в директории /usr/src/linux/arch/i386/boot под именем zImage.

Файловая система: Не только любой старый набор файлов

Теперь мы создадим на дискете файловую систему. Вместо того чтобы копировать файлы прямо на нее╖, мы предварительно сожмем все программы. Этот слегка усложнит модификацию чего-угодно перманентно. Во-первых, введите следующую команду:

dd if=/dev/zero of=DEVICE bs=1k count=3000

Где device представляет собой место на Вашем жестком диске где Вы собираетесь хранить несжатую файловую систему. Затем, введите следующую команду и нажмите Enter, заменив device местом на Вашем жестком диске где Вы храните несжатую файловую систему:

mke2fs -m 0 DEVICE

make2fs спросит Вас действительно ли Вы хотите сделать это говорите "yes".

Затем нам необходимо смонтировать созданную файловую систему. Поскольку новая файловая система располагается внутри обычного файла, то для того чтобы примонтировать е╖ должен быть скомпилирован и включ╖н в ядро "loopback device". Если Ваше ядро (не то, которое Вы создали, а ядро Вашей системы) не имеют его, то его надо перекомпилировать. Вы обязаны ответить (Y)Yes либо (M)Module на вопрос:

Loopback device support (CONFIG_BLK_DEV_LOOP) [M/n/y/?]
когда конфигурируете ядро. Заметьте, когда Вы перекомпилируете ВАШЕ обычное ядро, а не гибкое ядро, Вам необходимо включить все драйверы и утилиты, которые Вы уже имеете. Если Вы скомпилировали "loopback device" в качестве модуля не забываете установить его (modprobe loop).
mount -t ext2 DEVICE /mnt
Если программа mount жалуется, попробуйте следующее:
mount -o loop -t ext2 DEVICE /mnt

Теперь Вам надо скопировать все файлы, которые Вам нужны для Вашей новой файловой системы. во-первых,введите команду cd /mnt. Создайте следующие директории:

/dev
/proc
/etc
/bin
/lib
/mnt
/usr

Позаботьтесь о файлах в /dev введя следующую команду:

cp -dpR /dev /mnt/dev

Если Вы запускаетесь из inodes, перейдите в /mnt/dev и удалите те файлы device, в которых Вы не нуждаетесь. Завершив копирование файлов необходимых для /dev, перейдите в /etc. Для страховки скопируйте все файлы из /etc в /mnt:

cp -dpR /etc /mnt/etc

Затем скопируйте все что находится в директории /lib в /mnt:

cp -dpR /lib /mnt/lib

В /bin скопируете только то, что, как Вы думаете, Вам необходимо монтировать.

Копирование всего этого на Вашу дискету

Теперь Вам надо скопировать все на Вашу дискету. Чтобы сделать это, надо сжать Вашу файловую систему набрав следующую команду:

cd /
umount /mnt
dd if=DEVICE bs=1k | gzip -9 > rootfs.gz

Теперь важно проверить размер ядра. Перейдите в /usr/src/linux/arch/i386/boot и наберите команду ls -l. Разделите размер ядра на 1024. Например, если размер моего ядра 250000 байт - это 245 KB. Вычисленное число килобайт используйте далее вместо ROOTBEGIN. Теперь скопируйте ядро на дискету используя следующую команду:

dd if=zImage of=/dev/fd0

Данная команда копирует ядро на дискету. Следующая команда указывает ядру, что корневая файловая система находится на гибком диске:

rdev /dev/fd0 /dev/fd0

Теперь Вам надо сделать маленький рассчет в шестнадцатеричных числах. Добавьте 4000 к шестнадцатеричному эквиваленту ROOTBEGIN (который в данном примере равен F5) //прим.пер.: десятичное 245 = шестнадцатеричному F5// Преобразуйте ответ в десятичную форму //прим.пер.: 4000h + F5h = 40F5h = 16629// и введите следующую команду, заменив 16629 ответом, который получили Вы:

rdev -r /dev/fd0 16629

Наконец, наберите следующую команду копирующую файловую систему на Вашу дискету:

dd if=rootfs.gz of=/dev/fd0 bs=1k seek=ROOTBEGIN

Корневая файловая система будет скопирована на Вашу дискету сразу после ядра. Вы сделали это! Для второго гибкого диска, процесс гораздо легче. Вам надо только скопировать файлы, которые Вы хотите на дискету. Однако, для того, чтобы иметь возможность использовать файлы на второй дискете, после загрузки с дискеты Вам надо ввести следующее:

mount /dev/fd0 /usr
Одно замечание под конец: Если Вы будете продолжать в том же духе добавляя различные компоненты, то вероятно у вас получится версия которую вы сможете предложить окружающим в качестве отдельного дистрибутива Linux, почему бы и нет:)

Перевод В.Юрыч

For more information: