Модификация образа загрузочного RAM диска (initrd) в Linux |
[исправить] |
Задача добавить модуль ядра usb-storage в "initrd.img" от Fedora Linux
для загрузки с диска с USB интерфейсом.
mkdir ./initrd
mv ./initrd.img ./initrd.img.gz
gunzip ./initrd.img
Метод 1. initrd.img в виде сжатого образа файловой системы
mount -o loop ./initrd.img ./initrd
Метод 2. initrd.img в виде сжатого cpio архива
cd ./initrd
cpio -ic < ../initrd.img
Копируем в ./initrd/lib модуль usb-storage.ko
(следим, чтобы уже были модули scsi_mod.ko, (o|e|u)hci-hcd.ko, usbcore.ko)
Прописываем "insmod /lib/usb-storage.ko" в конец списка загрузки модулей ./initrd/init
Может потребоваться скопировать команду sleep и прописать после
загрузки модуля usb-storage задержку, необходимую на обнаружения накопителя.
umount ./initrd # для метода 1.
cd ./initrd
find . -print| cpio -oc |gzip -9 -c > ../initrd_new.img # для метода 2.
Другой вариант упаковки (для Fedora 8):
find . -print| cpio -H newc -o |gzip -9 -c > ../initrd_new.img
При загрузке с USB диска большого объема (250Гб) при установке ОС в
разделе в центре диска не удалось использовать Lilo и Grub. Lilo при
загрузке ругался на несоответствие текущей геометрии диска той что
была в момент его установки. Установка Grub привела к зависанию
ноутбука в момент опроса USB диска (проблема BIOS). Выход нашелся в
установке загрузчика от FreeBSD:
1. Делаем бэкап текущего MBR USB диска:
dd if=/dev/sda of=mbr_sda.bin bs=1 count=512
2. Берем boot0 из комплекта FreeBSD и копируем в него данные о таблицах разделов текущего диска:
dd if=mbr_sda.bin of=boot0 bs=1 count=66 skip=446 seek=446
3. Копируем загрузчик в MBR USB диска:
dd if=boot0 of=/dev/sda bs=1 count=512
4. В текущий раздел Linux устанавливаем Grub:
# grub
grub> find /boot/grub/stage1
(hd0,1) раздел /dev/sda2
grub> root (hd0,1)
grub> setup (hd0,1)
|
|
|
02.10.2007
|
Раздел: Корень / Администратору / Система / Linux специфика / Установка и работа с пакетами программ в Linux |
1.1, sss (??), 17:33, 05/10/2007 [ответить]
| +/– |
а можно дурацкий вопрос? Если initrd нужен для того чтобы загружать ядро с usb диска, то где система возьмет сам initrd? ведь initrd тоже грузится с этого же диска!
| |
|
2.2, uldus (ok), 18:05, 05/10/2007 [^] [^^] [^^^] [ответить]
| +/– |
>а можно дурацкий вопрос? Если initrd нужен для того чтобы загружать ядро
>с usb диска, то где система возьмет сам initrd? ведь initrd
>тоже грузится с этого же диска!
Ядро и initrd грузятся через функции BIOS.
| |
|
1.4, hostik (ok), 16:19, 17/12/2007 [ответить]
| +/– |
а почему у меня так:
debian:/initrd# mount -o loop ./initrd.img ./initrd
mount: you must specify the filesystem type
debian:/initrd# cpio -ic < ../initrd.img
cpio: преждевременный конец файла
| |
|
|
3.6, anny (?), 18:02, 12/04/2008 [^] [^^] [^^^] [ответить]
| +/– |
У меня тоже самое, и он точно распакован. Дистрибутив - debian, аналогичная ситуация на xubuntu. Образ по структуре не похож ни на ext2, ни на minix, но и на gz тоже не похож... Как будто бы какая-то другая файловая система...
| |
|
|
|