By Toradex秦海

1). 简介

ARM嵌入式平台由于其分散性,不同SoC厂商通常都采用互不相同的方式来引导启动系统,这就导致了针对嵌入式ARM平台的系统发行版本也需要根据不同硬件SoC平台进行针对性定制,而不像X86平台(如BIOS或UEFI)或者64-bit ARM服务器平台(如SBSA或SBBR)这样采用标准化的启动引导流程,因此通用桌面级系统发行版本比如SUSE、Redhat或Fedora就很难持续稳定的支持各种嵌入式ARM平台,反而趋势是各个硬件供应商自己定制发布针对自己硬件的系统发布版本(如Raspbian,Bananian,Parabuntu)来绑定用户。

Distro Boot的标准名称是Generic Distro Configuration Concept,项目由U-boot开发者始于2014年左右,目标就是试图用一个标准方法去引导启动不同硬件平台。当在U-boot中打开Distro Boot支持后,只需要将任意支持的系统发布版本镜像文件和一个符合Distro Boot定义的启动配置文件放置于一个分区的可移动设备即可引导设备启动进入系统。

本文就基于NXP最新的iMX8 SoC(基于Cortex-A72+A53和Coretex-M4架构)ARM平台来测试使用Distro Boot机制来引导系统镜像。演示平台来自于Toradex 基于iMX8QM的Apalis iMX8QM ARM嵌入式模块平台。

需要注意的是,由于不同U-boot/Linux kernel版本的兼容性以及iMX8 ARM处理器增加的底层SECO/SCFW固件的存在,可能导致本文测试的内容在其他BSP版本上面无法正常工作,本文仅基于当前测试环境进行distro boot的功能演示参考。

2). 准备

a). Apalis iMX8QM4GBWB IT ARM核心版配合Ioxra 载板,连接调试串口UART1(载板X22)到开发主机方便调试。

b). 参考这里更新Toradex Ycoto Linux BSP V5.3版本BSP image,BSP中包含的U-boot默认以及支持Distro boot。

c). 需要通过U-boot distro boot启动的BSP image,需要包含一个启动配置文件,通常为extlinux.conf或者U-boot专用的boot.scr/boot.scr.uimg文件,关于配置文件的说明请参考这里。

3). Distro boot启动顺序

a). 默认情况下,U-boot(Distro boot 支持)会按照如下顺序扫描启动配置文件extlinux.conf或者boot.scr/boot.scr.uimg

./ 外部SD卡设备

./ 内部eMMC存储设备

./ 外部USB存储设备

./ 外部网络设备

b). 默认扫描顺序和扫描位置由如下U-boot环境变量决定,如有需要可以自行修改

------------------------------------

### default boot devices sequence

boot_targets=mmc1 mmc2 mmc0 usb0 dhcp

### boot partition scanning location

boot_prefixes=/ /boot/

boot_script_dhcp=boot.scr

boot_scripts=boot.scr

boot_syslinux_conf=extlinux/extlinux.conf

------------------------------------

4). 通过外部存储介质加载Toradex Easy Installer测试

a). Toradex Easy Installer是Toradex提供的一个基于Linux/QT开发的图形界面工具,用于将不同类型的操作系统方便直观的安装到Toradex计算机模块的内部eMMC存储上面。

b). 在更新了Linux BSP之后,Toradex Easy Installer即被擦除,如果想重新更新Linux或者其他操作系统,就需要重新将Toradex easy installer加载运行,官方支持的方式是参考这里通过恢复模式操作,而基于当前Toradex Easy Installer V5.3版本配合Ycoto Linux V5.x版本,可以实现通过外部存储介质(SD卡或者U盘)在U-boot环境下直接加载Toradex Easy Installer运行而无需配置恢复模式。

c). 测试流程

./ 从这里下载对应Apalis iMX8模块的Toradex Easy Installer V5.3版本image 压缩包

./ 解压压缩包,可以看到里面以及包含distro boot所需要的启动文件 boot-tezi.scr,将其更名为 boot.scr。然后将文件复制到外部存储介质 / 目录或者 /boot 目录。

------------------------------------

$ unzip Apalis-iMX8_ToradexEasyInstaller_5.3.0+build.3.zip

$ cd Apalis-iMX8_ToradexEasyInstaller_5.3.0+build.3/

$ ls

boot-tezi.scr  image.json  overlays.txt  recovery-linux.sh     tezi.itb  u-boot.bin

hdmitxfw.bin   imx-boot    recovery      recovery-windows.bat  tezi.png  wrapup.sh

$ mv boot-tezi.scr boot.scr

$ cp * /media/simon/<external_storage_mount_point>

------------------------------------

./ 将上述准备好的外部存储介质连接到Ixora载板对应接口,Apalis iMX8 开机从调试串口进入U-boot命令行,执行下面命令启动外部存储介质的Toradex Easy Installer,启动后即可从调试串口看到启动信息,以及连接的显示器看到Toradex Easy Installer应用界面。

------------------------------------

### external SD storage depending on corresponding SD slot

# run bootcmd_mmc1 or run bootcmd_mmc2

### external USB stick

# run bootcmd_usb0

------------------------------------

./ 如上述章节3描述的默认启动扫描顺序,如果是外部SD卡则即使不中断或改动U-boot的启动,只要具备boot.scr文件的SD卡设备插入,就会优先从外部SD卡启动,而对于U盘,如果需要自动启动,则需要修改U-boot环境变量,将USB设备扫描顺序提前。

------------------------------------

# setenv boot_targets 'usb0 mmc1 mmc2 mmc0 dhcp' && saveenv

------------------------------------

5). 通过外部存储介质加载Ycoto Linux BSP测试

a). 首先准备一个足够容量的SD卡或者U盘,本文测试使用一个16GB的Mciro SD卡

b). 在Ubuntu PC下通过fdisk 命令在目标SD卡上面制作如下两个分区

------------------------------------

Disk /dev/sdc:14.9 GiB,15931539456 字节,31116288 个扇区

单元:扇区 / 1 * 512 = 512 字节

扇区大小(逻辑/物理):512 字节 / 512 字节

I/O 大小(最小/最佳):512 字节 / 512 字节

磁盘标签类型:dos

磁盘标识符:0x8a42d42a

设备       启动    起点     末尾     扇区  大小 Id 类型

/dev/sdc1          2048  8390655  8388608    4G  c W95 FAT32 (LBA)

/dev/sdc2       8390656 31116287 22725632 10.9G 83 Linux

------------------------------------

c). 然后通过如下命令分别格式化两个分区,FAT32分区用于存放kernel、device tree等基本boot文件,linux ext3分区用于存放rootfs文件

------------------------------------

$ sudo mkfs.vfat -F 32 -n boot /dev/sdc1

$ sudo mkfs.ext3 -L rootfs /dev/sdc2

------------------------------------

d). 从这里下载适用于Apalis iMX8的Ycoto Linux Multimedia Demo image,然后解压,并分别将Image里面的boot文件和rootfs解压到刚才制作好的SD卡两个分区。Image boot文件中已经包含了boot.scr文件,无需手动创建。

------------------------------------

### 解压缩image

$ tar xvf Apalis-iMX8_Reference-Multimedia-Image-Tezi_5.3.0+build.10.tar

### 解压缩 bootfs、rootfs到SD卡

$ cd Apalis-iMX8_Reference-Multimedia-Image-Tezi_5.3.0+build.10/

$ sudo tar xf Reference-Multimedia-Image-apalis-imx8.bootfs.tar.xz  --no-same-owner -C /media/simon/boot/

$ sudo tar xf Reference-Multimedia-Image-apalis-imx8.tar.xz -C /media/simon/rootfs/

------------------------------------

e). 制作完成后将SD卡插入Ixora载板X10 插槽,启动模块,进入uboot命令行,执行下面命令通过SD卡启动

------------------------------------

### U-boot boot command from external SD cark

Apalis iMX8 # run bootcmd_mmc1

...

### agter booting, check current boot device is indeed external SD devcie - /dev/mmcblk1

root@apalis-imx8:~# df -h

Filesystem      Size  Used Avail Use% Mounted on

/dev/root        11G  1.1G  9.1G  11% /

devtmpfs        1.4G  4.0K  1.4G   1% /dev

tmpfs           1.9G     0  1.9G   0% /dev/shm

tmpfs           1.9G  6.6M  1.9G   1% /run

tmpfs           1.9G     0  1.9G   0% /sys/fs/cgroup

tmpfs           1.9G  844K  1.9G   1% /tmp

tmpfs           1.9G   24K  1.9G   1% /var/volatile

/dev/mmcblk0p1   48M   11M   37M  23% /media/mmcblk0p1

/dev/mmcblk0p2   15G  1.1G   13G   8% /media/mmcblk0p2

/dev/mmcblk1p1  4.0G   11M  4.0G   1% /boot

------------------------------------

f). 另外,如果需要定制boot流程,可以参考这里说明修改boot.scr 文件。

G). 类似的思路,也可以通过创建TFTP/NFS 服务器实现网络启动,具体可以参考这里说明。

6). 总结

本文测试了基于NXP iMX8平台通过Distro Boot功能实现通过外部存储设备启动的方案,另外也可以延申到TFTP/NFS网络启动。不过由于Distro Boot功能兼容性和底层firmware以及uboot/kernel版本息息相关,因此本文测试仅限于当前测试平台和版本,不代表未来软件发生变化后相关功能还一定确认完整。

参考文献

Linux - Distro Boot

Boot From an SD Card / USB Stick / SATA drive

Boot from a TFTP/NFS Server

NXP iMX8 ARM平台Distro Boot使用相关推荐

  1. NXP iMX8和iMX6 ARM处理器网络性能对比

    By Toradex秦海 1). 简介 NXP iMX8已经正式发布,相较于之前NXP i.MX系列的主力产品iMX6,其性能有了大幅提升,本文就针对网络接口对NXP  iMX8和iMX6两款ARM处 ...

  2. NXP iMX8系列处理器Pin Multiplexing定义说明

    By Toradex秦海 1). 简介 为了提高处理器的设计灵活性和可用性,NXP的所有i.MX系列处理器都配备了基于 IOMUX Controller (IOMUXC)和IOMUX来使能Pin Mu ...

  3. linux 定时器中断 imx,NXP iMX8 存储性能测试

    1).简介 NXP iMX8系列应用处理器是NXP发布的基于Cortex-A72/A53/A35和Coretex-M4/M7等架构的ARM处理器,对于存储部分,主要支持MMC 5.1.SD Memor ...

  4. 4G通信模块在ARM平台下的应用

    4G模块是连接物与物的重要载体,是终端设备接入物联网的核心部件之一.随着4G的普及,许多新兴市场对4G通信模块的需求都在日益扩大,那么在ARM平台的嵌入式设备上如何快速的应用4G模块呢? 4G通信模块 ...

  5. 4g通信模块怎么连接sim卡_4G通信模块在ARM平台下的应用

    4G模块是连接物与物的重要载体,是终端设备接入物联网的核心部件之一.随着4G的普及,许多新兴市场对4G通信模块的需求都在日益扩大,那么在ARM平台的嵌入式设备上如何快速的应用4G模块呢? 4G通信模块 ...

  6. 【Linux】交叉编译linux内核到ARM平台

    一.环境 1.主机:ubuntu20.04 2.内核版本:linux5.11.11 3.交叉编译工具链:arm-linux-gnueabihf-gcc 4.目标平台:imx6ull主板 内核源码和交叉 ...

  7. 嵌入式 ARM 平台使用dm-crypt加密磁盘分区

    By Toradex秦海 1). 简介 出于安全考虑,嵌入式设备有时需要将某个数据分区甚至整个文件系统进行加密处理,本文就介绍在嵌入式Linux系统下基于dm-crypt进行加密示例,dm-crypt ...

  8. 嵌入式ARM平台基于Linux配置24bit RGB输出

    By Toradex秦海 1). 简介 嵌入式ARM平台设备采用Embedded Linux操作系统进行开发已经越来越成为主流,本文就着重演示在EmbeddedLinux下配置24bit RGB LC ...

  9. NXP iMX8 存储性能测试

    1). 简介 NXP iMX8系列应用处理器是NXP发布的基于Cortex-A72/A53/A35和Coretex-M4/M7等架构的ARM处理器,对于存储部分,主要支持MMC 5.1.SD Memo ...

  10. 在 NXP iMX8 上进行 Qt5移植和开发

    By Toradex 胡珊逢 简介 高清多媒体,甚至是 4K 视频不仅在消费领域有着旺盛的需求,在行业领域同样也获得广泛的关注.NXP 最新的IMX8 处理器不仅配有强劲的 CPU和GPU,还对多媒体 ...

最新文章

  1. php soap模块的安装
  2. python 栈_Python数据结构与算法05:基本结构:栈的应用之括号匹配
  3. python关闭csv文件_使用Python编辑csv文件时跳过标题
  4. springboot启动流程,手把手打断点一步步看运行步骤
  5. 设置Windbg符号文件路径
  6. Python基础概念_14_常见术语
  7. c++ cdi+示例_C ++“和”关键字示例
  8. 做网管这么久了,每个月只是拿1000元的工资
  9. System.out和System.err的区别
  10. 巨杉数据库:金融级数据库未来方向
  11. Service 中的 onStart 和 onStartCommand
  12. Spark视频王家林大神第8课:彻底理解大数据机器学习
  13. tic/toc/cputime测试时间的区别
  14. 前后端交互之——AJAX提交
  15. 在《王者荣耀》来聊聊游戏的帧同步
  16. python使用pandas中的to_json函数将dataframe数据写入json文件中
  17. python手写代码面试_常见Python面试题 — 手写代码系列
  18. javascript网页特效——按钮特效
  19. 王者荣耀7月4号服务器维护,王者荣耀7月4日更新维护公告 更新内容汇总
  20. 一款基于微信的小程序电商系统源码(前端+后台)带文字安装教程

热门文章

  1. 首届技术播客月开播在即
  2. 光盘文件格式-udf、iso9660、Joliet、Romeo
  3. 工厂管理口诀,请转给每一个员工背下来!
  4. 微信商户批量转账到零钱
  5. 嵌入式——嵌入式与单片机傻傻分不清
  6. 让电机动起来!Arduino驱动步进电机教程
  7. Ubuntu16.04编译Android源码系列一——7.1.2和4.4及踩坑
  8. 计算机主板 hdmi接口,主板上HDMI接口的用途是什么?主机后面的HDMI应该是
  9. B站视频下载方法之--手机下载后再转移至电脑
  10. 天才小毒妃 第878章 你喜欢孩子