博客
关于我
【Linux系统移植】Buildroot 根文件系统构建
阅读量:192 次
发布时间:2019-02-28

本文共 3737 字,大约阅读时间需要 12 分钟。

一、 根文件构建工具比较:

busybox

1、只是构建一些常用的命令和文件。

2、lib 库文件,驱动开发分第三方软件(alsaiperfmplayer)等需要自己移植。

3、默认没有用户名和密码设置。

Buildroot
1、包含 
busybox
2、集成了各种常见的第三方库和软件。
3、可以
构建交叉编译工具链、根文件系统、
uboot
以及
Linux
核镜像。
4、相比更简单,类似内核配置的操作,容易理解,编译要求的配置和磁盘空间要求较小
yocto

1、有 Buildroot 的所有功能。

2、上手难度较 Buildroot 更大, 有很多概念、语法需要理解,编译要求配置高

3、相比buildroot功能强大,能实现一些buildroot目前不好实现的功能,比如生成Ubuntu的烧写镜像。

 

二、Buildroot 配置

Buildroot 的官方网站是:https://buildroot.org/

使用的 buildroot 版本: buildroot-2019.02.6.tar.bz2

make menuconfig

Target options
配置平台架构等
Toolchain
配置交叉编译工具链(路径、版本等)
System configuration
系统配置(板名、欢迎语、用户名、密码等)
Filesystem images
根文件系统配置(格式等)
Kernel
使能(失能)内核编译
Bootloaders
使能(失能)Bootloaders 编译

 

1、Target options 配置

Target options-> Target Architecture = ARM (little endian) //目标平台-> Target Binary Format = ELF //目标二进制格式-> Target Architecture Variant = cortex-A7 //目标架构    -> Target ABI = EABIhf //目标ABI-> Floating point strategy = NEON/VFPv4 //浮点策略-> ARM instruction set = ARM //ARM指令集

 

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 = 4.1.x    //编译工具的内核版本号-> External toolchain C library = glibc/eglibc -> [*] Toolchain has SSP support? (NEW) //选中-> [*] Toolchain has RPC support? (NEW) //选中-> [*] Toolchain has C++ support? //选中-> [*] Enable MMU support (NEW) //选中

 

3、System configuration配置

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

 

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

 

5、禁止编译 Linux 内核和 uboot

禁止编译 Linux 内核:
-> Kernel-> [ ] Linux Kernel //不要选择编译 Linux Kernel 选项!
禁止编译
Uboot
-> Bootloaders-> [ ] U-Boot //不要选择编译 U-Boot 选项!

 

6、Target packages配置

配置要选择的
第三方库或软件
、比如
alsa-utils
ffmpeg
iperf
等工具。
 
1
、使能
alsa-lib
Target packages-> Libraries-> Audio/Sound -> -*- alsa-lib ---> 使能该项,此配置项下的文件全部选中

 

2
、使能
alsa-utils
Target packages -> Audio and video applications -> alsa-utils 使能该项,并且此目录下的软件全部选中

 
 

7、buildroot 下的 busybox 配置

 
 /output/build/busybox-1.29.3 
文件夹就是解压后的
busybox
源码。
 
在 buildroot 下使用以下命令打开 busybox 的配置界面:
sudo make busybox-menuconfig
 
 
1、修改 Makefile :
 
 
 

2busybox 中文字符支持

如果默认直接编译
busybox
的话,在使用
SecureCRT
的时候中文字符是显示不正常的,中文字符会显示为“?
”。
 
修改  /output/build/busybox-1.29.3/libbb/printable_string.c 文件:

 

修改  /output/build/busybox-1.29.3/libbb/unicode.c 文件:

 

3、编译 busybox

(1)使用以下命令查看当前 buildroot 所有配置了的目标软件包,也就是 packages

sudo make show-targets

 (2)单独编译并安装 busybox

sudo make busybox

(3)编译完成以后编译 buildroot

sudo make

 

三、编译 buildroot

1、编译

sudo make //一定要加 sudo,不能通过-jx 多核编译
  • buildroot 编译的时候会先从网上下载所需的软件源码,下载的源码压缩包都存放在 /dl 目录下。
  • buildroot 将所有解压缩后的软件保存在/output/build 软件中。

2、编译完成:

 

3、buildroot-2019.02.6/output/images 下生成根文件系统:
 
 
 
复制到 nfs 目录下并解压缩:
 
 
 

四、根文件系统测试

1、设置根文件系统从 nfs/buildrootfs 启动

setenv bootargs 'console=ttymxc0,115200 root=/dev/nfs rw nfsroot=192.168.137.18:/home/pjw/linux/nfs/buildrootfs ip=192.168.137.20:192.168.137.18:192.168.1.1:255.255.255.0::eth0:off'

根文件系统运行正常:

 
 
 
 

2、修改已显示当前当前登录的用户名,主机名以及所处的目录

修改 /etc/profile 文件:

 
 

原始的设置 PS1 环境变量的配置代码,就是它将命令提示符设置为了固定的“#”。

改为设置 PS1 环境变量,格式就是:

[user@hostname]:currentpath$:

改为以下内容:

PS1='[\u@\h]:\w$:'export PS1

 

修改 /etc/profile 文件完成以后重启开发板,可以看到显示了用户名等:

转载地址:http://ckzi.baihongyu.com/

你可能感兴趣的文章
mysql case when 乱码_Mysql CASE WHEN 用法
查看>>
Multicast1
查看>>
mysql client library_MySQL数据库之zabbix3.x安装出现“configure: error: Not found mysqlclient library”的解决办法...
查看>>
MySQL Cluster 7.0.36 发布
查看>>
Multimodal Unsupervised Image-to-Image Translation多通道无监督图像翻译
查看>>
MySQL Cluster与MGR集群实战
查看>>
multipart/form-data与application/octet-stream的区别、application/x-www-form-urlencoded
查看>>
mysql cmake 报错,MySQL云服务器应用及cmake报错解决办法
查看>>
Multiple websites on single instance of IIS
查看>>
mysql CONCAT()函数拼接有NULL
查看>>
multiprocessing.Manager 嵌套共享对象不适用于队列
查看>>
multiprocessing.pool.map 和带有两个参数的函数
查看>>
MYSQL CONCAT函数
查看>>
multiprocessing.Pool:map_async 和 imap 有什么区别?
查看>>
MySQL Connector/Net 句柄泄露
查看>>
multiprocessor(中)
查看>>
mysql CPU使用率过高的一次处理经历
查看>>
Multisim中555定时器使用技巧
查看>>
MySQL CRUD 数据表基础操作实战
查看>>
multisim变压器反馈式_穿过隔离栅供电:认识隔离式直流/ 直流偏置电源
查看>>