Swap не работает при чистой установке 14.04 с использованием зашифрованного дома

28

Обновление 3:

Я решил переустановить систему с нуля, чтобы убрать всю старую грязь, которая возникла, поскольку после обновления у меня возникли и другие проблемы. Однако эта проблема сохранилась.

При чистой установке выбор установки с использованием «Зашифрованного дома» приводит к неправильной конфигурации зашифрованного свопинга.

Обновление 2:

Я исправил порядок разбиения, на который жаловался cfdisk, но проблема сохраняется. Теперь своп находится в / dev / sda6, и я могу запустить его следующим образом:

~$ sudo mkswap /dev/sda6
Setting up swapspace version 1, size = 7998460 KiB
no label, UUID=18881d0f-d9ec-43be-a23f-0cbd78ea6d22

$sudo nano /etc/crypttab # Update crypttad with new UUID

$ sudo /etc/init.d/cryptdisks reload
 * Stopping remaining crypto disks...
 * cryptswap1 (stopped)...                                               [ OK ] 
 * Starting remaining crypto disks...                                        
 * cryptswap1 (starting)..
 * cryptswap1 (started)...                                               [ OK ] 
$ sudo swapon -a

$ls -l /dev/disk/by-uuid/
total 0
lrwxrwxrwx 1 root root 10 May 11 09:04 08b07f88-6da5-4b40-b062-42b3bb1c5f00 -> ../../sda3
lrwxrwxrwx 1 root root 10 May 11 09:08 18881d0f-d9ec-43be-a23f-0cbd78ea6d22 -> ../../sda6
lrwxrwxrwx 1 root root 10 May 11 09:04 19aa372c-05c8-4226-8f09-c54e5566e816 -> ../../sda5
lrwxrwxrwx 1 root root 10 May 11 09:04 A800B16E00B143DA -> ../../sda1
lrwxrwxrwx 1 root root 10 May 11 09:04 D28230E68230D129 -> ../../sda2
lrwxrwxrwx 1 root root 10 May 11 09:08 fcc8c419-8fec-4d4d-b55e-9e4c3b04d21d -> ../../dm-0

Но после перезагрузки своп не активируется и снова выглядит так:

$ ls -l /dev/disk/by-uuid/
total 0
lrwxrwxrwx 1 root root 10 May 11 09:12 08b07f88-6da5-4b40-b062-42b3bb1c5f00 -> ../../sda3
lrwxrwxrwx 1 root root 10 May 11 09:12 19aa372c-05c8-4226-8f09-c54e5566e816 -> ../../sda5
lrwxrwxrwx 1 root root 10 May 11 09:12 A800B16E00B143DA -> ../../sda1
lrwxrwxrwx 1 root root 10 May 11 09:12 D28230E68230D129 -> ../../sda2

На данный момент я предполагаю, что при настройке диска как зашифрованного linux больше не распознает тип раздела и, следовательно, не загружает его должным образом, в результате чего он не регистрируется для его UUID, и поэтому cryptswap не может найти его, вызывая сбой. Но я не знаю, как это исправить ..

Обновленный вопрос:

Дальнейшее тестирование показало, что я могу запустить и запустить обмен, запустив $ mkswap / dev / sda5

а затем обновите / etc / crypttab, указав правильный UUID и выполнив действия, описанные здесь: Как настроить зашифрованный файл подкачки?

Однако проблема остается, когда я перезагружаю компьютер, / dev / sda5 не появляется при запуске

$ ls -l /dev/disk/by-uuid/

Если я сделаю:

$ cfdisk /dev/sda 

Я получаю следующую ошибку:

FATAL ERROR: Bad logical partition 6: enlarged logical partitions overlap
                      Press any key to exit cfdisk

Графическая утилита «Диски» не выдает никаких ошибок при открытии диска с ее помощью.

$ sudo fdisk -l

Disk /dev/sda: 256.1 GB, 256060514304 bytes
255 heads, 63 sectors/track, 31130 cylinders, total 500118192 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x619aebf1

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *        2048      206847      102400    7  HPFS/NTFS/exFAT
/dev/sda2          206848   100870143    50331648    7  HPFS/NTFS/exFAT
/dev/sda3       191397888   192397311      499712   83  Linux
/dev/sda4       192399358   500117503   153859073    5  Extended
/dev/sda5       484118528   500117503     7999488   82  Linux swap / Solaris
/dev/sda6       192399360   484118527   145859584   83  Linux

Partition table entries are not in disk order

Оригинальный вопрос:

После обновления до 14.04 (с 13.04) мой компьютер испытывал серьезные замедления, при запуске top я заметил, что kswap0 занимает много процессорного времени. Я также заметил, что у меня не было места подкачки!

$ sudo swapon -a
swapon: /dev/mapper/cryptswap1: stat failed: No such file or directory

Кажется, есть какая-то проблема с моей зашифрованной настройкой подкачки (я даже не знал, что у меня она была)

$ cat /etc/crypttab 
cryptswap1 UUID=abe3c568-c8fd-4dfb-b8e9-0520d442dd61 /dev/urandom swap,cipher=aes-cbc-essiv:sha256

$ ls -l /dev/disk/by-uuid/
total 0
lrwxrwxrwx 1 root root 10 May  6 11:00 08b07f88-6da5-4b40-b062-42b3bb1c5f00 -> ../../sda3
lrwxrwxrwx 1 root root 10 May  6 11:00 19aa372c-05c8-4226-8f09-c54e5566e816 -> ../../sda6
lrwxrwxrwx 1 root root 10 May  6 11:00 A800B16E00B143DA -> ../../sda1
lrwxrwxrwx 1 root root 10 May  6 11:00 D28230E68230D129 -> ../../sda2

И глядя на мой фстаб

$ cat /etc/fstab
# /etc/fstab: static file system information.
#
# Use 'blkid' to print the universally unique identifier for a
# device; this may be used with UUID= as a more robust way to name devices
# that works even if disks are added and removed. See fstab(5).
#
# <file system> <mount point>   <type>  <options>       <dump>  <pass>
# / was on /dev/sda6 during installation
UUID=19aa372c-05c8-4226-8f09-c54e5566e816 /               ext4    errors=remount-ro 0       1
# /boot was on /dev/sda3 during installation
UUID=08b07f88-6da5-4b40-b062-42b3bb1c5f00 /boot           ext2    defaults        0       2
# swap was on /dev/sda5 during installation
#UUID=abe3c568-c8fd-4dfb-b8e9-0520d442dd61 none            swap    sw              0       0
/dev/mapper/cryptswap1 none swap sw 0 0

Я предполагаю, что в настройке sda5 что-то не так, но я не знаю, как это исправить, поскольку он настроен на шифрование. Был бы признателен за помощь, как, как действовать.

AJN
источник
Я ничего не знаю о зашифрованных разделах, но эта первая ошибка говорит о том, что раздел подкачки не был смонтирован. Также закомментирована строка монтирования для него в / etc / fstab. Я бы попробовал просто раскомментировать эту строку и перезапустить, чтобы проверить,
исправит
Я вполне уверен, что он должен быть закомментирован, и строка cryptswap1 отвечает за его косвенное монтирование с использованием информации в / etc / crypttab. Ваше предложение наверняка установит его в незашифрованном виде?
AJN
1
Будет ли это работать? https://ubuntuforums.org/showthread.php?t=2224129 Я не уверен насчет некоторых команд и не хочу испортить Ubuntu.
Это похоже на то, что я пробовал, я ожидаю, что это сработает в течение одной перезагрузки, а затем перестанет работать, как только вы впервые активируете зашифрованный своп.
AJN
На данный момент я только что вернулся к использованию обычного обмена. Основной сценарий, против которого я использую шифрование, - это если кто-то украдет мой ноутбук, а кто-то с умеренными навыками в Linux решит поискать что-нибудь интересное, то есть, скорее всего, просто попытаться загрузиться с помощью usb и смонтировать мой домашний раздел. У меня нет ничего, что, по моему мнению, могло бы найти кого-то достаточно ценного, чтобы попытаться восстановить его фрагменты из свопа. Это действительно должна быть опция установки, чтобы использовать зашифрованный дом + обычный обмен.
AJN

Ответы:

16

Известная ошибка

Существует ошибка (см. Ниже), которая перезаписывает UUIDраздел, как только в него записываются данные. Следовательно, вы не можете использовать UUIDссылку на раздел, который будет использоваться для зашифрованного обмена.

В наши дни пространство подкачки практически не используется. На моей машине своп используется только тогда, когда я открываю свою 40-ую вкладку. Когда у меня нет свопа, внезапно мой компьютер начинает зависать, и браузер закрывается. Или в случае Chromiumбраузера, многие вкладки внезапно «умрут».
По этой причине ссылки /dev/disk/by-uuid/в вашем /etc/crypttabмогуществе , кажется , работает на некоторое время, но как только ваша подкачка фактически используются, он будет перезаписывать , UUIDпотому что весь раздел используется для зашифрованного хранилища данных.

Easy Fix

Простое решение заключается в том, чтобы ссылаться на раздел подкачки по устройству /etc/crypttab, например:

cryptswap1 /dev/sda5 /dev/urandom swap,cipher=aes-cbc-essiv:sha256

Предупреждение: это, вероятно, безопасно на ноутбуке (я использую его таким образом), но если вы находитесь на рабочем столе с заменяемыми дисками или у вас есть другие причины для изменения структуры диска / раздела, вы не хотите делать это, как нормальный раздел памяти может внезапно использоваться для подкачки.

Примечание. Чтобы изменения вступили в силу, необходимо перезагрузиться, поскольку только при загрузке будет /dev/mapper/cryptswap1создано.

Правильное исправление

Правильный способ исправить это - убедиться, что часть необработанного раздела, в которой хранятся UUIDданные, не будет перезаписана зашифрованными данными подкачки, поэтому она все равно останется при перезагрузке. Однако я не уверен, где UUIDнаписано и сколько байт занимает. Вы можете на свой страх и риск проверить это так:

cryptswap1 UUID=abe3c568-c8fd-4dfb-b8e9-0520d442dd61 /dev/urandom swap,offset=36,cipher=aes-cbc-essiv:sha256

Обратите внимание offset=36.

Пожалуйста, если у вас есть учетная запись Ubuntu One, войдите в систему и перейдите к ошибке # 1310058 на Launchpad и выберите (или нажмите здесь): «Эта ошибка также влияет на меня», чтобы ошибка приобрела «популярность» и стала более подверженной исправлению.


Обновление 2014-10-27

Я тоже наткнулся на это. Не проверено мной. Это похоже на offsetтрюк с большей детализацией и комментариями о восстановлении сломанного свопа.

https://bugs.launchpad.net/ubuntu/+source/ecryptfs-utils/+bug/1310058/comments/22

Redsandro
источник
5
Я просто хочу отметить, что ошибка отслеживается на bugs.launchpad.net/ubuntu/+source/ecryptfs-utils/+bug/953875 по состоянию на несколько дней назад (середина марта 2015 года), статус "исправлено выпущено", хотя это исправление относится только к 15.04. Я смотрю, будет ли он перенесен на 14.04 LTS ... и какой может быть "официальная" процедура обновления
Tommy Trussell
1
@TommyTrussell: не бэкпорт будет сумасшедшим для LTS. Ошибки в таких важных вещах по-прежнему открываются спустя почти год после выпуска, поэтому даже самые большие дистрибутивы Linux никогда не будут в одном ряду с OSX и Windows. К несчастью.
Redsandro
Я не знаю о публичном обсуждении ошибок, поскольку они исправляются в OSX и Windows, так как они могут быть "на одном уровне"? По моему опыту с OSX, ошибки исправляются или нет; нет публичного обсуждения, поэтому они "непрозрачны". Я просто упомянул новый номер ошибки (потому что тот, который вы связали, был помечен как дубликат), чтобы вы могли обновить свою ссылку. Как видно из обсуждения на форуме, упомянутого в сообщении об ошибке 953875, наиболее стабильное исправление может отличаться в зависимости от системы инициализации, которая меняется в 15.04. Так что исправление 14.04 может иметь технические проблемы для прямой совместимости.
Томми Трасселл
Я просто говорю, что вы никогда не увидите что-то вроде «О, кстати, SWAP не работает» в такой системе, как Windows или OSX. Это базовая функциональность, которая никогда не получит RTM до тестирования и исправления. Вот и все. Что касается безопасности, публичных обсуждений нет, но статистика все еще есть .
Редсандро
@Redsandro Ну, это бесплатная операционная система, и подобные вещи будут исправлены только до релиза, если люди обнаружат ошибку при тестировании релиза. После выпуска слишком рискованно, что исправление ошибки может нарушить что-то еще в чьей-то конфигурации. Однако это может быть исправлено в более позднем выпуске - так что, возможно, стоит его использовать - но промежуточные выпуски обычно более нестабильны, чем выпуски LTS, так как основное внимание уделяется общим обновлениям. Но вы определили, почему тестирование / исправление ошибок / обеспечение качества (QA) так важно, и Ubuntu становится лучше в этом.
Ads20000
9

У меня была точно такая же проблема в Ubuntu 14.04, и я наткнулся на эту тему; эта ссылка , предоставленная мутантом, сработала для меня. Я использовал /dev/disk/by-idссылку, а не / dev / sdXY, так как эта ссылка не всегда указывает на один и тот же физический раздел. Мой /etc/crypttabзакончился как:

cryptswap1 /dev/disk/by-id/wwn-0x500...-part6 /dev/urandom swap, cipher=aes-cbc-essiv:sha256
DoubleE
источник
3
Это правильное и простое решение!
Серж Строобандт
7

Просто используйте незашифрованный своп

... и держать / дома в зашифрованном виде

Я попробовал пару других решений, предложенных здесь. Несмотря на то, что они продолжали работать после горячей перезагрузки, в конечном итоге все они перестали работать после выключения и холодного перезапуска.

Это говорит нам о том, что мы имеем дело с двойной ошибкой:

  1. UUID диска подкачки переопределяется системой шифрования, и
  2. Во время загрузки возникает проблема тайм-аута.

Эти мысли также отражены в комментариях к соответствующей ошибке, поданной на Launchpad . Однако с ожидаемым переходом от Upstart к systemd мало что сделано для устранения ошибки в современных системах LTS.

В этот момент мне в голову пришли следующие мысли:

  1. Во время установки системы я попросил только зашифровать мой \homeраздел, больше ничего.
  2. Риски, связанные с отсутствием зашифрованного раздела подкачки, довольно ограничены.
  3. Это до Canonical, чтобы навести порядок. Я не буду тратить больше времени на это.

Итак, вот мое решение восстановить подкачку как обычный незашифрованный подкачку без переустановки всей операционной системы.

  1. Если вы еще этого не сделали, установите blkid:$ sudo apt-get install blkid
  2. Отредактируйте /etc/crypttabи удалите всю cryptswap1строку:$ sudo nano /etc/crypttab
  3. Запустите GParted из меню системных настроек.
  4. Вы увидите раздел с восклицательным знаком. Это должен быть неисправный раздел подкачки. Тщательно выберите его и переформатируйте в linux-swapраздел. После применения этой операции вам сообщают о новом UUID восстановленного нормального раздела подкачки. Вам предлагается возможность сохранить эту информацию. Если вы этого не сделаете, знайте, что вы всегда можете получить новый UUID из командной строки с помощью blkid:$ sudo blkid
  5. Теперь пришло время восстановить /etc/fstabего былую славу:$ sudo nano /etc/fstab

    • Удалить всю строку, содержащую ссылку на /dev/mapper/cryptswap1.
    • Раскомментируем старую swapстроку, удалив символ #перед UUID=....
    • Теперь замените старый UUID на новый, полученный ранее.
    • Запишите файл, нажав Ctrl+ O и выйдите nanoс помощью Ctrl+ X.
  6. Сделав все это, вы уже можете начать использовать новый незашифрованный своп с: $ sudo swapon -a
  7. Это решение выдерживает как горячие перезагрузки, так и выключение при холодном перезапуске.
Серж Строобандт
источник
1
Это единственный ответ, который сработал для меня, хотя я попробовал все остальное.
пятнадцатое
В gparted мой раздел подкачки имеет флаг загрузки. Это все еще будет работать, или я не смогу загрузиться?
Кристиан Скьёдт,
@ ChristianSkjødt Ваш раздел подкачки не должен иметь установленный флаг загрузки. Во всяком случае, вышеуказанная процедура не повлияет ни на что из этого.
Серж Строобандт
2

Посмотрите на это . Я исправил эту проблему, просто заменив UUID = ... на / dev / sda3 в / etc / crypttab.

мутант
источник
1
Сначала запустите "sudo fdisk -l", чтобы проверить, как называется ваш раздел подкачки, это может быть "/ etc / sda5" или другой, затем отредактируйте cryptab, как описано в mutant. Это сработало для меня и переживает перезагрузку. Это определенно ошибка, так как я получил эту проблему с новой установкой на новый SSD. Я установил опцию «шифровать домашний каталог» при установке, гораздо лучше шифровать / home после установки, особенно если вы копируете файлы из старого / home из предыдущей установки.
Пол Уильямс
Это sudo fdisk -lбыло то, что никто не говорил. Спасибо за это! :)
Аман Алам
Вы должны по крайней мере предупредить людей, что /dev/sd*пути могут меняться по прихоти и приводить к тому, что неверный раздел будет уничтожен данными подкачки. /dev/disk/by-idвыше.
underscore_d
0

У меня есть эта проблема, как и люди в вопросе 332625 . Некоторая комбинация приостановки и перезагрузки теряет UUID вашего раздела подкачки (как сказано в комментарии в вашем / etc / fstab , подтвердите это с помощью sudo blkd), поэтому строка в вашем / etc / crypttab для использования этого UUID в качестве зашифрованного свопа не работает.

Мне не повезло переключить / etc / crypttab, чтобы использовать имя раздела /dev( / dev / sda6 в вашем случае) или dev/disk/by-id/имя вместо исчезающего UUID.

К сожалению, отмена зашифрованного свопа - самое простое и пока лучшее решение.

skierpage
источник
эта проблема очень старая, я удивляюсь, почему они ее еще не исправили, теперь я сталкиваюсь с той же проблемой с моим рабочим столом и не могу ее запустить, в прошлом исправил ее на своем ноутбуке, но не могу вспомнить, как :(
Томасб