openstack ubuntu虚机重启卡在booting from hard disk问题解决
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分区会有所不同。
- 在系统引导页面按 c 进入grub的命令行模式:
- ls查看硬盘设备,设置启动硬盘:将/boot分区所在的分区挂载为当前的 /;
可以通过按tab 键查看相应信息:
图中,(hd0,msdos1)大小为500M,是之前虚机系统的 /boot 分区,msdos2 是/ 分区。我们在这里把 msdos1 设置为 当前的root 变量。 - 指定linux内核位置,因为我们当前是把之前的/boot分区挂为了root,所以路径直接以 / 开头,同样使用 tab 可以补全路径下的文件名:
这里的 ro 表示只读, 并通过 root= 来指定系统的 / 目录要放在系统的哪个位置,这里我们设为/dev/vda2盘。如果还需要其他特殊内核参数也可以在后面继续指定。 - 执行initrd ,指定img文件:
- 执行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