IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> 用Buildroot构建文件系统、u-boot和kernel镜像并介绍如何使用Buildroot构建一个适合100ask_imx6ull系列开发板的嵌入式Linux系统 -> 正文阅读

[系统运维]用Buildroot构建文件系统、u-boot和kernel镜像并介绍如何使用Buildroot构建一个适合100ask_imx6ull系列开发板的嵌入式Linux系统

一、准备工作:
①确保你的Ubuntu下载安装了软件,比如ssh和nfs服务,确保Ubuntu能够ping通外网
②将含有u-boot、kernel和rootfs和工具链的压缩文件拷贝Ubuntu(最好在线使用git下载,不然可能不是最新的)

二、解压编译Bootloader
Bootloader介绍:Bootloader是在操作系统运行之前运行的一段代码,用于引导操作系统。通常每个操作系统都有一组专属的引导加载程序。引导加载程序通常可以通过多种方式引导操作系统内核,还有各种命令用于调试或修改内核运行环境。
U-Boot是一个开源的主引导加载程序,用于引导设备的操作系统内核,并含有多种命令以便调试系统。它适用于多种计算机体系结构,包括68k,ARM,Blackfin,MicroBlaze,MIPS,Nios,SuperH,PPC,RISC-V和x86

补充:bootloader 与 uboot的区别:
BootLoader是嵌入式设备中用来启动操作系统内核的一段程序。

uboot(universal(普遍的) bootloader)是一种可以用于多种嵌入式CPU的BootLoader程序,换言之,uboot是bootloader的一个子集。

uboot的核心作用就是启动操作系统内核,uboot的本质就是一段裸机程序。

编译u-boot镜像:

补充: 不同的开发板对应不同的配置文件,配置文件位于u-boot源码的configs/目录下

①解压含有u-boot、kernel和rootfs和工具链的压缩文件(解压缩时请不要用sudo 命令,否则后面编译会有一系列错误发生)

7z  x  100ask_imx6ull-sdk.7z		

解压查看100ask_imx6ull-sdk中有如下文件

如果没有 7z命令,执行以下命令下载安装

sudo apt-get install p7zip

cd Uboot-2017.03		//进入Uboot-2017.03目录
make distclean			//清除上次的make命令所产生的object文件(后缀为“.o”的文件)及可执行文件,同时也将configure生成的文件全部删除掉,包括Makefile文件
make  mx6ull_14x14_evk_defconfig 		//通过make指定配置文件,在Uboot-2017.03/configs目录下
make

过程:
在这里插入图片描述
编译完成后生成的文件如下图所示
在这里插入图片描述
编译完成之后生成u-boot-dtb.imx,可以用于TF和EMMC启动

三、编译Linux kernel(内核)
①编译内核

cd Linux-4.9.88	
make mrproper		//删除之前编译所生成的文件和配置文件,备份文件
make 100ask_imx6ull_defconfig		//指定配置文件
make zImage  -j4		//配置内核镜像
make dtbs				//配置设备树
cp arch/arm/boot/zImage ~/nfs_rootfs		//将内核镜像拷贝到板子挂载的文件夹中备用
cp arch/arm/boot/dts/100ask_myir_imx6ull_mini.dtb  ~/nfs_rootfs

编译完成后,在arch/arm/boot目录下生成zImage内核文件, 在arch/arm/boot/dts目录下生成设备树的二进制文件100ask_imx6ull-14x14.dtb

②编译内核模块
进入内核源码目录后,就可以编译内核模块了

cd ~/100ask_imx6ull-sdk/Linux-4.9.88/		
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf-  modules		//编译内核模块

没出现错误即为成功

③安装内核模块到Ubuntu某个目录下备用

cd ~/100ask_imx6ull-sdk/Linux-4.9.88/
sudo make  ARCH=arm INSTALL_MOD_PATH=/home/book/nfs_rootfs modules_install		//安装内核模块到/home/book/nfs_rootfs目录下备用

④确认开发板挂载Ubuntu目录成功之后,执行一下命令

cp  /mnt/zImage  /boot
cp  /mnt/*.dtb   /boot
cp  /mnt/lib/modules  /lib  -rfd

重启开发板,它就可以使用新的zImage、dtb、内核模块了

四、用Buildroot构建根文件系统

补充:
Buildroot是由Makefile脚本和Kconfig配置文件构成的,对于构建内核、u-boot,它是需要写好脚本,从芯片厂家提供的下载链接,下载 对应的内核、u-boot,然后按照Makefile脚本等配置文件来实现对内核、u-boot的移植。buildroot唯一通过自身代码实现的就是构建根文件系统

cd Buildroot_2020.02.x 
make clean		//清除上次的make命令所产生的object文件(后缀为“.o”的文件)及可执行文件
make 100ask_imx6ull_pro_ddr512m_systemV_qt5_defconfig		//指定配置文件
make all		//all这个伪目标是所有目标的目标,其功能一般是编译所有的目标

编译时间很长,大概四五个小时,Be patient.

②编译完成的部分反馈
在这里插入图片描述
编译成功后文件输出路径为 output/images
在这里插入图片描述
Buildroot编译完成之后生成的rootfs.tar.bz2,可以解压之后放到NFS服务器上作为NFS ROOT文件系统供开发板使用。使用NFS文件系统,便于程序的开发调试。所谓NFS服务器,就是我们在VMWare上运行的Ubuntu。

  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2022-03-10 23:03:00  更:2022-03-10 23:04:25 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/16 3:44:32-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码