code: fqa.9front.org

Download patch

ref: 423dc845841f7557582c85948ba3f5a3f35c28eb
parent: 4f79ee9b7787e6dea4ea94fab7b38ee50727f214
author: sl <sl@9front>
date: Tue Apr 16 23:25:21 EDT 2024

fqa.ms, fqa3.ms: add 3.3.1.1.1 - arm64 QCOW (thanks, keegan)

--- a/fqa.ms
+++ b/fqa.ms
@@ -520,6 +520,10 @@
 3.3.1.1 - Installation
 .ihtml a
 
+.ihtml a <a href="fqa3.html#3.3.1.1.1">
+3.3.1.1.1 - arm64 QCOW
+.ihtml a
+
 .ihtml a <a href="fqa3.html#3.3.1.2">
 3.3.1.2 - Post-Installation Booting
 .ihtml a
--- a/fqa3.ms
+++ b/fqa3.ms
@@ -1397,6 +1397,82 @@
 .R
 .ihtml a
 
+.html - <a name="3.3.1.1.1" />
+.ihtml h4 <h4>
+.SH
+3.3.1.1.1 - arm64 QCOW
+.R
+.ihtml h4
+
+The
+.ihtml a <a href="http://iso.only9fans.com">
+arm64 QCOW image
+.ihtml a
+is an arm64 9front image which can be run in QEMU.
+
+It is intended to be used under a hypervisor (such as Linux KVM or macOS Hypervisor.framework), and thus uses the most general subset of arm64 features to ensure compatibility across hardware (4K page sizes, GICv3).
+
+It currently supports XHCI USB and PCIe devices (used for VirtIO), but it is picky about
+which peripherals it requires since arm64 does not standardize them. It does not provide
+a graphical interface, and must be driven via serial (you can however use this to open a drawterm connection, and this is recommended!)
+
+Requirements:
+
+• virt-2.12 machine type because later versions place ECAM in higher memory
+
+• GICv3
+
+• VirtIO devices marked "non-transitional"
+
+As well, U-Boot is required to boot the image. As there are no binaries for U-Boot arm64 QEMU, they must be built yourself:
+.P1
+; git clone https://source.denx.de/u-boot/u-boot.git
+; make qemu_arm64_defconfig
+; make
+.P2
+This will produce a
+.CW u-boot.bin
+which we will use to run the system.
+
+Running
+
+To boot the system, use the correct machine type, GIC version and pass the QCOW:
+.P1
+qemu-system-aarch64 -M virt-2.12,gic-version=3 \\
+	-cpu cortex-a72 -m 4G -smp 4 \\
+	-bios u-boot.bin \\
+	-drive file=9front.arm64.qcow2,if=none,id=installer \\
+	-device virtio-blk-pci-non-transitional,drive=installer \\
+	-serial stdio
+.P2
+For hardware acceleration, pass
+.CW accel=hvf
+in the
+.CW -M
+line for e.g. macOS Hypervisor.framework.
+
+For installation, create an additional disk:
+.P1
+qemu-img create -f qcow2 9front.qcow2 64G
+.P2
+And add it to the QEMU machine as follows:
+.P1
+	-drive file=9front.qcow2,if=none,id=disk \\
+	-device virtio-blk-pci-non-transitional,drive=disk
+.P2
+Then, the machine can be installed as per usual over serial.
+
+For networking devices, attach a 
+.CW virtio-net-pci-non-transitional
+pointed to your network interface (such as user networking).
+
+USB Devices
+
+USB devices can be attached after adding an XHCI PCIe device:
+.P1
+	-device qemu-xhci,id=xhci -device usb-tablet,bus=xhci.0
+.P2
+
 .html - <a name="3.3.1.2" />
 .ihtml h4 <h4>
 .SH