Criando uma imagem inicializável do Linux usando o extlinux

0

Estou ajudando um amigo a configurar uma imagem inicializável do Linux usando o extlinux. Aqui está o que eu tenho até agora, mas usando o qemu-system-x86_64, eu não consigo fazer o boot dessa imagem. As opções para o qemu-system-x86_64 são apenas -m 2048 -drive format = raw, file = myapp.img. O qemu-system-x86_64 apenas diz 'Inicializando do Disco Rígido ...'. Eu estou querendo saber o que estou fazendo errado. O kernel e initrd inicializam muito bem no qemu. A imagem inicializável é destinada a um sistema antigo não UEFI.

    #!/bin/sh -ex

    APP=myapp
    IMG=${APP}.img
    KERNEL=$1
    INITRD=$2

    MNTPNT=/media/usb
    SIZE=1G

    qemu-img create -f raw  $IMG $SIZE
    sudo dd if=/usr/lib/syslinux/mbr/mbr.bin of=$IMG conv=notrunc bs=440 count=1
    parted -s $IMG mklabel msdos
    parted -s -a none $IMG mkpart primary ext4 0 $SIZE

    lodev=$(losetup -f)
    sudo losetup $lodev $IMG
    sudo partx -a $lodev
    sudo mkfs.ext4 ${lodev}p1

    sudo mount ${lodev}p1 $MNTPNT
    sudo mkdir -p $MNTPNT/boot/extlinux
    sudo cp extlinux.conf $MNTPNT/boot/extlinux/
    sudo cp /usr/lib/syslinux/memdisk $MNTPNT/boot/extlinux/
    sudo cp /usr/lib/syslinux/modules/bios/* $MNTPNT/boot/extlinux/
    sudo cp $KERNEL $MNTPNT/boot/
    sudo cp $INITRD $MNTPNT/boot/
    sudo extlinux --install $MNTPNT/boot/extlinux/
    sudo umount $MNTPNT

    sudo partx -d $lodev
    sudo losetup -d $lodev
    
por Chirag Kantharia 11.08.2018 / 21:09

1 resposta

0

Adicionando o seguinte comando depois de criar a partição Linux, corrigimos o problema.

parted -s -a none $IMG set 1 boot on

Copiar os módulos do BIOS e o memdisk também não foi necessário.

    
por 19.08.2018 / 16:38