Я бачив таку ж помилку сьогодні на ноутбуці під керуванням Ubuntu 15.10, який я завжди оновлював, але не перезавантажувався протягом місяця, поки не хотів перевірити поточне ядро (тобто, можливо, відбулися останні зміни).
У будь-якому випадку, я виявив, що в моєму випадку основна причина була насправді "відсутнім" розділом swap через глюк налаштування під час виконання вищевказаного підручника. Якщо це так і / або ви фактично використовуєте lvm
, ви, можливо, зможете пропустити крок 2 нижче. Звичайно, ви також можете побачити вищезгадане повідомлення про помилку, якщо ваш системний (або вторинні дані) розділ був пошкоджений або його неможливо знайти (див. Крок 3).
Крок 1: Встановіть систему, завантажте розділи, слідуючи підготовленому навчальному посібнику
Скажімо, ваш (ext2) завантажувальний розділ є / dev / sdX1, ваш (зашифрований) своп розділ є / dev / sdX2, ваш (зашифрований) розділ даних є / dev / sdX3, і ви успішно розшифрували останній за допомогою cryptsetup luksOpen /dev/sdX3 data
подальшої установки це: mkdir /tmp/data; mount /dev/mapper/data /tmp/data
.
Зверніть увагу на кріплення прив'язки у навчальному посібнику та переконайтеся, що він змонтований / dev / sdX1, щоб ви могли отримати доступ до нього з каталогу / завантажувального каталогу системного розділу (це важливо, оскільки ми повинні виконати update-initramfs
).
Далі ми припускаємо, що ви успішно виконані chroot /tmp/data/@ubuntu1510
(або як називається ваш змонтований системний розділ)
Крок 2: Позбавтеся від наведеного вище повідомлення про помилку
Я використовую btrfs (як ви могли здогадатися зі згаданого імені підпункту), тому lvmetad можна легко відключити наступним чином без втрати функціональності:
- редагуйте /etc/lvm/lvm.conf та змініть
use_lvmetad=1
наuse_lvmetad=0
- виконати
update-initramfs -k $(uname -r) -u ; sync
Тепер ви можете перезавантажити і повідомлення про помилку не повинно бути. Однак у моєму випадку наступне повідомлення про помилку [1] вказало на основну проблему, згадану вище, тож, поки ми знаходимося на цьому, ...
Крок 3. Переконайтесь, що / etc / crypttab вказує на правильні, непошкоджені розділи
По-перше, запустіть sfdisk --list /dev/sdX
і перевірте, чи ваш зашифрований розділ swap (у моєму випадку / dev / sdX2) насправді не відображається як (звичайний) розділ swap. Якщо це було (як у моєму випадку), це означало, що під час завантаження, наприклад, за допомогою рятувального диска, ймовірно, буде використаний доступний розділ swap, тим самим перезаписати ваші метадані, пов'язані з cryptsetup (keyphrase та UUID).
Потім перегляньте / dev / disk / by-uuid та порівняйте відповідні UUID ваших зашифрованих розділів із тими, які містяться в / etc / crypttab. Моя здогадка на даний момент: У вашому випадку є невідповідність.
Якщо виділений зашифрований розділ swap ніде не знайдений нижче / dev / disk / by-uuid, це тому, що він наразі використовується вашою системою порятунку. У цьому випадку виконайте наступне:
- переконайтеся, що перестаєте використовувати розділ:
swapoff -a
- переформатуйте його:
mkfs.ext2 /dev/sdX2
(це дуже важливо , особливо при використанні розділів GPT [2], оскільки це скасовує глюк, про який я згадував раніше. Ймовірною причиною того, що розділ відображається як тип "swap" у списку sfdisk, є те, що ви / я помилково використовували mkswap /dev/sdX2
під час налаштування розділу на початку.)
- виконайте посібник для шифрування розділу та встановлення парольної фрази; після цього відкрийте його за допомогою cryptsetup і належним чином переформатуйте тепер розшифрований розділ (використовуючи щось на зразок
mkswap /dev/mapper/swap
)
- переконайтеся, що
sfdisk --list /dev/sdX
не буде ідентифікувати розділ swap як такий (у цьому випадку повторіть останні кроки)
Тепер переконайтесь, що UUID, перелічені в / etc / crypttab, відповідають рядку того, що ви бачите нижче / dev / disk / by-uuid для відповідних зашифрованих розділів.
Знову ж таки, щоб зміни були постійними, потрібно виконати, update-initramfs
як показано вище.
Якщо ви задоволені, переконайтеся, що все записано на диск та перезавантажте систему (не потрібно демонтувати все вручну). Згодом ваша проблема повинна піти.
[1] можливо я не звернув уваги перший раз або перше повідомлення про помилку "замаскувало" друге; тобто лише після перезавантаження (з use_lvmetad=0
) мені було запропоновано " Читання всіх фізичних томів. Це може зайняти деякий час ... " (повторюється кілька разів), після чого слід " ALERT! / dev / disk / by-uuid / .. . не існує. " (Слід зазначити, що update-initramfs
також скаржився на відсутній розділ.)
[2], оскільки їх тип віднімається з аналізу їх вмісту, а в кінцевому рахунку не визначається прапором / байтом (тому не існує простого способу, наприклад, змінити тип файлової системи GPT за допомогою [g]parted
.)