CentOS无法启动,启动分区无法找到,然后就报了个堆栈信息:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
ACPI: wmi: Mapper loaded dracut Warning: No root device "block: /dev/sda4" found dracut Warning: Boot has failed. To debug this issue add "rdshell" to the kernel command line. dracut Warning: Signal caught! dracut Warning: Boot has failed. To debug this issue add "rdshell" to the kernel command line. kernel Panic - not syncing: Attempted to kill init! Pid: 1, comm: init Tainted: G I-------2.6.32-358.el6.x86_64 #1 Call Trace: [<ffffffff8150cfc8>]? panic+0xa7/0x16f [<ffffffff81073ae2>]? do_exit0x25/0x870 [<ffffffff81182885>]? fput_+0x25/0x30 [<ffffffff81073b48>]? do_group_exit+0x58/0xd0 [<ffffffff81073bd7>]? sys_exit_group+0x17/0x20 [<ffffffff8100b072>]? system_call_fastpath+0x16/x1b Panic occurred, switching back to text console *note1*: block device sought is not shown in /dev/fstab. |
看样子是磁盘找不到了,想想前不久加了个磁盘装了其他的系统,会不会是影响了分区。
然后进去到另外的ubuntu系统,查看分区表:
发现分区全部挂在了sdb,然而实际上最开始装系统的时候磁盘应该是sda:
分析了一下分区信息,其中 sdb1-sdb7
应该就是我的CentOS分区了,50G的sdb4就是根分区,先把它挂载到当前系统。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
ma@Y485:~$ sudo mkdir /sdb4 ma@Y485:~$ sudo mount /dev/sdb4 /sdb4/ ma@Y485:~$ cat /sdb4/etc/fstab # /etc/fstab: static file system information. # # Use 'blkid' to print the universally unique identifier for a # device; this may be used with UUID= as a more robust way to name devices # that works even if disks are added and removed. See fstab(5). # # <file system> <mount point> <type> <options> <dump> <pass> # / was on /dev/sda12 during installation UUID=8c9c0656-bd8a-41e0-8aae-43eaf8938227 / ext4 errors=remount-ro 0 1 UUID=6b60d3c1-221b-48de-9819-eb41cfbdc0cc /boot ext4 defaults 0 2 UUID=BAE5-8056 /boot/efi vfat umask=0077 0 1 UUID=122bd403-dd15-4616-a5ee-95b3fbeba590 /data ext4 defaults 0 2 |
发现所有的分区都是通过ID来标记的,因此基本定位到问题的原因为:添加新磁盘后,之前的磁盘变成了sdb分区,然而系统里面的磁盘ID还是指向开始的sda分区。就导致了分区找不到,系统无法启动。所以最后解决方法就是把所有的UUID都改成当前的分区号:
1 2 3 4 5 6 7 8 |
/dev/sdb4 / ext4 defaults 1 1 /dev/sdb2 /boot ext4 defaults 1 2 /dev/sdb1 /boot/efi vfat umask=0077,shortname=winnt 0 0 /dev/sdb6 /data ext4 defaults 1 2 /dev/sdb7 /home ext4 defaults 1 2 /dev/sdb5 /usr/local ext4 defaults 1 2 /dev/sdb3 swap swap defaults 0 0 ... |
保存重启,然后就好了。
2019年7月4日 上午9:53 1F
请问具体操作应该怎么做
2019年7月8日 下午10:47 B1
@ wkh 进入修复模式(或者随便找个系统盘进入live模式),列出当前所有的磁盘分区。找到原系统中的根分区,挂载到当前系统随便一个分区,修改/etc/fstab中的磁盘和挂载点的对应关系。
2019年11月13日 上午11:29 2F
fstab内UUID的作用就是为了防止硬盘增删导致/dev/sda变为/dev/sdb
没太理解你这为什么出问题?
而且你改为sdb,如果系统启动时把这块硬盘再次识别为sda,又会发生起不来的现象
2019年11月16日 下午1:10 B1
@ taolinke 我添加了一块硬盘,同时把这块硬盘的位置移到了另一个接口上。导致启动识别的时候这块盘识别成了sdb,原始安装时候是sda。