班级小窝正在加紧建设中,暂时只是一个展示页面,同学们暂待。。。

快速学会linux根文件系统制作

linux leilei 1412℃ 0评论

特别说明:根文件系统制作过程中所有拷贝命令均需加“-a”参数(  #cp  –a  )否则将出现难以预料的问题。

 

文章书写仓促,很多细节没有涉及,按照此方法可以制作完成一个yaffs2格式的纯净的linux根文件系统,其它格式可以使用相应的打包工具即可。本教程只是一个简单的创建根文件系统的流程说明,做开发的话还会有很多后续环境配置。故新手可以按照本教程操作学习,对linux根文件系统有一个感性认识。如发现有错误,敬请留言提醒。


 未命名 -1

1、工具准备

busybox(本教程采用1.20版本)  (百度搜索即可下载)

yaffs2打包工具(要在uboot中配置相应的格式支持)

交叉编译工具链(arm-linux-gcc、mips-linux-gcc)

2、busybox配置编译

      1.解压busybox压缩包,进入解压后的目录

      2.执行  # make menuconfig命令,进入配置界面

图1

注意以下选项:

(1)      Build BusyBox as astatic binary ( no shared libs )  //将busybox编译成静态链接

(2)      Do you want to buildbusybox with a Cross Compile? (/usr/local/arm/3.3.2/bin/arm-linux-) CrossCompile prefix  //指定交叉编译器路径

(3)       Support reading an inittab file  //支持init读取/etc/inittab 配置文件

(4)       ash选中ash   //建立的rcS脚本才能执行

(5)       cp  cat  ls mkdir  mv   //可执行命令工具的选择,自己看着办吧,需要用到的就选上

(6)       Installation Options 指定安装路径(默认为./_install)

图2

其余大部分选项默认即可,busybox的具体问题可以网络搜索相关文档查看。

           3.保存退出。

执行#make、#make install,将会在指定目录下(./_install)生成文件系统需要的目录结构及相关命令和启动文件

           4.创建动态库(使用静态编译的跳过本步骤)

使用#***-linux-readelf –d 命令查看busybox程序所使用的动态库文件及其软链接

拷贝库文件及其软链接到指定存放文件系统目录的/lib目录下

(切记拷贝使用#cp –a命令)

3、建立文件系统的目录结构

 

执行# mkdirmyroots  建立文件系统根目录

执行# mkdirbin sbin usr lib dev mnt opt root etc home proc tmp var创建所有需要用到的目录结构

将busybox编译产生的/bin、/sbin、/usr目录和linuxrc文件拷贝至文件系统根目录myroots下

执行# mkdiretc/init.d

进入etc/init.d目录下,建立一个脚本文件,并命名为rcS,用gedit打开,添加如下内容:

#!/bin/sh
PATH=/sbi:/bin:/usr/sbin:/usr/bin:/usr/local/bin:
runlevel=S
prevlevel=N
umask022
exportPATH runlevel prevlevel
#
#  Trap CTRL-C &c only in this shell so wecan interrupt subprocesses.
#
trap”:” INT QUIT TSTP

这个文件可以添加各种启动需要运行的命令脚本,如网卡配置、nfs挂载等

图3

 

4、创建设备节点文件

在根目录/dev目录下,执行“#mknod设备名字 类型 主设备号 次设备号”创建设备文件

#mknod console c 5 1

#mknod null c 1 3

#mknod zero c 1 5

也可以从pc机linux下dev目录中复制相关设备文件到文件系统/dev目录

5、写init启动脚本

在/etc下创建启动脚本文件inittab

#vi/etc/inittab

写入如下两行:

::sysinit:/etc/init.d/rcS

::respawn:-/bin/login

第一行指定开机系统启动之后运行的启动脚本是rcS,第二行要求需用户密码登录系统

将pc机/etc/下的passwd、shadow、group文件拷贝至根文件系统/etc下,删去root以外的条目。则可以用pc机root帐号和密码登录嵌入式设备

 

6、创建虚拟文件系统

文件系统根目录下执行#mkdir/proc /sys /tmp

在rcS脚本中挂载三个虚拟文件系统,或板子启动后在串口终端执行:

#mount–t proc proc /proc

#mount–t sysfs sys /sys

#mount–t tmpfs tmp /tmp

挂载后proc文件夹存放系统关键信息

Sys目录存放系统信息

Tmp目录可做临时文件存储,直接存在内存上,读写速度快

 

7、用yaffs2工具打包文件系统

在工具所在目录执行#yaffs2 2 根文件系统目录 根文件系统镜像名字

#yaffs2  2 ***/rootfs  myrootfs.image

#chmod  644 myrootfs.image  更改镜像权限

 

 

 

至此,一个空白的根文件系统制作完毕,可以烧写到板子上运行

 

转载请注明:我们的嵌入式 » 快速学会linux根文件系统制作

喜欢 (2)
发表我的评论
取消评论
表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
(1)个小伙伴在吐槽
  1. 邮箱已留下,楼主好人
    yunzhuiyueyin2014-11-13 23:25 回复