linux根文件系统制作

1.建立根文件系统目录与文件

1.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

1.2 创建设备文件

  • Linux系统中,绝大部分的设备通过文件来操作,通过文件读写来实现对设备的读写,dev目录下存放各种设备文件,console文件和null目录必需的,用mknod创建设备文件。(c代表的是字符设备,5是主设备号,1是次设备号
    • #cd rootfs/dev
    • #mknod -m 666 console c 5 1
    • #mknod -m 666 null c 1 3

1.3 加入配置文件(与体系结构无关)

  • 首先需要下载etc.tar.gz文件
  • 解压:#tar xvzf etc.tar.gz
  • 把解压后的所有文件拷贝到创建的rootfs/etc文件下:#mv etc/* …/root/etc/  -rf

1.4 添加内核模块

  • 进入内核代码:#cd …/linux
  • 编译内核模块:#make modules ARCH=arm CROSS_COMPILE=arm-linux-
  • 把编译好的内核模块复制到rootfs目录下(...为rootfs目录前缀):#make modules_install ARCH=arm INSTALL_MOD_PATH=…/rootfs

1.5 编译/安装busybox

  • Busybox: 嵌入式开发中的瑞士军刀,提供嵌入式开发中很多的的命令、小工具先下载busybox源代码,解压后进去文件夹中。
  • 配置busybox:
    • #make menuconfig

  • 在Busybox Settings-> 
    • build Options->
      • 选中 “Build busybox as a static binary”, 静态链接
        • Cross Compiler prefix (arm-linux-)配置成arm-linux-

  • 在Busybox Settings-> 
    • Installation Options->
      • 选中 “Don‘t use /usr”, 选中该项可以避免busybox 被安装到宿主系统的usr目录下,破坏宿主系统。
        • Busybox Installation Prefix (/xxx/rootfs)该选项表明编译后的busybox的安装位置。

  • 编译、安装busybox
    • make
    • make install

2.挂载根文件系统

2.1 文件系统类型

  • 根据存储设备的硬件特性、系统需求,不同的文件系统类型有不同的应用场合。在嵌入式Linux应用中,主要的存储设备为RAM 和FLASH,常用的基于存储设备的文件系统类型包括:jffs2, yaffs2, ubifs, ramdisk等。

 

2.2 挂载initramfs文件系统

  • 基于内存的文件系统,主要用于产品,优点是访问速度快,缺点是根文件系统发生变化时都要重新制作一遍,下面是建立initramfs文件系统的步骤。
  • 进入rotfs创建软连接,名字叫做init
    • #cd …/rootfs/
    • #ln –s ./bin/busybox  init
  • 配置Linux内核,支持initramfs,进入内核目录
    • #make menuconfig ARCH=arm
    • General setup->
      • 选中Initial RAM filesystem and RAM disk (initramfs/initrd) support    
      • 配置下面目录为根文件系统目录****/rootfs/

  • 编译内核
    • #make uImage ARCH=arm CROSS_COMPILE=arm-linux-
    • 拷贝uImage到/tftpboot/目录下
  • 进入到U-boot,配置环境变量,U-boot通过bootargs告诉内核以什么样的方式启动
    • #setenv bootargs noinitrd console=ttySAC0,115200
  • 下载并启动linux内核:
    • #tftp 31000000 uImage
    • #bootm 31000000

到这里根文件系统就挂载成功了。

2.3 挂载NFS文件系统

  • 基于网络的文件系统,主要用于开发阶段,通过NFS可以非常方便的往开发板中添加文件。
  • 首先需要对内核进行配置
    • #make menuconfig ARCH=arm
    • General setup->,
      • 取消掉IInitial RAM filesystem and RAM disk (initramfs/initrd) support    
      • 然后进入File system->
        • Network File Systems,保证Root file system on NFS是选上的,Network File Systems也要选上

  • 进行内核编译
    • #make uImage ARCH=arm CROSS_COMPILE=arm-linux-
    • 拷贝uImage到/tftpboot/目录下
  • 进入到U-boot,配置环境变量
    • setenv bootargs noinitrd console=ttySAC0,115200 init=/init root=/dev/nfs rw nfsroot=192.168.0.110:/home/linux/workdir/rootfs,proto=tcp,nfsvers=3 ip=192.168.0.112:192.168.0.110:192.168.0.1:255.255.255.0::eth0:off
    • saveenv
  • console的配置表示使用
  • 串口作为控制台,波特率为115200;
  • root表示使用/dev/nfs作为根文件系统;
  • nfsroot用来指明NFS服务器的地址,即Linux的地址,后面的冒号是制作的根文件系统的路径要选择和自己相符的路径;
  • ip第一项是启动后自己的ip地址(开发板ip),第二项是NFS服务器地址,第三项是网关,第四项是掩码,中间可以给开发板取主机名,这里空掉,eth0表示启动后把ip地址赋值给eth0网卡,off表示关闭动态ip获取功能。
  • 注意:启动前需要保证Linux启动了,NFS并配置见博文

 

  • 下载并启动linux内核:
  • #tftp 31000000 uImage
  • #bootm 31000000

   到这里根文件系统就挂载成功了。

 

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值