交叉编译(Cross_Compile)是指编译源代码的平台和执行源代码编译后程序的平台是两个不同的平台。
BootLoader是在操作系统内核运行之前运行。可以初始化硬件设备、建立内存空间映射图,从而将系统的软硬件环境带到一个合适状态,以便为最终调用操作系统内核准备好正确的环境。
Bootloader是嵌入式系统在加电后执行的第一段代码,在它完成CPU和相关硬件的初始化之后,再将操作系统映像或固化的嵌入式应用程序装载到内存中然后跳转到操作系统所在的空间,启动操作系统运行。
Linux,全称GNU/Linux,是一种免费使用和自由传播的类UNIX操作系统,其内核由[林纳斯·本纳第克特·托瓦兹于1991年10月5日首次发布,它主要受到Minix和Unix思想的启发,是一个基于POSIX的多用户、多任务、支持多线程和多CPU的操作系统。它能运行主要的Unix工具软件、应用程序和网络协议。它支持32位和64位硬件。Linux继承了Unix以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。
根文件系统首先是内核启动时所mount的第一个文件系统,内核代码映像文件保存在根文件系统中,而系统引导启动程序会在根文件系统挂载之后从中把一些基本的初始化脚本和服务等加载到内存中去运行。
组件 | 版本 |
---|---|
交叉编译工具链 | gcc-linaro-6.5.0-2018.12-x86_64_arm-linux-gnueabihf |
bootloader | u-boot-2018.03 |
linux | linux-4.15 |
根文件系统 | busybox-1.35.0 |
Builds & Downloads | Linaro
Linaro Releases
onlylove@ubuntu:~/my/gcc$ pwd
/home/onlylove/my/gcc
onlylove@ubuntu:~/my/gcc$ ls
gcc-linaro-6.5.0-2018.12-x86_64_arm-linux-gnueabihf.tar.xz
onlylove@ubuntu:~/my/gcc$ xz -d gcc-linaro-6.5.0-2018.12-x86_64_arm-linux-gnueabihf.tar.xz
onlylove@ubuntu:~/my/gcc$ ls
gcc-linaro-6.5.0-2018.12-x86_64_arm-linux-gnueabihf.tar
onlylove@ubuntu:~/my/gcc$ tar -xf gcc-linaro-6.5.0-2018.12-x86_64_arm-linux-gnueabihf.tar
onlylove@ubuntu:~/my/gcc$ ls
gcc-linaro-6.5.0-2018.12-x86_64_arm-linux-gnueabihf gcc-linaro-6.5.0-2018.12-x86_64_arm-linux-gnueabihf.tar
onlylove@ubuntu:~/my/gcc$ mv gcc-linaro-6.5.0-2018.12-x86_64_arm-linux-gnueabihf/ gcc-linaro-6.5.0
onlylove@ubuntu:~/my/gcc$ ls
gcc-linaro-6.5.0 gcc-linaro-6.5.0-2018.12-x86_64_arm-linux-gnueabihf.tar
onlylove@ubuntu:~/my/gcc$ cd gcc-linaro-6.5.0/
onlylove@ubuntu:~/my/gcc/gcc-linaro-6.5.0$ ls
arm-linux-gnueabihf bin gcc-linaro-6.5.0-2018.12-linux-manifest.txt include lib libexec share
onlylove@ubuntu:~/my/gcc/gcc-linaro-6.5.0$
onlylove@ubuntu:~/my/kernel/uboot$ pwd
/home/onlylove/my/kernel/uboot
onlylove@ubuntu:~/my/kernel/uboot$ ls
u-boot-2018.03.tar.bz2
onlylove@ubuntu:~/my/kernel/uboot$ tar -xjf u-boot-2018.03.tar.bz2
onlylove@ubuntu:~/my/kernel/uboot$ ls
u-boot-2018.03 u-boot-2018.03.tar.bz2
onlylove@ubuntu:~/my/kernel/uboot$
# 注释
# set default to nothing for native builds
#ifeq ($(HOSTARCH),$(ARCH))
#CROSS_COMPILE ?=
#endif
# 添加
ARCH ?= arm
CROSS_COMPILE ?= /home/onlylove/my/gcc/gcc-linaro-6.5.0/bin/arm-linux-gnueabihf-
1、查看可用配置文件
onlylove@ubuntu:~/my/kernel/uboot/u-boot-2018.03/configs$ pwd
/home/onlylove/my/kernel/uboot/u-boot-2018.03/configs
onlylove@ubuntu:~/my/kernel/uboot/u-boot-2018.03/configs$ ls vexpress* -l
-rw-rw-r-- 1 onlylove onlylove 1044 Mar 13 2018 vexpress_aemv8a_dram_defconfig
-rw-rw-r-- 1 onlylove onlylove 1134 Mar 13 2018 vexpress_aemv8a_juno_defconfig
-rw-rw-r-- 1 onlylove onlylove 983 Mar 13 2018 vexpress_aemv8a_semi_defconfig
-rw-rw-r-- 1 onlylove onlylove 792 Mar 13 2018 vexpress_ca15_tc2_defconfig
-rw-rw-r-- 1 onlylove onlylove 765 Mar 13 2018 vexpress_ca5x2_defconfig
-rw-rw-r-- 1 onlylove onlylove 765 Mar 13 2018 vexpress_ca9x4_defconfig
onlylove@ubuntu:~/my/kernel/uboot/u-boot-2018.03/configs$
2、配置
onlylove@ubuntu:~/my/kernel/uboot/u-boot-2018.03$ pwd
/home/onlylove/my/kernel/uboot/u-boot-2018.03
onlylove@ubuntu:~/my/kernel/uboot/u-boot-2018.03$ make distclean
CLEAN u-boot.cfg
CLEAN scripts/basic
CLEAN scripts/kconfig
CLEAN include/config include/generated
CLEAN .config include/autoconf.mk include/autoconf.mk.dep include/config.h
onlylove@ubuntu:~/my/kernel/uboot/u-boot-2018.03$ make vexpress_ca9x4_defconfig
HOSTCC scripts/basic/fixdep
HOSTCC scripts/kconfig/conf.o
SHIPPED scripts/kconfig/zconf.tab.c
SHIPPED scripts/kconfig/zconf.lex.c
SHIPPED scripts/kconfig/zconf.hash.c
HOSTCC scripts/kconfig/zconf.tab.o
In file included from scripts/kconfig/zconf.tab.c:2468:
scripts/kconfig/confdata.c: In function ‘conf_write’:
scripts/kconfig/confdata.c:771:19: warning: ‘%s’ directive writing likely 7 or more bytes into a region of size between 1 and 4097 [-Wformat-overflow=]
771 | sprintf(newname, "%s%s", dirname, basename);
| ^~~~~~
scripts/kconfig/confdata.c:771:19: note: assuming directive output of 7 bytes
In file included from /usr/include/stdio.h:867,
from scripts/kconfig/zconf.tab.c:82:
/usr/include/x86_64-linux-gnu/bits/stdio2.h:36:10: note: ‘__builtin___sprintf_chk’ output 1 or more bytes (assuming 4104) into a destination of size 4097
36 | return __builtin___sprintf_chk (__s, __USE_FORTIFY_LEVEL - 1,
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
37 | __bos (__s), __fmt, __va_arg_pack ());
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from scripts/kconfig/zconf.tab.c:2468:
scripts/kconfig/confdata.c:774:20: warning: ‘.tmpconfig.’ directive writing 11 bytes into a region of size between 1 and 4097 [-Wformat-overflow=]
774 | sprintf(tmpname, "%s.tmpconfig.%d", dirname, (int)getpid());
| ^~~~~~~~~~~~~~~~~
In file included from /usr/include/stdio.h:867,
from scripts/kconfig/zconf.tab.c:82:
/usr/include/x86_64-linux-gnu/bits/stdio2.h:36:10: note: ‘__builtin___sprintf_chk’ output between 13 and 4119 bytes into a destination of size 4097
36 | return __builtin___sprintf_chk (__s, __USE_FORTIFY_LEVEL - 1,
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
37 | __bos (__s), __fmt, __va_arg_pack ());
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
HOSTLD scripts/kconfig/conf
#
# configuration written to .config
#
onlylove@ubuntu:~/my/kernel/uboot/u-boot-2018.03$
make -j4
./qemu-system-arm -M vexpress-a9 -m 256 -kernel u-boot -nographic
onlylove@ubuntu:~/my/qemu-lq$ ls
qemu-system-arm u-boot
onlylove@ubuntu:~/my/qemu-lq$ ./qemu-system-arm -M vexpress-a9 -m 256 -kernel u-boot -nographic
U-Boot 2018.03 (Jun 25 2022 - 17:53:48 +0800)
DRAM: 256 MiB
WARNING: Caches not enabled
Flash: 128 MiB
MMC: MMC: 0
*** Warning - bad CRC, using default environment
In: serial
Out: serial
Err: serial
Net: smc911x-0
Hit any key to stop autoboot: 0
=> printenv
arch=arm
baudrate=38400
board=vexpress
board_name=vexpress
boot_a_script=load ${devtype} ${devnum}:${distro_bootpart} ${scriptaddr} ${prefix}${script}; source ${scriptaddr}
boot_efi_binary=if fdt addr ${fdt_addr_r}; then bootefi bootmgr ${fdt_addr_r};else bootefi bootmgr ${fdtcontroladdr};fi;load ${devtype} ${devnum}:${distro_bootpart} ${kernel_addr_r} efi/boot/bootarm.efi; if fdt addr ${fdt_addr_r}; then bootefi ${kernel_addr_r} ${fdt_addr_r};else bootefi ${kernel_addr_r} ${fdtcontroladdr};fi
boot_extlinux=sysboot ${devtype} ${devnum}:${distro_bootpart} any ${scriptaddr} ${prefix}extlinux/extlinux.conf
boot_prefixes=/ /boot/
boot_script_dhcp=boot.scr.uimg
boot_scripts=boot.scr.uimg boot.scr
boot_targets=mmc1 mmc0 pxe dhcp
bootcmd=run distro_bootcmd; run bootflash
bootcmd_dhcp=if dhcp ${scriptaddr} ${boot_script_dhcp}; then source ${scriptaddr}; fi;setenv efi_fdtfile ${fdtfile}; if test -z "${fdtfile}" -a -n "${soc}"; then setenv efi_fdtfile ${soc}-${board}${boardver}.dtb; fi; setenv efi_old_vci ${bootp_vci};setenv efi_old_arch ${bootp_arch};setenv bootp_vci PXEClient:Arch:00010:UNDI:003000;setenv bootp_arch 0xa;if dhcp ${kernel_addr_r}; then tftpboot ${fdt_addr_r} dtb/${efi_fdtfile};if fdt addr ${fdt_addr_r}; then bootefi ${kernel_addr_r} ${fdt_addr_r}; else bootefi ${kernel_addr_r} ${fdtcontroladdr};fi;fi;setenv bootp_vci ${efi_old_vci};setenv bootp_arch ${efi_old_arch};setenv efi_fdtfile;setenv efi_old_arch;setenv efi_old_vci;
bootcmd_mmc0=setenv devnum 0; run mmc_boot
bootcmd_mmc1=setenv devnum 1; run mmc_boot
bootcmd_pxe=dhcp; if pxe get; then pxe boot; fi
bootdelay=2
bootflash=run flashargs; cp ${ramdisk_addr} ${ramdisk_addr_r} ${maxramdisk}; bootm ${kernel_addr} ${ramdisk_addr_r}
console=ttyAMA0,38400n8
cpu=armv7
distro_bootcmd=for target in ${boot_targets}; do run bootcmd_${target}; done
dram=1024M
efi_dtb_prefixes=/ /dtb/ /dtb/current/
ethact=smc911x-0
ethaddr=52:54:00:12:34:56
flashargs=setenv bootargs root=${root} console=${console} mem=${dram} mtdparts=${mtd} mmci.fmax=190000 devtmpfs.mount=0 vmalloc=256M
kernel_addr=0x44100000
kernel_addr_r=0x80008000
load_efi_dtb=load ${devtype} ${devnum}:${distro_bootpart} ${fdt_addr_r} ${prefix}${efi_fdtfile}
loadaddr=0x80008000
maxramdisk=0x1800000
mmc_boot=if mmc dev ${devnum}; then setenv devtype mmc; run scan_dev_for_boot_part; fi
mtd=armflash:1M@0x800000(uboot),7M@0x1000000(kernel),24M@0x2000000(initrd)
pxefile_addr_r=0x88000000
ramdisk_addr=0x44800000
ramdisk_addr_r=0x61000000
root=/dev/sda1 rw
scan_dev_for_boot=echo Scanning ${devtype} ${devnum}:${distro_bootpart}...; for prefix in ${boot_prefixes}; do run scan_dev_for_extlinux; run scan_dev_for_scripts; done;run scan_dev_for_efi;
scan_dev_for_boot_part=part list ${devtype} ${devnum} -bootable devplist; env exists devplist || setenv devplist 1; for distro_bootpart in ${devplist}; do if fstype ${devtype} ${devnum}:${distro_bootpart} bootfstype; then run scan_dev_for_boot; fi; done
scan_dev_for_efi=setenv efi_fdtfile ${fdtfile}; if test -z "${fdtfile}" -a -n "${soc}"; then setenv efi_fdtfile ${soc}-${board}${boardver}.dtb; fi; for prefix in ${efi_dtb_prefixes}; do if test -e ${devtype} ${devnum}:${distro_bootpart} ${prefix}${efi_fdtfile}; then run load_efi_dtb; fi;done;if test -e ${devtype} ${devnum}:${distro_bootpart} efi/boot/bootarm.efi; then echo Found EFI removable media binary efi/boot/bootarm.efi; run boot_efi_binary; echo EFI LOAD FAILED: continuing...; fi; setenv efi_fdtfile
scan_dev_for_extlinux=if test -e ${devtype} ${devnum}:${distro_bootpart} ${prefix}extlinux/extlinux.conf; then echo Found ${prefix}extlinux/extlinux.conf; run boot_extlinux; echo SCRIPT FAILED: continuing...; fi
scan_dev_for_scripts=for script in ${boot_scripts}; do if test -e ${devtype} ${devnum}:${distro_bootpart} ${prefix}${script}; then echo Found U-Boot script ${prefix}${script}; run boot_a_script; echo SCRIPT FAILED: continuing...; fi; done
scriptaddr=0x88000000
stderr=serial
stdin=serial
stdout=serial
vendor=armltd
Environment size: 4076/262140 bytes
=>
onlylove@ubuntu:~/my/kernel/linux$ ls
linux-4.15.tar.gz
onlylove@ubuntu:~/my/kernel/linux$ tar -zxf linux-4.15.tar.gz
onlylove@ubuntu:~/my/kernel/linux$ ls
linux-4.15 linux-4.15.tar.gz
onlylove@ubuntu:~/my/kernel/linux$
1、修改前
ARCH ?= $(SUBARCH)
CROSS_COMPILE ?= $(CONFIG_CROSS_COMPILE:"%"=%)
2、修改后
ARCH ?= arm
CROSS_COMPILE ?= /home/onlylove/my/gcc/gcc-linaro-6.5.0/bin/arm-linux-gnueabihf-
onlylove@ubuntu:~/my/kernel/linux/linux-4.15$ pwd
/home/onlylove/my/kernel/linux/linux-4.15
onlylove@ubuntu:~/my/kernel/linux/linux-4.15$ ls
arch COPYING drivers init kernel mm net security usr
block CREDITS firmware ipc lib modules.builtin README sound virt
built-in.o crypto fs Kbuild MAINTAINERS modules.order samples System.map vmlinux
certs Documentation include Kconfig Makefile Module.symvers scripts tools vmlinux.o
onlylove@ubuntu:~/my/kernel/linux/linux-4.15$ make distclean
CLEAN .
CLEAN arch/arm/kernel
CLEAN arch/arm/vdso
CLEAN drivers/tty/vt
CLEAN drivers/video/logo
./scripts/gcc-version.sh: line 26: /home/onlylove/my/gcc/gcc-linaro-4.9.4/bin/arm-linux-gnueabihf-gcc: No such file or directory
./scripts/gcc-version.sh: line 27: /home/onlylove/my/gcc/gcc-linaro-4.9.4/bin/arm-linux-gnueabihf-gcc: No such file or directory
./scripts/gcc-version.sh: line 26: /home/onlylove/my/gcc/gcc-linaro-4.9.4/bin/arm-linux-gnueabihf-gcc: No such file or directory
./scripts/gcc-version.sh: line 27: /home/onlylove/my/gcc/gcc-linaro-4.9.4/bin/arm-linux-gnueabihf-gcc: No such file or directory
CLEAN kernel
CLEAN lib
CLEAN usr
/bin/sh: 1: /home/onlylove/my/gcc/gcc-linaro-4.9.4/bin/arm-linux-gnueabihf-nm: not found
CLEAN arch/arm/boot/compressed
CLEAN arch/arm/boot
CLEAN .tmp_versions
CLEAN scripts/basic
CLEAN scripts/dtc
make[2]: /home/onlylove/my/gcc/gcc-linaro-4.9.4/bin/arm-linux-gnueabihf-gcc: Command not found
CLEAN scripts/kconfig
CLEAN scripts/mod
CLEAN scripts
CLEAN include/config include/generated arch/arm/include/generated
CLEAN .config .version Module.symvers
onlylove@ubuntu:~/my/kernel/linux/linux-4.15$ make vexpress_defconfig
HOSTCC scripts/basic/fixdep
HOSTCC scripts/kconfig/conf.o
SHIPPED scripts/kconfig/zconf.tab.c
SHIPPED scripts/kconfig/zconf.lex.c
HOSTCC scripts/kconfig/zconf.tab.o
In file included from scripts/kconfig/zconf.tab.c:2468:
scripts/kconfig/confdata.c: In function ‘conf_write’:
scripts/kconfig/confdata.c:773:19: warning: ‘%s’ directive writing likely 7 or more bytes into a region of size between 1 and 4097 [-Wformat-overflow=]
773 | sprintf(newname, "%s%s", dirname, basename);
| ^~~~~~
scripts/kconfig/confdata.c:773:19: note: assuming directive output of 7 bytes
In file included from /usr/include/stdio.h:867,
from scripts/kconfig/zconf.tab.c:82:
/usr/include/x86_64-linux-gnu/bits/stdio2.h:36:10: note: ‘__builtin___sprintf_chk’ output 1 or more bytes (assuming 4104) into a destination of size 4097
36 | return __builtin___sprintf_chk (__s, __USE_FORTIFY_LEVEL - 1,
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
37 | __bos (__s), __fmt, __va_arg_pack ());
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from scripts/kconfig/zconf.tab.c:2468:
scripts/kconfig/confdata.c:776:20: warning: ‘.tmpconfig.’ directive writing 11 bytes into a region of size between 1 and 4097 [-Wformat-overflow=]
776 | sprintf(tmpname, "%s.tmpconfig.%d", dirname, (int)getpid());
| ^~~~~~~~~~~~~~~~~
In file included from /usr/include/stdio.h:867,
from scripts/kconfig/zconf.tab.c:82:
/usr/include/x86_64-linux-gnu/bits/stdio2.h:36:10: note: ‘__builtin___sprintf_chk’ output between 13 and 4119 bytes into a destination of size 4097
36 | return __builtin___sprintf_chk (__s, __USE_FORTIFY_LEVEL - 1,
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
37 | __bos (__s), __fmt, __va_arg_pack ());
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
HOSTLD scripts/kconfig/conf
#
# configuration written to .config
#
onlylove@ubuntu:~/my/kernel/linux/linux-4.15$
make -j4
./qemu-system-arm -M vexpress-a9 -m 512M -kernel zImage -append "rdinit=/linuxrc console=ttyAMA0 loglevel=8" -dtb vexpress-v2p-ca9.dtb -nographic
onlylove@ubuntu:~/my/qemu-lq$ ./qemu-system-arm -M vexpress-a9 -m 512M -kernel zImage -append "rdinit=/linuxrc console=ttyAMA0 loglevel=8" -dtb vexpress-v2p-ca9.dtb -nographic
Booting Linux on physical CPU 0x0
Linux version 4.15.0 (onlylove@ubuntu) (gcc version 6.5.0 (Linaro GCC 6.5-2018.12)) #1 SMP Sat Jun 25 19:45:44 CST 2022
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
Memory policy: Data cache writeback
On node 0 totalpages: 131072
Normal zone: 1024 pages used for memmap
Normal zone: 0 pages reserved
Normal zone: 131072 pages, LIFO batch:31
CPU: All CPU(s) started in SVC mode.
percpu: Embedded 16 pages/cpu @(ptrval) s36044 r8192 d21300 u65536
pcpu-alloc: s36044 r8192 d21300 u65536 alloc=16*4096
pcpu-alloc: [0] 0 [0] 1 [0] 2 [0] 3
Built 1 zonelists, mobility grouping on. Total pages: 130048
Kernel command line: rdinit=/linuxrc console=ttyAMA0 loglevel=8
log_buf_len individual max cpu contribution: 4096 bytes
log_buf_len total cpu_extra contributions: 12288 bytes
log_buf_len min size: 16384 bytes
log_buf_len: 32768 bytes
early log buf free: 15100(92%)
Dentry cache hash table entries: 65536 (order: 6, 262144 bytes)
Inode-cache hash table entries: 32768 (order: 5, 131072 bytes)
Memory: 509624K/524288K available (6144K kernel code, 387K rwdata, 1364K rodata, 1024K init, 165K bss, 14664K reserved, 0K cma-reserved)
Virtual kernel memory layout:
vector : 0xffff0000 - 0xffff1000 ( 4 kB)
fixmap : 0xffc00000 - 0xfff00000 (3072 kB)
vmalloc : 0xa0800000 - 0xff800000 (1520 MB)
lowmem : 0x80000000 - 0xa0000000 ( 512 MB)
modules : 0x7f000000 - 0x80000000 ( 16 MB)
.text : 0x(ptrval) - 0x(ptrval) (7136 kB)
.init : 0x(ptrval) - 0x(ptrval) (1024 kB)
.data : 0x(ptrval) - 0x(ptrval) ( 388 kB)
.bss : 0x(ptrval) - 0x(ptrval) ( 166 kB)
SLUB: HWalign=64, Order=0-3, MinObjects=0, CPUs=4, Nodes=1
Hierarchical RCU implementation.
RCU event tracing is enabled.
RCU restricting CPUs from NR_CPUS=8 to nr_cpu_ids=4.
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
smp_twd: clock not found -2
sched_clock: 32 bits at 24MHz, resolution 41ns, wraps every 89478484971ns
clocksource: arm,sp804: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 1911260446275 ns
Failed to initialize '/smb@4000000/motherboard/iofpga@7,00000000/timer@12000': -22
Console: colour dummy device 80x30
Calibrating local timer... 93.43MHz.
Calibrating delay loop... 1587.60 BogoMIPS (lpj=7938048)
pid_max: default: 32768 minimum: 301
Mount-cache hash table entries: 1024 (order: 0, 4096 bytes)
Mountpoint-cache hash table entries: 1024 (order: 0, 4096 bytes)
CPU: Testing write buffer coherency: ok
CPU0: thread -1, cpu 0, socket 0, mpidr 80000000
Setting up static identity map for 0x60100000 - 0x60100060
Hierarchical SRCU implementation.
smp: Bringing up secondary CPUs ...
smp: Brought up 1 node, 1 CPU
SMP: Total of 1 processors activated (1587.60 BogoMIPS).
CPU: All CPU(s) started in SVC mode.
devtmpfs: initialized
random: get_random_u32 called from bucket_table_alloc+0xf4/0x248 with crng_init=0
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)
random: fast init done
NET: Registered protocol family 16
DMA: preallocated 256 KiB pool for atomic coherent allocations
cpuidle: using governor ladder
hw-breakpoint: debug architecture 0x4 unsupported.
Serial: AMBA PL011 UART driver
OF: amba_device_add() failed (-19) for /memory-controller@100e0000
OF: amba_device_add() failed (-19) for /memory-controller@100e1000
OF: amba_device_add() failed (-19) for /watchdog@100e5000
irq: type mismatch, failed to map hwirq-75 for interrupt-controller@1e001000!
10009000.uart: ttyAMA0 at MMIO 0x10009000 (irq = 38, base_baud = 0) is a PL011 rev1
console [ttyAMA0] enabled
1000a000.uart: ttyAMA1 at MMIO 0x1000a000 (irq = 39, base_baud = 0) is a PL011 rev1
1000b000.uart: ttyAMA2 at MMIO 0x1000b000 (irq = 40, base_baud = 0) is a PL011 rev1
1000c000.uart: ttyAMA3 at MMIO 0x1000c000 (irq = 41, base_baud = 0) is a PL011 rev1
OF: amba_device_add() failed (-19) for /smb@4000000/motherboard/iofpga@7,00000000/wdt@f000
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
Advanced Linux Sound Architecture Driver Initialized.
clocksource: Switched to clocksource arm,sp804
NET: Registered protocol family 2
TCP established hash table entries: 4096 (order: 2, 16384 bytes)
TCP bind hash table entries: 4096 (order: 3, 32768 bytes)
TCP: Hash tables configured (established 4096 bind 4096)
UDP hash table entries: 256 (order: 1, 8192 bytes)
UDP-Lite hash table entries: 256 (order: 1, 8192 bytes)
NET: Registered protocol family 1
RPC: Registered named UNIX socket transport module.
RPC: Registered udp transport module.
RPC: Registered tcp 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=17 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 noop registered (default)
io scheduler mq-deadline registered
io scheduler kyber registered
clcd-pl11x 10020000.clcd: PL111 designer 41 rev2 at 0x10020000
clcd-pl11x 10020000.clcd: clcd@10020000 hardware, 1024x768@59 display
Console: switching to colour frame buffer device 128x48
clcd-pl11x 1001f000.clcd: PL111 designer 41 rev2 at 0x1001f000
clcd-pl11x 1001f000.clcd: clcd@1f000 hardware, 640x480@59 display
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
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"
libphy: Fixed MDIO Bus: probed
libphy: smsc911x-mdio: probed
smsc911x 4e000000.ethernet eth0: MAC Address: 52:54:00:12:34:56
isp1760 4f000000.usb: 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.
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: rtc core: registered pl031 as rtc0
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 34,35 (pio)
ledtrig-cpu: registered to indicate activity on CPUs
usbcore: registered new interface driver usbhid
usbhid: USB HID core driver
aaci-pl041 10004000.aaci: ARM AC'97 Interface PL041 rev0 at 0x10004000, irq 33
aaci-pl041 10004000.aaci: FIFO 512 entries
oprofile: using arm/armv7-ca9
NET: Registered protocol family 17
9pnet: Installing 9P2000 support
Registering SWP/SWPB emulation handler
input: AT Raw Set 2 keyboard as /devices/platform/smb@4000000/smb@4000000:motherboard/smb@4000000:motherboard:iofpga@7,00000000/10006000.kmi/serio0/input/input0
rtc-pl031 10017000.rtc: setting system clock to 2022-06-25 12:09:06 UTC (1656158946)
ALSA device list:
#0: ARM AC'97 Interface PL041 rev0 at 0x10004000, irq 33
input: ImExPS/2 Generic Explorer Mouse as /devices/platform/smb@4000000/smb@4000000:motherboard/smb@4000000:motherboard:iofpga@7,00000000/10007000.kmi/serio1/input/input2
VFS: Cannot open root device "(null)" or unknown-block(0,0): error -6
Please append a correct "root=" boot option; here are the available partitions:
1f00 131072 mtdblock0
(driver?)
1f01 32768 mtdblock1
(driver?)
Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(0,0)
CPU: 0 PID: 1 Comm: swapper/0 Not tainted 4.15.0 #1
Hardware name: ARM-Versatile Express
[<8010fb20>] (unwind_backtrace) from [<8010bd94>] (show_stack+0x10/0x14)
[<8010bd94>] (show_stack) from [<8065ef0c>] (dump_stack+0x84/0x98)
[<8065ef0c>] (dump_stack) from [<8011f00c>] (panic+0xdc/0x248)
[<8011f00c>] (panic) from [<8090128c>] (mount_block_root+0x1b0/0x284)
[<8090128c>] (mount_block_root) from [<80901480>] (mount_root+0x120/0x128)
[<80901480>] (mount_root) from [<809015d8>] (prepare_namespace+0x150/0x194)
[<809015d8>] (prepare_namespace) from [<80900eb4>] (kernel_init_freeable+0x240/0x250)
[<80900eb4>] (kernel_init_freeable) from [<806733d8>] (kernel_init+0x8/0x108)
[<806733d8>] (kernel_init) from [<80107948>] (ret_from_fork+0x14/0x2c)
---[ end Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(0,0)
1、解压
onlylove@ubuntu:~/my/busybox$ ls
busybox-1.35.0.tar.bz2
onlylove@ubuntu:~/my/busybox$ tar -jxf busybox-1.35.0.tar.bz2
onlylove@ubuntu:~/my/busybox$ ls
busybox-1.35.0 busybox-1.35.0.tar.bz2
onlylove@ubuntu:~/my/busybox$
2、设置编译工具链和平台架构
#注释
#CROSS_COMPILE ?=
#ARCH ?= $(SUBARCH)
#添加
CROSS_COMPILE ?= /home/onlylove/my/gcc/gcc-linaro-6.5.0/bin/arm-linux-gnueabihf-
ARCH ?= arm
3、配置
make menuconfig
Settings —>
Build Options
[ ] Build static binary (no shared libs)(勾选)
4、编译
make -j4
onlylove@ubuntu:~/my/busybox/busybox-1.35.0$ make -j4
HOSTLD scripts/kconfig/conf
scripts/kconfig/conf -s Config.in
#
# using defaults found in .config
#
SPLIT include/autoconf.h -> include/config/*
GEN include/bbconfigopts.h
GEN include/common_bufsiz.h
GEN include/embedded_scripts.h
HOSTCC applets/usage
HOSTCC applets/applet_tables
applets/usage.c: In function ‘main’:
applets/usage.c:52:3: warning: ignoring return value of ‘write’, declared with attribute warn_unused_result [-Wunused-resul]
52 | write(STDOUT_FILENO, usage_array[i].usage, strlen(usage_array[i].usage) + 1);
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
GEN include/usage_compressed.h
GEN include/applet_tables.h include/NUM_APPLETS.h
GEN include/applet_tables.h include/NUM_APPLETS.h
HOSTCC applets/usage_pod
CC applets/applets.o
LD applets/built-in.o
DOC busybox.pod
DOC BusyBox.txt
DOC busybox.1
DOC BusyBox.html
LD archival/built-in.o
CC archival/bbunzip.o
CC archival/bzip2.o
LD archival/libarchive/built-in.o
CC archival/libarchive/common.o
LD console-tools/built-in.o
CC console-tools/chvt.o
CC archival/libarchive/data_align.o
CC console-tools/clear.o
CC archival/chksum_and_xwrite_tar_header.o
CC archival/libarchive/data_extract_all.o
CC console-tools/deallocvt.o
CC archival/cpio.o
CC console-tools/dumpkmap.o
CC archival/libarchive/data_extract_to_command.o
CC console-tools/fgconsole.o
CC console-tools/kbd_mode.o
CC archival/libarchive/data_extract_to_stdout.o
CC console-tools/loadfont.o
CC console-tools/loadkmap.o
CC archival/libarchive/data_skip.o
CC archival/dpkg.o
CC console-tools/openvt.o
CC archival/libarchive/decompress_bunzip2.o
CC console-tools/reset.o
LD coreutils/built-in.o
CC coreutils/basename.o
CC console-tools/resize.o
CC coreutils/cat.o
CC console-tools/setconsole.o
CC archival/libarchive/decompress_gunzip.o
CC console-tools/setkeycodes.o
CC coreutils/chgrp.o
CC console-tools/setlogcons.o
CC coreutils/chmod.o
CC archival/dpkg_deb.o
CC console-tools/showkey.o
CC coreutils/chown.o
CC archival/libarchive/decompress_unlzma.o
CC archival/gzip.o
AR console-tools/lib.a
CC archival/lzop.o
CC coreutils/chroot.o
CC archival/libarchive/decompress_unxz.o
CC coreutils/cksum.o
CC coreutils/comm.o
CC archival/rpm.o
CC coreutils/cp.o
CC archival/tar.o
CC coreutils/cut.o
CC archival/unzip.o
CC archival/libarchive/filter_accept_all.o
CC coreutils/date.o
CC coreutils/dd.o
CC archival/libarchive/filter_accept_list.o
AR archival/lib.a
LD coreutils/libcoreutils/built-in.o
CC coreutils/libcoreutils/cp_mv_stat.o
CC coreutils/df.o
CC archival/libarchive/filter_accept_list_reassign.o
CC coreutils/libcoreutils/getopt_mk_fifo_nod.o
CC coreutils/dirname.o
CC archival/libarchive/filter_accept_reject_list.o
CC coreutils/dos2unix.o
AR coreutils/libcoreutils/lib.a
CC coreutils/du.o
LD debianutils/built-in.o
CC debianutils/pipe_progress.o
CC archival/libarchive/find_list_entry.o
CC coreutils/echo.o
CC debianutils/run_parts.o
CC archival/libarchive/get_header_ar.o
LD klibc-utils/built-in.o
CC klibc-utils/resume.o
CC coreutils/env.o
CC debianutils/start_stop_daemon.o
CC archival/libarchive/get_header_cpio.o
AR klibc-utils/lib.a
CC coreutils/expand.o
CC coreutils/expr.o
CC archival/libarchive/get_header_tar.o
CC debianutils/which.o
LD e2fsprogs/built-in.o
CC e2fsprogs/chattr.o
CC coreutils/factor.o
AR debianutils/lib.a
LD editors/built-in.o
CC editors/awk.o
CC e2fsprogs/e2fs_lib.o
CC archival/libarchive/get_header_tar_bz2.o
CC coreutils/false.o
CC e2fsprogs/fsck.o
CC archival/libarchive/get_header_tar_gz.o
CC coreutils/fold.o
CC archival/libarchive/get_header_tar_lzma.o
CC coreutils/head.o
CC archival/libarchive/get_header_tar_xz.o
CC e2fsprogs/lsattr.o
CC archival/libarchive/header_list.o
CC coreutils/hostid.o
AR e2fsprogs/lib.a
CC archival/libarchive/header_skip.o
CC coreutils/id.o
LD findutils/built-in.o
CC findutils/find.o
CC archival/libarchive/header_verbose_list.o
CC coreutils/install.o
CC archival/libarchive/init_handle.o
CC coreutils/link.o
CC archival/libarchive/lzo1x_1.o
CC editors/cmp.o
CC findutils/grep.o
CC coreutils/ln.o
CC archival/libarchive/lzo1x_1o.o
CC editors/diff.o
CC coreutils/logname.o
CC findutils/xargs.o
CC coreutils/ls.o
CC archival/libarchive/lzo1x_d.o
CC archival/libarchive/open_transformer.o
AR findutils/lib.a
LD init/built-in.o
CC init/bootchartd.o
CC editors/ed.o
CC coreutils/md5_sha1_sum.o
CC archival/libarchive/seek_by_jump.o
CC init/halt.o
CC coreutils/mkdir.o
CC archival/libarchive/seek_by_read.o
CC init/init.o
CC archival/libarchive/unpack_ar_archive.o
CC coreutils/mkfifo.o
CC editors/patch.o
CC coreutils/mknod.o
CC archival/libarchive/unsafe_prefix.o
AR init/lib.a
CC archival/libarchive/unsafe_symlink_target.o
CC coreutils/mktemp.o
LD libbb/built-in.o
CC libbb/appletlib.o
CC editors/sed.o
AR archival/libarchive/lib.a
CC coreutils/mv.o
LD libpwdgrp/built-in.o
CC libpwdgrp/pwd_grp.o
CC coreutils/nice.o
CC coreutils/nl.o
CC libpwdgrp/uidgid_get.o
CC libbb/ask_confirmation.o
CC editors/vi.o
CC coreutils/nohup.o
AR libpwdgrp/lib.a
CC libbb/auto_string.o
LD loginutils/built-in.o
CC loginutils/add-remove-shell.o
CC coreutils/nproc.o
CC libbb/bb_askpass.o
CC loginutils/addgroup.o
CC coreutils/od.o
CC libbb/bb_bswap_64.o
CC loginutils/adduser.o
CC libbb/bb_cat.o
CC loginutils/chpasswd.o
CC libbb/bb_do_delay.o
CC loginutils/cryptpw.o
CC libbb/bb_getgroups.o
CC coreutils/paste.o
CC loginutils/deluser.o
CC libbb/bb_getsockname.o
CC coreutils/printenv.o
CC loginutils/getty.o
CC libbb/bb_pwd.o
CC coreutils/printf.o
CC libbb/bb_qsort.o
CC loginutils/login.o
CC coreutils/pwd.o
CC libbb/bb_strtonum.o
AR editors/lib.a
LD mailutils/built-in.o
CC loginutils/passwd.o
CC mailutils/mail.o
CC coreutils/readlink.o
CC libbb/capability.o
CC coreutils/realpath.o
CC loginutils/su.o
CC mailutils/makemime.o
CC libbb/change_identity.o
CC coreutils/rm.o
CC mailutils/popmaildir.o
CC loginutils/sulogin.o
CC libbb/chomp.o
CC coreutils/rmdir.o
CC loginutils/vlock.o
CC libbb/common_bufsiz.o
CC mailutils/reformime.o
CC coreutils/seq.o
CC libbb/compare_string_array.o
AR loginutils/lib.a
LD miscutils/built-in.o
CC miscutils/adjtimex.o
CC mailutils/sendmail.o
CC coreutils/shred.o
CC libbb/concat_path_file.o
CC miscutils/ascii.o
CC coreutils/shuf.o
CC libbb/concat_subpath_file.o
AR mailutils/lib.a
CC miscutils/bc.o
CC miscutils/beep.o
CC libbb/const_hack.o
CC coreutils/sleep.o
CC miscutils/chat.o
CC libbb/copy_file.o
CC coreutils/sort.o
CC miscutils/conspy.o
CC libbb/copyfd.o
CC coreutils/split.o
CC libbb/correct_password.o
CC miscutils/crond.o
CC coreutils/stat.o
CC libbb/crc32.o
CC libbb/default_error_retval.o
CC coreutils/stty.o
CC miscutils/crontab.o
CC libbb/device_open.o
CC libbb/dump.o
CC miscutils/devmem.o
CC coreutils/sum.o
CC miscutils/fbsplash.o
CC coreutils/sync.o
CC libbb/duration.o
CC coreutils/tac.o
CC coreutils/tail.o
CC libbb/endofname.o
CC libbb/executable.o
CC libbb/fclose_nonstdin.o
CC coreutils/tee.o
CC libbb/fflush_stdout_and_exit.o
CC libbb/fgets_str.o
CC coreutils/test.o
CC coreutils/test_ptr_hack.o
CC coreutils/timeout.o
CC libbb/find_mount_point.o
CC miscutils/hdparm.o
CC coreutils/touch.o
CC libbb/find_pid_by_name.o
CC coreutils/tr.o
CC coreutils/true.o
CC libbb/find_root_device.o
CC coreutils/truncate.o
CC coreutils/tty.o
CC libbb/full_write.o
CC coreutils/uname.o
CC coreutils/uniq.o
CC libbb/get_console.o
CC coreutils/unlink.o
CC libbb/get_cpu_count.o
CC coreutils/usleep.o
CC miscutils/hexedit.o
CC libbb/get_last_path_component.o
CC libbb/get_line_from_file.o
CC coreutils/uudecode.o
CC libbb/get_shell_name.o
CC libbb/get_volsize.o
CC miscutils/i2c_tools.o
LD modutils/built-in.o
CC modutils/modinfo.o
CC coreutils/uuencode.o
CC libbb/getopt32.o
CC coreutils/wc.o
CC modutils/modprobe-small.o
CC libbb/getopt_allopts.o
CC coreutils/who.o
CC libbb/getpty.o
CC miscutils/less.o
CC coreutils/whoami.o
CC libbb/hash_md5_sha.o
CC modutils/modutils.o
CC coreutils/yes.o
AR modutils/lib.a
AR coreutils/lib.a
CC libbb/herror_msg.o
LD networking/built-in.o
CC networking/arp.o
CC libbb/human_readable.o
CC libbb/in_ether.o
CC networking/arping.o
CC miscutils/lsscsi.o
CC libbb/inet_cksum.o
CC libbb/inet_common.o
CC libbb/inode_hash.o
CC miscutils/makedevs.o
CC networking/brctl.o
CC networking/dnsd.o
CC libbb/isdirectory.o
CC miscutils/man.o
CC networking/ether-wake.o
CC libbb/isqrt.o
CC networking/ftpd.o
CC networking/ftpgetput.o
CC miscutils/microcom.o
CC libbb/iterate_on_dir.o
CC libbb/kernel_version.o
CC miscutils/mt.o
CC miscutils/nandwrite.o
CC networking/hostname.o
CC libbb/last_char_is.o
CC networking/httpd.o
CC miscutils/partprobe.o
CC libbb/lineedit.o
CC networking/ifconfig.o
CC miscutils/raidautorun.o
CC networking/ifenslave.o
CC miscutils/readahead.o
CC miscutils/runlevel.o
CC networking/ifplugd.o
CC miscutils/rx.o
CC miscutils/setfattr.o
CC networking/ifupdown.o
CC miscutils/setserial.o
CC libbb/lineedit_ptr_hack.o
CC networking/inetd.o
CC libbb/llist.o
CC miscutils/strings.o
CC libbb/logenv.o
CC miscutils/time.o
CC libbb/login.o
CC libbb/loop.o
CC libbb/make_directory.o
CC miscutils/ts.o
CC networking/interface.o
CC libbb/makedev.o
CC libbb/match_fstype.o
CC libbb/messages.o
CC miscutils/ttysize.o
CC networking/ip.o
CC libbb/missing_syscalls.o
CC miscutils/ubi_tools.o
LD networking/libiproute/built-in.o
CC networking/libiproute/ip_parse_common_args.o
CC libbb/mode_string.o
CC networking/ipcalc.o
CC miscutils/ubirename.o
CC networking/libiproute/ipaddress.o
CC libbb/nuke_str.o
CC networking/isrv.o
CC miscutils/volname.o
CC libbb/obscure.o
CC miscutils/watchdog.o
CC libbb/parse_config.o
CC networking/isrv_identd.o
AR miscutils/lib.a
CC networking/nameif.o
CC networking/libiproute/iplink.o
CC libbb/parse_mode.o
CC networking/libiproute/ipneigh.o
CC networking/nbd-client.o
CC libbb/percent_decode.o
CC libbb/perror_msg.o
CC networking/libiproute/iproute.o
CC networking/nc.o
CC networking/libiproute/iprule.o
CC libbb/perror_nomsg.o
CC libbb/perror_nomsg_and_die.o
CC libbb/pidfile.o
CC libbb/platform.o
CC networking/netstat.o
CC libbb/print_flags.o
CC networking/libiproute/iptunnel.o
CC libbb/print_numbered_lines.o
CC networking/libiproute/libnetlink.o
CC libbb/printable.o
CC networking/nslookup.o
CC libbb/printable_string.o
CC networking/libiproute/ll_addr.o
CC networking/libiproute/ll_map.o
CC libbb/process_escape_sequence.o
CC networking/libiproute/ll_proto.o
CC networking/libiproute/ll_types.o
CC networking/ntpd.o
CC libbb/procps.o
CC networking/libiproute/rt_names.o
CC networking/libiproute/rtm_map.o
CC networking/libiproute/utils.o
LD networking/udhcp/built-in.o
CC networking/udhcp/arpping.o
CC libbb/progress.o
CC networking/udhcp/common.o
AR networking/libiproute/lib.a
LD printutils/built-in.o
CC libbb/ptr_to_globals.o
CC printutils/lpd.o
CC libbb/pw_encrypt.o
CC networking/parse_pasv_epsv.o
CC printutils/lpr.o
CC networking/udhcp/d6_dhcpc.o
CC networking/ping.o
AR printutils/lib.a
CC networking/pscan.o
CC libbb/read.o
CC libbb/read_key.o
CC networking/route.o
CC libbb/read_printf.o
CC libbb/recursive_action.o
CC networking/udhcp/d6_packet.o
CC networking/udhcp/d6_socket.o
CC networking/slattach.o
CC libbb/remove_file.o
CC libbb/replace.o
CC networking/udhcp/dhcpc.o
CC networking/udhcp/dhcpd.o
CC libbb/rtc.o
CC networking/ssl_client.o
CC networking/tc.o
CC libbb/run_shell.o
CC libbb/safe_gethostname.o
CC networking/tcpudp.o
LD procps/built-in.o
CC procps/free.o
CC libbb/safe_poll.o
CC networking/udhcp/dhcprelay.o
CC libbb/safe_strncpy.o
CC procps/fuser.o
CC networking/tcpudp_perhost.o
CC networking/udhcp/domain_codec.o
CC libbb/safe_write.o
CC networking/telnet.o
CC procps/iostat.o
CC networking/udhcp/dumpleases.o
CC libbb/securetty.o
CC networking/udhcp/packet.o
CC libbb/setup_environment.o
CC networking/telnetd.o
CC procps/kill.o
CC libbb/signals.o
CC networking/udhcp/signalpipe.o
CC procps/lsof.o
CC libbb/simplify_path.o
CC networking/udhcp/socket.o
CC networking/tftp.o
CC procps/mpstat.o
CC libbb/single_argv.o
AR networking/udhcp/lib.a
CC procps/nmeter.o
CC libbb/skip_whitespace.o
CC networking/tls.o
CC libbb/speed_table.o
CC libbb/str_tolower.o
CC procps/pgrep.o
CC procps/pidof.o
CC libbb/strrstr.o
CC procps/pmap.o
CC procps/powertop.o
CC networking/tls_aes.o
CC libbb/sysconf.o
CC libbb/time.o
CC libbb/trim.o
CC networking/tls_aesgcm.o
CC procps/ps.o
CC libbb/u_signal_names.o
CC libbb/ubi.o
CC networking/tls_fe.o
CC libbb/udp_io.o
CC libbb/unicode.o
CC procps/pstree.o
CC libbb/update_passwd.o
CC networking/tls_pstm.o
CC libbb/utmp.o
CC procps/pwdx.o
CC networking/tls_pstm_montgomery_reduce.o
CC libbb/uuencode.o
CC procps/smemcap.o
CC libbb/verror_msg.o
LD runit/built-in.o
CC runit/chpst.o
CC procps/sysctl.o
CC networking/tls_pstm_mul_comba.o
CC libbb/vfork_daemon_rexec.o
CC runit/runsv.o
CC procps/top.o
CC networking/tls_pstm_sqr_comba.o
CC libbb/warn_ignoring_args.o
CC networking/tls_rsa.o
CC libbb/wfopen.o
CC runit/runsvdir.o
CC networking/tls_sp_c32.o
CC libbb/wfopen_input.o
CC procps/uptime.o
CC libbb/write.o
CC runit/sv.o
CC procps/watch.o
CC libbb/xatonum.o
CC networking/traceroute.o
AR procps/lib.a
CC networking/tunctl.o
CC runit/svlogd.o
CC libbb/xconnect.o
CC libbb/xfunc_die.o
CC networking/vconfig.o
CC libbb/xfuncs.o
CC networking/wget.o
LD selinux/built-in.o
AR selinux/lib.a
LD shell/built-in.o
CC shell/ash.o
CC libbb/xfuncs_printf.o
AR runit/lib.a
LD sysklogd/built-in.o
CC sysklogd/klogd.o
CC sysklogd/logread.o
CC libbb/xgetcwd.o
CC networking/whois.o
CC sysklogd/syslogd_and_logger.o
CC libbb/xgethostbyname.o
CC networking/zcip.o
CC libbb/xreadlink.o
AR networking/lib.a
LD util-linux/built-in.o
CC util-linux/acpid.o
CC libbb/xrealloc_vector.o
AR sysklogd/lib.a
LD util-linux/volume_id/built-in.o
CC util-linux/volume_id/bcache.o
CC libbb/xregcomp.o
CC util-linux/blkdiscard.o
CC util-linux/volume_id/btrfs.o
AR libbb/lib.a
CC shell/ash_ptr_hack.o
CC util-linux/blkid.o
CC shell/cttyhack.o
CC util-linux/volume_id/cramfs.o
CC util-linux/blockdev.o
CC util-linux/volume_id/erofs.o
CC shell/hush.o
CC util-linux/cal.o
CC util-linux/volume_id/exfat.o
CC util-linux/volume_id/ext.o
CC util-linux/chrt.o
CC util-linux/volume_id/f2fs.o
CC util-linux/dmesg.o
CC util-linux/volume_id/fat.o
CC util-linux/eject.o
CC util-linux/volume_id/get_devname.o
CC util-linux/fallocate.o
CC util-linux/volume_id/hfs.o
CC util-linux/fatattr.o
CC util-linux/volume_id/iso9660.o
CC util-linux/fbset.o
CC util-linux/volume_id/jfs.o
CC util-linux/fdformat.o
CC util-linux/volume_id/lfs.o
CC util-linux/fdisk.o
CC util-linux/volume_id/linux_raid.o
CC util-linux/volume_id/linux_swap.o
CC util-linux/volume_id/luks.o
CC util-linux/volume_id/minix.o
CC util-linux/volume_id/nilfs.o
CC shell/match.o
CC util-linux/volume_id/ntfs.o
CC shell/math.o
CC shell/random.o
CC util-linux/volume_id/ocfs2.o
CC util-linux/findfs.o
CC shell/shell_common.o
CC util-linux/volume_id/reiserfs.o
CC util-linux/flock.o
CC util-linux/freeramdisk.o
CC util-linux/volume_id/romfs.o
CC util-linux/fsck_minix.o
CC util-linux/fsfreeze.o
AR shell/lib.a
CC util-linux/fstrim.o
CC util-linux/volume_id/squashfs.o
CC util-linux/getopt.o
CC util-linux/hexdump.o
CC util-linux/volume_id/sysv.o
CC util-linux/hexdump_xxd.o
CC util-linux/volume_id/ubifs.o
CC util-linux/hwclock.o
CC util-linux/volume_id/udf.o
CC util-linux/ionice.o
CC util-linux/ipcrm.o
CC util-linux/ipcs.o
CC util-linux/last_fancy.o
CC util-linux/volume_id/util.o
CC util-linux/losetup.o
CC util-linux/lspci.o
CC util-linux/lsusb.o
CC util-linux/volume_id/volume_id.o
CC util-linux/mdev.o
CC util-linux/volume_id/xfs.o
CC util-linux/mesg.o
CC util-linux/mkfs_ext2.o
AR util-linux/volume_id/lib.a
CC util-linux/mkfs_minix.o
CC util-linux/mkfs_vfat.o
CC util-linux/mkswap.o
CC util-linux/more.o
CC util-linux/mount.o
CC util-linux/mountpoint.o
CC util-linux/nsenter.o
CC util-linux/pivot_root.o
CC util-linux/rdate.o
CC util-linux/rdev.o
CC util-linux/readprofile.o
CC util-linux/renice.o
CC util-linux/rev.o
CC util-linux/rtcwake.o
CC util-linux/script.o
CC util-linux/scriptreplay.o
CC util-linux/setarch.o
CC util-linux/setpriv.o
CC util-linux/setsid.o
CC util-linux/swaponoff.o
CC util-linux/switch_root.o
CC util-linux/taskset.o
CC util-linux/uevent.o
CC util-linux/umount.o
CC util-linux/unshare.o
CC util-linux/wall.o
AR util-linux/lib.a
LINK busybox_unstripped
Static linking against glibc, can't use --gc-sections
Trying libraries: crypt m resolv rt
Library crypt is not needed, excluding it
Library m is needed, can't exclude it (yet)
Library resolv is needed, can't exclude it (yet)
Library rt is not needed, excluding it
Library m is needed, can't exclude it (yet)
Library resolv is needed, can't exclude it (yet)
Final link with: m resolv
onlylove@ubuntu:~/my/busybox/busybox-1.35.0$
5、安装
make install
onlylove@ubuntu:~/my/busybox/busybox-1.35.0$ make install
./_install//bin/arch -> busybox
./_install//bin/ash -> busybox
./_install//bin/base32 -> busybox
./_install//bin/base64 -> busybox
./_install//bin/cat -> busybox
./_install//bin/chattr -> busybox
./_install//bin/chgrp -> busybox
./_install//bin/chmod -> busybox
./_install//bin/chown -> busybox
./_install//bin/conspy -> busybox
./_install//bin/cp -> busybox
./_install//bin/cpio -> busybox
./_install//bin/cttyhack -> busybox
./_install//bin/date -> busybox
./_install//bin/dd -> busybox
./_install//bin/df -> busybox
./_install//bin/dmesg -> busybox
./_install//bin/dnsdomainname -> busybox
./_install//bin/dumpkmap -> busybox
./_install//bin/echo -> busybox
./_install//bin/ed -> busybox
./_install//bin/egrep -> busybox
./_install//bin/false -> busybox
./_install//bin/fatattr -> busybox
./_install//bin/fdflush -> busybox
./_install//bin/fgrep -> busybox
./_install//bin/fsync -> busybox
./_install//bin/getopt -> busybox
./_install//bin/grep -> busybox
./_install//bin/gunzip -> busybox
./_install//bin/gzip -> busybox
./_install//bin/hostname -> busybox
./_install//bin/hush -> busybox
./_install//bin/ionice -> busybox
./_install//bin/iostat -> busybox
./_install//bin/ipcalc -> busybox
./_install//bin/kbd_mode -> busybox
./_install//bin/kill -> busybox
./_install//bin/link -> busybox
./_install//bin/linux32 -> busybox
./_install//bin/linux64 -> busybox
./_install//bin/ln -> busybox
./_install//bin/login -> busybox
./_install//bin/ls -> busybox
./_install//bin/lsattr -> busybox
./_install//bin/lzop -> busybox
./_install//bin/makemime -> busybox
./_install//bin/mkdir -> busybox
./_install//bin/mknod -> busybox
./_install//bin/mktemp -> busybox
./_install//bin/more -> busybox
./_install//bin/mount -> busybox
./_install//bin/mountpoint -> busybox
./_install//bin/mpstat -> busybox
./_install//bin/mt -> busybox
./_install//bin/mv -> busybox
./_install//bin/netstat -> busybox
./_install//bin/nice -> busybox
./_install//bin/pidof -> busybox
./_install//bin/ping -> busybox
./_install//bin/ping6 -> busybox
./_install//bin/pipe_progress -> busybox
./_install//bin/printenv -> busybox
./_install//bin/ps -> busybox
./_install//bin/pwd -> busybox
./_install//bin/reformime -> busybox
./_install//bin/resume -> busybox
./_install//bin/rev -> busybox
./_install//bin/rm -> busybox
./_install//bin/rmdir -> busybox
./_install//bin/rpm -> busybox
./_install//bin/run-parts -> busybox
./_install//bin/scriptreplay -> busybox
./_install//bin/sed -> busybox
./_install//bin/setarch -> busybox
./_install//bin/setpriv -> busybox
./_install//bin/setserial -> busybox
./_install//bin/sh -> busybox
./_install//bin/sleep -> busybox
./_install//bin/stat -> busybox
./_install//bin/stty -> busybox
./_install//bin/su -> busybox
./_install//bin/sync -> busybox
./_install//bin/tar -> busybox
./_install//bin/touch -> busybox
./_install//bin/true -> busybox
./_install//bin/umount -> busybox
./_install//bin/uname -> busybox
./_install//bin/usleep -> busybox
./_install//bin/vi -> busybox
./_install//bin/watch -> busybox
./_install//bin/zcat -> busybox
./_install//linuxrc -> bin/busybox
./_install//sbin/acpid -> ../bin/busybox
./_install//sbin/adjtimex -> ../bin/busybox
./_install//sbin/arp -> ../bin/busybox
./_install//sbin/blkid -> ../bin/busybox
./_install//sbin/blockdev -> ../bin/busybox
./_install//sbin/bootchartd -> ../bin/busybox
./_install//sbin/depmod -> ../bin/busybox
./_install//sbin/devmem -> ../bin/busybox
./_install//sbin/fbsplash -> ../bin/busybox
./_install//sbin/fdisk -> ../bin/busybox
./_install//sbin/findfs -> ../bin/busybox
./_install//sbin/freeramdisk -> ../bin/busybox
./_install//sbin/fsck -> ../bin/busybox
./_install//sbin/fsck.minix -> ../bin/busybox
./_install//sbin/fstrim -> ../bin/busybox
./_install//sbin/getty -> ../bin/busybox
./_install//sbin/halt -> ../bin/busybox
./_install//sbin/hdparm -> ../bin/busybox
./_install//sbin/hwclock -> ../bin/busybox
./_install//sbin/ifconfig -> ../bin/busybox
./_install//sbin/ifdown -> ../bin/busybox
./_install//sbin/ifenslave -> ../bin/busybox
./_install//sbin/ifup -> ../bin/busybox
./_install//sbin/init -> ../bin/busybox
./_install//sbin/insmod -> ../bin/busybox
./_install//sbin/ip -> ../bin/busybox
./_install//sbin/ipaddr -> ../bin/busybox
./_install//sbin/iplink -> ../bin/busybox
./_install//sbin/ipneigh -> ../bin/busybox
./_install//sbin/iproute -> ../bin/busybox
./_install//sbin/iprule -> ../bin/busybox
./_install//sbin/iptunnel -> ../bin/busybox
./_install//sbin/klogd -> ../bin/busybox
./_install//sbin/loadkmap -> ../bin/busybox
./_install//sbin/logread -> ../bin/busybox
./_install//sbin/losetup -> ../bin/busybox
./_install//sbin/lsmod -> ../bin/busybox
./_install//sbin/makedevs -> ../bin/busybox
./_install//sbin/mdev -> ../bin/busybox
./_install//sbin/mkdosfs -> ../bin/busybox
./_install//sbin/mke2fs -> ../bin/busybox
./_install//sbin/mkfs.ext2 -> ../bin/busybox
./_install//sbin/mkfs.minix -> ../bin/busybox
./_install//sbin/mkfs.vfat -> ../bin/busybox
./_install//sbin/mkswap -> ../bin/busybox
./_install//sbin/modinfo -> ../bin/busybox
./_install//sbin/modprobe -> ../bin/busybox
./_install//sbin/nameif -> ../bin/busybox
./_install//sbin/pivot_root -> ../bin/busybox
./_install//sbin/poweroff -> ../bin/busybox
./_install//sbin/raidautorun -> ../bin/busybox
./_install//sbin/reboot -> ../bin/busybox
./_install//sbin/rmmod -> ../bin/busybox
./_install//sbin/route -> ../bin/busybox
./_install//sbin/run-init -> ../bin/busybox
./_install//sbin/runlevel -> ../bin/busybox
./_install//sbin/setconsole -> ../bin/busybox
./_install//sbin/slattach -> ../bin/busybox
./_install//sbin/start-stop-daemon -> ../bin/busybox
./_install//sbin/sulogin -> ../bin/busybox
./_install//sbin/swapoff -> ../bin/busybox
./_install//sbin/swapon -> ../bin/busybox
./_install//sbin/switch_root -> ../bin/busybox
./_install//sbin/sysctl -> ../bin/busybox
./_install//sbin/syslogd -> ../bin/busybox
./_install//sbin/tc -> ../bin/busybox
./_install//sbin/tunctl -> ../bin/busybox
./_install//sbin/udhcpc -> ../bin/busybox
./_install//sbin/uevent -> ../bin/busybox
./_install//sbin/vconfig -> ../bin/busybox
./_install//sbin/watchdog -> ../bin/busybox
./_install//sbin/zcip -> ../bin/busybox
./_install//usr/bin/[ -> ../../bin/busybox
./_install//usr/bin/[[ -> ../../bin/busybox
./_install//usr/bin/ascii -> ../../bin/busybox
./_install//usr/bin/awk -> ../../bin/busybox
./_install//usr/bin/basename -> ../../bin/busybox
./_install//usr/bin/bc -> ../../bin/busybox
./_install//usr/bin/beep -> ../../bin/busybox
./_install//usr/bin/blkdiscard -> ../../bin/busybox
./_install//usr/bin/bunzip2 -> ../../bin/busybox
./_install//usr/bin/bzcat -> ../../bin/busybox
./_install//usr/bin/bzip2 -> ../../bin/busybox
./_install//usr/bin/cal -> ../../bin/busybox
./_install//usr/bin/chpst -> ../../bin/busybox
./_install//usr/bin/chrt -> ../../bin/busybox
./_install//usr/bin/chvt -> ../../bin/busybox
./_install//usr/bin/cksum -> ../../bin/busybox
./_install//usr/bin/clear -> ../../bin/busybox
./_install//usr/bin/cmp -> ../../bin/busybox
./_install//usr/bin/comm -> ../../bin/busybox
./_install//usr/bin/crc32 -> ../../bin/busybox
./_install//usr/bin/crontab -> ../../bin/busybox
./_install//usr/bin/cryptpw -> ../../bin/busybox
./_install//usr/bin/cut -> ../../bin/busybox
./_install//usr/bin/dc -> ../../bin/busybox
./_install//usr/bin/deallocvt -> ../../bin/busybox
./_install//usr/bin/diff -> ../../bin/busybox
./_install//usr/bin/dirname -> ../../bin/busybox
./_install//usr/bin/dos2unix -> ../../bin/busybox
./_install//usr/bin/dpkg -> ../../bin/busybox
./_install//usr/bin/dpkg-deb -> ../../bin/busybox
./_install//usr/bin/du -> ../../bin/busybox
./_install//usr/bin/dumpleases -> ../../bin/busybox
./_install//usr/bin/eject -> ../../bin/busybox
./_install//usr/bin/env -> ../../bin/busybox
./_install//usr/bin/envdir -> ../../bin/busybox
./_install//usr/bin/envuidgid -> ../../bin/busybox
./_install//usr/bin/expand -> ../../bin/busybox
./_install//usr/bin/expr -> ../../bin/busybox
./_install//usr/bin/factor -> ../../bin/busybox
./_install//usr/bin/fallocate -> ../../bin/busybox
./_install//usr/bin/fgconsole -> ../../bin/busybox
./_install//usr/bin/find -> ../../bin/busybox
./_install//usr/bin/flock -> ../../bin/busybox
./_install//usr/bin/fold -> ../../bin/busybox
./_install//usr/bin/free -> ../../bin/busybox
./_install//usr/bin/ftpget -> ../../bin/busybox
./_install//usr/bin/ftpput -> ../../bin/busybox
./_install//usr/bin/fuser -> ../../bin/busybox
./_install//usr/bin/groups -> ../../bin/busybox
./_install//usr/bin/hd -> ../../bin/busybox
./_install//usr/bin/head -> ../../bin/busybox
./_install//usr/bin/hexdump -> ../../bin/busybox
./_install//usr/bin/hexedit -> ../../bin/busybox
./_install//usr/bin/hostid -> ../../bin/busybox
./_install//usr/bin/id -> ../../bin/busybox
./_install//usr/bin/install -> ../../bin/busybox
./_install//usr/bin/ipcrm -> ../../bin/busybox
./_install//usr/bin/ipcs -> ../../bin/busybox
./_install//usr/bin/killall -> ../../bin/busybox
./_install//usr/bin/last -> ../../bin/busybox
./_install//usr/bin/less -> ../../bin/busybox
./_install//usr/bin/logger -> ../../bin/busybox
./_install//usr/bin/logname -> ../../bin/busybox
./_install//usr/bin/lpq -> ../../bin/busybox
./_install//usr/bin/lpr -> ../../bin/busybox
./_install//usr/bin/lsof -> ../../bin/busybox
./_install//usr/bin/lspci -> ../../bin/busybox
./_install//usr/bin/lsscsi -> ../../bin/busybox
./_install//usr/bin/lsusb -> ../../bin/busybox
./_install//usr/bin/lzcat -> ../../bin/busybox
./_install//usr/bin/lzma -> ../../bin/busybox
./_install//usr/bin/man -> ../../bin/busybox
./_install//usr/bin/md5sum -> ../../bin/busybox
./_install//usr/bin/mesg -> ../../bin/busybox
./_install//usr/bin/microcom -> ../../bin/busybox
./_install//usr/bin/mkfifo -> ../../bin/busybox
./_install//usr/bin/mkpasswd -> ../../bin/busybox
./_install//usr/bin/nc -> ../../bin/busybox
./_install//usr/bin/nl -> ../../bin/busybox
./_install//usr/bin/nmeter -> ../../bin/busybox
./_install//usr/bin/nohup -> ../../bin/busybox
./_install//usr/bin/nproc -> ../../bin/busybox
./_install//usr/bin/nsenter -> ../../bin/busybox
./_install//usr/bin/nslookup -> ../../bin/busybox
./_install//usr/bin/od -> ../../bin/busybox
./_install//usr/bin/openvt -> ../../bin/busybox
./_install//usr/bin/passwd -> ../../bin/busybox
./_install//usr/bin/paste -> ../../bin/busybox
./_install//usr/bin/patch -> ../../bin/busybox
./_install//usr/bin/pgrep -> ../../bin/busybox
./_install//usr/bin/pkill -> ../../bin/busybox
./_install//usr/bin/pmap -> ../../bin/busybox
./_install//usr/bin/printf -> ../../bin/busybox
./_install//usr/bin/pscan -> ../../bin/busybox
./_install//usr/bin/pstree -> ../../bin/busybox
./_install//usr/bin/pwdx -> ../../bin/busybox
./_install//usr/bin/readlink -> ../../bin/busybox
./_install//usr/bin/realpath -> ../../bin/busybox
./_install//usr/bin/renice -> ../../bin/busybox
./_install//usr/bin/reset -> ../../bin/busybox
./_install//usr/bin/resize -> ../../bin/busybox
./_install//usr/bin/rpm2cpio -> ../../bin/busybox
./_install//usr/bin/runsv -> ../../bin/busybox
./_install//usr/bin/runsvdir -> ../../bin/busybox
./_install//usr/bin/rx -> ../../bin/busybox
./_install//usr/bin/script -> ../../bin/busybox
./_install//usr/bin/seq -> ../../bin/busybox
./_install//usr/bin/setfattr -> ../../bin/busybox
./_install//usr/bin/setkeycodes -> ../../bin/busybox
./_install//usr/bin/setsid -> ../../bin/busybox
./_install//usr/bin/setuidgid -> ../../bin/busybox
./_install//usr/bin/sha1sum -> ../../bin/busybox
./_install//usr/bin/sha256sum -> ../../bin/busybox
./_install//usr/bin/sha3sum -> ../../bin/busybox
./_install//usr/bin/sha512sum -> ../../bin/busybox
./_install//usr/bin/showkey -> ../../bin/busybox
./_install//usr/bin/shred -> ../../bin/busybox
./_install//usr/bin/shuf -> ../../bin/busybox
./_install//usr/bin/smemcap -> ../../bin/busybox
./_install//usr/bin/softlimit -> ../../bin/busybox
./_install//usr/bin/sort -> ../../bin/busybox
./_install//usr/bin/split -> ../../bin/busybox
./_install//usr/bin/ssl_client -> ../../bin/busybox
./_install//usr/bin/strings -> ../../bin/busybox
./_install//usr/bin/sum -> ../../bin/busybox
./_install//usr/bin/sv -> ../../bin/busybox
./_install//usr/bin/svc -> ../../bin/busybox
./_install//usr/bin/svok -> ../../bin/busybox
./_install//usr/bin/tac -> ../../bin/busybox
./_install//usr/bin/tail -> ../../bin/busybox
./_install//usr/bin/taskset -> ../../bin/busybox
./_install//usr/bin/tcpsvd -> ../../bin/busybox
./_install//usr/bin/tee -> ../../bin/busybox
./_install//usr/bin/telnet -> ../../bin/busybox
./_install//usr/bin/test -> ../../bin/busybox
./_install//usr/bin/tftp -> ../../bin/busybox
./_install//usr/bin/time -> ../../bin/busybox
./_install//usr/bin/timeout -> ../../bin/busybox
./_install//usr/bin/top -> ../../bin/busybox
./_install//usr/bin/tr -> ../../bin/busybox
./_install//usr/bin/traceroute -> ../../bin/busybox
./_install//usr/bin/traceroute6 -> ../../bin/busybox
./_install//usr/bin/truncate -> ../../bin/busybox
./_install//usr/bin/ts -> ../../bin/busybox
./_install//usr/bin/tty -> ../../bin/busybox
./_install//usr/bin/ttysize -> ../../bin/busybox
./_install//usr/bin/udhcpc6 -> ../../bin/busybox
./_install//usr/bin/udpsvd -> ../../bin/busybox
./_install//usr/bin/unexpand -> ../../bin/busybox
./_install//usr/bin/uniq -> ../../bin/busybox
./_install//usr/bin/unix2dos -> ../../bin/busybox
./_install//usr/bin/unlink -> ../../bin/busybox
./_install//usr/bin/unlzma -> ../../bin/busybox
./_install//usr/bin/unshare -> ../../bin/busybox
./_install//usr/bin/unxz -> ../../bin/busybox
./_install//usr/bin/unzip -> ../../bin/busybox
./_install//usr/bin/uptime -> ../../bin/busybox
./_install//usr/bin/users -> ../../bin/busybox
./_install//usr/bin/uudecode -> ../../bin/busybox
./_install//usr/bin/uuencode -> ../../bin/busybox
./_install//usr/bin/vlock -> ../../bin/busybox
./_install//usr/bin/volname -> ../../bin/busybox
./_install//usr/bin/w -> ../../bin/busybox
./_install//usr/bin/wall -> ../../bin/busybox
./_install//usr/bin/wc -> ../../bin/busybox
./_install//usr/bin/wget -> ../../bin/busybox
./_install//usr/bin/which -> ../../bin/busybox
./_install//usr/bin/who -> ../../bin/busybox
./_install//usr/bin/whoami -> ../../bin/busybox
./_install//usr/bin/whois -> ../../bin/busybox
./_install//usr/bin/xargs -> ../../bin/busybox
./_install//usr/bin/xxd -> ../../bin/busybox
./_install//usr/bin/xz -> ../../bin/busybox
./_install//usr/bin/xzcat -> ../../bin/busybox
./_install//usr/bin/yes -> ../../bin/busybox
./_install//usr/sbin/add-shell -> ../../bin/busybox
./_install//usr/sbin/addgroup -> ../../bin/busybox
./_install//usr/sbin/adduser -> ../../bin/busybox
./_install//usr/sbin/arping -> ../../bin/busybox
./_install//usr/sbin/brctl -> ../../bin/busybox
./_install//usr/sbin/chat -> ../../bin/busybox
./_install//usr/sbin/chpasswd -> ../../bin/busybox
./_install//usr/sbin/chroot -> ../../bin/busybox
./_install//usr/sbin/crond -> ../../bin/busybox
./_install//usr/sbin/delgroup -> ../../bin/busybox
./_install//usr/sbin/deluser -> ../../bin/busybox
./_install//usr/sbin/dhcprelay -> ../../bin/busybox
./_install//usr/sbin/dnsd -> ../../bin/busybox
./_install//usr/sbin/ether-wake -> ../../bin/busybox
./_install//usr/sbin/fakeidentd -> ../../bin/busybox
./_install//usr/sbin/fbset -> ../../bin/busybox
./_install//usr/sbin/fdformat -> ../../bin/busybox
./_install//usr/sbin/fsfreeze -> ../../bin/busybox
./_install//usr/sbin/ftpd -> ../../bin/busybox
./_install//usr/sbin/httpd -> ../../bin/busybox
./_install//usr/sbin/i2cdetect -> ../../bin/busybox
./_install//usr/sbin/i2cdump -> ../../bin/busybox
./_install//usr/sbin/i2cget -> ../../bin/busybox
./_install//usr/sbin/i2cset -> ../../bin/busybox
./_install//usr/sbin/i2ctransfer -> ../../bin/busybox
./_install//usr/sbin/ifplugd -> ../../bin/busybox
./_install//usr/sbin/inetd -> ../../bin/busybox
./_install//usr/sbin/killall5 -> ../../bin/busybox
./_install//usr/sbin/loadfont -> ../../bin/busybox
./_install//usr/sbin/lpd -> ../../bin/busybox
./_install//usr/sbin/mim -> ../../bin/busybox
./_install//usr/sbin/nanddump -> ../../bin/busybox
./_install//usr/sbin/nandwrite -> ../../bin/busybox
./_install//usr/sbin/nbd-client -> ../../bin/busybox
./_install//usr/sbin/nologin -> ../../bin/busybox
./_install//usr/sbin/ntpd -> ../../bin/busybox
./_install//usr/sbin/partprobe -> ../../bin/busybox
./_install//usr/sbin/popmaildir -> ../../bin/busybox
./_install//usr/sbin/powertop -> ../../bin/busybox
./_install//usr/sbin/rdate -> ../../bin/busybox
./_install//usr/sbin/rdev -> ../../bin/busybox
./_install//usr/sbin/readahead -> ../../bin/busybox
./_install//usr/sbin/readprofile -> ../../bin/busybox
./_install//usr/sbin/remove-shell -> ../../bin/busybox
./_install//usr/sbin/rtcwake -> ../../bin/busybox
./_install//usr/sbin/sendmail -> ../../bin/busybox
./_install//usr/sbin/setfont -> ../../bin/busybox
./_install//usr/sbin/setlogcons -> ../../bin/busybox
./_install//usr/sbin/svlogd -> ../../bin/busybox
./_install//usr/sbin/telnetd -> ../../bin/busybox
./_install//usr/sbin/tftpd -> ../../bin/busybox
./_install//usr/sbin/ubiattach -> ../../bin/busybox
./_install//usr/sbin/ubidetach -> ../../bin/busybox
./_install//usr/sbin/ubimkvol -> ../../bin/busybox
./_install//usr/sbin/ubirename -> ../../bin/busybox
./_install//usr/sbin/ubirmvol -> ../../bin/busybox
./_install//usr/sbin/ubirsvol -> ../../bin/busybox
./_install//usr/sbin/ubiupdatevol -> ../../bin/busybox
./_install//usr/sbin/udhcpd -> ../../bin/busybox
--------------------------------------------------
You will probably need to make your busybox binary
setuid root to ensure all configured applets will
work properly.
--------------------------------------------------
onlylove@ubuntu:~/my/busybox/busybox-1.35.0$
6、测试
onlylove@ubuntu:~/my/busybox/busybox-1.35.0$ ls
applets configs _install Makefile.help runit
applets_sh console-tools INSTALL make_single_applets.sh scripts
arch coreutils klibc-utils miscutils selinux
archival debianutils libbb modutils shell
AUTHORS docs libpwdgrp networking size_single_applets.sh
busybox e2fsprogs LICENSE NOFORK_NOEXEC.lst sysklogd
busybox.links editors loginutils NOFORK_NOEXEC.sh testsuite
busybox_unstripped examples mailutils printutils TODO
busybox_unstripped.map findutils Makefile procps TODO_unicode
busybox_unstripped.out include Makefile.custom qemu_multiarch_testing util-linux
Config.in init Makefile.flags README
onlylove@ubuntu:~/my/busybox/busybox-1.35.0$ ls -l _install/
total 12
drwxrwxr-x 2 onlylove onlylove 4096 Jun 25 21:39 bin
lrwxrwxrwx 1 onlylove onlylove 11 Jun 25 21:39 linuxrc -> bin/busybox
drwxrwxr-x 2 onlylove onlylove 4096 Jun 25 21:39 sbin
drwxrwxr-x 4 onlylove onlylove 4096 Jun 25 21:39 usr
onlylove@ubuntu:~/my/busybox/busybox-1.35.0$
7、异常处理
异常:
<command-line>: fatal error: curses.h: No such file or directory
解决方案:
sudo apt-get install libncurses5-dev libncursesw5-dev
mkdir rootfs
cp -r ……/busybox/_install/* ……/rootfs/
1、、创建 dev 文件夹
mkdir dev
2、创建4个串口设备
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
3、创建控制台
sudo mknod -m 666 console c 5 1
4、创建null
sudo mknod -m 666 null c 1 3
1、创建 lib 文件夹
mkdir lib
2、将交叉编译链arm-linux-gnueabihe/libc/lib
下的所有so和.a文件拷贝到刚才创建的lib文件下
cp *so* *.a ……/rootfs/lib -d
3、将刚拷贝过来放在lib目录下的ld-linux-armhf.so.3
的软链接改为源文件,首先删除文件
rm ld-linux-armhf.so.3
4、然后重新在交叉编译链arm-linux-gnueabihe/libc/lib
下将文件拷贝过来
cp ld-linux-armhf.so.3 ……/rootfs/lib
5、将交叉编译链arm-linux-gnueabihe/lib
下的所有so和.a文件拷贝到刚才创建的lib文件下
cp *so* *.a ……/rootfs/lib -d
6、在生成的根文件目录下创建usr/lib
文件夹
mkdir usr/lib
cd usr/lib
7、将交叉编译链arm-linux-gnueabihe/libc/usr/lib
下的所有so和.a文件拷贝到刚才创建的lib文件下
cp *so* *.a ……/rootfs/usr/lib -d
8、通过du命令查看刚才拷贝文件的大小
du ./lib ./usr/lib
mkdir proc mnt sys tmp root etc
1、目录:/etc/init.d/rcS
#! /bin/sh
PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/bin:$PATH
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/lib:/usr/lib
export PATH LD_LIBRARY_PATH
mount -a
mkdir /dev/pts
mount -t devpts devpts /dev/pts
echo /sbin/mdev > /proc/sys/kernel/hotplug
mdev -s
2、更改权限
chmod 777 rcS
/etc
路径下创建fstab
文件
#
proc /proc proc defaults 0 0
tmpfs /tmp tmpfs defaults 0 0
sysfs /sys sysfs defaults 0 0
/etc
路径下创建inittab
文件
#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
1、生成一个空的SD卡镜像
dd if=/dev/zero of=uboot.disk bs=1M count=1024
2、创建GPT分区,下面创建了两个分区,一个用来存放kernel和设备树,另一个存放根文件系统
sgdisk -n 0:0:+10M -c 0:kernel uboot.disk
sgdisk -n 0:0:0 -c 0:rootfs uboot.disk
3、查看分区
sgdisk -p uboot.disk
4、寻找一个空闲的loop设备
sudo losetup -f
5、将SD卡镜像映射到loop设备上
sudo losetup /dev/loop15 uboot.disk
sudo partprobe /dev/loop15
特别说明:loop15为空闲loop设备,实际操作中loop设备可能不同。
6、格式化
sudo mkfs.ext4 /dev/loop15p1
sudo mkfs.ext4 /dev/loop15p2
7、挂载
sudo mount -t ext4 /dev/loop15p1 /mnt/p1/
sudo mount -t ext4 /dev/loop15p2 /mnt/p2/
特别说明:/mnt/p1/ 和 /mnt/p2/ 目录需要提前创建。
8、拷贝文件
sudo cp zImage /mnt/p1/
sudo cp vexpress-v2p-ca9.dtb /mnt/p1/
sudo cp -raf rootfs/* /mnt/p2/
9、卸载
sudo umount /mnt/p1
sudo umount /mnt/p2
10、测试
onlylove@ubuntu:~/my/kernel/rootfs$ pwd
/home/onlylove/my/kernel/rootfs
onlylove@ubuntu:~/my/kernel/rootfs$ ls
rootfs rootfs-l rootfs-l.tar.gz tmpfs
onlylove@ubuntu:~/my/kernel/rootfs$ dd if=/dev/zero of=uboot.disk bs=1M count=1024
1024+0 records in
1024+0 records out
1073741824 bytes (1.1 GB, 1.0 GiB) copied, 1.47417 s, 728 MB/s
onlylove@ubuntu:~/my/kernel/rootfs$ ls
rootfs rootfs-l rootfs-l.tar.gz tmpfs uboot.disk
onlylove@ubuntu:~/my/kernel/rootfs$ sgdisk -n 0:0:+10M -c 0:kernel uboot.disk
Creating new GPT entries in memory.
Setting name!
partNum is 0
Warning: The kernel is still using the old partition table.
The new table will be used at the next reboot or after you
run partprobe(8) or kpartx(8)
The operation has completed successfully.
onlylove@ubuntu:~/my/kernel/rootfs$ sgdisk -n 0:0:0 -c 0:rootfs uboot.disk
Setting name!
partNum is 1
Warning: The kernel is still using the old partition table.
The new table will be used at the next reboot or after you
run partprobe(8) or kpartx(8)
The operation has completed successfully.
onlylove@ubuntu:~/my/kernel/rootfs$ sgdisk -p uboot.disk
Disk uboot.disk: 2097152 sectors, 1024.0 MiB
Sector size (logical): 512 bytes
Disk identifier (GUID): F120DC25-FE69-4C3F-8CDF-23336FF28ACC
Partition table holds up to 128 entries
Main partition table begins at sector 2 and ends at sector 33
First usable sector is 34, last usable sector is 2097118
Partitions will be aligned on 2048-sector boundaries
Total free space is 2014 sectors (1007.0 KiB)
Number Start (sector) End (sector) Size Code Name
1 2048 22527 10.0 MiB 8300 kernel
2 22528 2097118 1013.0 MiB 8300 rootfs
onlylove@ubuntu:~/my/kernel/rootfs$ sudo losetup -f
[sudo] password for onlylove:
/dev/loop15
onlylove@ubuntu:~/my/kernel/rootfs$ sudo losetup /dev/loop15 uboot.disk
onlylove@ubuntu:~/my/kernel/rootfs$ sudo partprobe /dev/loop15
onlylove@ubuntu:~/my/kernel/rootfs$ sudo mkfs.ext4 /dev/loop15p1
mke2fs 1.45.5 (07-Jan-2020)
Creating filesystem with 2560 4k blocks and 2560 inodes
Allocating group tables: done
Writing inode tables: done
Creating journal (1024 blocks): done
Writing superblocks and filesystem accounting information: done
onlylove@ubuntu:~/my/kernel/rootfs$ sudo mkfs.ext4 /dev/loop15p2
mke2fs 1.45.5 (07-Jan-2020)
Discarding device blocks: done
Creating filesystem with 259323 4k blocks and 64896 inodes
Filesystem UUID: aa020fbf-657b-40d6-b6ec-c48a3b857d10
Superblock backups stored on blocks:
32768, 98304, 163840, 229376
Allocating group tables: done
Writing inode tables: done
Creating journal (4096 blocks): done
Writing superblocks and filesystem accounting information: done
onlylove@ubuntu:~/my/kernel/rootfs$ sudo mount -t ext4 /dev/loop15p1 /mnt/p1/
onlylove@ubuntu:~/my/kernel/rootfs$ sudo mount -t ext4 /dev/loop15p2 /mnt/p2/
onlylove@ubuntu:~/my/kernel/rootfs$ sudo cp ~/my/qemu-lq/zImage /mnt/p1/
onlylove@ubuntu:~/my/kernel/rootfs$ sudo cp ~/my/qemu-lq/vexpress-v2p-ca9.dtb /mnt/p1/
onlylove@ubuntu:~/my/kernel/rootfs$ sudo cp -raf rootfs/* /mnt/p2/
onlylove@ubuntu:~/my/kernel/rootfs$
onlylove@ubuntu:~/my/kernel/rootfs$ ls /mnt/p1/
lost+found vexpress-v2p-ca9.dtb zImage
onlylove@ubuntu:~/my/kernel/rootfs$ ls /mnt/p2/
bin dev etc lib linuxrc lost+found mnt proc root sbin sys tmp usr
onlylove@ubuntu:~/my/kernel/rootfs$ sudo umount /mnt/p1
onlylove@ubuntu:~/my/kernel/rootfs$ sudo umount /mnt/p2
onlylove@ubuntu:~/my/kernel/rootfs$ ls
rootfs rootfs-l rootfs-l.tar.gz tmpfs uboot.disk
onlylove@ubuntu:~/my/kernel/rootfs$ ls -l
total 223764
drwxrwxr-x 13 onlylove onlylove 4096 Jun 25 22:12 rootfs
drwxrwxr-x 13 onlylove onlylove 4096 Jan 18 21:35 rootfs-l
-rw-rw-r-- 1 onlylove onlylove 41630588 Jun 25 16:03 rootfs-l.tar.gz
drwxr-xr-x 2 root root 4096 Jun 26 07:12 tmpfs
-rw-rw-r-- 1 onlylove onlylove 1073741824 Jun 26 09:13 uboot.disk
onlylove@ubuntu:~/my/kernel/rootfs$
1、启动命令
./qemu-system-arm -M vexpress-a9 -m 256 -kernel u-boot -nographic -sd uboot.disk
2、启动log
onlylove@ubuntu:~/my/qemu-lq$ pwd
/home/onlylove/my/qemu-lq
onlylove@ubuntu:~/my/qemu-lq$ ls
qemu-system-arm u-boot uboot.disk vexpress-v2p-ca9.dtb zImage
onlylove@ubuntu:~/my/qemu-lq$ ./qemu-system-arm -M vexpress-a9 -m 256 -kernel u-boot -nographic -sd uboot.disk
WARNING: Image format was not specified for 'uboot.disk' 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.
U-Boot 2018.03 (Jun 25 2022 - 17:53:48 +0800)
DRAM: 256 MiB
WARNING: Caches not enabled
Flash: 128 MiB
MMC: MMC: 0
*** Warning - bad CRC, using default environment
In: serial
Out: serial
Err: serial
Net: smc911x-0
Hit any key to stop autoboot: 0
=>
3、查看SD卡状态
=> mmc dev 0
switch to partitions #0, OK
mmc0 is current device
=> mmc info
Device: MMC
Manufacturer ID: aa
OEM: 5859
Name: QEMU!
Bus Speed: 6250000
Mode : SD Legacy
Rd Block Len: 512
SD version 2.0
High Capacity: No
Capacity: 1 GiB
Bus Width: 1-bit
Erase Group Size: 512 Bytes
=>
4、查看SD卡分区状态
=> part list mmc 0
Partition Map for MMC device 0 -- Partition Type: EFI
Part Start LBA End LBA Name
Attributes
Type GUID
Partition GUID
1 0x00000800 0x000057ff "kernel"
attrs: 0x0000000000000000
type: 0fc63daf-8483-4772-8e79-3d69d8477de4
guid: 8b98743a-31e7-4f8f-be22-f6d767d3462b
2 0x00005800 0x001fffde "rootfs"
attrs: 0x0000000000000000
type: 0fc63daf-8483-4772-8e79-3d69d8477de4
guid: a0008d90-dbc6-4089-82d1-c80c3b6e7141
=> ls mmc 0:1
<DIR> 4096 .
<DIR> 4096 ..
<DIR> 16384 lost+found
3956152 zImage
14318 vexpress-v2p-ca9.dtb
=> ls mmc 0:2
<DIR> 4096 .
<DIR> 4096 ..
<DIR> 16384 lost+found
<DIR> 4096 bin
<DIR> 4096 dev
<DIR> 4096 etc
<DIR> 4096 lib
<SYM> 11 linuxrc
<DIR> 4096 mnt
<DIR> 4096 proc
<DIR> 4096 root
<DIR> 4096 sbin
<DIR> 4096 sys
<DIR> 4096 tmp
<DIR> 4096 usr
=>
=> load mmc 0:1 0x60008000 zImage
3956152 bytes read in 4930 ms (783.2 KiB/s)
=> load mmc 0:1 0x61000000 vexpress-v2p-ca9.dtb
14318 bytes read in 31 ms (450.2 KiB/s)
=>
setenv bootargs 'root=/dev/mmcblk0p2 rw rootfstype=ext4 rootwait earlycon console=ttyAMA0 init=/linuxrc ignore_loglevel'
bootz 0x60008000 - 0x61000000
=> bootz 0x60008000 - 0x61000000
Kernel image @ 0x60008000 [ 0x000000 - 0x3c5db8 ]
## Flattened Device Tree blob at 61000000
Booting using the fdt blob at 0x61000000
Loading Device Tree to 6feef000, end 6fef57ed ... OK
Starting kernel ...
Booting Linux on physical CPU 0x0
Linux version 4.15.0 (onlylove@ubuntu) (gcc version 6.5.0 (Linaro GCC 6.5-2018.12)) #1 SMP Sat Jun 25 19:45:44 CST 2022
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'
debug: ignoring loglevel setting.
Memory policy: Data cache writeback
On node 0 totalpages: 65536
Normal zone: 512 pages used for memmap
Normal zone: 0 pages reserved
Normal zone: 65536 pages, LIFO batch:15
CPU: All CPU(s) started in SVC mode.
random: fast init done
percpu: Embedded 16 pages/cpu @(ptrval) s36044 r8192 d21300 u65536
pcpu-alloc: s36044 r8192 d21300 u65536 alloc=16*4096
pcpu-alloc: [0] 0 [0] 1 [0] 2 [0] 3
Built 1 zonelists, mobility grouping on. Total pages: 65024
Kernel command line: root=/dev/mmcblk0p2 rw rootfstype=ext4 rootwait earlycon console=ttyAMA0 init=/linuxrc ignore_loglevel
log_buf_len individual max cpu contribution: 4096 bytes
log_buf_len total cpu_extra contributions: 12288 bytes
log_buf_len min size: 16384 bytes
log_buf_len: 32768 bytes
early log buf free: 14904(90%)
Dentry cache hash table entries: 32768 (order: 5, 131072 bytes)
Inode-cache hash table entries: 16384 (order: 4, 65536 bytes)
Memory: 249752K/262144K available (6144K kernel code, 387K rwdata, 1364K rodata, 1024K init, 165K bss, 12392K reserved, 0K cma-reserved)
Virtual kernel memory layout:
vector : 0xffff0000 - 0xffff1000 ( 4 kB)
fixmap : 0xffc00000 - 0xfff00000 (3072 kB)
vmalloc : 0x90800000 - 0xff800000 (1776 MB)
lowmem : 0x80000000 - 0x90000000 ( 256 MB)
modules : 0x7f000000 - 0x80000000 ( 16 MB)
.text : 0x(ptrval) - 0x(ptrval) (7136 kB)
.init : 0x(ptrval) - 0x(ptrval) (1024 kB)
.data : 0x(ptrval) - 0x(ptrval) ( 388 kB)
.bss : 0x(ptrval) - 0x(ptrval) ( 166 kB)
SLUB: HWalign=64, Order=0-3, MinObjects=0, CPUs=4, Nodes=1
Hierarchical RCU implementation.
RCU event tracing is enabled.
RCU restricting CPUs from NR_CPUS=8 to nr_cpu_ids=4.
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
smp_twd: clock not found -2
sched_clock: 32 bits at 24MHz, resolution 41ns, wraps every 89478484971ns
clocksource: arm,sp804: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 1911260446275 ns
Failed to initialize '/smb@4000000/motherboard/iofpga@7,00000000/timer@12000': -22
Console: colour dummy device 80x30
Calibrating local timer... 91.66MHz.
Calibrating delay loop... 1502.41 BogoMIPS (lpj=7512064)
pid_max: default: 32768 minimum: 301
Mount-cache hash table entries: 1024 (order: 0, 4096 bytes)
Mountpoint-cache hash table entries: 1024 (order: 0, 4096 bytes)
CPU: Testing write buffer coherency: ok
CPU0: thread -1, cpu 0, socket 0, mpidr 80000000
Setting up static identity map for 0x60100000 - 0x60100060
Hierarchical SRCU implementation.
smp: Bringing up secondary CPUs ...
smp: Brought up 1 node, 1 CPU
SMP: Total of 1 processors activated (1502.41 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)
NET: Registered protocol family 16
DMA: preallocated 256 KiB pool for atomic coherent allocations
cpuidle: using governor ladder
hw-breakpoint: debug architecture 0x4 unsupported.
Serial: AMBA PL011 UART driver
OF: amba_device_add() failed (-19) for /memory-controller@100e0000
OF: amba_device_add() failed (-19) for /memory-controller@100e1000
OF: amba_device_add() failed (-19) for /watchdog@100e5000
10009000.uart: ttyAMA0 at MMIO 0x10009000 (irq = 35, base_baud = 0) is a PL011 rev1
console [ttyAMA0] enabled
1000a000.uart: ttyAMA1 at MMIO 0x1000a000 (irq = 36, base_baud = 0) is a PL011 rev1
1000b000.uart: ttyAMA2 at MMIO 0x1000b000 (irq = 37, base_baud = 0) is a PL011 rev1
1000c000.uart: ttyAMA3 at MMIO 0x1000c000 (irq = 38, base_baud = 0) is a PL011 rev1
OF: amba_device_add() failed (-19) for /smb@4000000/motherboard/iofpga@7,00000000/wdt@f000
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
Advanced Linux Sound Architecture Driver Initialized.
clocksource: Switched to clocksource arm,sp804
NET: Registered protocol family 2
TCP established hash table entries: 2048 (order: 1, 8192 bytes)
TCP bind hash table entries: 2048 (order: 2, 16384 bytes)
TCP: Hash tables configured (established 2048 bind 2048)
UDP hash table entries: 256 (order: 1, 8192 bytes)
UDP-Lite hash table entries: 256 (order: 1, 8192 bytes)
NET: Registered protocol family 1
RPC: Registered named UNIX socket transport module.
RPC: Registered udp transport module.
RPC: Registered tcp 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=16 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 noop registered (default)
io scheduler mq-deadline registered
io scheduler kyber registered
clcd-pl11x 10020000.clcd: PL111 designer 41 rev2 at 0x10020000
clcd-pl11x 10020000.clcd: clcd@10020000 hardware, 1024x768@59 display
Console: switching to colour frame buffer device 128x48
clcd-pl11x 1001f000.clcd: PL111 designer 41 rev2 at 0x1001f000
clcd-pl11x 1001f000.clcd: clcd@1f000 hardware, 640x480@59 display
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
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"
libphy: Fixed MDIO Bus: probed
libphy: smsc911x-mdio: probed
smsc911x 4e000000.ethernet eth0: MAC Address: 52:54:00:12:34:56
isp1760 4f000000.usb: 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.
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: rtc core: registered pl031 as rtc0
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 31,32 (pio)
mmc0: new SD card at address 4567
ledtrig-cpu: registered to indicate activity on CPUs
usbcore: registered new interface driver usbhid
usbhid: USB HID core driver
input: AT Raw Set 2 keyboard as /devices/platform/smb@4000000/smb@4000000:motherboard/smb@4000000:motherboard:iofpga@7,00000000/10006000.kmi/serio0/input/input0
mmcblk0: mmc0:4567 QEMU! 1.00 GiB
aaci-pl041 10004000.aaci: ARM AC'97 Interface PL041 rev0 at 0x10004000, irq 30
aaci-pl041 10004000.aaci: FIFO 512 entries
oprofile: using arm/armv7-ca9
NET: Registered protocol family 17
9pnet: Installing 9P2000 support
Registering SWP/SWPB emulation handler
rtc-pl031 10017000.rtc: setting system clock to 2022-06-26 01:22:50 UTC (1656206570)
ALSA device list:
#0: ARM AC'97 Interface PL041 rev0 at 0x10004000, irq 30
mmcblk0: p1 p2
input: ImExPS/2 Generic Explorer Mouse as /devices/platform/smb@4000000/smb@4000000:motherboard/smb@4000000:motherboard:iofpga@7,00000000/10007000.kmi/serio1/input/input2
EXT4-fs (mmcblk0p2): Filesystem with huge files cannot be mounted RDWR without CONFIG_LBDAF
EXT4-fs (mmcblk0p2): mounted filesystem with ordered data mode. Opts: (null)
VFS: Mounted root (ext4 filesystem) readonly on device 179:2.
Freeing unused kernel memory: 1024K
random: crng init done
mkdir: can't create directory '/dev/pts': Read-only file system
mount: mounting devpts on /dev/pts failed: No such file or directory
mdev: can't create 'network_latency': Read-only file system
mdev: can't create 'tty22': Read-only file system
mdev: can't create 'tty50': Read-only file system
mdev: can't create 'tty12': Read-only file system
mdev: can't create 'tty40': Read-only file system
mdev: can't create 'ptyp5': Read-only file system
mdev: can't create 'ptypf': Read-only file system
mdev: can't create 'tty30': Read-only file system
mdev: can't create 'tty59': Read-only file system
mdev: can't create directory 'snd': Read-only file system
mdev: can't create 'snd/pcmC0D0p': No such file or directory
mdev: can't create 'memory_bandwidth': Read-only file system
mdev: can't create 'tty20': Read-only file system
mdev: can't create 'tty49': Read-only file system
mdev: can't create 'ttyp8': Read-only file system
mdev: can't create 'mtd1': Read-only file system
mdev: can't create 'tty10': Read-only file system
mdev: can't create 'tty39': Read-only file system
mdev: can't create directory 'snd': Read-only file system
mdev: can't create 'snd/pcmC0D0c': No such file or directory
mdev: can't create 'vcsa1': Read-only file system
mdev: can't create 'ptyp3': Read-only file system
mdev: can't create 'ptypd': Read-only file system
mdev: can't create 'tty29': Read-only file system
mdev: can't create 'urandom': Read-only file system
mdev: can't create 'tty57': Read-only file system
mdev: can't create 'ubi_ctrl': Read-only file system
mdev: can't create 'tty19': Read-only file system
mdev: can't create 'tty0': Read-only file system
mdev: can't create 'tty47': Read-only file system
mdev: can't create 'ttyp6': Read-only file system
mdev: can't create 'mtd0': Read-only file system
mdev: can't create 'ttyAMA2': Read-only file system
mdev: can't create 'tty37': Read-only file system
mdev: can't create 'ptyp1': Read-only file system
mdev: can't create 'ptypb': Read-only file system
mdev: can't create 'tty27': Read-only file system
mdev: can't create 'tty9': Read-only file system
mdev: can't create 'gpiochip2': Read-only file system
mdev: can't create 'full': Read-only file system
mdev: can't create 'ttype': Read-only file system
mdev: can't create 'tty55': Read-only file system
mdev: can't create 'vcs': Read-only file system
mdev: can't create 'tty17': Read-only file system
mdev: can't create 'tty45': Read-only file system
mdev: can't create 'ttyp4': Read-only file system
mdev: can't create 'fb1': Read-only file system
mdev: can't create 'ttyAMA0': Read-only file system
mdev: can't create 'tty35': Read-only file system
mdev: can't create directory 'input': Read-only file system
mdev: can't create 'input/event1': No such file or directory
mdev: can't create 'tty63': Read-only file system
mdev: can't create 'tty25': Read-only file system
mdev: can't create 'tty7': Read-only file system
mdev: can't create 'gpiochip0': Read-only file system
mdev: can't create 'zero': Read-only file system
mdev: can't create 'ttypc': Read-only file system
mdev: can't create 'tty53': Read-only file system
mdev: can't create 'tty15': Read-only file system
mdev: can't create 'tty43': Read-only file system
mdev: can't create 'ttyp2': Read-only file system
mdev: can't create 'ptyp8': Read-only file system
mdev: can't create 'tty33': Read-only file system
mdev: can't create 'tty61': Read-only file system
mdev: can't create 'cpu_dma_latency': Read-only file system
mdev: can't create 'tty23': Read-only file system
mdev: can't create 'tty5': Read-only file system
mdev: can't create 'ttypa': Read-only file system
mdev: can't create 'tty51': Read-only file system
mdev: can't create 'tty13': Read-only file system
mdev: can't create 'tty41': Read-only file system
mdev: can't create 'ttyp0': Read-only file system
mdev: can't create 'ptyp6': Read-only file system
mdev: can't create 'tty31': Read-only file system
mdev: can't create 'network_throughput': Read-only file system
mdev: can't create 'tty21': Read-only file system
mdev: can't create 'mem': Read-only file system
mdev: can't create 'ttyp9': Read-only file system
mdev: can't create 'mtd1ro': Read-only file system
mdev: can't create 'tty11': Read-only file system
mdev: can't create 'kmsg': Read-only file system
mdev: can't create 'ptyp4': Read-only file system
mdev: can't create 'ptype': Read-only file system
mdev: can't create 'tty58': Read-only file system
mdev: can't create 'hwrng': Read-only file system
mdev: can't create 'tty48': Read-only file system
mdev: can't create 'ttyp7': Read-only file system
mdev: can't create 'mtd0ro': Read-only file system
mdev: can't create 'rtc0': Read-only file system
mdev: can't create 'ttyAMA3': Read-only file system
mdev: can't create directory 'snd': Read-only file system
mdev: can't create 'snd/timer': No such file or directory
mdev: can't create 'tty38': Read-only file system
mdev: can't create 'vcsa': Read-only file system
mdev: can't create 'ptyp2': Read-only file system
mdev: can't create 'ptypc': Read-only file system
mdev: can't create 'tty28': Read-only file system
mdev: can't create 'gpiochip3': Read-only file system
mdev: can't create 'random': Read-only file system
mdev: can't create 'ttypf': Read-only file system
mdev: can't create 'tty56': Read-only file system
mdev: can't create 'vcs1': Read-only file system
mdev: can't create 'tty18': Read-only file system
mdev: can't create 'tty46': Read-only file system
mdev: can't create 'ttyp5': Read-only file system
mdev: can't create 'ttyAMA1': Read-only file system
mdev: can't create 'tty36': Read-only file system
mdev: can't create 'ptmx': Read-only file system
mdev: can't create 'ptyp0': Read-only file system
mdev: can't create 'ptypa': Read-only file system
mdev: can't create 'tty26': Read-only file system
mdev: can't create 'tty8': Read-only file system
mdev: can't create 'gpiochip1': Read-only file system
mdev: can't create 'ttypd': Read-only file system
mdev: can't create 'tty54': Read-only file system
mdev: can't create 'tty16': Read-only file system
mdev: can't create 'tty44': Read-only file system
mdev: can't create directory 'snd': Read-only file system
mdev: can't create 'snd/controlC0': No such file or directory
mdev: can't create 'ttyp3': Read-only file system
mdev: can't create 'fb0': Read-only file system
mdev: can't create 'ptyp9': Read-only file system
mdev: can't create 'tty34': Read-only file system
mdev: can't create directory 'input': Read-only file system
mdev: can't create 'input/event0': No such file or directory
mdev: can't create 'tty62': Read-only file system
mdev: can't create 'tty': Read-only file system
mdev: can't create 'tty24': Read-only file system
mdev: can't create 'tty6': Read-only file system
mdev: can't create 'ttypb': Read-only file system
mdev: can't create 'tty52': Read-only file system
mdev: can't create 'tty14': Read-only file system
mdev: can't create 'tty42': Read-only file system
mdev: can't create 'ttyp1': Read-only file system
mdev: can't create 'ptyp7': Read-only file system
mdev: can't create 'usbmon0': Read-only file system
mdev: can't create 'tty32': Read-only file system
mdev: can't create 'tty60': Read-only file system
mdev: can't create 'mmcblk0p1': Read-only file system
mdev: can't create 'mtdblock1': Read-only file system
mdev: can't create 'mmcblk0p2': Read-only file system
mdev: can't create 'mmcblk0': Read-only file system
mdev: can't create 'mtdblock0': Read-only file system
Please press Enter to activate this console.
/ # ls
bin lib mnt sbin usr
dev linuxrc proc sys
etc lost+found root tmp
/ #
/ #
/ #
/ #
1、生成镜像
dd if=/dev/zero of=rootfs.ext4 bs=1M count=1024
2、格式化镜像
mkfs.ext4 rootfs.ext4
3、挂载镜像到本地
sudo mount -t ext4 rootfs.ext4 /mnt -o loop
4、拷贝rootfs文件
sudo cp -raf rootfs/* /mnt/
5、卸载
sudo umount /mnt/
6、测试
onlylove@ubuntu:~/my/kernel/rootfs$ pwd
/home/onlylove/my/kernel/rootfs
onlylove@ubuntu:~/my/kernel/rootfs$ ls
rootfs rootfs-l rootfs-l.tar.gz tmpfs
onlylove@ubuntu:~/my/kernel/rootfs$ dd if=/dev/zero of=rootfs.ext4 bs=1M count=1024
1024+0 records in
1024+0 records out
1073741824 bytes (1.1 GB, 1.0 GiB) copied, 0.654694 s, 1.6 GB/s
onlylove@ubuntu:~/my/kernel/rootfs$ mkfs.ext4 rootfs.ext4
mke2fs 1.45.5 (07-Jan-2020)
Discarding device blocks: done
Creating filesystem with 262144 4k blocks and 65536 inodes
Filesystem UUID: 00ced43b-b7d8-4d04-8019-f118d7c6f87c
Superblock backups stored on blocks:
32768, 98304, 163840, 229376
Allocating group tables: done
Writing inode tables: done
Creating journal (8192 blocks): done
Writing superblocks and filesystem accounting information: done
onlylove@ubuntu:~/my/kernel/rootfs$ sudo mount -t ext4 rootfs.ext4 /mnt -o loop
[sudo] password for onlylove:
onlylove@ubuntu:~/my/kernel/rootfs$ sudo cp -raf rootfs/* /mnt/
onlylove@ubuntu:~/my/kernel/rootfs$ sudo umount /mnt/
onlylove@ubuntu:~/my/kernel/rootfs$
1、启动命令
./qemu-system-arm -M vexpress-a9 -m 1024M -kernel zImage -append "root=/dev/mmcblk0 console=ttyAMA0 loglevel=8" -dtb vexpress-v2p-ca9.dtb -nographic -sd rootfs.ext4
特别注意:根文件系统挂载参数(root=/dev/mmcblk0)。
2、启动日志
onlylove@ubuntu:~/my/qemu-lq$ pwd
/home/onlylove/my/qemu-lq
onlylove@ubuntu:~/my/qemu-lq$ ls
qemu-system-arm rootfs.ext4 u-boot uboot.disk vexpress-v2p-ca9.dtb zImage
onlylove@ubuntu:~/my/qemu-lq$
onlylove@ubuntu:~/my/qemu-lq$
onlylove@ubuntu:~/my/qemu-lq$ ./qemu-system-arm -M vexpress-a9 -m 1024M -kernel zImage -append "root=/dev/mmcblk0 console=ttyAMA0 loglevel=8" -dtb vexpress-v2p-ca9.dtb -nographic -sd rootfs.ext4
WARNING: Image format was not specified for 'rootfs.ext4' 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.
Booting Linux on physical CPU 0x0
Linux version 4.15.0 (onlylove@ubuntu) (gcc version 6.5.0 (Linaro GCC 6.5-2018.12)) #1 SMP Sat Jun 25 19:45:44 CST 2022
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
Memory policy: Data cache writeback
On node 0 totalpages: 262144
Normal zone: 2048 pages used for memmap
Normal zone: 0 pages reserved
Normal zone: 262144 pages, LIFO batch:31
CPU: All CPU(s) started in SVC mode.
percpu: Embedded 16 pages/cpu @(ptrval) s36044 r8192 d21300 u65536
pcpu-alloc: s36044 r8192 d21300 u65536 alloc=16*4096
pcpu-alloc: [0] 0 [0] 1 [0] 2 [0] 3
Built 1 zonelists, mobility grouping on. Total pages: 260096
Kernel command line: root=/dev/mmcblk0 console=ttyAMA0 loglevel=8
log_buf_len individual max cpu contribution: 4096 bytes
log_buf_len total cpu_extra contributions: 12288 bytes
log_buf_len min size: 16384 bytes
log_buf_len: 32768 bytes
early log buf free: 15096(92%)
Dentry cache hash table entries: 131072 (order: 7, 524288 bytes)
Inode-cache hash table entries: 65536 (order: 6, 262144 bytes)
Memory: 1029432K/1048576K available (6144K kernel code, 387K rwdata, 1364K rodata, 1024K init, 165K bss, 19144K reserved, 0K cma-reserved)
Virtual kernel memory layout:
vector : 0xffff0000 - 0xffff1000 ( 4 kB)
fixmap : 0xffc00000 - 0xfff00000 (3072 kB)
vmalloc : 0xc0800000 - 0xff800000 (1008 MB)
lowmem : 0x80000000 - 0xc0000000 (1024 MB)
modules : 0x7f000000 - 0x80000000 ( 16 MB)
.text : 0x(ptrval) - 0x(ptrval) (7136 kB)
.init : 0x(ptrval) - 0x(ptrval) (1024 kB)
.data : 0x(ptrval) - 0x(ptrval) ( 388 kB)
.bss : 0x(ptrval) - 0x(ptrval) ( 166 kB)
SLUB: HWalign=64, Order=0-3, MinObjects=0, CPUs=4, Nodes=1
Hierarchical RCU implementation.
RCU event tracing is enabled.
RCU restricting CPUs from NR_CPUS=8 to nr_cpu_ids=4.
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
smp_twd: clock not found -2
sched_clock: 32 bits at 24MHz, resolution 41ns, wraps every 89478484971ns
clocksource: arm,sp804: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 1911260446275 ns
Failed to initialize '/smb@4000000/motherboard/iofpga@7,00000000/timer@12000': -22
Console: colour dummy device 80x30
Calibrating local timer... 92.30MHz.
Calibrating delay loop... 1476.19 BogoMIPS (lpj=7380992)
pid_max: default: 32768 minimum: 301
Mount-cache hash table entries: 2048 (order: 1, 8192 bytes)
Mountpoint-cache hash table entries: 2048 (order: 1, 8192 bytes)
CPU: Testing write buffer coherency: ok
CPU0: thread -1, cpu 0, socket 0, mpidr 80000000
Setting up static identity map for 0x60100000 - 0x60100060
Hierarchical SRCU implementation.
smp: Bringing up secondary CPUs ...
smp: Brought up 1 node, 1 CPU
SMP: Total of 1 processors activated (1476.19 BogoMIPS).
CPU: All CPU(s) started in SVC mode.
devtmpfs: initialized
random: get_random_u32 called from bucket_table_alloc+0xf4/0x248 with crng_init=0
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)
random: fast init done
NET: Registered protocol family 16
DMA: preallocated 256 KiB pool for atomic coherent allocations
cpuidle: using governor ladder
hw-breakpoint: debug architecture 0x4 unsupported.
Serial: AMBA PL011 UART driver
OF: amba_device_add() failed (-19) for /memory-controller@100e0000
OF: amba_device_add() failed (-19) for /memory-controller@100e1000
OF: amba_device_add() failed (-19) for /watchdog@100e5000
irq: type mismatch, failed to map hwirq-75 for interrupt-controller@1e001000!
10009000.uart: ttyAMA0 at MMIO 0x10009000 (irq = 38, base_baud = 0) is a PL011 rev1
console [ttyAMA0] enabled
1000a000.uart: ttyAMA1 at MMIO 0x1000a000 (irq = 39, base_baud = 0) is a PL011 rev1
1000b000.uart: ttyAMA2 at MMIO 0x1000b000 (irq = 40, base_baud = 0) is a PL011 rev1
1000c000.uart: ttyAMA3 at MMIO 0x1000c000 (irq = 41, base_baud = 0) is a PL011 rev1
OF: amba_device_add() failed (-19) for /smb@4000000/motherboard/iofpga@7,00000000/wdt@f000
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
Advanced Linux Sound Architecture Driver Initialized.
clocksource: Switched to clocksource arm,sp804
NET: Registered protocol family 2
TCP established hash table entries: 8192 (order: 3, 32768 bytes)
TCP bind hash table entries: 8192 (order: 4, 65536 bytes)
TCP: Hash tables configured (established 8192 bind 8192)
UDP hash table entries: 512 (order: 2, 16384 bytes)
UDP-Lite hash table entries: 512 (order: 2, 16384 bytes)
NET: Registered protocol family 1
RPC: Registered named UNIX socket transport module.
RPC: Registered udp transport module.
RPC: Registered tcp 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 noop registered (default)
io scheduler mq-deadline registered
io scheduler kyber registered
clcd-pl11x 10020000.clcd: PL111 designer 41 rev2 at 0x10020000
clcd-pl11x 10020000.clcd: clcd@10020000 hardware, 1024x768@59 display
Console: switching to colour frame buffer device 128x48
clcd-pl11x 1001f000.clcd: PL111 designer 41 rev2 at 0x1001f000
clcd-pl11x 1001f000.clcd: clcd@1f000 hardware, 640x480@59 display
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
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"
libphy: Fixed MDIO Bus: probed
libphy: smsc911x-mdio: probed
smsc911x 4e000000.ethernet eth0: MAC Address: 52:54:00:12:34:56
isp1760 4f000000.usb: 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.
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: rtc core: registered pl031 as rtc0
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 34,35 (pio)
mmc0: new SD card at address 4567
ledtrig-cpu: registered to indicate activity on CPUs
usbcore: registered new interface driver usbhid
usbhid: USB HID core driver
input: AT Raw Set 2 keyboard as /devices/platform/smb@4000000/smb@4000000:motherboard/smb@4000000:motherboard:iofpga@7,00000000/10006000.kmi/serio0/input/input0
mmcblk0: mmc0:4567 QEMU! 1.00 GiB
aaci-pl041 10004000.aaci: ARM AC'97 Interface PL041 rev0 at 0x10004000, irq 33
aaci-pl041 10004000.aaci: FIFO 512 entries
oprofile: using arm/armv7-ca9
NET: Registered protocol family 17
9pnet: Installing 9P2000 support
Registering SWP/SWPB emulation handler
rtc-pl031 10017000.rtc: setting system clock to 2022-06-26 01:37:56 UTC (1656207476)
ALSA device list:
#0: ARM AC'97 Interface PL041 rev0 at 0x10004000, irq 33
input: ImExPS/2 Generic Explorer Mouse as /devices/platform/smb@4000000/smb@4000000:motherboard/smb@4000000:motherboard:iofpga@7,00000000/10007000.kmi/serio1/input/input2
EXT4-fs (mmcblk0): couldn't mount as ext3 due to feature incompatibilities
EXT4-fs (mmcblk0): mounted filesystem with ordered data mode. Opts: (null)
VFS: Mounted root (ext4 filesystem) readonly on device 179:0.
Freeing unused kernel memory: 1024K
random: crng init done
mkdir: can't create directory '/dev/pts': Read-only file system
mount: mounting devpts on /dev/pts failed: No such file or directory
mdev: can't create 'network_latency': Read-only file system
mdev: can't create 'tty22': Read-only file system
mdev: can't create 'tty50': Read-only file system
mdev: can't create 'tty12': Read-only file system
mdev: can't create 'tty40': Read-only file system
mdev: can't create 'ptyp5': Read-only file system
mdev: can't create 'ptypf': Read-only file system
mdev: can't create 'tty30': Read-only file system
mdev: can't create 'tty59': Read-only file system
mdev: can't create directory 'snd': Read-only file system
mdev: can't create 'snd/pcmC0D0p': No such file or directory
mdev: can't create 'memory_bandwidth': Read-only file system
mdev: can't create 'tty20': Read-only file system
mdev: can't create 'tty49': Read-only file system
mdev: can't create 'ttyp8': Read-only file system
mdev: can't create 'mtd1': Read-only file system
mdev: can't create 'tty10': Read-only file system
mdev: can't create 'tty39': Read-only file system
mdev: can't create directory 'snd': Read-only file system
mdev: can't create 'snd/pcmC0D0c': No such file or directory
mdev: can't create 'vcsa1': Read-only file system
mdev: can't create 'ptyp3': Read-only file system
mdev: can't create 'ptypd': Read-only file system
mdev: can't create 'tty29': Read-only file system
mdev: can't create 'urandom': Read-only file system
mdev: can't create 'tty57': Read-only file system
mdev: can't create 'ubi_ctrl': Read-only file system
mdev: can't create 'tty19': Read-only file system
mdev: can't create 'tty0': Read-only file system
mdev: can't create 'tty47': Read-only file system
mdev: can't create 'ttyp6': Read-only file system
mdev: can't create 'mtd0': Read-only file system
mdev: can't create 'ttyAMA2': Read-only file system
mdev: can't create 'tty37': Read-only file system
mdev: can't create 'ptyp1': Read-only file system
mdev: can't create 'ptypb': Read-only file system
mdev: can't create 'tty27': Read-only file system
mdev: can't create 'tty9': Read-only file system
mdev: can't create 'gpiochip2': Read-only file system
mdev: can't create 'full': Read-only file system
mdev: can't create 'ttype': Read-only file system
mdev: can't create 'tty55': Read-only file system
mdev: can't create 'vcs': Read-only file system
mdev: can't create 'tty17': Read-only file system
mdev: can't create 'tty45': Read-only file system
mdev: can't create 'ttyp4': Read-only file system
mdev: can't create 'fb1': Read-only file system
mdev: can't create 'ttyAMA0': Read-only file system
mdev: can't create 'tty35': Read-only file system
mdev: can't create directory 'input': Read-only file system
mdev: can't create 'input/event1': No such file or directory
mdev: can't create 'tty63': Read-only file system
mdev: can't create 'tty25': Read-only file system
mdev: can't create 'tty7': Read-only file system
mdev: can't create 'gpiochip0': Read-only file system
mdev: can't create 'zero': Read-only file system
mdev: can't create 'ttypc': Read-only file system
mdev: can't create 'tty53': Read-only file system
mdev: can't create 'tty15': Read-only file system
mdev: can't create 'tty43': Read-only file system
mdev: can't create 'ttyp2': Read-only file system
mdev: can't create 'ptyp8': Read-only file system
mdev: can't create 'tty33': Read-only file system
mdev: can't create 'tty61': Read-only file system
mdev: can't create 'cpu_dma_latency': Read-only file system
mdev: can't create 'tty23': Read-only file system
mdev: can't create 'tty5': Read-only file system
mdev: can't create 'ttypa': Read-only file system
mdev: can't create 'tty51': Read-only file system
mdev: can't create 'tty13': Read-only file system
mdev: can't create 'tty41': Read-only file system
mdev: can't create 'ttyp0': Read-only file system
mdev: can't create 'ptyp6': Read-only file system
mdev: can't create 'tty31': Read-only file system
mdev: can't create 'network_throughput': Read-only file system
mdev: can't create 'tty21': Read-only file system
mdev: can't create 'mem': Read-only file system
mdev: can't create 'ttyp9': Read-only file system
mdev: can't create 'mtd1ro': Read-only file system
mdev: can't create 'tty11': Read-only file system
mdev: can't create 'kmsg': Read-only file system
mdev: can't create 'ptyp4': Read-only file system
mdev: can't create 'ptype': Read-only file system
mdev: can't create 'tty58': Read-only file system
mdev: can't create 'hwrng': Read-only file system
mdev: can't create 'tty48': Read-only file system
mdev: can't create 'ttyp7': Read-only file system
mdev: can't create 'mtd0ro': Read-only file system
mdev: can't create 'rtc0': Read-only file system
mdev: can't create 'ttyAMA3': Read-only file system
mdev: can't create directory 'snd': Read-only file system
mdev: can't create 'snd/timer': No such file or directory
mdev: can't create 'tty38': Read-only file system
mdev: can't create 'vcsa': Read-only file system
mdev: can't create 'ptyp2': Read-only file system
mdev: can't create 'ptypc': Read-only file system
mdev: can't create 'tty28': Read-only file system
mdev: can't create 'gpiochip3': Read-only file system
mdev: can't create 'random': Read-only file system
mdev: can't create 'ttypf': Read-only file system
mdev: can't create 'tty56': Read-only file system
mdev: can't create 'vcs1': Read-only file system
mdev: can't create 'tty18': Read-only file system
mdev: can't create 'tty46': Read-only file system
mdev: can't create 'ttyp5': Read-only file system
mdev: can't create 'ttyAMA1': Read-only file system
mdev: can't create 'tty36': Read-only file system
mdev: can't create 'ptmx': Read-only file system
mdev: can't create 'ptyp0': Read-only file system
mdev: can't create 'ptypa': Read-only file system
mdev: can't create 'tty26': Read-only file system
mdev: can't create 'tty8': Read-only file system
mdev: can't create 'gpiochip1': Read-only file system
mdev: can't create 'ttypd': Read-only file system
mdev: can't create 'tty54': Read-only file system
mdev: can't create 'tty16': Read-only file system
mdev: can't create 'tty44': Read-only file system
mdev: can't create directory 'snd': Read-only file system
mdev: can't create 'snd/controlC0': No such file or directory
mdev: can't create 'ttyp3': Read-only file system
mdev: can't create 'fb0': Read-only file system
mdev: can't create 'ptyp9': Read-only file system
mdev: can't create 'tty34': Read-only file system
mdev: can't create directory 'input': Read-only file system
mdev: can't create 'input/event0': No such file or directory
mdev: can't create 'tty62': Read-only file system
mdev: can't create 'tty': Read-only file system
mdev: can't create 'tty24': Read-only file system
mdev: can't create 'tty6': Read-only file system
mdev: can't create 'ttypb': Read-only file system
mdev: can't create 'tty52': Read-only file system
mdev: can't create 'tty14': Read-only file system
mdev: can't create 'tty42': Read-only file system
mdev: can't create 'ttyp1': Read-only file system
mdev: can't create 'ptyp7': Read-only file system
mdev: can't create 'usbmon0': Read-only file system
mdev: can't create 'tty32': Read-only file system
mdev: can't create 'tty60': Read-only file system
mdev: can't create 'mtdblock1': Read-only file system
mdev: can't create 'mmcblk0': Read-only file system
mdev: can't create 'mtdblock0': Read-only file system
Please press Enter to activate this console.
/ # ls
bin lib mnt sbin usr
dev linuxrc proc sys
etc lost+found root tmp
/ #
1、搭建环境
ubuntu20.04 搭建tftp服务器_lqonlylove的博客-CSDN博客_ubuntu配置tftp服务器
Linux 内核调试 七:qemu网络配置_lqonlylove的博客-CSDN博客_qemu 网络配置
ubuntu20.04 搭建tftp服务器_lqonlylove的博客-CSDN博客_ubuntu配置tftp服务器
ubuntu20.04 搭建NFS服务器_lqonlylove的博客-CSDN博客
Linux 内核调试 七:qemu网络配置_lqonlylove的博客-CSDN博客_qemu 网络配置
编译busybox,使其支持nfs加载文件系统:
nfs
Linux System Utilities --->
[*] mount (23 kb)
[*] upport mounting NFS file systems on Linux < 2.6.23
File systems
[*] Network File Systems
[*] Root file system on NFS
1、启动 uboot
./qemu-system-arm -M vexpress-a9 -m 512 -kernel u-boot -nographic -net nic -net tap,ifname=tap0,script=no,downscript=no
2、uboot 日志
onlylove@ubuntu:~/my/qemu-lq$ ./qemu-system-arm -M vexpress-a9 -m 512 -kernel u-boot -nographic -net nic -net tap,ifname=tap0,script=no,downscript=no
U-Boot 2018.03 (Jun 25 2022 - 17:53:48 +0800)
DRAM: 512 MiB
WARNING: Caches not enabled
Flash: 128 MiB
MMC: MMC: 0
*** Warning - bad CRC, using default environment
In: serial
Out: serial
Err: serial
Net: smc911x-0
Hit any key to stop autoboot: 0
=>
3、配置 uboot 网络
setenv ipaddr 192.168.2.129; setenv netmask 255.255.255.0; setenv serverip 192.168.2.128;
4、配置 bootargs
setenv bootargs 'root=/dev/nfs nfsroot=192.168.2.128:/home/onlylove/my/nfs/rootfs,v3 ip=192.168.2.110:192.168.2.128:192.168.2.1:255.255.255.0::eth0:off console=ttyAMA0'
5、加载 Linux镜像和设备树
tftp 0x60003000 zImage;
tftp 0x60500000 vexpress-v2p-ca9.dtb;
=> tftp 0x60003000 zImage;
smc911x: MAC 52:54:00:12:34:56
smc911x: detected LAN9118 controller
smc911x: phy initialized
smc911x: MAC 52:54:00:12:34:56
Using smc911x-0 device
TFTP from server 192.168.2.128; our IP address is 192.168.2.129
Filename 'zImage'.
Load address: 0x60003000
Loading: #################################################################
#################################################################
#################################################################
#################################################################
##########
5.2 MiB/s
done
Bytes transferred = 3956152 (3c5db8 hex)
smc911x: MAC 52:54:00:12:34:56
=> tftp 0x60500000 vexpress-v2p-ca9.dtb;
smc911x: MAC 52:54:00:12:34:56
smc911x: detected LAN9118 controller
smc911x: phy initialized
smc911x: MAC 52:54:00:12:34:56
Using smc911x-0 device
TFTP from server 192.168.2.128; our IP address is 192.168.2.129
Filename 'vexpress-v2p-ca9.dtb'.
Load address: 0x60500000
Loading: #
2.7 MiB/s
done
Bytes transferred = 14318 (37ee hex)
smc911x: MAC 52:54:00:12:34:56
=>
6、启动 Linux
bootz 0x60003000 - 0x60500000;
=> bootz 0x60003000 - 0x60500000;
Kernel image @ 0x60003000 [ 0x000000 - 0x3c5db8 ]
## Flattened Device Tree blob at 60500000
Booting using the fdt blob at 0x60500000
Loading Device Tree to 7feef000, end 7fef57ed ... OK
Starting kernel ...
Booting Linux on physical CPU 0x0
Linux version 4.15.0 (onlylove@ubuntu) (gcc version 6.5.0 (Linaro GCC 6.5-2018.12)) #1 SMP Sat Jun 25 19:45:44 CST 2022
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
Memory policy: Data cache writeback
CPU: All CPU(s) started in SVC mode.
random: fast init done
percpu: Embedded 16 pages/cpu @(ptrval) s36044 r8192 d21300 u65536
Built 1 zonelists, mobility grouping on. Total pages: 130048
Kernel command line: root=/dev/nfs nfsroot=192.168.2.128:/home/onlylove/my/nfs/rootfs,v3 ip=192.168.2.110:192.168.2.128:192.168.2.1:255.255.255.0::eth0:off console=ttyAMA0
log_buf_len individual max cpu contribution: 4096 bytes
log_buf_len total cpu_extra contributions: 12288 bytes
log_buf_len min size: 16384 bytes
log_buf_len: 32768 bytes
early log buf free: 14952(91%)
Dentry cache hash table entries: 65536 (order: 6, 262144 bytes)
Inode-cache hash table entries: 32768 (order: 5, 131072 bytes)
Memory: 509656K/524288K available (6144K kernel code, 387K rwdata, 1364K rodata, 1024K init, 165K bss, 14632K reserved, 0K cma-reserved)
Virtual kernel memory layout:
vector : 0xffff0000 - 0xffff1000 ( 4 kB)
fixmap : 0xffc00000 - 0xfff00000 (3072 kB)
vmalloc : 0xa0800000 - 0xff800000 (1520 MB)
lowmem : 0x80000000 - 0xa0000000 ( 512 MB)
modules : 0x7f000000 - 0x80000000 ( 16 MB)
.text : 0x(ptrval) - 0x(ptrval) (7136 kB)
.init : 0x(ptrval) - 0x(ptrval) (1024 kB)
.data : 0x(ptrval) - 0x(ptrval) ( 388 kB)
.bss : 0x(ptrval) - 0x(ptrval) ( 166 kB)
SLUB: HWalign=64, Order=0-3, MinObjects=0, CPUs=4, Nodes=1
Hierarchical RCU implementation.
RCU event tracing is enabled.
RCU restricting CPUs from NR_CPUS=8 to nr_cpu_ids=4.
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
smp_twd: clock not found -2
sched_clock: 32 bits at 24MHz, resolution 41ns, wraps every 89478484971ns
clocksource: arm,sp804: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 1911260446275 ns
Failed to initialize '/smb@4000000/motherboard/iofpga@7,00000000/timer@12000': -22
Console: colour dummy device 80x30
Calibrating local timer... 85.52MHz.
Calibrating delay loop... 1476.19 BogoMIPS (lpj=7380992)
pid_max: default: 32768 minimum: 301
Mount-cache hash table entries: 1024 (order: 0, 4096 bytes)
Mountpoint-cache hash table entries: 1024 (order: 0, 4096 bytes)
CPU: Testing write buffer coherency: ok
CPU0: thread -1, cpu 0, socket 0, mpidr 80000000
Setting up static identity map for 0x60100000 - 0x60100060
Hierarchical SRCU implementation.
smp: Bringing up secondary CPUs ...
smp: Brought up 1 node, 1 CPU
SMP: Total of 1 processors activated (1476.19 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)
NET: Registered protocol family 16
DMA: preallocated 256 KiB pool for atomic coherent allocations
cpuidle: using governor ladder
hw-breakpoint: debug architecture 0x4 unsupported.
Serial: AMBA PL011 UART driver
OF: amba_device_add() failed (-19) for /memory-controller@100e0000
OF: amba_device_add() failed (-19) for /memory-controller@100e1000
OF: amba_device_add() failed (-19) for /watchdog@100e5000
10009000.uart: ttyAMA0 at MMIO 0x10009000 (irq = 35, base_baud = 0) is a PL011 rev1
console [ttyAMA0] enabled
1000a000.uart: ttyAMA1 at MMIO 0x1000a000 (irq = 36, base_baud = 0) is a PL011 rev1
1000b000.uart: ttyAMA2 at MMIO 0x1000b000 (irq = 37, base_baud = 0) is a PL011 rev1
1000c000.uart: ttyAMA3 at MMIO 0x1000c000 (irq = 38, base_baud = 0) is a PL011 rev1
OF: amba_device_add() failed (-19) for /smb@4000000/motherboard/iofpga@7,00000000/wdt@f000
SCSI subsystem initialized
usbcore: registered new interface driver usbfs
usbcore: registered new interface driver hub
usbcore: registered new device driver usb
Advanced Linux Sound Architecture Driver Initialized.
clocksource: Switched to clocksource arm,sp804
NET: Registered protocol family 2
TCP established hash table entries: 4096 (order: 2, 16384 bytes)
TCP bind hash table entries: 4096 (order: 3, 32768 bytes)
TCP: Hash tables configured (established 4096 bind 4096)
UDP hash table entries: 256 (order: 1, 8192 bytes)
UDP-Lite hash table entries: 256 (order: 1, 8192 bytes)
NET: Registered protocol family 1
RPC: Registered named UNIX socket transport module.
RPC: Registered udp transport module.
RPC: Registered tcp 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=17 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 noop registered (default)
io scheduler mq-deadline registered
io scheduler kyber registered
clcd-pl11x 10020000.clcd: PL111 designer 41 rev2 at 0x10020000
clcd-pl11x 10020000.clcd: clcd@10020000 hardware, 1024x768@59 display
Console: switching to colour frame buffer device 128x48
clcd-pl11x 1001f000.clcd: PL111 designer 41 rev2 at 0x1001f000
clcd-pl11x 1001f000.clcd: clcd@1f000 hardware, 640x480@59 display
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
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
Concatenating MTD devices:
(0): "40000000.flash"
(1): "40000000.flash"
into device "40000000.flash"
libphy: Fixed MDIO Bus: probed
libphy: smsc911x-mdio: probed
smsc911x 4e000000.ethernet eth0: MAC Address: 52:54:00:12:34:56
isp1760 4f000000.usb: 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.
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: rtc core: registered pl031 as rtc0
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 31,32 (pio)
ledtrig-cpu: registered to indicate activity on CPUs
usbcore: registered new interface driver usbhid
usbhid: USB HID core driver
input: AT Raw Set 2 keyboard as /devices/platform/smb@4000000/smb@4000000:motherboard/smb@4000000:motherboard:iofpga@7,00000000/10006000.kmi/serio0/input/input0
aaci-pl041 10004000.aaci: ARM AC'97 Interface PL041 rev0 at 0x10004000, irq 30
aaci-pl041 10004000.aaci: FIFO 512 entries
oprofile: using arm/armv7-ca9
NET: Registered protocol family 17
9pnet: Installing 9P2000 support
Registering SWP/SWPB emulation handler
rtc-pl031 10017000.rtc: setting system clock to 2022-06-26 04:59:27 UTC (1656219567)
Generic PHY 4e000000.ethernet-ffffffff:01: attached PHY driver [Generic PHY] (mii_bus:phy_addr=4e000000.ethernet-ffffffff:01, irq=POLL)
smsc911x 4e000000.ethernet eth0: SMSC911x/921x identified at 0xa1290000, IRQ: 28
input: ImExPS/2 Generic Explorer Mouse as /devices/platform/smb@4000000/smb@4000000:motherboard/smb@4000000:motherboard:iofpga@7,00000000/10007000.kmi/serio1/input/input2
IP-Config: Complete:
device=eth0, hwaddr=52:54:00:12:34:56, ipaddr=192.168.2.110, mask=255.255.255.0, gw=192.168.2.1
host=192.168.2.110, domain=, nis-domain=(none)
bootserver=192.168.2.128, rootserver=192.168.2.128, rootpath=
ALSA device list:
#0: ARM AC'97 Interface PL041 rev0 at 0x10004000, irq 30
VFS: Mounted root (nfs filesystem) readonly on device 0:13.
Freeing unused kernel memory: 1024K
nfs: server 192.168.2.128 not responding, still trying
nfs: server 192.168.2.128 not responding, still trying
nfs: server 192.168.2.128 OK
nfs: server 192.168.2.128 OK
can't run '/etc/init.d/rcS': No such file or directory
Please press Enter to activate this console.
/ # ls
bin etc linuxrc proc sbin test.com usr
dev lib mnt root sys tmp
/ # ping 192.168.2.128
PING 192.168.2.128 (192.168.2.128): 56 data bytes
64 bytes from 192.168.2.128: seq=0 ttl=64 time=5.666 ms
64 bytes from 192.168.2.128: seq=1 ttl=64 time=3.485 ms
64 bytes from 192.168.2.128: seq=2 ttl=64 time=1.351 ms
^C
--- 192.168.2.128 ping statistics ---
3 packets transmitted, 3 packets received, 0% packet loss
round-trip min/avg/max = 1.351/3.500/5.666 ms
/ #
1、qemu 中根文件系统
/ # ls
bin etc linuxrc proc sbin tmp
dev lib mnt root sys usr
/ #
2、ubuntu 中根文件系统
onlylove@ubuntu:~/my/nfs/rootfs$ pwd
/home/onlylove/my/nfs/rootfs
onlylove@ubuntu:~/my/nfs/rootfs$ ls
bin dev etc lib linuxrc mnt proc root sbin sys tmp usr
onlylove@ubuntu:~/my/nfs/rootfs$ vim test.txt
onlylove@ubuntu:~/my/nfs/rootfs$ ls
bin dev etc lib linuxrc mnt proc root sbin sys test.txt tmp usr
onlylove@ubuntu:~/my/nfs/rootfs$
3、qemu 中根文件系统
/ # ls
bin etc linuxrc proc sbin tmp
dev lib mnt root sys usr
/ #
/ # ls
bin etc linuxrc proc sbin test.txt usr
dev lib mnt root sys tmp
/ #
4、测试结果
在 ubuntu 中创建 test.txt 文件后,qemu 根文件系统中也可以查到。
1、VFS: Cannot open root device “nfs” or unknown-block(2,0): error -6
解决方案:设置bootargs时加上参数v3
在 ubuntu 中编写测试程序,并进行编译。在 qemu 模拟的 ARM 开发板中进行测试。
1、源码目录
onlylove@ubuntu:~/my/demo/arm$ pwd
/home/onlylove/my/demo/arm
onlylove@ubuntu:~/my/demo/arm$ ls
hello
onlylove@ubuntu:~/my/demo/arm$ tree hello/
hello/
├── makefile
└── user
└── main.c
1 directory, 2 files
onlylove@ubuntu:~/my/demo/arm$
2、makefile
# 版本信息:2022.04.02 - lqonlylove-v1.0.0
##############################
# 目标
##############################
TARGET := main
##############################
# 环境参数
##############################
# CURDIR - make 自动指定(不用修改)
# SHELL - make 自动指定(不用修改)
##############################
# 编译参数
##############################
CC := /home/onlylove/my/gcc/gcc-linaro-6.5.0/bin/arm-linux-gnueabihf-gcc
#LD :=
LDLIBS :=
LDFLAGS :=
DEFINES :=
#INCLUDE := -I.
CFLAGS = -g -Wall -O3 $(DEFINES) $(INCLUDE)
CXXFLAGS = $(CFLAGS) -DHAVE_CONFIG_H
#LOADLIBES :=
#OUTPUT_OPTION :=
#OBJCOPY :=
#OBJDUMP :=
##############################
# 目录管理
##############################
# 设置编译目录
BUILD_PATH := build
# 编译过程文件存放目录
OBJ_PATH := $(BUILD_PATH)/temp
# 编译可执行文件存放目录
BIN_PATH := $(BUILD_PATH)/bin
# 头文件目录(根据需要调整)
INC_PATH := user \
bsp/inc
# 源文件目录(根据需要调整)
SRC_PATH := user \
bsp/src
# 获取源文件下的 c 文件列表(带目录信息)
SRC := $(foreach dir,$(SRC_PATH),$(wildcard $(dir)/*.c))
SRC_WITHOUT_DIR := $(notdir $(SRC))
# 为头文件目录添加 -I 选项(详细内容见 gcc 使用手册)
INCLUDE = $(addprefix -I ,$(INC_PATH))
# 生成 .c 文件对应的 .o 文件列表
OBJ := $(patsubst %.c,%.o,$(SRC_WITHOUT_DIR))
# 为 .o 加上编译目录
OBJ_WITH_BUILD_DIR := $(addprefix $(OBJ_PATH)/,$(OBJ))
# 指定 makefile 源文件查找路径(非常重要)
VPATH := $(SRC_PATH)
##############################
# makefile 目标管理
##############################
all: build_path $(TARGET)
# 指定目标文件生成规则
$(TARGET):$(OBJ_WITH_BUILD_DIR)
$(CC) -o $(BIN_PATH)/$@ $^
# 指定过程文件生成规则(详细内容见 makefile 静态模式)
$(OBJ_WITH_BUILD_DIR):$(OBJ_PATH)/%.o: %.c
$(CC) -c $(CFLAGS) -o $@ $<
build_path:
@if [ ! -d $(BUILD_PATH) ]; then \
mkdir -p $(OBJ_PATH);mkdir -p $(BIN_PATH);\
fi
# 清除过程文件
.PHONY: clean print
# 打印部分信息(测试使用)
print:
@echo $(BIN_PATH)
clean:
-rm -rf $(BIN_PATH)/$(TARGET) $(OBJ_WITH_BUILD_DIR)
3、main.c
#include
int main(int argc, char* argv[])
{
printf("hello world!\r\n");
return 0;
}
4、编译
onlylove@ubuntu:~/my/demo/arm/hello$ pwd
/home/onlylove/my/demo/arm/hello
onlylove@ubuntu:~/my/demo/arm/hello$ ls
makefile user
onlylove@ubuntu:~/my/demo/arm/hello$ make
/home/onlylove/my/gcc/gcc-linaro-6.5.0/bin/arm-linux-gnueabihf-gcc -c -g -Wall -O3 -I user -I bsp/inc -o build/temp/main.o user/main.c
/home/onlylove/my/gcc/gcc-linaro-6.5.0/bin/arm-linux-gnueabihf-gcc -o build/bin/main build/temp/main.o
onlylove@ubuntu:~/my/demo/arm/hello$ ls
build makefile user
onlylove@ubuntu:~/my/demo/arm/hello$ tree .
.
├── build
│ ├── bin
│ │ └── main
│ └── temp
│ └── main.o
├── makefile
└── user
└── main.c
4 directories, 4 files
onlylove@ubuntu:~/my/demo/arm/hello$
1、将 mian 拷贝到 nfs 根文件系统中
/ # ls
bin etc linuxrc mnt root sys usr
dev lib main proc sbin tmp
/ #
2、测试
/ # ls
bin etc linuxrc mnt root sys usr
dev lib main proc sbin tmp
/ # ./main
hello world!
/ #