i.MX6ULL终结者Linux文件系统开发制作最小文件系统镜像

本文详细介绍了如何使用BusyBox工具制作i.MX6ULL开发板上的最小Linux文件系统。首先,介绍了BusyBox的作用和历史,接着讲解了从下载源码到配置、编译、支持中文的一系列步骤。然后,重点描述了如何通过编译生成的二进制文件构建最小文件系统,并添加必要的目录和配置文件。最后,演示了如何打包生成rootfs.tar.bz2镜像文件,并将其烧录到开发板上进行测试。
摘要由CSDN通过智能技术生成

最小linux系统占用资源非常少,最小linux系统没有图形界面,在不需要带屏幕的应用中经常用到。本章我们学习的是如何构建最小Linux系统,并在终结者开发板上运行,及应用测试。

1 BusyBox工具简介

iMX6U不仅可以跑QtE系统,还可以运行简单的Linux最小文件系统“麻雀虽小,五脏俱全”,它不带图形界面的Linux系统,剔除干扰因素便于理解,用来学习Linux系统编程非常合适。下面我们来讲解一下这种文件系统的制作。
在制作文件系统的时候,我们需要使用“BusyBox 工具”,BusyBox最初是由Bruce Perens在199 6年为Debian GNU/Linux安装盘编写的。其目的是在软盘上创建一个可引导的GNU/Linux系统,做安装和救急盘。BusyBox是一个集成了三百多个最常用Linux命令和工具的软件。BusyBox包含了一些简单的工具,例如ls、cat和echo命令等等,还包含了一些更大、更复杂的工具,例grep、find、mount 以及telnet命令。有些人将BusyBox称为Linux工具里的瑞士军刀。简单的说BusyBox就好像是个大工具箱,它集成压缩了Linux的许多工具和命令,也包含了Android系统自带的 shell。
我们可以在其官网下载到,官网地址为:https://busybox.net/。
在这里插入图片描述

图 1.1

然后点击官网左侧“Get BusyBox”栏中的“Download Source”进入下载页面。如图 1.2所示:
在这里插入图片描述

图 1.2

这是一个开源的程序,并且一直在更新中,我们使用的版本是“busybox-1.29.0.tar.bz2”。
我们也可以在光盘目录“i.MX6UL终结者光盘资料\07_文件系统源码\1.busybox源码”中的busybox-1.29.0.tar.bz2。

2 Busybox 制作最小文件系统

下面我们来讲解一下如何使用 BusyBox 制作最小文件系统:

2.1 准备源码

首先登录虚拟机ubuntu系统,运行Terminal,切换为root用户,在“/home/topeet”下使用命令“mkdir minilinux”新建目录minilinux。如图 2.1.1所示
在这里插入图片描述

图 2.1.1

然后将“busybox-1.29.0.tar.bz2”通过ssh工具拷贝到我们新建的minilinux目录,使用命令“cd minilinux/”,如图 2.1.2所示:
在这里插入图片描述

图 2.1.2

接着使用命令“tar -vxjf busybox-1.29.0.tar.bz2”,解压busybox,如图 2.1.3所示。
在这里插入图片描述

图 2.1.3

最后使用命令“cd busybox-1.29.0”进入busybox源码,如图 2.1.4所示:
在这里插入图片描述

图 2.1.4

2.2 编译环境

busybox的编译器与之前编译uboot和内核所使用的一致,先使用命令“arm-linux-gnueabihf-gcc -v”查看编译器版本是否正确。如图 2.2.1所示:
在这里插入图片描述

图 2.2.1

然后使用命令“apt-get install libncurses5-dev”确认是否安装ncurses库,没有安装的话后面编译会报错。如图 2.2.2所示:
在这里插入图片描述

图 2.2.2

2.3 支持中文

从busybox1.17.0以上之后,对ls命令不做修改是无法显示中文的。就算是内核设置了支持中文的话,在shell下用ls命令也是无法显示中文的,这是因为busybox1.17.0以后版本对中文的支持进行了限制。要想让busybox1.17.0以上支持中文,需做如下修改。
首先使用命令“vim libbb/printable_string.c”,
在这里插入图片描述

图 2.3.1

然后查找函数printable_string,我们可以看到在第31,32行和45行的操作,大于0x7F的字符直接被break掉,或者直接被“?”代替了。所以就算是linux内核设置了支持中文,也是无法显示出来的。所以我们对这三行进行修改,注释掉对大于0x7f字符的相关操作。如图 2.3.2所示:
在这里插入图片描述

图 2.3.2

修改之后保存退出。
然后使用命令“ vim libbb/unicode.c”
在这里插入图片描述

图 2.3.3

打开之后查找函数unicode_conv_to_printable2,我们可以看到1022行和1030行也对大于0x7f的字符有对应操作,同样的我们对这两处做修改,如图 2.3.4所示:
在这里插入图片描述

图 2.3.4

修改之后保存退出。
经过以上修改之后,源码就可以支持中文字符了,但还需要配置 busybox来使能 unicode码,这个稍后会去配置。

2.4 配置Busybox

Busybox的编译配置和Linux内核编译配置使用的命令是一样的,下面我们开始配置Busybox。
busybox提供了几种配置:defconfig (缺省配置,也是默认配置)、allyesconfig(最大配置)、 allnoconfig(最小配置),一般选择缺省配置即可。
使用命令“make defconfig ”,即可配置busybox为默认配置。
这一步结束后,将生成.config文件。
我们一般使用“make menuconfig”图形化配置命令,配置“Busybox”。如图 2.4.1所示:
在这里插入图片描述

图 2.4.1

(1)首先回车进入“Settings —>”
在这里插入图片描述

图 2.4.2

(2)然后使用方向键下翻,在“Build Options”栏找到“Cross compiler prefix”,它是指定用什么编译器来编译。如图 2.4.3所示:
在这里插入图片描述

图 2.4.3

(3)接着使用回车选中进入,输入使用的交叉编译工具arm-linux-gnueabihf-,如图 2.4.4所示:
在这里插入图片描述

图 2.4.4

(4)然后回车选择“Ok”,回到“Settings”设置界面,如图 2.4.5:
在这里插入图片描述

图 2.4.5

(5)接着使用方向键下翻,在“— Installation Options ”栏找到“(./_install) Destination path for ‘make install’ (NEW)”。如图 2.4.6所示:
在这里插入图片描述

图 2.4.6

(6)这个界面是设置编译完Busybox,把最终生成的二进制文件安装到哪个目录下面,使用回车进入,将“./_install”修改为“…/system”。如图 2.4.7所示:
在这里插入图片描述

图 2.4.7

(7)然后回车选择“Ok”,回到“Settings”设置界面,如图 2.4.8:
在这里插入图片描述

图 2.4.8

(8)然后方向键下翻,空格选择“vi-style line editing commands(NEW)”选项,如图 2.4.9:
在这里插入图片描述

图 2.4.9

(9)接着使用左右方向按键,选择“Exit”,回到“Busybox Configuration”界面。如下图所示:方向键下翻找到“Linux Module Utilities —>”。如图 2.4.10所示:
在这里插入图片描述

图 2.4.10

(10)接着回车进入,空格取消选择“Simplified modutils”。如图 2.4.11所示:
在这里插入图片描述

图 2.4.11

(11)然后使用左右方向按键,选择“Exit”,回到“Busybox Configuration”界面。方向键上翻找到“Settings —> ”,如图 2.4.12所示:
在这里插入图片描述

图 2.4.12

(12)然后回车进入,方向键下翻找到“Support Unicod”和“Check $LC_ALL, $LC_CTYPE and $LANG environment variables”,选中这两个选项,即使能 busybox 的 unicode 编码以支持中文 。如图 2.4.13所示:
在这里插入图片描述

图 2.4.13

(13)接着使用左右反方向按键,选择“Exit”,回到“Busybox Configuration”界面。如图 2.4.14所示:
在这里插入图片描述

图 2.4.14

(14)然后使用左右反方向按键,选择“Exit”,选择“Yes”保存配置。如图 2.4.15所示:
在这里插入图片描述

图 2.4.15

至此,busybox 的配置就完成了,如有其他需要可以自行选择配置。如果是初学者建议按照我们的办法配置,以防出错。

2.5 编译Busybox

接下来我们开始编译“Busybox”,执行“make”命令,开始编译“Busybox”,如图 2.5.1:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值