起因:某位群友 @ 我说既然 Unmatched 都有主线了,U-Boot 现在也能起 ISO 了,那 openEuler 的 ISO 说不定也能起;加上前些日子刚刚试过了在 Mars 上起主线 Debian,那 Unmatched 没理由不行啊。
(Unmatched 自从 openEuler RISC-V 支持合进主线之后就没再更新过了,最后一个可用镜像可能是 24.09 的 testing 版本,但看上去可能是 CI 打出来的,除了支持矩阵/丁丑小队可能都没人测试过,xD)
后续:没想到是个大坑。
步骤比较简单,大概是:刷 U-Boot 固件 - 把 ISO 烧进存储卡或者 U 盘 - 装好 SSD 插上烧了 ISO 的存储设备插上网线上电开机 - 正常安装流程 - 重启 - **事后工作**
注意:Unmatched 不是目前 openEuler 主线支持设备,不能保证所有硬件功能完全可用。比如目前内核可能刷网卡相关的 log(但似乎不影响使用)。
至于事后工作是什么,一会再说。
坑 0:刷固件!
我手头这块 Unmatched 已经提前刷过主线 U-Boot 固件了,有足够的 U-Boot EFI 支持,是可以起 ISO 的;如果还没有,可以参考 U-Boot 的官方文档 去刷一个。
U-Boot 固件本身可以不用手动编译,从 Debian 偷一个,dpkg -x 或者 7z x 或者 unar 什么的解包就行了。
坑 1: 安装器可能会报错
不要尝试在还没选好安装源的时候就直接点进硬盘分区。会炸的。炸了得重启(安装程序)。
如果你和我一样选择把固件烧进 SPI,ISO 烧进存储卡,然后直接从存储卡启动 ISO——恭喜你,即使你选的不是 minimal netboot ISO,安装程序可能还是不会认到本地源。
小问题,配好网,然后填一个网络源进去就行了。比如:https://repo.openeuler.org/openEuler-24.03-LTS-SP2/OS/riscv64/
坑 2: 默认安装好的 GRUB EFI,U-Boot 是认不到的
众所周知,openEuler 是一个面向数字基础设施的操作系统,而 U-Boot 实在还是太嵌入式了,根本没人想到会有人像我这么扭曲,在 Unmatched 这种机器上 U-Boot 起 ISO 然后装 EFI 的系统……
openEuler(实际上绝大多数其它发行版都是)默认会把 GRUB 直接安装,oE 的话,安装到一半,安装程序会告诉你:
Question
The following error occurred while installing the boot loader. The system will
not be bootable. Would you like to ignore this and continue with installation?
Failed to set new efi boot target. This is most likely a kernel or firmware bug.
Please respond 'yes' or 'no'
这个时候如果选 yes 继续,等安装程序重启,然后把启动盘拔了,这个时候你就会发现 U-Boot 进不去系统了。原因是 U-Boot 目前似乎只能认 –-removable 安装的 GRUB,oE 默认安装在 /boot/EFI/openEuler/grubriscv64.efi直接给 U-Boot 整懵了,认不出来。
解决方法大致是,手动从 U-Boot 启动 EFI,进系统之后,重新以--removable模式安装 GRUB2。
手动启动流程:首先打断 U-Boot 自动启动,然后:
nvme scan
load nvme 0:1 $kernel_addr_r /EFI/openEuler/grubriscv64.efi
bootefi $kernel_addr_r
然后就能看到熟悉的 GRUB 界面出来了。
坑 2.1:grub2-install 默认用不了
出于不清楚什么原因,openEuler 默认不会安装 grub2-efi-riscv64-modules包,导致运行 grub2-install 会报 /usr/lib/grub/riscv64-efi/modinfo.sh不存在,然后无法继续。
解决方法:dnf install -y grub2-efi-riscv64-modules
装好之后,按如下方法操作:
grub2-install --removable
grub2-mkconfig -o /boot/grub2/grub.cfg
再次重启,现在 U-Boot 应当能正确找到 GRUB 的 EFI 并自动启动了。
顺便提一下:不算 debug 排错时间,正常启动到 Anaconda 安装器就需要至少四分钟,整个安装流程需要至少 40 分钟(取决于网速和存储介质速度),加之 Unmatched 的风扇实在是非常吵,建议先安顿好设备再开始。
(之前特意拆过,我不理解为什么建准家的磁悬浮风扇也能这么吵的,但仔细想想好像是万转暴力款,这下一切都合理了)
来都来了,放个 neofetch 吧:
最后还是老生常谈:
欢迎各位复现/吐槽丁丑小队的所有测试结果。
如果有对我们的测试方法/结果有任何建议/问题,欢迎直接在 GitHub 开 issue,或者在论坛 @ 我、回帖询问。
(And 我知道支持矩阵那边的测试报告还没写,但是今天的工作时间就到这了,美好周末,下周一定.jpg)
不知道是否有 oERV 的老师在看,我知道你们肯定没想到会有人这么用 ISO 起的,这个 ISO 应该是给 QEMU 用的吧 xD
这个方式实在过于邪门我都绷不住了所以才水了个帖子;无所谓,欢迎开喷(
