用Qemu搭建aarch64学习环境
作者信息
作者: 彭东林
邮箱: pengdonglin137@163.com
QQ: 405728433
软件平台
主机: Ubuntu14.04 64位版本
模拟器:Qemu-2.8.0
Linux内核版本: Linux-4.10
Busybox版本:busybox-1.24.2
工具链: gcc-linaro-aarch64-linux-gnu-4.9-2014.07_linux
参考博文
用Qemu模拟vexpress-a9 --- 配置 qemu 的网络功能
用Qemu模拟vexpress-a9 (一) --- 搭建Linux kernel调试环境
用Qemu模拟vexpress-a9 (三)--- 实现用u-boot引导Linux内核
缘起
随着aarch64在手机和服务器上面的普及,我们越来越有必要学习一下aarch64的知识,但是目前市面上面还没有做的很好的aarch64的开发板,之前我买了一块NanoPC-T3,用的SoC是Samsung的6818,是cortex-a53 八核架构,但是商家给的资料全都是32位的(armv8兼容aarch32和aarch64),他们说Samsung没有给64位的BSP资料,所以只能等待Samsung来解决,这样的结果令我很失望,偶然看到网上有人用Qemu模拟器来搭建aarch64的运行环境,让我看到了曙光,所以从网上搜刮了一下资料,为后人铺路。
下面涉及到的软件包可以到这里下载。
具备的功能
模拟一个cortex-a53 双核或者单核的环境,同时可以跟Host通信,以便于共享一些文件,为了简单起见,根文件系统使用的是ramdisk格式。
正文
1、编译Qemu模拟器
首先到Qemu官网下载最新的模拟器,我下到的是Qemu-2.8.0,也可以下载其他版本
1 tar -xf qemu-2.8.0.tar.xz 2 cd qemu-2.8.0/ 3 mkdir build 4 cd build/ 5 # 需要安装这个软件包,因为我们使能了--enable-virtfs, 否则configure的时候会失败 6 sudo apt-get install libcap-dev 7 ../configure --target-list=arm-softmmu,i386-softmmu,x86_64-softmmu,aarch64-linux-user,arm-linux-user,i386-linux-user,x86_64-linux-user,aarch64-softmmu --audio-drv-list=alsa --enable-virtfs 8 make -j8 9 sudo make install
然后就可以使用我们下面会用到的qemu-system-aarch64工具了。
2、下载工具链
登录这个网址:http://www.veryarm.com/aarch64-linux-gnu-gcc
其中有一些注意事项:
aarch64-linux-gnu-gcc是由 Linaro 公司基于GCC推出的的ARM交叉编译工具。可用于交叉编译ARMv8 64位目标中的裸机程序、u-boot、Linux kernel、filesystem和App应用程序。aarch64-linux-gnu-gcc交叉编译器必须安装在64为主机上,才能编译目标代码。
我们这里使用的是最新的Linux解压版:
3、下载编译最新的Linux内核
登录https://www.kernel.org/, 下载最新的Linux版本,目前最新的是Linux-4.10。
下面是编译下面要用的kernel的命令:
1 #!/bin/bash 2 cross_compile=/home/pengdonglin/src/qemu/aarch64/gcc-linaro-aarch64-linux-gnu-4.9-2014.07_linux/bin/aarch64-linux-gnu- 3 make CROSS_COMPILE=$cross_compile ARCH=arm64 O=./out_aarch64 defconfig 4 make CROSS_COMPILE=$cross_compile ARCH=arm64 O=./out_aarch64 menuconfig 5 make CROSS_COMPILE=$cross_compile ARCH=arm64 O=./out_aarch64 Image -j4
由于下面要用到ramdisk的启动方式,需要在kernel配置中支持:
1 General setup ---> 2 ----> [*] Initial RAM filesystem and RAM disk (initramfs/initrd) support 3 4 Device Drivers ---> 5 [*] Block devices ---> 6 <*> RAM block device support 7 (65536) Default RAM disk size (kbytes)
这里我们给ramdisk设置的默认大小是64MB,不能比后面我们实际生成的ramdisk.img的size小。
此外,由于我们还需要支持NFS挂在以及通过9p的方式跟Host共享文件,这些也需要在kernel中进行相应的配置。(默认配置已经支持了)
关于Qemu的9p方式实现跟Host的目录共享可以参考 : qemu中使用9p,支持host和guest中共享目录
这样就有了我们下面要用到的内核镜像Image。
4、制作根文件系统
登录https://busybox.net/downloads/下载要用的busybox版本,这里我下的是busybox-1.24.2
要设置的不多:
执行make menuconfig,配置下面几项:
1 Build Options ---> 2 3 [*] Build BusyBox as a static binary (no shared libs) 4 5 (/home/pengdonglin/src/qemu/aarch64/gcc-linaro-aarch64-linux-gnu-4.9-2014.07_linux/bin/aarch64-linux-gnu-) Cross Compiler prefix
然后执行make && make install命令
下面制作启动用的ramdisk,我把这个过程写成了脚本,如下:
1 #!/bin/bash 2 sudo rm -rf rootfs 3 sudo rm -rf tmpfs 4 sudo rm -rf ramdisk* 5 sudo mkdir rootfs 6 sudo cp ../busybox-1.24.2/_install/* rootfs/ -raf 7 sudo mkdir -p rootfs/proc/ 8 sudo mkdir -p rootfs/sys/ 9 sudo mkdir -p rootfs/tmp/ 10 sudo mkdir -p rootfs/root/ 11 sudo mkdir -p rootfs/var/ 12 sudo mkdir -p rootfs/mnt/ 13 sudo cp etc rootfs/ -arf 14 sudo mkdir -p rootfs/lib 15 sudo cp -arf ../gcc-linaro-aarch64-linux-gnu-4.9-2014.07_linux/aarch64-linux-gnu/libc/lib/aarch64-linux-gnu/* rootfs/lib/ 16 sudo rm rootfs/lib/*.a 17 sudo ../gcc-linaro-aarch64-linux-gnu-4.9-2014.07_linux/bin/aarch64-linux-gnu-strip rootfs/lib/* 18 sudo mkdir -p rootfs/dev/ 19 sudo mknod rootfs/dev/tty1 c 4 1 20 sudo mknod rootfs/dev/tty2 c 4 2 21 sudo mknod rootfs/dev/tty3 c 4 3 22 sudo mknod rootfs/dev/tty4 c 4 4 23 sudo mknod rootfs/dev/console c 5 1 24 sudo mknod rootfs/dev/null c 1 3 25 sudo dd if=/dev/zero of=ramdisk bs=1M count=16 26 sudo mkfs.ext4 -F ramdisk 27 sudo mkdir -p tmpfs 28 sudo mount -t ext4 ramdisk ./tmpfs/ -o loop 29 sudo cp -raf rootfs/* tmpfs/ 30 sudo umount tmpfs 31 sudo gzip --best -c ramdisk > ramdisk.gz 32 sudo mkimage -n "ramdisk" -A arm -O linux -T ramdisk -C gzip -d ramdisk.gz ramdisk.img
制作ramdisk用到的文件到这里下载。
5、Qemu支持网络
请参考博客:
用Qemu模拟vexpress-a9 --- 配置 qemu 的网络功能
用Qemu模拟vexpress-a9 (三)--- 实现用u-boot引导Linux内核
6、测试
共享目录的方法:
1 sudo qemu-system-aarch64 \ 2 -M virt \ 3 -cpu cortex-a53 \ 4 -smp 2 \ 5 -m 4096M \ 6 -kernel ./linux-4.10/out_aarch64/arch/arm64/boot/Image \ 7 -nographic \ 8 -append "root=/dev/ram0 rw rootfstype=ext4 console=ttyAMA0 init=/linuxrc ignore_loglevel" \ 9 -initrd ./rootfs/ramdisk.img \ 10 -fsdev local,security_model=passthrough,id=fsdev0,path=/nfsroot \ 11 -device virtio-9p-pci,id=fs0,fsdev=fsdev0,mount_tag=hostshare
支持网络的启动:
1 sudo qemu-system-aarch64 \ 2 -M virt \ 3 -cpu cortex-a53 \ 4 -smp 2 \ 5 -m 4096M \ 6 -kernel ./linux-4.10/out_aarch64/arch/arm64/boot/Image \ 7 -nographic \ 8 -append "root=/dev/ram0 rw rootfstype=ext4 console=ttyAMA0 init=/linuxrc ignore_loglevel" \ 9 -initrd ./rootfs/ramdisk.img \ 10 -net nic,vlan=0 -net tap,vlan=0,ifname=tap0
当然,也可以将上面的两种方是合在一起:
1 sudo qemu-system-aarch64 \ 2 -M virt \ 3 -cpu cortex-a53 \ 4 -smp 2 \ 5 -m 4096M \ 6 -kernel ./linux-4.10/out_aarch64/arch/arm64/boot/Image \ 7 -nographic \ 8 -append "root=/dev/ram0 rw rootfstype=ext4 console=ttyAMA0 init=/linuxrc ignore_loglevel" \ 9 -initrd ./rootfs/ramdisk.img \ 10 -net nic,vlan=0 -net tap,vlan=0,ifname=tap0 \ 11 -fsdev local,security_model=passthrough,id=fsdev0,path=/nfsroot \ 12 -device virtio-9p-pci,id=fs0,fsdev=fsdev0,mount_tag=hostshare
我们需要在Host上面先指定一个共享目录, 比如就用/nfsroot,如果用nfs挂载的话还需要在/etc/export中进行相应的配置。
nfs挂载:
mount -t nfs -o nolock 172.16.14.203:/nfsroot /mnt
9p挂载:
mount -t 9p -o trans=virtio,version=9p2000.L hostshare /mnt2
在/etc/fstab中可以写成如下方式:
hostshare /mnt 9p trans=virtio,version=9p2000.L 0 2
这样就实现了跟Host的文件共享, 推荐用9p的方式,这个更稳定一些。
下面是启动信息:
1 $./run_all.sh 2 sudo tunctl -u root -t tap0 3 TUNSETIFF: Device or resource busy 4 sudo ifconfig tap0 0.0.0.0 promisc up 5 sudo brctl addif br0 tap0 6 brctl show 7 bridge name bridge id STP enabled interfaces 8 br0 8000.2a30f59a82a1 no eth0 9 tap0 10 docker0 8000.02429cade970 no 11 [ 0.000000] Booting Linux on physical CPU 0x0 12 [ 0.000000] Linux version 4.10.0 (pengdonglin@pengdonglin-HP) (gcc version 4.9.1 20140529 (prerelease) (crosstool-NG linaro-1.13.1-4.9-2014.07 - Linaro GCC 4.9-2014.06) ) #2 SMP PREEMPT Wed Feb 22 19:39:00 CST 2017 13 [ 0.000000] Boot CPU: AArch64 Processor [410fd034] 14 [ 0.000000] debug: ignoring loglevel setting. 15 [ 0.000000] efi: Getting EFI parameters from FDT: 16 [ 0.000000] efi: UEFI not found. 17 [ 0.000000] cma: Reserved 16 MiB at 0x00000000ff000000 18 [ 0.000000] On node 0 totalpages: 1048576 19 [ 0.000000] DMA zone: 12288 pages used for memmap 20 [ 0.000000] DMA zone: 0 pages reserved 21 [ 0.000000] DMA zone: 786432 pages, LIFO batch:31 22 [ 0.000000] Normal zone: 4096 pages used for memmap 23 [ 0.000000] Normal zone: 262144 pages, LIFO batch:31 24 [ 0.000000] psci: probing for conduit method from DT. 25 [ 0.000000] psci: PSCIv0.2 detected in firmware. 26 [ 0.000000] psci: Using standard PSCI v0.2 function IDs 27 [ 0.000000] psci: Trusted OS migration not required 28 [ 0.000000] percpu: Embedded 21 pages/cpu @ffff8000fffc0000 s48128 r8192 d29696 u86016 29 [ 0.000000] pcpu-alloc: s48128 r8192 d29696 u86016 alloc=21*4096 30 [ 0.000000] pcpu-alloc: [0] 0 [0] 1 31 [ 0.000000] Detected VIPT I-cache on CPU0 32 [ 0.000000] CPU features: enabling workaround for ARM erratum 845719 33 [ 0.000000] Built 1 zonelists in Zone order, mobility grouping on. Total pages: 1032192 34 [ 0.000000] Kernel command line: root=/dev/ram0 rw rootfstype=ext4 console=ttyAMA0 init=/linuxrc ignore_loglevel 35 [ 0.000000] PID hash table entries: 4096 (order: 3, 32768 bytes) 36 [ 0.000000] Dentry cache hash table entries: 524288 (order: 10, 4194304 bytes) 37 [ 0.000000] Inode-cache hash table entries: 262144 (order: 9, 2097152 bytes) 38 [ 0.000000] software IO TLB [mem 0xfafff000-0xfefff000] (64MB) mapped at [ffff8000bafff000-ffff8000beffefff] 39 [ 0.000000] Memory: 4022724K/4194304K available (8508K kernel code, 946K rwdata, 3852K rodata, 1024K init, 393K bss, 155196K reserved, 16384K cma-reserved) 40 [ 0.000000] Virtual kernel memory layout: 41 [ 0.000000] modules : 0xffff000000000000 - 0xffff000008000000 ( 128 MB) 42 [ 0.000000] vmalloc : 0xffff000008000000 - 0xffff7dffbfff0000 (129022 GB) 43 [ 0.000000] .text : 0xffff000008080000 - 0xffff0000088d0000 ( 8512 KB) 44 [ 0.000000] .rodata : 0xffff0000088d0000 - 0xffff000008ca0000 ( 3904 KB) 45 [ 0.000000] .init : 0xffff000008ca0000 - 0xffff000008da0000 ( 1024 KB) 46 [ 0.000000] .data : 0xffff000008da0000 - 0xffff000008e8ca00 ( 947 KB) 47 [ 0.000000] .bss : 0xffff000008e8ca00 - 0xffff000008eeee50 ( 394 KB) 48 [ 0.000000] fixed : 0xffff7dfffe7fd000 - 0xffff7dfffec00000 ( 4108 KB) 49 [ 0.000000] PCI I/O : 0xffff7dfffee00000 - 0xffff7dffffe00000 ( 16 MB) 50 [ 0.000000] vmemmap : 0xffff7e0000000000 - 0xffff800000000000 ( 2048 GB maximum) 51 [ 0.000000] 0xffff7e0000000000 - 0xffff7e0004000000 ( 64 MB actual) 52 [ 0.000000] memory : 0xffff800000000000 - 0xffff800100000000 ( 4096 MB) 53 [ 0.000000] SLUB: HWalign=64, Order=0-3, MinObjects=0, CPUs=2, Nodes=1 54 [ 0.000000] Preemptible hierarchical RCU implementation. 55 [ 0.000000] Build-time adjustment of leaf fanout to 64. 56 [ 0.000000] RCU restricting CPUs from NR_CPUS=64 to nr_cpu_ids=2. 57 [ 0.000000] RCU: Adjusting geometry for rcu_fanout_leaf=64, nr_cpu_ids=2 58 [ 0.000000] NR_IRQS:64 nr_irqs:64 0 59 [ 0.000000] GICv2m: range[mem 0x08020000-0x08020fff], SPI[80:143] 60 [ 0.000000] arm_arch_timer: WARNING: Invalid trigger for IRQ3, assuming level low 61 [ 0.000000] arm_arch_timer: WARNING: Please fix your firmware 62 [ 0.000000] arm_arch_timer: Architected cp15 timer(s) running at 62.50MHz (virt). 63 [ 0.000000] clocksource: arch_sys_counter: mask: 0xffffffffffffff max_cycles: 0x1cd42e208c, max_idle_ns: 881590405314 ns 64 [ 0.000107] sched_clock: 56 bits at 62MHz, resolution 16ns, wraps every 4398046511096ns 65 [ 0.002457] Console: colour dummy device 80x25 66 [ 0.002953] Calibrating delay loop (skipped), value calculated using timer frequency.. 125.00 BogoMIPS (lpj=250000) 67 [ 0.005003] pid_max: default: 32768 minimum: 301 68 [ 0.005495] Security Framework initialized 69 [ 0.005796] Mount-cache hash table entries: 8192 (order: 4, 65536 bytes) 70 [ 0.005823] Mountpoint-cache hash table entries: 8192 (order: 4, 65536 bytes) 71 [ 0.033688] ASID allocator initialised with 65536 entries 72 [ 0.055888] EFI services will not be available. 73 [ 0.070508] smp: Bringing up secondary CPUs ... 74 [ 0.103718] Detected VIPT I-cache on CPU1 75 [ 0.104137] CPU1: Booted secondary processor [410fd034] 76 [ 0.105447] smp: Brought up 1 node, 2 CPUs 77 [ 0.105484] SMP: Total of 2 processors activated. 78 [ 0.105544] CPU features: detected feature: 32-bit EL0 Support 79 [ 0.106390] CPU: All CPU(s) started at EL1 80 [ 0.106993] alternatives: patching kernel code 81 [ 0.117571] devtmpfs: initialized 82 [ 0.125123] DMI not present or invalid. 83 [ 0.125968] clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 7645041785100000 ns 84 [ 0.126043] futex hash table entries: 512 (order: 4, 65536 bytes) 85 [ 0.129131] pinctrl core: initialized pinctrl subsystem 86 [ 0.140179] NET: Registered protocol family 16 87 [ 0.174101] cpuidle: using governor menu 88 [ 0.174984] vdso: 2 pages (1 code @ ffff0000088d7000, 1 data @ ffff000008da5000) 89 [ 0.175144] hw-breakpoint: found 6 breakpoint and 4 watchpoint registers. 90 [ 0.179636] DMA: preallocated 256 KiB pool for atomic allocations 91 [ 0.180866] Serial: AMBA PL011 UART driver 92 [ 0.217051] 9000000.pl011: ttyAMA0 at MMIO 0x9000000 (irq = 39, base_baud = 0) is a PL011 rev1 93 [ 0.229660] console [ttyAMA0] enabled 94 [ 0.234380] irq: type mismatch, failed to map hwirq-27 for /intc! 95 [ 0.332166] HugeTLB registered 2 MB page size, pre-allocated 0 pages 96 [ 0.346761] ACPI: Interpreter disabled. 97 [ 0.351316] vgaarb: loaded 98 [ 0.352841] SCSI subsystem initialized 99 [ 0.354129] libata version 3.00 loaded. 100 [ 0.356211] usbcore: registered new interface driver usbfs 101 [ 0.356660] usbcore: registered new interface driver hub 102 [ 0.357155] usbcore: registered new device driver usb 103 [ 0.363521] pps_core: LinuxPPS API ver. 1 registered 104 [ 0.363666] pps_core: Software ver. 5.3.6 - Copyright 2005-2007 Rodolfo Giometti <giometti@linux.it> 105 [ 0.364073] PTP clock support registered 106 [ 0.365464] dmi: Firmware registration failed. 107 [ 0.366899] Advanced Linux Sound Architecture Driver Initialized. 108 [ 0.376396] clocksource: Switched to clocksource arch_sys_counter 109 [ 0.377906] VFS: Disk quotas dquot_6.6.0 110 [ 0.379184] VFS: Dquot-cache hash table entries: 512 (order 0, 4096 bytes) 111 [ 0.381159] pnp: PnP ACPI: disabled 112 [ 0.410723] NET: Registered protocol family 2 113 [ 0.425569] TCP established hash table entries: 32768 (order: 6, 262144 bytes) 114 [ 0.426069] TCP bind hash table entries: 32768 (order: 7, 524288 bytes) 115 [ 0.426727] TCP: Hash tables configured (established 32768 bind 32768) 116 [ 0.427411] UDP hash table entries: 2048 (order: 4, 65536 bytes) 117 [ 0.427736] UDP-Lite hash table entries: 2048 (order: 4, 65536 bytes) 118 [ 0.429815] NET: Registered protocol family 1 119 [ 0.432139] RPC: Registered named UNIX socket transport module. 120 [ 0.432824] RPC: Registered udp transport module. 121 [ 0.432964] RPC: Registered tcp transport module. 122 [ 0.433091] RPC: Registered tcp NFSv4.1 backchannel transport module. 123 [ 0.433311] PCI: CLS 0 bytes, default 128 124 [ 0.436037] Trying to unpack rootfs image as initramfs... 125 [ 0.440854] rootfs image is not initramfs (no cpio magic); looks like an initrd 126 [ 0.453369] Freeing initrd memory: 2400K 127 [ 0.455311] kvm [1]: HYP mode not available 128 [ 0.466090] audit: initializing netlink subsys (disabled) 129 [ 0.469328] audit: type=2000 audit(0.452:1): initialized 130 [ 0.475039] workingset: timestamp_bits=46 max_order=20 bucket_order=0 131 [ 0.518138] squashfs: version 4.0 (2009/01/31) Phillip Lougher 132 [ 0.523010] NFS: Registering the id_resolver key type 133 [ 0.523578] Key type id_resolver registered 134 [ 0.523654] Key type id_legacy registered 135 [ 0.523791] nfs4filelayout_init: NFSv4 File Layout Driver Registering... 136 [ 0.524960] 9p: Installing v9fs 9p2000 file system support 137 [ 0.534620] Block layer SCSI generic (bsg) driver version 0.4 loaded (major 247) 138 [ 0.534832] io scheduler noop registered 139 [ 0.535541] io scheduler cfq registered (default) 140 [ 0.557194] pl061_gpio 9030000.pl061: PL061 GPIO chip @0x0000000009030000 registered 141 [ 0.564858] OF: PCI: host bridge /pcie@10000000 ranges: 142 [ 0.565315] OF: PCI: IO 0x3eff0000..0x3effffff -> 0x00000000 143 [ 0.565681] OF: PCI: MEM 0x10000000..0x3efeffff -> 0x10000000 144 [ 0.565850] OF: PCI: MEM 0x8000000000..0xffffffffff -> 0x8000000000 145 [ 0.566651] pci-host-generic 3f000000.pcie: ECAM at [mem 0x3f000000-0x3fffffff] for [bus 00-0f] 146 [ 0.568716] pci-host-generic 3f000000.pcie: PCI host bridge to bus 0000:00 147 [ 0.569014] pci_bus 0000:00: root bus resource [bus 00-0f] 148 [ 0.569196] pci_bus 0000:00: root bus resource [io 0x0000-0xffff] 149 [ 0.569343] pci_bus 0000:00: root bus resource [mem 0x10000000-0x3efeffff] 150 [ 0.569501] pci_bus 0000:00: root bus resource [mem 0x8000000000-0xffffffffff] 151 [ 0.570327] pci 0000:00:00.0: [1b36:0008] type 00 class 0x060000 152 [ 0.573729] pci 0000:00:01.0: [1af4:1000] type 00 class 0x020000 153 [ 0.574091] pci 0000:00:01.0: reg 0x10: [io 0x0000-0x001f] 154 [ 0.574263] pci 0000:00:01.0: reg 0x14: [mem 0x00000000-0x00000fff] 155 [ 0.574487] pci 0000:00:01.0: reg 0x20: [mem 0x00000000-0x00003fff 64bit pref] 156 [ 0.574667] pci 0000:00:01.0: reg 0x30: [mem 0x00000000-0x0003ffff pref] 157 [ 0.575624] pci 0000:00:02.0: [1af4:1009] type 00 class 0x000200 158 [ 0.575801] pci 0000:00:02.0: reg 0x10: [io 0x0000-0x003f] 159 [ 0.575945] pci 0000:00:02.0: reg 0x14: [mem 0x00000000-0x00000fff] 160 [ 0.576117] pci 0000:00:02.0: reg 0x20: [mem 0x00000000-0x00003fff 64bit pref] 161 [ 0.579248] pci 0000:00:01.0: BAR 6: assigned [mem 0x10000000-0x1003ffff pref] 162 [ 0.579773] pci 0000:00:01.0: BAR 4: assigned [mem 0x8000000000-0x8000003fff 64bit pref] 163 [ 0.580132] pci 0000:00:02.0: BAR 4: assigned [mem 0x8000004000-0x8000007fff 64bit pref] 164 [ 0.580965] pci 0000:00:01.0: BAR 1: assigned [mem 0x10040000-0x10040fff] 165 [ 0.581226] pci 0000:00:02.0: BAR 1: assigned [mem 0x10041000-0x10041fff] 166 [ 0.581423] pci 0000:00:02.0: BAR 0: assigned [io 0x1000-0x103f] 167 [ 0.581602] pci 0000:00:01.0: BAR 0: assigned [io 0x1040-0x105f] 168 [ 0.612049] virtio-pci 0000:00:01.0: enabling device (0000 -> 0003) 169 [ 0.615182] virtio-pci 0000:00:02.0: enabling device (0000 -> 0003) 170 [ 0.617449] xenfs: not registering filesystem on non-xen platform 171 [ 0.629378] Serial: 8250/16550 driver, 4 ports, IRQ sharing enabled 172 [ 0.636035] SuperH (H)SCI(F) driver initialized 173 [ 0.645049] msm_serial: driver initialized 174 [ 0.647353] cacheinfo: Unable to detect cache hierarchy for CPU 0 175 [ 0.703861] brd: module loaded 176 [ 0.744597] loop: module loaded 177 [ 0.746301] hisi_sas: driver version v1.6 178 [ 0.763497] libphy: Fixed MDIO Bus: probed 179 [ 0.764792] tun: Universal TUN/TAP device driver, 1.6 180 [ 0.764893] tun: (C) 1999-2004 Max Krasnyansky <maxk@qualcomm.com> 181 [ 0.778786] e1000e: Intel(R) PRO/1000 Network Driver - 3.2.6-k 182 [ 0.778947] e1000e: Copyright(c) 1999 - 2015 Intel Corporation. 183 [ 0.779221] igb: Intel(R) Gigabit Ethernet Network Driver - version 5.4.0-k 184 [ 0.779350] igb: Copyright (c) 2007-2014 Intel Corporation. 185 [ 0.779597] igbvf: Intel(R) Gigabit Virtual Function Network Driver - version 2.4.0-k 186 [ 0.779732] igbvf: Copyright (c) 2009 - 2012 Intel Corporation. 187 [ 0.779963] sky2: driver version 1.30 188 [ 0.785210] VFIO - User Level meta-driver version: 0.3 189 [ 0.790416] ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver 190 [ 0.790566] ehci-pci: EHCI PCI platform driver 191 [ 0.790837] ehci-platform: EHCI generic platform driver 192 [ 0.791295] ehci-exynos: EHCI EXYNOS driver 193 [ 0.791675] ehci-msm: Qualcomm On-Chip EHCI Host Controller 194 [ 0.792007] ohci_hcd: USB 1.1 'Open' Host Controller (OHCI) Driver 195 [ 0.792378] ohci-pci: OHCI PCI platform driver 196 [ 0.792662] ohci-platform: OHCI generic platform driver 197 [ 0.793038] ohci-exynos: OHCI EXYNOS driver 198 [ 0.794623] usbcore: registered new interface driver usb-storage 199 [ 0.798672] mousedev: PS/2 mouse device common for all mice 200 [ 0.805642] rtc-pl031 9010000.pl031: rtc core: registered pl031 as rtc0 201 [ 0.811835] i2c /dev entries driver 202 [ 0.828982] sdhci: Secure Digital Host Controller Interface driver 203 [ 0.829089] sdhci: Copyright(c) Pierre Ossman 204 [ 0.830537] Synopsys Designware Multimedia Card Interface Driver 205 [ 0.834397] sdhci-pltfm: SDHCI platform and OF driver helper 206 [ 0.838884] ledtrig-cpu: registered to indicate activity on CPUs 207 [ 0.844425] usbcore: registered new interface driver usbhid 208 [ 0.844550] usbhid: USB HID core driver 209 [ 0.854742] NET: Registered protocol family 17 210 [ 0.856085] 9pnet: Installing 9P2000 support 211 [ 0.858100] Key type dns_resolver registered 212 [ 0.860637] registered taskstats version 1 213 [ 0.866590] input: gpio-keys as /devices/platform/gpio-keys/input/input0 214 [ 0.868829] rtc-pl031 9010000.pl031: setting system clock to 2017-02-22 11:58:46 UTC (1487764726) 215 [ 0.869655] ALSA device list: 216 [ 0.869743] No soundcards found. 217 [ 0.871669] uart-pl011 9000000.pl011: no DMA platform data 218 [ 0.873769] RAMDISK: gzip image found at block 0 219 [ 1.242574] EXT4-fs (ram0): mounted filesystem with ordered data mode. Opts: (null) 220 [ 1.242933] VFS: Mounted root (ext4 filesystem) on device 1:0. 221 [ 1.244541] devtmpfs: mounted 222 [ 1.292728] Freeing unused kernel memory: 1024K 223 Please press Enter to activate this console. 224 [root@aarch64 ]# 225 [root@aarch64 ]# 226 [root@aarch64 ]# 227 [root@aarch64 ]# ifconfig 228 eth0 Link encap:Ethernet HWaddr 52:54:00:12:34:56 229 inet addr:172.16.14.250 Bcast:172.16.15.255 Mask:255.255.252.0 230 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 231 RX packets:143 errors:0 dropped:14 overruns:0 frame:0 232 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 233 collisions:0 txqueuelen:1000 234 RX bytes:23589 (23.0 KiB) TX bytes:0 (0.0 B) 235 lo Link encap:Local Loopback 236 inet addr:127.0.0.1 Mask:255.0.0.0 237 UP LOOPBACK RUNNING MTU:65536 Metric:1 238 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 239 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 240 collisions:0 txqueuelen:1000 241 RX bytes:0 (0.0 B) TX bytes:0 (0.0 B) 242 [root@aarch64 ]# mount -t nfs -o nolock 172.16.14.203:/nfsroot /mnt 243 [ 26.558855] random: fast init done 244 [root@aarch64 ]# mount 245 /dev/root on / type ext4 (rw,relatime,data=ordered) 246 devtmpfs on /dev type devtmpfs (rw,relatime,size=2011360k,nr_inodes=502840,mode=755) 247 proc on /proc type proc (rw,relatime) 248 tmpfs on /tmp type tmpfs (rw,relatime) 249 sysfs on /sys type sysfs (rw,relatime) 250 debugfs on /sys/kernel/debug type debugfs (rw,relatime) 251 devpts on /dev/pts type devpts (rw,relatime,mode=600,ptmxmode=000) 252 172.16.14.203:/nfsroot on /mnt type nfs (rw,relatime,vers=3,rsize=1048576,wsize=1048576,namlen=255,hard,nolock,proto=tcp,timeo=600,retrans=2,sec=sys,mountaddr=172.16.14.203,mountvers=3,mountproto=tcp,local_lock=all,addr=172.16.14.203) 253 [root@aarch64 ]# mkdir mnt2 254 [root@aarch64 ]# mount -t 9p -o trans=virtio,version=9p2000.L hostshare /mnt2 255 [root@aarch64 ]# mount 256 /dev/root on / type ext4 (rw,relatime,data=ordered) 257 devtmpfs on /dev type devtmpfs (rw,relatime,size=2011360k,nr_inodes=502840,mode=755) 258 proc on /proc type proc (rw,relatime) 259 tmpfs on /tmp type tmpfs (rw,relatime) 260 sysfs on /sys type sysfs (rw,relatime) 261 debugfs on /sys/kernel/debug type debugfs (rw,relatime) 262 devpts on /dev/pts type devpts (rw,relatime,mode=600,ptmxmode=000) 263 172.16.14.203:/nfsroot on /mnt type nfs (rw,relatime,vers=3,rsize=1048576,wsize=1048576,namlen=255,hard,nolock,proto=tcp,timeo=600,retrans=2,sec=sys,mountaddr=172.16.14.203,mountvers=3,mountproto=tcp,local_lock=all,addr=172.16.14.203) 264 hostshare on /mnt2 type 9p (rw,sync,dirsync,relatime,trans=virtio,version=9p2000.L) 265 [root@aarch64 ]# [ 246.789966] random: crng init done
完。
本文来自博客园,作者:dolinux,未经同意,禁止转载