Was bedeutet "Read Swap Header fehlgeschlagen: Erfolg"?

9

Ich versuche, Arch Linux zu installieren (aus dem Snapshot vom 01.04.2014). Ich habe eine Auslagerungsdatei erstellt und versucht swapon, aber ich habe eine Fehlermeldung (?) Erhalten, die ich nicht verstehe.

Ich habe ausgeführt

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

und die Ausgabe ist

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

und ich habe :(am Ende meiner Kommandozeile. War es also erfolgreich oder fehlgeschlagen? Ist dies nicht das Einrichten einer Auslagerungsdatei?

Adam R. Gray
quelle

Antworten:

18

Ist dies nicht das Einrichten einer Auslagerungsdatei?

Ich denke, Sie haben einen Schritt dazwischen verpasst chmodund swapon:

mkswap /mnt/sda2/swapfile

Was den oxymoromischen Fehler betrifft ...

swapon: / mnt / sda2 / swapfile: Lese-Swap-Header fehlgeschlagen: Erfolgreich

Dies bedeutet wörtlich, dass der swaponCode einen Fehler enthält, der jedoch nicht unbedingt mit seiner primären Funktionsweise zusammenhängt.

C-Bibliotheksfunktionen verwenden häufig errno , eine globale Variable, die einen Fehlercode speichert. Die Funktion selbst gibt einen Wert zurück, der angibt, dass ein Fehler aufgetreten ist (ein Fehler), und die genaue Art dieses Fehlers wird in gespeichert errno. Die Idee ist, dass Sie, wenn Sie einen Hinweis auf einen Fehler erhalten, den Wert von überprüfen können errno, um genau zu sehen, was es ist.

Es gibt auch eine strerror()Bibliotheksfunktion, die einen Errno-Wert (sie sind Ganzzahlen) annimmt und eine dazugehörige Zeichenfolge in menschlicher Sprache zurückgibt. Eine davon ist Success, was einem Fehlercode von 0 entspricht (dh kein Fehler).

Wenn Sie also so etwas sehen, weist dies auf einen Fehler hin, wie z.

  • Einen Fehler erhalten, dann eine andere Funktion (erfolgreich) aufrufen, die errno hinter den Kulissen auf 0 zurücksetzt, und dann errno verwenden, um die Besonderheiten des Fehlers zu ermitteln, den Sie erhalten haben, bevor Sie die zweite Funktion aufgerufen haben.

Und / oder

  • Übergeben strerror()einer Variablen, der irgendwann der Wert errno zugewiesen werden sollte (um zu verhindern, dass der vorherige Fehler auftritt), aber nicht.
Goldlöckchen
quelle
Du bekommst zwei Gegenstimmen, wenn ich könnte - das mkswapund errno.
Aaron D. Marasco