LINUX.ORG.RU

Установить загрузчик LILO в файл

 , , , ,


0

1

Много всего уже перепробовал, но так ничего и не добился. Опишу все свои действия, как делал в последний раз.
Создал образ диска так:

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
LILO, запущенный с этим конфигом говорит «Added mylinux *», никаких ошибок и предупреждений.
Запускаю в виртуалке — получаю ошибку 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 не предлагать.

★★★★★

losetup -o 1048576 /dev/loop1 disk.img # offset получен при помощи parted

rmmod loop && modprobe loop max_part=16
И получите /dev/loopXpY без дополнителных действий.

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

На суть дела никак не повлияет. Но, спасибо.

CYB3R ★★★★★
() автор топика
Последнее исправление: CYB3R (всего исправлений: 1)
Ответ на: комментарий от AITap

Таки повлияло.

# > mkfs.ext2 /dev/loop0p1
mke2fs 1.42.6 (21-Sep-2012)
Warning: could not erase sector 2: Attempt to write block to filesystem resulted in short write
Filesystem label=
OS type: Linux
Block size=1024 (log=0)
Fragment size=1024 (log=0)
Stride=0 blocks, Stripe width=0 blocks
15360 inodes, 61440 blocks
3072 blocks (5.00%) reserved for the super user
First data block=1
Maximum filesystem blocks=62914560
8 block groups
8192 blocks per group, 8192 fragments per group
1920 inodes per group
Superblock backups stored on blocks: 
	8193, 24577, 40961, 57345

Allocating group tables: done                            
Warning: could not read block 0: Attempt to read block from filesystem resulted in short read
Warning: could not erase sector 0: Attempt to write block to filesystem resulted in short write
Writing inode tables: 0/8
Could not write 8 blocks in inode table starting at 248: Attempt to write block to filesystem resulted in short write

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

short write
short read

У меня не воспроизвелось, зато fdisk почему-то завис при попытке скормить ему команды при помощи echo. Ввёл вручную, заработало.

А вот вкатить lilo пока не удаётся (Fatal: Sorry, don't know how to handle device 0x0701)

AITap ★★★★★
()
Последнее исправление: AITap (всего исправлений: 1)
Ответ на: комментарий от AITap

Я детачнул и снова подсоединил свой образ, у меня нормально создалась фс. С echo всё прекрасно срабатывает.
Конфиг такой:

boot=/dev/loop0
disk=/dev/loop0
        bios=0x80
        sectors=63
        heads=16
        cylinders=1000
        partition=/dev/loop0p1
                start=63

CYB3R ★★★★★
() автор топика
Последнее исправление: CYB3R (всего исправлений: 1)
Ответ на: комментарий от CYB3R
boot=/dev/loop0
disk=/dev/loop0
bios=0x80
# fdisk -lub512 lilo.img:
# 4 heads, 32 sectors/track, 976 cylinders
sectors=32
heads=4
cylinders=976
partition=/dev/loop0p1
# /home/aitap/temp/lilo.img1 * 32
start=32

lba32
map=/mnt/map
vga=normal
image=/mnt/vmlinuz
root=/dev/sda1
label=mylinux
read-only


Заработало.

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

Хмм... У меня также, но всё равно ошибка 0x99. Думаю, что лучше будет использовать extlinux.

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

Ну что ты бампаешь? Я свою проблему решил путём простого отказа от LILO, так как с LILO присутствует элемент вышеописанного геморроя. Отметить как решённую?

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