从零开始制作linux根文件系统

      开发环境 unbuntu 12.04

      目标版:友善之臂tiny6410

      工具:busybox,zlib,yaff2制作工具

      前提条件:搭建好交叉编译的环境,下载好curess.h这个库,开发板烧好了u-boot和内核

今天马上进入正题,如何制作根文件系统。

----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------


一,编译/安装Busybox,生成 /bin,/usr,/sbin,文件

1、从http://www.busybox.net/ 下载busybox-1.7.0.tar.bz21,

2,解压

tar xjvf busybox-1.7.0.tar.bz2
3,配置Busybox

make menuconfig

选项的有关配置我就不用图来解释,用简单的文字来描述吧

第一部分是Busybox Settings,主要编译和安装busybox的一些选项。这里主要需要配置:


1)、Build Options -- Build BusyBox as a static binary (no shared libs),表示编译busybox时,是否静态链接C库。我们选择动态链接C库,所以把它置空。

2)、Installation Options -- Applets links (as soft-links) -- (X) as soft-links,表示安装busybox时,将各个命令安装为指向busybox的软链接还是硬链接。我们选择软链接。

3)、Installation Options -- (/home/lbw/busy) BusyBox installation prefix,表示busybox的安装位置。我们选择/home/lbw/busy

4)Busybox Library Tuning。保留Command line editing以支持命令行编辑;保留History size以支持记忆历史命令;选中Tab completion和Username completion以支持命令自动补全

5)进 入 Cross Compiler prefix 选 项 , 修 改 本 地 交 叉 工 具 链 的 路 径 , 如“/opt/FriendlyARM/toolschain/4.5.1/bin/arm-linux-”

6)  返回 Busybox Settings 菜单,选择并进入 Busybox Library Turing--->选项,这里我用图说明一下



7)选择 vi-style line editing commands(NEW)选项,

8)选上 Fancy shell prompts(NEW)选上

9)一直按 <exit>直到这个界面出现,点击yes,图形界面

4,编译busybox

make

5,安装busybox

make install

等上述步骤完成后就可以在刚刚制定的目录下产生


二,创建一个目录文件,存放其它目录,具体步骤如下

#mkdir /root/rootfs
#cd /root/rootfs
#mkdir dev home proc tmp var etc lib mnt sys usr etc/rc.d
将busybox产生的四个文件拷贝到/root/rootfs下

好吧,写到这大家应该知道我用的是root用户了,为了避免权限的麻烦,我一开始就用了root,以下对目录的操作是我们制作的哦,不是宿主机的。且用且珍惜,小心别改到宿主机的目录上去哦



三,配置etc文件。

1)etc/inittab 文件
  说明:inittab 文件是 init 进程的配置文件,系统启动后所访问的第一个脚本文件,后续启动的文件都由它指定。

#cd /root/ rootfs
#vi etc/inittab
内容如下


其中第三行的前面本该有参数的,就是指定它的设备节点口,tiny6410的前面要添加,s3c2410_serial0,为了避开错误提示,我就先把那句话删除掉

2)etc/rc.d/rc.sysinit 文件
这是一个脚本文件,可以在里面添加想自动执行的命令。以下命令配置环境变量、
主机名、dev 目录环境、挂接/etc/fstab 指定的文件系统、建立设备节点与设置 IP。

#vi etc/rc.d/rc.sysinit


这一部分非常有意思,你可以在里面添加你喜欢的自动执行的命令和脚本,非常好用,这里只列出比较简单的一些功能,想要实现更加强大的功能,可以自行添加


3)etc/fstab 文件

执行 mount –a 时挂接/etc/fstab 指定的文件系统

#vi etc/fstab


4)etc/profile 文件
说明:inittab 中执行了这样一个语句“::respawn:-/bin/sh”。启动/bin/sh 程序时会启动 ash 的配置信息,而它就是/etc/profile,

会把 profile 的所有配置全sh部都运行一遍,因此用户可以把自己的启动程序放在这里

vi etc/profile



5)修改系统配置文件权限
#chmod 755 etc/*
#chmod 755 etc/rc.d/rc.sysinit


四,利用交叉编译工具链,拷贝其库文件

在上述我们选择的是动态库编译,所以拷贝的时候我们要注意把链接的文件也一起拷过去,避免错误

通常用到的库是以下几个。

ld.so.1, ld-2.3.6.so, libcrypt.so.1, libc.so.6, libdl.so.2, libgcc_s.so.1, libm.so.6, libpthread.so.0,libstdc++.so.6

我存放的路径比较长如下

/opt/FriendlyARM/toolschain/4.5.1/arm-none-linux-gnueabi/sys-root/usr/lib
如果你找不到上诉路径可以用强大的find命令,具体如下

find /* -name "lib*.so.*" -print

这样的搜索就可以把路径查找出来

接下来我们就把它拷贝下来,注意它的链接文件哦,但是小编为了避免错误,决心把整个lib/下的库拷贝过去

cp -rdf  /opt/FriendlyARM/toolschain/4.5.1/arm-none-linux-gnueabi/sys-root/usr/lib  /root/rootfs/lib

五,创建/dev的设备文件

在小编亲试的过程中,在上述配置完之后就急忙制成根文件系统镜像,结果导致错误出现

/init: line 103: can't open /r/dev/console: no such file
[    3.185580] Kernel panic - not syncing: Attempted to kill init!
结果一看,原来是没有这个控制台,但控制台是设备文件,于是我查了一下我本机上的/dev/console

找出它的节点是5,1

于是我在dev/就创建了个

#mknod console c 5 1
这一步很关键哦,如果提示出现没有这个null,那同样的方法

#mknod null c 1 3

六,制作根文件系统(yaffs)
根文件系统已经制作完毕,最后一个步骤是将其打包为yaffs映像文件,以供bootloader将其烧录到nand flash上。这只需要执行命令:

#mkyaffs2image  /root/rootfs  ./rootfs-yaffs2.img

当然在这之前还需要准备两个工具

1,zlib-1.2.3.tar.gz      制作镜像的依赖工具

#tar zxf zlib-1.2.3.tar.gz
#cd zlib-1.2.3
#./configure && make && make install

2,yaffs2-d43e901.tar.gz    yaffs镜像生成工具

#tar zxf yaffs2-d43e901.tar.gz
#cd yaffs2-d43e901/utils
#make
然后进入yaffs2-d43e901/utils 把mkyaffs2image拷到/usr/bin(注意,这个就是我们宿主机上的哦,至于为什么要拷呢,原因就像我们在哪里都能使用ls一样)

#cp mkyaffs2image /usr/bin

完成上述步骤后,就会在当前目录下(编译时指定好了)产生一个rootfs-yaffs2.img


七,利用usb下载到开发板上

#./dnw  ./rootfs-yaffs2.img  0
这是usb下载,后面为0,是因为U-boot已经指定好地址了,所以不写即可

之后重启开发板,然开发板跑起来就出现


这就是我们自己创建的文件系统啦,是不是顿时很有成就感啊,以后继续努力,完善这个系统。




后记

小编刚学习如何构建嵌入式开发环境,文中有部分参考了用户手册,有些地方存在不完善,敬请谅解




  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值