Привет, кодебай!
Я решил поделиться своим небольшим опытом по криптованию дисков с мультизагрузкой – надеюсь, понравится и пригодится, и следующему желающему не придётся копаться так долго, как мне. Расписать постарался максимально подробно, если переборщил – извините.
Итак, постановка задачи: вы хотите держать все свои данные зашифрованными, но при этом у вас на одном жёстком диске расположился как Линукс, так и Виндовс. Это может понадобиться, например, если нужна программа, которая не представлена в Лине, или если есть какие-то корпоративные требования безопасности или… Да мало ли зачем благородному дону или донне нужны две ОС.
Смотреть в сторону богомерзких решений с закрытыми исходниками типа BitLocker мы, разумеется, не будем. Для Windows нам понадобится VeraCrypt, а для Линукса – встроенный в большинство дистрибутивов LUKS.
Проблема же заключается в том, что при шифровании Windows с помощью TrueCrypt или VeraCrypt они записывают себя на первое место в списке загрузчиков и после ввода пароля у нас уже нет возможности загрузить Linux. Решение именно этой проблемы представлено в заметке, которую вы читаете. (На русском языке я не нашёл аналога, а то, что на английском - без скриншотов и вообще недостаточно подробно)
Для начала стоит настроить выбрать правильную таблицу разметки диска – нас интересует EFI. Альтернативой будет MBR, с которым мне так и не удалось справиться. Выбор делается при установке Windows: в каком режиме запустите установку, в таком и будет размечен диск. Нас интересует UEFI.
Первым устанавливается Виндовс, чтобы установившийся вторым Линукс – я выбрал для демонстрации лаконичный Manjaro – поставил свой загрузчик GRUB 2. Разумеется, при разметке следует оставить место для линукса! Windows самостоятельно создаст раздел FAT32 размером в 100 Mb с флагами boot и esp.
Поставили? Отлично, теперь Линь. Для начала проверим, всё ли в порядке с таблицей разделов: в gparted вы должны увидеть нечто подобное.
При установке выбираем Manual Partitioning, создаём зашифрованный раздел в свободном пространстве и монтируем стомегабайтный раздел в /boot/efi без форматирования. Ставим, перезагружаем, вводим пароль и с удовольствием видим меню выбора ОС с обеими системами.
Manjaro зашифрован, Windows пока нет. Исправим! Загружаемся в Windows, устанавливаем VeraCrypt (все параметры установки по умолчанию, все программы качать только с офсайтов, благо они пока поддерживаются) и шифруем систему (Система -> Зашифровать системный раздел/диск). Никакого выбора у вас особо не будет, так что придётся оставить “Зашифровать системный раздел Windows” и “Одиночная загрузка”. Параметры шифрования выбираете по вкусу. Я бы предпочёл Serpent(AES) – когда-то у программы были проблемы с реализацией AES, так что лучше перестраховаться. Остальное на ваше усмотрение.
Перезагружаетесь и обнаруживаете требование сразу ввести пароль для винды. Всё, теперь линукс недоступен.
Теперь начинается неочевидная часть. После того, как вы окончательно зашифруете диск (может занять значительное время), скачайте, установите и запустите EasyUEFI. Программа условно-бесплатная, но нам бесплатных функций хватит. Выбираете раздел Manage EFI Boot Option и записывайте путь загрузчика VeraCrypt - File Path на скриншоте. Он нам ещё понадобится.
Далее есть два варианта.
1.
Когда я ставил на собственный компьютер, там была видна опция Manjaro – в этом случае просто ставим её наверх зелёной стрелочкой и перезагружаемся в Linux.
Загрузчик Линукса не имеет ни малейшего представления о том, что Windows зашифрован, и при выборе в нём опции Windows он не будет пытаться запустить старый загрузчик - который, разумеется, ничего не найдёт на обработанном VeraCrypt разделе. Надо указать ему путь к новому загрузчику VeraCrypt. Вбиваем
И меняем там строку
на
Теперь там должен быть путь, который вы увидели в EasyUEFI.
Всё!
Перезагружаемся, вводим пароль от Линукса, и выбираем ОС. Выбрали Manjaro – вошли в Linux, выбрали Windows – вводим пароль от VeraCrypt и загружаемся в Windows.
Возможно, существует способ запускать выбор системы ДО ввода пароля, чтобы при запуске Windows не приходилось бы вводить пароль от Linux, но я его не нашёл.
2.
На VirtualBox, который я запустил для демонстрации, опции Manjaro в программе EasyUEFI почему-то нет. Заходим при загрузке в boot manager (в случае виртуалбокса – F2). Boot Maintenance Manager → Boot Options → Add Boot Option → Ваш Boot раздел →EFI → Manjaro (или Ваша ОС) → grub64.efi. Даёте название, нажимаете F10 для сохранения, дважды Ecs, Change Boot Order и ставите свою систему на первое место. Снова сохраняете и выходите из меню. Теперь вы загрузитесь в Linux.
В очереди загрузчика первым будет стоять загрузчик Линукса. В VirtualBox изменения не сохраняются при перезагрузке, и изменения от efibootmgr тоже, но на реальном железе всё должно быть в порядке. После этого выполняете действия, описанные в первом варианте, то есть модифицируете GRUB.
В следующей статье постараюсь описать как реализовать самоуничтожение заголовков LUKS и VeraCrypt одновременно при вводе кодовой фразы вместо пароля.
Я решил поделиться своим небольшим опытом по криптованию дисков с мультизагрузкой – надеюсь, понравится и пригодится, и следующему желающему не придётся копаться так долго, как мне. Расписать постарался максимально подробно, если переборщил – извините.
Итак, постановка задачи: вы хотите держать все свои данные зашифрованными, но при этом у вас на одном жёстком диске расположился как Линукс, так и Виндовс. Это может понадобиться, например, если нужна программа, которая не представлена в Лине, или если есть какие-то корпоративные требования безопасности или… Да мало ли зачем благородному дону или донне нужны две ОС.
Смотреть в сторону богомерзких решений с закрытыми исходниками типа BitLocker мы, разумеется, не будем. Для Windows нам понадобится VeraCrypt, а для Линукса – встроенный в большинство дистрибутивов LUKS.
Проблема же заключается в том, что при шифровании Windows с помощью TrueCrypt или VeraCrypt они записывают себя на первое место в списке загрузчиков и после ввода пароля у нас уже нет возможности загрузить Linux. Решение именно этой проблемы представлено в заметке, которую вы читаете. (На русском языке я не нашёл аналога, а то, что на английском - без скриншотов и вообще недостаточно подробно)
Для начала стоит настроить выбрать правильную таблицу разметки диска – нас интересует EFI. Альтернативой будет MBR, с которым мне так и не удалось справиться. Выбор делается при установке Windows: в каком режиме запустите установку, в таком и будет размечен диск. Нас интересует UEFI.
Первым устанавливается Виндовс, чтобы установившийся вторым Линукс – я выбрал для демонстрации лаконичный Manjaro – поставил свой загрузчик GRUB 2. Разумеется, при разметке следует оставить место для линукса! Windows самостоятельно создаст раздел FAT32 размером в 100 Mb с флагами boot и esp.
Поставили? Отлично, теперь Линь. Для начала проверим, всё ли в порядке с таблицей разделов: в gparted вы должны увидеть нечто подобное.
При установке выбираем Manual Partitioning, создаём зашифрованный раздел в свободном пространстве и монтируем стомегабайтный раздел в /boot/efi без форматирования. Ставим, перезагружаем, вводим пароль и с удовольствием видим меню выбора ОС с обеими системами.
Manjaro зашифрован, Windows пока нет. Исправим! Загружаемся в Windows, устанавливаем VeraCrypt (все параметры установки по умолчанию, все программы качать только с офсайтов, благо они пока поддерживаются) и шифруем систему (Система -> Зашифровать системный раздел/диск). Никакого выбора у вас особо не будет, так что придётся оставить “Зашифровать системный раздел Windows” и “Одиночная загрузка”. Параметры шифрования выбираете по вкусу. Я бы предпочёл Serpent(AES) – когда-то у программы были проблемы с реализацией AES, так что лучше перестраховаться. Остальное на ваше усмотрение.
Перезагружаетесь и обнаруживаете требование сразу ввести пароль для винды. Всё, теперь линукс недоступен.
Теперь начинается неочевидная часть. После того, как вы окончательно зашифруете диск (может занять значительное время), скачайте, установите и запустите EasyUEFI. Программа условно-бесплатная, но нам бесплатных функций хватит. Выбираете раздел Manage EFI Boot Option и записывайте путь загрузчика VeraCrypt - File Path на скриншоте. Он нам ещё понадобится.
Далее есть два варианта.
1.
Когда я ставил на собственный компьютер, там была видна опция Manjaro – в этом случае просто ставим её наверх зелёной стрелочкой и перезагружаемся в Linux.
Загрузчик Линукса не имеет ни малейшего представления о том, что Windows зашифрован, и при выборе в нём опции Windows он не будет пытаться запустить старый загрузчик - который, разумеется, ничего не найдёт на обработанном VeraCrypt разделе. Надо указать ему путь к новому загрузчику VeraCrypt. Вбиваем
Код:
sudo nano /boot/grub/grub.cfg
И меняем там строку
Код:
chainloader /EFI/Microsoft/Boot/bootmgfw.efi
Код:
chainloader /EFI/VeraCrypt/DcsBoot.efi
Теперь там должен быть путь, который вы увидели в EasyUEFI.
Всё!
Перезагружаемся, вводим пароль от Линукса, и выбираем ОС. Выбрали Manjaro – вошли в Linux, выбрали Windows – вводим пароль от VeraCrypt и загружаемся в Windows.
Возможно, существует способ запускать выбор системы ДО ввода пароля, чтобы при запуске Windows не приходилось бы вводить пароль от Linux, но я его не нашёл.
2.
На VirtualBox, который я запустил для демонстрации, опции Manjaro в программе EasyUEFI почему-то нет. Заходим при загрузке в boot manager (в случае виртуалбокса – F2). Boot Maintenance Manager → Boot Options → Add Boot Option → Ваш Boot раздел →EFI → Manjaro (или Ваша ОС) → grub64.efi. Даёте название, нажимаете F10 для сохранения, дважды Ecs, Change Boot Order и ставите свою систему на первое место. Снова сохраняете и выходите из меню. Теперь вы загрузитесь в Linux.
В очереди загрузчика первым будет стоять загрузчик Линукса. В VirtualBox изменения не сохраняются при перезагрузке, и изменения от efibootmgr тоже, но на реальном железе всё должно быть в порядке. После этого выполняете действия, описанные в первом варианте, то есть модифицируете GRUB.
В следующей статье постараюсь описать как реализовать самоуничтожение заголовков LUKS и VeraCrypt одновременно при вводе кодовой фразы вместо пароля.
Последнее редактирование модератором: