当前位置:首页>Linux>用QEMU启动一个ARM64的Linux系统

用QEMU启动一个ARM64的Linux系统

  • 2026-10-11 07:29:38
用QEMU启动一个ARM64的Linux系统
一、ARM64 Linux系统的构建
从buildroot里面可以构建一个ARM64的Linux系统,步骤如下
# 1. 装依赖sudo apt updatesudo apt install build-essential git unzip wget libncurses-dev# 2. 下 Buildroot 源码(2024.11 或最新)git clone git://git.buildroot.net/buildrootcd buildroot# 3. 加载 aarch64 virt 配置make qemu_aarch64_virt_defconfig# 4. 编译(第一次会下内核/工具链,约 10–30 分钟)make -j$(nproc)#5. 测试运行output/images/start-qemu.sh
生成的output内容如下:
buildroot-2024.02/output/images$ du -h *12M     Image8.3M    rootfs.ext20       rootfs.ext44.0K    start-qemu.shbuildroot-2024.02/output/images# ls -ltotal 19876-rw-r--r-- 1 test test 11907584  5月 27 01:59 Image-rw-r--r-- 1 test test 62914560  5月 27 22:05 rootfs.ext2lrwxrwxrwx 1 test test       11  5月 27 01:59 rootfs.ext4 -> rootfs.ext2-rwxr-xr-x 1 test test      833  5月 27 17:50 start-qemu.sh
其中start-qemu.sh就是启动qemu,运行效果如下:
实际运行的qemu命令如下,SMP是两个CPU:
qemu-system-aarch64 -M virt -cpu cortex-a53 -nographic \          -smp 2 -kernel Image           -append rootwait root=/dev/vda console=ttyAMA0 \          -netdev user,id=eth0 \          -device virtio-net-device,netdev=eth0 \          -drive file=rootfs.ext4,if=none,format=raw,id=hd0 \          -device virtio-blk-device,drive=hd0
其中-M virt,是选择qemu实现的"virt" (对应一个machine)的仿真,在这个仿真里面,实现了一些列的系统和设备,可以在qemu的monitor环境查看(Ctral a c切换到monitor):
二、系统大小的分析
在这个系统里面,可执行程序就一个busybox,但是它包打天下,所有的命令都是busybox。除此之外,也包括一些可执行的启动脚本:
# find . -type f -executable./bin/busybox./usr/share/udhcpc/default.script./lib/libatomic.so.1.2.0./lib/librt.so.1./lib/ld-linux-aarch64.so.1./lib/libdl.so.2./lib/libnss_files.so.2./lib/libm.so.6./lib/libnss_dns.so.2./lib/libpthread.so.0./lib/libmvec.so.1./lib/libanl.so.1./lib/libcrypt.so.1./lib/libutil.so.1./lib/libresolv.so.2./lib/libc.so.6./etc/network/nfs_check./etc/network/if-pre-up.d/wait_iface./etc/init.d/S02sysctl./etc/init.d/S01syslogd./etc/init.d/S40network./etc/init.d/S02klogd./etc/init.d/rcK./etc/init.d/S01seedrng./etc/init.d/rcS
整个rootfs 3.8M,其中libc库1.5M,busybox 800K:
# du -s /3846    /# du /lib/libclibc.so.6      libcrypt.so.1# du /lib/libc.so.6  /bin/busybox1563    /lib/libc.so.6801     /bin/busybox
Buildroot构建出来的rootfs.ext2,du显示8.3M,而ls显示是60M,因为是文件系统打包,中间有空洞以及文件系统元数据信息。这个rootfs.ext2可以直接用loop设备mount到主机系统中:
output/images# mount -o loop rootfs.ext2 /mnt/tmpoutput/images# ls /mnt/tmpbin  dev  etc  lib  lib64  linuxrc  lost+found  media  mnt  opt  proc  root  run  sbin  sys  tmp  usr  varoutput/images# du -h -s /mnt/tmp3.8M    /mnt/tmp
可以超看到,展开后里面的真实的文件内容总和3.8M,和实际运行时候du /出来的结果吻合。
三、系统构建的配置
配置qemu_aarch64_virt_defconfig内容如下:
buildroot-2024.02/configs$ less qemu_aarch64_virt_defconfig# ArchitectureBR2_aarch64=yBR2_cortex_a53=y# SystemBR2_SYSTEM_DHCP="eth0"# FilesystemBR2_TARGET_ROOTFS_EXT2=yBR2_TARGET_ROOTFS_EXT2_4=y# BR2_TARGET_ROOTFS_TAR is not set# ImageBR2_ROOTFS_POST_IMAGE_SCRIPT="board/qemu/post-image.sh"BR2_ROOTFS_POST_SCRIPT_ARGS="$(BR2_DEFCONFIG)"# Linux headers same as kernelBR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_6_1=y# KernelBR2_LINUX_KERNEL=yBR2_LINUX_KERNEL_CUSTOM_VERSION=yBR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.1.44"BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=yBR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/qemu/aarch64-virt/linux.config"BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y# host-qemu for gitlab testingBR2_PACKAGE_HOST_QEMU=yBR2_PACKAGE_HOST_QEMU_SYSTEM_MODE=y
在make qemu_aarch64_virt_defconfig的时候根据这个config,生成根目录下的.config,其中和ARM64相关的配置:
BR2_ARCH_IS_64=yBR2_USE_MMU=yBR2_aarch64=yBR2_ARCH_HAS_TOOLCHAIN_BUILDROOT=yBR2_ARCH="aarch64"BR2_NORMALIZED_ARCH="arm64"BR2_ENDIAN="LITTLE"BR2_GCC_TARGET_ABI="lp64"BR2_GCC_TARGET_CPU="cortex-a53"BR2_BINFMT_SUPPORTS_SHARED=yBR2_READELF_ARCH_NAME="AArch64"BR2_ARM_CPU_HAS_FPU=yBR2_ARM_CPU_HAS_VFPV2=yBR2_ARM_CPU_HAS_VFPV3=yBR2_ARM_CPU_HAS_VFPV4=yBR2_ARM_CPU_HAS_FP_ARMV8=yBR2_ARM_CPU_ARMV8A=yBR2_cortex_a53=yBR2_ARM_FPU_FP_ARMV8=yBR2_ARM64_PAGE_SIZE_4K=yBR2_ARM64_PAGE_SIZE="4K"BR2_BINFMT_ELF=y
Linux内核相关的配置:
# Kernel#BR2_LINUX_KERNEL=yBR2_LINUX_KERNEL_CUSTOM_VERSION=yBR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.1.44"BR2_LINUX_KERNEL_VERSION="6.1.44"BR2_LINUX_KERNEL_PATCH=""BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=yBR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/qemu/aarch64-virt/linux.config"BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES=""BR2_LINUX_KERNEL_CUSTOM_LOGO_PATH=""BR2_LINUX_KERNEL_IMAGE=y# BR2_LINUX_KERNEL_IMAGEGZ is not set# BR2_LINUX_KERNEL_VMLINUX is not setBR2_LINUX_KERNEL_GZIP=yBR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y
其中指向的board/qemu/aarch64-virt/linux.config只包含了少量的内核配置:
CONFIG_SYSVIPC=yCONFIG_POSIX_MQUEUE=yCONFIG_NO_HZ_IDLE=yCONFIG_HIGH_RES_TIMERS=yCONFIG_TASKSTATS=yCONFIG_MEMCG=yCONFIG_BLK_CGROUP=yCONFIG_CPUSETS=yCONFIG_CGROUP_DEVICE=yCONFIG_CGROUP_CPUACCT=yCONFIG_SCHED_AUTOGROUP=yCONFIG_PROFILING=yCONFIG_ARCH_VEXPRESS=yCONFIG_COMPAT=yCONFIG_ACPI=yCONFIG_MODULES=yCONFIG_MODULE_UNLOAD=yCONFIG_BLK_DEV_BSGLIB=yCONFIG_BINFMT_MISC=yCONFIG_TRANSPARENT_HUGEPAGE=yCONFIG_NET=yCONFIG_PACKET=yCONFIG_PACKET_DIAG=yCONFIG_UNIX=yCONFIG_NET_KEY=yCONFIG_INET=yCONFIG_IP_MULTICAST=yCONFIG_IP_ADVANCED_ROUTER=yCONFIG_BRIDGE=mCONFIG_NET_SCHED=yCONFIG_VSOCKETS=yCONFIG_PCI=yCONFIG_PCI_HOST_GENERIC=yCONFIG_DEVTMPFS=yCONFIG_DEVTMPFS_MOUNT=yCONFIG_FW_CFG_SYSFS=yCONFIG_FW_CFG_SYSFS_CMDLINE=yCONFIG_VIRTIO_BLK=yCONFIG_BLK_DEV_SD=yCONFIG_CHR_DEV_SG=yCONFIG_SCSI_CONSTANTS=yCONFIG_SCSI_LOGGING=yCONFIG_SCSI_SCAN_ASYNC=yCONFIG_SCSI_VIRTIO=yCONFIG_ATA=yCONFIG_NETDEVICES=yCONFIG_DUMMY=yCONFIG_MACVLAN=yCONFIG_VIRTIO_NET=yCONFIG_NLMON=yCONFIG_INPUT_EVDEV=yCONFIG_SERIAL_AMBA_PL011=yCONFIG_SERIAL_AMBA_PL011_CONSOLE=yCONFIG_VIRTIO_CONSOLE=yCONFIG_HW_RANDOM=yCONFIG_HW_RANDOM_VIRTIO=yCONFIG_TCG_TPM=yCONFIG_TCG_TIS=yCONFIG_DRM=yCONFIG_DRM_VIRTIO_GPU=yCONFIG_FB=yCONFIG_RTC_CLASS=yCONFIG_RTC_DRV_PL031=yCONFIG_VIRTIO_PCI=yCONFIG_VIRTIO_INPUT=yCONFIG_VIRTIO_MMIO=yCONFIG_VIRTIO_MMIO_CMDLINE_DEVICES=yCONFIG_MAILBOX=yCONFIG_PL320_MBOX=yCONFIG_ARM_SMMU_V3=yCONFIG_EXT4_FS=yCONFIG_FUSE_FS=yCONFIG_VIRTIO_FS=yCONFIG_OVERLAY_FS=yCONFIG_TMPFS=yCONFIG_TMPFS_POSIX_ACL=y
它不是最后完整的内核的.config,而是精简版,填写了非默认项。它首先拷贝到output/build/linux-6.1.44目录,并命名为.config,然后在make ARCH=arm64 olddefconfig的时候和arch/arm64/configs/defconfig整合在一起形成内核最后编译的.config。
四、系统启动过程
4.1 根文件系统的装载
Linux内核启动的参数如下:
# cat /proc/cmdlinerootwait root=/dev/vda console=ttyAMA0# ls -l /dev/vdabrw-------    1 root     root      254,   0 Jan  1  1970 /dev/vda# mount/dev/root on / type ext4 (rw,relatime)
在内核启动dmesg中看到,先挂载了/,然后才执行init过程:
EXT4-fs (vda): INFO: recovery required on readonly filesystemEXT4-fs (vda): write access will be enabled during recoveryEXT4-fs (vda): orphan cleanup on readonly fsEXT4-fs (vda): recovery completeEXT4-fs (vda): mounted filesystem with ordered data mode. Quota mode: disabled.VFS: Mounted root (ext4 filesystem) readonlyon device 254:0.devtmpfs: mountedFreeing unused kernel memory: 1280KRun /sbin/init as init processEXT4-fs (vda): re-mounted. Quota mode: disabled.
因为挂载/没有initramfs的过程,所以执行路径是内核原生传统流程,这也是为什么内核cmdline是/dev/vda,而在mount命令中显示为/dev/root:
// init/do_mounts.c//__setup 把 root=/dev/vda 存到 saved_root_name。static int __initroot_dev_setup(char *str){    strlcpy(saved_root_name, str, sizeof(saved_root_name));    return 1;}__setup("root=", root_dev_setup);dev_t ROOT_DEV;void __initprepare_namespace(void){    ...    if (saved_root_name[0])        // "dev/vda" → 设备号, 把字符串 /dev/vda 转成 dev_t(主 / 次设备号)        ROOT_DEV = parse_root_device(saved_root_name);    ...}static void __initmount_block_root(char *root_device_name){     //create_dev是调用mknod    int err = create_dev("/dev/root", ROOT_DEV);    mount_root_generic("/dev/root", root_device_name, root_mountflags);}
4.2  init进程的过程
1号进程init的功能是busybox实现,主要是按照/etc/inittab定义的流程执行:
# Note: BusyBox init doesn't support runlevels.  The runlevels field is# completely ignored by BusyBox init. If you want runlevels, use# sysvinit.## Format for each entry: <id>:<runlevels>:<action>:<process>## id        == tty to run on, or empty for /dev/console# runlevels == ignored# action    == one of sysinit, respawn, askfirst, wait, and once# process   == program to run# Startup the system::sysinit:/bin/mount -t proc proc /proc::sysinit:/bin/mount -o remount,rw /::sysinit:/bin/mkdir -p /dev/pts /dev/shm::sysinit:/bin/mount -a::sysinit:/bin/mkdir -p /run/lock/subsys::sysinit:/sbin/swapon -anull::sysinit:/bin/ln -sf /proc/self/fd /dev/fdnull::sysinit:/bin/ln -sf /proc/self/fd/0 /dev/stdinnull::sysinit:/bin/ln -sf /proc/self/fd/1 /dev/stdoutnull::sysinit:/bin/ln -sf /proc/self/fd/2 /dev/stderr::sysinit:/bin/hostname -F /etc/hostname# now run any rc scripts::sysinit:/etc/init.d/rcS# Put a getty on the serial portconsole::respawn:/sbin/getty -L  console 0 vt100 # GENERIC_SERIAL# Stuff to do for the 3-finger salute#::ctrlaltdel:/sbin/reboot# Stuff to do before rebooting::shutdown:/etc/init.d/rcK::shutdown:/sbin/swapoff -a::shutdown:/bin/umount -a -r
rcS就是调用/etc/init.d下面的脚本:
# ls /etc/init.d/S01seedrng  S02klogd    S40network  rcSS01syslogd  S02sysctl   rcK# cat rcS#!/bin/sh# Start all init scripts in /etc/init.d# executing them in numerical order.#for i in /etc/init.d/S??* ;do     # Ignore dangling symlinks (if any).     [ ! -f "$i" ] && continue     case "$i" in        *.sh)            # Source shell script for speed.            (                trap - INT QUIT TSTP                set start                . $i            )            ;;        *)            # No sh extension, so fork subprocess.            $i start            ;;    esacdone
附录1:系统的一些细节
# ps -aPID   USER     COMMAND    1 root     init    2 root     [kthreadd]    3 root     [rcu_gp]    4 root     [rcu_par_gp]    5 root     [slub_flushwq]    6 root     [netns]    7 root     [kworker/0:0-rcu]    8 root     [kworker/0:0H-ev]    9 root     [kworker/u4:0-ev]   10 root     [mm_percpu_wq]   11 root     [ksoftirqd/0]   12 root     [rcu_sched]   13 root     [migration/0]   14 root     [cpuhp/0]   15 root     [cpuhp/1]   16 root     [migration/1]   17 root     [ksoftirqd/1]   18 root     [kworker/1:0-eve]   19 root     [kworker/1:0H-kb]   20 root     [kdevtmpfs]   21 root     [inet_frag_wq]   23 root     [oom_reaper]   24 root     [writeback]   25 root     [kcompactd0]   26 root     [kblockd]   27 root     [blkcg_punt_bio]   28 root     [tpm_dev_wq]   29 root     [ata_sff]   30 root     [kworker/1:1-eve]   31 root     [kworker/0:1H-kb]   32 root     [kswapd0]   34 root     [mld]   35 root     [ipv6_addrconf]   37 root     [jbd2/vda-8]   38 root     [ext4-rsv-conver]   40 root     [kworker/1:1H-kb]   58 root     /sbin/syslogd -n   62 root     /sbin/klogd -n  102 root     udhcpc -t1 -A3 -b -R -O search -O staticroutes -p /var/run/udhcp  104 root     -sh  106 root     [kworker/u4:2-ev]  108 root     [kworker/0:2-eve]  124 root     [kworker/u4:1-ev]  127 root     ps -a# df -hFilesystem                Size      Used Available Use% Mounted on/dev/root                51.1M      3.8M     43.1M   8% /devtmpfs                 56.3M         0     56.3M   0% /devtmpfs                    56.9M         0     56.9M   0% /dev/shmtmpfs                    56.9M     20.0K     56.9M   0% /tmptmpfs                    56.9M     20.0K     56.9M   0% /run# free              total        used        free      shared  buff/cache   availableMem:         116520       11916      100836          40        3768      100672Swap:             0           0           0# mount/dev/root on / type ext4 (rw,relatime)devtmpfs on /dev type devtmpfs (rw,relatime,size=57620k,nr_inodes=14405,mode=755)proc on /proc type proc (rw,relatime)devpts on /dev/pts type devpts (rw,relatime,gid=5,mode=620,ptmxmode=666)tmpfs on /dev/shm type tmpfs (rw,relatime,mode=777)tmpfs on /tmp type tmpfs (rw,relatime)tmpfs on /run type tmpfs (rw,nosuid,nodev,relatime,mode=755)sysfs on /sys type sysfs (rw,relatime)# lspci00:00.0 Class 0600: 1b36:0008# lspci -v00:00.0 Class 0600: 1b36:0008# lsusblsusb: /sys/bus/usb/devices: No such file or directory# fdisk -lDisk /dev/vda: 60 MB, 62914560 bytes, 122880 sectors121 cylinders, 16 heads, 63 sectors/trackUnits: sectors of 1 * 512 = 512 bytesDisk /dev/vda doesn't contain a valid partition table# cat /proc/cpuinfoprocessor       : 0BogoMIPS        : 125.00Features        : fp asimd evtstrm aes pmull sha1 sha2 crc32 cpuidCPU implementer : 0x41CPU architecture: 8CPU variant     : 0x0CPU part        : 0xd03CPU revision    : 4processor       : 1BogoMIPS        : 125.00Features        : fp asimd evtstrm aes pmull sha1 sha2 crc32 cpuidCPU implementer : 0x41CPU architecture: 8CPU variant     : 0x0CPU part        : 0xd03CPU revision    : 4# cat /proc/meminfoMemTotal:         116520 kBMemFree:          100724 kBMemAvailable:     100572 kBBuffers:             292 kBCached:             2660 kBSwapCached:            0 kBActive:             2732 kBInactive:            816 kBActive(anon):         40 kBInactive(anon):      596 kBActive(file):       2692 kBInactive(file):      220 kBUnevictable:           0 kBMlocked:               0 kBSwapTotal:             0 kBSwapFree:              0 kBDirty:                 8 kBWriteback:             0 kBAnonPages:           668 kBMapped:             1996 kBShmem:                40 kBKReclaimable:        836 kBSlab:               7144 kBSReclaimable:        836 kBSUnreclaim:         6308 kBKernelStack:         720 kBPageTables:          172 kBSecPageTables:         0 kBNFS_Unstable:          0 kBBounce:                0 kBWritebackTmp:          0 kBCommitLimit:       58260 kBCommitted_AS:       2284 kBVmallocTotal:   259653632 kBVmallocUsed:         812 kBVmallocChunk:          0 kBPercpu:              144 kBAnonHugePages:         0 kBShmemHugePages:        0 kBShmemPmdMapped:        0 kBFileHugePages:         0 kBFilePmdMapped:         0 kB
附录2:启动过程
output/images$ ./start-qemu.shBooting Linux on physical CPU 0x0000000000 [0x410fd034]Linux version 6.1.44 (syuan3@uvstore) (aarch64-buildroot-linux-gnu-gcc.br_real (Buildroot 2024.02) 12.3.0, GNU ld (GNU Binutils) 2.40) #1 SMP Wed May 27 01:59:20 CST 2026random: crng init doneMachine model: linux,dummy-virtefi: UEFI not found.Zone ranges:  DMA      [mem 0x0000000040000000-0x0000000047ffffff]  DMA32    empty  Normal   emptyMovable zone start for each nodeEarly memory node ranges  node   0: [mem 0x0000000040000000-0x0000000047ffffff]Initmem setup node 0 [mem 0x0000000040000000-0x0000000047ffffff]psci: probing for conduit method from DT.psci: PSCIv1.1 detected in firmware.psci: Using standard PSCI v0.2 function IDspsci: Trusted OS migration not requiredpsci: SMC Calling Convention v1.0percpu: Embedded 18 pages/cpu s33896 r8192 d31640 u73728Detected VIPT I-cache on CPU0CPU features: detected: ARM erratum 843419CPU features: detected: ARM erratum 845719alternatives: applying boot alternativesBuilt 1 zonelists, mobility grouping on.  Total pages: 32256Kernel command line: rootwait root=/dev/vda console=ttyAMA0Dentry cache hash table entries: 16384 (order: 5, 131072 bytes, linear)Inode-cache hash table entries: 8192 (order: 4, 65536 bytes, linear)mem auto-init: stack:all(zero), heap alloc:off, heap free:offMemory: 115096K/131072K available (7552K kernel code, 876K rwdata, 1816K rodata, 1280K init, 436K bss, 15976K reserved, 0K cma-reserved)SLUB: HWalign=64, Order=0-3, MinObjects=0, CPUs=4, Nodes=1rcu: Hierarchical RCU implementation.rcu:    RCU restricting CPUs from NR_CPUS=256 to nr_cpu_ids=4.rcu: RCU calculated value of scheduler-enlistment delay is 25 jiffies.rcu: Adjusting geometry for rcu_fanout_leaf=16, nr_cpu_ids=4NR_IRQS: 64, nr_irqs: 64, preallocated irqs: 0Root IRQ handler: gic_handle_irqGICv2m: range[mem 0x08020000-0x08020fff], SPI[80:143]rcu: srcu_init: Setting srcu_struct sizes based on contention.arch_timer: cp15 timer(s) running at 62.50MHz (virt).clocksource: arch_sys_counter: mask: 0x1ffffffffffffff max_cycles: 0x1cd42e208c, max_idle_ns: 881590405314 nssched_clock: 57 bits at 63MHz, resolution 16ns, wraps every 4398046511096nsConsole: colour dummy device 80x25Calibrating delay loop (skipped), value calculated using timer frequency.. 125.00 BogoMIPS (lpj=250000)pid_max: default: 32768 minimum: 301Mount-cache hash table entries: 512 (order: 0, 4096 bytes, linear)Mountpoint-cache hash table entries: 512 (order: 0, 4096 bytes, linear)cacheinfo: Unable to detect cache hierarchy for CPU 0rcu: Hierarchical SRCU implementation.rcu:    Max phase no-delay instances is 1000.EFI services will not be available.smp: Bringing up secondary CPUs ...Detected VIPT I-cache on CPU1cacheinfo: Unable to detect cache hierarchy for CPU 1CPU1: Booted secondary processor 0x0000000001 [0x410fd034]Detected VIPT I-cache on CPU2cacheinfo: Unable to detect cache hierarchy for CPU 2CPU2: Booted secondary processor 0x0000000002 [0x410fd034]Detected VIPT I-cache on CPU3cacheinfo: Unable to detect cache hierarchy for CPU 3CPU3: Booted secondary processor 0x0000000003 [0x410fd034]smp: Brought up 1 node, 4 CPUsSMP: Total of 4 processors activated.CPU features: detected: 32-bit EL0 SupportCPU features: detected: CRC32 instructionsCPU: All CPU(s) started at EL1alternatives: applying system-wide alternativesdevtmpfs: initializedclocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 7645041785100000 nsfutex hash table entries: 1024 (order: 4, 65536 bytes, linear)DMI not present or invalid.NET: Registered PF_NETLINK/PF_ROUTE protocol familyDMA: preallocated 128 KiB GFP_KERNEL pool for atomic allocationsDMA: preallocated 128 KiB GFP_KERNEL|GFP_DMA pool for atomic allocationsDMA: preallocated 128 KiB GFP_KERNEL|GFP_DMA32 pool for atomic allocationsthermal_sys: Registered thermal governor 'step_wise'cpuidle: using governor menuhw-breakpoint: found 6 breakpoint and 4 watchpoint registers.ASID allocator initialised with 65536 entriesSerial: AMBA PL011 UART driver9000000.pl011: ttyAMA0 at MMIO 0x9000000 (irq = 13, base_baud = 0) is a PL011 rev1printk: console [ttyAMA0] enabledACPI: Interpreter disabled.iommu: Default domain type: Translatediommu: DMA domain TLB invalidation policy: strict modeSCSI subsystem initializedpps_core: LinuxPPS API ver. 1 registeredpps_core: Software ver. 5.3.6 - Copyright 2005-2007 Rodolfo Giometti <giometti@linux.it>PTP clock support registeredvgaarb: loadedclocksource: Switched to clocksource arch_sys_counterpnp: PnP ACPI: disabledNET: Registered PF_INET protocol familyIP idents hash table entries: 2048 (order: 2, 16384 bytes, linear)tcp_listen_portaddr_hash hash table entries: 256 (order: 0, 4096 bytes, linear)Table-perturb hash table entries: 65536 (order: 6, 262144 bytes, linear)TCP established hash table entries: 1024 (order: 1, 8192 bytes, linear)TCP bind hash table entries: 1024 (order: 3, 32768 bytes, linear)TCP: Hash tables configured (established 1024 bind 1024)UDP hash table entries: 256 (order: 1, 8192 bytes, linear)UDP-Lite hash table entries: 256 (order: 1, 8192 bytes, linear)NET: Registered PF_UNIX/PF_LOCAL protocol familyPCI: CLS 0 bytes, default 64hw perfevents: enabled with armv8_pmuv3 PMU driver, 7 counters availableworkingset: timestamp_bits=46 max_order=15 bucket_order=0fuse: init (API version 7.37)Block layer SCSI generic (bsg) driver version 0.4 loaded (major 249)io scheduler mq-deadline registeredio scheduler kyber registeredpci-host-generic 4010000000.pcie: host bridge /pcie@10000000 ranges:pci-host-generic 4010000000.pcie:       IO 0x003eff0000..0x003effffff -> 0x0000000000pci-host-generic 4010000000.pcie:      MEM 0x0010000000..0x003efeffff -> 0x0010000000pci-host-generic 4010000000.pcie:      MEM 0x8000000000..0xffffffffff -> 0x8000000000pci-host-generic 4010000000.pcie: Memory resource size exceeds max for 32 bitspci-host-generic 4010000000.pcie: ECAM at [mem 0x4010000000-0x401fffffff] for [bus 00-ff]pci-host-generic 4010000000.pcie: PCI host bridge to bus 0000:00pci_bus 0000:00: root bus resource [bus 00-ff]pci_bus 0000:00: root bus resource [io  0x0000-0xffff]pci_bus 0000:00: root bus resource [mem 0x10000000-0x3efeffff]pci_bus 0000:00: root bus resource [mem 0x8000000000-0xffffffffff]pci 0000:00:00.0: [1b36:0008] type 00 class 0x060000cacheinfo: Unable to detect cache hierarchy for CPU 0virtio_blk virtio0: 1/0/0 default/read/poll queuesvirtio_blk virtio0: [vda] 122880 512-byte logical blocks (62.9 MB/60.0 MiB)rtc-pl031 9010000.pl031: registered as rtc0rtc-pl031 9010000.pl031: setting system clock to 2026-05-27T09:53:50 UTC (1779875630)NET: Registered PF_INET6 protocol familySegment Routing with IPv6In-situ OAM (IOAM) with IPv6sit: IPv6, IPv4 and MPLS over IPv4 tunneling driverNET: Registered PF_PACKET protocol familyNET: Registered PF_KEY protocol familyNET: Registered PF_VSOCK protocol familyregistered taskstats version 1EXT4-fs (vda): INFO: recovery required on readonly filesystemEXT4-fs (vda): write access will be enabled during recoveryEXT4-fs (vda): orphan cleanup on readonly fsEXT4-fs (vda): recovery completeEXT4-fs (vda): mounted filesystem with ordered data mode. Quota mode: disabled.VFS: Mounted root (ext4 filesystem) readonly on device 254:0.devtmpfs: mountedFreeing unused kernel memory: 1280KRun /sbin/init as init processEXT4-fs (vda): re-mounted. Quota mode: disabled.Seeding 256 bits and creditingSaving 256 bits of creditable seed for next bootStarting syslogd: OKStarting klogd: OKRunning sysctl: OKStarting network: udhcpc: started, v1.36.1udhcpc: broadcasting discoverudhcpc: broadcasting select for 10.0.2.15, server 10.0.2.2udhcpc: lease of 10.0.2.15 obtained from 10.0.2.2, lease time 86400deleting routersadding dns 10.0.2.3OKWelcome to Buildrootbuildroot login: IPv6: ADDRCONF(NETDEV_CHANGE): eth0: link becomes readyWelcome to Buildrootbuildroot login:

最新文章

随机文章