Buildroot 根文件系统构建

目录

1.buildroot 下载

2.配置 buildroot

1、配置 Target options  

​编辑 2、配置 Toolchain

3、配置 System configuration

4、配置 Filesystem images

5、禁止编译 Linux 内核和 uboot

6、配置 Target packages

3.编译 buildroot

4.buildroot 第三方软件和库的配置

1、使能 alsa-lib

​编辑2、使能 alsa-utils

 5.buildroot 下的 busybox 配置

1.busybox 配置

2.busybox 中文字符的支持

3.编译 busybox

 4.问题解决


 

1.buildroot 下载

buildroot 源码肯定是要从 buildroot 官网下载,官网地址为 https://buildroot.org/

2.配置 buildroot

拷贝完成以后对其进行解压,命令如下:
tar -vxjf buildroot-2019.02.6.tar.bz2
解压完成以后就会得到一个名为“ buildroot-2019.02.6 ”的目录,此目录就是我们解压得到
buildroot 源码,
buildroot uboot Linux kernel 一样也支持图形化配置,输入如下命令即可打开图形化配
置界:
make menuconfig

接下来我们就依次配置 buildroot,配置完成以后就可以进行编译了。

1、配置 Target options  

 2、配置 Toolchain

此配置项用于配置交叉编译工具链,也就是交叉编译器,这里设置为我们自己所使用的交
叉编译器即可。 buildroot 其实是可以自动下载交叉编译器的,但是都是从国外服务器下载的,
鉴于国内的网络环境,强烈推荐大家设置成自己所使用的交叉编译器。需要配置的项目和其对
应的内容如下:
Toolchain 下几个比较重要的选项需要说明一下,如下所示:
Toolchain :设置为 Custom toolchain ,表示使用用户自己的交叉编译器。
Toolchain origin :设置为 Pre-installed toolchain ,表示使用预装的交叉编译器。
Toolchain path :设置自己安装的交叉编译器绝对路径! buildroot 要用到。
Toolchain prefix :设置交叉编译器前缀,要根据自己实际所使用的交叉编译器来设置,比
如我们使用的是 arm-linux-gnueabihf-gcc ,因此前缀就是 $(ARCH)-linux-gnueabihf ,其中 ARCH
我们前面已经设置为了 arm

3配置 System configuration

此选项用于设置一些系统配置,比如开发板名字、欢迎语、用户名、密码等。需要配置的
项目和其对应的内容如下:

 System configuration 选项中可以配置平台名字,登录密码等信息。

4、配置 Filesystem images

此选项配置我们最终制作的根文件系统为什么格式的,配置如下:
对于 I.MX6U 来说此选项不用配置,因为我们是通过 Mfgtool 工具将根文件系统烧写到开
发板上的 EMMC/SD 卡中,烧写的时候需要自己对根文件系统进行打包。

5、禁止编译 Linux 内核和 uboot

buildroot 不仅仅能构建根文件系统,也可以编译 linux 内核和 uboot 。当配置 buildroot ,使
linux 内核和 uboot 以后 buildroot 就会自动下载最新的 linux 内核和 uboot 源码并编译。但是
我们一般都不会使用 buildroot 下载的 linux 内核和 uboot ,因为 buildroot 下载的 linux uboot
官方源码,里面会缺少很多驱动文件,而且最新的 linux 内核和 uboot 会对编译器版本号有要
求,可能导致编译失败。因此我们需要配置 buildroot ,关闭 linux 内核和 uboot 的编译,只使用
buildroot 来构建根文件系统,首先是禁止 Linux 内核的编译,配置如下:

 

接着禁止编译 Uboot,配置如下:

 

6、配置 Target packages

3.编译 buildroot

配置完成以后就可以编译 buildroot 了,编译完成以后 buildroot 就会生成编译出来的根文件
系统压缩包,我们可以直接使用。输入如下命令开始编译:
sudo make // 注意,一定要加 sudo ,而且不能通过 -jx 来指定多核编译!!!

buildroot 编译的时候会先从网上下载所需的软件源码,有些软件源码可能下载不下来,这
个时候就需要我们自行处理,这个后面会详细的讲解。
buildroot 编译过程会很耗时,可能需要几个小时,请耐心等待!
buildroot 因为要从网上下载源码,因此可能存在有些源码无法下载或下载很慢的情况,
我 们 可 以 自 行 到 https://cmake.org/files/v3.8/cmake-3.8.2.tar.gz 这个网站上去将 cmake-3.8.2.tar.gz 这个源码下载下 来,然后拷贝到 Ubuntu buildroot 源码目录下的 dl 文件夹中, dl 文件夹专用用于存放下载下 来的源码。
等待编译完成,编译完成以后就会在 buildroot-2019.02.6/output/images 下生成根文件系统,
从图 A1.2.2.2 可以看出,编译出来了多种格式的 rootfs ,比如 ext2 ext4 ubi 等。其中
rootfs.tar 就是打包好的根文件系统,我们就使用 rootfs.tar 进行测试。在 nfs 目录下新建一个名
buildrootfs 的文件夹,然后将图 A1.2.2.2 中的 rootfs.tar 拷贝到 buildrootfs 目录下并解压,命
令如下:
cd /home/zuozhongkai/linux/nfs //进入到 nfs 目录下
mkdir buildrootfs //创建 buildrootfs 目录
cd buildrootfs //进入到 buildrootfs 目录
cp ../../IMX6ULL/tool/buildroot-2019.02.6/output/images/rootfs.tar ./ //拷贝到 rootfs.tar
tar
tar -vxf rootfs.tar //解压缩 rootfs.tar
rm rootfs.tar //删除 rootfs.tar

首先要进入到 /lib/modules 目录,但是默认没有,因此需要我们自行创建
此目录。 buildroot 构建的根文件系统启动以后会输出我们前面设置的欢迎语“ Welcome to alpha
i.mx6ull ”。然后需要输入用户名和密码,用户名是“ root ”,密码就是我们前面配置 buildroot
时候设置的“ 123456 ”。输入用户名和密码以后就可以进入系统中.

4.buildroot 第三方软件和库的配置

我在前面学习的时候需要自行移植一些第三方的库和软件,比如 alsa-lib alsa-utils 等等,
现在我们不需要自行移植这些第三方软件和库了,可以直接在 buildroot 里面配置使能。比如我
们现在配置使能 alsa-lib alsa-utils 这两个软件和库。

1、使能 alsa-lib

2、使能 alsa-utils

注意,以前自己添加的文件并不会被删除掉的,
解压命令如下:
tar -vxf rootfs.tar

 5.buildroot 下的 busybox 配置

1.busybox 配置

buildroot 在构建根文件系统的时候也是要用到 busybox 的,既然用到了 busybox 那么就涉
及到 busybox 的配置。 buildroot 会自动下载 busybox 压缩包, buildroot 下载的源码压缩包都存
放在 /dl 目录下,在 dl 目录下就有一个叫做“ busybox ”的文件夹,此目录下保存着 busybox
缩包,如图 A1.4.1.1 所示:
要想编译 busybox ,必须对图 A1.4.1.1
中的压缩包进行解压缩, buildroot 将所有解压缩后的软件保存在 /output/build 软件中,我们可以
在找到 /output/build/busybox-1.29.3 这个文件夹,此文件夹就是解压后的 busybox 源码,文件内
容如图 A1.4.1.2 所示:
如果大家想要修改 busybox 源码的话就直接在图 A1.4.1.2 中找到相应的文件,然后修改即
可。我们现在是要配置 buildroot 下的 busybox ,因此肯定要打开 busybox 的配置界面,在 buildroot
下打开 busybox 的配置界面输入如下命令:
sudo make busybox-menuconfig

 输入以后就会打开 buildroot 下的 busybox 配置界面,如图 A1.4.1.3 所示:

A1.4.1.3就是我们最熟悉的busybox配置界面了,大家想要配置什么就直接操作就行了,

2.busybox 中文字符的支持

3.编译 busybox

配置好以后就可以重新编译 buildroot 下的 busybox ,进入到 buildroot 源码目录下,输入如
下命令查看当前 buildroot 所有配置了的目标软件包,也就是 packages
sudo make show-targets
如 果我们想单独编译并安装 busybox 的话执行下面命令即可:
sudo make busybox

上述命令就会重新编译 busybox 。编译完成以后重新编译 buildroot ,主要是对其进行打包,
输入如下命令:
sudo make
重新编译完成以后查看一下 output/images 目录下 rootfs.tar 的创建时间是否为刚刚编译的,
如果不是的话就删除掉 rootfs.tar ,然后重新执行“ sudo make ”重新编译一下即可。最后我们使
用新的 rootfs.tar 启动 Linux 系统。

 4.问题解决

我们使用构建的根文件系统启动以后会发现,输入命令的时候命令行前面一直都是“# ”,如果我们进入到某个目录的话前面并不会显示当前 目录路径,如图 A1.5.1 所示:
从图 A1.5.1 可以看出,我们当前所处的目录是 /etc ,但是前面的提示符一直是“ # ”,这样不
利于我们查看自己当前所处的路径。最好能像 Ubuntu 一样,可以指出当前登录的用户名,主机
名以及所处的目录,
我们现在就来设置,实现图 A1.5.2 中所示的效果。我们要先了解一下“ PS1 ”这个环境变
量, PS1 用于设置命令提示符格式,格式如下:
PS1 = ‘命令列表’
命令列表中可选的参数如下:
\! 显示该命令的历史记录编号。
\# 显示当前命令的命令编号。
\$ 显示 $ 符作为提示符,如果用户是 root 的话,则显示 # 号。
\\ 显示反斜杠。
\d 显示当前日期。
\h 显示主机名。
\n 打印新行。
\nnn 显示 nnn 的八进制值。
\s 显示当前运行的 shell 的名字。
\t 显示当前时间。
\u 显示当前用户的用户名。
\W 显示当前工作目录的名字。
\w 显示当前工作目录的路径

我们打开/etc/profile 文件,找到如下所示内容,然后将其屏蔽掉:

3 if [ "$PS1" ]; then
4 if [ "`id -u`" -eq 0 ]; then
5 export PS1='# '
6 else
7 export PS1='$ '
8 fi
9 fi

上述代码就是原始的设置 PS1 环境变量的配置代码,就是它将命令提示符设置为了固定
的“ # ”,我们将其屏蔽掉,然后输入如下所示内容:
/etc/profile 添加的内容
1 PS1 = '[\u@\h]:\w$:'
2 export PS1

2 行就是设置 PS1 环境变量,格式就是:

[user@hostname]:currentpath$: 

设置好以后的/etc/profile 文件内容如图 A1.5.3 所示:

/etc/profile 文件修改完成以后重启开发板,这个时候我们就如到某个目录的时候命令行就 会有提示,
  • 17
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

hqb_newfarmer

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值