Linux开机出现读秒1min30s的问题
出现的问题
电脑开机或重启后出现:A start job is running for dev-disk-by…(1min,30s)
查找原因
查找相关问题,发现主要原因是swap分区挂载不上,一直读取导致的。
1.在终端输入命令:
$ free -m
显示swap的total和free为0。
2.再输入下面的命令查看Swap状态。
$ swapon --show
没有弹出任何信息,说明swap分区没有激活。
3.再输入mount命令来查看已挂载的硬盘分区。
$ mount
发现swap分区没有挂载,此时已经确认系统启动时swap分区挂载失败。
解决过程
1.首先输入下面的命令查看swap分区的真实UUID。
$ sudo blkid
然后再查看/etc/fstab文件中swap分区的UUID。
$ sudo vi /etc/fstab
如果二者不同,则直接将fstab文件中swap分区的UUID替换成blkid命令查看到的UUID。保存后重启就能解决问题了。
2.然而我在解决问题的时候,发现这两个UUID是一致的。于是只能继续想办法。既然没挂载上,那可能是对应分区出了问题。
由于我使用的是虚拟机,那肯定不是硬件问题,只需要重新分配一下swap分区就行。
谨慎操作,别把硬盘数据搞没了,或者把系统搞挂了,这个分区我确认过是纯粹用来作为swap分区的,且本人使用的是虚拟机,胆子比较大,大家有问题还是先确认一下比较好
sudo mkswap /dev/xxx
其中的/dev/xxx 需要换成在输入blkid命令后查看得到的硬盘分区,例如/dev/sda2。
这样系统会将该分区重置为新的swap分区,分配一个新的UUID。
我再次重新挂载发现能挂载上,于是直接改掉/etc/fstab文件中对应的UUID,重启之后,却依然要读一分半,问题依然存在。
3.那么看样子是不能直接从硬盘分区挂载了。
- 先挂到可访问的挂载点,再从文件中读取。
sudo dd if=/dev/xxx of=/swapfile bs=1M count=4096 status=progress
这句指令使系统从标准输入或文件读取数据(即if),依指定的格式来转换数据,再输出到文件(即of)。具体意思是将xxx分区的空间作为输入链接到/swapfile文件存取。后面的空间大小是1M*4096,即分配4G的空间到文件。
/swapfile是自己定义的,也可以是/swap/swapfile这种,方便自己区分就行。随后设置文件权限
$sudo chmod 600 /swapfile
- 然后把生成的文件转换成 swap 文件
$sudo mkswap /swapfile
命令执行后会提示结果,显示新的UUID。
- 激活 Swap 文件
$sudo mkswap /swapfile
- 执行free -m 发现已经挂载上,接下来再更改/etc/fstab文件中swap分区的条目。
$ sudo vi /etc/fstab
修改对应行,直接改掉之前的分区,现在从文件中读取,不需要UUID了。改为:
/swapfile swap swap defaults 0 0
再次重启,不用等一分半了,问题解决。仅供参考,谢谢。