作者信息 作者: 彭東林 郵箱: [email protected] QQ: 405728433 軟體平臺 主機: Ubuntu14.04 64位版本 模擬器:Qemu-2.8.0 Linux內核版本: Linux-4.10 Busybox版本:busybox-1.24.2 工具鏈: gc ...
作者信息
作者: 彭東林
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內核
用Qemu模擬vexpress-a9 (七) --- 嵌入式設備上安裝telnet服務
緣起
隨著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
這樣就實現了跟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 <[email protected]> 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 [