que signifie «Read Swap Header failed: Success»?

9

J'essaie d'installer Arch Linux (à partir de l'instantané 2014-04-01). J'ai créé un fichier d'échange et j'ai essayé swapon, mais j'ai un message d'erreur (?) Que je ne comprends pas.

J'ai exécuté

fallocate -l 512M /mnt/sda2/swapfile
chmod 600 /mnt/sda2/swapfile
swapon /mnt/sda2/swapfile

et la sortie est

swapon: /mnt/sda2/swapfile: read swap header failed: Success

et j'ai :(à la fin de ma ligne de commande. Alors, a-t-il réussi ou échoué? N'est-ce pas comment configurer un fichier d'échange?

Adam R. Gray
la source

Réponses:

18

N'est-ce pas comment configurer un fichier d'échange?

Je pense que vous avez manqué une étape entre chmodet swapon:

mkswap /mnt/sda2/swapfile

Quant à l'erreur oxymoromique ...

swapon: / mnt / sda2 / swapfile: échec de la lecture de l'en-tête de swap: succès

Cela signifie littéralement qu'il y a un bogue dans le swaponcode, mais pas nécessairement lié à son fonctionnement principal.

Les fonctions de la bibliothèque C utilisent souvent errno , une variable globale qui stocke un code d'erreur. La fonction elle-même renverra une valeur indiquant qu'une erreur s'est produite (toute erreur) et la nature exacte de cette erreur sera stockée dans errno. L'idée est que si vous obtenez une indication d'erreur, vous pouvez alors vérifier la valeur de errnopour voir exactement de quoi il s'agit.

Il y a aussi une strerror()fonction de bibliothèque qui prendra une valeur errno (ce sont des entiers) et retournera une chaîne de langage humain s'y rapportant. L'un d'eux est Success, ce qui correspond à un code d'erreur de 0 (c'est-à-dire, aucune erreur).

Ainsi, lorsque vous voyez quelque chose comme ça, cela indique une erreur telle que:

  • Obtenir une erreur, puis appeler une autre fonction (avec succès) qui réinitialise errno à 0 dans les coulisses, puis utiliser errno pour déterminer les détails de l'erreur que vous avez obtenue avant d'appeler la deuxième fonction.

Et / ou

  • Passer strerror()une variable qui était censée avoir reçu la valeur de errno à un moment donné (pour éviter que l'erreur précédente ne se produise) mais ne l'a pas été.
boucle d'or
la source
Vous obtenez deux votes positifs si je pouvais - le mkswapet errno.
Aaron D. Marasco