根文件系统制作

来源:互联网 发布:不可抗力网络电影 编辑:程序博客网 时间:2024/05/18 00:25

先来看看制作根文件系统的思维导图:


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


2、  创建设备文件

cd rootfs/dev

mknod –m 666console c 5 1

mknod –m 666null c 1 3


3、  加入配置文件

tar zxvf etc.tar.gz –C /rootfs


4、  添加内核模块

暂时不添加


5、  编译、安装busybox

tar zxvf busybox-1.13.3.tar.gz

cd busybox-1.13.3

make menuconfig

Busybox Settings àbuild Options->

           BuildOptions->

选中Build busybox as a static binary  静态链接

Cross Compiler prefix设置为arm-linux- 

上面设置好保存回到上级的

Installation Options->

选中“Don’t use /usr”,选中该项可以避免busybox被安装到宿主系统的目录下,破坏宿主系统

Busybox Installation Prefix(/xxx/rootfs)  该项表明编译后的busybox的安装位置

改为 自己创建的rootfs根文件系统路径

配置完成后保存退出,

执行make和安装busybox  :make install

 

上述的配置过程:

进入BusyboxSetting->

        build options->

           [*]"Build busybox as a staticbinary"//动态链接

           Cross Compile prefix(arm-linux-)

        Installation Option->

           [*]Don't usr/usr//避免busybox安装至宿主系统的usr,目录下

           Busybox InstallationPrefix(/xxx/rootfs)//安装位置

     其他选项默认

 

到这里基本的目录和文件就建立完成了,接着是以何种文件系统挂载。

 

现在设置以initramfs文件系统挂载:

1、  建立Initramfs文件系统启动时所需文件init(initramfs文件系统启动时会在根文件系统中执行第一个init程序,它对uboot传过来的参数init=/linuxrc不予理睬,所以需要在制作的根文件系统里的根目录加入init程序,否则无法启动。init程序和linuxrc程序一样都是符号链接文件,它们都是指向/bin/busybox程序。)

有两种方法:

            a)mvlinuxrc init    (可以通过ll命令查看,linuxrc是指向bin/busybox的软连接)

            b)不删除linuxrc,直接建立软连接

                     cdrootfs

                     ln–s ./bin/busybox init

2、  配置linux内核,支持initramfs

  makemenuconfig

  General setup  --->

    [*]Initial RAM filesystem and RAM disk (initramfs/initrd) support
    (/xxx/rootfs) Initramfs source file(s)    #输入根文件系统的所在目录 

3、  编译make uImage

4、  修改boot启动参数

setenv bootargs   noinitrd console=ttySAC0,115200

         下载内核启动,若是发现tftp下载停顿则要确保主机的防火墙和selinux要关闭

         /etc/init.d/iptablesstop    setenforce permissive

 

出现错误了:Warning: unable to open an initial console.

忘记创建设备文件了

 

0 0
原创粉丝点击