Исправление 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
Причём
Зато нужны были пустые каталоги 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
Причём
Зато нужны были пустые каталоги 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.