buildroot制作跟文件系统
1、提供源码下载地址buildroot官网源码上面红色标记处进入历史版本选择: 笔者选择的是buildroot-2019.02.6.tar.bz2 这个版本2、下载与解压下载后拷贝至服务器或者虚拟机上;解压命令: tar vxjf buildroot-2019.02.6.tar.bz2上面就是buildroot源码3、 这个是支持图形化配置界面的 执行 make menuconfig提示如下错误
1、提供源码下载地址 buildroot官网源码
上面红色标记处进入历史版本选择: 笔者选择的是buildroot-2019.02.6.tar.bz2 这个版本
2、下载与解压
下载后拷贝至服务器或者虚拟机上;
解压命令: tar vxjf buildroot-2019.02.6.tar.bz2
上面就是buildroot源码
3、 这个是支持图形化配置界面的 执行 make menuconfig
提示如下错误 :
使用sudo后成功:
接下来依次配置每个选项即可;
4、配置buildroot; 网上有很多配置教程
先介绍我的单板硬件情况: xilinx zcu102的板子; cortex-A53架构 64bit
1》 Target options
2》Toolchain 这个是配置交叉编译工具的
配置参数含义如下:
配置 | 参数 | 备注 |
-> Toolchain type | = External toolchain | 使用外部工具(自己安装的) |
->Toolchain | Custom toolchain | 表示我们使用我们自己的工具 |
Toolchain origin | Pre-installed toolchain | 使用预装的工具 |
Toolchain path | /tools/xilinx-v2018.3/linux-i386/aarch64-linux-gnu | 工具的路径 |
Toolchain prefix | $(ARCH)--linux-gnu | 交叉编译器前缀 |
External toolchain gcc version | 7.X | 交叉编译器版本 |
External toolchain kernel headers series | 4.9.x | 这个我也没搞懂 |
External toolchain C library | glibc/eglibc | C库 |
Toolchain has SSP support | 选中 | |
Toolchain has C++ support | 选中 | |
Enable MMU support | 选中 |
3》System configuration
配置项 | 参数 | 备注 |
Root FS skeleton | default target skeleton | 选择默认项 |
System hostname | 任意 | 就是文件系统起来之后的前缀显示 |
System banner | 任意 | 进入系统前的打印语句 |
Passwords encoding | sha-512 | |
Init system | BusyBox | 系统初始化 BusyBox |
/dev management | Dynamic using devtmpfs + mdev | |
Enable root login with password | 登录文件系统所需要的账号 | |
Root password | 登录所需要的密码 | |
/bin/sh | busybox' default shell | 选择默认的shell |
Run a getty (login prompt) after boot | 默认选中 | |
remount root filesystem read-write during boot | 选中 | |
4》 Kernel:不选中 因为不用这个生成内核镜像
5》Target packages : 编译三方库的先不选择
6》Bootloaders: 这个也先不配置
7》Filesystem images: 配置文件系统镜像
根据自己的需要选择对应的文件系统; 剩下的选择默认就可以了
接下来就是编译: sudo make
遇到的错误:
源码包下载失败:
buildroot编译错误you should not run configure as root (set FORCE_UNSAFE_CONFIGURE=1 in environment to bypass this check)
解决办法:
执行
1、su 回车-----------进入root用户模式
2、export FORCE_UNSAFE_CONFIGUREFORCE_UNSAFE_CONFIGURE=1 回车------设置
3.再次执行指令就可以了
由于我的电脑好像源有问题,下载一些包的时候老是报错:
下载zlib-1.2.11.tar.xz失败
https://osdn.net/projects/sfnet_libpng/downloads/zlib/1.2.11/zlib-1.2.11.tar.xz/
下载util-linux-2.33.tar.xz失败
http://sources.buildroot.net/util-linux/util-linux-2.33.tar.xz
下载e2fsprogs-1.45.4.tar.xz失败
https://cdn.kernel.org/pub/linux/kernel/people/tytso/e2fsprogs/v1.45.4/e2fsprogs-1.45.4.tar.xz
下载attr-2.4.48.tar.gz失败
http://download.savannah.gnu.org/releases/attr/attr-2.4.48.tar.gz
下载acl-2.2.53.tar.gz失败
http://download.savannah.gnu.org/releases/acl/acl-2.2.53.tar.gz
下载
在这里下载失败http://snapshot.debian.org/archive/debian/20141005T221953Z/pool/main/f/fakeroot/fakeroot_1.20.2.orig.tar.bz2
在这里下载成功http://ftp-ext.osuosl.org/debian/pool/main/f/fakeroot/
错误如下:
>>> toolchain-external-custom Configuring
Incorrect selection of kernel headers: expected 4.3.x, got 4.9.x
解决办法:
1、参考https://blog.csdn.net/u012577474/article/details/104621180
4.9.x的版本因该是
2、通过menuconfig 修改 External toolchain kernel headers series 版本号为4.9
错误如下:
>>> toolchain-external-custom Configuring
External toolchain uses the unsuported OABI
if ! echo $aarch64-linux-gnu | grep -qE 'eabi(hf)?$$' ; then
echo "External toolchain uses the unsuported OABI" ;
这里需要指定make ARCH=arm64 不能是arm,我的交叉编译器是aarch64-linux-gnu-gcc 所以平台架构是arm64
最后发现原来在make menuconfig额arch中有arm64 little endpoint选项;
下载失败:
http://www.busybox.net/downloads/busybox-1.29.3.tar.bz2
下载失败patchelf-0.9.tar.bz2
https://nixos.org/releases/patchelf/patchelf-0.9/patchelf-0.9.tar.bz2
下载失败:lzo-2.10.tar.gz
http://www.oberhumer.com/opensource/lzo/download/lzo-2.10.tar.gz
下载失败:
ftp://ftp.infradead.org/pub/mtd-utils/mtd-utils-2.0.2.tar.bz2
从这里下载的
http://sources.buildroot.net/mtd/mtd-utils-2.0.2.tar.bz2
下载失败:
https://github.com/lz4/lz4/archive/v1.8.3/lz4-v1.8.3.tar.gz
下载失败:
http://tukaani.org/xz/xz-5.2.3.tar.bz2
https://sourceforge.net/
解决办法就是手动去网站下载,之后拷贝到 buildroot-2019.02.6/dl 目录,一定是和报错的文件一直的压缩文件,版本不能下载错了;这种方式就是等用用离线包安装;
拷贝后如下:
之后在编译就没遇到什么问题了:sudo make ARCH=ARM64
编译后生成的镜像等文件都在output目录
如果要做定制化再增加一系列东西到根文件系统可以使用target里的,可以根据上面output输出的基本的文件系统再新增,如新增tcpdump 工具 i2ctools等等;最后使用跟文件系统制作工具手动来打包文件系统镜像
如制作squashfs :
/tools/bin/mksquashfs rootfs rootfs.img -b 64K -comp xz -no-xattrs
如制作jiffs2 :
/tools/bin/mkfs.jffs2 -r mnt/xxx -o xxx.img -e 0x10000 --pad=0x4000000
参考文档:
更多推荐
所有评论(0)