LINUX.ORG.RU

Создание своего мини liveCD


0

1

Добрый вечер!

Хочу создать свою систему, которая загрузится и просто появится приглашение sh.

Вот, что делаю (из-под Ubuntu 10.04):

1. Скомпилил ядро (3.2.1):

$ make defconfig && make

2. Затем собираю загрузочный диск: $ mkdir -p fs/isolinux

$ cp /usr/lib/syslinux/isolinux.bin fs/isolinux

$ cat «DEFAULT Linux

LABEL Linux

KERNEL bzImage

APPEND initrd=initrd root=/dev/ram0» > fs/isolinux/isolinux.cfg

3. Собираю initrd:

$ dd if=/dev/zero of=fs/isolinux/initrd bs=1M count=4

$ mke2fs fs/isolinux/initrd

$ mkdir initrd.fs

$ mount -o loop fs/isolinux/inird initrd.fs/

4. Компилю busybox (1.19.3):

$ make defconfig && make

$ make CONFIG_PREFIX=$HOME/live/initrd.fs install

5. Создаю устройство ram0:

$ mkdir initrd.fs/dev

$ touch initrd.fs/dev/ram0

6. Собираю iso-шник:

$ mkisofs -l -r -J -hide-rr-moved -no-emul-boot -boot-load-size 4 -boot-info-table -b isolinux/isolinux.bin -V «bbLive» -o live.iso fs/

При загрузке пишет:

RAMDISK: ext2 filesystem found at block 0

RAMDISK: Loading 4096Kib [1 disk] into ram disk... done

VFS: Mounted root (ext2 filesystem) readonly on device 1:0

devtmpfs: mounted

Freeing unused kernel memory: 956k freed

Write protecting the kernel read-only data: 10240k

Freeing unused kernel memory: 200k freed

Freeing unused kernel memory: 1620k freed

Kernel panic - not syncing: No init found. Try passing init= option to kernel.

Причём, когда я собирал в первый раз по мануалу, который на данный момент утерял, системка уже загружалась и работала, видел приглашение sh. Счас сделал всё по памяти и по нескольким другим мануалам - работать заставить не удаётся. Init на месте - в /sbin. Что он хочет?

ну, например, ты
— не передал параметр, что инит==ббокс
— собрал ббокс динамически, а либ не положил

anonymous ()
Ответ на: комментарий от anonymous

Facepalm... Аж стыдно стало. Я действительно забыл выставить опцию статической сборки.. Заработало. Спасибо, Анон!

abr_linux ()

Выше уже правильно ответили, добавлю пару советов:

3. Собираю initrd:

Собирайте initramfs, это считается более правильным.
cd $HOME/live/initrd.fs && find . | cpio -o -Hnewc | gzip -9cf > ../initramfs.gz

5. Создаю устройство ram0:

Можно и не создавать, ядро всё равно обойдётся без него (на этапе подключения корня /, а, значит, и /dev/ram0 ещё не доступен).

AITap ★★★★★ ()
Ответ на: комментарий от AITap

Спасибо за совет! Я только-только начинаю понимать основы сборки живого диска, да и вобще об етапах загрузки системы. Initrd собирал по первым попавшимся мануалам (некоторым даже немного старым), дальше буду копать ntramfs ;)

abr_linux ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.