Skip to main content
Version: 1.0.0

三、启动方式

AIBOX 支持多种启动方式,包括:

  • 从 microSD 启动:预装有操作系统的 microSD
  • 从 eMMC 启动:eMMC 设备经过镜像烧录后启动
  • 从网络 PXE 启动:预装有操作系统的 microSD 或 eMMC
  • 从网络 NFS 启动:预装有操作系统的 microSD 或 eMMC

3.1 microSD 启动

在提供开发套件时,一般会同时提供一个制作好的 microSD,该卡可以启动开发套件,同时也提供了一些比较基础的可执行程序,您可以通过探索这些程序了解开发套件的基本功能,从而建立对开发套件和 SDK 的初步认知。如果没有制作好的启动卡或需要制作新的启动卡,请参考「AIBOX 快速开始」文档的「制作启动卡」章节 的相关内容。

下面简单介绍一下 microSD 启动卡的分区结构。microSD 卡被划分为多个分区,每个分区对应不同的用途。

3.1.1 启动分区(盘符名 bootfs)

启动分区用于存储系统启动过程中所需的各类文件,包括引导程序、内核镜像、设备树文件等。该启动分区通常采用 FAT32 文件系统格式,以确保兼容性。启动分区包含的主要文件说明如下:

  • uImage:内核镜像文件
  • boot.bin:引导程序文件
  • tps.dtb:设备树文件
  • fw_jump.bin:固件文件(如果适用)

3.1.2 根文件系统分区(盘符名 rootfs)

根文件系统分区是 microSD 卡上用于存储操作系统核心文件的重要区域,是文件系统的最高层级目录,包括系统的命令库、配置文件、驱动程序等,根分区通常为 ext4 文件系统格式。

Code block
.
├── bin -> usr/bin # 存放系统的基础命令,如ls、cp、mv等
├── bin.usr-is-merged
├── boot
├── dev # 设备文件,用来与硬件交互
├── etc # 存放系统配置文件,如网络配置、用户配置等
├── home # 存放系统用户的家目录
├── lib -> usr/lib # 存放系统运行所需的共享库文件
├── lib.usr-is-merged
├── media
├── mnt
├── opt
├── proc
├── run
├── sbin -> usr/sbin # 存放系统管理命令
├── sbin.usr-is-merged
├── srv # 存放服务相关的文件
├── sys # 存放系统运行时的信息
├── tmp # 临时文件存放目录
├── usr # 用户应用程序和文件的存放目录
└── var # 存放系统运行时产生的可变数据

完成启动卡制作后,可以参考 「AIBOX 使用技术手册」文档的「开机」章节 的相关内容启动开发套件。

注意:如果用户使用的是 Windows 操作系统,则无需手动管理这些分区,安装程序会自动设置,如果需要手动管理这些分区,可以采用 Windows 操作系统自带的磁盘管理工具进行管理。

3.2 eMMC启动

需要制作一张 microSD 烧录卡,并把镜像正确烧录到 eMMC,具体烧录步骤可参考 「AIBOX 使用技术手册」文档的「microSD 卡烧录 eMMC 升级」章节 的相关内容。拔出 microSD ,按复位键重启即为 eMMC 启动。

3.3 网络 PXE 启动

需要制作一张 microSD 烧录卡或者已被正确烧录过的 eMMC,PXE 启动会在仅使用 Boot.frconfig.txt 的情况下通过网络去启动系统。 要从网络 PXE 启动,首先需要在电脑端配置 TFTP 和 NFS 服务器,然后开发套件端完成配置并启动。

3.3.1 配置 TFTP 服务器

sudo apt-get install tftp-hpa tftpd-hpa
sudo apt-get install xinetd
sudo mkdir -p /pxe_server/tftp
sudo chmod 777 /pxe_server/tftp

修改 /etc/default/tftpd-hpa

TFTP_USERNAME="tftp"
TFTP_DIRECTORY="/pxe_server/tftp"
TFTP_ADDRESS=":69"
TFTP_OPTIONS="-l -c -s"

创建 PXE 目录

sudo mkdir -p /pxe_server/tftp/pxelinux.cfg

创建 PXE 配置文件

pxelinux.cfg 目录下创建对应的 PXE 配置文件,文件名格式为 01-xx-xx-xx-xx-xx-xx,其中 01- 为固定字段,后面紧跟开发套件的 MAC 地址。

例如,针对 MAC 地址为 e6:e8:dc:ff:db:da 的开发套件,应创建文件 /pxe_server/tftp/pxelinux.cfg/01-e6-e8-dc-ff-db-da

default Ubuntu Linux-6.6
menu title ULTIMATE PXE SERVER - By Griffon - Ver 1.0
prompt 0
timeout 0

label Ubuntu Linux-6.6
kernel uImage
initrd rootfs.cpio.uboot

复制镜像文件

将 microSD 卡 bootfs 分区文件 u-boot.binuImagetps.dtbfw_jump.binrootfs.cpio.ubootBoot.froverlays 目录复制到 /pxe_server/tftp/ 目录下。在开发时可对应替换为自己的镜像文件。

启动 TFTP 服务器

sudo service tftpd-hpa restart

注意:针对不同开发套件要烧录不同内核镜像和设备树,只需在 pxelinux.cfg 目录下创建对应的 PXE 配置文件即可。

3.3.2 配置 NFS 服务器

安装 NFS 服务

sudo apt-get install nfs-kernel-server rpcbind

修改 /etc/exports,在文件末尾添加(注意:路径和 * 之间有个空格):

/srv/nfs/rootfs *(rw,sync,no_root_squash)

其中 /srv/nfs/rootfs 为 NFS 文件系统挂载路径。

修改 /etc/default/nfs-kernel-server,在文件末尾添加:

RPCNFSDOPTS="--nfs-version 2,3,4 --debug --syslog"

复制镜像文件

将 microSD 卡 rootfs 分区下所有文件及目录复制到 /srv/nfs/rootfs 目录下。在开发时可对应替换为自己定制的文件系统。

启动 NFS 服务

sudo systemctl restart nfs-kernel-server

3.3.3 配置开发套件

完成服务器端配置后,需要在开发套件端进行相应的网络启动参数配置。开发套件通过修改 bootfs 分区下的 config.txt 文件来设置网络启动相关参数,具体配置示例如下:

# 使能PXE
force_pxe=true
# 从eth0启动
ethact=eth0
# 服务器IP地址
serverip=192.168.56.99
# NFS文件系统挂载路径
rootpath=/srv/nfs/rootfs

完成配置文件的修改后,重新上电即可通过网络启动系统。启动成功后,启动日志中会看到打印Now switch to pxe boot字样。关于 config.txt 文件中各配置变量的详细说明,请参考 「TacoOS&BSP(AIBOX) 开发技术手册」文档的「config.txt 使用说明」章节 的相关内容。

3.4 网络 NFS 启动

网络 NFS 启动需要准备一张 microSD 烧录卡或已正确烧录的 eMMC 设备。NFS 启动会在挂载文件系统时通过网络去加载。开发套件端需要修改 bootfs 分区下的 config.txt 文件,具体配置示例如下:

# 必须关闭PXE
force_pxe=false
# 从eth0启动
ethact=eth0
# 服务器IP地址
serverip=192.168.56.99
# NFS文件系统挂载路径
rootpath=/srv/nfs/rootfs
# 使能nfs
nfs=true

完成配置文件的修改后,重新上电即可通过网络挂载文件系统。关于 config.txt 文件中各配置变量的详细说明,请参考 「TacoOS&BSP(AIBOX) 开发技术手册」文档的「config.txt 使用说明」章节 的相关内容。NFS 服务器搭建可参考上述 3.3.2 配置 NFS 服务器 的相关内容。