EC2死机,ssh无法连接。在管理控制台中重启,起不来了,从监控界面中可以看到界面。
[2J[01;01H[=3h[2J[01;01H[2J[01;01H[=3h[2J[01;01H[2J[01;01H[=3h[2J[01;01H[0m[35m[40m[2J[01;01H[=3h[2J[01;01H[0m[37m[40m[0m[30m[40m[2J[01;01H[0m[37m[40m[02;30HGNU GRUB version 2.12
Minimal BASH-like line editing is supported. For the first word, TAB
lists possible command completions. Anywhere else TAB lists possible
device or file completions. To enable less(1)-like paging, "set
pager=1".
系统卡在了 GRUB 命令行界面,意味着 GRUB 引导程序无法找到或加载其配置文件(grub.cfg),因此无法继续启动操作系统。
发起case找客服不知道什么时候可以联系上,现在有了AI,还是尝试自己解决。
使用EC2控制台,串口连接,进入了gure界面:
1.查看磁盘分区
grub>ls
(hd0) (hd0,gpt1) (hd0,gpt2)(hd0,gpt3).....
2.找到/boot 目录或内核文件的分区
一个个试,终于找到了(hd0,gpt3)带了boot目录
grub>ls (hd0,gpt3)/boot/
./ ../ bin/ boot/ dev/ etc/ home/ lib/ lib64/ mnt/ opt/ proc/ root/ run/ sbin/
selinux/ srv/ sys/ tmp/ usr/ var/ config.partids
3.设置根分区
grub>set root=(hd0,gpt3)
4.查找内核文件
grub>ls /boot/
.vmlinuz-6.4.0-150700.53.31-default.hmac System.map-6.4.0-150700.53.31-default
config-6.4.0-150700.53.31-default initrd-6.4.0-150700.53.31-default mbrid
symvers-6.4.0-150700.53.31-default.gz sysctl.conf-6.4.0-150700.53.31-default
vmlinux-6.4.0-150700.53.31-default.gz vmlinuz-6.4.0-150700.53.31-default
这个里面vmlinuz-6.4.0-150700.53.31-default是内核文件,内核版本是 6.4.0-150700.53.31-default
5.加载内核
grub>linux /boot/vmlinuz-6.4.0-150700.53.31-default root=/dev/???? ro
这里到底用哪个磁盘名称呢?我在EC2控制台中看到的设备名称是sda1,但是AI建议我不能用这个,我觉得不确定,所以试试用UUID
grub>cat /etc/fstab
LABEL=ROOT / xfs defaults
0 1-150700.53.31-default.hmac System.map-6.4.0-150700.53.31-default
LABEL=EFI /boot/efi vfat defaults
0 0150700.53.31-default.gz sysctl.conf-6.4.0-150700.53.31-default
UUID=a38ec4c0-0f8a-4ca2-b0f0-15abca47f07c /ek/log xfs defaults
0 0
UUID=5d0dd0a6-31a8-48dc-9620-75d5138f57f9 BLOCK_SIZE=4096 TYPE=xfs PARTLABEL
=primary 0 0
UUID=3388468c-3a14-4c40-bad3-d3b4028390a7 /ek/shared xfs defaults
0 0
UUID=150fcad5-43d3-4d86-afac-aef89565e178 /ek/data xfs defaults
不过AI建议我用LABEL,听它的。
grub>linux /boot/vmlinuz-6.4.0-150700.53.31-default root=LABEL=ROOT ro
6.启动
grub>boot
看到串口界面没有任何反应,Grub中输入任何都无反应,敲回车也无用。但是看到EC2控制台中机器在正常启动,后面用ssh可以连接了。
7.重新生成 GRUB 配置文件
ec2-user@ekdb01:~>sudo grub2-install /dev/sda
ec2-user@ekdb01:~> sudo grub2-mkconfig -o /boot/grub2/grub.cfg
Generating grub configuration file ...
Found linux image: /boot/vmlinuz-6.4.0-150700.53.31-default
Found initrd image: /boot/initrd-6.4.0-150700.53.31-default
Warning: os-prober will not be executed to detect other bootable partitions.
Systems on them will not be added to the GRUB boot configuration.
Check GRUB_DISABLE_OS_PROBER documentation entry.
Adding boot menu entry for UEFI Firmware Settings ...
done
8.重新启动服务器
ec2-user@ekdb01:~>sudo reboot
原以为问题解决,结果重启后,系统又回到了grub界面了,进不了Linux系统。
9.重新修复
grub>set root=(hd0,gpt3)
grub>linux /boot/vmlinuz-6.4.0-150700.53.31-default root=LABEL=ROOT ro
grub>initrd /boot/initrd-6.4.0-150700.53.31-default
grub>boot
完成启动后,ssh可以连接服务器。
一直怀疑问题还是在磁盘标识上,这次用lsblk查看到的标识。
ec2-user@ekdb01:~>lsblk
nvme1n1 259:2 0 100G 0 disk
├─nvme1n1p1 259:7 0 2M 0 part
├─nvme1n1p2 259:8 0 20M 0 part /boot/efi
└─nvme1n1p3 259:9 0 100G 0 part /
ec2-user@ekdb01:~> sudo grub2-install /dev/nvme1n1
Installing for x86_64-efi platform.
Installation finished. No error reported.
ec2-user@ekdb01:~> sudo grub2-mkconfig -o /boot/grub2/grub.cfg
Generating grub configuration file ...
Found linux image: /boot/vmlinuz-6.4.0-150700.53.31-default
Found initrd image: /boot/initrd-6.4.0-150700.53.31-default
Warning: os-prober will not be executed to detect other bootable partitions.
Systems on them will not be added to the GRUB boot configuration.
Check GRUB_DISABLE_OS_PROBER documentation entry.
Adding boot menu entry for UEFI Firmware Settings ...
done
10.重启服务器验证
ec2-user@ekdb01:~>sudo reboot
看到了系统一直忙碌,屏幕日志滚动飞快,一会儿系统成功启动。再重启一次还是能正常启动,不再卡grub界面,看来系统正常了。