The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

Модификация образа загрузочного 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
Ключи: usb, disk, initrd, boot, linux / Лицензия: CC-BY
Раздел:    Корень / Администратору / Система / Linux специфика / Установка и работа с пакетами программ в Linux

Обсуждение [ RSS ]
  • 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: преждевременный конец файла
     
     
  • 2.5, Sergio (??), 22:59, 01/02/2008 [^] [^^] [^^^] [ответить]  
  • +/
    Вероятно потому, что анзипнуть забыли.
    $ file initrd.img
     
     
  • 3.6, anny (?), 18:02, 12/04/2008 [^] [^^] [^^^] [ответить]  
  • +/
    У меня тоже самое, и он точно распакован. Дистрибутив - debian, аналогичная ситуация на xubuntu. Образ по структуре не похож ни на ext2, ни на minix, но и на gz тоже не похож... Как будто бы какая-то другая файловая система...
     
     
  • 4.7, Krash (?), 13:12, 06/03/2009 [^] [^^] [^^^] [ответить]  
  • +/
    заюзайте просто cpio -i < ../initrd.img
     


     Добавить комментарий
    Имя:
    E-Mail:
    Заголовок:
    Текст:




    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру