根文件系统制作(mini6410)

     Uboot已经编译完成,下一步就是制作根文件系统,初步打算使用uboot的tftp功能网络下载内核,然后挂载nfs文件系统,进行驱动开发。

1.创建目录。

        选择你想创建根文件系统的目录,在目录下创建所必须的目录和子目录。

      

#mkdir   rootfs
#cd  rootfs
#mkdir  bin  dev  etc  lib  proc sbin sys usr mnt  tmp ar
#mkdir  usr/bin  usr/lib  usr/sbin lib/modules

2.创建设备文件

   linux内核启动后所必须的设备文件

#cd  rootfs/dev
#mknod   -m  666  console c  5  1
#mknod   -m  666  null   c   1   3

3.加入配置文件

    由于/etc目录下的配置文件是和硬件芯片无关的配置项,所以可以拷贝来直接使用,这是很自由定制的项目,下载一个国嵌提供的基本配置文件,下载后解压到/etc根目录,需要其他的设置可以自己添加。


4.添加内核模块

    进入你的内核源代码目录,编译内核模块。并且安装到根文件系统目录 .

#cd  内核代码目录
#make  modules ARCH=arm CROSS_COMPILE=arm-linux-
#make modules_install  ARCH=arm INSTALL_MOD_PATH=根文件系统目录

   进行完最后一步的安装过程后,内核模块会被安装到根文件系统的/lib目录下对应的内核版本文件夹


5.编译安装busybox

   这次使用的是1.13.3版本的busybox(busybox-1.13.3),busybox是一个用于嵌入式linux系统的精简版二进制程序集合,用于生成linux下日常使用的一些命令,例如ls,mv等等。

   5.1  配置busybox:   

#make  menuconfig

5.2 编译busybox    

#make
#make install


   经过这五个步骤,一级基础的根文件系统就建立了。下一步就是,选择文件系统的挂载方式。

1.基于nandflash的文件系统:yaffs2,ubifs

2.基于norflash的文件系统:jffs2

3.基于内存的文件系统:ramdisk,initramfs

4.基于网络的文件系统:NFS


   由于这次使用挂载根文件系统是用于调试驱动,所以选择nfs文件系统,内核通过tftp下载到内存启动,然后挂载nfs根文件系统。

选择任何一个文件系统都需要在编译内核的时候,选择相应的支持选项。以nfs为例:

  配置内核:make menuconfig

   1.首先要取消内核中的initramfs文件系统的选项:位于General setup--》Initial RAM filesystem and RAM disk support


2.选择NFS文件系统,位于:File systems--》Network  file Systems--》Root file system on  NFS



 3.编译内核:make uImage  ARCH=arm  CROSS_COMPILE=arm-linux-,生成uboot可以引导的uImage镜像。


4.参数设置

   4.1主机tftp客户端配置(我的目录是/home/gexueyuan/tftp):

        创建文件/etc/xinetd.d/tftp

service tftp
    {
        socket_type = dgram
        protocol = udp
        wait = yes
        user = root
        server = /usr/sbin/in.tftpd
        server_args = -s /home/gexueyuan/tftp
        disable = no
        per_source = 11
        cps = 100 2
        flags = IPv4
    }

   4.2   主机nfs服务器端的配置文件,位于/etc/exports(我的nfs文件系统跟=根目录位于/home/gexueyuan/nfs/rootfs):

/home/gexueyuan/nfs/rootfs *(rw,sync,no_root_squash,no_subtree_check)


   4.3   uboot启动参数设置:

   首先要设置好你的开发板ip,主机host服务器ip等网络参数要设置好,可以先去uboot的shell来检测和主机的连接(ping命令)

   然后设置bootarg参数,这是一个传递给内核的启动参数:

setenv bootargs "console=ttySAC0,115200 mem=256M root=/dev/nfs nfsroot=192.168.1.51:/home/gexueyuan/nfs/rootfs ,tcp  ip=192.168.1.97:192.168.1.51:192.168.1.1:255.255.255.0:gexueyuan:eth0:off"

   添加了tcp参数,防止网络的udp协议出问题。

bootcmd参数为:

tftp 0x50018000 uImage;bootm 0x50018000


  




















评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值