轶哥博客

妄图改变世界的全栈程序员。

记一次服务器启动修复 - /etc/fstab错误至系统无法启动

利用RK3399作为ARM微型服务器是非常有趣的事情。然而总有一些意外来得令人措手不及。

事情是这样的。我在服务器中挂载了三块SSD硬盘,其中两块是放于USB硬盘盒,通过Type-C和USB3.0接口连接。

开机自动挂载

我们先看一下开机自动挂载方案。

查询分区的Block ID:

blkid /dev/sda1
/dev/sda1: UUID="7f50f85e-783c-4d94-be37-d2c662504e58" TYPE="ext4"

然后把 Block ID 添加到/etc/fstab文件中,这是我的fstab文件:

UUID=a848d601-91ac-4b5c-8ce3-ffef674f5dd5 /nvme ext4 defaults 0 0
UUID=88eb8df2-1a8f-4f38-acc9-566deb1c8f40 /tf ext4 defaults 0 0
UUID=7f50f85e-783c-4d94-be37-d2c662504e58 /ssd0 ext4 defaults 0 0
UUID=e66307fc-2c33-406b-ae60-b27e2344d02a /ssd1 ext4 defaults 0 0

事情是这样开始的

我在检查硬盘状态的时候,发现其中一块硬盘没有进行4k对齐。然后我对该硬盘进行了重新分区。结果服务器就卡死了!😂

当我重启服务器后,一直连不上SSH。

插入HDMI,显示器一片黑暗!

如果是X86架构的服务器,挂载/etc/fstab失败后会进入高级模式,可以通过接入显示器解决,但是ARM架构(或者说我这块板子)的系统并没有提供这样的后悔药。

x86系统可以进入光盘Linux,然后挂载硬盘改写/etc/fstab文件。但是我的系统烧写在eMMC,即便能在SD卡刷机,通过SD卡引导系统并挂载eMMC硬盘也是非常有挑战的事情。

重装服务器是非常耗时的,需要进行非常多的软件配置。非迫不得已,我不会重新刷机。

事情是这样解决的

当我一筹莫展时,突然想到我的剪贴板中存有分区的Block ID数据。数据是UUID格式。

我将近期剪贴板中所有的UUID找到:

e66307fc-2c33-406b-ae60-b27e2344d02a
cfcaccd9-6ca7-406c-821c-affb331bda6d
9e669a85-35ce-487d-8cd9-09d66ddebe31
7f50f85e-783c-4d94-be37-d2c662504e58

还好,只有四个。

我将SSD移动硬盘接入到树莓派,通过树莓派重新进行分区。

将UUID强行写入到分区:

tune2fs -U 7f50f85e-783c-4d94-be37-d2c662504e58 /dev/sdb1

看来,我的运气不佳,我试了前三个都没能启动服务器。

当我万念俱灰之时,淡定写入最后一个UUID。

ping 192.168.31.63
PING 192.168.31.63 (192.168.31.63): 56 data bytes

...

ping: sendto: Host is down
Request timeout for icmp_seq 117
Request timeout for icmp_seq 118
64 bytes from 192.168.31.63: icmp_seq=119 ttl=64 time=305.276 ms
64 bytes from 192.168.31.63: icmp_seq=120 ttl=64 time=147.118 ms
64 bytes from 192.168.31.63: icmp_seq=121 ttl=64 time=67.426 ms

...

真是不幸中的万幸,服务器正常启动!

  上一篇 (解决 Rancher 2 卸载后无法重新运行的问题)
下一篇 (配置自动续期的免费通配符SSL证书)