一、目标说明
每次启动都需要按S2按键才能选择SD卡启动的话非常麻烦,没有跳线帽或拨码开关等通过硬件的方式设置默认启动选项。不过可以通过软件的方式设置默认启动选项。软件设置默认启动选项的方式还是比较多的,这里提供一种不修改eMMC文件内容或数据的方式设置启动默认选项。
二、设置步骤
先通过按键的方式选择SD卡启动,进入调试界面输入如下指令
sudo nano /boot/firmware/uEnv.txt
即在/boot/firmware目录下创建uEnv.txt文件,复制如下内容
#核心:指定优先从SD卡(mmc0)启动(当前SD卡就是mmc0) mmcdev=0 #指定SD卡的根分区(当前根目录是mmcblk0p3) mmcroot=/dev/mmcblk0p3 ro #指定SD卡的Boot分区(mmc0的第1分区) bootpart=0:1 #指定文件系统类型(必须匹配) mmcrootfstype=ext4 # 禁用eMMC启动检测(避免切回eMMC) #disable_uboot_overlay_emmc=1 # 简化启动参数(避免复杂指令导致重启) optargs=quiet console=ttyO0,115200n8
按Ctrl+O→回车→Ctrl+X保存并退出。其中如果#disable_uboot_overlay_emmc=1前面的#的话,在系统启动后不会挂载eMMC,这样可以很好地保护好eMMC中的数据。输入如下指令重启设备
sudo reboot
设备重启后还是通过判断启动选项的方式查看设备是通过SD卡还是eMMC的方式启动,如果没有错误的话是通过SD卡启动。
三、总结
板卡虽然没有通过硬件的方式设置系统启动默认选项,但是通过软件的方式可以简单的设置还是很方便的。不过还有另外一种方式在/boot/firmware目录下创建uEnv.txt文件的方式,但是多次尝试后发现不能生效,设置出现启动失败的现象。具体描述如下:
SD卡在烧录后因为其EFI系统分区的格式是Fat32的,会导致部分的Windows系统无法正常识别,也是通过相关的指令创建一个压缩卷才正常识别的,指令如下

创建压缩卷的方式是通过Windows的diskpart软件创建的,调用方式是在CMD指令窗口输入diskpart。其中指令select disk 2是选中对应的SD卡,需要根据自己电脑的实际情况设置。select partition 1是选择SD卡分区中对应Debian Linux的EFI系统分区,对应的文件夹路径是/boot/firmware。assign letter=G是给压缩卷分配对应的分区,需要结合自己电脑的实际情况进行分区。
然后电脑就会识别出SD卡对应的分区,在根目录下创建uEnv.txt文件并复制对应的内容,但是文件建议用ANSI的格式,不过测试过ANSI和UTF-8格式都不能生效,所以建议在系统调试的时候修改系统启动默认首选项。
我要赚赏金
