o que significa “Read Swap Header failed: Success” mean?

8

Estou tentando instalar o Arch Linux (a partir do instantâneo 2014-04-01). Eu fiz um arquivo de swap e tentei swapon dele, mas recebi uma mensagem de erro (?) Que não entendo.

Eu executei

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

e a saída é

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

e eu tenho :( no final da minha linha de comando. Então, teve sucesso ou fracassou? Não é assim que você configura um arquivo de troca?

    
por Adam R. Grey 13.04.2014 / 22:46

1 resposta

18

Is this not how to set up a swap file?

Acho que você perdeu uma etapa entre chmod e swapon :

mkswap /mnt/sda2/swapfile

Quanto ao erro oximorômico ...

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

O que isso significa literalmente é que há um bug no código swapon , mas não necessariamente relacionado ao seu funcionamento principal.

As funções da biblioteca C geralmente usam errno , uma variável global que armazena um código de erro. A própria função retornará um valor indicando que ocorreu um erro (qualquer erro) e a natureza exata desse erro será armazenada em errno . A ideia é que, se você receber uma indicação de um erro, poderá verificar o valor de errno para ver exatamente o que é.

Há também uma função de biblioteca strerror() que tomará um valor errno (eles são inteiros) e retornará uma string de linguagem humana relacionada a ela. Um deles é Success , que corresponde a um código de erro de 0 (ou seja, nenhum erro).

Então, quando você vê algo assim, isso indica um erro como:

  • Obtendo um erro, em seguida, chamando outra função (com êxito) que redefine errno para 0 nos bastidores e, em seguida, usa errno para determinar as especificidades do erro que você recebeu antes de chamar a segunda função.

E / ou

  • Passando strerror() de uma variável que deveria ter sido atribuída o valor de errno em algum momento (para evitar que o erro anterior aconteça), mas não foi.
por 13.04.2014 / 23:36