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

相关推荐
光电的一只菜鸡5 小时前
ubuntu之坑(二十)——VMware虚拟机系统无法正常进入如何处理
linux·运维·ubuntu
你住过的屋檐7 小时前
【Nginx】linux上安装nginx
linux·运维·nginx
宵时待雨8 小时前
linux笔记归纳17:传输层协议UDP
linux·笔记·udp
SCandL1529 小时前
k8s service
linux·容器·kubernetes
会飞的土拨鼠呀10 小时前
Linux的存储使用率应该如何计算
linux·运维·服务器
weixin_5112552112 小时前
NGINX常用配置
linux·服务器·nginx
昌原的儿子LEO12 小时前
进程和线程(2)
linux·服务器·网络
会飞的土拨鼠呀13 小时前
Linux 真实内存使用率的核心计算标准
linux·运维·服务器
亿道电子Emdoor14 小时前
【Arm】如何高效实现2兆字节对齐
arm开发·单片机·mcu
陈年老古董14 小时前
CentOS编译安装Python3.11完整教程
linux·笔记·学习·centos·python3.11