#导入Word文档图片# 根文件系统制作与挂载

少年乘勇气,百战过乌孙。这篇文章主要讲述#导入Word文档图片# 根文件系统制作与挂载相关的知识,希望能为你提供帮助。


  • 开发环境介绍虚拟机版本:商业版11.1.0 build-2496824
    发行版环境:Ubuntu_15.04 32位
    嵌入式Linux内核版本:3.5
    交叉编译器arm-linux-gcc版本:4.5.1
1.1 busybox介绍?BusyBox 是一个集成了一百多个最常用linux命令和工具的软件。BusyBox 包含了一些简单的工具,例如ls、cat和echo等等,还包含了一些更大、更复杂的工具。有些人将 BusyBox 称为 Linux 工具里的瑞士军刀。简单的说BusyBox就好像是个大工具箱,它集成压缩了 Linux 的许多工具和命令,也包含了 android 系统的自带的shell。BusyBox提供了一个比较完善的环境,可以适用于任何小的嵌入式系统。?
1.2 获取busybox源码?官网链接:??http://www.busybox.net/???
下载截图:



图1.0?
1.3 busybox配置?1.3.1 解压源码包?
首先将下载的busybox源码拷贝到虚拟机里的Linux系统,提前创建一个文件夹存放busybox,可以通过虚拟机的共享文件夹或者通过鼠标直拖入虚拟机。?
拷贝进linux系统之后进行解压:?
tar xvf busybox-1.24.1.tar.bz2 ?
解压截图:



图1.1?
1.3.2 修改编译环境?
修改busybox根目录下的Makefile,大约164行。修改之后如下:?
164 CROSS_COMPILE ?=arm-linux-?
截图修改:



图1.2?
1.3.3 配置busybox?
进入配置界面,在busybox根目录下输入下面的命令:?
#Make menuconfig?
效果图:



图1.3?
图1.4?
图1.5选择动态编译?
选择busybox编译方式为动态编译,默认的选择就是动态编译。?
  • Windows 下的库类型
  1. .dll 动态链接库?
  2. .lib 静态库?
  • Linux 下的库类型
  1. .so.X 动态链接库 X 是一个整数, 也可以直接 .so?
  2. .a 静态库 ?
编译成动态链接方式占用空间小,方便软件维护,更新。不能独立运行,要依赖其他库。?
编译成静态链接方式占用空间大,但是可以独立运行,不依赖其他库。?
  • 配置bosybox根文件系统安装路径

  • 图1.6

  • 图1.7默认的安装路径
    默认的安装目录是_install。该路径在当前目录下。 一般可以将该目录命名为rootfs,表示根文件系统路径。
1.3.4 编译安装busybox?
在busybox根目录下输入以下命令:?
root@XL:/work_user/busybox/busybox-1.24.1# make & & make install?
效果截图:?
图1.8 成功现象?
1.4 制作根文件系统?1.4.1 拷贝共享库lib?
进入共享路径目录:?
root@XL:/work_user/busybox/busybox-1.24.1# cd _install/?
创建三个文件夹:?
root@XL:/work_user/busybox/busybox-1.24.1/_install# mkdir lib dev etc?
图1.9 创建成功?
因为我们配置busybox时,选择的是动态编译,动态编译需要交叉编译器的库支持。?
拷贝交叉编译器的库到共享路径_install目录下的lib文件夹。?
  • 获取交叉编译器路径
root@XL:/work_user/busybox/busybox-1.24.1/_install# echo $PATH?
/work_user/arm-linux/opt/FriendlyARM/toolschain/4.5.1/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games?
  • 拷贝lib库
root@XL:/work_user/busybox/busybox-1.24.1/_install/lib# cp /work_user/arm-linux/opt/FriendlyARM/toolschain/4.5.1/arm-none-linux-gnueabi/lib/* ./ -d -rf?
效果图:



图2.0?
1.4.2 创建设备节点?
进入dev目录下创建设备节点。?
root@XL:/work_user/busybox/busybox-1.24.1/_install/dev# mknod console c 5 1?
root@XL:/work_user/busybox/busybox-1.24.1/_install/dev# mknod null c 1 3?
mknod命令解析:?
mknod console c 5 1?
节点名称 c是字符设备 主设备号 次设备号?
mknod null c 1 3?
节点名称?
用法:mknod < 设备节点的名称> < 设备节点的类型> [主设备号 次设备号]?
效果图:



图2.1?
1.4.3 设置脚本命令解析器?
root@XL:/work_user/busybox/busybox-1.24.1/_install# cd etc/?
root@XL:/work_user/busybox/busybox-1.24.1/_install/etc# ls?
root@XL:/work_user/busybox/busybox-1.24.1/_install/etc# vim inittab?
添加如下代码:?
console::askfirst:/bin/sh?
效果图:?
图2.2?
1.4.4 设置NFS共享路径?
添加共享路径:?
root@XL:/work_user/busybox/busybox-1.24.1/_install/etc# vim /etc/exports?
填上自己的共享路径:?
/work_user/busybox/busybox-1.24.1/_install *(rw,no_root_squash,sync)?
路径格式:?
实际路径 *(rw,no_root_squash,sync)?


实际路径:要共享的目录?
* :允许所有的网段访问?
rw :读写权限?
sync:资料同步写入硬盘?
no_root_squash:nfs客户端共享目录使用者权限?
效果图:?
图2.3?
重新挂载/etc/exports?
将共享路径输出到屏幕?
如果缺少exports模块,需要安装:?
root@XL:/work_user/busybox/busybox-1.24.1/_install/etc# apt-get install nfs-kernel-server //安装NFS服务器?
root@XL:/work_user/test_busybox/busybox-1.24.1# sudo apt-get install nfs-common //安装NFS客户端?
exports命令格式:?
如果修改了/etc/exports文件后不需要重新激活nfs,只要重新扫描一次/etc/exports文件,并且重新将设定加载即可:?
# exportfs [-aruv]?
参数说明如下。?
(1)-a:全部挂载(或卸载)/etc/exports文件内的设定。?
(2)-r:重新挂载/etc/exports中的设置,此外同步更新/etc/exports及/var/lib/nfs/xtab中的内容。?
(3)-u:卸载某一目录。?
(4)-v:在export时将共享的目录显示在屏幕上。?
1.4.5 启动NFS挂载?
  • Ubuntu系统选启动NFS挂载方式:
root@XL:/# /etc/init.d/nfs-kernel-server restart //复位NFS服务?
[ ok ] Restarting nfs-kernel-server (via systemctl): nfs-kernel-server.service.?


root@XL:/# /etc/init.d/nfs-kernel-server start //启动NFS服务?
[ ok ] Starting nfs-kernel-server (via systemctl): nfs-kernel-server.service.?


/etc/init.d/nfs-kernel-server stop //停止NFS服务?
  • 红帽子系统下启动NFS服务器方法?
为了方便,需要编写一个脚本:?
在根目录下创建一个脚本文件。名称为:start_nfs_config.sh?
#!/bin/bash?
service nfs restart #重启NFS服务器?
service iptables stop #关闭防火墙?
ifconfig eth0 192.168.18.3 #设置网卡的IP地址。?
修改脚本的执行权限:#chmod 777 start_nfs_config.sh?
注意:如果重启NFS服务器过程中出现有错误,需要重新运行脚本一次!?
单独启动NFS服务器:service nfs start?
红帽6.3系统下配置网络方式:



1.4.6 配置网络
设置虚拟机网络为桥接模式:?






设置ip地址:ifconfig eth0 192.168.18.3?
1.5 设置UBOOT环境变量
setenv bootargs root=/dev/nfs nfsroot=192.168.18.3:/work/rootfs ip=192.168.18.123:192.168.18.3:192.168.18.1:255.255.255.0::eth0:off init=/linuxrc cnotallow=ttySAC0,115200?
格式:?
setenv bootargs root=/dev/nfs nfsroot=< 服务器IP> :< 根文件系统的路径> ip=< 开发板IP> :< 服务器IP> :< 网关> :< 子网掩码> ::eth0:off init=/linuxrc cnotallow=ttySAC0,115200?
在UBOOT命令行设置环境变量后,需要保存!---> # saveenv?
设置完成后重启开发板,如果正常的话,就挂挂载电脑上的文件系统:?



【#导入Word文档图片# 根文件系统制作与挂载】


    推荐阅读