Yellow Rabbit

Обновление файлов isolinux и сборка

Починка загрузчика isolinux для Acer C720

Оказалось, что дистрибутив antiX Linux не хочет дружить с моим Acer C720: установщик впадает в так называемый bootloop. Причина заключается в особенностях Sea BIOS, которая забирает себе 16М нижней памяти, что приводит к краху syslinux. Это исправлено в версии 6.04 syslinux, но что делать мне сейчас со старым дистрибутивом на руках? Будем заменять syslinux в ISO.

Новый syslinux

Забираем и распаковываем новый syslinux:


wget https://www.kernel.org/pub/linux/utils/boot/syslinux/Testing/6.04/syslinux-6.04-pre1.tar.gz
tar zxvpf syslinux-6.04-pre1.tar.gz

Из этого каталога мы потом заберём свежие версии файлов.

Подготавливаем образ

Монтируем и копируем содержимое установочного диска в каталог dst - корень нового установочного образа. У меня установочный образ был на флешке /dev/sdb


mkdir dst /mnt/dst
mount -t iso9660 /dev/sdb /mnt/dst
cp -a /mnt/dst ./
umount /mnt/dst
cd dst

Забираем загрузочный сектор.


dd if=/dev/sdb bs=512 count=1 of=isohdpfx.bin

Заменяем файлы новыми версиями

Нужно скопировать файлы из каталога с новой версией syslinux в dst/boot/isolinux/ Список файлов для копирования:


./bios/com32/chain/chain.c32
./bios/com32/gfxboot/gfxboot.c32
./bios/core/isolinux.bin
./bios/com32/elflink/ldlinux/ldlinux.c32
./bios/com32/lib/libcom32.c32
./bios/com32/cmenu/libmenu/libmenu.c32
./bios/com32/libutil/libutil.c32
./bios/com32/menu/menu.c32

В файле dst/boot/isolinux/version пишем новую версию 6.04.

Собираем образ

Запускаем небольшой скрипт в родительском каталоге dst


#!/bin/sh
MBR_FILE=isohdpfx.bin
xorriso -as mkisofs \
        -iso-level 3 \
        -R -J -pad \
        -full-iso9660-filenames \
        -volid "antiXlive" \
        -eltorito-boot boot/isolinux/isolinux.bin \
        -eltorito-catalog boot/isolinux/isolinux.cat \
        -no-emul-boot -boot-load-size 4 -boot-info-table \
        -isohybrid-mbr ${MBR_FILE} \
        -eltorito-alt-boot \
        -e boot/grub/efi.img \
        -no-emul-boot -isohybrid-gpt-basdat \
        -output antix-core-c720.iso \
        ./dst

В результате получим новый ISO antix-core-c720.iso, который можем записать обратно на флеш и загрузиться с него.