“读取交换头失败:成功”是什么意思?

Ada*_*rey 9 arch-linux swap system-installation

我正在尝试安装 Arch Linux(来自 2014-04-01 快照)。我已经创建了一个交换文件并尝试了swapon它,但是我收到了一个我不明白的错误(?)消息。

我已经执行了

fallocate -l 512M /mnt/sda2/swapfile
chmod 600 /mnt/sda2/swapfile
swapon /mnt/sda2/swapfile
Run Code Online (Sandbox Code Playgroud)

输出是

swapon: /mnt/sda2/swapfile: read swap header failed: Success
Run Code Online (Sandbox Code Playgroud)

:(在命令行的末尾。那么它是成功还是失败?这不是设置交换文件的方法吗?

gol*_*cks 19

这不是设置交换文件的方法吗?

我认为您错过了介于chmod和之间的一步swapon

mkswap /mnt/sda2/swapfile
Run Code Online (Sandbox Code Playgroud)

至于矛盾的错误......

swapon:/mnt/sda2/swapfile:读取交换头失败:成功

这字面意思是swapon代码中存在错误,但不一定与其主要功能有关。

C 库函数通常使用errno,这是一个存储错误代码的全局变量。该函数本身将返回一个指示发生错误(任何错误)的值,并且该错误的确切性质将存储在errno. 这个想法是,如果你得到一个错误的指示,你可以检查 的值,errno看看它到底是什么。

还有一个strerror()库函数,它将接受一个 errno 值(它们是整数)并返回一个与之相关的人类语言字符串。其中之一是Success,它对应于错误代码 0(即没有错误)。

所以当你看到这样的东西时,它表明一个错误,例如:

  • 得到一个错误,然后调用另一个函数(成功地)在幕后将 errno 重置为 0,然后在调用第二个函数之前使用 errno 来确定你得到的错误的细节。

和/或

  • 传递strerror()一个本应在某个时候分配了 errno 值的变量(以防止发生先前的错误)但没有。