制作根文件系统

一.编译安装busybox

1.sudo su进入root权限

2.make menuconfig配置一下busybox

 Busybox Settings --->     

Build Options --->       

 [*] Build BusyBox as a static binary (no shared libs)       

 (arm-none-linux-gnueabi-) Cross Compiler prefix   注意 一定要指定交叉编译工具

3.make编译

4.mkdir /work/nfs_root/first_fs目录

5.一定要 make CONFIG_PREFIX=/work/nfs_root/first_fs install这样安装busybox,不能直接make  install否则会安装在pc机上破坏系统,这一步一定要切换到root模式,不然安装不了

二.制作最小根文件系统

2.1制作字符设备文件/dev/console    /dev/null

a)首先查看pc机文件系统格式ls /dev/console /dev/null -l

b)创建文件夹 mkdir dev,并进入cd dev/

c) 创建console字符设备主设备号5,次设备号1,mknod console c 5 1 

d)   创建null字符设备主设备号1,次设备号3,mknod null c 1 3

2.2制作etc目录下的配置文件

a)返回根目录系统/work/nfs_root/first_fs

b)创建etc目录mkdir etc

c)编译该目录配置文件vi etc/inittab,添加console::askfirst:-/bin/sh,即把标准输入、标准输出、标准错误输出console上

2.3安装glibc库,我电脑glibc库的位置/usr/local/arm/gcc-3.4.5-glibc-2.3.6/arm-linux/lib

a)在库目录创建lib目录mkdir -p /work/nfs_root/first_fs/lib

b)把加载器拷贝到lib目录cp *.so* /work/nfs_root/first_fs/lib -d,加-d意思是拷贝时直接是链接一起拷贝,这样不会把真实库拷贝覆盖导致库文件太大
 

2.4  制作yaffs文件映像文件,yaffs1适用小页nandflash,每页512字节,对于大页系统需适用yaffs2,比如每页2018字节

a)解压yaffs文件tar -jxf yaffs_source_util_larger_small_page_nand.tar.bz2

b)进入解压后的文件,/home/linux/u_boot/Development_util_ok/yaffs2/utils

c)make编译生成mkyaffs2image

d)拷贝到pc机根目录下 sudo cp mkyaffs2image /usr/local/bin/

e)加上可执行权限sudo chmod +x  /usr/local/bin/mkyaffs2image 

f)在root模式下,cd   /work/nfs_root

e)首先mkyaffs2image,查看怎么制作,如下

     /work/nfs_root$ mkyaffs2image 
     mkyaffs2image: image building tool for YAFFS2 built Oct  9 2019
      usage: mkyaffs2image  dir  image_file [convert]
                                            dir        the directory tree to be converted
                                                   image_file the output file to hold the image
        'convert'  produce a big-endian image from a little-endian machine
 

e)使用这个命令制作 mkyaffs2image first_fs first_fs.yaffs2

f)proc目录,内核提供的虚拟文件系统,收集当前系统运行程序的信息,如ps命令通过该目录查看当前进程的运行信息,

>修改、etc/inittab加上::sysinit:/etc/init.d/rcs

>创建一个脚本文件mkdir  /etc/init.d

>编辑脚本文件vi /etc/init.d/rcs 添加mount -t none /proc或者用用rcs脚本添加mount -a 去读出/etc/fstab根据配置文件里面内容来挂载文件系统,

vi /etc/fstab    添加#device mount-point type  options  dump  fsck order
                               proc    /proc       proc  defaults  0     0

2.5 制作NFS根文件系统

1)cd  /work/nfs_root/first_fs,进入该目录

2)拷贝该目录,sudo  vi /etc/exports  ,在最后一行添加被挂载共享的目录

/work/nfs_root/first_fs    *(rw,sync,no_root_squash,no_subtree_check)

3)重启服务器

sudo    /etc/init.d/nfs-kernel-server restart

4)本机测试sudo mount -t nfs 192.168.0.102:/work/nfs_root/first_fs /mnt,将本机ip地址/work/nfs_root/first_fs 目录内容挂载到/mnt目录

5)打开开发板执行 mount -t nfs  -o nolock 192.168.0.102:/work/nfs_root/first_fs  /mnt,ls可以看见本机该目录的内容被挂载到/mnt目录下

2.6 设置直接从NFS系统启动,需要设置环境参数

bootargs=noinitrd root=/dev/mtdblock3 init=/linuxrc console=ttySAC0
在内核树种输入grep  "nfsroot="  *  -nR

可以搜到在源码树中Documentation/nfsroot.txt:52:nfsroot=[<server-ip>:]<root-dir>[,<nfs-options>]有对这个参数的设置

 

三.调试错误

原先,arm-linux-gcc -v  4.4.3  制作根文件系统,虽然能打开/dev/console/  但是老是卡住子linuxrc,然后不动,

解决办法:更好gcc编译器,换成arm-linux-gcc -v 3.4.5  ok!

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值