野火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
荔枝派Zero(全志V3S)烧录Uboot、Kernel及rootfs到SD卡并运行在板子上
通过前面 Uboot编译及配置 我们获得了 u-boot-sunxi-with-spl.bin 通过前面 Kernel编译 我们获得了zImage镜像文件及sun8i-v3s-licheepi-zero-dock.dtb设备树文件
504 1
|
10月前
|
Linux
从零开始写linux字符设备驱动程序(四)(基于友善之臂tiny4412开发板)
从零开始写linux字符设备驱动程序(四)(基于友善之臂tiny4412开发板)
107 0
|
10月前
|
Linux
从零开始写linux字符设备驱动程序(三)(基于友善之臂tiny4412开发板)
从零开始写linux字符设备驱动程序(三)(基于友善之臂tiny4412开发板)
57 0
|
10月前
|
Linux
从零开始写linux字符设备驱动程序(二)(基于友善之臂tiny4412开发板)
从零开始写linux字符设备驱动程序(二)(基于友善之臂tiny4412开发板)
57 0
linux4.1.15内核移植到野火PRO开发板开发板
linux4.1.15内核移植到野火PRO开发板开发板
200 0
|
Shell Linux
嵌入式linux/鸿蒙开发板(IMX6ULL)开发(十一)makefile的使用(下)
嵌入式linux/鸿蒙开发板(IMX6ULL)开发(十一)makefile的使用
134 1
嵌入式linux/鸿蒙开发板(IMX6ULL)开发(十一)makefile的使用(下)
|
Ubuntu Linux 开发工具
嵌入式linux/鸿蒙开发板(IMX6ULL)开发(八)IMX6ULL开发板编译第一个程序以及驱动(下)
嵌入式linux/鸿蒙开发板(IMX6ULL)开发(八)IMX6ULL开发板编译第一个程序以及驱动
264 0
嵌入式linux/鸿蒙开发板(IMX6ULL)开发(八)IMX6ULL开发板编译第一个程序以及驱动(下)
|
Ubuntu Linux 数据安全/隐私保护
嵌入式linux/鸿蒙开发板(IMX6ULL)开发(八)IMX6ULL开发板编译第一个程序以及驱动(上)
嵌入式linux/鸿蒙开发板(IMX6ULL)开发(八)IMX6ULL开发板编译第一个程序以及驱动
337 0
嵌入式linux/鸿蒙开发板(IMX6ULL)开发(八)IMX6ULL开发板编译第一个程序以及驱动(上)
|
Linux
调试lcd时候给linux单板移植tslib
调试lcd时候给linux单板移植tslib
105 0
调试lcd时候给linux单板移植tslib
|
编译器 Linux 开发工具
嵌入式linux/鸿蒙开发板(IMX6ULL)开发(十)gcc编译器的使用(上)
嵌入式linux/鸿蒙开发板(IMX6ULL)开发(十)gcc编译器的使用
382 0
嵌入式linux/鸿蒙开发板(IMX6ULL)开发(十)gcc编译器的使用(上)