Linux第59步_“buildroot”构建根文件系统第1步_生成rootfs.tar和rootfs.ext4以及通过nfs下载测试

学习安装“buildroot”,通过配置构建根文件系统,编译生成rootfs.tar和rootfs.ext4,以及通过nfs下载测试。

1、了解学习目的:

1)、获取“buildroot”安装包;

2)、使用“buildroot”构建根文件系统;

3)、rootfs.tar和rootfs.ext4文件路径:

/home/zgq/linux/buildroot/buildroot-2020.02.6/output/images

nfs挂载路径:/home/zgq/linux/nfs/rootfs

挂载时,需要先删除rootfs目录下的所有文件和文件夹,然后将rootfs.tar

拷贝“/home/zgq/linux/nfs/rootfs”,再使用“tar -vxf rootfs.tar”解压得到nfs目录下的rootfs,我们就可以通过nfs将文件下载到开发板测试。

4)、设置开发板密码和取消开发板密码

buildroot不仅集成了busybox,而且还集成了各种常见的第三方库和软件

2、查找我们已经安装的交叉编译工具链的路径

打开终端

输入“cd /usr/local/arm/回车

输入“ls回车

输入“cd gcc-arm-9.2-2019.12-x86_64-arm-none-linux-gnueabihf/回车

输入“ls回车

输入“cd arm-none-linux-gnueabihf/回车

输入“pwd回车”查询路径

记录交叉编译工具的路径:

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

关闭打开的终端。

3、获取buildroot”源码

文件路径:“程序源码\07、Buildroot源码/buildroot-2020.02.6.tar.bz2”。

1)、打开终端

输入“ls 回车

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

输入“ls 回车”,例举“linux”目录下的所有文件和文件夹

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

输入“ls 回车”,例举“linux”目录下的所有文件和文件夹

2)、使用“FileZilla”将“buildroot-2020.02.6.tar.bz2”拷贝到“buildroot”目录。

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

输入“ls 回车”,例举“buildroot”目录下的所有文件和文件夹

输入“tar -vxjf buildroot-2020.02.6.tar.bz2回车”,解压

4)、输入“ls 回车”,例举“buildroot”目录下的所有文件和文件夹

输入“cd buildroot-2020.02.6/回车”,切换到“buildroot-2020.02.6”目录

输入“ls 回车”,例举“buildroot-2020.02.6”目录下的所有文件和文件夹

buildroot-2020.02.6”目录下的文件和文件夹就是我们需要的源码包。

4、配置Target options选项

1)、输入“make menuconfig回车”,打开“buildroot的图形化配置界面

如果出现错误,则重新启动虚拟机。

2)、按“回车键”,移动向下光标至“Target Architecture”,得到下图:

3)、按“回车键”,准备修改架构“Target Architecture”,得到下图:

4)、移动“向下光标键”至“ARM(little endian)”,按下“回车键”表示“选中”,并返回到“Target Architecture”,见下图:

5)、移动“向下光标键”至“Target Binary Format(ELF)”,见下图:

6)、按“回车键”,准备修改“ELF”,得到下图:

7)、按“回车键”,返回到“Target Binary Format

移动“向下光标键”至“Target Architecture Variant”,见下图:

8)、按“回车键”,准备修改CPU架构“Target Architecture Variant”,得到下图:

9)、移动“向下光标键”至“cortex-A7”,按下“回车键”表示“选中”,并返回到“Target Architecture Variant”,见下图:

10)、移动“向下光标键”至“Target ABI”,见下图:

11)、按“回车键”,准备修改CPU架构“Target ABI”,得到下图:

12)、移动“向下光标键”至“EABIhf ”,CPU支持硬件浮点数,按下“回车键”表示“选中”,并返回到“Target ABI (EABIhf)”,见下图:

13)、移动“向下光标键”至“Floating point strategy”,见下图:

14)、按“回车键”,准备修改浮点策略“Floating point strategy”,移动“向下光标键”至“NEON/VFPv4 ”,见下图:

15)、按下“回车键”表示“选中”,并返回到“Floating point strategy”,见下图:

16)、移动“向下光标键”至“ARM instruction set”,见下图:

17)、按“回车键”,准备修改浮点策略“ARM instruction set”,移动“向下光标键”至“ARM”,见下图:

18)、按下“回车键”表示“选中”,并返回到“ARM instruction set”,见下图:

5、配置Toolchain(工具链)

1)、按两次“ESC键”,移动向下光标键至“Toolchain”,见下图:

2)、按“回车键”,准备修改“Toolchain”,移动“向下光标键”至“Toolchain type”,见下图:

3)、按“回车键”,准备修改“Toolchain type”,移动“向下光标键”至扩展工具链“External toolchain”,见下图:

4)、按下“回车键”表示“选中”,并返回到“Toolchain type”,见下图:

5)、移动“向下光标键”至“Toolchain (Arm ARM 2019.12)”,见下图:

6)、按“回车键”,准备修改“Toolchain (Arm ARM 2019.12)”,移动“向下光标键”至客户工具链“Custom toolchain”,见下图:

7)、按下“回车键”表示“选中”,并返回到“Toolchain (Custom toolchain) ”,见下图:

8)、移动“向下光标键”至工具链下载原点“Toolchain origin”,见下图:

9)、按“回车键”,准备修改“Toolchain origin”,移动“向下光标键”至预装工具链“Pre-installed toolchain”,见下图:

10)、按下“回车键”表示“选中”,并返回到“Toolchain origin”,见下图:

11)、移动“向下光标键”至工具链下载原点“Toolchain path”,见下图:

12)、按“回车键”,

13)、输入内容如下:

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

见下图:

14)、移动“向下光标键”至“Ok”,按“O”键退出,见下图:

15)、移动“向下光标键”至“Toolchain prefix”,见下图:

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

17)、将“$(ARCH)-linux”修改为“$(ARCH)-none-linux-gnueabihf

18)、移动“向下光标键”至“Ok”,按“O”键退出,见下图:

19)、移动“向下光标键”至“External toolchain kernel headers series”,“gcc version”不用管,见下图:

20)、按“回车键”,移动“向下光标键”至“4.20.x”,见下图:

得到下图:

21)、按“回车键”选中,得到下图:

22)、移动“向下光标键”至“External toolchain C library”,见下图:

23)、按“回车键”,移动“向下光标键”至“glibc/eglibc”,见下图:

24)、按“回车键”选中,得到下图:

25)、移动“向下光标键”至“Toolchain has SSP support?”,按“Y”,见下图:

26)、移动“向下光标键”至“Toolchain has SSP strong support?”,按“Y”,见下图:

27)、移动“向下光标键”至“Toolchain has RPC support?”,按“Y”,见下图:

28)、移动“向下光标键”至“Toolchain has C++ support?”,按“Y”,见下图:

29)、移动“向下光标键”至“Toolchain has OpenMP support?”支持多核,按“Y”,见下图:

30)、移动“向下光标键”至“Enable MMU support”,按“Y”,见下图:

至此,交叉编译器配置完成了。

6、配置System configuration(系统配置)

1)、按两次“ESC键”,移动向下光标键至“System configuration”,见下图:

2)、按“回车键”选中,得到下图:

3)、移动“向下光标键”至“System hostname”,见下图:

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

5)、将开发板的名字“buildroot”修改“ATK-stm32mp1”,见下图:

6)、移动“向下光标键”至“Ok”,按“O”保存,得到下图:

7)、移动“向下光标键”至“System banner”,见下图:

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

9)、将欢迎语“Welcome to Buildroot”修改为“Welcome to alientek STM32MP157”,见下图:

10)、移动“TAB键”至“Ok”,按“O”保存,得到下图:

11)、移动“向下光标键”至“Passwords encoding”,不用修改,见下图:

12)、移动“向下光标键”至“Init system”,不用修改,使用“BusyBox”,见下图:

13)、移动“向下光标键”至“/dev management”,见下图:

14)、按“回车键”,移动向下光标键至“Dynamic using devtmpfs + mdev”,得到下图:

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

16)、使用buildroot配置和取消密码

①、设置密码

移动“向下光标键”至“Enable Root login with password”,按“Y”,移动向下光标键至“Root password”设置开发板启动密码为“123456”,见下图:

②、取消密码

移动“向下光标键”至“Enable Root login with password”,按“Y”,移动向下光标键至“Root password”,见下图:

按“回车键”进入设置,使用“BACKSPACE键”删除密码,再按“回车键”退出配置,这样就可以取消密码配置了。

注意:不能把光标移到“Ok”上按“O”键退出,这样做,builtroot会认为你输入了密码

7、配置Filesystem images(文件系统镜像)

1)、按两次“ESC键”,移动向下光标键至“Filesystem images”,得到下图:

2)、按“回车键”,移动向下光标键至“ext2/3/4 root filesystem”,按“Y”,得到下图:

3)、移动“向下光标键”至“ext2/3/4 variant”,得到下图:

4)、按“回车键”,移动向下光标键至“ext4”,得到下图:

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

6)、移动“向下光标键”至“exact size”,得到下图:

“回车键”,得到下图:

7)、设置为1G,按“TAB键”至“Ok”,再按“O”保存。

8、禁止编译Linux内核和uboot

1)、按两次“ESC键”,移动光标键至“Kernel”,见下图:

2)、按“回车键”,按“N”,见下图:

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

9、禁止编译Uboot

1)、移动光标至“Bootloaders”,得到下图:

2)、按“回车键”,移动向下光标键至“U-Boot”,按“N”,见下图:

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

10、配置Target packages

1)、移动“向上光标键”至“Target packages

2)、按“回车键”,移动向下光标键至“System tools”,见下图:

3)、按回车键”,移动向下光标键至“kmod”,按“Y”,见下图:

4)、按“ESC键”,直至出现下面的界面

5)、按“Y”,先保存

11、备份“buildroot配置”

文件路径“/zgq/linux/buildroot/buildroot-2020.02.6/configs/stm32mp1_atk_defconfig

1)、再次输入“make menuconfig回车

2)、移动向右光标键至“Save”,按回车键,得到下图:

3)、将“/zgq/linux/buildroot/buildroot-2020.02.6/.config”修改为

./configs/stm32mp1_atk_defconfig”,见下图:

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

我们将配置项命名为“stm32mp1_atk_defconfig”,以后要重新配置buildroot的话就可以直接输入“make stm32mp1_atk_defconfig回车”,显示“configuration written to /home/zgq/linux/buildroot/buildroot-2020.02.6/.config”,表示用“stm32mp1_atk_defconfig”覆盖“.config”,再次输入“make menuconfig回车”,就可以继续配置了。

5)、输入“ls”,查看“buildroot-2020.02.6”目录下的所有文件和文件夹

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

输入“ls stm*回车”,查看“configs”目录下的所有文件和文件夹

发现保存的文件“stm32mp1_atk_defconfig

11、编译“buildroot”

1)、输入“cd ..”返回到“buildroot-2020.02.6”目录

输入“ls”,查看“buildroot-2020.02.6”目录下的所有文件和文件夹

输入“make -j8”,编译“buildroot,-j8表示采用8线程编译

注意:

如果我们是第1次安装“buildroot”,则使用sudo make -j8”编译“buildroot”,否则会告诉我们没有权限,不知到为什么会这样?重新安装,就可用“make -j8

2)、查看编译结果:

输入“ls”,查看“buildroot-2020.02.6”目录下的所有文件和文件夹

输入“cd output/”切换到“output”目录

输入“ls”,查看“output”目录下的所有文件和文件夹

输入“cd images/”切换到“images”目录

输入“ls”,查看“images”目录下的所有文件和文件夹

3)、打开第2个终端

输入“ls

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

输入“ls

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

输入“ls回车

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

输入“ls回车

输入“sudo rm * -rf回车”,删除“rootfs”目录下所有的文件和文件夹,前面已经做了备份

输入“ls回车

输入“cd ..回车”,返回到“nfs”目录

输入“ls回车

4)、回到第1个打开的终端

输入“cp rootfs.tar /home/zgq/linux/nfs/rootfs回车”

将“/home/zgq/linux/buildroot/buildroot-2020.02.6/output/images”目录下的“rootfs.tar”拷贝到“/home/zgq/linux/nfs/rootfs”目录中

5)、回到第2个打开的终端

输入“cd rootfs/回车

输入“ls回车

输入“tar -vxf rootfs.tar”,解压

6)、输入“ls回车

输入“rm rootfs.tar回车”,删除压缩包

输入“ls回车

得到buildroot生成的根文件系统。

12、编译buildroot生成的根文件系统。

从网络启动测试

1)、设置密码运行结果

 mmcblk1: p1 p2 p3

stm32-dwmac 5800a000.ethernet eth0: Link is Up - 100Mbps/Full - flow control rx/tx

IP-Config: Complete:

     device=eth0, hwaddr=00:04:9f:04:d2:36, ipaddr=192.168.2.178, mask=255.255.255.0, gw=192.168.2.1

     host=192.168.2.178, domain=, nis-domain=(none)

     bootserver=192.168.2.180, rootserver=192.168.2.180, rootpath=

ALSA device list:

  No soundcards found.

VFS: Mounted root (nfs filesystem) on device 0:16.

devtmpfs: mounted

Freeing unused kernel memory: 1024K

Run /sbin/init as init process

Starting syslogd: OK

Starting klogd: OK

Running sysctl: OK

Starting mdev... OK

modprobe: can't change directory to '/lib/modules': No such file or directory

Saving random seed: OK

Starting network: ip: RTNETLINK answers: File exists

FAIL

Welcome to zgq STM32MP157

ATK-stm32mp1 login:

输入“root回车

输入密码“123456回车

输入“cd /”,切换到根目录

输入“ls”,可以执行了

2)、取消密码运行结果:

 mmcblk0: p1

dwmac4: Master AXI performs any burst length

stm32-dwmac 5800a000.ethernet eth0: No Safety Features support found

stm32-dwmac 5800a000.ethernet eth0: IEEE 1588-2008 Advanced Timestamp supported

stm32-dwmac 5800a000.ethernet eth0: registered PTP clock

stm32-dwmac 5800a000.ethernet eth0: configuring for phy/rgmii-id link mode

mmc1: new high speed MMC card at address 0001

mmcblk1: mmc1:0001 8GTF4R 7.28 GiB

mmcblk1boot0: mmc1:0001 8GTF4R partition 1 4.00 MiB

mmcblk1boot1: mmc1:0001 8GTF4R partition 2 4.00 MiB

mmcblk1rpmb: mmc1:0001 8GTF4R partition 3 512 KiB, chardev (242:0)

 mmcblk1: p1 p2 p3

stm32-dwmac 5800a000.ethernet eth0: Link is Up - 100Mbps/Full - flow control rx/tx

IP-Config: Complete:

     device=eth0, hwaddr=00:04:9f:04:d2:36, ipaddr=192.168.2.178, mask=255.255.255.0, gw=192.168.2.1

     host=192.168.2.178, domain=, nis-domain=(none)

     bootserver=192.168.2.180, rootserver=192.168.2.180, rootpath=

ALSA device list:

  No soundcards found.

VFS: Mounted root (nfs filesystem) on device 0:16.

devtmpfs: mounted

Freeing unused kernel memory: 1024K

Run /sbin/init as init process

Starting syslogd: OK

Starting klogd: OK

Running sysctl: OK

Starting mdev... OK

modprobe: can't change directory to '/lib/modules': No such file or directory

Initializing random number generator: OK

Saving random seed: OK

Starting network: ip: RTNETLINK answers: File exists

FAIL

输入“root回车

输入“cd /”,切换到根目录

输入“ls”,可以执行了

还有个问题要解决:

modprobe: can't change directory to '/lib/modules': No such file or directory

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

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

相关文章

相机图像质量研究(31)常见问题总结:图像处理对成像的影响--图像差

系列文章目录 相机图像质量研究(1)Camera成像流程介绍 相机图像质量研究(2)ISP专用平台调优介绍 相机图像质量研究(3)图像质量测试介绍 相机图像质量研究(4)常见问题总结:光学结构对成像的影响--焦距 相机图像质量研究(5)常见问题总结:光学结构对成…

MySQL中的聚集索引和非聚集索引

1. 聚集索引(Clustered Index)的定义与特点 聚集索引是一种特殊类型的索引,其中表中的数据行实际上是按照索引键的顺序存储的。在MySQL的InnoDB存储引擎中,聚集索引通常与表的主键关联。 特点: 每个表只能有一个聚集…

6.函数是特殊的对象2 - JS

在第一部分中,主要总结了函数作为一个对象的常见属性(name/length)、如何自定义属性以及如何使用函数构造器(Function)。 这里总结函数作为对象的常见方法(apply/call/bind/toString)。 使用 c…

一起学量化之Aroon指标

Aroon指标是由Tushar Chande于1995年开发的技术分析工具,旨在识别股票是否处于趋势中及趋势的强度。它通过分析股票价格在一定周期内创下的新高和新低来预测趋势的变化,这基于一种观念:强势趋势通常伴随着频繁的新高或新低。 1. Aroon指标的组成 Aroon指标由两个部分组成:…

ADC--模拟量转换成数字量

目录 一、ADC硬件组成七大部分: 二、单次转换,连续转换,不连续采样模式,扫描模式区别 1、举例(5种组合情况) 2、模拟看门狗中断的作用: 三、MCU使用ADC步骤 一、ADC硬件组成七大部分: ①输入电压&#…

103.网游逆向分析与插件开发-网络通信封包解析-网络完成端口模型的流程

内容参考于:易道云信息技术研究院VIP课 上一个内容:解读喊话道具数据包并且利用Net发送 通过之前的内容,把游戏的网络通信中关于发送数据的分析好了(任意涉及网络的应用程序里发送数据的数据包定位与分析都可以参考之前的内容&a…

Java实战:构建智能工作量统计系统

✍✍计算机编程指导师 ⭐⭐个人介绍:自己非常喜欢研究技术问题!专业做Java、Python、微信小程序、安卓、大数据、爬虫、Golang、大屏等实战项目。 ⛽⛽实战项目:有源码或者技术上的问题欢迎在评论区一起讨论交流! ⚡⚡ Java实战 |…

如何清除谷歌浏览器的缓存?这里有详细步骤

如果你想解决加载或格式化问题,以改善你在谷歌Chrome上的浏览体验,那么清除缓存和cookie是一个很好的开始。以下是删除它们的方式和操作。 删除缓存和cookie时会发生什么 当你访问一个网站时,它有时会保存(或记住)某…

MybatisPlus大量数据批量新增优化

首先我们如果for循环依次遍历插入数据效率是十分底下的&#xff0c;大概耗时5分钟左右。 for循环插入测试代码&#xff1a; Test void testSaveOneByOne() {long b System.currentTimeMillis();for (int i 1; i < 100000; i) {userService.save(buildUser(i));}long e …

DS:八大排序之堆排序、冒泡排序、快速排序

创作不易&#xff0c;友友们给个三连吧&#xff01;&#xff01; 一、堆排序 堆排序已经在博主关于堆的实现过程中详细的讲过了&#xff0c;大家可以直接去看&#xff0c;很详细,这边不介绍了 DS&#xff1a;二叉树的顺序结构及堆的实现-CSDN博客 直接上代码&#xff1a; …

算法||实现典型数据结构的查找、添加和删除数据 并分析其时间和空间复杂度

实现典型数据结构的查找、添加和删除数据 并分析其时间和空间复杂度 线性结构&#xff1a; 数组&#xff1a;是一种线性表数据结构&#xff0c;它用一组连续的内存空间&#xff0c;来存储一组具有相同类型的数据。 查找数据 &#xff1a;随机访问 流程图 /** 查询元素下标…

QML | 属性特性(property)

一、属性特性 属性是对象的一个特性,可以分配一个静态的值,也可以绑定一个动态表达式。属性的值可以被其他对象读取。一般而言,属性的值也可以被其他对象修改,除非显式声明不允许这么做,也就是声明为只读属性。 1.定义属性特性 属性可以在C++中通过注册一个类的Q_PROPERT…

anaconda安装路径默认在D盘,但安装环境的envs路径跑到C盘,修改为D盘

安装的anaconda环境&#xff0c;路径是在anaconda安装目录下的envs中&#xff08;D:\APPFile\Anaconda3\envs&#xff09;&#xff0c;然而&#xff0c;这次创建的却是在 C:\Users\xxx.conda\envs 中。 首先&#xff0c;找到用户目录下的.condarc文件&#xff08;C:\Users\use…

随想录刷题笔记 —二叉树篇7 617合并二叉树 700二叉搜索树中的搜索 98验证二叉搜索树

617合并二叉树 递归&#xff1a;如果root1和root2其中有一个为空&#xff0c;则将另一个的结点直接赋值即可——将该节点和子树都直接赋值过去了。 如果都不是空&#xff0c;就需要重新建立一个结点再进入递归。 class Solution {public TreeNode mergeTrees(TreeNode root1…

力扣题目训练(12)

2024年2月5日力扣题目训练 2024年2月5日力扣题目训练476. 数字的补数482. 密钥格式化485. 最大连续 1 的个数148. 排序链表164. 最大间距 2024年2月5日力扣题目训练 2024年2月5日第十二天编程训练&#xff0c;今天主要是进行一些题训练&#xff0c;包括简单题3道、中等题2道和…

LeetCode--代码详解 231.2的幂

231. 2的幂 题目 给你一个整数 n&#xff0c;请你判断该整数是否是 2 的幂次方。如果是&#xff0c;返回 true &#xff1b;否则&#xff0c;返回 false 。 如果存在一个整数 x 使得 n 2x &#xff0c;则认为 n 是 2 的幂次方。 示例 1&#xff1a; 输入&#xff1a;n 1…

一起学量化之DMI指标

DMI指标(Directional Movement Index)是由J. Welles Wilder在1978年开发的,用于分析资产价格动向和趋势强度的技术指标。DMI包括两条主要的线:正向指标(+DI)和负向指标(-DI),以及衡量趋势强度的平均方向指数(ADX)。 1. DMI指标的组成 +DI(正向指标):测量上升趋势…

项目第一次git commit后如何撤销

问题描述&#xff1a; # 1. 新建gitcode目录&#xff0c;然后在目录下 git init# 2. 用idea打开目录后&#xff0c;新建.gitignore文件后 git add .git commit -m "init project"git log# 3. 就出现如下图情况目的&#xff1a;向撤销该次代码提交 # 仅撤销 git com…

Stable Diffusion教程——常用插件安装与测试(一)

前言 随着Stable Diffusion不断演进&#xff0c;越来越多的开发者开始涉足插件开发。尽管网络上存在大量教程&#xff0c;但它们通常零散分布&#xff0c;逐个学习和查找非常耗时&#xff0c;使人感觉每天都在劳累思考。这里总结了Stable Diffusion常用的插件安装与测试方法。…

表的操作【mysql数据库】

目录 一、创建表 二、查看表 三、修改表 改表名&#xff1a; 新增一列&#xff1a; 修改某列的属性&#xff1a; 删除某列&#xff1a; 改列名 四、删除表 一、创建表 二、查看表 desc&#xff1a;查看表的详细信息 查看建表时的详细信息&#xff1a; 三、修改表 改表…