buildroot制作文件系统
PageTitle | MetaDescription | DateApproved | editor |
---|---|---|---|
创建 | buildroot制作文件系统 | 2019/10/15 | 孙小草 |
背景
从 busybox 开始一步一步的构建根文件系统适合学习、了解根文件系统的组成,但是不适合做产品(主要是自己构建的话会有很多不完善、没有注意到的细节)。buildroot 会帮我们处理好各种细节地方,是我们的根文件系统更加的合理、有效。因此大家在做产品的时候推荐大家使用 buildroot 来构建自己的根文件系统。它不仅包含了 busybox 的功能,而且里面还集成了各种软件,需要什么软件就选择什么软件,不需要我们去移植。
开发平台
- Zynq7020核心板
- Ubuntu18.04.3
移植流程
-
配置ubuntu环境
sudo dpkg --add-architecture i386 sudo apt-get update sudo apt-get install libc6:i386 libncurses5:i386 libstdc++6:i386 zlib1g:i386 sudo apt-get install lib32ncurses5 sudo apt-get install lib32z1
-
下载交叉编译工具
- 不可使用apt install所安装的编译工具链,需手动下载
- 下载地址:https://releases.linaro.org/components/toolchain/binaries/latest-7/arm-linux-gnueabihf/
- 本文下载的是gcc-linaro-7.4.1-2019.02-x86_64_arm-linux-gnueabihf.tar.xz
-
下载buildroot
- 下载地址:https://buildroot.org/download.html
- 本文下载的是buildroot-2019.02.7.tar.bz2
-
制作根文件系统
- 解压
tar -xvf gcc-linaro-7.4.1-2019.02-x86_64_arm-linux-gnueabihf.tar.xz tar -jxvf buildroot-2019.02.7.tar.bz2
- 配置
cd buildroot-2019.02.7 sudo make zynq_zed_defconfig sudo make menuconfig 进入配置界面 Toolchain ---> Toolchain type () ---> (X)External toolchain Toolchain () ---> (X)Custom toolchain Toolchain origin () ---> (X)Pre-installed toolchain ()Toolchain path /* 前文下载的交叉编译工具链路径, 例:│/home/win_share/buildroot/gcc-linaro-7.4.1-2019.02-x86_64_arm-linux-gnueabihf*/ ($(ARCH)-linux-gnueabihf)Toolchain prefix External toolchain gcc version(7.x) ---> /* 交叉编译工具链版本 在上述路径执行 ./arm-linux-gnueabihf-gcc -v 查看*/ External toolchain kernel headers series (3.10.x) ---> /* 编译工具链的内核版本 查看文件:交叉编译工具链路径\gcc-linaro-7.4.1-2019.02-x86_64_arm-linux-gnueabihf\arm-linux-gnueabihf\libc\usr\include\linux\version.h #define LINUX_VERSION_CODE 264707 264707 换算成16进制为40A03, 版本号即为4.10.03 */ External toolchain C library (glibc/eglibc) ---> [*] Toolchain has SSP support? [*] Toolchain has RPC support? [*] Toolchain has C++ support? System configuration ---> () System hostname /* 系统名称 自行设定 */ () System banner /* 自行设定 */ [*] Enable root login with password (123456) Root password /* 密码 */ Kernel ---> [ ] Linux Kernel /* 取消选中 */ Target packages ---> Networking applications ---> [*] dropbear /* 提供ssh服务 */ Filesystem images ---> [*] ubi image containing an ubifs root filesystem (0x20000) physical eraseblock size (512) sub-page size [ ] Use custom config file () Additional ubinize options -*- ubifs root filesystem (0x1f000) logical eraseblock size (0x800) minimum I/O unit size (2048) maximum logical eraseblock count Bootloaders ---> [ ] U-Boot /* 取消选中 */
- 编译
sudo make all 编译过程会下载各种插件,如发现下载速度过慢,可根据提示,使用网页下载,将压缩包放至 buildroot 源码目录下的 dl 文件夹中, dl 文件夹专用用于存放下载下来的源码。 编译完成后,会在buildroot-2019.02.6/output/images 下生成根文件系统 rootfs.tar为压缩包,可解压后进行网络挂在测试根文件系统,也可进行修改,使用mkfs.ubifs工具制作根文件系统; root.ubifs为镜像文件,可直接下载测试
注:
- vsftpd服务需要手动修改配置文件
- 命令提示符显示当前完整路径:
修改环境变量PS1,vi编辑/etc/profile文件在最后加上一行语句:
(1)命令行提示符完全显示完整的工作目录名称:
export PS1=’[\u@\h $PWD]$ '
(2)命令行提示符只列出最后一个目录:
export PS1=’[\u@\h \W]$’
(3)命令行提示符显示完整工作目录,当前用户目录会以 ~代替:
export PS1=’[\u@\h \w]$’
修改完成后,执行: source /etc/profile 使配置生效即可。
命令释义:
\u 显示当前用户账号
\h 显示当前主机名
\W 只显示当前路径最后一个目录
\w 显示当前绝对路径(当前用户目录会以 ~代替)
$PWD 显示当前全路径
\$ 显示命令行’$'或者’#'符号