що означає "Не вдалося прочитати заголовка заміни: Успіх"?


9

Я намагаюся встановити Arch Linux (із знімка 2014-04-01). Я створив файл swap і спробував swaponйого, але мені надійшло повідомлення про помилку (?), Яке я не розумію.

Я стратив

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

і вихід є

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

і я маю :(в кінці свого командного рядка. Так це вдалося чи не вдалося? Хіба це не спосіб налаштування файлу swap?

Відповіді:


18

Хіба це не спосіб налаштування файлу swap?

Я думаю, ти пропустив крок між chmodі swapon:

mkswap /mnt/sda2/swapfile

Що стосується оксиморомної помилки ...

swapon: / mnt / sda2 / swapfile: помилка зчитування заголовка swap: Успіх

Це буквально означає, що в swaponкоді є помилка , але не обов'язково одна, пов'язана з її основним функціонуванням.

Функції бібліотеки C часто використовують errno , глобальну змінну, яка зберігає код помилки. Сама функція поверне значення, що вказує на помилку (будь-яку помилку), і точна природа цієї помилки буде збережена в errno. Ідея полягає в тому, що якщо ви отримаєте вказівку на помилку, ви можете перевірити значення, errnoщоб точно побачити, що це таке.

Існує також strerror()функція бібліотеки, яка прийме значення errno (вони цілі числа) і поверне рядок людської мови, що стосується цього. Одне з них - це те Success, що відповідає коду помилки 0 (тобто немає помилки).

Отже, коли ви бачите щось подібне, це вказує на помилку, наприклад:

  • Отримати помилку, потім викликати іншу функцію (успішно), яка скидає errno до 0 за кадром, а потім за допомогою errno визначити специфіку помилки, яку ви отримали перед тим, як викликати другу функцію.

І / або

  • Передача strerror()змінної, яка повинна була присвоїти значення errno в якийсь момент (щоб не допустити попередньої помилки), але не була.

Якщо ви могли отримати два обґрунтовані результати, ви зможете - mkswapі errno.
Аарон Д. Мараско
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.