Раздел подкачки не распознан (диск с UUID=... еще не готов или отсутствует)
- Я думаю, что у меня был зашифрованный раздел подкачки, потому что я решил зашифровать мой домашний каталог во время установки. Я полагаю, что это то, что линия с
/dev/mapper/cryptswap1 ...
в моем/etc/fstab
это все о. Я сделал что-то, чтобы поменять своп, потому что при следующей загрузке я получил сообщение (перефразировано):
Дисковод для /dev/mapper/cryptswap1 еще не готов или отсутствует. Подождите, чтобы продолжить. Нажмите S, чтобы пропустить, или M, чтобы восстановить вручную.
(Как примечание стороны, нажатие S или M, казалось, не сделало ничего, отличного от просто ожидания.)
Вот что я попробовал:
- Это руководство о том, как исправить раздел подкачки, не монтирующий. Однако в приведенном выше
mkswap
Сбой команды, потому что устройство занято. - Поэтому я загрузился с живого USB, запустил GParted, чтобы переформатировать раздел подкачки (который обнаружился как неизвестный тип fs), и подключился к сломанной системе, чтобы снова попробовать это руководство. Я тоже поправил
/etc/initramfs-tools/conf.d/resume
а также/etc/fstab
чтобы отразить новый UUID, сгенерированный при форматировании раздела как подкачки. Это все еще не сработало; вместо/dev/mapper/cryptswap1
отсутствует "Диск с UUID = [ UUID раздела подкачки] еще не готов или отсутствует..." - Поэтому я решил начать заново, как будто я никогда не создавал раздел подкачки. С Live USB я полностью удалил раздел подкачки (который снова отображается в GParted как неизвестный тип fs), удалил записи подкачки и cryptswap в
/etc/fstab
а также удалены/etc/initramfs-tools/conf.d/resume
а также/etc/crypttab
, На этом этапе основную систему не следует считать сломанной, поскольку нет раздела подкачки и нет инструкций по его монтированию, верно? Я не получил никаких ошибок при запуске. Я следовал тем же инструкциям по созданию и шифрованию раздела подкачки, начиная с создания раздела подкачки, хотя я думаю,fdisk
сказал, что перезагрузка была необходима, чтобы увидеть изменения.
- Это руководство о том, как исправить раздел подкачки, не монтирующий. Однако в приведенном выше
Я был уверен, что третий процесс, описанный выше, сработает, но проблема все еще сохраняется.
Некоторая актуальная информация (
/dev/sda8
это раздел подкачки):/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> proc /proc proc nodev,noexec,nosuid 0 0 # / was on /dev/sda6 during installation UUID=4c11e82c-5fe9-49d5-92d9-cdaa6865c991 / ext4 errors=remount-ro 0 1 # /boot was on /dev/sda5 during installation UUID=4031413e-e89f-49a9-b54c-e887286bb15e /boot ext4 defaults 0 2 # /home was on /dev/sda7 during installation UUID=d5bbfc6f-482a-464e-9f26-fd213230ae84 /home ext4 defaults 0 2 # swap was on /dev/sda8 during installation UUID=5da2c720-8787-4332-9317-7d96cf1e9b80 none swap sw 0 0 /dev/mapper/cryptswap1 none swap sw 0 0
вывод
sudo mount
:/dev/sda6 on / type ext4 (rw,errors=remount-ro) proc on /proc type proc (rw,noexec,nosuid,nodev) sysfs on /sys type sysfs (rw,noexec,nosuid,nodev) none on /sys/fs/fuse/connections type fusectl (rw) none on /sys/kernel/debug type debugfs (rw) none on /sys/kernel/security type securityfs (rw) udev on /dev type devtmpfs (rw,mode=0755) devpts on /dev/pts type devpts (rw,noexec,nosuid,gid=5,mode=0620) tmpfs on /run type tmpfs (rw,noexec,nosuid,size=10%,mode=0755) none on /run/lock type tmpfs (rw,noexec,nosuid,nodev,size=5242880) none on /run/shm type tmpfs (rw,nosuid,nodev) /dev/sda5 on /boot type ext4 (rw) /dev/sda7 on /home type ext4 (rw) /home/undisclosed/.Private on /home/undisclosed type ecryptfs (ecryptfs_check_dev_ruid,ecryptfs_cipher=aes,ecryptfs_key_bytes=16,ecryptfs_unlink_sigs,ecryptfs_sig=cbae1771abd34009,ecryptfs_fnek_sig=7cefe2f59aab8e58) gvfs-fuse-daemon on /home/undisclosed/.gvfs type fuse.gvfs-fuse-daemon (rw,nosuid,nodev,user=undisclosed)
вывод
sudo blkid
(Обратите внимание, что/dev/sda8
пропал, отсутствует):/dev/sda1: LABEL="SYSTEM" UUID="960490E80490CC9D" TYPE="ntfs" /dev/sda2: UUID="D4043140043126C0" TYPE="ntfs" /dev/sda3: LABEL="Shared" UUID="80F613E1F613D5EE" TYPE="ntfs" /dev/sda5: UUID="4031413e-e89f-49a9-b54c-e887286bb15e" TYPE="ext4" /dev/sda6: UUID="4c11e82c-5fe9-49d5-92d9-cdaa6865c991" TYPE="ext4" /dev/sda7: UUID="d5bbfc6f-482a-464e-9f26-fd213230ae84" TYPE="ext4" /dev/mapper/cryptswap1: UUID="41fa147a-3e2c-4e61-b29b-3f240fffbba0" TYPE="swap"
вывод
sudo fdisk -l
:Disk /dev/mapper/cryptswap1 doesn't contain a valid partition table Disk /dev/sda: 320.1 GB, 320072933376 bytes 255 heads, 63 sectors/track, 38913 cylinders, total 625142448 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: 0xdec3fed2 Device Boot Start End Blocks Id System /dev/sda1 * 2048 409599 203776 7 HPFS/NTFS/exFAT /dev/sda2 409600 210135039 104862720 7 HPFS/NTFS/exFAT /dev/sda3 210135040 415422463 102643712 7 HPFS/NTFS/exFAT /dev/sda4 415424510 625141759 104858625 5 Extended /dev/sda5 415424512 415922175 248832 83 Linux /dev/sda6 415924224 515921919 49998848 83 Linux /dev/sda7 515923968 621389823 52732928 83 Linux /dev/sda8 621391872 625141759 1874944 82 Linux swap / Solaris Disk /dev/mapper/cryptswap1: 1919 MB, 1919942656 bytes 255 heads, 63 sectors/track, 233 cylinders, total 3749888 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: 0xaf5321b5
/etc/initramfs-tools/conf.d/resume
файл:RESUME=UUID=5da2c720-8787-4332-9317-7d96cf1e9b80
/etc/crypttab
файл:cryptswap1 /dev/sda8 /dev/urandom swap,cipher=aes-cbc-essiv:sha256
вывод
sudo swapon -as
:Filename Type Size Used Priority /dev/mapper/cryptswap1 partition 1874940 0 -1
вывод
sudo free -m
:total used free shared buffers cached Mem: 1476 1296 179 0 35 671 -/+ buffers/cache: 590 886 Swap: 1830 0 1830
Итак, как это можно исправить?
4 ответа
У меня была такая же проблема при использовании зашифрованного раздела подкачки. Ни общие вопросы о свопах, ни решение Puny Geek "cryptswap1 еще не готов или не представлен", ни ответ Брайама на этот вопрос не решили проблему для меня - иногда своп был доступен, иногда - нет. После многих перезагрузок и возни, думаю, я нашел основную причину:
Путь к разделу подкачки вроде /dev/sda3
иногда отличается, например /dev/sdb3
, Поскольку файл /etc/crypttab
по умолчанию, кажется, идентифицирует раздел подкачки по этому пути, иногда он найдет его (если этот раздел получит тот же путь при загрузке) или нет (если раздел получит другой путь, назначенный при загрузке).
Похоже, что я был не единственным, кто столкнулся с этой проблемой, поскольку, как описано здесь, лучшим решением было бы связать раздел подкачки через его идентификатор диска, а не его /dev/sd*
дорожка. Это можно найти, запустив
ls -l /dev/disk/by-id/
в котором перечислены идентификаторы дисков для всех разделов, включая раздел подкачки, который в моем случае был
ata-TOSHIBA_MQ01UBD100_73JATD5GT-part3 -> ../../sdb3
Дважды проверьте в программе, подобной Disk Utility, что -> ../../sdb*
часть этой строки действительно является разделом, который вы намереваетесь использовать для обмена, так как это (как я уже говорил) иногда может менять имена. Как всегда, имейте это в виду:
Внимание: возиться с cryptsetup и дисковыми устройствами опасно для данных и ОС. Я лично сделал полную резервную копию на отдельном диске, а затем отключил его, чтобы убедиться, что он не будет вовлечен в любую неудачу.
Затем отредактируйте свой /etc/crypttab
файл с помощью ссылки на идентификатор вместо "сырого" пути, в моем случае эта строка
cryptswap1 /dev/disk/by-id/ata-TOSHIBA_MQ01UBD100_73JATD5GT-part3 /dev/urandom swap,cipher=aes-cbc-essiv:sha256
Я думаю, что этот метод должен быть по умолчанию для новых установок, так как никто не может быть уверен в /dev/sd*
пути... которые меня несколько беспокоят, так как у меня возникает ощущение, что существует гораздо больше сценариев и программного обеспечения, которые все еще полагаются на эти пути (вместо идентификаторов, меток или UUID), чтобы оставаться неизменными при перезагрузках.
СДЕЛАТЬ:
Я не проверял, работает ли возобновление выхода из спящего режима с этой настройкой, так как, похоже, это зависит от UUID (которого у меня не было в разделе подкачки), как указано на этой странице: https://altinukshini.wordpress.com/2012/10/15/devmappercryptswap1-is-not-ready-yet-or-not-present/ время /
Обновить:
Пока что спячка работает нормально. Надеюсь, что это решает эти проблемы и для других!
Короткий ответ:
UUID проблема:
Вы должны иметь это в /etc/crypttab
:
cryptswap1 /dev/sda4 /dev/urandom swap,cipher=aes-cbc-essiv:sha256
и эта строка в конце /etc/fstab
/dev/mapper/cryptswap1 none swap sw 0 0
Убедитесь, что вы не используете uuid в файле crypttab.
Приостановить выпуск:
Теперь давайте воспользуемся трюком, чтобы нормализовать поведение подкачки непосредственно перед перезагрузкой или выключением:
Создать скрипт /etc/init.d/cryptswap.sh
с этим внутри:
#!/bin/bash
/etc/init.d/cryptdisks-early restart
Сделайте его исполняемым с помощью:
sudo chmod +x /etc/init.d/cryptswap.sh
Чтобы сделать все правильно, давайте воспользуемся ссылками и номерами, чтобы заставить его работать в нужный момент при перезагрузке или завершении работы:
cd /etc/rc6.d
sudo ln -s ../init.d/cryptswap.sh S10cryptswap.sh
cd /etc/rc0.d
sudo ln -s ../init.d/cryptswap.sh S10cryptswap.sh
Важной вещью здесь является число 10 в имени, потому что скрипт должен запускаться до S40, который начинает снимать своп; даже позже другой сценарий снимет зашифрованные устройства. Дело в том, что исходная последовательность не работает, и нам нужен перезапуск, чтобы она прошла гладко.
Это оно!
Примечание: это грязный хак, и может случиться так, что перезапуск не может исправить то, что происходит иногда. Кто-то из разработчиков, отвечающих за swap и / или cryptsetup, должен углубиться и понять, почему после приостановки swap остается в состоянии, которое делает swapoff /dev/mapper/cryptswap1
а также /etc/init.d/cryptdisks-early stop
потерпеть поражение. Если вы выполните эти команды, вы увидите, что swapoff жалуется на заголовок файла подкачки. Также вы увидите cryptdisks-early
отправка "сбой" при попытке остановить /dev/mapper/cryptswap1
,
Избыточность / история:
Сначала я подумал, что его проблема связана с поведением ядра с помощью libblk, вероятно, это ошибка (не предназначена). Кажется, проблема в том, что таблица разделов редактируется разными "файловыми системами". Ядро отказывается заселять /dev/disk/by-uuid/
потому что он обнаруживает несколько сигнатур файловых систем, редактирующих таблицу разделов. Это казалось важным, учитывая, что сценарий /usr/bin/ecryptfs-setup-swap
использует UUID для ссылки на записи, которые он создает для /etc/crypttab
,
Исправление должно состоять в том, чтобы воссоздать все разделы из одной и той же файловой системы, загрузившись с некоторых живых носителей. Смотрите: http://forums.fedoraforum.org/showthread.php?t=288890
Однако это не работает, потому что ecryptfs/crypttab "переформатирует" раздел подкачки при каждой загрузке; вы не можете увидеть uuid для раздела подкачки после запуска ecryptfs-setup-swap и перезагрузки, потому что вы не должны этого делать. это означает, что при загрузке crypttab не найдет раздел, если на него ссылается uuid, как указано в другом ответе.
В дальнейшем, возможно, было решено отказаться от использования uuids и просто заменить их в /etc/crypttab другой нотацией: работает только /dev/sdXX, потому что остальные теряются при запуске mkswap в сценариях crypttab. Именно так форумы предлагают решить проблему. Делать это обязательно.
Это не работает полностью, хотя. Я предположил, что была какая-то ошибка в crypttab (/etc/rcS.d/S26cryptdisks-early
-> /etc/init.d/cryptdisks-early
-> /lib/cryptsetup/cryptdisks.functions
). Так что я пошел туда копать и ничего не нашел. На самом деле, работает /etc/init.d/cryptdisks-early restart
хорошо работает после загрузки, /dev/mapper/cryptswap1
ссылка сгенерирована.
Одно возможное исправление, которое я увидел в тот момент, состояло в том, чтобы переместить файл подкачки в "файл", который занимает все пространство в разделе подкачки. Это грязно, требует точки монтирования и т. Д. Идея состоит в том, что вы создадите файл размером с весь раздел, который будет монтироваться как обычный ext4 в скажем / swap, и использовать зашифрованный файл как swap. Что-то вроде этого:
В формате GParted как ext4; обратите внимание, что это отформатирует раздел и сгенерирует новый UUID; не использовать
sudo mkswap /dev/sdXX
поскольку раздел будет автоматически смонтирован, если помечен как swapsudo mkdir /swap
ls -l /dev/disk/by-uuid/
sudo gedit /etc/fstab
# добавлятьUUID=XXXXXXXXXXXXXXXXXXXXXXXXX /swap ext4 defaults 0 2
sudo mount /dev/sdXX /swap
sudo dd if=/dev/zero of=/swap/swapfile bs=1024 count=800000
sudo mkswap /swap/swapfile
sudo swapon /swap/swapfile
sudo ecryptfs-setup-swap
Но я ненавидел это, поэтому я не пробовал это.
Другое возможное исправление, которое я видел, состояло в том, чтобы вручную настроить отказ от автоматической генерации случайного ключа, например: http://wiki.drewhess.com/wiki/Creating_an_encrypted_filesystem_on_a_partition
Немного изучив ручное место, я как-то исправил ситуацию, делая то, что /usr/bin/ecryptfs-setup-swap
делает в первую очередь (проверить, чтобы увидеть, как это работает, он просто редактирует /etc/crypttab
а также /etc/fstab
), а затем вручную запустить скрипт, который запускается при загрузке: /etc/init.d/cryptdisks-early restart
; Но это снова сломалось. Переосмыслив вопрос с резюме, я нашел образец. Это ломается при перезагрузке, которая следует за приостановкой, и остается сломанной. Чтобы исправить это, нужно сделать:
sudo /etc/init.d/cryptdisks-early restart
После этого своп смонтирован успешно и без проблем до тех пор, пока вы не приостановите. Отсюда и сценарий, предложенный в кратком ответе.
Просто используйте незашифрованный своп
... и держать / дома в зашифрованном виде
Я попробовал пару других решений, предложенных здесь. Несмотря на то, что они продолжали работать после горячей перезагрузки, в конечном итоге все они перестали работать после выключения и холодного перезапуска.
Это говорит нам о том, что мы имеем дело с двойной ошибкой:
- 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
- Это решение выдерживает как горячие перезагрузки, так и выключение при холодном перезапуске.
У меня была та же проблема, и я нашел решение, которое помогло мне в этом посте.
В принципе:
Откройте fstab:
sudo gedit /etc/fstab
Измените эту строку:
/dev/mapper/cryptswap1 none swap sw 0 0
к этому:
/dev/mapper/cryptswap1 none swap sw,noauto 0 0
Затем перейдите к
sudo gedit /etc/rc.local
и непосредственно перед
exit 0
добавьте эти две строки:
sleep 5 swapon /dev/mapper/cryptswap1
Если вы хотите проверить, что ваш SWAP действительно подключен и работает, откройте много приложений, потребляющих ОЗУ, и проверьте его с помощью терминала:
free -m