Теперь у Вас есть ядро и сжатая корневая файловая система. Если Вы создаете загрузочный/корневой диск,
проверьте их размеры, чтобы убедиться, что они оба поместятся на одном диске. Если Вы делаете
две дискеты загрузочную + корневую, проверьте помещается ли корневая файловая система на одной дискете.
Вы должны решить, использовать 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.
- Если Вы формируете двух-дисковый набор, корневая файловая система начинается в блоке 0 на втором диске,
так что смещение будет нулевое. Бит 14 должен быть 1, и бит 15 должен быть 1.
После тщательно вычисления значения ramdisk слова, установите его rdev -r .
Используйте десятичное значение.
Если Вы использовали LILO, аргументом rdev должен быть - смонтированый путь ядра,
например /mnt/vmlinuz ; если Вы скопировали ядро с dd , взамен используйте имя флоппи-устройства
(например, /dev/fd0 ).
rdev -r KERNEL_OR_FLOPPY_DRIVE VALUE
Если Вы использовали LILO, размонтируйте дискету сейчас.
Последний шаг - перенос корневой файловой системы.
Поздравляю, Вы сделали это!
Вы должны всегда проверять загрузочный диск перед откладыванием его в сторону до критической ситуации!
Если он не загружается - читайте.
|