关于 DreamCat

主题名称:DreamCat | 版本:3.0.240224

主题开发:HanFengA7 | CornWorld

Designed by HanFengA7 Power by Typecho

Copyright © 2015-2024 by LychApe All rights reserved!

menu
refresh

运维一个古老的赛扬x86设备

作者: ciaoℒy

时间:

搞了个赛扬J1800的垃圾小主机, 寻思当个低功耗的代理主机用. 把我以前用的64位Ubuntu的硬盘拔下来插到小主机上去, 上电开机, 发现在路由器的DHCP列表里死活获取找不到设备.

真是奇了怪了, 遂插上屏幕看了一看. 好嘛, 系统没启动的起来.

1708160571682

就图中这个错误, 一堆"Reboot and Select proper Boot device or Insert Boot Media". 一眼感觉就是BIOS没识别出来硬盘的UEFI, 估计是开了CSM并且选中了Legacy Only. 遂去BIOS里看了看情况

果然哈, 在CSM菜单里设置一下UEFI启动, 就可以在启动菜单项里认出UEFI设备了.

1708160571678

接下来正常启动, 竟然还是没好! 出现了这么个幺蛾子.

1708160571672

开机进入了EFI Shell, 一时之间竟想不出来是哪里出了问题, 遂插上Ventory U盘, 启动SystemRescue看看情况. 当在Ventory中选中SystemRescue后, 出现了下述错误: No bootfile found for UEFI! Maybe the image does not support ia32 UEFI

1708160571667

好滴嘛, 懂了. 这个主机是ia32的UEFI固件, 需要ia32的GRUB2可执行文件才可以正常启动. 那就想办法装上呗.(或者也可以不装, 把Ventory的UEFI修改一下, 在配置文件里添加启动项引导硬盘里的系统就可以了)

准备ia32的UEFI可执行程序

首先想办法引进入硬盘里的系统, 这里有两个办法.

一个是打开legacy启动, 用Ventory启动SystemRescue, 然后chroot.

二是用Ventory的GRUB2(支持ia32)引导启动硬盘上的系统.

我是用的方法一, 用下述命令挂载必要的文件系统

mount /dev/sda1 /mnt
mount /dev/sda2 /mnt/boot/efi
mount -t proc none /mnt/proc
mount -o bind /dev /mnt/dev
mount -o bind /sys /mnt/sys
mount -t devpts devpts /mnt/dev/pts

之后chroot /mnt. 按照网上的步骤, 接下来会执行grub2-install /dev/sda. 但是我执行后会报错, 提示error: /usr/lib/grub/i386-pc/modinfo.sh doesn't exist.

这时候不要按照网上的步骤走, 因为这里我们需要手动干预grub2的安装, 让它安装uefi-ia32的grub2, 不能让它自动识别.

具体过程可参照该教程: boot - Installing 32bit bootloader on 64bit Ubuntu - Ask Ubuntu.

但是, 当我安装应用包grub-efi-ia32时出现了依赖冲突:

Some packages could not be installed. This may mean that you have
requested an impossible situation or if you are using the unstable
distribution that some required packages have not yet been created
or been moved out of Incoming.
The following information may help to resolve the situation:

The following packages have unmet dependencies:
 shim-signed : Depends: grub-efi-amd64-signed (>= 1.187.2~) but it is not going to be installed or
                        grub-efi-arm64-signed (>= 1.187.2~) but it is not installable
E: Error, pkgProblemResolver::Resolve generated breaks, this may be caused by held packages.

我也不太清楚问题出在哪里. 个人分析, 应该是安装grub-efi-ia32需要卸载掉grub-efi-amd64-signed, 然而后者因为被shim-signed依赖所以不能被卸载?

如果遇到了和我同样的问题的话, 只需要安装grub-efi-ia32-bin一个包即可. 安装后, 可以看到在/usr/lib/grub/中已经有了i386-efi目录.

接下来, 执行下述命令:

grub-install --recheck --root-directory=/ --efi-directory=/boot/efi/ --target=i386-efi

就可以成功安装ia32的grub2 uefi启动程序了.

Installing for i386-efi platform.
Installation finished. No error reported.

之后重启主机, 开启UEFI引导, 就可以正常进入硬盘中的系统了.


#本文链接:https://blog.chaol.top/archives/89.html
#本文采用 CC BY-NC-SA 4.0 协议进行许可
#如无特别声明,该文章均为 ciaoℒy 原创,转载请遵循 署名-非商业性使用 4.0 国际(CC BY-NC 4.0)协议,即转载请注明文章来源。
#最后编辑时间为: 2024 年 02 月 17 日
none

create 添加新评论


account_circle
email
language
textsms



加我的QQ
加我的微博
加我的支付宝
加我的微信