build/config/boards/qemu-uboot-x86.wip

58 lines
2.6 KiB
Plaintext
Raw Normal View History

# x86_64 via qemu + u-boot firmware, for q35 machine type
declare -g UEFI_GRUB="skip" # Skip GRUB for this board
declare -g BOARD_NAME="uefi-x86"
declare -g BOARDFAMILY="uefi-x86"
declare -g BOARD_MAINTAINER="rpardini"
declare -g KERNEL_TARGET="current,edge"
declare -g SERIALCON="ttyS0"
# u-boot's "x86_64" is incomplete; use the 32-bit version.
declare -g QEMU_UBOOT_BOOTCONFIG="qemu-x86_defconfig"
declare -g INITRD_ARCH='x86' # input for mkimage, needed for extlinux
## qemu'ed uboot on x86 can do extlinux?
#declare -g SRC_EXTLINUX="yes"
#declare -g SRC_CMDLINE="loglevel=7 console=ttyS0" # Those boards are serial-debug only; 'root=LABEL=armbi_root' ?
#enable_extension "u-boot-menu" # this generates the extlinux.conf
function post_family_config__force_uboot_rom_build_x86() {
declare -g UBOOT_TARGET_MAP="all;;u-boot.rom" # Can't find the target that produces 'u-boot.rom', so for now 'make all'
# x86 requires a bootscript, since it's a bzImage and non-mkimage'd initrd; extlinux chokes.
declare -g BOOTSCRIPT="boot-qemu-x86.cmd:boot.cmd"
}
# Export the u-boot.rom file next to the disk image, so it can be used as qemu's firmware via the -bios option.
function pre_umount_final_image__export_uboot_rom() {
: "${version:?version is not set}"
local uboot_name="linux-u-boot-${BRANCH}-${BOARD}_${REVISION}_${ARCH}"
display_alert "Exporting u-boot.rom" "${uboot_name} - ${version}.u-boot.rom" "debug"
run_host_command_logged cp -pv "${MOUNT}/usr/lib/${uboot_name}/u-boot.rom" "${DESTIMG}/${version}.u-boot.rom"
}
function board_docs__qemu-uboot-x86() {
: "${version:?version is not set}"
cat <<- DOCS
## Upstream docs
- https://u-boot.readthedocs.io/en/latest/arch/x86.html
- https://u-boot.readthedocs.io/en/latest/board/emulation/qemu-x86.html
## Running on qemu, via command line
### On Linux (x86), with KVM acceleration
\`\`\`bash
qemu-system-x86_64 -accel kvm -machine q35,vmport=off -smp 8 -nographic -bios ${version}.u-boot.rom -m 2048 -nic user,model=virtio-net-pci -device virtio-blk-pci,drive=drive0,bootindex=0 -drive if=none,media=disk,id=drive0,file=${version}.img.qcow2,discard=unmap,detect-zeroes=unmap
\`\`\`
### On Mac (x86)
\`\`\`bash
# -accel hvf does not work for me, u-boot hangs. this makes it unpractical on macos (monterey). probably also works under darwin/arm64, it's emulated anyway.
qemu-system-x86_64 -machine q35,vmport=off -smp 8 -nographic -bios ${version}.u-boot.rom -m 2048 -nic user,model=virtio-net-pci -device virtio-blk-pci,drive=drive0,bootindex=0 -drive if=none,media=disk,id=drive0,file=${version}.img.qcow2,discard=unmap,detect-zeroes=unmap
\`\`\`
DOCS
}