概述
文章目录
- 一、不要慌一步一步来
- 1.1 buildroot目录结构
- 二、基本配置
- 2.1 Target Options 目标配置
- 2.2 Build options 构建配置
- 2.3 Toolchain 工具链配置
- 2.4 System configuration 系统配置
- 2.5 Kernel 内核配置
- 2.6 Target packages 目标包配置(下一节)
- 2.7 Filesystem images
- 2.8 Bootloaders
- 2.9 Host utilities
- 2.10 Legacy config options 老配置
- 2.11 保存设置与加载设置
- 保存设置
- 2.12 编译和镜像
- 三、Target packages配置
- 3.1 安装WIFI相关的软件
- 3.2 安装dropbear:scp远程拷贝命令
- 3.2 安装播放视频音频相关的软件
- 3.2.1 选择安装 tinyalsa
- 3.2.2 选择安装:alsa-lib
- 3.2.3 选择安装:alsa-utils
- 3.3 buildroot 2020添加mplayer
- 3.3.1 选择安装:mplayer
- 3.3.2 Buildroot里面添加mplayer
一、不要慌一步一步来
使用buildroot之前你确定:
- 你想使用buildroot下载安装编译器吗?
- 答:一般不使用buildroot自带的编译器。
- 你想使用buildroot下载Linux然后编译吗?
- 答:一般不在buildroot下编译linux kernel,会有些问题,不如独立编译Linux Kernel好用。
- 你想使用buildroot下载uboot然后编译吗?
- 答:强烈建议不使用buildroot的uboot。
1.1 buildroot目录结构
buildroot/package/
下面放着应用软件的配置文件,每个应用软件的配置文件有Config.in和soft_name.mk其中soft_name.mk(这种其实就Makefile脚本的自动构建脚本)文件可以去下载应用软件的包。buildroot/output/
是编译出来的输出文件夹,里面的build/目录存放着解压后的各种软件包编译完后的现场。host/目录放着制作好的编译工具链,target/ 目录是用来制作rootfs的,里面放着Linux系统基本的目录结构,以及各种编译好的应用库和bin可执行文件。Images/目录下就是最终生成的可烧写到板子上的各种image。buildroot/dl
存放下载的源码包及应用软件的压缩包buildroot/fs
放各种文件系统的源代码buildroot/fs/skeleton
放生成文件系统镜像的地方,及板子里面的系统buildroot/linux/
存放着Linux kernel的自动构建脚本。buildroot/configs
放置开发板的一些配置参数。buildroot/dl/
目录存在从官网上下载的开源软件包,第一次下载后,下次就不会再去从官网下载了,而是从dl/目录下拿开源包,以节约时间。buildroot/docs/
存放相关的参考文档。buildroot/arch/
目录存放CPU架构相关的配置脚本,如arm/mips/x86 ,这些CPU相关的配置,在制作工具链,编译boot和内核时很关键。
目录 | 描述 |
---|---|
package/ | 下面放着应用软件的配置文件,每个应用软件的配置文件有Config.in和soft_name.mk其中soft_name.mk(这种其实就Makefile脚本的自动构建脚本)文件可以去下载应用软件的包。 |
output/ | 是编译出来的输出文件夹,里面的build/目录存放着解压后的各种软件包编译完后的现场。host/目录放着制作好的编译工具链,target/ 目录是用来制作rootfs的,里面放着Linux系统基本的目录结构,以及各种编译好的应用库和bin可执行文件。Images/目录下就是最终生成的可烧写到板子上的各种image。 |
dl/ | 存放下载的源码包及应用软件的压缩包 |
fs/ | 放各种文件系统的源代码 |
fs/skeleton/ | 放生成文件系统镜像的地方,及板子里面的系统 |
linux/ | 存放着Linux kernel的自动构建脚本。 |
configs/ | 放置开发板的一些配置参数。 |
dl/ | 目录存在从官网上下载的开源软件包,第一次下载后,下次就不会再去从官网下载了,而是从dl/目录下拿开源包,以节约时间。 |
docs/ | 存放相关的参考文档。 |
arch/ | 目录存放CPU架构相关的配置脚本,如arm/mips/x86 ,这些CPU相关的配置,在制作工具链,编译boot和内核时很关键。 |
二、基本配置
进入配置,源码根目录运行命令:make ARCH=arm menuconfig
2.1 Target Options 目标配置
- 目标架构:ARM(小端)
- 目标二进制格式:ELF
- 目标架构变体:Cortex-A7
- 编译器ABI: gnueabihf
- 浮点数策略:VFPv4-D16
- ARM架构集:ARM
Target Options的配置就出来啦!
ARM芯片一般都是小端的。
二进制格式Linux这块基本上都是elf。
应用程序二进制接口
浮点数策略:VFPv4-D16
ARM指令集
2.2 Build options 构建配置
暂无
2.3 Toolchain 工具链配置
一个典型的ARM Linux工具链包含arm-linux-gnueabihf-gcc(后续工具省略前缀)、strip、gcc、objdump、ld、gprof、nm、readelf、 addr2line等。前缀中的“hf”显 示该工具链是完全的硬浮点。
Toolchain
-> Toolchain type = External toolchain
-> Toolchain = Custom toolchain //用户自己的交叉编译器
-> Toolchain origin = Pre-installed toolchain //预装的编译器
-> Toolchain path = //编译器绝对路径
-> 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) //选中
如下:
2.4 System configuration 系统配置
用于设置一些系统配置,比如开发板名字、欢迎语、用户名、密码等。
System configuration
-> System hostname = Jasonangel //平台名字,自行设置
-> System banner = Welcome to xxxxx //欢迎语
-> Init system = BusyBox //使用 busybox
-> /dev management = Dynamic using devtmpfs + mdev //使用 mdev
-> [*] Enable root login with password (NEW) //使能登录密码
-> Root password = 123456 //登录密码为 123456
如下配置(这里就不设置密码了[ ] Enable root login with password
)
2.5 Kernel 内核配置
buildroot 不仅仅能构建根文件系统,也可以编译 linux 内核和 uboot。当配置 buildroot,使能 linux 内核和 uboot 以后 buildroot 就会自动下载最新的 linux 内核和 uboot 源码并编译。但是我们一般都不会使用 buildroot 下载的 linux 内核和 uboot,因为 buildroot 下载的 linux 和 uboot官方源码,里面会缺少很多驱动文件,而且最新的 linux 内核和 uboot 会对编译器版本号有要求,可能导致编译失败。因此我们需要配置 buildroot,关闭 linux 内核和 uboot 的编译,只使用buildroot 来构建根文件系统,首先是禁止 Linux 内核的编译,配置如下:
-> Kernel
-> [ ] Linux Kernel //不要选择编译 Linux Kernel 选项!
这里就不配置Kernel了,我外面自己编译咯!
2.6 Target packages 目标包配置(下一节)
这是最复杂的!工作量也基本在这!
下面专门一节介绍!
2.7 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
如下配置,主要就是两个红框。
2.8 Bootloaders
buildroot 不仅仅能构建根文件系统,也可以编译 linux 内核和 uboot。当配置 buildroot,使能 linux 内核和 uboot 以后 buildroot 就会自动下载最新的 linux 内核和 uboot 源码并编译。但是我们一般都不会使用 buildroot 下载的 linux 内核和 uboot,因为 buildroot 下载的 linux 和 uboot官方源码,里面会缺少很多驱动文件,而且最新的 linux 内核和 uboot 会对编译器版本号有要求,可能导致编译失败。因此我们需要配置 buildroot,关闭 linux 内核和 uboot 的编译,只使用buildroot 来构建根文件系统,禁止编译 Uboot,配置如下:
-> Bootloaders
-> [ ] U-Boot //不要选择编译 U-Boot 选项!
和kernel一样的配置,我自己在外面编译u-boot咯!
2.9 Host utilities
暂无
2.10 Legacy config options 老配置
暂无
2.11 保存设置与加载设置
保存设置
如下红框内就是配置文件.config的地址(绝对地址),可以将当前的.config文件保存到你想要保存的地方–分享/记录的一个里程碑。
2.12 编译和镜像
sudo time make -j16
最后生成文件系统镜像的地方:/buildroot-2020.02.4/output/image/rootfs.tar
三、Target packages配置
这里工作量比较大,各个包之间有依赖关系。
3.1 安装WIFI相关的软件
dhcpcd
:(Target packages > Networking application)dnsmasq
:(Target packages > Networking application)wireless tools
:(Target packages > Networking application)wpa_supplicant
:(Target packages > Networking application)openssl
:(Target packages > Libraries > Crypto)
安装wpa_supplicant需要安装openssl
3.2 安装dropbear:scp远程拷贝命令
网络通了以后就可以配置一下远程拷贝命令了,虚拟机和开发板在同一个网段就可以使用scp命令进行数据传输了:
scp file-name.txt root@192.168.1.110:/home
注意:安装了dropbear还需要打开:
Target packages >
--> Miscellaneous
--> [*] haveged
否则上电的时候会很卡,大概会卡1分钟左右,如果是openssh的话会卡3分钟。
安装dropbear很简单,如下图选上就可以了:
3.2 安装播放视频音频相关的软件
alsa-lib
:(Target packages > Libraries > Audio/Sound > alsa-lib)alsa-utils
:(Target packages > Audio and video applications)mplayer
:buildroot2020 没有这个了!!
3.2.1 选择安装 tinyalsa
安装tinyalsa,否则无法调声音。
# find ./ -name "tinymix"
./usr/bin/tinymix
3.2.2 选择安装:alsa-lib
选中 alsa-lib,否则没声音
3.2.3 选择安装:alsa-utils
3.3 buildroot 2020添加mplayer
3.3.1 选择安装:mplayer
我使用的buildroot2020没有这个包,我从buildroot2017里面拷贝这个文件包来试一试:
文件:buildroot-2020.02.4/package/Config.in
source "package/mpg123/Config.in"
source "package/mplayer/Config.in"
source "package/mpv/Config.in"
可以配置了!
3.3.2 Buildroot里面添加mplayer
有报错
liefyuan@ubuntu:~/Liefyuan/cherry-pi/buildroot-2020.02.4$ sudo time make -j16
[sudo] password for liefyuan:
Makefile.legacy:9: *** "You have legacy configuration in your .config! Please check your configuration.". Stop.
Command exited with non-zero status 2
0.03user 0.02system 0:00.06elapsed 93%CPU (0avgtext+0avgdata 12324maxresident)k
10248inputs+80outputs (29major+11499minor)pagefaults 0swaps
有建议:
Config.in.legacy 移除 MPLAYER 试一试
buildroot-2020.02.4$ vim Config.in.legacy
1814行:注释掉以下
#config BR2_PACKAGE_MPLAYER
# bool "mplayer package removed"
# select BR2_LEGACY
# help
# The mplayer package was removed.
#config BR2_PACKAGE_MPLAYER_MPLAYER
# bool "mplayer package removed"
# select BR2_LEGACY
# help
# The mplayer package was removed.
#config BR2_PACKAGE_MPLAYER_MENCODER
# bool "mplayer package removed"
# select BR2_LEGACY
# help
# The mplayer package was removed.
#config BR2_PACKAGE_LIBPLAYER_MPLAYER
# bool "mplayer support in libplayer removed"
# select BR2_LEGACY
# help
# The mplayer package was removed.
- 然后
make menucofig
- 最后记得
save
一下!一定要记得,不然还是无法编译!
最后
以上就是魁梧菠萝为你收集整理的全志V3s学习记录(9)buildroot文件系统构建一、不要慌一步一步来二、基本配置三、Target packages配置的全部内容,希望文章能够帮你解决全志V3s学习记录(9)buildroot文件系统构建一、不要慌一步一步来二、基本配置三、Target packages配置所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复