openstack ubuntu虚机重启卡在booting from hard disk问题解决

问题描述

之前在openstack创建正常使用的虚机,执行重启操作后,过了grub引导页面,结果卡在了 booting from hard disk页面,按说booting from hard disk 应该是出现在grub之前的呀,奇怪?
在这里插入图片描述

搜了一下网上的相关问题,大多都是说nova的配置,或者镜像的元数据设置有问题,但是虚机之前是正常的,所以不太可能是平台配置的问题。

问题解决(本方案不一定适用于其他类似情况)

尝试使用手动配置grub2引导后启动,可以进入虚机。进入虚机后检查grub配置文件是否有异常,如果没有问题可以重新生成grub相关文件,然后重启测试能否正常启动。

手动引导步骤如下:
注意: 系统硬盘的分区不同,在grub2 命令行中ls 查看到的hd设备和msdos分区会有所不同。

  1. 在系统引导页面按 c 进入grub的命令行模式:
    在这里插入图片描述
  2. ls查看硬盘设备,设置启动硬盘:将/boot分区所在的分区挂载为当前的 /;
    可以通过按tab 键查看相应信息:
    在这里插入图片描述
    图中,(hd0,msdos1)大小为500M,是之前虚机系统的 /boot 分区,msdos2 是/ 分区。我们在这里把 msdos1 设置为 当前的root 变量。
  3. 指定linux内核位置,因为我们当前是把之前的/boot分区挂为了root,所以路径直接以 / 开头,同样使用 tab 可以补全路径下的文件名:
    在这里插入图片描述
    这里的 ro 表示只读, 并通过 root= 来指定系统的 / 目录要放在系统的哪个位置,这里我们设为/dev/vda2盘。如果还需要其他特殊内核参数也可以在后面继续指定。
  4. 执行initrd ,指定img文件:
    在这里插入图片描述
  5. 执行boot 启动系统,等待开机:
    在这里插入图片描述

根本原因

进入系统后,检查/det/default/grub配置文件是否有异常。

经大佬排查,是grub中配置的console参数只配置了ttyS0,导致控制台所有的输出都去了串口,而没有在tty0(vnc)上显示,所以在引起系统启动后,vnc就看不到任何输出了。所以对于console参数至少需要配置一个tty0,ttyS0根据需求可选。

修改后,对于ubuntu系统可以执行 update-grub2 命令更新一下grub相关文件,之后重启测试,发现可以通过引导界面进入虚机。

参考:
grub配置console参考链接
TLDP - Remote Serial Console HOWTO - Chapter 5. Configure Linux kernel

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐