野火IMX6ULL PRO移植最新buidroot根文件系统(2022.02.04)

简介: 野火IMX6ULL PRO移植最新buidroot根文件系统(2022.02.04)

前言:相较于busybox, buildroot配置完成后不需要自己建立文件,移植库文件,而且也可以配置许多软件,不需要后期自己去下载,编译,移植,要更加方便

1. 准备工作

1.1 下载

下载地址

43e649944a3744e693e0917803f9b18f.png

1.2 在虚拟机下解压

53357d84b0714c779b92e3737c957550.png


2. 配置buildroot

2.1 配置 Target options

Target options  --->
  Target Architecture (ARM (little endian))  ---> 
    ARM (little endian)  ---->            (选中它, 回车选中)
    Target Binary Format (ELF)  --->  
      ELF       ---->           (选中它, 回车选中)
    Target Architecture Variant (cortex-A7)  --->    
      cortex-A7   ---->           (选中它, 回车选中)
    Target ABI (EABIhf)  --->           
      EABIhf    ---->           (选中它, 回车选中)
    Floating point strategy (NEON/VFPv4)  --->   
      NEON/VFPv4    ---->           (选中它, 回车选中)
    ARM instruction set (ARM)  --->
      ARM   ---->           (选中它, 回车选中)

2.2 配置 Toolchain

Toolchain
  -> Toolchain type = External toolchain
  -> Toolchain = Custom toolchain         //用户自己的交叉编译器
  -> Toolchain origin = Pre-installed toolchain   //预装的编译器
  -> Toolchain path =/usr/local/arm/gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf   // 自己的编译器路径
  -> Toolchain prefix = $(ARCH)-linux-gnueabihf   //前缀,注意最后没有短横线!!!!!!!
  -> External toolchain gcc version = 4.9.x   // 编译器版本号
  -> External toolchain kernel headers series = 5.16.x or later   // 工具链内核版本号
  -> External toolchain C library = glibc/eglibc    
  -> [*] Toolchain has SSP support? (NEW) //选中
  -> [*] Toolchain has RPC support? (NEW) //选中
  -> [*] Toolchain has C++ support? //选中
  -> [*] Enable MMU support (NEW) //选中

工具链内核版本查看方法

在工具链根目录下执行命令"find -name “version.h”,找到该文件具体路径,查看该文件内容的LINUX_VERSION_CODE值,将其转为16进制就是工具链内核版本号

1eb7d7fb8f6f4d0bb17625786da0a463.png

所以:版本号为4.0


747c4541d1554e09adf13fa86ae778d3.png

2.3 配置 System configuration

System configuration
  -> System hostname = fire_imx6ull       //平台名字,自行设置
  -> System banner = Welcome to fire i.mx6ull //欢迎语
  -> Init system = BusyBox          //使用 busybox
  -> /dev management = Dynamic using devtmpfs + mdev  //使用 mdev
  -> [*] Enable root login with password (NEW)    //使能登录密码
  -> Root password = hxd123               //登录密码为 hxd123

2.4 配置 Filesystem images

-> Filesystem images
  -> [*] ext2/3/4 root filesystem   //如果是 EMMC 或 SD 卡的话就用 ext3/ext4
  -> ext2/3/4 variant = ext4      //选择 ext4 格式
  -> [*] ubi image containing an ubifs root filesystem  //如果使用 NAND 的话就用 ubifs

3. 编译

执行命令编译, 注意不能 make -jx 指定多核编译

sudo make

编译完成后会在output/images下看到rootfs.tar压缩包,建立一个保存根文件系统的目录,将压缩包拷贝到哪里并解压


3414f010aa0346679caccf79499db62a.png

8678047cfb494f99a300f9f71a520472.png

4. 挂载根文件系统

修改/etc/exports, 将buildrootfs文件夹作为nfs文件系统的目录


9ef61976fce744d384e914363aa075dc.png

uboot命令行下配置新的路径buildrootfs,其中的地址和网关与你的环境有关

setenv bootargs 'console=ttymxc0,115200 root=/dev/nfs nfsroot=192.168.1.107:/home/hxd/buildrootfs,proto=tcp rw ip=192.168.1.108:192.168.1.107:192.168.1.1:255.255.255.0::eth0:off';saveenv


a17a9c5224d74a06a3840f8ef753da0f.png

5. 配置buildroot内部的busybox

配置的目的是为了解决中文字符显示问题

eaf8ae76ca974322b7329f2fb9894084.png


在编译buildroot时会自动下载busybox软件包,所在位置buildroot根目录/output/build/busybox-xxx

98493bae4e444362b7c72e7ba2e26680.png

5.1 修改源代码

修改libbb/printable_string.c文件的FAST_FUNC printable_stringh函数,注释下面两句

09bcac7e64e24a9e976b20f3cff2b19e.png


修改libbb/unicode.c文件中的unicode_conv_to_printable2函数

e33463b9d81740c79c75d287f35020b7.png

5.2 通过图形化界面配置

在buildroot根目录下输入如下命令进入图形化配置界面

sudo make busybox-menuconfig

具体配置参考:移植BusyBox根文件系统到野火开发板的1.5部分

5.3 编译

在buildroot根目录下依次执行如下命令

sudo make busybox
sudo make


重新解压,挂载,成功!!!!

a6757dadd1ad419eabe8b045c4e549b8.png

6. 设置命令提示符

目的为了像ubuntu的提示符一样,有用户名,有当前文件路径等信息

c4f3748856894db4b7d19dcd5c100a94.png

这种命令提示符其实是由一个环境变量PS1控制的,所以我们只需要修改这个环境变量即可,配置规则如下:

 \! 显示该命令的历史记录编号。
 \# 显示当前命令的命令编号。
 \$ 显示$符作为提示符,如果用户是 root 的话,则显示#号。
 \\ 显示反斜杠。
 \d 显示当前日期。
 \h 显示主机名。
 \n 打印新行。
 \nnn 显示 nnn 的八进制值。
 \s 显示当前运行的 shell 的名字。
 \t 显示当前时间。
 \u 显示当前用户的用户名。
 \W 显示当前工作目录的名字。
 \w 显示当前工作目录的路径

修改文件etc/profile,注意是在你的buildrootfs目录下,别去修改你的ubuntu虚拟机去了

05bd3c01350d4bc9b1e8ad1797344603.png

d39d1e248a2a47bc9ac6b4d9d17e8339.png



ok

f5701e13bb3449758b31c12589cd8428.png





目录
相关文章
|
Ubuntu Linux 开发工具
Linux下的IMX6ULL——环境搭建与软件安装(一)
Linux下的IMX6ULL——环境搭建与软件安装(一)
514 0
Linux下的IMX6ULL——环境搭建与软件安装(一)
|
4月前
|
人工智能 JSON 算法
【解决方案】DistilQwen2.5-DS3-0324蒸馏小模型在PAI-ModelGallery的训练、评测、压缩及部署实践
DistilQwen 系列是阿里云人工智能平台 PAI 推出的蒸馏语言模型系列,包括 DistilQwen2、DistilQwen2.5、DistilQwen2.5-R1 等。本文详细介绍DistilQwen2.5-DS3-0324蒸馏小模型在PAI-ModelGallery的训练、评测、压缩及部署实践。
|
2月前
|
存储 人工智能 自然语言处理
AI代理内存消耗过大?9种优化策略对比分析
在AI代理系统中,多代理协作虽能提升整体准确性,但真正决定性能的关键因素之一是**内存管理**。随着对话深度和长度的增加,内存消耗呈指数级增长,主要源于历史上下文、工具调用记录、数据库查询结果等组件的持续积累。本文深入探讨了从基础到高级的九种内存优化技术,涵盖顺序存储、滑动窗口、摘要型内存、基于检索的系统、内存增强变换器、分层优化、图形化记忆网络、压缩整合策略以及类操作系统内存管理。通过统一框架下的代码实现与性能评估,分析了每种技术的适用场景与局限性,为构建高效、可扩展的AI代理系统提供了系统性的优化路径和技术参考。
157 4
AI代理内存消耗过大?9种优化策略对比分析
|
存储 Ubuntu Linux
linux系统中固化和更新uboot、zImage和dtb方法(经典)
linux系统中固化和更新uboot、zImage和dtb方法(经典)
1606 0
|
人工智能 算法 安全
深度讲解-互联网算法备案指南和教程
随着人工智能和大数据技术的发展,互联网算法在内容推荐、用户画像等领域日益重要,但也带来了安全风险和合规挑战。国家互联网信息办公室为此发布了《互联网算法备案管理规定》,要求具有舆论属性或社会动员能力的互联网信息服务提供者进行算法备案,以确保算法透明性和合规性,维护网络健康秩序。唯安创远AI合规专家将解析备案的必要性、流程及其对企业的影响,帮助企业顺利完成备案。
965 3
|
搜索推荐 Android开发
学习AOSP安卓系统源代码,需要什么样的电脑?不同配置的电脑,其编译时间有多大差距?
本文分享了不同价位电脑配置对于编译AOSP安卓系统源代码的影响,提供了从6000元到更高价位的电脑配置实例,并比较了它们的编译时间,以供学习AOSP源代码时电脑配置选择的参考。
1101 0
学习AOSP安卓系统源代码,需要什么样的电脑?不同配置的电脑,其编译时间有多大差距?
|
存储 Linux Android开发
Rockchip u-boot阶段命令行和代码方式读取u盘内容并解析
Rockchip u-boot阶段命令行和代码方式读取u盘内容并解析
2039 2
|
存储 编解码 Ubuntu
【QT】linux下alsa库的移植和QT中音视频的处理&笔记
【QT】linux下alsa库的移植和QT中音视频的处理&笔记
|
网络协议 数据库 网络架构
一张图带你精通 OSPF 8种邻居状态机!
【4月更文挑战第25天】
1899 0
一张图带你精通 OSPF 8种邻居状态机!