An ARM Cortex-A15 machine provided by QEMU. Kernel drivers enabled: - pl011, uart - pl031, rtc - pl061, gpio - pci-host-generic - virtio_{mmio,pci,net,blk,scsi,9p,console,balloon} - smp with NR_CPUS=4 - cpu-hotplug - ext4 - neon, vfp extensions support (otherwise userland will fail with illegal instruction signal (code 0x00000004)) - DEBUG_BUGVERBOSE for debug purposes Signed-off-by: Yousong Zhou <yszhou4tech@gmail.com>master
parent
fb237477fd
commit
44ecfc26eb
@ -0,0 +1,28 @@ |
||||
#
|
||||
# Copyright (C) 2016 Yousong Zhou <yszhou4tech@gmail.com>
|
||||
#
|
||||
# This is free software, licensed under the GNU General Public License v2.
|
||||
# See /LICENSE for more information.
|
||||
#
|
||||
include $(TOPDIR)/rules.mk |
||||
|
||||
ARCH:=arm
|
||||
BOARD:=armvirt
|
||||
BOARDNAME:=QEMU ARM Virtual Machine
|
||||
FEATURES:=fpu pci rtc
|
||||
FEATURES+=cpiogz ext4 ramdisk squashfs targz
|
||||
CPU_TYPE:=cortex-a15
|
||||
CPU_SUBTYPE:=neon-vfpv4
|
||||
MAINTAINER:=Yousong Zhou <yszhou4tech@gmail.com>
|
||||
|
||||
KERNEL_PATCHVER:=4.4
|
||||
|
||||
define Target/Description |
||||
Build images for QEMU ARM Virtual Machine
|
||||
endef |
||||
|
||||
include $(INCLUDE_DIR)/target.mk |
||||
|
||||
KERNELNAME:=zImage
|
||||
|
||||
$(eval $(call BuildTarget)) |
@ -0,0 +1,34 @@ |
||||
This is intended to be used with LEDE project to provide image for use with |
||||
QEMU arm-softmmu virt machine. |
||||
|
||||
Run with qemu-system-arm |
||||
|
||||
# boot with initramfs embedded in |
||||
qemu-system-arm -nographic -M virt -m 64 -kernel lede-armvirt-zImage-initramfs |
||||
|
||||
# boot with accel=kvm |
||||
qemu-system-arm -nographic -M virt,accel=kvm -cpu host -m 64 -kernel lede-armvirt-zImage-initramfs |
||||
|
||||
# boot with a separate rootfs |
||||
qemu-system-arm -nographic -M virt -m 64 -kernel lede-armvirt-zImage \ |
||||
-drive file=lede-armvirt-root.ext4,format=raw,if=virtio -append 'root=/dev/vda rootwait' |
||||
|
||||
# boot with local dir as rootfs |
||||
qemu-system-arm -nographic -M virt -m 64 -kernel lede-armvirt-zImage \ |
||||
-fsdev local,id=rootdev,path=root-armvirt/,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 lede-armvirt-zImage -i lede-armvirt-rootfs.cpio --name armvirt0 |
||||
|
||||
# start with virtio-9p rootfs |
||||
lkvm run -k lede-armvirt-zImage -d root-armvirt/ |
||||
|
||||
# stop "armvirt0" |
||||
lkvm stop --name armvirt0 |
||||
|
||||
# stop all |
||||
lkvm stop --all |
@ -0,0 +1,14 @@ |
||||
#!/bin/sh |
||||
# Copyright (C) 2015 OpenWrt.org |
||||
# Copyright (C) 2016 Yousong Zhou <yszhou4tech@gmail.com> |
||||
|
||||
. /lib/functions/uci-defaults.sh |
||||
|
||||
board_config_update |
||||
|
||||
ucidef_set_board_id "armvirt" |
||||
ucidef_set_model_name "QEMU ARM Virtual Machine" |
||||
|
||||
board_config_flush |
||||
|
||||
exit 0 |
@ -0,0 +1,5 @@ |
||||
::sysinit:/etc/init.d/rcS S boot |
||||
::shutdown:/etc/init.d/rcS K shutdown |
||||
ttyAMA0::askfirst:/usr/libexec/login.sh |
||||
ttyS0::askfirst:/usr/libexec/login.sh |
||||
hvc0::askfirst:/usr/libexec/login.sh |
@ -0,0 +1,258 @@ |
||||
CONFIG_9P_FS=y |
||||
# CONFIG_9P_FS_POSIX_ACL is not set |
||||
# CONFIG_9P_FS_SECURITY is not set |
||||
CONFIG_ALIGNMENT_TRAP=y |
||||
CONFIG_ARCH_HAS_ATOMIC64_DEC_IF_POSITIVE=y |
||||
CONFIG_ARCH_HAS_ELF_RANDOMIZE=y |
||||
CONFIG_ARCH_HAS_GCOV_PROFILE_ALL=y |
||||
CONFIG_ARCH_HAS_SG_CHAIN=y |
||||
CONFIG_ARCH_HAS_TICK_BROADCAST=y |
||||
CONFIG_ARCH_HAVE_CUSTOM_GPIO_H=y |
||||
CONFIG_ARCH_HIBERNATION_POSSIBLE=y |
||||
CONFIG_ARCH_MIGHT_HAVE_PC_PARPORT=y |
||||
CONFIG_ARCH_MULTIPLATFORM=y |
||||
# CONFIG_ARCH_MULTI_CPU_AUTO is not set |
||||
CONFIG_ARCH_MULTI_V6_V7=y |
||||
CONFIG_ARCH_MULTI_V7=y |
||||
CONFIG_ARCH_NR_GPIO=0 |
||||
# CONFIG_ARCH_SELECT_MEMORY_MODEL is not set |
||||
# CONFIG_ARCH_SPARSEMEM_DEFAULT is not set |
||||
CONFIG_ARCH_SUPPORTS_ATOMIC_RMW=y |
||||
CONFIG_ARCH_SUPPORTS_UPROBES=y |
||||
CONFIG_ARCH_SUSPEND_POSSIBLE=y |
||||
CONFIG_ARCH_USE_BUILTIN_BSWAP=y |
||||
CONFIG_ARCH_USE_CMPXCHG_LOCKREF=y |
||||
CONFIG_ARCH_VIRT=y |
||||
CONFIG_ARCH_WANT_GENERAL_HUGETLB=y |
||||
CONFIG_ARCH_WANT_IPC_PARSE_VERSION=y |
||||
CONFIG_ARCH_WANT_OPTIONAL_GPIOLIB=y |
||||
CONFIG_ARM=y |
||||
CONFIG_ARM_AMBA=y |
||||
CONFIG_ARM_ARCH_TIMER=y |
||||
CONFIG_ARM_ARCH_TIMER_EVTSTREAM=y |
||||
# CONFIG_ARM_CPU_SUSPEND is not set |
||||
CONFIG_ARM_GIC=y |
||||
CONFIG_ARM_GIC_V3=y |
||||
CONFIG_ARM_HAS_SG_CHAIN=y |
||||
CONFIG_ARM_HEAVY_MB=y |
||||
CONFIG_ARM_L1_CACHE_SHIFT=6 |
||||
CONFIG_ARM_L1_CACHE_SHIFT_6=y |
||||
# CONFIG_ARM_LPAE is not set |
||||
CONFIG_ARM_PATCH_PHYS_VIRT=y |
||||
CONFIG_ARM_PSCI=y |
||||
CONFIG_ARM_PSCI_FW=y |
||||
# CONFIG_ARM_SP805_WATCHDOG is not set |
||||
CONFIG_ARM_THUMB=y |
||||
# CONFIG_ARM_THUMBEE is not set |
||||
CONFIG_ARM_VIRT_EXT=y |
||||
CONFIG_AUTO_ZRELADDR=y |
||||
CONFIG_CACHE_L2X0=y |
||||
CONFIG_CLKDEV_LOOKUP=y |
||||
CONFIG_CLKSRC_OF=y |
||||
CONFIG_CLKSRC_PROBE=y |
||||
CONFIG_CLONE_BACKWARDS=y |
||||
CONFIG_COMMON_CLK=y |
||||
CONFIG_CPU_32v6K=y |
||||
CONFIG_CPU_32v7=y |
||||
CONFIG_CPU_ABRT_EV7=y |
||||
# CONFIG_CPU_BPREDICT_DISABLE is not set |
||||
CONFIG_CPU_CACHE_V7=y |
||||
CONFIG_CPU_CACHE_VIPT=y |
||||
CONFIG_CPU_COPY_V6=y |
||||
CONFIG_CPU_CP15=y |
||||
CONFIG_CPU_CP15_MMU=y |
||||
CONFIG_CPU_HAS_ASID=y |
||||
# CONFIG_CPU_ICACHE_DISABLE is not set |
||||
CONFIG_CPU_PABRT_V7=y |
||||
CONFIG_CPU_RMAP=y |
||||
CONFIG_CPU_TLB_V7=y |
||||
CONFIG_CPU_V7=y |
||||
CONFIG_CRC16=y |
||||
CONFIG_CRYPTO_AEAD=y |
||||
CONFIG_CRYPTO_AEAD2=y |
||||
CONFIG_CRYPTO_CRC32C=y |
||||
CONFIG_CRYPTO_HASH=y |
||||
CONFIG_CRYPTO_HASH2=y |
||||
CONFIG_CRYPTO_MANAGER=y |
||||
CONFIG_CRYPTO_MANAGER2=y |
||||
CONFIG_CRYPTO_NULL2=y |
||||
CONFIG_CRYPTO_RNG2=y |
||||
CONFIG_CRYPTO_WORKQUEUE=y |
||||
CONFIG_DCACHE_WORD_ACCESS=y |
||||
CONFIG_DEBUG_BUGVERBOSE=y |
||||
CONFIG_DEBUG_LL_INCLUDE="mach/debug-macro.S" |
||||
# CONFIG_DEBUG_UART_8250 is not set |
||||
# CONFIG_DEBUG_USER is not set |
||||
CONFIG_DTC=y |
||||
CONFIG_EDAC_ATOMIC_SCRUB=y |
||||
CONFIG_EDAC_SUPPORT=y |
||||
CONFIG_EXT4_FS=y |
||||
CONFIG_FIX_EARLYCON_MEM=y |
||||
CONFIG_FRAME_POINTER=y |
||||
CONFIG_FS_MBCACHE=y |
||||
CONFIG_GENERIC_ALLOCATOR=y |
||||
CONFIG_GENERIC_BUG=y |
||||
CONFIG_GENERIC_CLOCKEVENTS=y |
||||
CONFIG_GENERIC_CLOCKEVENTS_BROADCAST=y |
||||
CONFIG_GENERIC_IDLE_POLL_SETUP=y |
||||
CONFIG_GENERIC_IO=y |
||||
CONFIG_GENERIC_IRQ_SHOW=y |
||||
CONFIG_GENERIC_IRQ_SHOW_LEVEL=y |
||||
CONFIG_GENERIC_PCI_IOMAP=y |
||||
CONFIG_GENERIC_SCHED_CLOCK=y |
||||
CONFIG_GENERIC_SMP_IDLE_THREAD=y |
||||
CONFIG_GENERIC_STRNCPY_FROM_USER=y |
||||
CONFIG_GENERIC_STRNLEN_USER=y |
||||
CONFIG_GPIOLIB=y |
||||
CONFIG_GPIOLIB_IRQCHIP=y |
||||
CONFIG_GPIO_DEVRES=y |
||||
CONFIG_GPIO_PL061=y |
||||
CONFIG_HANDLE_DOMAIN_IRQ=y |
||||
CONFIG_HARDIRQS_SW_RESEND=y |
||||
CONFIG_HAS_DMA=y |
||||
CONFIG_HAS_IOMEM=y |
||||
CONFIG_HAS_IOPORT_MAP=y |
||||
# CONFIG_HAVE_64BIT_ALIGNED_ACCESS is not set |
||||
CONFIG_HAVE_ARCH_AUDITSYSCALL=y |
||||
CONFIG_HAVE_ARCH_BITREVERSE=y |
||||
CONFIG_HAVE_ARCH_JUMP_LABEL=y |
||||
CONFIG_HAVE_ARCH_KGDB=y |
||||
CONFIG_HAVE_ARCH_PFN_VALID=y |
||||
CONFIG_HAVE_ARCH_SECCOMP_FILTER=y |
||||
CONFIG_HAVE_ARCH_TRACEHOOK=y |
||||
CONFIG_HAVE_ARM_ARCH_TIMER=y |
||||
# CONFIG_HAVE_BOOTMEM_INFO_NODE is not set |
||||
CONFIG_HAVE_BPF_JIT=y |
||||
CONFIG_HAVE_CC_STACKPROTECTOR=y |
||||
CONFIG_HAVE_CLK=y |
||||
CONFIG_HAVE_CLK_PREPARE=y |
||||
CONFIG_HAVE_CONTEXT_TRACKING=y |
||||
CONFIG_HAVE_C_RECORDMCOUNT=y |
||||
CONFIG_HAVE_DEBUG_KMEMLEAK=y |
||||
CONFIG_HAVE_DMA_API_DEBUG=y |
||||
CONFIG_HAVE_DMA_ATTRS=y |
||||
CONFIG_HAVE_DMA_CONTIGUOUS=y |
||||
CONFIG_HAVE_DYNAMIC_FTRACE=y |
||||
CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y |
||||
CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y |
||||
CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y |
||||
CONFIG_HAVE_FUNCTION_TRACER=y |
||||
CONFIG_HAVE_GENERIC_DMA_COHERENT=y |
||||
CONFIG_HAVE_IDE=y |
||||
CONFIG_HAVE_IRQ_TIME_ACCOUNTING=y |
||||
CONFIG_HAVE_MEMBLOCK=y |
||||
CONFIG_HAVE_MOD_ARCH_SPECIFIC=y |
||||
CONFIG_HAVE_NET_DSA=y |
||||
CONFIG_HAVE_OPROFILE=y |
||||
CONFIG_HAVE_OPTPROBES=y |
||||
CONFIG_HAVE_PERF_EVENTS=y |
||||
CONFIG_HAVE_PERF_REGS=y |
||||
CONFIG_HAVE_PERF_USER_STACK_DUMP=y |
||||
CONFIG_HAVE_PROC_CPU=y |
||||
CONFIG_HAVE_REGS_AND_STACK_ACCESS_API=y |
||||
CONFIG_HAVE_SMP=y |
||||
CONFIG_HAVE_SYSCALL_TRACEPOINTS=y |
||||
CONFIG_HAVE_UID16=y |
||||
CONFIG_HAVE_VIRT_CPU_ACCOUNTING_GEN=y |
||||
CONFIG_HOTPLUG_CPU=y |
||||
CONFIG_HVC_DRIVER=y |
||||
CONFIG_HZ_FIXED=0 |
||||
CONFIG_HZ_PERIODIC=y |
||||
CONFIG_INITRAMFS_SOURCE="" |
||||
CONFIG_IOMMU_HELPER=y |
||||
CONFIG_IRQCHIP=y |
||||
CONFIG_IRQ_DOMAIN=y |
||||
CONFIG_IRQ_DOMAIN_HIERARCHY=y |
||||
CONFIG_IRQ_FORCED_THREADING=y |
||||
CONFIG_IRQ_WORK=y |
||||
CONFIG_JBD2=y |
||||
CONFIG_LIBFDT=y |
||||
CONFIG_LOCK_SPIN_ON_OWNER=y |
||||
CONFIG_MEMORY_BALLOON=y |
||||
CONFIG_MIGHT_HAVE_CACHE_L2X0=y |
||||
CONFIG_MIGHT_HAVE_PCI=y |
||||
CONFIG_MODULES_USE_ELF_REL=y |
||||
CONFIG_MULTI_IRQ_HANDLER=y |
||||
CONFIG_MUTEX_SPIN_ON_OWNER=y |
||||
CONFIG_NEED_DMA_MAP_STATE=y |
||||
CONFIG_NEON=y |
||||
CONFIG_NET_9P=y |
||||
# CONFIG_NET_9P_DEBUG is not set |
||||
CONFIG_NET_9P_VIRTIO=y |
||||
CONFIG_NET_FLOW_LIMIT=y |
||||
CONFIG_NO_BOOTMEM=y |
||||
CONFIG_NR_CPUS=4 |
||||
CONFIG_OF=y |
||||
CONFIG_OF_ADDRESS=y |
||||
CONFIG_OF_ADDRESS_PCI=y |
||||
CONFIG_OF_EARLY_FLATTREE=y |
||||
CONFIG_OF_FLATTREE=y |
||||
CONFIG_OF_GPIO=y |
||||
CONFIG_OF_IRQ=y |
||||
CONFIG_OF_MTD=y |
||||
CONFIG_OF_NET=y |
||||
CONFIG_OF_PCI=y |
||||
CONFIG_OF_PCI_IRQ=y |
||||
CONFIG_OF_RESERVED_MEM=y |
||||
CONFIG_OLD_SIGACTION=y |
||||
CONFIG_OLD_SIGSUSPEND3=y |
||||
CONFIG_OUTER_CACHE=y |
||||
CONFIG_OUTER_CACHE_SYNC=y |
||||
CONFIG_PADATA=y |
||||
CONFIG_PAGE_OFFSET=0xC0000000 |
||||
CONFIG_PCI=y |
||||
# CONFIG_PCI_DOMAINS_GENERIC is not set |
||||
CONFIG_PCI_HOST_GENERIC=y |
||||
CONFIG_PERF_USE_VMALLOC=y |
||||
CONFIG_PGTABLE_LEVELS=2 |
||||
# CONFIG_PL310_ERRATA_588369 is not set |
||||
# CONFIG_PL310_ERRATA_727915 is not set |
||||
# CONFIG_PL310_ERRATA_753970 is not set |
||||
# CONFIG_PL310_ERRATA_769419 is not set |
||||
CONFIG_RATIONAL=y |
||||
CONFIG_RCU_STALL_COMMON=y |
||||
CONFIG_RFS_ACCEL=y |
||||
CONFIG_RPS=y |
||||
CONFIG_RTC_CLASS=y |
||||
CONFIG_RTC_DRV_PL031=y |
||||
CONFIG_RWSEM_SPIN_ON_OWNER=y |
||||
CONFIG_RWSEM_XCHGADD_ALGORITHM=y |
||||
CONFIG_SCHED_HRTICK=y |
||||
# CONFIG_SCHED_INFO is not set |
||||
CONFIG_SCSI=y |
||||
CONFIG_SCSI_VIRTIO=y |
||||
CONFIG_SERIAL_8250_FSL=y |
||||
# CONFIG_SERIAL_AMBA_PL010 is not set |
||||
CONFIG_SERIAL_AMBA_PL011=y |
||||
CONFIG_SERIAL_AMBA_PL011_CONSOLE=y |
||||
CONFIG_SERIAL_OF_PLATFORM=y |
||||
CONFIG_SMP=y |
||||
CONFIG_SMP_ON_UP=y |
||||
CONFIG_SPARSE_IRQ=y |
||||
CONFIG_SRCU=y |
||||
CONFIG_SWIOTLB=y |
||||
CONFIG_SWP_EMULATE=y |
||||
CONFIG_SYS_SUPPORTS_APM_EMULATION=y |
||||
# CONFIG_THUMB2_KERNEL is not set |
||||
CONFIG_TICK_CPU_ACCOUNTING=y |
||||
CONFIG_TREE_RCU=y |
||||
CONFIG_UNCOMPRESS_INCLUDE="debug/uncompress.h" |
||||
CONFIG_USE_OF=y |
||||
CONFIG_VECTORS_BASE=0xffff0000 |
||||
CONFIG_VFP=y |
||||
CONFIG_VFPv3=y |
||||
CONFIG_VIRTIO=y |
||||
CONFIG_VIRTIO_BALLOON=y |
||||
CONFIG_VIRTIO_BLK=y |
||||
CONFIG_VIRTIO_CONSOLE=y |
||||
CONFIG_VIRTIO_MMIO=y |
||||
# CONFIG_VIRTIO_MMIO_CMDLINE_DEVICES is not set |
||||
CONFIG_VIRTIO_NET=y |
||||
CONFIG_VIRTIO_PCI=y |
||||
CONFIG_VIRTIO_PCI_LEGACY=y |
||||
CONFIG_XPS=y |
||||
CONFIG_XZ_DEC_ARM=y |
||||
CONFIG_XZ_DEC_BCJ=y |
||||
CONFIG_ZBOOT_ROM_BSS=0 |
||||
CONFIG_ZBOOT_ROM_TEXT=0 |
||||
CONFIG_ZONE_DMA_FLAG=0 |
@ -0,0 +1,24 @@ |
||||
#
|
||||
# Copyright (C) 2016 Yousong Zhou <yszhou4tech@gmail.com>
|
||||
#
|
||||
# This is free software, licensed under the GNU General Public License v2.
|
||||
# See /LICENSE for more information.
|
||||
#
|
||||
include $(TOPDIR)/rules.mk |
||||
include $(INCLUDE_DIR)/image.mk |
||||
|
||||
define Image/BuildKernel |
||||
cp $(KDIR)/$(KERNELNAME) $(BIN_DIR)/$(IMG_PREFIX)-$(KERNELNAME)
|
||||
endef |
||||
|
||||
define Image/Build/Initramfs |
||||
cp $(KDIR)/$(KERNELNAME)-initramfs $(BIN_DIR)/$(IMG_PREFIX)-$(KERNELNAME)-initramfs
|
||||
endef |
||||
|
||||
define Image/Build |
||||
$(call Image/Build/$(1))
|
||||
dd if=$(KDIR)/root.$(1) bs=128k conv=sync | \
|
||||
gzip -9n >$(BIN_DIR)/$(IMG_PREFIX)-root.$(1).gz
|
||||
endef |
||||
|
||||
$(eval $(call BuildImage)) |
Loading…
Reference in new issue