Много всего уже перепробовал, но так ничего и не добился. Опишу все свои действия, как делал в последний раз.
Создал образ диска так:
dd if=/dev/zero of=disk.img bs=1k count=61k
losetup /dev/loop0 disk.img
echo -e "o\nn\np\n1\n\n\na\n1\nw\n" | fdisk /dev/loop0 # echo я сам написал, полностью понимаю, как он работает, не надо мне объяснять
losetup -o 1048576 /dev/loop1 disk.img # offset получен при помощи parted
mkfs.ext2 /dev/loop1
mount /dev/loop1 /mnt
Теперь копирую ядро в /mnt и по-разному пытаюсь установить LILO на получившийся образ.
Нашёл такой конфиг:
boot=/dev/loop0
disk=/dev/loop0
bios=0x80
sectors=63 # возможно, неверно для моего образа
heads=16 # возможно, неверно для моего образа
cylinders=1000 # возможно, неверно для моего образа
partition=/dev/loop1
start=63 # возможно, неверно для моего образа
lba32
map=/mnt/map # возможно, неправильно указывать абсолютный путь
vga=normal
image=/mnt/linux # возможно, неправильно указывать абсолютный путь
root=/dev/sda1 # не уверен, что рут нужно указывать так
label=mylinux
read-only
Запускаю в виртуалке — получаю ошибку 0x99: «Invalid Second Stage — Mismatch between drive and BIOS geometry, or a bad map file. Some evidence that LINEAR needs to be set on the disk (see LiloNotes)». Вероятно, конфиг нужно переписать. Или я вообще всё неправильно сделал.
Помогите, пожалуйста, разобраться. GRUB не предлагать.