手工处理 Oracle Cloud ARM 实例在线 DD Rocky Linux 10报错


原始环境

服务器:

  • 云厂商:Oracle Cloud

  • 架构:ARM64(Ampere)

  • 系统:Oracle Linux 7.9

确认命令:

复制代码
cat /etc/os-release
uname -m

结果:

复制代码
Oracle Linux Server 7.9
aarch64

使用 reinstall 脚本 DD

下载脚本:

复制代码
curl -O https://raw.githubusercontent.com/bin456789/reinstall/main/reinstall.sh

执行 Rocky 10 安装:

复制代码
bash reinstall.sh rocky10

脚本自动:

  1. 下载 Alpine 临时系统

  2. 修改 GRUB

  3. 重启进入 Alpine

  4. 再由 Alpine 写入目标系统镜像


遇到的问题

进入 Alpine 后报错:

复制代码
Could not find xda: 00000000

日志显示:

复制代码
extra_main_disk=00000000

查看:

复制代码
cat /proc/cmdline

发现:

复制代码
extra_main_disk=00000000

被写入启动参数。


排查过程

查看磁盘:

复制代码
cat /proc/partitions

结果:

复制代码
sda
sda1
sda2
sda3

说明:

  • 磁盘实际上存在

  • 主盘就是 /dev/sda

  • reinstall 自动识别主盘失败


查看 trans.sh

定位逻辑:

复制代码
grep -n "main_disk\|xda" /trans.sh

发现:

复制代码
if [ -z "$main_disk" ]; then
    error_and_exit
fi

以及:

复制代码
find_xda()

函数会根据:

复制代码
extra_main_disk

寻找真实磁盘。

因为:

复制代码
extra_main_disk=00000000

所以找不到:

复制代码
/dev/sda

导致:

复制代码
Could not find xda: 00000000

解决办法

强制指定:

复制代码
xda=sda

重新运行安装:

复制代码
sudo sh -c 'xda=sda ash /trans.sh'

这里不能用:

复制代码
sudo -E

因为 Alpine 里的 sudo 实际是:

复制代码
doas-sudo-shim

不支持:

复制代码
-E

安装成功标志

最后出现:

复制代码
***** DEL INVALID EFI ENTRY *****

删除旧启动项:

复制代码
Oracle Linux
reinstall (rocky 10)

然后创建新的 EFI:

复制代码
Boot0003* bootaa64.efi

最终:

复制代码
***** DONE *****

表示:

  • 镜像写入成功

  • EFI 修复成功

  • 启动项已注册

  • 可以重启


重启

执行:

复制代码
reboot

系统正常进入:

复制代码
Rocky Linux 10

这次踩坑的根因

不是:

  • ARM 不支持

  • Rocky 10 镜像损坏

  • Oracle Cloud 不兼容

真正原因是:

复制代码
extra_main_disk=00000000

这个参数被错误写入启动命令行。

脚本自动识别主盘失败。

而实际主盘是:

复制代码
/dev/sda

手动指定:

复制代码
xda=sda

后安装立即成功。


下次如果再遇到

看到:

复制代码
Could not find xda: 00000000

直接:

复制代码
cat /proc/partitions

确认磁盘。

如果是:

复制代码
sda

直接:

复制代码
sudo sh -c 'xda=sda ash /trans.sh'

如果是:

复制代码
vda

则:

复制代码
sudo sh -c 'xda=vda ash /trans.sh'

如果是:

复制代码
nvme0n1

则:

复制代码
sudo sh -c 'xda=nvme0n1 ash /trans.sh'

通常就能继续安装。

这次实际上是绕过了 reinstall 脚本的自动探测 Bug,手工指定系统盘完成了 DD。

相关推荐
用户8055336980313 小时前
主线 U-Boot 上 RK3506:和闭源 rkbin 拔河的三个隐性契约
linux·嵌入式
用户0340952979113 小时前
linux fcitx 5 雾凇拼音 设置在中文输入法下仍然输入英文标点
linux
Web3探索者2 天前
可视化服务器管理和传统命令行区别是什么?新手教程:Linux 运维到底该用图形界面还是 SSH 命令行?
linux·ssh
zylyehuo2 天前
Linux系统中网线与USB网络共享冲突
linux
ClouGence2 天前
Oracle 数据同步为什么会出现数据不一致?长事务是常被忽略的原因
数据库·后端·oracle
Sokach10154 天前
Linux Shell 脚本从零到能用:一个新手的一天学习总结
linux
AlfredZhao4 天前
Docker 容器时区不对,`timedatectl` 不存在怎么办?
linux·timezone
zzzzzz3106 天前
9K Star 炸裂开源!这个 C 语言写的代码知识图谱,把 Linux 内核索引压缩到了 3 分钟
linux·服务器·sql
XIAOHEZIcode6 天前
Linux系统鼠标偏移常见原因以及修复方案
linux·运维·游戏
A小辣椒7 天前
TShark:Wireshark CLI 功能
linux