私は友達がextlinuxを使って起動可能なLinuxイメージを設定するのを手伝っています。これがこれまで持っているものですが、qemu-system-x86_64を使用するとイメージを起動できません。 qemu-system-x86_64 のオプションは -m 2048 -drive format=raw,file=myapp.img です。 qemu-system-x86_64には、「ハードディスクから起動中...」とのみ表示されます。何が間違っているのか知りたいです。カーネルとinitrdはqemuから正常に起動します。起動可能なイメージは、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
答え1
Linuxパーティションを作成した後に次のコマンドを追加すると、問題が解決しました。
parted -s -a none $IMG set 1 boot on
BIOSモジュールとメモリディスクをまったくコピーする必要はありません。