Назад | Перейти на главную страницу

Как создать загрузочный диск linux (RHEL), который запускает busybox в ramdisk (initrd)?

Я пытался создать загрузочный диск (что-то вроде live-cd), который загружается только в память без монтирования диска. Мои действия перечислены ниже, но когда я загружаюсь с компакт-диска, я получаю:

Kernel Panic - not syncing: VFS: unable to mount root fs on unknown-block (9,1)

Вот что я делаю для создания загрузочного диска:

  1. Создайте ramdisk с помощью инструмента mkinitrd, затем распакуйте:

    mkinitrd myrd $ (uname -r)
    mkdir myrdroot && cd myrdroot
    dd if = .. / myrd bs = 1k | gunzip | cpio -id

  2. Git избавьтесь от nash, init (сценарий nash) и modprobe (символическая ссылка на nash)

    rm -f init bin / nash bin / modprobe

  3. Установите busybox (Busybox - это конфигурация по умолчанию, за исключением статической связи). Busybox создаст linuxrc и sbin / init в myrd.

    pushd ~ / busybox
    сделать CONFIG_ROOT = / path / to / myrd install
    popd

  4. перегруппировать inird:

    найти . | cpio -n -o | gzip -9> ../myrd.img

Затем этот ramdisk используется с ISOLINUX на компакт-диске. Я копирую ядро, соответствующее $ (uname -r), и настраиваю ISOLINUX для загрузки ядра с RAM-диска.

Похоже, проблема связана с форматом архива CPIO. Когда я создаю рамдиск в формате ext2 / gzip, он работает.