从零开始编译buildroot
硬件平台:迅为i.MX6ul开发板
接下来我们就开始学习怎样一步一步配置buildroot,使用命令:
make menuconfig
进入配置界面
1、配置 Target options
首先配置Target options 选项,需要配置的项目和其对应的内容如下:
Target options
-> Target Architecture = ARM (little endian)
-> Target Binary Format = ELF
-> Target Architecture Variant = cortex-A7
-> Target ABI = EABIhf
-> Floating point strategy = NEON/VFPv4 -> ARM instruction set = ARM
配置好如下图:
2、配置 Toolchain
此配置项用于配置交叉编译工具链,也就是交叉编译器,这里设置为我们自己所使用的交叉编译器即
可。buildroot 其实是可以自动下载交叉编译器的,但是都是从国外服务器下载的,鉴于国内的网络环境,
强烈推荐大家设置成自己所使用的交叉编译器。需要配置的项目和其对应的内容如下:
Toolchain
-> Toolchain type = External toolchain
-> Toolchain = Custom toolchain //用户自己的交叉编译器
-> Toolchain origin = Pre-installed toolchain //预装的编译器
-> Toolchain path = /usr/local/arm/gcc-linaro-5.5.0-.10-x86_64_arm-linux-gnueabihf
-> Toolchain prefix = $(ARCH)-linux-gnueabihf //前缀
-> External toolchain gcc version = 5.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) //选中
Toolchain:设置为 Custom
toolchain,使用用户自己的交叉编译器。
Toolchain
origin:设置为
Pre-installed toolchain,使用预装的交叉编译器。
Toolchain
path:交叉编译器绝对路径。
Toolchain
prefix:设置交叉编译器前缀,arm-linux-gnueabihf-gcc。
配置好如下图:
3、配置 System configuration
此选项用于设置一些系统配置,比如开发板名字、欢迎语、用户名、密码等。需要配置的项目和其对
应的内容如下:
System configuration
-> System hostname = iTOP-IMX6UL //平台名字,自行设置
-> System banner = Welcome to iTOP-IMX6UL //欢迎语
-> Init system = BusyBox //使用busybox
-> /dev management = Dynamic using devtmpfs + mdev //使用
mdev
-> [*] Enable root login with password (NEW) //使能登录密码
-> Root password = topeet //登录密码为topeet
在System configuration 选项中可以配置平台名字,登录密码等信息。
配置好如下图:
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
由于从网上下载内核源码和uboot然后编译他们比较耗费时间,而且新下载的内核源码,与uboot没有
我们开发板的配置信息,所以需要禁用它们。
禁止Linux 内核的编译,配置如下:
> Kernel
-> [ ] Linux Kernel //不要选择编译Linux Kernel选项!
接着禁止编译Uboot,配置如下:
-> Bootloaders
-> [ ] U-Boot //不要选择编译U-Boot选项!
6、配置 Target packages
此选项用于配置要选择的第三方库或软件、比如alsa-utils、iperf 等工具,但是现 在我们先不选
择第三方库,先编译一下最基本的根文件系统,如果没有问题的话再重新配置选择第三方库和软件。否则
编译出问题的时候都不知道怎么找问题。
接下来重要的一步检查自己的交叉编译,默认支持的内核版本。输入命令:
vim
/usr/local/arm/gcc-linaro-5.5.0-.10-x86_64_arm-linux-gnueabihf/arm-linux-gnueabihf/libc/usr/include/linux/
version.h
如图:
如上图所示LINUX_VERSION_CODE 为 262144,此值为 10 进制,转换为 16 进制为 40000,对应的 linux
内核版本为4.0.x,在此要把该值改为与 buildroot 中配置的一致,即为 4.1.x,转换为 16 进制为 40100,
对应的十进制为262400。(不这样的话会报错)。
使用命令“make”进行编译,等待编译完成,编译完成以后就会在buildroot-.02.3/output/images
下生成根文件系统。进入到images,可以见生成的 rootfs.tar,我们新建一个 system 文件夹。
将rootfs.tar 拷贝到 system 下解压,并删去原来的rootfs.tar。得到文件如下图所示:
使用命令“vim ./etc/profile”为开发板终端这是名称和路径显示功能。
添加以下内容如图:
PS1='[$USER@$HOSTNAME]$PWD# '
PATH=$PATH
HOSTNAME=`/bin/hostname`
export USER LOGNAME PS1 PATH
保存,退出。
使用命令:
tar -vcjf rootfs.tar.bz2 ./*
“ls”命令查看如图:
将生成的rootfs.tar.bz2 替换烧写工具中的文件系统烧写到开发板,验证其正确性。
烧写成功后启动如图: