升级到 12.04LTS 启动时转储到 busybox

升级到 12.04LTS 启动时转储到 busybox

我刚刚使用此处记录的服务器升级过程将我的服务器从 10.04LTS 升级到 12.04 LTS:https://help.ubuntu.com/community/PreciseUpgrades

在启动时,我现在被转储到 busybox shell(稍后会详细介绍)。但是,如果我从以前的版本启动内核,则一切都会正常启动。

我的配置唯一奇怪的是,我的启动设备是使用 RAID1 的多磁盘设备。当我进入 busybox shell 时,输入“mount /dev/md0 /root”就可以了。我尝试传入 rootdelay=30,在启动后 5 秒内就转入 shell。

与此处标记的问题不同: 从 10.04 升级到 12.04,grub 进入 BusyBox 提示,没有出现错误 我没有使用 splash 或 quiet 选项进行引导,也没有收到有关阵列降级的投诉。尽管如此,我尝试使用 bootdegraded 内核选项进行引导,但这也没有用。

有什么想法可以尝试吗?

(是的,电源已插入:-))

配置信息:

Grub 版本:grub(GNU GRUB 0.97)

大多数 grub menu.lst 选项都被注释掉了(以使用默认值)。最新的内核不起作用:

标题 Ubuntu 12.04.2 LTS,内核 3.2.0-51-generic-pae
根(hd0,1)
内核/boot/vmlinuz-3.2.0-51-generic-pae root=/dev/md0 ro
initrd /boot/initrd.img-3.2.0-51-generic-pae
安静的

可以正常工作的最新内核:

标题 Ubuntu 12.04.2 LTS,内核 2.6.32-46-generic-pae
根(hd0,1)
内核/boot/vmlinuz-2.6.32-46-generic-pae root=/dev/md0 ro
initrd /boot/initrd.img-2.6.32-46-generic-pae
安静的

mdadm 信息:

garrett@stargate:/boot/grub$ sudo mdadm --detail /dev/md0
/dev/md0:
        版本:0.90
  创建时间:2006 年 12 月 16 日星期六 22:27:17
     突袭级别:raid1
     数组大小:57609024(54.94 GiB 58.99 GB)
  已使用设备大小:57609024 (54.94 GiB 58.99 GB)
   突袭设备:2
  设备总数:2
首选辅修科目 : 0
    持久性:超级块是持久的

    更新时间:2013年9月2日星期一17:02:27
          状态:干净
 活跃设备:2
工作装置:2
 故障设备:0
  备用设备:0

           UUID:5c92f0d9:9cf5be95:03611c5e:a540b92f
         事件:0.24172972

    编号 主要 次要 RaidDevice 状态
       0 8 18 0 活动同步 /dev/sdb2
       1 8 2 1 活动同步 /dev/sda2

内核看到的Md设备数据:

garrett@stargate:~$ cat /proc/mdstat
个性:[线性] [多路径] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10]
md0 :活动 raid1 sda2[1] sdb2[0]
      57609024 块 [2/2] [UU]

未使用的设备:<无>

答案1

这是由奇怪的配置以及启动脚本的改变引起的。

首先,镜像设备 /dev/md0 没有分区表。它被视为一个原始块设备,上面直接有文件系统。在紧急情况下,这允许直接启动备份设备(/dev/sda2 或 /dev/sdb2)。之前在这个分区上安装过一个短暂的 LVM,但认为没有必要,因此该设备被重新初始化为原始 ext3 设备。然而,这并没有成功删除 LMV 的所有痕迹。这导致实用程序 wait-for-root 返回“LVM2_member”作为设备类型。它一直都是这样做的。

其次,对启动脚本 'scripts/local' 的更新将 mount 命令从:

挂载 ${roflag} ${ROOTFLAGS} ${ROOT} ${rootmnt}

到:

挂载 ${roflag} ${FSTYPE:+-t ${FSTYPE} }${ROOTFLAGS} ${ROOT} ${rootmnt}

现在,mount 失败了,因为我们在 mount 命令中强制输入文件系统类型。在这种情况下,类型“LVM2_member”根本不起作用 - 我们需要 ext3。旧版本可以正常工作,因为 mount 可以轻松确定这是一个 ext3 文件系统。

短期解决方法是在内核启动行中传入 rootfstype=ext3。这将忽略不正确的自动检测文件系统类型并指定要挂载的 ext3。

相关内容