博客
关于我
【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 删除日志文件详解
查看>>
mysql 判断表字段是否存在,然后修改
查看>>
MySQL 到底能不能放到 Docker 里跑?
查看>>
mysql 前缀索引 命令_11 | Mysql怎么给字符串字段加索引?
查看>>
MySQL 加锁处理分析
查看>>
mysql 协议的退出命令包及解析
查看>>
mysql 参数 innodb_flush_log_at_trx_commit
查看>>
mysql 取表中分组之后最新一条数据 分组最新数据 分组取最新数据 分组数据 获取每个分类的最新数据
查看>>
MySQL 命令和内置函数
查看>>
MySQL 和 PostgreSQL,我到底选择哪个?
查看>>
mysql 四种存储引擎
查看>>
MySQL 在并发场景下的问题及解决思路
查看>>
MySQL 在控制台插入数据时,中文乱码问题的解决
查看>>
MySQL 基础架构
查看>>
MySQL 基础模块的面试题总结
查看>>
MySQL 处理插入重主键唯一键重复值办法
查看>>
MySQL 备份 Xtrabackup
查看>>
mysql 复杂查询_mysql中复杂查询
查看>>
mYSQL 外键约束
查看>>
mysql 多个表关联查询查询时间长的问题
查看>>