ADVANCED ЗАГРУЗОЧНЫЙ NIX-ФЛОПАРЬ

Спецвыпуск Xakep, номер #017, стр. 017-080-3


make bzImage

Если все ок, то в папке /usr/src/linux/arch/i386/boot/ у тебя появится файлик bzImage. Это и есть новоиспеченное ядро. Я опустил фрагмент подготовки модулей ядра, так как для своей загрузочной дискеты обычно компилирую безмодульное ядро. Но если тебе нужна поддержка модулей, в хаутушке подробно описано, как это сделать.

Если влом компилить новое ядро, можно взять то, на котором запущена твоя система. Оно, вероятно, будет достаточно большим, но если ты собираешься класть его на отдельную дискетку, это не так уж и страшно.

/ - КОРНЕВАЯ ФАЙЛОВАЯ СИСТЕМА

Корневая файловая система – это всего лишь набор каталогов и файлов, необходимых для нормальной загрузки Linux. Она есть у любой линевой системы. Эта файловая система монтируется в точке «/». Мы сформируем корневую файловую систему для нашего boot-диска из минимального набора необходимых файлов и каталогов и сожмем ее, чтоб она умещалась на дискетке. Для этого нам понадобится какое-то место, где мы сможем держать все файлы до сжатия и переноса на дискету. Набирай:

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

mke2fs -m 0 -i 2000 /dev/ram0

Этим ты создал файловую систему в памяти. Теперь ее можно примонтировать и работать с ней как с отдельным диском. Вводи:

mount -t ext2 /dev/ram0 /mnt/fd_

Теперь у нас есть виртуальный диск в памяти, примонтированный в точке /mnt/fd_. Именно тут мы и будем формировать корневую файловую систему для нашего будущего бут-диска.

Минимальный необходимый набор каалогов для корневой файловой системы выглядит так: /dev, /proc, /etc, /sbin, /bin, /lib, /mnt, /usr. Создавай эти директории на нашем виртуальном диске (mkdir /mnt/fd_/dev, mkdir /mnt/fd_/proc и так далее). /proc, /mnt и /usr можно оставить пустыми, а остальные надо заполнить кое-каким файлом.

В /dev обычно хранятся файлы всяких устройств (флоповоды, диски, терминалы). Мы утянем эти файлы из /dev твоей основной корневой файловой системы, так как влом создавать их заново. Все устройства нам не понадобятся, поэтому мы возьмем только самые необходимые. Сделай

cd /dev

ls

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

cp -dpR /dev/file_name /mnt/fd_/dev/file_name

Например,

cp -dpR /dev/hda1 /mnt/fd_/dev/hda1

В Bootdisk HOWTO есть список минимальных необходимых файлов-устройств, но, повыкидывав оттуда всякий хлам (типа ленточных накопителей), я получил более компактный список. Так что выбирай. Строго обязательны следующие файлы-устройства: console, kmem, mem, null, ram, tty1. Но я тебе советую кроме них оставить еще и tty*, hd*, cua*, ram*-файлы.

Далее у нас идет /etc. Точно так же:

cd /etc

и копируй следующее файло fstab, inittab, passwd, group, shadow и каталог rc.d/* (например, cp /etc/fstab /mnt/fd_/etc). Подчисть скопированные файлы, опираясь на рекомендации из Bootdisk HOWTO.

/sbin и /bin наполняй аналогичным образом (да поможет тебе Bootdisk HOWTO :)).

Осталось заполнить /lib. /lib – это хранилище всех библиотек, необходимых бинарным, выполняемым файлам (ты их выбирал и клал в /sbin и /bin). Чтоб узнать, какому файлу какие библиотеки требуются, сделай на него

Назад на стр. 017-080-2  Содержание  Вперед на стр. 017-080-4