Linux第54步_根文件系统第1步_编译busybox并安装_然后添加“根文件系统”的库

学习编译busybox,并安装,然后添加“根文件系统”的库。有人说busybox构建根文件系统,只适合学习,不适合做项目

1、了解ubuntu的根文件系统

根文件系统的目录名为“/”,就是一个斜杠。

1)、输入“cd  /回车”,进入“根目录”

输入“ls回车”,就可以查看根目录下的文件和文件夹

2)、点击下图中的文件,就可以打开主文件夹,见下图:

3)、点击“其他位置

4)、双击“计算机”图标,得到下图:

2、了解BusyBox工具箱

BusyBox工具箱集成了大量的linux命令和工具,像ls、mv、ifconfig等命令,它都会提供。我们下载BusyBox的源码,经过配置BusyBox,选择自己想要的功能,最后编译即可。

路径为:“程序源码\06、BusyBox源码\busybox-1.32.0.tar.bz2

使用nfs挂载根文件系统

做好的根文件系统,放到ubuntu上,然后通过nfs服务来挂载。

3、创建rootfs目录用来存放我们的根文件系统

存放根文件系统的路径:“home/zgq/linux/nfs/rootfs”

打开第1个终端

输入“ls回车

输入“cd linux/回车”,切换到“linux”目录

输入“ls回车”,列出“linux”目录下的文件和文件夹

输入“cd nfs/回车”,切换到“nfs”目录

输入“ls回车”,列出“nfs”目录下的文件和文件夹

输入“mkdir rootfs回车”,创建rootfs”目录

输入“ls回车”,列出“nfs”目录下的文件和文件夹

4、创建busybox目录和获取busybox软件

使用“home/zgq/linux/busybox”用来存放busybox软件。

1)、打开第2个终端

输入“ls回车

输入“cd linux/回车”,切换到“linux”目录

输入“ls回车”,列出“linux”目录下的文件和文件夹

输入“mkdir busybox回车”,创建busybox”目录

输入“ls回车”,列出“linux”目录下的文件和文件夹

2)、使用FileZilla将BusyBox源码发送到“home/zgq/linux/busybox”。

见下图:

3)、输入“cd busybox/回车,切换到“busybox”目录

输入“ls回车”,列出“busybox”目录下的文件和文件夹

输入“tar -vxjf busybox-1.32.0.tar.bz2回车”,解压文件

4)、输入“ls回车”,列出“busybox”目录下的文件和文件夹

输入“cd busybox-1.32.0/回车,切换到“busybox-1.32.0”目录

输入“ls回车”,列出“busybox-1.32.0”目录下的文件和文件夹

5、修改busybox-1.32.0”目录下的Makefile

1)、在第2个终端,输入“vi Makefile回车

2)、输入“/CROSS_COMPILE ?=回车”,查找“CROSS_COMPILE ?=”,见下图:

3)、打开第3个终端,查找交叉编译器绝对路径

输入“ls回车

输入“cd /usr/local/arm/回车,切换到“/usr/local/arm/”目录

输入“ls回车”,列出“arm”目录下的文件和文件夹

输入“cd gcc-arm-9.2-2019.12-x86_64-arm-none-linux-gnueabihf/回车,切换到“gcc-arm-9.2-2019.12-x86_64-arm-none-linux-gnueabih”目录

输入“ls回车”,列出“gcc-arm-9.2-2019.12-x86_64-arm-none-linux-gnueabih”目录下的文件和文件夹

输入“cd bin/回车

输入“pwd回车

交叉编译器绝对路径:

/usr/local/arm/gcc-arm-9.2-2019.12-x86_64-arm-none-linux-gnueabihf/bin

4)、回到打开的“Makefile”,在“CROSS_COMPILE ?=”添加内容如下:

/usr/local/arm/gcc-arm-9.2-2019.12-x86_64-arm-none-linux-gnueabihf/bin/arm-none-linux-gnueabihf-

见下图:

5)、输入“/ARCH ?=回车”,查找“ARCH ?=”,见下图:

6)、将“ARCH ?= $(SUBARCH)”屏蔽掉

添加“ARCH ?= arm

见下图:

7)、按“ESC键”,输入“:wq”,保存退出,得到下图:

6、设置busybox支持中文字符

1)、在第2个终端,输入“vi libbb/printable_string.c回车”,修改“busybox-1.32.0/libbb/printable_string.c”

2)、输入“/printable_string2回车”,查找“printable_string2”,得到下图:

修改后,见下图:

3)、按“ESC键”,输入“:wq”,保存退出

4)、在第2个终端,输入“vi libbb/unicode.c回车”,修改“busybox-1.32.0/libbb/unicode.c”

5)、输入“/unicode_conv_to_printable2回车”,查找“unicode_conv_to_printable2

修改后,见下图:

5)、按“ESC键”,输入“:wq”,保存退出

7、配置busybox

1)、在第2个终端,输入“make defconfig回车”,先执行“默认配置”来配置一下“busybox”工具;

设置“个性化配置”

2)、在第2个终端,输入“make menuconfig回车”,打开图形化配置界面

3)、移动“向下光标键”,找到“Settings”,按下“回车

移动“向下光标键”,找到“Build static binary

4)、按“N”,设置为“动态编译”

5)、移动“向下光标键”,找到“vi-style line editing commands

6)、按“Y”,见下图:

7)、按两次“ESC键”,得到下图:

8)、移动“向下光标键”,找到“Linux Module Utilities

9)、按“回车键”,移动“向下光标键”,找到“Simplified modutils”,得到下图:

10)、按“N”,不选中,见下图:

11)、按两次“ESC键”,移动“向下光标键”,找到“Linux System Utilities

12)、按“回车键”,移动“向下光标键”,找到“mdev (17 kb)”,得到下图:

13)、按“Y”,把“mdev (17 kb)”下面的全部选中,见下图红框:

14)、按两次“ESC键”,移动“向下光标键”,找到“Settings

15)、按“回车键”,移动向下光标键,找到“Support Unicode”,得到下图:

按“Y”,选中“Support Unicode

移动“向下光标键”,找到“Check $LC_ALL, $LC_CTYPE and $LANG environment variables

按“Y”,选中,见下图:

16)、按两次“ESC键”,移动向下光标键,找到“Save Configuration to an Alternate File”,查看是否有保存选项,见下图:

17)、按“ESC键”,直到出现下图:

18)、按“Y”,保存配置

在第2个终端,输入“make menuconfig回车

移动“向下光标键”,找到“Save Configuration to an Alternate File

见下图:

19)、按“回车键”,得到下图:

20)、将“.config”修改为“./configs/stm32mp1_atk_defconfig”,见下图:

21)、移动“向下光标键”至“Ok”,按“O”保存。

22)、按“ESC键”,直到出现下图:

23)、按“Y

注意:

如果我们想要用自己的配置文件,直接输入make stm32mp1_atk_defconfig回车

8、编译busybox

1)、在第2个终端,路径:“/home/zgq/linux/busybox/busybox-1.32.0/

输入“make回车

2)、在第2个终端,路径:“/home/zgq/linux/busybox/busybox-1.32.0/

输入“make install CONFIG_PREFIX=/home/zgq/linux/nfs/rootfs回车”,将busybox安装到“rootfs”目录下

3)、查看busybox工具

在第1个终端,输入“cd rootfs回车”,切换到“rootfs”目录

输入“ls回车”,列出“rootfs”目录下的文件和文件夹

输入“cd bin回车”,切换到“bin”目录

输入“ls回车”,列出“bin”目录下的文件和文件夹

4)、在第1个终端,路径:“/home/zgq/linux/nfs/rootfs/bin/

输入“cd ..回车”,列出“rootfs”目录下的文件和文件夹

输入“ls回车”,列出“rootfs”目录下的文件和文件夹

输入“cd sbin回车”,切换到“sbin”目录

输入“ls回车”,列出“sbin”目录下的文件和文件夹

5)、在第1个终端,路径:“/home/zgq/linux/nfs/rootfs/sbin/

输入“cd ..回车”,列出“rootfs”目录下的文件和文件夹

输入“ls回车”,列出“rootfs”目录下的文件和文件夹

输入“cd sbin回车”,切换到“sbin”目录

输入“ls回车”,列出“sbin”目录下的文件和文件夹

输入“cd ..回车”,列出“rootfs”目录下的文件和文件夹

输入“ls回车”,列出“rootfs”目录下的文件和文件夹

10、创建lib目录

1)、在第1个终端,路径:“/home/zgq/linux/nfs/rootfs/

输入“mkdir lib回车”,创建“lib”目录

输入“ls回车”,列出“rootfs”目录下的文件和文件夹

2)、打开第3个终端,查找交叉编译器lib库的绝对路径

输入“ls回车

输入“cd /usr/local/arm/回车,切换到“/usr/local/arm/”目录

输入“ls回车”,列出“arm”目录下的文件和文件夹

输入“cd gcc-arm-9.2-2019.12-x86_64-arm-none-linux-gnueabihf/回车,切换到“gcc-arm-9.2-2019.12-x86_64-arm-none-linux-gnueabih”目录

输入“ls回车”,列出“gcc-arm-9.2-2019.12-x86_64-arm-none-linux-gnueabih”目录下的文件和文件夹

输入“cd arm-none-linux-gnueabihf/回车,切换到“arm-none-linux-gnueabihf”目录

输入“ls回车”,列出“arm-none-linux-gnueabihf”目录下的文件和文件夹

输入“cd libc/回车,切换到“libc”目录

输入“ls回车”,列出“libc”目录下的文件和文件夹

输入“cd lib/回车,切换到“lib”目录

输入“ls回车”,列出“lib”目录下的文件和文件夹

见下图:

此目录下有很多的“*so*”文件,这些就是库文件,将此目录下所有的“*so*”文件都拷贝到“/home/zgq/linux/nfs/rootfs/lib/”目录中。

注意:*是通配符

3)、打开第3个终端,输入“cp *so* /home/zgq/linux/nfs/rootfs/lib/ -d回车

后面的“-d”表示拷贝符号链接,这里有个比较特殊的库文件:1d-linux-armhfso.3,此库文件也是个符号链接,相当于Windows下的快捷方式。会链接到库1d-2.30.so上;

4)、打开第3个终端,输入“ls ld-linux-armhf.so.3 -l回车”查看此文件详细信息

ld-linux-armhf.so.3”后面有个“->”,表示其是个“软连接文件”,链接到文件“ld-2.30.so”。因为“ld-linux-armhf.so.3”是一个“快捷方式”,因此大小只有10B。

由于“ld-linux-armhf.so.3”不能作为符号链接,它在“根文件系统”中执行程序中无法执行。所以,我们需要 “ld-linux-armhf.so.3”完成逆袭,由“快捷方式”变为“本尊”。方法是重新复制 “ld-linux-armhf.so.3”,只是不复制软链接即可,先将“/home/zgq/linux/nfs/rootfs/lib/”中的“ld-linux-armhf.so.3”文件删除掉。

5)、打开第1个终端,输入“cd lib/回车

输入“ls -l ld-linux-armhf.so.3回车”,查看“ld-linux-armhf.so.3”文件

输入“rm ld-linux-armhf.so.3回车”,删除“ld-linux-armhf.so.3”文件

6)、打开第3个终端,输入“cp ld-linux-armhf.so.3 /home/zgq/linux/nfs/rootfs/lib/回车

7)、打开第1个终端,输入“ls -l ld-linux-armhf.so.3回车”,查看“ld-linux-armhf.so.3”文件

ld-linux-armhf.so.3”文件占“1279392”个字节。

8)、打开第3个终端,输入“cd ../../回车”,退回两次,返回到“arm-none-linux-gnueabihf”目录

输入“ls回车”,列出“arm-none-linux-gnueabihf”目录下的文件和文件夹

输入“cd lib/回车”,退回两次,返回到“lib”目录

输入“ls回车”,列出“lib”目录下的文件和文件夹

arm-none-linux-gnueabihf/lib目录下也有很多的的“*so*”和“.a”库文件,我们将其也拷贝到“/home/zgq/linux/nfs/rootfs/lib/”目录中。

9)、打开第3个终端,输入“cp *so* *.a /home/zgq/linux/nfs/rootfs/lib/ -d回车

10)、打开第1个终端,输入“ls回车”,查看“/home/zgq/linux/nfs/rootfs/lib/”文件

11)、打开第1个终端,输入“cd ..回车”,切换到“/home/zgq/linux/nfs/rootfs/

输入“ls回车”,切换到“rootfs”目录下的文件和文件夹

输入“cd usr/回车”,切换到“usr

输入“ls回车”,切换到“usr”目录下的文件和文件夹

输入“mkdir  lib回车”,在“usr”目录下,创建“lib”

输入“ls回车”,切换到“usr”目录下的文件和文件夹

将“/usr/local/arm/gcc-arm-9.2-2019.12-x86_64-arm-none-linux-gnueabihf/arm-none-linux-gnueabihf/libc/usr/lib”目录下的文件拷贝到“/home/zgq/linux/nfs/rootfs/usr/lib”目录中

12)、打开第3个终端,输入“cd ..回车”,返回到“arm-none-linux-gnueabihf”目录

输入“ls回车”,查看“arm-none-linux-gnueabihf”目录的文件和文件夹

输入“cd libc/回车”,切换到“libc”目录

输入“ls回车”,查看“libc”目录的文件和文件夹

输入“cd usr/回车”,切换到“usr”目录

输入“ls回车”,查看“usr”目录的文件和文件夹

输入“cd lib/回车”,切换到“lib”目录

输入“ls回车”,查看“lib”目录的文件和文件夹

将此目录下的“so”和“.a”库文件都拷贝到“/home/zgq/linux/nfs/rootfs/usr/lib/”目录中

13)、打开第3个终端,输入“cp *so* *.a /home/zgq/linux/nfs/rootfs/usr/lib/ -d回车”,执行拷贝

14)、打开第1个终端,输入“cd lib/回车”,切换到“/home/zgq/linux/nfs/rootfs/usr/lib/”目录

输入“ls回车”,查看“lib”目录的文件和文件夹

15)、打开第1个终端,使用“du”命令来査看一下 rootfs/lib 和rootfs/usr/lib这两个目录的大小

输入“cd ../../回车”,退回两次,返回到“rootfs”目录

输入“du ./lib ./usr/lib/ -sh回车”,查看 lib和 usr/lib这两个目录的大小

16)、打开第1个终端,在“根文件系统”中创建其他文件夹,如 dev、proc、mnt、sys、tmp、etc 和 root等

输入“mkdir dev proc mnt sys tmp etc root回车

输入“ls回车”,查看“rootfs”目录的文件和文件夹

至此,“根文件系统”的库文件就全部添加好了

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/471267.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

中国比特币矿工的新根据地:埃塞俄比亚

原文标题:《Chinese Bitcoin Miners Find a New Crypto Haven in Ethiopia》 撰文:David Pan、Fasika Tadesse,彭博社 编译:Carl,Techub News 中国比特币矿工的新根据地:埃塞俄比亚 去年春天&#xff0c…

18 19 SPI接口的74HC595驱动数码管实验

1. 串行移位寄存器原理(以四个移位寄存器为例) 1. 通过移位寄存器实现串转并:一个数据输入端口可得到四位并行数据。 通过给data输送0101数据,那么在经过四个时钟周期后,与data相连的四个寄存器的输出端口得到了0101…

变分自编码器(VAE)PyTorch Lightning 实现

✅作者简介:人工智能专业本科在读,喜欢计算机与编程,写博客记录自己的学习历程。 🍎个人主页:小嗷犬的个人主页 🍊个人网站:小嗷犬的技术小站 🥭个人信条:为天地立心&…

跨部门协作,是持续绩效管理最有效的手段

跨部门协作是企业管理痛点 一项调查结果显示,企业中普通员工与中层管理者之间,花费在内部沟通上的时间,大约占其工作时间的40%-50%,对于更高层的主管来说这一比例则会更高。 有些工作在部门内沟通完全没问题,但是跨部…

基于Python实现Midjourney集成到(个人/公司)平台中

目前Midjourney没有对外开放Api,想体验他们的服务只能在discord中进入他们的频道进行体验或者把他们的机器人拉入自己创建的服务器中;而且现在免费的也用不了了,想使用就得订阅。本教程使用midjourney-api这个开源项目,搭建Midjou…

【数据结构】无向图创建邻接矩阵、深度优先遍历和广度优先遍历(C语言版)

无向图创建邻接矩阵、深度优先遍历和广度优先遍历 一、概念解析: (1)无向图:(2)邻接矩阵: 二、创建邻接矩阵:三、深度遍历、广度遍历 (1)深度遍历概念&#x…

[职场] 实验室科研人员简历范文 #学习方法#职场发展

实验室科研人员简历范文 想要成为一名实验室科研人员,我们应该怎么制作简历呢?下面是实验室科研人员简历范文,供大家参考。 一、基本信息 姓名:文书帮 工作经验:两年以上 性别:男 年龄:26岁…

Fluke ADPT 连接器新增对福禄克万用 Fluke 107 的支持

所需设备: 1、Fluke ADPT连接器; 2、Fluke 107; Fluke 107 拆机图: 显示界面如下图: 并且可以将波形导出到EXCEL: 福禄克万用表需要自己动手改造!!!

HCIA-HarmonyOS设备开发认证V2.0-内核扩展组件

目录 一、CPU 占用率1.1、CPU 占用率基本概念1.2、CPU 占用率运行机制1.3、CPU 占用率开发流程 二、动态加载2.1、 动态加载基本概念2.2、动态加载运行机制 坚持就有收获 一、CPU 占用率 1.1、CPU 占用率基本概念 CPU(中央处理器,Central Processing U…

Fluke ADPT 连接器新增对福禄克万用 Fluke 101 的支持

所需设备: 1、Fluke ADPT连接器; 2、Fluke 101; Fluke 101 拆机图: 显示界面如下图: 并且可以将波形导出到EXCEL: 福禄克万用表需要自己动手改造!!!

day29 回溯part5

491. 非递减子序列 中等 给你一个整数数组 nums ,找出并返回所有该数组中不同的递增子序列,递增子序列中 至少有两个元素 。你可以按 任意顺序 返回答案。 数组中可能含有重复元素,如出现两个整数相等,也可以视作递增序列的一种特…

【Python】通过conda安装Python的IDE

背景 系统:win11 软件:anaconda Navigator 问题现象:①使用Navigator安装jupyter notebook以及Spyder IDE 一直转圈。②然后进入anaconda prompt执行conda install jupyter notebook一直卡在Solving environment/-\。 类似问题: …