Linux rootfs:编译buildroot-2020.02.9构建根文件系统

环境准备

  • PC:Ubuntu 16.04
  • Soc:imx6ull
  • Linux kernel:4.1.15
  • toolchains:arm-linux-gnueabihf-gcc 4.9.4
  • buildroot:2020.02.9 (点击下载

1、编译


1.1 编译说明

参考buildroot官方说明文档docs/manual/manual.pdf的第4章Buildroot quick start,在编译时与内核或busybox的编译类似,都可以执行make menuconfig进行配置后执行make编译。另外在8.11章节中提及-jN多线程编译问题,指明了多线程编译buildroot是在2020年2月才开始的实验性支持,所以还是不推荐使用-jN编译,以免出现其他问题。

在编译buildroot过程中,有一部分内容就是下载源码,而且下载速度可能会稍微有点慢,不过可以通过编译时的网址提示信息去手动下载后放到dl目录下对应的路径中,然后重新编译。对于2020.02.9版本所需要的源码如下(点击下载):

buildroot-2020.02.9/dl/
├── acl
│   └── acl-2.2.53.tar.gz
├── attr
│   └── attr-2.4.48.tar.gz
├── autoconf
│   └── autoconf-2.69.tar.xz
├── automake
│   └── automake-1.15.1.tar.xz
├── busybox
│   └── busybox-1.31.1.tar.bz2
├── e2fsprogs
│   └── e2fsprogs-1.45.6.tar.xz
├── fakeroot
│   └── fakeroot_1.20.2.orig.tar.bz2
├── libtool
│   └── libtool-2.4.6.tar.xz
├── libzlib
│   └── zlib-1.2.11.tar.xz
├── m4
│   └── m4-1.4.18.tar.xz
├── patchelf
│   └── patchelf-0.9.tar.bz2
├── pkgconf
│   └── pkgconf-1.6.1.tar.xz
└── util-linux
    └── util-linux-2.35.1.tar.xz
1.2 编译步骤
tar xjvf buildroot-2020.02.9.tar.bz2
cd buildroot-2020.02.9/
make menuconfig  # 配置在后面
make
ls -l output/images/

IMX6ULL的menuconfig配置如下(也可以查看configs目录下是否已支持目标板进行参考):

Target options  --->   # 根据目标板的CPU进行配置
	  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)  --->                    
Toolchain  --->   # 配置交叉编译工具链,一般使用自己的,以免下载太长时间等问题
	  Toolchain type (External toolchain)  --->
	  Toolchain (Custom toolchain)  ---> 
	  Toolchain origin (Pre-installed toolchain)  ---> 
	  (/home/book/gcc-linaro-4.9.4_arm-linux-gnueabihf) Toolchain path
	  ($(ARCH)-linux-gnueabihf) Toolchain prefix
	  External toolchain gcc version (4.9.x)  ---> 
	  External toolchain kernel headers series (4.0.x)  --->
	  External toolchain C library (glibc/eglibc)  --->
  [*] Toolchain has SSP support?
  [*] Toolchain has RPC support?
  [*] Toolchain has C++ support? 
  [*] Enable MMU support
System configuration  --->   # 配置开机欢迎语和密码等
	  (buildroot) System hostname
	  (Welcome to Buildroot) System banner
  [*] Enable root login with password
	  (123456) Root password
Kernel  --->   # 一般不使用
  [ ] Linux Kernel
Filesystem images  --->   # 根据需要选择文件系统镜像类型
  [*] ext2/3/4 root filesystem
	  ext2/3/4 variant (ext4)  --->
Bootloaders  --->   # 一般不使用
  [ ] U-Boot

2、buildroot第三方支持


buildroot如果没有第三方程序和库的支持,那和busybox相比就不能彰显它的强大之处了。在buildroot中,根据实际的需求在make menuconfig时选中对应的功能,在编译的时候就会联网去下载相关源码来编译,免去了我们手动移植的步骤,相当方便。这些第三方支持的配置路径就在:Target packages —>


3、其他配置


3.1 修改环境变量“PS1”优化命令提示符
--- a/system/skeleton/etc/profile
+++ b/system/skeleton/etc/profile
@@ -8,6 +8,9 @@ if [ "$PS1" ]; then
        fi
 fi

+# It will display "user name", "host name" and "$/ #" (depending on whether you are root or not).
+export PS1='[\u@\h]:\w\$ '
+
 export EDITOR='/bin/vi'

 # Source configuration files from /etc/profile.d

猜你喜欢

转载自blog.csdn.net/weixin_44498318/article/details/113434958