IMX6ULL系列学习记录-使用busybox1.31.1制作最简根文件系统

主题:IMX6ULL系列学习记录-使用busybox1.31.1制作根文件系统

硬件平台:野火IMX6ULL

软件:ubuntu19.04

交叉编译器:gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf

U-Boot:uboot-imx-rel_imx_4.1.15_2.1.0_ga

kernel:linux-imx-rel_imx_4.1.15_2.1.0_ga

devicetree:imx6ull-14x14-evk.dts

time:2019-11-13

1. 目的:使用busybox1.31.1制作根文件系统
根据之前的学习记录,从uboot->kernel、devicetree都已经做好了,但是没有根文件系统板子始终不能正常运行,所以根文件系统是必不可少的。
2. 过程:
2.1 从官网下载最新busybox官方下载地址,这里我选择了最新的busybox1.31.1,然后使用tar xvf busybox.1.31.tar.bz2解压。
2.2 修改Makefile
2.2.1 第164行修改成如下方式
交叉编译器修改
2.2.2 第190行修改成如下方式
架构修改
2.3 界面配置make menuconfig
2.3.1 Settings —>
[ * ] Don’t use /usr* (选择 【 * 】表示选中,要选择,这里不要使用/usr )
(arm-linux-gnueabihf-) Cross compiler prefix ( 输入交叉编译器,我的是arm-linux-gnueabihf-,要看自己的编译器是啥,要是不知道什么是交叉编译器应该看不到这篇博客 )
( . ./rootfs_test) Destination path for ‘make install’(表示最后生成的根文件路径在哪,rootfs_test要提前创建)
[*] vi-style line editing commands (使用vi风格)
2.3.2 Linux Module Utilities —>
[ ] Simplified modutils (不要选择)
2.3.3 Linux System Utilities —>
[ * ] mdev (17 kb) (一定要选择)
2.4 编译并安装
make -j4;make install
之后在上一级目录rootfs_test中可以看到sbin bin linuxrc四个目录,然后手动创建其余目录 mkdir dev etc lib mnt proc root sys tmp usr
2.5 库文件配置
应用程序运行需要一些必备的库,而且应用程序想在嵌入式arm上运行是需要交叉编译器进行编译的,因此库就是交叉编译器自带的库。
2.5.1 找到交叉编译器安装位置
arm-linux-gnueabihf-gcc -v 之后就可以看到交叉编译器路径
我的编译器路径
1 sudo cp /usr/local/arm/gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf/arm-linux-gnueabihf/libc/lib rootfs_test/lib/ -a
2 sudo cp /usr/local/arm/gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf/arm-linux-gnueabihf/lib rootfs_test/lib/ -a
3 sudo cp /usr/local/arm/gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf/arm-linux-gnueabihf/libc/usr rootfs_test -a
2.6 etc目录配置

  • 1 vim fstab 并输入这些内容
# device   	mount-point 	type 	options 	dump 	fsck 	order
proc     	/proc       	proc 	defaults 	0    	0
sysfs		/sys		sysfs	defaults	0	0
tmpfs    	/tmp       	tmpfs 	defaults	0	0
tmpfs    	/dev	       	tmpfs 	defaults	0	0
  • 2 vim inittab并输入这些内容
# /etc/inittab
# 启动脚本/etc/init.d/rcS
::sysinit:/etc/init.d/rcS
# 启动 shell
::askfirst:-/bin/sh
# 重启关机前 卸载文件系统
::ctrlaltdel:/sbin/reboot
::shutdown:/bin/umount -a -r
  • 3 mkdir init.d;vim init.d/rcS并输入这些内容
# 这是一个脚本文件,用/bin/sh解析
#!/bin/sh
# 挂载文件系统
mount -a
# 使用内存文件系统
mkdir /dev/pts
mount -t devpts devpts /dev/pts
echo /sbin/mdev > /proc/sys/kernel/hotplug
mdev -s
# 设置IP
#/sbin/ifconfig eth0 192.168.1.17	#nfs不需要
# 挂载 /etc/fstab 中的文件系统
mount -a

3. 根文件系统测试
在uboot中修改bootargs参数: setenv bootargs "init=/linuxrc console=ttymxc0,115200 root=/dev/nfs rw nfsroot=192.168.5.210:/home/wr/rootfs/rootfs_test ip=192.168.5.188:192.168.5.210:192.168.5.1:255.255.255.0::eth0:off";saveenv
这里需要注意的是,我是使用nfs挂载,大家也可以直接烧入emmc中。
IMX6ULL系列学习记录-使用busybox1.31.1制作最简根文件系统_第1张图片

你可能感兴趣的:(IMX6ULL学习记录)