1、下载busybox
构建根文件系统可以选择busybox,buildroot,yocto等
这里采用busybox
https://www.busybox.net/
BusyBox 是一个集成了三百多个最常用Linux命令和工具的软件。
2、修改makefile文件,指定芯片与交叉编译器
3、修改busybox对中文字符的支持(可选项,不提供相关修改方法)
可以参考视频 https://www.bilibili.com/video/BV12E411h71h?p=44
4、使用默认配置
make defconfig
生成.config文件
5、打开图形化配置界面
make menuconfig
->settings->build static binary
静态编译:不使用其他库,编译后文件很大,有可能出现dns错误(未尝试过)
动态编译:要求根文件系统中有库,编译后文件较小
此处不使用动态编译
->settings->vi-style line editing commands选中
->linux module utilities->simplified modutils 取消勾选
->linux system utilities ->mdev 确保下面的全部选中
->settings->support unicode
->settings->support unicode->check $LC_ALL,…_
选中,使编码支持中文
6、编译busybox
make
编译完成后会会生成_install文件夹
7、创建rootfs文件夹,将_install文件夹中的所有文件拷贝到rootfs文件夹中
8、在rootfs文件夹中,新建lib文件,将工具链中的库拷贝到lib文件夹中
cp -par /usr/arm-linux-gnueabi/lib/* ./lib
具体路径,自己修改
9、创建设备文件,创建四个串口设备和控制台
/dev/rootfs$ mkdir dev /dev/rootfs$ sudo mknod dev/tty1 c 4 1 /dev/rootfs$ sudo mknod dev/tty2 c 4 2 /dev/rootfs$ sudo mknod dev/tty3 c 4 3 /dev/rootfs$ sudo mknod dev/tty4 c 4 4 /dev/rootfs$ sudo mknod -m 666 console c 5 1
10、若在qemu中模拟开发板需要制作sd根文件系统镜像
/dev$ dd if=/dev/zero of=rootfs.ext3 bs=1M count=32 /dev$ mkfs.ext3 rootfs.ext3
挂载rootfs.ext3,将rootfs的所有文件拷贝进去
/dev$ sudo mkdir tmpfs /dev$ sudo mount -t ext3 rootfs.ext3 tmpfs/ -o loop /dev$ sudo cp -r rootfs/* tmpfs/ /dev$ sudo umount tmpfs
11、启动内核
qemu-system-arm -M vexpress-a9 -m 512m -kernel /dev/linux-5.4.91/arch/arm/boot/zImage -dtb /dev/linux-5.4.91/arch/arm/boot/dts/vexpress-v2p-ca9.dtb -nographic -append "console=ttyAMA0 root=/dev/mmcblk0" -sd /dev/rootfs.ext3