从內建SD读卡器启动电脑

SD卡启动支持

家里的几台旧电脑,都有SD卡卡槽,包括一台EFI机器:HP Probook G4 / Intel i5,以及4台MBR机器:Thinkpad S2 / Intel i5,Acer 4741G / Intel i3,Gateway EC1410c / Intel Celeron,Gateway LT3112c / AMD Turion.

宏碁家族的后三台本本都可以直接从SD卡启动。HP和TP本子,插入系统SD卡被直接无视。在GRUB菜单里,用'c'命令打开命令行,用ls命令查看磁盘,会发现SD卡根本没出现。也许它们的主板驱动不支持从SD卡启动。

惊险的分区大小调整

于是在HP本子上预留出1G的空间,作为/boot分区。分区过程还挺惊险的。机器原装的128G 固态硬盘只有出厂的一个C区。我用命令行的gparted程序的resize命令调整出1GB的空间。这事儿我干过,不过之前是用gparted,在GUI下调整的。

调整完,试着重启动Windows。直接报分区错误。Windows启动程序自己修复10分钟后,告诉我修复失败。吓尿。

赶紧用另一台电脑上网找修复光盘ISO文件。用rufus烧制为启动U盘。

启动电脑后,进入一个WinPE环境。用一个叫disk啥的修复软件,只花10秒就识别出分区表溢出,5秒钟完成修复。再重新启动,Windows 10出来了。一块大石头落地。

安装/boot分区

我的目标SD卡是一张已经安装有Fedora server根分区及其文件的64GB class 10 SD卡(以下称为甲SD卡),MBR分区模式。可以考虑增加EFI支持,然后再进行grub-install。

但这个过程更复杂,失败的可能性也更大。我选择了一个更土的方法:用另一个乙U盘作为/分区来再安装一次Fedora server,/dev/sda里的分区作为boot分区,以更好地适应该机的主板及EFI。安装完成之后,使用甲SD卡作为/分区,相应地修改GRUB配置。

安装过程大约20分钟。

修改GRUB文件。fedora项目大幅地修改了GRUB的配置方式,跟传统的Linux操作系统(如作为传统基准的Slackware)有较大不同,fedora的配置方式叫Boot Loader Spec (BLS)。文章一大篇,把原理、作者的设计思路和心路历程都写在里面,唯独没有操作步骤。

我不知道怎么更新BLS的配置。只好直接更改GRUB菜单,把内核参数中的root=UUID=<uuid>替换为甲SD卡的UUID。fedora的GRUB配置文件中写有warning:直接修改GRUB配置文件是不推荐的,下次更新会覆盖您的修改,应该通过BLS来修改。

我暂时就用这个workaround吧,反正我也不会让BLS去更新配置的。

试验了一次,可以正常从甲SD卡启动系统。SD卡比U盘作为/分区,好处是更美观、更安装,U盘再小都会凸出一段,我总担心会碰掉。