少年乘勇气,百战过乌孙。这篇文章主要讲述#导入Word文档图片# 根文件系统制作与挂载相关的知识,希望能为你提供帮助。
- 开发环境介绍虚拟机版本:商业版11.1.0 build-2496824
发行版环境:Ubuntu_15.04 32位
嵌入式Linux内核版本:3.5
交叉编译器arm-linux-gcc版本:4.5.1
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 下的库类型
- .dll 动态链接库?
- .lib 静态库?
- Linux 下的库类型
- .so.X 动态链接库 X 是一个整数, 也可以直接 .so?
- .a 静态库 ?
编译成静态链接方式占用空间大,但是可以独立运行,不依赖其他库。?
- 配置bosybox根文件系统安装路径
- 图1.6
- 图1.7默认的安装路径
默认的安装目录是_install。该路径在当前目录下。 一般可以将该目录命名为rootfs,表示根文件系统路径。
在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? |
因为我们配置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 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? 将共享路径输出到屏幕? |
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客户端? |
如果修改了/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时将共享的目录显示在屏幕上。? |
- 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地址。? |
注意:如果重启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文档图片# 根文件系统制作与挂载】
推荐阅读
- Git的分支简单使用
- Docker减小镜像体积
- quarkus下的分布式ID怎么实现
- cat和find 的用法
- C++ 动态内存开辟
- win7下如何根据端口号杀掉进程
- Azure 应用服务如何查看App Service Java堆栈JVM相关的参数默认配置值()
- Azure 应用服务本地Git部署Java项目到App Server,访问无效的原因
- Python异步编程全攻略