制作根文件系统并以NFS方式挂载成功
2014-05-12 20:14
477 查看
接着前面一篇:在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,文件内容如下:
执行下面两条命令:
2.把解压出来的etc拷到rootfs目录中,替换掉rootfs目录中已有的etc文件夹;
3..进入linux-2.6.35.4源码包目录,编译内核模块,编译的命令是:
make modules ARCH=arm CROSS_COMPILE=arm-linux-
4.安装内核模块
makemodules_install ARCH=arm INSTALL_MOD_PATH=/forlinx/s3c2440/rootfs
这里的/forlinx/s3c2440/rootfs表示将内核模块安装到这个路径下,这里刚好是我们制件的根文件系统总目录。
5.配置busybox,进入busybox1.13.3目录下;执行命令:make
menuconfig
进行如下配置:
Busybox Settings--->
General Configuration --->
Buffer allocation policy (Allocatewith Malloc) --->
[*] Show verbose applet usage messages
[*] Support --install [-s] to installapplet links at runtime
[*] Enable locale support (system needslocale for this to work)
[*] Support for devfs
[*] Use the devpts filesystem forUnix98 PTYs
[*] Runtime SUID/SGID configuration via/etc/busybox.conf
[*] Suppress warning message if/etc/busybox.conf is not readable
(/proc/self/exe) Path to BusyBox executable
Build Options --->
[*] Build BusyBox as a static binary(no shared libs) //选中"Build busybox as a static binary",静态链接
[*] Build with Large File Support (foraccessing files > 2 GB)
[*]Do you want to build BusyBoxwith a Cross Compiler?
(arm-linux-) cross Compiler prefix // 填写交叉编译前缀
Installation Options --->
[ *] Don't use /usr //选中“Don'tuse /usr”,选中该项可以避免busybox被安装到宿主系统的/usr目录下,破坏宿主系统
Applets links (as soft-links)--->
(/xxxx/rootfs) BusyBox installationprefix //填写你的安装路径,我这里是填:/forlinx/s3c2440/rootfs/
Busybox Library Tuning --->
(2) MD5: Trade Bytes for Speed
Linux ModuleUtilities --->
(/lib/modules) Default directory containingmodules
(modules.dep) Default name of modules.dep
[*] insmod
[*] rmmod
[*] lsmod
[*]lsmodpretty output for 2.6.x Linux kernels
[*] modprobe
[*] Multipleoptions parsing
--- Options common to multiple modutils
[*] Support tainted module checking withnew kernels
[*] Support version 2.6.x Linux kernels
配置完了保存退出。
6.编译,安装busybox,执行命令:
至此根文件系统制作完成。
接着就是在虚拟机上安装NFS服务器(安装步骤我写在另外的一篇文章里:在ubuntu上安装tftp服务器与nfs服务器)。
由于前面的uboot中设置的bootargs参数里设置的路径正好也是:/forlinx/s3c2440/rootfs;所以此时启动内核后就可以挂载上面制作完成的根文件系统rootfs.
如下图所示:
附:上图中[ok2440v3@luo] 是通过修改/forlinux/s3c2440/rootfs/etc/profile文件的,你可自定义,profile文件内容如下:
注意:本根文件系统移植是busybox中是用静态链接生成,所以在交叉编译文件时要加上 -static 参数,形如:arm-linux-gcc -static hello.c -o hello; 然后再在板子上运行./hello;
接下来要解决的问题的:要用动态链接库制作一个最小的yaffs2根文件系统,下载到板子上。因为这里的tftp 下载有个问题就是文件过大(大于60M)会下载不成功。如有大牛知道这个问题的解决方法,还望赐教。
感谢网上的各位大牛,本博文主要参考:
http://blog.csdn.net/eastmoon502136/article/details/7905960
http://blog.csdn.net/jacobywu/article/details/6844794
制作一个根文件系统,主要分为两步:
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源码包目录,编译内核模块,编译的命令是:
make modules ARCH=arm CROSS_COMPILE=arm-linux-
4.安装内核模块
makemodules_install ARCH=arm INSTALL_MOD_PATH=/forlinx/s3c2440/rootfs
这里的/forlinx/s3c2440/rootfs表示将内核模块安装到这个路径下,这里刚好是我们制件的根文件系统总目录。
5.配置busybox,进入busybox1.13.3目录下;执行命令:make
menuconfig
进行如下配置:
Busybox Settings--->
General Configuration --->
Buffer allocation policy (Allocatewith Malloc) --->
[*] Show verbose applet usage messages
[*] Support --install [-s] to installapplet links at runtime
[*] Enable locale support (system needslocale for this to work)
[*] Support for devfs
[*] Use the devpts filesystem forUnix98 PTYs
[*] Runtime SUID/SGID configuration via/etc/busybox.conf
[*] Suppress warning message if/etc/busybox.conf is not readable
(/proc/self/exe) Path to BusyBox executable
Build Options --->
[*] Build BusyBox as a static binary(no shared libs) //选中"Build busybox as a static binary",静态链接
[*] Build with Large File Support (foraccessing files > 2 GB)
[*]Do you want to build BusyBoxwith a Cross Compiler?
(arm-linux-) cross Compiler prefix // 填写交叉编译前缀
Installation Options --->
[ *] Don't use /usr //选中“Don'tuse /usr”,选中该项可以避免busybox被安装到宿主系统的/usr目录下,破坏宿主系统
Applets links (as soft-links)--->
(/xxxx/rootfs) BusyBox installationprefix //填写你的安装路径,我这里是填:/forlinx/s3c2440/rootfs/
Busybox Library Tuning --->
(2) MD5: Trade Bytes for Speed
Linux ModuleUtilities --->
(/lib/modules) Default directory containingmodules
(modules.dep) Default name of modules.dep
[*] insmod
[*] rmmod
[*] lsmod
[*]lsmodpretty output for 2.6.x Linux kernels
[*] modprobe
[*] Multipleoptions parsing
--- Options common to multiple modutils
[*] Support tainted module checking withnew kernels
[*] 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)会下载不成功。如有大牛知道这个问题的解决方法,还望赐教。
感谢网上的各位大牛,本博文主要参考:
http://blog.csdn.net/eastmoon502136/article/details/7905960
http://blog.csdn.net/jacobywu/article/details/6844794
相关文章推荐
- arm开发板最小文件系统的制作与nfs挂载方法
- JZ2440:通过nfs挂载文件系统不成功
- mini6410基于linux2.6.36内核通过NFS启动根文件系统总结(四制作根文件系统及通过NFS挂载文件系统)
- mini6410基于linux2.6.36内核通过NFS启动根文件系统总结(四制作根文件系统及通过NFS挂载文件系统)
- 基于busybox制作mini2440根文件系统及使用nfs挂载
- 虚拟机中ubuntu挂载nfs成功,并为arm11烧录YAFFS2文件系统
- busybox制作文件系统、挂载nfs
- TQ2440利用nfs挂载文件系统不稳定,启动成功后,总是一会时间就重启
- Linux根文件系统制作与各种挂载方式的实现
- win7以客户端方式挂载NFS文件系统
- NFS挂载文件系统 出现nobody解决方式
- mini6410基于linux2.6.36内核通过NFS启动根文件系统总结(四制作根文件系统及通过NFS挂载文件系统)
- 210支持nfs方式挂载文件系统的内核配置
- 嵌入式学习-linux系统-lesson3-文件系统的制作及nfs挂载
- AT91SAM9260的DM9161AEP以MII方式无法以NFS方式挂载文件系统
- 根文件系统制作、NFS配置与安装及利用NFS挂载根文件系统
- 基于busybox制作mini2440根文件系统及使用nfs挂载
- NFS(网络文件系统)服务器搭建及挂载
- busybox挂载nfs到tmp文件系统上遇到Input/output error
- tiny6410SDK制作NFS文件系统