20

Я на Ubuntu 13.04 с использованием полного шифрования диска (LVM поверх LUKS).

Я хотел бы включить luksSuspend в процедуру приостановки (а затем использовать luksResume), чтобы я мог приостановить работу в ОЗУ, не оставляя ключевой материал в памяти и корневой каталог не заблокирован.

Последние 7 часов я пытался перенести скрипт для Arch Linux, но пока безуспешно: честно говоря, понятия не имею, что я делаю ...

Может ли кто-нибудь помочь мне портировать это (или создать что-то подобное с нуля)? Или, по крайней мере, может кто-нибудь указать мне на документацию о том, как подключить материал к процедурам приостановки и как сохранить необходимые двоичные файлы и сценарии (такие как cryptsetup) доступными даже после того, как все операции ввода-вывода для root были заблокированы (luksSuspend)?

Что касается того, как сохранить необходимые двоичные файлы и сценарии, доступные для резюме, этот другой пост в блоге (также для Arch) скопировал их в /boot ; Однако я хотел бы использовать нечто большее, чем то, что использовал Вианни в сценарии, о котором я упоминал ранее, потому что этот подход выглядит несколько элегантнее в этом аспекте.

3 ответа3

3

Я столкнулся с той же проблемой, поэтому я сделал еще один шаг при переносе того же сценария, который вы можете увидеть здесь. Он не затрагивает любое энергонезависимое хранилище после luksSuspend , поэтому он работает даже с реальным полным дисковым шифрованием с зашифрованным / загрузочным. Однако вам нужно быть осторожным - иногда это может работать не так, как ожидалось!

Портированный скрипт выполняет следующие действия:

  • Создайте рамф-маунт где-нибудь
  • Извлеките там содержимое initramfs (включая скрипт initramfs suspend)
  • Привязать монтируемые соответствующие каталоги (например, /sys , /proc , /dev , /run) к монтированию ramfs
  • Остановите все службы, которые могут помешать (systemd-udevd, systemd-journald)
  • Перемонтируйте корневую файловую систему (ext4 или btrfs) с помощью nobarrier, чтобы Linux не зависал при попытке войти в S3, а затем синхронизируйте
  • Загрузитесь в монтирование initramfs, которое снова синхронизируется, запускает luksSuspend и переводит компьютер в спящий режим
  • После пробуждения luksResume , перемонтирование файловых систем, перезапуск служб, размонтирование bind mounts в монтировании initramfs
  • Наконец, отключите монтирование initramfs, чтобы освободить оперативную память, используемую для файлов initramfs.

Я еще не провел обширное тестирование своего сценария, но, похоже, он работает надежно для меня. Если вы используете другую файловую систему (например, не ext4 или btrfs), то у вас могут возникнуть проблемы с барьером, поэтому вам также придется изменить скрипт.

В любом случае, хорошо проверить и убедиться, что сценарии работают первыми. Если вы испытываете зависания при попытке установить Linux в S3 (то есть в echo mem > /sys/power/state), то вы сможете восстановить:

  • Перед приостановкой откройте tty или другой терминал (который будет доступен, поэтому в идеале tty)
  • Загрузите cryptsetup и соответствующие библиотеки в RAM: sudo cryptsetup luksResume anything_here
  • Приостановить использование сценария
  • Если он зависает после chroot (например, после starting version xxx отображается на новом vt), переключитесь на tty, который вы открыли ранее, и запустите sudo cryptsetup luksResume your_luks_device_name_here
  • Если это тоже зависает, откройте другой vt и выполните chroot в /run/initramfs: sudo chroot /run/initramfs /bin/ash
  • Попробуйте запустить luksResume: cryptsetup luksResume your_luks_device_name_here && exit
  • Ваш компьютер должен затем приостановить работу. Затем вы можете разбудить его, убить скрипты, если они все еще работают, размонтировать bind mounts и /run/initramfs и перемонтировать корневую файловую систему с барьером, если это применимо.
1

Я потратил некоторое время на то, чтобы сделать это полностью функциональным в Ubuntu 15.10. Если вы пытаетесь заставить это работать на ext2, ext3 или ext4, вам нужно обновить /etc /fstab, чтобы смонтировать том с опцией «nobarrier». В противном случае я предлагаю использовать BTRFS.

Как только ваша файловая система подготовлена, используйте скрипт здесь: https://github.com/Microcentillion/ubuntu-lukssuspend

1

У меня нет опыта в этой настройке, но многие люди утверждают, что успех в этом. Вот пара из них.

dm-crypt с LUKS - шифрование раздела подкачки
Howto: полностью зашифрованный жесткий диск, включая раздел приостановки на диск с Ubuntu 6.10 Edgy Eft
убунт-полный диск-шифрования LVM-Luks

Однако ни один из них не использует luksSuspend (возможно, именно поэтому они работают).

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .