制作根文件系统并以NFS方式挂载成功

接着前面一篇:在OK2440/FL2440上移植linux-2.6.35.4  来完成制作一个根文件系统,并用前面制作好的uboot和内核通过NFS服务来挂载。

制作一个根文件系统,主要分为两步:

1.创建根文件系统下的各级目录,包括安装内核驱动模块。

2.用busybox来生成此根文件系统的各种命令,将各级目录关联起来

首先下载busybox1.13.3和根文件系统用到的etc目录:点击下载

在虚拟机根目录下创建一个工作目录/forlinx/s3c2440,接下来所有工作都在这个目录里完成;

执行命令进入该目录:cd  /forlinx/s3c2440

把下载解压后最终得到两个文件夹 busybox1.13.3 和etc ,把这两个文件夹拷贝到工作目录 /forlinx/s3c2440/中;

到这里准备工作已完成;


进到工作目录 /forlinx/s3c2440/下,开始制作根文件系统:

1.新建一个文件mkrootfs,文件内容如下:

#!/bin/sh
echo "makeing rootdir"
mkdir rootfs
cd rootfs

echo "makeing dir: bin dev etc lib proc sbin sys usr"
mkdir bin dev etc lib proc sbin sys usr
mkdir usr/bin usr/lib usr/sbin lib/modules
sudo mknod -m 600 dev/console c 5 1
sudo mknod -m 666 dev/null c 1 3


echo "making dir: home root boot"
mkdir home root boot
echo "makeing dir:jacob"
mkdir home/jacob
echo "done"
保存这个文件后退出。这是一个脚本文件,我们通过运行这个脚本文件自动创建根文件系统的各级目录;

执行下面两条命令:

chmod 777 mkrootfs  
sh mkrootfs
第一条是修改文件权限的,第二条是运行脚本文件的,在当前目录下你会看到新增一个rootfs文件夹,进去后会看到bin dev etc lib proc sbin sys usr等目录,到此就完成了第一步创建各级目录;


2.把解压出来的etc拷到rootfs目录中,替换掉rootfs目录中已有的etc文件夹;


3..进入linux-2.6.35.4源码包目录,编译内核模块,编译的命令是:

  1. make modules ARCH=arm CROSS_COMPILE=arm-linux-  
4. 安装内核模块

  1. makemodules_install ARCH=arm INSTALL_MOD_PATH=/forlinx/s3c2440/rootfs  
这里的/forlinx/s3c2440/rootfs表示将内核模块安装到这个路径下,这里刚好是我们制件的根文件系统总目录。

5.配置busybox,进入busybox1.13.3目录下;执行命令:make menuconfig

进行如下配置:

  1. Busybox Settings--->  
  2.     General Configuration --->  
  3.             Buffer allocation policy (Allocatewith Malloc) --->  
  4.         [*] Show verbose applet usage messages  
  5.         [*] Support --install [-s] to installapplet links at runtime  
  6.         [*] Enable locale support (system needslocale for this to work)  
  7.         [*] Support for devfs  
  8.         [*] Use the devpts filesystem forUnix98 PTYs  
  9.         [*] Runtime SUID/SGID configuration via/etc/busybox.conf  
  10.         [*] Suppress warning message if/etc/busybox.conf is not readable  
  11.         (/proc/self/exe) Path to BusyBox executable  
  12.     Build Options --->  
  13.         [*] Build BusyBox as a static binary(no shared libs)  //选中"Build busybox as a static binary",静态链接  
  14.    
  15.         [*] Build with Large File Support (foraccessing files > 2 GB)  
  16.               [*]Do you want to build BusyBoxwith a Cross Compiler?  
  17.               (arm-linux-) cross Compiler prefix   //  填写交叉编译前缀  
  18.     Installation Options --->  
  19.         [ *] Don't use /usr         //选中“Don'tuse /usr”,选中该项可以避免busybox被安装到宿主系统的/usr目录下,破坏宿主系统  
  20.             Applets links (as soft-links)--->  
  21.         (/xxxx/rootfs) BusyBox installationprefix   //填写你的安装路径,我这里是填:/forlinx/s3c2440/rootfs/  
  22.     Busybox Library Tuning --->  
  23.         (2) MD5: Trade Bytes for Speed  
  24.        
  25. Linux ModuleUtilities --->  
  26.     (/lib/modules) Default directory containingmodules  
  27.     (modules.dep) Default name of modules.dep  
  28.     [*] insmod  
  29.     [*] rmmod  
  30. [*] lsmod  
  31.        [*]lsmodpretty output for 2.6.x Linux kernels  
  32. [*] modprobe  
  33. [*]  Multipleoptions parsing  
  34.     --- Options common to multiple modutils  
  35.     [*] Support tainted module checking withnew kernels  
  36.     [*] Support version 2.6.x Linux kernels  
配置完了保存退出。

6.编译,安装busybox,执行命令:

make arch=ARM CROSS_COMPILE=arm-linux-
make install
进入目录/forlinx/s3c2440/rootfs/sbin中看init检查busybox安装成功与否

至此根文件系统制作完成。

接着就是在虚拟机上安装NFS服务器(安装步骤我写在另外的一篇文章里:在ubuntu上安装tftp服务器与nfs服务器)。

由于前面的uboot中设置的bootargs参数里设置的路径正好也是:/forlinx/s3c2440/rootfs;所以此时启动内核后就可以挂载上面制作完成的根文件系统rootfs.

如下图所示:


附:上图中[ok2440v3@luo] 是通过修改/forlinux/s3c2440/rootfs/etc/profile文件的,你可自定义,profile文件内容如下:

# /etc/profile: system-wide .profile file for the Bourne shells

echo
echo -n "Processing /etc/profile... "
export PS1="[ok2440v3@luo]# "
echo "Done"
echo

注意:本根文件系统移植是busybox中是用静态链接生成,所以在交叉编译文件时要加上 -static 参数,形如:arm-linux-gcc -static hello.c -o hello; 然后再在板子上运行./hello;

接下来要解决的问题的:要用动态链接库制作一个最小的yaffs2根文件系统,下载到板子上。因为这里的tftp 下载有个问题就是文件过大(大于60M)会下载不成功。如有大牛知道这个问题的解决方法,还望赐教。


感谢网上的各位大牛,本博文主要参考:



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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值