嵌⼊式linux根⽂件系统ubifs,制作嵌⼊式Linux根⽂件系统
⽂章⽬录
1. 根⽂件系统布局
嵌⼊式 Linux 根⽂件系统布局,建议还是按照FHS标准来安排,事实上⼤多数嵌⼊式Linux都是这样做的。但是,嵌⼊式系统可能并不需要桌⾯/服务器那样庞⼤系统的全部⽬录,可以酌情对系统进⾏精简,以简化Linux的使⽤。如嵌⼊式Linux⽂件系统中通常不会放置内核源码,因⽽存的 常不会放置内核源码,因⽽存的 常不会放置内核源码,因⽽存放源码的 /usr/src⽬录是不必要的, 甚⾄连头⽂件也不需要,即/usr/include⽬录也不必要;但是 /bin、/dev 、/etc、/lib 、/proc 、/sbin、/usr⼏个⽬录是不可或缺的。
所以,允许嵌⼊式 Linux 对系统⽬录结构进⾏精简,以适应具体⽤场合的需求,⼀个典型的嵌⼊式Linux根⽂件系统⽬录如下所⽰:
典型嵌⼊式Linux根⽂件系统⽬录
⽬录
内容
bin
linux建立文件系统的命令系统命令和⼯具
爱思唯尔dev
系统设备⽂件
etc
系统初始化脚本和配置⽂件
lib
系统运⾏库⽂件
proc
proc⽂件系统
sbin
系统管理员命令和⼯具
sys
sysfs⽂件系统
tmp
临时⽂件
c语言字符转化为ascii码>美食网站模板源代码usr
⽤户命令和⼯具,下分usr/bin和usr/sbin⽬录
var
系统运⾏产⽣的可变数据
要构建⼀个可⽤的Linux根⽂件系统,需要的⼆进制和库都不少,完全从零开始也是不现实的,推荐参考其它现有可⽤的⽂件系统,在原基础上按需修改;或者使⽤⽂件系统制作⼯具如 BusyBox 来实现⽂件系统的⽣成。
2. 使⽤BusyBox⽣成⼆进制⼯具
2-1. 获取BusyBox源码
⽬前最新版本为busybox-1.29.3.tar.bz2。2-2. 配置BusyBox
解压源码,进⼊根⽬录
$ tar jxvf busybox-1.29.3.tar.bz2
$ cd busybox-1.29.3/
⾸先,执⾏
$ make menuconfig
进⼊图形化配置界⾯
2-2-1. 选择编译静态库
进⼊
Settings --->
使⽤空格键选择编译静态库
--- Build Options
[*] Build static binary (no shared libs)
如图:
2-2-2. 选择交叉编译⼯具链
在
Settings --->
设置项下,填写交叉编译⼯具链前缀
2-2-3. 选择安装⽬录
在
Settings --->
设置项下,到
--- Installation Options ("make install" behavior) What kind of applet links to install (as soft-links) ---> (./_install) Destination path for 'make install' (NEW)默认为当前⽬录下⽬录,这⾥我使⽤默认_install⽬
录
2-2-4. 编译安装
退出保存后,执⾏编译
$ make
⼤概⼏分钟后编译完成,执⾏
$ make install
很快就会安装完成
进⼊_install⽬录,查看⽣成的⽂件
新建⼀个⽬录⽤来存放制作的根⽂件系统,可以命名为rootfs。将利⽤BusyBox⽣成的⼆进制⽂件及⽬录,即_install⽬录下的所有⽂件及⽬录复制到rootfs⽬录下。
3. 构建根⽂件系统
使⽤BusyBox编译后,仅有 bin、sbin、usr这 3个⽬录和软链接linuxrc,⽬录⾥都是⼆进制命令⼯具,这还不⾜以构成 ⼀个可⽤的根⽂件系统,必须进⾏其它完善⼯作,才能构建⼀个可⽤的根⽂件系统。
3-1. 完善⽬录结构
根据典型嵌⼊式Linux根⽂件系统⽬录,在rootfs⽬录中创建其他⽬录
$ mkdir dev etc lib proc sys tmp var
3-2. 添加C运⾏库⽂件
库⽂件可直接从交叉⼯具链获取,⼀般在⼯具链的libc/lib/⽬录下。我这⾥是在ubuntu下安装的Linaro的交叉⼯具链spring%e7%bf%bb%e8%af%91
strike up库⽂件是在/usr/arm-linux-gnueabihf/lib/⽬录下,拷贝动态链接库⽂件到新制作的根⽂件系统根⽬录下/lib⽬录⾥
这⾥只是拷贝动态链接库。⼀般开发程序使⽤动态编译需要板⼦上动态库的⽀持才能运⾏,所以拷贝动态库。⽽静态库⼀般在静态编译的时候⽤到,由于交叉编译的⼯作放在了PC上所以板⼦上不需要静态库,所以没有必要拷贝,这样还可以减⼩根⽂件系统的体积。
⼀般使⽤gcc编译后的可执⾏⽂件、⽬标⽂件和动态库都带有调试信息和符号信息,这些在调试的时候⽤到,但是却增⼤了⽂件的⼤⼩。通常在PC上调试,或者调试时使⽤这些带有调试信息和符号信息的库⽂件,程序发布后使⽤去掉这些信息的库⽂件,可以⼤⼤缩⼩根⽂件系统的体积。这⾥我们去掉这些信息,⽅法是使⽤strip⼯具:
$ arm-linux-gnueabihf-strip ./*
3-3. 添加初始化配置脚本
初始化配置脚本放在在/etc⽬录下,⽤于系统启动所需的初始化配置脚本。BusyBox提供了⼀些初始化范例脚本,在
examples/bootfloppy/etc/⽬录下。将这些配置⽂件复制到 ”⽬录下。将这些配置⽂件复制到 ”⽬录下。将这些配置⽂件复制到新制作的根⽂件系统etc⽬录下
cp -ra ../busybox/busybox-1.29.3/examples/bootfloppy/etc/* etc/
添加后如图所⽰:
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论