summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorWaldemar Brodkorb <wbx@openadk.org>2025-03-21 02:33:19 +0100
committerWaldemar Brodkorb <wbx@openadk.org>2025-03-21 14:13:11 +0100
commit7baf5a0f7adecd12881998db410b8134c20a6eba (patch)
tree1404d89fb33848c0546775e6169d1a7e01f7badb
parent0fe580b5ea37f72ecc7e3806e753bf9cffc19d27 (diff)
virtio: rework, add support for x86_64
-rw-r--r--package/grub/files/grub-pc-serial.cfg2
-rw-r--r--package/grub/files/grub-pc-vga.cfg2
-rwxr-xr-xscripts/create.sh4
-rw-r--r--target/config/Config.in.qemuopts12
-rw-r--r--target/linux/config/Config.in.virtio30
-rw-r--r--target/x86_64/Makefile14
-rw-r--r--target/x86_64/kernel/qemu-x86_641
7 files changed, 45 insertions, 20 deletions
diff --git a/package/grub/files/grub-pc-serial.cfg b/package/grub/files/grub-pc-serial.cfg
index 4b6a0616c..d48b82c45 100644
--- a/package/grub/files/grub-pc-serial.cfg
+++ b/package/grub/files/grub-pc-serial.cfg
@@ -10,5 +10,5 @@ menuentry "OpenADK" {
insmod ext2
set root='hd0,1'
echo "Loading OpenADK"
- linux /boot/kernel root=/dev/sda1 rootfstype=ext4 rootwait panic=10
+ linux /boot/kernel rootfstype=ext4 rootwait panic=10
}
diff --git a/package/grub/files/grub-pc-vga.cfg b/package/grub/files/grub-pc-vga.cfg
index 72af5abce..8200624d6 100644
--- a/package/grub/files/grub-pc-vga.cfg
+++ b/package/grub/files/grub-pc-vga.cfg
@@ -6,5 +6,5 @@ menuentry "OpenADK" {
insmod ext2
set root='hd0,1'
echo "Loading OpenADK"
- linux /boot/kernel console=tty0 root=/dev/sda1 rootfstype=ext4 rootwait panic=10
+ linux /boot/kernel console=tty0 rootfstype=ext4 rootwait panic=10
}
diff --git a/scripts/create.sh b/scripts/create.sh
index cc0099b4d..7ca6b3a3b 100755
--- a/scripts/create.sh
+++ b/scripts/create.sh
@@ -2,7 +2,7 @@
#-
# Copyright © 2010, 2011, 2012
# Thorsten Glaser <tg@mirbsd.org>
-# Copyright © 2010-2024
+# Copyright © 2010-2025
# Waldemar Brodkorb <wbx@openadk.org>
#
# Provided that these terms and disclaimer and all copyright notices
@@ -152,7 +152,7 @@ else
fi
if (( usegrub )); then
- tar -xOJf "$src" boot/grub/core.img >"$T/core.img"
+ tar -xOzf "$src" boot/grub/core.img >"$T/core.img"
integer coreimgsz=$($statcmd "$T/core.img")
if (( coreimgsz < 1024 )); then
print -u2 core.img is probably too small: $coreimgsz
diff --git a/target/config/Config.in.qemuopts b/target/config/Config.in.qemuopts
index 78c608b49..df7128efa 100644
--- a/target/config/Config.in.qemuopts
+++ b/target/config/Config.in.qemuopts
@@ -95,20 +95,8 @@ endchoice
choice
prompt "Qemu Emulation using VirtIO drivers"
depends on ADK_TARGET_SYSTEM_QEMU_SPARC64 || \
- ADK_TARGET_SYSTEM_QEMU_AARCH64 || \
- ADK_TARGET_SYSTEM_QEMU_ARC || \
- ADK_TARGET_SYSTEM_QEMU_CSKY || \
- ADK_TARGET_SYSTEM_QEMU_M68K_VIRT || \
- ADK_TARGET_SYSTEM_QEMU_RISCV32 || \
- ADK_TARGET_SYSTEM_QEMU_RISCV64 || \
ADK_TARGET_SYSTEM_QEMU_X86 || \
ADK_TARGET_SYSTEM_QEMU_X86_64
-default ADK_TARGET_QEMU_WITH_VIRTIO if ADK_TARGET_SYSTEM_QEMU_AARCH64
-default ADK_TARGET_QEMU_WITH_VIRTIO if ADK_TARGET_SYSTEM_QEMU_ARC
-default ADK_TARGET_QEMU_WITH_VIRTIO if ADK_TARGET_SYSTEM_QEMU_CSKY
-default ADK_TARGET_QEMU_WITH_VIRTIO if ADK_TARGET_SYSTEM_QEMU_RISCV32
-default ADK_TARGET_QEMU_WITH_VIRTIO if ADK_TARGET_SYSTEM_QEMU_RISCV64
-default ADK_TARGET_QEMU_WITH_VIRTIO if ADK_TARGET_SYSTEM_QEMU_M68K_VIRT
config ADK_TARGET_QEMU_WITHOUT_VIRTIO
bool "disabled"
diff --git a/target/linux/config/Config.in.virtio b/target/linux/config/Config.in.virtio
index 526e2920e..053b2465c 100644
--- a/target/linux/config/Config.in.virtio
+++ b/target/linux/config/Config.in.virtio
@@ -10,9 +10,6 @@ config ADK_LINUX_KERNEL_VIRTIO_MENU
config ADK_LINUX_KERNEL_VIRTIO
bool
-config ADK_LINUX_KERNEL_VIRTIO_CONSOLE
- bool
-
config ADK_LINUX_KERNEL_VIRTIO_PCI_LEGACY
bool
@@ -22,6 +19,20 @@ config ADK_LINUX_KERNEL_VIRTIO_PCI
config ADK_LINUX_KERNEL_VIRTIO_MMIO
bool
+config ADK_LINUX_KERNEL_VIRTIO_CONSOLE
+ bool "Virtio console driver"
+ select ADK_LINUX_KERNEL_VIRTIO
+ default y if ADK_TARGET_SYSTEM_QEMU_AARCH64
+ default y if ADK_TARGET_SYSTEM_QEMU_ARC
+ default y if ADK_TARGET_SYSTEM_QEMU_CSKY
+ default y if ADK_TARGET_SYSTEM_QEMU_M68K_VIRT
+ default y if ADK_TARGET_SYSTEM_QEMU_RISCV32
+ default y if ADK_TARGET_SYSTEM_QEMU_RISCV64
+ default y if ADK_TARGET_SYSTEM_QEMU_S390
+ default n
+ help
+ Enables support for Virtio console driver.
+
config ADK_LINUX_KERNEL_VIRTIO_NET
tristate "Virtio net driver"
select ADK_LINUX_KERNEL_VIRTIO
@@ -29,6 +40,12 @@ config ADK_LINUX_KERNEL_VIRTIO_NET
select ADK_LINUX_KERNEL_VIRTIO_MMIO
select ADK_LINUX_KERNEL_VIRTIO_PCI
select ADK_LINUX_KERNEL_VIRTIO_PCI_LEGACY
+ default y if ADK_TARGET_SYSTEM_QEMU_AARCH64
+ default y if ADK_TARGET_SYSTEM_QEMU_ARC
+ default y if ADK_TARGET_SYSTEM_QEMU_CSKY
+ default y if ADK_TARGET_SYSTEM_QEMU_M68K_VIRT
+ default y if ADK_TARGET_SYSTEM_QEMU_RISCV32
+ default y if ADK_TARGET_SYSTEM_QEMU_RISCV64
default y if ADK_TARGET_SYSTEM_QEMU_S390
default n
help
@@ -42,6 +59,13 @@ config ADK_LINUX_KERNEL_VIRTIO_BLK
select ADK_LINUX_KERNEL_VIRTIO_PCI_LEGACY
select ADK_LINUX_KERNEL_VIRTIO_MMIO
select ADK_LINUX_KERNEL_BLK_DEV
+ default y if ADK_TARGET_SYSTEM_QEMU_AARCH64
+ default y if ADK_TARGET_SYSTEM_QEMU_ARC
+ default y if ADK_TARGET_SYSTEM_QEMU_CSKY
+ default y if ADK_TARGET_SYSTEM_QEMU_M68K_VIRT
+ default y if ADK_TARGET_SYSTEM_QEMU_RISCV32
+ default y if ADK_TARGET_SYSTEM_QEMU_RISCV64
+ default y if ADK_TARGET_SYSTEM_QEMU_S390
default n
help
Enables support for Virtio Block driver.
diff --git a/target/x86_64/Makefile b/target/x86_64/Makefile
index 2c5bcd253..221311091 100644
--- a/target/x86_64/Makefile
+++ b/target/x86_64/Makefile
@@ -10,11 +10,19 @@ KERNEL:=$(LINUX_DIR)/arch/x86/boot/bzImage
QEMU_ARCH:=x86_64
QEMU_ARGS:=-M pc -m 256
+QEMU_ARGS+=${ADK_QEMU_ARGS}
+
ifeq ($(ADK_PACKAGE_GRUB_EFI_X86_64),y)
QEMU_ARGS+=-L . -bios bios-x86_64.bin
endif
-QEMU_ARGS+=${ADK_QEMU_ARGS}
+
+ifeq ($(ADK_TARGET_QEMU_WITH_VIRTIO),y)
+QEMU_ARGS+=-net nic,model=virtio -net user
+QEMU_ARGS+=-drive file=qemu-${ADK_TARGET_CPU_ARCH}.img,if=virtio
+else
QEMU_ARGS+=-net user -net nic,model=e1000
+endif
+
ifeq ($(ADK_TARGET_QEMU_WITH_AUDIO),y)
QEMU_ARGS+=-device AC97
endif
@@ -39,7 +47,11 @@ ifeq ($(ADK_TARGET_QEMU),y)
@echo "$(CREATE) qemu-${ADK_TARGET_CPU_ARCH}.img $(FW_DIR)/$(ROOTFSTARBALL)"
@echo "Start qemu with following options:"
ifeq ($(ADK_TARGET_QEMU_WITH_BOOTLOADER),y)
+ifeq ($(ADK_TARGET_QEMU_WITH_VIRTIO),y)
+ @echo 'qemu-system-${QEMU_ARCH} ${QEMU_ARGS}'
+else
@echo 'qemu-system-${QEMU_ARCH} ${QEMU_ARGS} qemu-${ADK_TARGET_CPU_ARCH}.img'
+endif
else
@echo 'qemu-system-${QEMU_ARCH} ${QEMU_ARGS} -kernel $(FW_DIR)/$(TARGET_KERNEL) qemu-${ADK_TARGET_CPU_ARCH}.img'
endif
diff --git a/target/x86_64/kernel/qemu-x86_64 b/target/x86_64/kernel/qemu-x86_64
index 9e9c1197f..073a4c7ca 100644
--- a/target/x86_64/kernel/qemu-x86_64
+++ b/target/x86_64/kernel/qemu-x86_64
@@ -11,3 +11,4 @@ CONFIG_X86_REROUTE_FOR_BROKEN_BOOT_IRQS=y
CONFIG_AMD_NB=y
CONFIG_IA32_EMULATION=y
CONFIG_CMDLINE_BOOL=y
+CONFIG_CMDLINE_OVERRIDE=y