手工处理 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。

相关推荐
oradh1 小时前
Oracle联机日志文件损坏故障总结
数据库·oracle·oracle联机日志文件损坏
酸菜。1 小时前
DW_apb_wdt总结
linux
虚无的纽扣1 小时前
【Linux】一篇文章带你吃透进程控制:fork、wait、exit到底在做什么
linux·ubuntu
raindayinrain1 小时前
Linux 网络编程--套接字选项
linux·网络·套接字选项
辰辉创聚1 小时前
炎症与免疫相关细胞因子:信号通路、分类及科研检测应用
python·oracle·nycodenz·重组il-6蛋白·抗tnf-α抗体·il-1β蛋白
金士顿1 小时前
ASP.NET Core BackgroundService 深度解析:设备后台任务到底应该怎么设计
linux·嵌入式·asp.net core·arm64
j7~1 小时前
【Linux网络加餐课】(篇八)网络版计算器(终篇):守护进程、标准 IO 重定向与部署打包
linux·运维·网络编程·tcp·守护进程·io重定向·部署打包
Escalating_xu2 小时前
【Linux 多线程】自旋锁:从 atomic_flag 原子操作到 pthread_spin_* 与高竞争优化
linux·系统架构
kkkkkkkkkk_Z2 小时前
学嵌入式和Linux应用编程|学习日记:深入理解TCP协议与网络编程实战
linux·笔记·学习
kaoa0002 小时前
Linux入门攻坚——90、Hadoop-2-MapReduce计算框架及Hadoop生态系统概览
linux·hadoop·mapreduce