LINUX.ORG.RU

История изменений

Исправление Xenius, (текущая версия) :

Решение с LILO не может подойти, потому что в дистре его нет, собрать из сорцов навряд ли получится (в Alpine MUSL вместо GLIB), больше мороки будет.

Почему бы не собрать его статически на другом компе и перенести готовый бинарник тогда уж?

Ну или вот, я попробовал установить на виртуалку CorePure который работает по схожему принципу с Alpine и получилось. Вот такие файлы:

# find . -type f
./vmlinuz64
./corepure64.gz
./syslinux/boot.msg
./syslinux/f2
./syslinux/f3
./syslinux/f4
./syslinux/syslinux.cfg
./lilo/lib64/libc.so.6
./lilo/lib64/libdevmapper.so.1.02
./lilo/lib64/libm.so.6
./lilo/lib64/libpthread.so.0
./lilo/lib64/libudev.so.1
./lilo/lib64/ld-linux-x86-64.so.2
./lilo/lib64/libtinfo.so.6
./lilo/lib64/libdl.so.2
./lilo/etc/lilo.conf
./lilo/boot/boot.0800
./lilo/boot/map
./lilo/vmlinuz64
./lilo/corepure64.gz
./lilo/bin/lilo
./lilo/bin/liloconfig
./lilo/bin/sh
./lilo/bin/bash
./lilo/bin/busybox

Причём

  • busybox оказался ненужен, да и всё равно не работал,
  • bash и sh - хардлинки,
  • liloconfig - скрипт, не нужен,
  • ./lilo/vmlinuz64 ./lilo/corepure64.gz - хардлинки на одноимённые файлы
  • boot.0800 и map — созданы lilo при установке
  • syslinux - не нужен, скопировал на случай если нужно опции подглядеть
  • libtinfo.so.6 libdl.so.2 — нужны только для bash/sh

Зато нужны были пустые каталоги lilo/dev и lilo/proc

Содержимое lilo.conf:

lba32
boot = /dev/sda
root = /dev/sda1
map = /boot/map
install = text
prompt
image = /vmlinuz64
	label = TinyCore
	initrd = corepure64.gz

Наверное стоит ещё опцию compact добавить для ускорения загрузки.

В общем суть эксперимента:

Создал образ диска во временном каталоге, затем загрузился с образа командой

qemu-system-x86_64 -m 1G -hda lilo-test.img -cdrom CorePure64-13.1.iso -boot d

Затем с помощью fdisk создал раздел 64 мегабайта (занято оказалось 27 в итоге), на нём mkfs.ext2.

С помощью ldd выяснил какие нужны либы для запуска bash и lilo, скопировал их из основной системы (Slackware64), вначале пытался через LD_LIBRARY_PATH и LD_PRELOAD, но так почем-то не работало, поэтому сделал chroot с самым минимумом — шелл и lilo, пожалуй можно было обойтись без шелла, если команде chroot выдавать lilo сразу.

Затем нужно было ещё сделать mount --bind /dev lilo/dev и аналогично с /proc и после этого lilo сработал.

В общем если тебе лень собирать lilo, возьми все нужные файлы из пакетов от любого дистрибутива, где он есть, например Slackware.

fdisk всё-таки умеет создавать таблицу разделов, начинающуюся с нулевого сектора, нужно взять команду b из режима x. Но тебе это вроде и не нужно.

Исходная версия Xenius, :

Решение с LILO не может подойти, потому что в дистре его нет, собрать из сорцов навряд ли получится (в Alpine MUSL вместо GLIB), больше мороки будет.

Почему бы не собрать его статически на другом компе и перенести готовый бинарник тогда уж?

Ну или вот, я попробовал установить на виртуалку CorePure который работает по схожему принципу с Alpine и получилось. Вот такие файлы:

# find . -type f
./vmlinuz64
./corepure64.gz
./syslinux/boot.msg
./syslinux/f2
./syslinux/f3
./syslinux/f4
./syslinux/syslinux.cfg
./lilo/lib64/libc.so.6
./lilo/lib64/libdevmapper.so.1.02
./lilo/lib64/libm.so.6
./lilo/lib64/libpthread.so.0
./lilo/lib64/libudev.so.1
./lilo/lib64/ld-linux-x86-64.so.2
./lilo/lib64/libtinfo.so.6
./lilo/lib64/libdl.so.2
./lilo/etc/lilo.conf
./lilo/boot/boot.0800
./lilo/boot/map
./lilo/vmlinuz64
./lilo/corepure64.gz
./lilo/bin/lilo
./lilo/bin/liloconfig
./lilo/bin/sh
./lilo/bin/bash
./lilo/bin/busybox

Причём

  • busybox оказался ненужен, да и всё равно не работал,
  • bash и sh - хардлинки,
  • liloconfig - скрипт, не нужен,
  • ./lilo/vmlinuz64 ./lilo/corepure64.gz - хардлинки на одноимённые файлы
  • boot.0800 и map — созданы lilo при установке
  • syslinux - не нужен, скопировал на случай если нужно опции подглядеть
  • libtinfo.so.6 libdl.so.2 — нужны только для bash/sh

Зато нужны были пустые каталоги lilo/dev и lilo/proc

Содержимое lilo.conf:

lba32
boot = /dev/sda
root = /dev/sda1
map = /boot/map
install = text
prompt
image = /vmlinuz64
	label = TinyCore
	initrd = corepure64.gz

Наверное стоит ещё опцию compact добавить для ускорения загрузки.


В общем суть эксперимента:

Создал образ диска во временном каталоге, затем загрузился с образа командой

qemu-system-x86_64 -m 1G -hda lilo-test.img -cdrom CorePure64-13.1.iso -boot d


Затем с помощью `fdisk` создал раздел 64 мегабайта (занято оказалось 27 в итоге), на нём `mkfs.ext2`. 

С помощью ldd выяснил какие нужны либы для запуска bash и lilo, скопировал их из основной системы (Slackware64), вначале пытался через LD_LIBRARY_PATH, но так почем-то не работало, поэтому сделал chroot с самым минимумом — шелл и lilo, пожалуй можно было обойтись без шелла, если команде chroot выдавать lilo сразу.

Затем нужно было ещё сделать `mount --bind /dev lilo/dev` и аналогично с `/proc` и после этого lilo сработал.

В общем если тебе лень собирать lilo, возьми все нужные файлы из пакетов от любого дистрибутива, где он есть, например Slackware.