这两天脑子有坑,突发奇想,想把之前折腾了半天终于装好了debian的Z3735F小主机换成ubuntu,结果一折腾就搞了好久,终于搞定。。。

这个小主机很奇葩,当年应该是为了节省成本吧,EFi只支持32位,但是cpu是支持64位的;同时,现在的linux,尤其是ubuntu,只有64位系统,这就导致系统盘开机没办法引导,想办法引导了开始装系统了,grub装不上去、系统没全面完成安装。。。。

经过各种坑,终于搞定了,现在记录下全过程,以防止自己未来继续脑抽。。。

制作启动盘

使用Ventoy https://www.ventoy.net/ ,并导入Ubuntu安装包

进入系统安装环境

使用ventoy可以正常进行安装;如使用更换grub中efi的方式,则需要手工引导

ls                  # 查看所有可用的设备
ls (hdX,Y)/boot     # 从中找到 U 盘的 /boot 目录
set root=(hdX,Y)    # 数字参考上面找到的盘
linux /casper/vmlinuz boot=casper
initrd /casper/initrd
boot

经过系统自检之后就将进入 Ubuntu 的安装环境,点击安装后一步步操作:选择语言、时区、安装分区、创建用户,然后等待文件复制完毕并且安装完毕即可。

(可选)也可以使用修改的ia32替换原有的efi文件,实现启动系统,下载地址:
https://github.com/jfwells/linux-asus-t100ta/blob/master/boot/bootia32.efi

手动引导系统启动

安装到最后,会出现grub安装错误

然后,提示安装程序崩溃了:

不用惊慌,此时系统其实基本已经安装完毕,但和引导进入 U 盘安装环境一样,也需要修复一下安装后但系统启动引导。
不过我们要先手动引导启动一次,才能开始之后的修复工作。
重启后再次进入 grub 命令行,使用之前的办法,通过 ls 命令找到内部存储中带有 /boot/vmlinuz* 的磁盘分区:

set root=(hdX,gptY)         # 刚才找到的分区
linux /boot/vmlinuz*        # 星号表示按 Tab 键自动补完
initrd /boot/initrd*
boot

或者采用下面的方式

linux   /boot/vmlinuz-5.19.0-29-generic root=UUID=6cba3aaa-38f7-48e9-837f-21349d3f423e ro
initrd  /boot/initrd.img-5.19.0-29-generic
boot

进入恢复模式,重置用户名密码

使用22.04安装包,会因为grub安装失败,安装程序在没有正确配置用户名密码的情况下就异常退出了;需要进入grub命令行,进入recovery模式,重置root账号密码

linux   /boot/vmlinuz-5.19.0-29-generic root=UUID=6cba3aaa-38f7-48e9-837f-21349d3f423e ro recovery nomodeset dis_ucode_ldr
initrd  /boot/initrd.img-5.19.0-29-generic
boot

然后进入root权限,使用passwd重置密码

也可以更进一步,使用adduser设置其他账号

修复系统启动引导

为了不用每次都这样手动输入命令启动,我们还是得修复一下启动引导。

sudo apt-get update
sudo apt-get -y purge grub-efi-amd64 grub-efi-amd64-bin grub-efi-amd64-signed shim-signed  #需要注意shim-signed,这个是安全启动使用的efi文件,强制依赖于grub-efi-amd64,必须要卸载,否则不能安装ia32的efi文件
sudo apt-get -y install grub-efi-ia32-bin grub-efi-ia32 grub-common grub2-common
sudo grub-install --target=i386-efi /dev/mmcblk1p2 --efi-directory=/boot/efi/ --boot-directory=/boot/ # 这里的 mmcblk1p2 是系统盘
sudo grub-mkconfig -o /boot/grub/grub.cfg

没看到什么报错的话,启动引导应该就修复完毕了,之后就算拔掉 U 盘,也可以直接自动启动到 Ubuntu 系统了。