0
0
mirror of https://git.openwrt.org/openwrt/openwrt.git synced 2024-11-21 12:45:19 +00:00
openwrt/target/linux/armsr
Christian Marangi 0357372896
armsr: don't limit kmods to armsr armv8 subtarget
Drop limitation on depending on only armv8 for armsr target as those
module should support both 32 and 64 bits systems.

Only thunderx-net actually require 64 bit systems.

Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
2024-10-29 00:07:55 +01:00
..
armv7 armsr: Remove kernel 6.1 configuration 2024-05-30 22:44:57 +02:00
armv8 kernel: add missing config symbols 2024-08-22 00:20:02 +01:00
base-files armsr: use console=tty1 to make console more readily available 2024-08-25 13:15:33 +02:00
image armsr: don't limit kmods to armsr armv8 subtarget 2024-10-29 00:07:55 +01:00
patches-6.6 kernel/armsr: Add configuration files and patches for v6.6 2024-05-07 13:01:19 +01:00
base-files.mk target: Make TARGET_SERIAL independent of GRUB configuration 2023-11-29 23:43:01 +01:00
config-6.6 kernel: bump 6.6 to 6.6.46 2024-08-20 23:41:08 +02:00
Makefile armsr: Use kernel 6.6 by default 2024-05-30 22:44:57 +02:00
modules.mk armsr: don't limit kmods to armsr armv8 subtarget 2024-10-29 00:07:55 +01:00
README uboot-armsr: add support for QEMU armv7/armv8 2023-06-10 21:50:22 +02:00

This target generates images that can be used on ARM machines with EFI
support (e.g EDKII/TianoCore or U-Boot with bootefi).

There are two subtargets:
- armv7 for 32-bit machines
- armv8 for 64-bit machines

The kernel and filesystem images can also be used directly by QEMU:

Run with qemu-system-arm

	# boot with initramfs embedded in
	qemu-system-arm -nographic -M virt -m 64 -kernel openwrt-armsr-armv7-generic-initramfs-kernel.bin

	# boot with accel=kvm
	qemu-system-arm -nographic -M virt,accel=kvm -cpu host -m 64 -kernel
	openwrt-armsr-armv7-generic-initramfs-kernel.bin

	# boot with a separate rootfs
	qemu-system-arm -nographic -M virt -m 64 -kernel openwrt-armsr-armv7-generic-kernel.bin \
	  -drive file=openwrt-armsr-armv7-generic-ext4-rootfs.img,format=raw,if=virtio -append 'root=/dev/vda rootwait'

	# boot with local dir as rootfs
	qemu-system-arm -nographic -M virt -m 64 -kernel openwrt-armsr-armv7-generic-kernel.bin \
	  -fsdev local,id=rootdev,path=root-armsr/,security_model=none \
	  -device virtio-9p-pci,fsdev=rootdev,mount_tag=/dev/root \
	  -append 'rootflags=trans=virtio,version=9p2000.L,cache=loose rootfstype=9p'

Run with kvmtool

	# start a named machine
	lkvm run -k openwrt-armsr-armv7-zImage -i openwrt-armsr-armv7-rootfs.cpio --name armsr0

	# start with virtio-9p rootfs
	lkvm run -k openwrt-armsr-armv7-zImage -d root-armsr/

	# stop "armsr0"
	lkvm stop --name armsr0

	# stop all
	lkvm stop --all

The multi-platform ARMv8 target can be used with QEMU:

	qemu-system-aarch64 -machine virt -cpu cortex-a57 -nographic \
		-kernel openwrt-armsr-armv8-generic-initramfs-kernel.bin \

With a EDKII or U-Boot binary for the QEMU ARM virtual machines, you can use these
images in EFI mode:

32-bit:
gunzip -c bin/targets/armsr/armv7/openwrt-armsr-armv7-generic-ext4-combined.img.gz > openwrt-arm-32.img
qemu-system-arm -nographic \
    -cpu cortex-a15 -machine virt \
    -bios bin/targets/armsr/armv7/u-boot-qemu_armv7/u-boot.bin \
    -smp 1 -m 1024 \
    -device virtio-rng-pci \
    -drive file=openwrt-arm-32.img,format=raw,index=0,media=disk \
    -netdev user,id=testlan -net nic,netdev=testlan \
    -netdev user,id=testwan -net nic,netdev=testwan

64-bit:
gunzip -c bin/targets/armsr/armv8/openwrt-armsr-armv8-generic-ext4-combined.img.gz > openwrt-arm-64.img
qemu-system-aarch64 -nographic \
    -cpu cortex-a53 -machine virt \
    -bios bin/targets/armsr/armv8/u-boot-qemu_armv8/u-boot.bin \
    -smp 1 -m 1024 \
    -device virtio-rng-pci \
    -drive file=openwrt-arm-64.img,format=raw,index=0,media=disk \
    -netdev user,id=testlan -net nic,netdev=testlan \
    -netdev user,id=testwan -net nic,netdev=testwan

One can obtain other EFI/BIOS binaries from:
- Distribution packages (such as qemu-efi-arm and qemu-efi-aarch64 in Debian)
- Community builds, like retrage/edk2-nightly: https://retrage.github.io/edk2-nightly/