目录
本文文件:编译好的文件系统(包含 buildroot、roofts、配置文件等)
一、 根文件构建工具比较:
busybox | 1、只是构建一些常用的命令和文件。 2、lib 库文件,驱动开发分第三方软件(alsa、iperf、mplayer)等需要自己移植。 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
可以直接用以下方式获取:
wget https://buildroot.org/downloads/buildroot-2019.02.6.tar.bz2
解压:
tar -xjvf 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
-> Kernel
-> [ ] Linux Kernel //不要选择编译 Linux Kernel 选项!
-> Bootloaders
-> [ ] U-Boot //不要选择编译 U-Boot 选项!
6、Target packages配置
Target packages
-> Libraries
-> Audio/Sound
-> -*- alsa-lib ---> 使能该项,此配置项下的文件全部选中
Target packages
-> Audio and video applications
-> alsa-utils 使能该项,并且此目录下的软件全部选中
7、buildroot 下的 busybox 配置
sudo make busybox-menuconfig
2、busybox 中文字符支持
修改 /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、编译完成:
四、根文件系统测试
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 文件完成以后重启开发板,可以看到显示了用户名等: