LINUX.ORG.RU
ФорумAdmin

Свой загрузочный сидюк?


0

0

Трям.

У меня сильно свое ядро, сделанное специально под железо, на котором работает система. Ни один дистр по умолчанию его не цепляет.

Вопрос: хочу аварийный сидюк, чтоб на нем было в принципе то же, что и на харде - при загрузке иметь /bin, /sbin, /usr, /etc с сидюка, а /home и /var - на рамдиске.

Кто-нибудь делал такое и может объяснить мне на раз-два-три необходимые действия? пока вижу mkisofs с опцией -b eltorito_boot_image, но нельзя ли сделать сразу загрузку всей системы?

Спасибо,
я.


On Thu, 21 Jul 2005 18:06:35 +0400, billy <billy@linux.org.ru> wrote:

> Трям.
>
> У меня сильно свое ядро, сделанное специально под железо, на котором
> работает система. Ни один дистр по умолчанию его не цепляет.
>
> Вопрос: хочу аварийный сидюк, чтоб на нем было в принципе то же, что и
> на харде - при загрузке иметь /bin, /sbin, /usr, /etc с сидюка, а /home
> и /var - на рамдиске.
>
> Кто-нибудь делал такое и может объяснить мне на раз-два-три необходимые
> действия? пока вижу mkisofs с опцией -b eltorito_boot_image, но нельзя
> ли сделать сразу загрузку всей системы?

См. SLAX или в сторону syslinux...

SteelKey
()

Я сам на днях сделал установочный LiveDVD для своего дистрибутива.
Могу вкратце описать процедуру.
1) Создаёшь каталог ~/CD, в котором будешь собирать систему.
Там создай каталог root.
2) В root копируешь набор необходимых библиотек и программ из
готового дистриба или собираешь свой.
3) Создаёшь каталог isolinux, скачиваешь туда isolinux.bin
(из syslinux, syslinux.zytor.com) и isolinux.cfg.
Пример syslinux.cfg:
default linux
timeout 100
prompt 1
display boot.msg
F1 help.msg

label linux
   kernel linux
   append initrd=initrd.gz root=/dev/ram0 init=/linuxrc rw

boot.msg и help.msg - текстовые файлы, кидаешь также в isolinux.
При нажатии на F1 появляется содержимое help.msg. При загрузке
появляется приглашение boot:, там пользователь вводит название
нужного ядра (label) и опции. Они идут к ядру в cmdline,
а linuxrc читает их из /proc/cmdline при необходимости.

Дальше надо делать initrd. Создавай образ ext2, копируй туда самые
нужные проги (sh, cp, ...) Потом linuxrc. Его главные действия -
смонтировать /proc, проанализировать cmdline, найти сидюк, с которого
загружено ядро, сделать симлинки из /mnt/livecd/root в /newroot (лучше
всего использовать lndir из X11R6, но я писал на C свою функцию), а
каталоги etc, dev, root и var скопировать с помощью cp -r. Потом создать
каталог /newroot/mnt/initrd, войти в /newroot, сделать
pivot_root . mnt/initrd, а потом exec /sbin/init. Главное - не забыть
про exec! Если init не будет иметь PID=1, то ничего не сработает. Далее
грузятся бутскрипты, размонтирующие /mnt/initrd/mnt/livecd, /mnt/initrd/proc
и /mnt/initrd, потом blockdev --flushbufs /dev/ram0, обновление utmp,
установка hostname, поднятие lo и т.д.

Дальше сборка ядра в CD/root, которое потом помещается в isolinux/linux.
initrd сжимается gzip-ом и помещается в isolinux.

И, наконец,cd ~/CD ; mkisofs -r -o cd.iso -b isolinux/isolinux.bin -c \
isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table .

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

Всем большое спасибо! Бум пробовать.

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