Теперь у Вас есть ядро и сжатая корневая файловая система. Если Вы создаете загрузочный/корневой диск, проверьте их размеры, чтобы убедиться, что они оба поместятся на одном диске. Если Вы делаете две дискеты загрузочную + корневую, проверьте помещается ли корневая файловая система на одной дискете.
Вы должны решить, использовать LILO для загрузки или bootdisk ядро. Альтернатива - копировать
ядро непосредственно на дискету и загружаться без LILO. Преимущество использования LILO -
возможность указать некоторые параметры ядра, которое может быть необходимы для инициализации
аппаратных средств (проверьте файл /etc/lilo.conf в вашей системе. Если он существует и имеет
строку ``append=...
'', Вам вероятно нужно это свойство. Неудобство использования LILO - усложнение
создания загрузочного диска, и немного большее количество пространства. Вы должны установить
маленькую отдельную файловую систему, которую мы назовем файловой системой ядра, куда Вы
перенесете ядро и несколько других файлов необходимых LILO.
Если Вы собираетесь использовать LILO - читайте; если Вы собираетесь перемещать ядро непосредственно, пропустите до секции Без использования LILO.
Первым делом - создайте маленький файл конфигурации LILO. Он должен выглядеть так:
boot =/dev/fd0 install =/boot/boot.b map =/boot/map read-write backup =/dev/null compact image = KERNEL label = Bootdisk root =/dev/fd0
Для объяснения этих параметров, см. документацию пользователя LILO. Вы, вероятно, захотите
добавить append=...
строку к этому файлу с /etc/lilo.conf файла на вашем жестком диске.
Сохраните этот файл как bdlilo.conf
.
Вы теперь должны создать маленькую файловую систему, которую мы будем называть файловая система ядра, чтобы отличить ее от корневой файловой системы.
Сначала, выясните насколько большой должна быть файловая система. Возьмите размер вашего ядра в
блоках (размер, показанный ``ls -l KERNEL
'' разделенный 1024 и округлите вверх) и добавьте 50.
Пятьдесят блоков - приблизительное пространство, необходимое для inodes плюс другие файлы.
Вы можете вычислить это число точно, если Вы хотите, или используете 50. Если вы создаете
двух-дисковый набор, Вы можете также переоценить пространство, т.к первый диск используется
только для ядра. Назовите это число KERNEL_BLOCKS
.
Поместите дискету в привод (для простоты, которую мы примем /dev/fd0) и создайте ext2 файловую систему ядра на ней:
mke2fs -i 8192 -m 0 /dev/fd0 KERNEL_BLOCKS
``-i 8192
'' означает, что мы хотим один inode на 8192 байта. Затем, смонтируйте файловую систему,
удалите lost+found
каталог, и создайте dev
и boot
каталоги для LILO:
mount /dev/fd0 /mnt rm -rf /mnt/lost+found mkdir /mnt/{boot,dev}
Затем, создайте устройства /dev/null и /dev/fd0. Вместо того, чтобы искать
числа устройства, Вы можете просто скопировать их с вашего жесткого диска используя -R
:
cp -R /dev/{null,fd0} /mnt/dev
LILO нужна копия загрузчика начальной загрузки, boot.b
, которую Вы можете взять с вашего жесткого диска.
Она обычно сохраняется в /boot
каталоге.
cp /boot/boot.b /mnt/boot
В заключение, скопируйте конфигурационный файл LILO , который Вы создали в последней секции, вместе с вашим ядром. Оба могут быть помещены в корневой каталог:
cp bdlilo.conf KERNEL /mnt
Все, что нужно LILO теперь на файловой системе ядра, так что Вы готовы запустить ее.
Флажок LILO -r
используется для установки загрузчика начальной загрузки в другом корне:
lilo -v -C bdlilo.conf -r /mnt
LILO должна выполниться без ошибок, после чего файловая система ядра должна выглядеть так:
total 361 1 -rw-r--r-- 1 root root 176 Jan 10 07:22 bdlilo.conf 1 drwxr-xr-x 2 root root 1024 Jan 10 07:23 boot/ 1 drwxr-xr-x 2 root root 1024 Jan 10 07:22 dev/ 358 -rw-r--r-- 1 root root 362707 Jan 10 07:23 vmlinuz boot: total 8 4 -rw-r--r-- 1 root root 3708 Jan 10 07:22 boot.b 4 -rw------- 1 root root 3584 Jan 10 07:23 map dev: total 0 0 brw-r----- 1 root root 2, 0 Jan 10 07:22 fd0 0 crw-r--r-- 1 root root 1, 3 Jan 10 07:22 null
Не волнуйтесь, если размеры ваших файлов отличаются.
Теперь оставьте диск в приводе, и идите к секции Установка ramdisk слова.
Если Вы не используете LILO, перенесите ядро на загрузочный диск dd
командой:
% dd if=KERNEL of=/dev/fd0 bs=1k 353+1 records in 353+1 records out
В этом примере, dd
записала 353 полных записи + 1 частичную запись, так что ядро занимает первые
354 блока дискеты. Назовите это число KERNEL_BLOCKS
, и запомните его, для использования
в следующей секции.
В заключение, установите дискету как корневое устройство, затем установите загрузку корня на чтение - запись:
rdev /dev/fd0 /dev/fd0 rdev -R /dev/fd0 0
Будьте внимательным - используйте прописную букву -R
во второй rdev
команде.
Внутри образа ядра есть ramdisk слово, которое наряду с другими опциями указывает, где должна быть найдена корневая файловая система. Слово определено в /usr/src/linux/arch/i386/kernel/setup.c и интерпретируется следующим образом:
bits 0-10: Смещение начала ramdisk, в 1024 байтовых блоках bits 11-13: не используется bit 14: Флаг указывающий, что ramdisk будет загружаться bit 15: Флаг указывающий запрос подтверждения перед загрузкой корневой файловой системы
Если бит 15 установлен, в процессе загрузки у Вас запросят поместить новую гибкую дискету в привод. Это необходимо для двух-дискового загрузочного набора.
Есть два случая, в зависимости от того, создается ли Вы одиночная загрузочная дискета или набор из двух дискет ``загрузочная + корневая''.
KERNEL_BLOCKS
). Бит 14 должен быть 1, и бит 15 должен быть 0.
После тщательно вычисления значения ramdisk слова, установите его rdev -r
.
Используйте десятичное значение.
Если Вы использовали LILO, аргументом rdev
должен быть - смонтированый путь ядра,
например /mnt/vmlinuz
; если Вы скопировали ядро с dd
, взамен используйте имя флоппи-устройства
(например, /dev/fd0
).
rdev -r KERNEL_OR_FLOPPY_DRIVE VALUE
Если Вы использовали LILO, размонтируйте дискету сейчас.
Последний шаг - перенос корневой файловой системы.
dd
с опцией seek
, которая определяет сколько проскочить блоков:
dd if=rootfs.gz of=/dev/fd0 bs=1k seek=KERNEL_BLOCKS
dd if=rootfs.gz of=/dev/fd0 bs=1k
Поздравляю, Вы сделали это!
Вы должны всегда проверять загрузочный диск перед откладыванием его в сторону до критической ситуации!
Если он не загружается - читайте.