一:busybox:
1、完整的操作系统=bootloader(u-boot)+kernel(zImage)+根文件系统。
2、根文件系统的核心就是 各种以及系统运行配置参数(类似于linux的cd、ls、mkdir......)。
3、根文件系统的核心文件:bin,sbin,usr,etc,lib
4、制作嵌入式根文件系统,可以利用busybox开源的工具软件,它集合了所有的命令
二:根文件系统制作
1:开发板跟的软件包理匹配的busybox工具,解压到linux中。
2:进行菜单配置:make menuconfig---------------进入解压后的目录
a)、编译器前缀
b)、配置共享库(这里就是要挂载NFS的文件夹)---我的目录/work/busybox-1.17.2/rootfs/
c)、配置安装路径(可以不修改,为了你对自己文件有清晰的分类管理,建议修改)
d)、配置模块,取消掉
然后
3、编译安装文件系统:make -j8;make install -j8 ------------------进入解压后的目录
1、安装后查看生成的文件:ls /work/busybox-1.17.2/rootfs -l
2、查看生成的busybox是否是arm架构的程序:
file /work/busybox-1.17.2/rootfs//bin/busybox
3、复制命令的动态库 -------- 进入共享的文件夹
先查看生成的busybox程序依赖哪些动态库
arm-linux-readelf -d bin/busybox | grep .so
查看编译器的安装路径 which arm-linux-gcc
复制编译器的lib文件到共享目录下 cp /opt/FriendlyARM/toolschain/4.5.1/arm-nonc-linux-gnueabi/lib/ .
4、创建其他目录 mkdir dev home proc tmp var etc/init.d mnt opt sys -p
5、创建控制台文件 mknod dev/console 5 1
注:该文件世设备文件,只能用mknod创建,不能用vim,gedit,touch。c表示字符设备,5表示主设备号,1表示此设备号
6、根据需要在etc目录下创建fstab文件
以上文件是设置linux挂载上文件系统 后 还需要挂载 的 其他文件系统
7、在etc目录下创建inittab文件
因为在linux的examples文件夹里面已经提供了一个模板,我们只需把它拷贝过来修改就能用了 cp /work/busybox-1.17.2/examples/inittab etc/
::sysinit:/etc/init.d/rcS
console::askfirst:-/bin/sh
::restart:/sbin/init
::ctrlaltdel:/sbin/reboot
::shutdown:/bin/umount -a -r
::shutdown:/sbin/swapoff -a
8、在etc/init.d/里面创建rcS文件
gedit etc/init.d/rcS &
内容:#!/bin/sh
mkdir /dev/shm -p
mkdir /dev/pts -p
#挂载 fstab 文件中指定的所有文件系统
mount -a
#以下是热拔插支持
echo /sbin/mdev > /proc/sys/kernel/hotplug
mdev -s
hostname 你的名字(非中文)
9、在etc目录下创建profile文件
内容:
10、添加用户信息,因为x86里面已经有了,所以我们可直接从里面复制出来使用
cp /etc/passwd etc/
11、总结linux启动过程,以及嵌入式系统启动过程
在bootloader中 制定 各种要求 传递 给 linux内核的 参数,在开机后先mount上制定文件系统,(该文件系统主要负责启动运行的配置文件)
1)、busybox init启动后,初始化控台
2)、扫描etc/init.d文件
3)、执行系统初始化命令,还有执行rcS文件(这里面会包含制定挂载的文件系统)
4)、执行所有wait动作的命令
5)、执行所有once动作的命令
6)、执行所有终止时必须重新启动的 inittab 命令(动作类型: respawn)
7)、执行所有终止时必须重新启动但启动前必须询问用户的 inittab 命令(动作类型: askfirst)
8)、启动shell程序
9)、执行profile文件
到此根文件系统制作完成!
三:NFS 文件系统挂载
1、开启nfs服务:service nfs restart--本次有效
chkconfig iptables on
2、关闭window防火墙,linux防火墙
3、设置ip
4、开启开发板设置环境变量:
格式:root=/dev/nfs nfsroot=虚拟机 IP:虚拟机的 NFS 根文件系统路径 ip=开发板 IP:虚拟机 IP:网关:子网掩码::eth0:off init=/linuxrc console=ttySAC0 lcd=S70
setenv bootargs root=/dev/nfs nfsroot=192.168.111.251:/root/work/rootfs/ ip=192.168.111.252:192.168.111.251:192.168.111.1:255.255.255.0:edu118:eth0:off init=/linuxrc console=ttySAC0 lcd=w101(必须是同一行)
5、挂载完成
6、测试:开发板连接电脑进入共享文件下进行测试