当前SD卡的分区状态:
/dev/sdb1: 50MB FAT32 (将用于boot)
/dev/sdb2: 70.3MB ext4 (将用于rootfs)
接下来你需要做的操作:
格式化分区:
bash
sudo mkfs.vfat -F 32 -n BOOT /dev/sdb1 # 格式化boot分区
sudo mkfs.ext4 -L ROOTFS /dev/sdb2 # 格式化rootfs分区
挂载boot分区并复制文件:
bash
mkdir -p ~/orangepi_boot
sudo mount /dev/sdb1 ~/orangepi_boot
sudo cp /path/to/Image ~/orangepi_boot/
sudo cp /path/to/device-tree.dtb ~/orangepi_boot/
创建启动脚本:
bash
cat << EOF | sudo tee ~/orangepi_boot/boot.cmd
setenv loadaddr 0x45000000
setenv fdt_addr 0x49000000
setenv bootargs console=ttyS0,115200 root=/dev/mmcblk0p2 rootwait
load mmc 0:1 ${loadaddr} /Image
load mmc 0:1 ${fdt_addr} /sun50i-h618-orangepi-zero3.dtb
booti ${loadaddr} - ${fdt_addr}
EOF
sudo apt install u-boot-tools
mkimage -C none -A arm -T script -d ~/orangepi_boot/boot.cmd ~/orangepi_boot/boot.scr
卸载分区:
bash
sudo umount ~/orangepi_boot
sync
这样分区的主要目的:
分离boot和rootfs:
boot分区(FAT32):U-Boot可以直接读取
rootfs分区(ext4):更适合Linux系统使用
提高可靠性:
避免系统文件填满整个卡导致无法启动
可以单独备份/恢复boot分区
符合标准启动流程:
大多数ARM开发板都预期这种分区方式
现在你的SD卡已经准备好放入Orange Pi Zero 3启动了!记得连接串口查看启动日志,如果有任何问题可以检查:
是否正确复制了Image和设备树文件
boot.scr是否生成正确
串口连接是否正常(TX/RX不要接反)