1.1 创建目录
#mkdir rootfs
#cd rootfs
#mkdir bin dev etc lib proc sbin sys usr mnt tmp var
#mkdir usr/bin usr/lib usr/sbin lib/modules
1.2 创建设备文件
#cd rootfs/dev
#mknod -m 666 console c 5 1
#mknod -m 666 null c 1 3
1.3 加入配置文件
#tar etc.tar.gz
#cp etc/* rootfs/etc/ -rf
1.4 添加内核模块
#cd .../linux-kernel(进入linux内核文件夹)
#make modules ARCH=arm CROSS_COMPILE=arm-linux- (编译内核模块)
#make modules_install ARCH=arm INSTALL_MOD_PATH=.../rootfs(把*.ko文件移动到.../rootfs/lib/modules/文件夹下)
1.5 编译/安装busybox
1.配置busybox
#make menuconfig
Busybox Settings ---> build Options---->
选中 “Build busybox as a static binary”, 静态链接Cross Compiler prefix (arm-linux-)
Installation Options--->
选中 “Don't use /usr”, 选中该项可以避免busybox 被安装到宿主系统的/usr目录下,破坏宿主系统
Busybox Installation Prefix (/xxx/rootfs) 该选项表明编译后的busybox的安装
2. 编译、安装busybox
make
make install
2.挂载根文件系统
2.1 文件系统类型
根据存储设备的硬件特性、系统需求,不同的
文件系统类型有不同的应用场合。在嵌入式
Linux应用中,主要的存储设备为 RAM 和
FLASH,常用的基于存储设备的文件系统类
型包括:jffs2, yaffs2, ubifs, ramdisk等
2.2 使用Initramfs
1. #cd .../rootfs/
#ln –s ./bin/busybox init
2. 进入linux内核文件夹,配置Linux内核, 支持initramfs
make menuconfig
General setup --->
选中 Initial RAM filesystem and RAM disk (initramfs/initrd) suppor
更改rootfs路径(/home/lgc/Arm/8-rootfs/rootfs) Initramfs source file(s)
3. 编译内核
make uImage ARCH=arm CROSS_COMPILE=arm-linux-
cp arch/arm/boot/uImage /var/tftpboot/
4.进入串口终端,启动u-boot,设置环境变量
setenv bootargs noinitrd console=ttySAC0,115200
2.3 使用NFS
在linuxn内核文件夹下,
make menuconfig ARCH=arm
General setup --->
依次选中 File systems--->Network File Systems---> Root file system on NFS
make uImage ARCH=arm CROSS_COMPILE=arm-linux-
串口终端输入以下环境变量:
setenv bootargs noinitrd //告诉u-boot以什么方式启动
console=ttySAC0, 115200 //串口0输出,波特率115200
init=/init
root=/dev/nfs //使用/dev/下的nfs作为根文件系统
rw //可读可写
nfsroot=192.168.1.88 : /home/lgc/Arm/8-rootfs/rootfs //服务器(pc机)ip地址,及根文件系统rootfs的路径
ip=192.168.1.230:192.168.1.88:192.168.1.1:255.255.255.0::eth0:off //板子ip/主机ip/网关/子网掩码
(红色的需要修改)
要确保主机上的nfs已配置并且开启:
1.1安装NFS服务:
#执行以下命令安装NFS服务器,
#apt会自动安装nfs-common、rpcbind等13个软件包
sudo apt install nfs-kernel-server
1.2编写配置文件:
#编辑/etc/exports文件:
sudo vi /etc/exports
在/etc/exports 输入以下内容:/home/lgc/Arm/8-rootfs/rootfs *(rw,sync,no_root_squash)
然后 重启 nfs : /etc/init.d/nfs-kernel-server restart
或者:sudo service nfs-kernel-server restart
#查看NFS的运行状态
sudo nfsstat