QEMU–>>uboot–>>kernel&dtb–>>fs 根文件系统
废话不多说!
系统安装必要的库 ubuntu 18.04
sudo apt-get install libncurses5-dev libssl-dev build-essential openssl bison bc flex libelf-dev
1. QEMU 安装
sudo apt-get install qemu
2.安装交叉编译器
检测系统已经有交叉编译器:
输入 arm-linux- …后面两下“Tab”键;
如没有,自行安装 ;
export PATH=$PATH:/{home路径}/gcc-arm-10.3-2021.07-x86_64-arm-none-linux-gnueabihf/bin
3.编译u-boot
uboot 加载内核及设备树地址设置:
vi include/configs/vexpress_common.h
#define CONFIG_EXTRA_ENV_SETTINGS \
"kernel_addr_r=0x60100000\0" \
"fdt_addr_r=0x60000000\0" \
"bootargs=console=tty0 console=ttyAMA0,38400n8\0" \
BOOTENV \
"console=ttyAMA0,38400n8\0" \
"dram=1024M\0" \
"root=/dev/sda1 rw\0" \
"mtd=armflash:1M@0x800000(uboot),7M@0x1000000(kernel)," \
"24M@0x2000000(initrd)\0" \
"flashargs=setenv bootargs root=${root} console=${console} " \
"mem=${dram} mtdparts=${mtd} mmci.fmax=190000 " \
"devtmpfs.mount=0 vmalloc=256M\0" \
"bootflash=run flashargs; " \
"cp ${ramdisk_addr} ${ramdisk_addr_r} ${maxramdisk}; " \
"bootm ${kernel_addr} ${ramdisk_addr_r}\0" \
"fdtfile=" CONFIG_DEFAULT_FDT_FILE "\0"
export CROSS_COMPILE=arm-linux-gnueabihf-
sudo make vexpress_ca9x4_defconfig
sudo make -j6
4.测试U-boot
qemu-system-arm -M vexpress-a9 -cpu cortex-a9 -m 256 -kernel u-boot --nographic
5.编译内核
export CROSS_COMPILE=arm-linux-gnueabihf-
sudo make vexpress_defconfig
sudo make -j6
sudo make dtbs
6.复制uImage &dtb 到TFTP文件夹
cp -r uImage /home/tffp
cp -r xxx.dtb/home/tffp
7.启动qemu测试
qemu-system-arm -M vexpress-a9 -m 256 -kernel u-boot -nographic -net nic -net tap
制作SD卡
mkdir /home/book/work
dd if=/dev/zero of=/home/book/work/sd_card bs=1M count=512
sudo fdisk /home/book/work/sd_card
为该sd卡创建分区,按o,n,w,创建完分区之后,然后使用sudo mkfs.vfat sd_card命令创建vfat文件系统。至此创建sd卡成功,查看该文件格式为: