• u-boot 通过 SD 卡启动 Linux(三)


    u-boot 移植
    linux 运行
    linux+SD卡(rootfs) 运行
    u-boot+SD卡(kernel+dtb+rootfs)

    前面单独介绍了 u-boot 的移植,linux 移植和 rootfs 根 文件系统的制作。本节主要通过将前面的串起来介绍 u-boot+SD卡(kernel+dtb+rootfs)启动 linux

    根文件系统制作

    cd rootfs
    
    cp -r /home/tyustli/code/open_source/busybox/busybox-1.36.1/_install/* ./
    
    # 复制库文件
    mkdir lib
    cp -r /home/tyustli/cross_tool/gcc-arm-10.3-2021.07-x86_64-arm-none-linux-gnueabihf/lib/* lib/
    
    # 创建设备节点
    mkdir dev
    cd dev
    sudo mknod -m 666 tty1 c 4 1
    sudo mknod -m 666 tty2 c 4 2
    sudo mknod -m 666 tty3 c 4 3
    sudo mknod -m 666 tty4 c 4 4
    sudo mknod -m 666 tty5 c 4 5
    sudo mknod -m 666 tty6 c 4 6
    # 创建一个控制台节点
    sudo mknod -m 666 console c 5 1
    # 创建一个空节点
    sudo mknod -m 666 null c 1 3
    
    cd ../
    mkdir etc
    mkdir proc
    mkdir tmp
    mkdir sys
    cd etc
    touch fstab
    # 向文件中写入内容
    cat > fstab <<EOF
    #   
    proc  /proc proc  defaults 00
    tmpfs /tmp  tmpfs defaults 00
    sysfs /sys  sysfs defaults 00
    EOF
    
    touch inittab
    cat > inittab<<EOF
    #etc/inittab
    ::sysinit:/etc/init.d/rcS
    console::askfirst:-/bin/sh
    ::restart:/sbin/init
    ::ctrlaltdel:/sbin/reboot
    ::shutdown:/bin/umount -a -r
    ::shutdown:/sbin/swapoff -a
    EOF
    
    mkdir init.d
    cd init.d
    touch rcS
    chmod 777 rcS
    
    # 向文件中写入内容
    cat > rcS <<EOF
    #!/bin/sh
    ATH=/sbin:/bin:/usr/sbin:/usr/bin
    LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/lib:/usr/lib
    export PATH LD_LIBRARY_PATH runlevel
    mount -a
    mkdir /dev/pts
    mount -t devpts devpts /dev/pts
    # echo /sbin/mdev >/proc/sys/kernel/hotplug
    mdev -s
    EOF
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65

    根文件系统制作好之后,并没有制作 rootfs.ext3 镜像文件,而是在下一节中将其和 kernel+dtb 一同放在 SD 卡镜像中

    SD 卡镜像制作

    将 kernel + dtb + rootfs 打包到一个 SD 卡镜像中

    # 生成虚拟 SD 卡系统镜像
    sudo dd if=/dev/zero of=my_kernel.img bs=1M count=512
    # 格式化镜像
    sudo chmod 777 my_kernel.img
    sudo mkfs.ext3 my_kernel.img
    
    # 创建两个分区
    sudo sgdisk -n 0:0:+100M -c 0:kernel ./my_kernel.img
    sudo sgdisk -n 0:0:0 -c 0:rootfs my_kernel.img
    sudo sgdisk -p my_kernel.img
    
    LOOPDEV=`losetup -f`   # 查找空闲的loop设备
    echo $LOOPDEV	# 我这边是 /dev/loop18
    sudo losetup $LOOPDEV my_kernel.img
    sudo partprobe $LOOPDEV
    sudo losetup -l
    ls /dev/loop*
    
    # 格式化
    sudo mkfs.ext3 /dev/loop18p1
    sudo mkfs.ext3 /dev/loop18p2
    # 挂载
    mkdir p1 p2
    sudo mount -t ext3 /dev/loop18p1 p1   # 存放kernel和设备树
    sudo mount -t ext3 /dev/loop18p2 p2   # 存放根文件系统
    # 查看挂载情况
    df -h
    
    # 拷贝 kernel 和 dtb
    sudo cp -r arch/arm/boot/zImage arch/arm/boot/dts/arm/vexpress-v2p-ca9.dtb p1
    sudo rmdir p1/lost+found # 移除临时文件夹
    
    # 拷贝根文件系统
    sudo cp /home/tyustli/code/open_source/busybox/rootfs/* p2 -arf
    sudo rmdir p2/lost+found # 移除临时文件夹
    
    sudo umount p1 p2
    sudo losetup -d /dev/loop18
    sudo rmdir p1
    sudo rmdir p2
    # 将 SD 镜像拷贝到 u-boot 目录
    mv my_kernel.img /home/tyustli/code/open_source/u-boot
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42

    u-boot 启动

    sudo qemu-system-arm -M vexpress-a9 -m 1024M -smp 1 -nographic -kernel ./u-boot -sd ./my_kernel.img
    
    • 1

    u-boot 日志

    alsa: Failed to open `default':
    alsa: Reason: No such file or directory
    ALSA lib pcm_dmix.c:1032:(snd_pcm_dmix_open) unable to open slave
    alsa: Could not initialize DAC
    alsa: Failed to open `default':
    alsa: Reason: No such file or directory
    audio: Failed to create voice `lm4549.out'
    
    
    U-Boot 2023.10-00813-g997bef3c6d (Oct 12 2023 - 21:45:33 +0800)
    
    DRAM:  512 MiB (effective 1 GiB)
    WARNING: Caches not enabled
    Core:  18 devices, 10 uclasses, devicetree: embed
    Flash: 128 MiB
    MMC:   mmci@5000: 0
    Loading Environment from Flash... *** Warning - bad CRC, using default environment
    
    In:    serial
    Out:   serial
    Err:   serial
    Net:   eth0: ethernet@3,02000000
    Hit any key to stop autoboot:  0 
    => 
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24

    u-boot 查看 sd 卡情况

    • mmc info
    => mmc info
    Device: mmci@5000
    Manufacturer ID: aa
    OEM: 5859
    Name: QEMU! 
    Bus Speed: 12000000
    Mode: MMC legacy
    Rd Block Len: 512
    SD version 2.0
    High Capacity: No
    Capacity: 512 MiB
    Bus Width: 1-bit
    Erase Group Size: 512 Bytes
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • mmc dev 0
    => mmc dev 0
    switch to partitions #0, OK
    mmc0 is current device
    
    • 1
    • 2
    • 3

    查看SD卡2个分区:

    • 分区1: ls mmc 0:1
    • 分区2: ls mmc 0:2
    => ls mmc 0:1
    <DIR>       4096 .
    <DIR>       4096 ..
             5565624 zImage
               14129 vexpress-v2p-ca9.dtb
    => ls mmc 0:2
    <DIR>       4096 .
    <DIR>       4096 ..
    <DIR>       4096 bin
    <DIR>       4096 dev
    <DIR>       4096 etc
    <DIR>       4096 lib
    <SYM>         11 linuxrc
    <DIR>       4096 proc
    <DIR>       4096 sbin
    <DIR>       4096 sys
    <DIR>       4096 tmp
    <DIR>       4096 usr
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18

    可以看到分区 1 为 kernel + dtb
    分区2 为 rootfs

    加载 kernel 和设备树

    • 加载内核 load mmc 0:1 0x60008000 zImage
    • 加载设备树 load mmc 0:1 0x61000000 vexpress-v2p-ca9.dtb
    => load mmc 0:1 0x60008000 zImage
    5565624 bytes read in 1255 ms (4.2 MiB/s)
    => load mmc 0:1 0x61000000 vexpress-v2p-ca9.dtb
    14129 bytes read in 12 ms (1.1 MiB/s)
    
    • 1
    • 2
    • 3
    • 4

    设置 bootargs

     setenv bootargs 'root=/dev/mmcblk0p2 rw rootfstype=ext3 rootwait earlycon console=tty0 console=ttyAMA0 init=/linuxrc ignore_loglevel'
    
    • 1

    引导内核

    bootz 0x60008000 - 0x61000000
    
    • 1

    内核启动日志

    => bootz 0x60008000 - 0x61000000
    Kernel image @ 0x60008000 [ 0x000000 - 0x54ecb8 ]
    ## Flattened Device Tree blob at 61000000
       Booting using the fdt blob at 0x61000000
    Working FDT set to 61000000
       Loading Device Tree to 7eb11000, end 7eb17730 ... OK
    Working FDT set to 7eb11000
    
    Starting kernel ...
    
    ALSA lib pcm_dmix.c:1032:(snd_pcm_dmix_open) unable to open slave
    alsa: Could not initialize DAC
    alsa: Failed to open `default':
    alsa: Reason: No such file or directory
    ALSA lib pcm_dmix.c:1032:(snd_pcm_dmix_open) unable to open slave
    alsa: Could not initialize DAC
    alsa: Failed to open `default':
    alsa: Reason: No such file or directory
    audio: Failed to create voice `lm4549.out'
    ALSA lib pcm_dmix.c:1032:(snd_pcm_dmix_open) unable to open slave
    alsa: Could not initialize DAC
    alsa: Failed to open `default':
    alsa: Reason: No such file or directory
    ALSA lib pcm_dmix.c:1032:(snd_pcm_dmix_open) unable to open slave
    alsa: Could not initialize DAC
    alsa: Failed to open `default':
    ......
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27

    将 u-boot 命令固化到 u-boot 程序中

    make menuconfig
    
    • 1

    配置 u-boot

    配置 bootcmd

    Boot options -> Enable a default value for bootcmd
    
    • 1

    输入下面的内容,以 ; 分割

    load mmc 0:1 0x60008000 zImage;load mmc 0:1 0x61000000 vexpress-v2p-ca9.dtb; setenv bootargs 'root=/dev/mmcblk0p2 rw rootfstype=ext3 rootwait earlycon console=tty0 console=ttyAMA0 init=/linuxrc ignore_loglevel';bootz 0x60008000 - 0x61000000
    
    • 1

    在这里插入图片描述

    附录 linux 内核启动完整日志

    WARNING: Image format was not specified for './my_kernel.img' and probing guessed raw.
             Automatically detecting the format is dangerous for raw images, write operations on block 0 will be restricted.
             Specify the 'raw' format explicitly to remove the restrictions.
    ALSA lib pcm_dmix.c:1032:(snd_pcm_dmix_open) unable to open slave
    alsa: Could not initialize DAC
    alsa: Failed to open `default':
    alsa: Reason: No such file or directory
    ALSA lib pcm_dmix.c:1032:(snd_pcm_dmix_open) unable to open slave
    alsa: Could not initialize DAC
    alsa: Failed to open `default':
    alsa: Reason: No such file or directory
    audio: Failed to create voice `lm4549.out'
    
    
    U-Boot 2023.10-00813-g997bef3c6d (Oct 26 2023 - 08:29:32 +0800)
    
    DRAM:  512 MiB (effective 1 GiB)
    WARNING: Caches not enabled
    Core:  18 devices, 10 uclasses, devicetree: embed
    Flash: 128 MiB
    MMC:   mmci@5000: 0
    Loading Environment from Flash... *** Warning - bad CRC, using default environment
    
    In:    serial
    Out:   serial
    Err:   serial
    Net:   eth0: ethernet@3,02000000
    Hit any key to stop autoboot:  0 
    5565624 bytes read in 1230 ms (4.3 MiB/s)
    14129 bytes read in 12 ms (1.1 MiB/s)
    Kernel image @ 0x60008000 [ 0x000000 - 0x54ecb8 ]
    ## Flattened Device Tree blob at 61000000
       Booting using the fdt blob at 0x61000000
    Working FDT set to 61000000
       Loading Device Tree to 7eb11000, end 7eb17730 ... OK
    Working FDT set to 7eb11000
    
    Starting kernel ...
    
    ALSA lib pcm_dmix.c:1032:(snd_pcm_dmix_open) unable to open slave
    alsa: Could not initialize DAC
    alsa: Failed to open `default':
    alsa: Reason: No such file or directory
    ALSA lib pcm_dmix.c:1032:(snd_pcm_dmix_open) unable to open slave
    alsa: Could not initialize DAC
    alsa: Failed to open `default':
    alsa: Reason: No such file or directory
    audio: Failed to create voice `lm4549.out'
    ALSA lib pcm_dmix.c:1032:(snd_pcm_dmix_open) unable to open slave
    alsa: Could not initialize DAC
    alsa: Failed to open `default':
    alsa: Reason: No such file or directory
    ALSA lib pcm_dmix.c:1032:(snd_pcm_dmix_open) unable to open slave
    alsa: Could not initialize DAC
    alsa: Failed to open `default':
    alsa: Reason: No such file or directory
    audio: Failed to create voice `lm4549.out'
    ALSA lib pcm_dmix.c:1032:(snd_pcm_dmix_open) unable to open slave
    alsa: Could not initialize DAC
    alsa: Failed to open `default':
    alsa: Reason: No such file or directory
    ALSA lib pcm_dmix.c:1032:(snd_pcm_dmix_open) unable to open slave
    alsa: Could not initialize DAC
    alsa: Failed to open `default':
    alsa: Reason: No such file or directory
    audio: Failed to create voice `lm4549.out'
    ALSA lib pcm_dmix.c:1032:(snd_pcm_dmix_open) unable to open slave
    alsa: Could not initialize DAC
    alsa: Failed to open `default':
    alsa: Reason: No such file or directory
    ALSA lib pcm_dmix.c:1032:(snd_pcm_dmix_open) unable to open slave
    alsa: Could not initialize DAC
    alsa: Failed to open `default':
    alsa: Reason: No such file or directory
    audio: Failed to create voice `lm4549.out'
    ALSA lib pcm_dmix.c:1032:(snd_pcm_dmix_open) unable to open slave
    alsa: Could not initialize DAC
    alsa: Failed to open `default':
    alsa: Reason: No such file or directory
    ALSA lib pcm_dmix.c:1032:(snd_pcm_dmix_open) unable to open slave
    alsa: Could not initialize DAC
    alsa: Failed to open `default':
    alsa: Reason: No such file or directory
    audio: Failed to create voice `lm4549.out'
    ALSA lib pcm_dmix.c:1032:(snd_pcm_dmix_open) unable to open slave
    alsa: Could not initialize DAC
    alsa: Failed to open `default':
    alsa: Reason: No such file or directory
    ALSA lib pcm_dmix.c:1032:(snd_pcm_dmix_open) unable to open slave
    alsa: Could not initialize DAC
    alsa: Failed to open `default':
    alsa: Reason: No such file or directory
    audio: Failed to create voice `lm4549.out'
    ALSA lib pcm_dmix.c:1032:(snd_pcm_dmix_open) unable to open slave
    alsa: Could not initialize DAC
    alsa: Failed to open `default':
    alsa: Reason: No such file or directory
    ALSA lib pcm_dmix.c:1032:(snd_pcm_dmix_open) unable to open slave
    alsa: Could not initialize DAC
    alsa: Failed to open `default':
    alsa: Reason: No such file or directory
    audio: Failed to create voice `lm4549.out'
    ALSA lib pcm_dmix.c:1032:(snd_pcm_dmix_open) unable to open slave
    alsa: Could not initialize DAC
    alsa: Failed to open `default':
    alsa: Reason: No such file or directory
    ALSA lib pcm_dmix.c:1032:(snd_pcm_dmix_open) unable to open slave
    alsa: Could not initialize DAC
    alsa: Failed to open `default':
    alsa: Reason: No such file or directory
    audio: Failed to create voice `lm4549.out'
    ALSA lib pcm_dmix.c:1032:(snd_pcm_dmix_open) unable to open slave
    alsa: Could not initialize DAC
    alsa: Failed to open `default':
    alsa: Reason: No such file or directory
    ALSA lib pcm_dmix.c:1032:(snd_pcm_dmix_open) unable to open slave
    alsa: Could not initialize DAC
    alsa: Failed to open `default':
    alsa: Reason: No such file or directory
    audio: Failed to create voice `lm4549.out'
    Booting Linux on physical CPU 0x0
    Linux version 6.5.7 (tyustli@tyustli-machine) (arm-none-linux-gnueabihf-gcc (GNU Toolchain for the A-profile Architecture 10.3-2021.07 (arm-10.29)) 10.3.1 20210621, GNU ld (GNU Toolchain for the A-profile Architecture 10.3-2021.07 (arm-10.29)) 2.36.1.20210621) #3 SMP Sun Oct 15 20:44:33 CST 2023
    CPU: ARMv7 Processor [410fc090] revision 0 (ARMv7), cr=10c5387d
    CPU: PIPT / VIPT nonaliasing data cache, VIPT nonaliasing instruction cache
    OF: fdt: Machine model: V2P-CA9
    Malformed early option 'earlycon'
    printk: debug: ignoring loglevel setting.
    Memory policy: Data cache writeback
    Reserved memory: created DMA memory pool at 0x4c000000, size 8 MiB
    OF: reserved mem: initialized node vram@4c000000, compatible id shared-dma-pool
    OF: reserved mem: 0x4c000000..0x4c7fffff (8192 KiB) nomap non-reusable vram@4c000000
    cma: Reserved 16 MiB at 0x9f000000
    Zone ranges:
      Normal   [mem 0x0000000060000000-0x000000009fffffff]
    Movable zone start for each node
    Early memory node ranges
      node   0: [mem 0x0000000060000000-0x000000009fffffff]
    Initmem setup node 0 [mem 0x0000000060000000-0x000000009fffffff]
    CPU: All CPU(s) started in SVC mode.
    percpu: Embedded 16 pages/cpu s34516 r8192 d22828 u65536
    pcpu-alloc: s34516 r8192 d22828 u65536 alloc=16*4096
    pcpu-alloc: [0] 0 [0] 1 [0] 2 [0] 3 
    Kernel command line: root=/dev/mmcblk0p2 rw rootfstype=ext3 rootwait earlycon console=tty0 console=ttyAMA0 init=/linuxrc ignore_loglevel
    printk: log_buf_len individual max cpu contribution: 4096 bytes
    printk: log_buf_len total cpu_extra contributions: 12288 bytes
    printk: log_buf_len min size: 16384 bytes
    printk: log_buf_len: 32768 bytes
    printk: early log buf free: 14660(89%)
    Dentry cache hash table entries: 131072 (order: 7, 524288 bytes, linear)
    Inode-cache hash table entries: 65536 (order: 6, 262144 bytes, linear)
    Built 1 zonelists, mobility grouping on.  Total pages: 260096
    mem auto-init: stack:off, heap alloc:off, heap free:off
    Memory: 1008536K/1048576K available (9216K kernel code, 685K rwdata, 2052K rodata, 1024K init, 178K bss, 23656K reserved, 16384K cma-reserved)
    SLUB: HWalign=64, Order=0-3, MinObjects=0, CPUs=4, Nodes=1
    trace event string verifier disabled
    rcu: Hierarchical RCU implementation.
    rcu:    RCU event tracing is enabled.
    rcu:    RCU restricting CPUs from NR_CPUS=8 to nr_cpu_ids=4.
    rcu: RCU calculated value of scheduler-enlistment delay is 10 jiffies.
    rcu: Adjusting geometry for rcu_fanout_leaf=16, nr_cpu_ids=4
    NR_IRQS: 16, nr_irqs: 16, preallocated irqs: 16
    GIC CPU mask not found - kernel will fail to boot.
    GIC CPU mask not found - kernel will fail to boot.
    L2C: platform modifies aux control register: 0x02020000 -> 0x02420000
    L2C: DT/platform modifies aux control register: 0x02020000 -> 0x02420000
    L2C-310 enabling early BRESP for Cortex-A9
    L2C-310 full line of zeros enabled for Cortex-A9
    L2C-310 dynamic clock gating disabled, standby mode disabled
    L2C-310 cache controller enabled, 8 ways, 128 kB
    L2C-310: CACHE_ID 0x410000c8, AUX_CTRL 0x46420001
    rcu: srcu_init: Setting srcu_struct sizes based on contention.
    sched_clock: 32 bits at 24MHz, resolution 41ns, wraps every 89478484971ns
    clocksource: arm,sp804: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 1911260446275 ns
    smp_twd: clock not found -2
    Console: colour dummy device 80x30
    printk: console [tty0] enabled
    Calibrating local timer... 99.81MHz.
    Calibrating delay loop... 530.84 BogoMIPS (lpj=2654208)
    CPU: Testing write buffer coherency: ok
    CPU0: Spectre v2: using BPIALL workaround
    pid_max: default: 32768 minimum: 301
    Mount-cache hash table entries: 2048 (order: 1, 8192 bytes, linear)
    Mountpoint-cache hash table entries: 2048 (order: 1, 8192 bytes, linear)
    CPU0: thread -1, cpu 0, socket 0, mpidr 80000000
    Setting up static identity map for 0x60100000 - 0x60100060
    rcu: Hierarchical SRCU implementation.
    rcu:    Max phase no-delay instances is 1000.
    smp: Bringing up secondary CPUs ...
    smp: Brought up 1 node, 1 CPU
    SMP: Total of 1 processors activated (530.84 BogoMIPS).
    CPU: All CPU(s) started in SVC mode.
    devtmpfs: initialized
    VFP support v0.3: implementor 41 architecture 3 part 30 variant 9 rev 0
    clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 19112604462750000 ns
    futex hash table entries: 1024 (order: 4, 65536 bytes, linear)
    NET: Registered PF_NETLINK/PF_ROUTE protocol family
    DMA: preallocated 256 KiB pool for atomic coherent allocations
    cpuidle: using governor ladder
    hw-breakpoint: debug architecture 0x4 unsupported.
    Serial: AMBA PL011 UART driver
    SCSI subsystem initialized
    libata version 3.00 loaded.
    usbcore: registered new interface driver usbfs
    usbcore: registered new interface driver hub
    usbcore: registered new device driver usb
    i2c 0-0039: Fixed dependency cycle(s) with /bus@40000000/motherboard-bus@40000000/iofpga@7,00000000/clcd@1f000/port/endpoint
    i2c 0-0039: Fixed dependency cycle(s) with /clcd@10020000/port/endpoint
    pps_core: LinuxPPS API ver. 1 registered
    pps_core: Software ver. 5.3.6 - Copyright 2005-2007 Rodolfo Giometti <giometti@linux.it>
    PTP clock support registered
    Advanced Linux Sound Architecture Driver Initialized.
    clocksource: Switched to clocksource arm,sp804
    NET: Registered PF_INET protocol family
    IP idents hash table entries: 16384 (order: 5, 131072 bytes, linear)
    tcp_listen_portaddr_hash hash table entries: 512 (order: 0, 4096 bytes, linear)
    Table-perturb hash table entries: 65536 (order: 6, 262144 bytes, linear)
    TCP established hash table entries: 8192 (order: 3, 32768 bytes, linear)
    TCP bind hash table entries: 8192 (order: 5, 131072 bytes, linear)
    TCP: Hash tables configured (established 8192 bind 8192)
    UDP hash table entries: 512 (order: 2, 16384 bytes, linear)
    UDP-Lite hash table entries: 512 (order: 2, 16384 bytes, linear)
    NET: Registered PF_UNIX/PF_LOCAL protocol family
    RPC: Registered named UNIX socket transport module.
    RPC: Registered udp transport module.
    RPC: Registered tcp transport module.
    RPC: Registered tcp-with-tls transport module.
    RPC: Registered tcp NFSv4.1 backchannel transport module.
    hw perfevents: enabled with armv7_cortex_a9 PMU driver, 5 counters available
    workingset: timestamp_bits=30 max_order=18 bucket_order=0
    squashfs: version 4.0 (2009/01/31) Phillip Lougher
    jffs2: version 2.2. (NAND) © 2001-2006 Red Hat, Inc.
    9p: Installing v9fs 9p2000 file system support
    io scheduler mq-deadline registered
    io scheduler kyber registered
    io scheduler bfq registered
    OF: graph: no port node found in /bus@40000000/motherboard-bus@40000000/iofpga@7,00000000/i2c@16000/dvi-transmitter@60
    sii902x 0-0060: supply iovcc not found, using dummy regulator
    sii902x 0-0060: supply cvcc12 not found, using dummy regulator
    simple-pm-bus bus@40000000:motherboard-bus@40000000:iofpga@7,00000000: Failed to create device link (0x180) with dcc:tcrefclk
    simple-pm-bus bus@40000000:motherboard-bus@40000000:iofpga@7,00000000: Failed to create device link (0x180) with dcc:tcrefclk
    physmap-flash 40000000.flash: physmap platform flash device: [mem 0x40000000-0x43ffffff]
    40000000.flash: Found 2 x16 devices at 0x0 in 32-bit bank. Manufacturer ID 0x000000 Chip ID 0x000000
    Intel/Sharp Extended Query Table at 0x0031
    Using buffer write method
    erase region 0: offset=0x0,size=0x40000,blocks=256
    physmap-flash 40000000.flash: physmap platform flash device: [mem 0x44000000-0x47ffffff]
    40000000.flash: Found 2 x16 devices at 0x0 in 32-bit bank. Manufacturer ID 0x000000 Chip ID 0x000000
    Intel/Sharp Extended Query Table at 0x0031
    Using buffer write method
    erase region 0: offset=0x0,size=0x40000,blocks=256
    Concatenating MTD devices:
    (0): "40000000.flash"
    (1): "40000000.flash"
    into device "40000000.flash"
    physmap-flash 48000000.psram: physmap platform flash device: [mem 0x48000000-0x49ffffff]
    smsc911x 4e000000.ethernet eth0: MAC Address: 52:54:00:12:34:56
    isp1760 4f000000.usb: isp1760 bus width: 32, oc: digital
    isp1760 4f000000.usb: NXP ISP1760 USB Host Controller
    isp1760 4f000000.usb: new USB bus registered, assigned bus number 1
    isp1760 4f000000.usb: Scratch test failed. 0x00000000
    isp1760 4f000000.usb: can't setup: -19
    isp1760 4f000000.usb: USB bus 1 deregistered
    usbcore: registered new interface driver usb-storage
    rtc-pl031 10017000.rtc: registered as rtc0
    rtc-pl031 10017000.rtc: setting system clock to 2023-10-26T00:31:12 UTC (1698280272)
    mmci-pl18x 10005000.mmci: Got CD GPIO
    mmci-pl18x 10005000.mmci: Got WP GPIO
    mmci-pl18x 10005000.mmci: mmc0: PL181 manf 41 rev0 at 0x10005000 irq 35,36 (pio)
    ledtrig-cpu: registered to indicate activity on CPUs
    usbcore: registered new interface driver usbhid
    usbhid: USB HID core driver
    mmc0: new SD card at address 4567
    input: AT Raw Set 2 keyboard as /devices/platform/bus@40000000/bus@40000000:motherboard-bus@40000000/bus@40000000:motherboard-bus@40000000:iofpga@7,00000000/10006000.kmi/serio0/input/input0
    mmcblk0: mmc0:4567 QEMU! 512 MiB
    aaci-pl041 10004000.aaci: ARM AC'97 Interface PL041 rev0 at 0x10004000, irq 37
    aaci-pl041 10004000.aaci: FIFO 512 entries
    NET: Registered PF_PACKET protocol family
    9pnet: Installing 9P2000 support
    Registering SWP/SWPB emulation handler
     mmcblk0: p1 p2
    10009000.serial: ttyAMA0 at MMIO 0x10009000 (irq = 38, base_baud = 0) is a PL011 rev1
    printk: console [ttyAMA0] enabled
    1000a000.serial: ttyAMA1 at MMIO 0x1000a000 (irq = 39, base_baud = 0) is a PL011 rev1
    1000b000.serial: ttyAMA2 at MMIO 0x1000b000 (irq = 40, base_baud = 0) is a PL011 rev1
    1000c000.serial: ttyAMA3 at MMIO 0x1000c000 (irq = 41, base_baud = 0) is a PL011 rev1
    drm-clcd-pl111 1001f000.clcd: assigned reserved memory node vram@4c000000
    drm-clcd-pl111 1001f000.clcd: using device-specific reserved memory
    drm-clcd-pl111 1001f000.clcd: core tile graphics present
    drm-clcd-pl111 1001f000.clcd: this device will be deactivated
    drm-clcd-pl111 1001f000.clcd: Versatile Express init failed - -19
    drm-clcd-pl111 10020000.clcd: DVI muxed to daughterboard 1 (core tile) CLCD
    drm-clcd-pl111 10020000.clcd: initializing Versatile Express PL111
    drm-clcd-pl111 10020000.clcd: DVI muxed to daughterboard 1 (core tile) CLCD
    drm-clcd-pl111 10020000.clcd: initializing Versatile Express PL111
    clk: Disabling unused clocks
    ALSA device list:
      #0: ARM AC'97 Interface PL041 rev0 at 0x10004000, irq 37
    input: ImExPS/2 Generic Explorer Mouse as /devices/platform/bus@40000000/bus@40000000:motherboard-bus@40000000/bus@40000000:motherboard-bus@40000000:iofpga@7,00000000/10007000.kmi/serio1/input/input2
    drm-clcd-pl111 10020000.clcd: DVI muxed to daughterboard 1 (core tile) CLCD
    drm-clcd-pl111 10020000.clcd: initializing Versatile Express PL111
    EXT4-fs (mmcblk0p2): mounting ext3 file system using the ext4 subsystem
    EXT4-fs (mmcblk0p2): recovery complete
    EXT4-fs (mmcblk0p2): mounted filesystem 37a96b8f-82b1-477b-913c-847a75fea97e r/w with ordered data mode. Quota mode: disabled.
    VFS: Mounted root (ext3 filesystem) on device 179:2.
    Freeing unused kernel image (initmem) memory: 1024K
    Run /linuxrc as init process
      with arguments:
        /linuxrc
      with environment:
        HOME=/
        TERM=linux
    random: crng init done
    mkdir: can't create directory '/dev/pts': File exists
    
    Please press Enter to activate this console. drm-clcd-pl111 10020000.clcd: DVI muxed to daughterboard 1 (core tile) CLCD
    drm-clcd-pl111 10020000.clcd: initializing Versatile Express PL111
    amba 1000f000.wdt: deferred probe pending
    amba 10020000.clcd: deferred probe pending
    amba 100e0000.memory-controller: deferred probe pending
    amba 100e1000.memory-controller: deferred probe pending
    amba 100e5000.watchdog: deferred probe pending
    i2c 0-0039: deferred probe pending
    
    ~ # ls
    bin      etc      linuxrc  sbin     tmp
    dev      lib      proc     sys      usr
    ~ # 
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
    • 73
    • 74
    • 75
    • 76
    • 77
    • 78
    • 79
    • 80
    • 81
    • 82
    • 83
    • 84
    • 85
    • 86
    • 87
    • 88
    • 89
    • 90
    • 91
    • 92
    • 93
    • 94
    • 95
    • 96
    • 97
    • 98
    • 99
    • 100
    • 101
    • 102
    • 103
    • 104
    • 105
    • 106
    • 107
    • 108
    • 109
    • 110
    • 111
    • 112
    • 113
    • 114
    • 115
    • 116
    • 117
    • 118
    • 119
    • 120
    • 121
    • 122
    • 123
    • 124
    • 125
    • 126
    • 127
    • 128
    • 129
    • 130
    • 131
    • 132
    • 133
    • 134
    • 135
    • 136
    • 137
    • 138
    • 139
    • 140
    • 141
    • 142
    • 143
    • 144
    • 145
    • 146
    • 147
    • 148
    • 149
    • 150
    • 151
    • 152
    • 153
    • 154
    • 155
    • 156
    • 157
    • 158
    • 159
    • 160
    • 161
    • 162
    • 163
    • 164
    • 165
    • 166
    • 167
    • 168
    • 169
    • 170
    • 171
    • 172
    • 173
    • 174
    • 175
    • 176
    • 177
    • 178
    • 179
    • 180
    • 181
    • 182
    • 183
    • 184
    • 185
    • 186
    • 187
    • 188
    • 189
    • 190
    • 191
    • 192
    • 193
    • 194
    • 195
    • 196
    • 197
    • 198
    • 199
    • 200
    • 201
    • 202
    • 203
    • 204
    • 205
    • 206
    • 207
    • 208
    • 209
    • 210
    • 211
    • 212
    • 213
    • 214
    • 215
    • 216
    • 217
    • 218
    • 219
    • 220
    • 221
    • 222
    • 223
    • 224
    • 225
    • 226
    • 227
    • 228
    • 229
    • 230
    • 231
    • 232
    • 233
    • 234
    • 235
    • 236
    • 237
    • 238
    • 239
    • 240
    • 241
    • 242
    • 243
    • 244
    • 245
    • 246
    • 247
    • 248
    • 249
    • 250
    • 251
    • 252
    • 253
    • 254
    • 255
    • 256
    • 257
    • 258
    • 259
    • 260
    • 261
    • 262
    • 263
    • 264
    • 265
    • 266
    • 267
    • 268
    • 269
    • 270
    • 271
    • 272
    • 273
    • 274
    • 275
    • 276
    • 277
    • 278
    • 279
    • 280
    • 281
    • 282
    • 283
    • 284
    • 285
    • 286
    • 287
    • 288
    • 289
    • 290
    • 291
    • 292
    • 293
    • 294
    • 295
    • 296
    • 297
    • 298
    • 299
    • 300
    • 301
    • 302
    • 303
    • 304
    • 305
    • 306
    • 307
    • 308
    • 309
    • 310
    • 311
    • 312
    • 313
    • 314
    • 315
    • 316
    • 317
    • 318
    • 319
    • 320
    • 321
    • 322
    • 323
    • 324
    • 325
    • 326
    • 327

    参考

    • https://www.zhaixue.cc/qemu/qemu-intro.html
  • 相关阅读:
    ArcGIS10.4.1属性表导出为乱码解决方法(亲测有效)
    c#运算符重载
    leetcode - 1944. Number of Visible People in a Queue
    C++基础——类的六大特殊成员函数讲解2
    【数据集NO.2】工业检测数据集汇总(缺陷、纹理等检测)
    浅谈齿轮行业MES解决方案的模块和功能
    聚观早报 |GPT-4周活用户数达1亿;长城汽车10月销量增加
    Java 中的 ArrayList 类基础使用
    基于51单片机的全自动智能洗衣机控制系统Proteus仿真
    还在拼冗长的WhereIf吗?100行代码解放这个操作
  • 原文地址:https://blog.csdn.net/tyustli/article/details/134043973