当前位置:网站首页>#导入Word文档图片# 根文件系统制作与挂载
#导入Word文档图片# 根文件系统制作与挂载
2022-07-13 17:52:00 【51CTO】
- 开发环境介绍虚拟机版本:商业版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 下的库类型
- .dll 动态链接库
- .lib 静态库
- Linux 下的库类型
- .so.X 动态链接库 X 是一个整数, 也可以直接 .so
- .a 静态库
编译成动态链接方式占用空间小,方便软件维护,更新。不能独立运行,要依赖其他库。
编译成静态链接方式占用空间大,但是可以独立运行,不依赖其他库。
- 配置bosybox根文件系统安装路径
- 图1.6
- 图1.7默认的安装路径
默认的安装目录是_install。该路径在当前目录下。 一般可以将该目录命名为rootfs,表示根文件系统路径。


1.3.4 编译安装busybox
在busybox根目录下输入以下命令:
[email protected]:/work_user/busybox/busybox-1.24.1# make && make install |
效果截图:
图1.8 成功现象
1.4 制作根文件系统
1.4.1 拷贝共享库lib
进入共享路径目录:
[email protected]:/work_user/busybox/busybox-1.24.1# cd _install/ |
创建三个文件夹:
[email protected]:/work_user/busybox/busybox-1.24.1/_install# mkdir lib dev etc |
图1.9 创建成功
因为我们配置busybox时,选择的是动态编译,动态编译需要交叉编译器的库支持。
拷贝交叉编译器的库到共享路径_install目录下的lib文件夹。
- 获取交叉编译器路径
[email protected]:/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库
[email protected]:/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目录下创建设备节点。
[email protected]:/work_user/busybox/busybox-1.24.1/_install/dev# mknod console c 5 1 [email protected]:/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 设置脚本命令解析器
[email protected]:/work_user/busybox/busybox-1.24.1/_install# cd etc/ [email protected]:/work_user/busybox/busybox-1.24.1/_install/etc# ls [email protected]:/work_user/busybox/busybox-1.24.1/_install/etc# vim inittab |
添加如下代码:
console::askfirst:/bin/sh |
效果图:
图2.2
1.4.4 设置NFS共享路径
添加共享路径:
[email protected]:/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模块,需要安装:
[email protected]:/work_user/busybox/busybox-1.24.1/_install/etc# apt-get install nfs-kernel-server //安装NFS服务器 [email protected]:/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挂载方式:
[email protected]:/# /etc/init.d/nfs-kernel-server restart //复位NFS服务 [ ok ] Restarting nfs-kernel-server (via systemctl): nfs-kernel-server.service. [email protected]:/# /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
设置完成后重启开发板,如果正常的话,就挂挂载电脑上的文件系统:

边栏推荐
- 在中断程序中,需要清中断标志,作用是什么?
- C语言宏定义(宏参数创建字符串、预处理粘合剂)
- 【STM32F1】驱动DHT11(CubeMX配置)(HAL库)
- IIC通讯
- How to make electronic signature transparent
- [Multisim] problems and solutions of Multisim Simulation "op amp integrator"
- FreeRTOS的启动流程,编码风格与调试方法
- 【信号调理】ADC保护电路/ADC缓冲器
- RT_thread邮箱的使用
- 【ICCV2021】Tokens-to-Token ViT: Training Vision Transformers From Scratch on ImageNet
猜你喜欢

2021-07-31

The 12th Blue Bridge Cup embedded simulation questions

【Verilog】【Vivado】计数器示例
![[Multisim] problems and solutions of Multisim Simulation](/img/86/816ff7565f7f07cc9b36dc2449b289.png)
[Multisim] problems and solutions of Multisim Simulation "op amp integrator"

C language bit operation (applicable to the operation of MCU registers)

FreeRTOS的启动流程,编码风格与调试方法

复选框报错

DHT11和DHT22(AM2302)比较及使用方法

C语言位操作(适用于操作单片机寄存器)

RT_thread 临界区保护
随机推荐
【PCB】關於電賽——硬件設計和PCB繪制的一些心得(持續更新)
关于物联网毕设须知
##DHCP-MASTER自动化部署
CodeBlocks shortcut key
[stm32f1] drive DHT11 (cubemx configuration) (HAL Library)
HDU 3666 THE MATRIX PROBLEM (差分约束+栈优化spfa判负环)
Aidl for Hal
RTtread-动态内存分配
蓝桥杯嵌入式-HAL库-新建工程
【MATLAB】matlab第二课——绘图初步
【云原生|中间件】开源 SPL 轻松应对 T+0
HDU 1522 Marriage is Stable (稳定婚姻匹配)
嵌入式软件开发 STM32F407 蜂鸣器 寄存器版
FreeRTOS的启动流程,编码风格与调试方法
About coursera
openMV实现颜色追踪
max3232ese 问题记录及解决
[paper notes] - millimeter wave radar fog penetrating high resolution imaging - supervised Hawkeye system - 2020-cvpr
HDU 3585 maximum shortest distance (二分+最大团)
[matlab] matlab lesson 3 - advanced drawing