制作根文件系统

开发环境
ubuntu16.04
arm-linux-gcc 4.3.2
开发板内核linux-3.4.2
zj2440

1. 交叉编译busybox-1.20.0
1.1、make menuconfig //进入
Busybox Settings —>
Build Options —>
(arm-linux-) Cross Compiler prefix //制定交叉编译器
1.2、 make
1.3、安装:make install CONFIG_PREFIX=/work/nfs_root/fs3.4.2

2. 安装库
mkdir /work/nfs_root/fs3.4.2/lib
mkdir /work/nfs_root/fs3.4.2/usr/lib -p

cp /usr/local/arm/4.3.2/arm-none-linux-gnueabi/libc/armv4t/lib/so /work/nfs_root/fs3.4.2/lib -d
cp /usr/local/arm/4.3.2/arm-none-linux-gnueabi/libc/armv4t/usr/lib/so /work/nfs_root/fs3.4.2/usr/lib -d

3. 创建主要目录
mkdir etc dev proc sys mnt tmp root
mkdir dev/pts

4. 构建etc目录
在etc目录下,创建以下3个文件
etc/inittab : init进程会根据inittab文件里,来创建其它子进程,比如-/bin/sh进程
在这里插入图片描述
//内核启动时,执行/etc/init.d/rcS
//启动console对应的-/bin/sh进程之前,等待用户按enter键,等价于: ::askfirst:-/bin/sh
//按下ctrl+alt+del组合键时,启动reboot命令
//系统关机前,卸载所有文件系统

etc/init.d/rcS: 脚本文件,里面用来执行命令,比如设置网卡,使用mount -a来装载/etc/fstab中的文件系统
在这里插入图片描述
//挂载/etc/fstab中的所有的文件系统
//使/sbin/medv指向hotplug,从而支持热拔插
//使用medv命令将会扫描/sys/class和/sys/block中所有的类设备目录,然后把读取到的dev相关文件自动在/dev创建下的所有设备节点。
sudo chmod +x etc/init.d/rcS //给脚本rcS加入可执行权限
转载mdev使用方法和原理

etc/fstab : 里面保存要被挂载的哪个文件系统,比如proc、sysfs、tmpfs、devpts等系统
在这里插入图片描述
mdev: 是udev的一个迷你版, 它主要的功能是管理/dev目录底下的设备节点,它同时也是用来接替devfs及热插拔的功能。
proc: 虚拟文件系统, 它只存在内存当中,而不占用外存空间, 可以通过proc得到系统的信息,比如运行的每个进程pid便存在/proc里。
sysfs: 管理虚拟系统,为udev提供设备入口和uevent通道, sysfs类型,需要挂载到/sys目录下。
tmpfs: 临时文件系统,用来减少对flash频繁读写,tmpfs类型,需要挂载到/dev目录下。
devpts: 内核虚拟系统, devpts类型,需要挂载到/dev/pts目录下。
5.创建控制台设备节点
sudo mknod -m 660 dev/console c 5 1
sudo mknod -m 660 dev/null c 1 3
6.制作文件镜像
制作jffs2文件系统
mkfs.jffs2 -n -s 2048 -e 128KiB -d fs -o fs.jffs2
-n:表示每块不添加清除标记,;
-s:size一页大小为2k, ;
-e:一块大小为128kb
-d:制作的dir目录;
-o:输出文件 。
制作yaffs2文件系统
mkyaffs2image fs fs.yaffs2
7.挂载网络文件系统
在/etc/exports中添加虚拟机目录
/work/nfs_root *(rw,sync,no_root_squash)
被挂载的目录为/work/nfs_root

将/work/nfs_root 挂载到开发板的mnt目录下
mount -t nfs -o nolock,vers=2 192.168.1.10:/work/nfs_root /mnt

设置uboot参数从nfs启动
set bootargs console=ttySAC0,115200 root=/dev/nfs nfsroot=192.168.1.10:/work/nfs_root/fs ip=192.168.1.11:192.168.1.10:192.168.1.1:255.255.255.0::eth0:off
虚拟机ip=192.168.1.10
开发板ip=192.168.1.11

猜你喜欢

转载自blog.csdn.net/weixin_43542305/article/details/86515086