即使交换分区存在,并设置为 load in fstab
,它仍然没有被挂载。
fdisk
为交换分区返回这个:
file system: /dev/sda5
start: 1
end: 244
blocks: 1951744
id: 82
system: Linux swap / Solaris
Run Code Online (Sandbox Code Playgroud)
在我fstab
里面说
file system: /dev/sda5
mount point: none
type: swap
options: sw
dump: 0
pass: 0
Run Code Online (Sandbox Code Playgroud)
我可以很好地加载它,swapon /dev/sda5
但它不会在启动时加载。
我可以提供更多信息来帮助排除故障吗?我不知道还有哪些其他信息可能有用
根据要求,完整fstab
文件:
# <file system> <mount point> <type> <options> <dump> <pass>
proc /proc proc nodev,noexec,nosuid 0 0
/dev/sda6 / ext4 errors=remount-ro 0 1
/dev/sda5 none swap sw 0 0
/dev/sr1 none udf rw,noauto 0 0
Run Code Online (Sandbox Code Playgroud)
我正在查看系统日志,我看到了这一点,不确定这是什么意思,或者是否正常,但是:
Apr 29 17:57:24 caelan-ubuntu os-prober: debug: running /usr/lib/os-probes/50mounted-tests on /dev/sda5
Apr 29 17:57:24 caelan-ubuntu 50mounted-tests: debug: /dev/sda5 is a swap partition; skipping
Run Code Online (Sandbox Code Playgroud)
输出 mountall
mountall: Did not receive a reply. Possible causes include: the remote application did not send a reply, the message bus security policy blocked the reply, the reply timeout expired, or the network connection was broken.
mountall: Connection is closed
Run Code Online (Sandbox Code Playgroud)
输出 mountall -v
http://pastie.org/private/ras9mc7mf66yudnjoem4w
swap finished
...
local 4/4 remote 0/0 virtual 12/12 swap 0/0
Run Code Online (Sandbox Code Playgroud)
不确定,仍然没有加载交换...仍然可以在命令行中添加,并且我的 Windows 分区正在启动时安装,这也在 fstab 中。
小智 8
谢谢你的问题。当我查看它时,我发现昨天升级到 Natty 后,我的系统与您的系统存在相同的问题。我认为问题在于升级过程中交换分区的 UUID 发生了变化。这是我修复它的方法。
运行sudo blkid
。这将显示磁盘上所有分区的当前 UUID。我怀疑您现在会看到交换分区的 UUID 与 /etc/fstab 中的值不同。
如果不同,请在 sudo 下运行一些文本编辑器来编辑 /etc/fstab。如blkid
上面的命令所示,将 UUID 的值替换为当前的实际值。不要包括引号。
保存文件并重新启动系统。运行free -m
以确保更改解决了问题:
$ free -m
total used free shared buffers cached
Mem: 1001 604 396 0 123 199
-/+ buffers/cache: 281 719
Swap: 1953 0 1953
Run Code Online (Sandbox Code Playgroud)这听起来很愚蠢,但请尝试一下:重新排序/etc/fstab
以将交换分区放在最后。
mountall -v
以非 root 用户身份运行时似乎无害地失败,其输出可用于诊断为什么 mountall 在启动时无法正常工作。您的最后一行输出mountall -v
包含关键线索:
local 4/4 remote 0/0 virtual 12/12 swap 0/0
Run Code Online (Sandbox Code Playgroud)
换句话说,挂载了 0 个交换驱动器,在 /etc/fstab 中找到了 0 个交换驱动器。
现在为什么 mountall 没有在 /etc/fstab 中找到您的交换驱动器?好问题。这应该是一个针对mountall
. 为了诊断它,我复制了您的 /etc/fstab 并mountall -v
以非 root 用户身份运行。通过随机编辑 /etc/fstab 并继续测试mountall -v
,我找到了如何更改 mountall 报告的“swap 0/0”。只需重新排序 /etc/fstab 的行就足以使其更改为“swap 0/1”,换句话说,在 /etc/fstab 中找到 1 个交换驱动器。有了这个,它可能足以正常启动。如果没有,请发布新的结果mountall -v
。