Swap не работает при чистой установке 14.04 с использованием зашифрованного дома
Обновление 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 что-то не так, но я не знаю, как это исправить, поскольку он настроен на шифрование. Был бы признателен за помощь, как, как действовать.
5 ответов
Известная ошибка
Существует ошибка (см. Ниже), которая перезаписывает 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
У меня была точно такая же проблема в 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
Просто используйте незашифрованный своп
... и держать / дома в зашифрованном виде
Я попробовал пару других решений, предложенных здесь. Несмотря на то, что они продолжали работать после горячей перезагрузки, в конечном итоге все они перестали работать после выключения и холодного перезапуска.
Это говорит нам о том, что мы имеем дело с двойной ошибкой:
- UUID диска подкачки переопределяется системой шифрования, и
- Во время загрузки возникает проблема тайм-аута.
Эти мысли также отражены в комментариях к соответствующей ошибке, поданной на Launchpad. Однако с ожидаемым переходом от Upstart к systemd мало что сделано для устранения ошибки в современных системах LTS.
В этот момент мне в голову пришли следующие мысли:
- Во время установки системы я попросил только зашифровать
\home
раздел, больше ничего. - Риски, связанные с отсутствием зашифрованного раздела подкачки, довольно ограничены.
- Это до Canonical, чтобы навести порядок. Я не буду тратить больше времени на это.
Итак, вот мое решение восстановить подкачку как обычный незашифрованный подкачку без переустановки всей операционной системы.
- Если вы еще этого не сделали, установите
blkid
:$ sudo apt-get install blkid
- редактировать
/etc/crypttab
и удалить весьcryptswap1
линия:$ sudo nano /etc/crypttab
- Запустите GParted из меню системных настроек.
- Вы увидите раздел с восклицательным знаком. Это должен быть неисправный раздел подкачки. Тщательно выберите его и переформатируйте в
linux-swap
раздел. После применения этой операции вам сообщают о новом UUID восстановленного нормального раздела подкачки. Вам предлагается возможность сохранить эту информацию. Если вы этого не сделаете, знайте, что вы всегда можете получить новый UUID из командной строки с помощьюblkid
:$ sudo blkid
Теперь пришло время восстановить
/etc/fstab
к его былой славе:$ sudo nano /etc/fstab
- Удалить всю строку, содержащую ссылку на
/dev/mapper/cryptswap1
, - Раскомментируйте старый
swap
строка, удалив хеш#
передUUID=...
, - Теперь замените старый UUID на новый, полученный ранее.
- Запишите файл, нажав Ctrl+O и выйдите
nano
с помощью Ctrl+X.
- Удалить всю строку, содержащую ссылку на
- Сделав все это, вы уже можете начать использовать новый незашифрованный своп с:
$ sudo swapon -a
- Это решение выдерживает как горячие перезагрузки, так и выключение при холодном перезапуске.
Посмотрите на это. Я исправил эту проблему, просто заменив UUID=... на /dev/sda3 в /etc/crypttab.
У меня есть эта проблема, как и люди в вопросе 332625. Некоторая комбинация приостановки и перезагрузки теряет UUID вашего раздела подкачки (как говорится в комментарии в вашем / etc / fstab, подтвердите это с помощью sudo blkd
), поэтому строка в вашем / etc / crypttab использовать этот UUID в качестве зашифрованного свопа не удалась.
Мне не повезло переключить / etc / crypttab для использования раздела /dev
имя (/ dev / sda6 в вашем случае) или dev/disk/by-id/
имя вместо исчезающего UUID.
К сожалению, отмена зашифрованного свопа - самое простое и пока лучшее решение.