buildroot构建 bootloader、内核、文件系统

简介: buildroot构建 bootloader、内核、文件系统

10 更新(构建) bootloader、内核、文件系统


10.1 准备


Linux平台上有许多开源的嵌入式linux系统构建框架(框架的意思就是工具),这些框架极大的方便了开发者进行嵌入式系统的定制化构建,目前比较常见的有OpenWrt, Buildroot, Yocto,等等。其中Buildroot功能强大,使用简单,而且采用了类似于linux kernel的配置和编译框架,所以受到广大嵌入式开发人员的欢迎。

本章重点介绍使用Buildroot_2019.02LTS版构建文件系统和u-boot, kernel镜像的方法,并从这三个部分入手,描述如何使用Buildroot构建一个适合100ask_imx6ull系列开发板的嵌入式Linux系统。

在构建文件系统时,还简要介绍了如何通过Buildroot将QT5图形系统集成到文件系统中, 方便用户后续开发QT5的应用程序。

注意:确保Ubuntu能ping通外网(比如:ping news.qq.com)。确保可以下载源码、配置工具链。


10.2编译Linux Kernel


10.2.1 Linux内核介绍


10.3开发板使用NFS根文件系统


注意:所谓根文件系统就是类似Windows的C盘,里面存放有必须的APP、库文件、配置文件。通过NFS可以把Ubuntu的某个目录,当作板子的“C盘”──Linux中称之为根文件系统。


Buildroot编译完成之后生成的rootfs.tar.bz2,可以解压之后放到NFS服务器上作为NFS ROOT文件系统供开发板使用。使用NFS文件系统,便于程序的开发调试。所谓NFS服务器,就是我们在VMWare上运行的Ubuntu。

使用NFS根文件文件系统之前时,我们一般还会在u-boot使用tftpboot命令从Ubuntu或Windows中下载内核文件zImage和设备树文件,所以:使用VMware桥接网络时:Ubuntu上既要配置NFS服务,也要配置TFTP服务。

对于Ubuntu,如果你按照《安装Ubuntu软件》章节来安装过Ubuntu的软件,那么NSF和TFTP服务都安装好了。

也可以手工安装这些服务,请参考《在Ubuntu中安装、配置NFS》章节安装NFS服务,参考《Ubuntu安装TFTP服务》章节安装TFTP服务。


10.3.1 准备好文件


使用NFS根文件系统时,涉及3个文件:zImage、设备树(比如100ask_imx6ull-14x14.dtb)、rootfs.tar.bz2(解压到Ubuntu某个目录,比如/home/book/nfs_rootfs)。

在U-Boot中通过tftpboot命令从Ubuntu/Windows中下载内核文件zImagen、100ask_imx6ull-14x14.dtb,设置Uboot启动参数使用Ubuntu的某个目录(比如/home/book/nfs_rootfs)作为根文件系统。


拷贝内核和设备树文件到tftp目录


如果使用VMware桥接网络,将出厂镜像或者自行编译的zImage和设备树文件100ask_imx6ull-14x14.dtb,拷贝到Ubuntu的 /home/book/tftpboot 目录。


把根文件系统压缩包解压到NFS目录


把使用buildroot构建得到的根文件系统rootfs.tar.bz2(在buildroot系统output/images目录下),复制、解压到Ubuntu的/etc/exports文件中指定的目录里,即复制到/home/book/nfs_rootfs目录下,并解压(注意:解压时要用sudo):

book@100ask:~/100ask_imx6ull-sdk/Buildroot_2020.02.x/output/images$ cp -rf  rootfs.tar.bz2  ~/nfs_rootfs/
book@100ask:~/100ask_imx6ull-sdk/Buildroot_2020.02.x/output/images$ cd ~/nfs_rootfs
book@100ask:~/nfs_rootfs$ sudo tar  xjf  rootfs.tar.bz2


10.3.2 进入uboot界面


使用mobaxterm工具打开开发板串口,此时将开发板上电,在打印u-boot时按下任意键进入uboot界面。

1670850970788.jpg

对于IMX6ULL MINI EMMC版,可以进入uboot 使用dhcp 命令获取IP,如果无法动态获取IP可以通过参考下图使用 reset命令来重启系统,重启系统后会提示发现Net设备,此时就可以继续执行tftp命令和nfs挂载命令启动系统。

1670850979486.jpg


10.3.2.1 测试开发板与Ubuntu/Windows是否联通


查看Ubuntu系统IP地址,如下图所示在Ubuntu系统终端里使用 ifconfig查看所有网络设备的信息,获取到当前网卡设备的IP地址为 192.168.1.244 (也就意味着改IP地址的网段是192.168.1.1)

1670850999258.jpg

先在u-boot中设置开发板IP为192.168.1.112,然后在u-boot中使用ping命令测试开发板与Ubuntu系统是否连通(出现“alive”就表示联通):命令如下:

=> setenv ipaddr 192.168.1.112
=> ping 192.168.1.224


如果提示 host is alive 就表示开发板和Ubuntu系统可以互通,截图示例如下所示。


10.3.2.2 使用网络启动文件系统


注意:Uboot只能使用eth0,网线必须接入eth0,如下:

1670851026669.jpg

先在Ubuntu的TFTP目录中放入zImage和设备树文件,再在/home/book/nfs_rootfs目录下解压好根文件系统。

然后在U-Boot控制台执行以下命令启动单板,假设Ubuntu IP是192.168.1.224:

=> setenv serverip 192.168.1.224     //设置服务器的IP地址,这里指的是Ubuntu主机IP
=> setenv ipaddr 192.168.1.112   //设置开发板的IP地址。
=> setenv nfsroot /home/book/nfs_rootfs   //设置nfs文件系统所在目录。
=> run netboot    //设置完成后,运行网络启动系统命令

1670851035234.jpg


相关文章
|
4月前
|
存储 固态存储 Linux
Linux内核学习(二):Bootloader
Linux内核学习(二):Bootloader
67 0
|
3月前
|
Ubuntu Linux 虚拟化
Linux下的IMX6ULL——构建bootloader、内核、文件系统(四)
Linux下的IMX6ULL——构建bootloader、内核、文件系统(四)
100 0
Linux下的IMX6ULL——构建bootloader、内核、文件系统(四)
|
19天前
|
存储 缓存 监控
Linux 文件系统目录结构详解
本文介绍了Linux文件系统的目录结构,包括`/bin`、`/boot`、`/dev`、`/etc`、`/home`、`/lib`、`/media`、`/mnt`、`/opt`、`/proc`、`/root`、`/sbin`、`/tmp`、`/usr`和`/var`等目录的用途和重要性。每个目录都有其特定的功能,例如`/bin`存放基本用户命令,`/boot`存储启动相关文件,`/home`是用户主目录,`/lib`包含共享库,`/proc`提供进程信息,`/usr`存储用户程序资源,而`/var`则用于可变数据如日志文件。理解这些目录的用途有助于更好地管理和使用Linux系统。
Linux 文件系统目录结构详解
|
10月前
|
Ubuntu Linux 编译器
根文件系统移植:bulidroot根文件系统搭建详细步骤
根文件系统移植:bulidroot根文件系统搭建详细步骤
361 0
|
安全 Linux 调度
嵌入式系统中bootloader、kernel、rootfs 介绍
嵌入式系统中bootloader、kernel、rootfs 介绍
344 0
|
Ubuntu
使用debootstrap构建制作aarch64/arm64 Debian rootfs文件系统
使用debootstrap构建制作aarch64/arm64 Debian rootfs文件系统
1102 0
|
Ubuntu Java
Buildroot 扩展文件系统大小
Buildroot 扩展文件系统大小
342 0
|
Linux Shell 索引
[ linux ] 文件系统和目录结构详解
昨天,有个小学弟了我一个linux面试题目,和她解答完之后我就想在C站开一个专栏,用于linux和windows的学习 我是这么想的,从linux入手,再写windows,最后总结常见区别 本文主要写了linux的文件结构介绍、linux文件系统的介绍、linux文件系统的基本操作,快捷键,通配符等等 下篇文章会写都文件的具体操作命令
348 0
[ linux ] 文件系统和目录结构详解
|
存储 Unix Linux
Linux根文件系统(rootfs原理详解)(上)
Linux根文件系统(rootfs原理详解)(上)
518 0
|
存储 Linux Shell
Linux根文件系统(rootfs原理详解)(中)
Linux根文件系统(rootfs原理详解)(中)
1587 0