
Как выполнить двойную загрузку Windows 7 и Ubuntu 11.10, зашифрованных с помощью TrueCrypt, если обе системы установлены по отдельности на разных физических дисках?
У меня два жестких диска. На hd0 установлена зашифрованная TrueCrypt установка Windows 7 с загрузчиком TrueCrypt. На hd1 установлена Ubuntu 11.10 с загрузчиком grub2.
Вывод fdisk -l
следующий:
Device Boot Start End Blocks Id System
/dev/sda1 * 2048 206847 102400 7 HPFS/NTFS/exFAT
/dev/sda2 206848 976771071 488282112 7 HPFS/NTFS/exFAT
Device Boot Start End Blocks Id System
/dev/sdb1 * 2048 968517631 484257792 83 Linux
/dev/sdb2 968519678 976771071 4125697 5 Extended
/dev/sdb5 968519680 976771071 4125696 82 Linux swap / Solaris
Я могу успешно загрузиться в любую ОС, изменив порядок загрузки в BIOS, но не хочу делать это снова и снова. Мои варианты:
- Добавьте загрузчик TrueCrypt в конфигурацию grub2 и выполните его цепочку загрузки с помощью grub2.
- Загрузите загрузчик TrueCrypt и, нажав Escape для выхода из режима ввода пароля, загрузите grub2.
У меня возникли трудности с вариантом 1, так как при нажатии escape TrueCrypt не находит других загрузочных разделов. Насколько я понимаю, он должен искать другие загрузочные диски.
У меня также возникли трудности с вариантом 2 и со следующим внутри /etc/grub.d/40_custom
(и затем запущенным update-grub2
) ...
menuentry "Windows 7" {
set root=(hd0,1)
chainloader +1
}
(Я также попробовал root=(hd0,0)
и root=(hd0,2)
)
... Я получаю ошибки без такого раздела. Я также читал различные источники, которые предполагают, что это невозможно сделать с grub2 без монтирования и загрузки в ISO-образ диска восстановления TrueCrypt перед загрузкой Windows. Это необходимо?
Что я делаю не так?
решение1
Я могу помочь вам обойти эту проблему, но это довольно сложно, поэтому убедитесь, что вы все поняли.
Во-первых: Резервное копирование всего. Во-вторых: Для этого требуется два физических диска, и только с одним у меня не получилось.
Переходим к самой сложной части — процессу последовательности загрузки:
- BIOS будет загружаться с одного жесткого диска (обычно первого)
- Так что поместите туда загрузчик GRUB2
- Такой GRUB позволит вам загрузиться с разделов на первом диске или загрузиться со второго диска (это сложная часть)
- Если вы хотите загрузить Linux, просто загрузитесь с другого раздела на том же диске.
- Если вы хотите загрузить TrueCrypt Bootloader, просто укажите ему загрузиться со второго диска, а не с раздела.
Имея это в виду, как это архивировать? Легко, выполните следующие шаги:
- Вставьте в ПК только один пустой жесткий диск.
- Настройте BIOS для загрузки с него (только на этот раз)
- Установите на него Windows и TrueCrypt.
- Дайте команду TrueCrypt зашифровать все (присутствует только один жесткий диск)
- Перезагрузка, проверка загрузки Windows.
- Правильно выключайте питание
- Добавить второй диск
- Создайте на таком втором HDD несколько разделов
- Один для /boot (где будет GRUB2)
- Остальное по вашему желанию для Ubuntu /, SWAP и т.д...
- Настройте GRUB2 для загрузки Ubuntu и последовательной загрузки всего второго жесткого диска (будьте осторожны, не указывайте какой-либо раздел, только весь жесткий диск)
- Перезагрузить
- Хитрость: скажите BIOS, чтобы он загружался со второго жесткого диска (как вы говорите, он вам это позволяет) просто навсегда с этого момента
- Проверьте, что при загрузке запущен GRUB2
- Проверьте, правильно ли цепочка GRUB2 загружает первый загрузчик жесткого диска (загрузчик TrueCrypt), но не вводите пароль и не допускайте загрузки Windows, просто перезагрузите компьютер при запросе пароля.
- Перезагрузите, если вы этого не сделали... и проверьте опцию GRUB2 Linux... не загрузится, так как Ubuntu еще не установлен, но и TrueCrypt не загрузится, так что, как видите, он работает
- Устанавливайте Linux с особой осторожностью... не позволяйте ему изменять таблицы разделов... просто установите его на второй диск, используя существующие разделы... и когда вас попросят установить загрузчик, скажите ему установить Grub или Lilo и т. д. на раздел Linux, а не на жесткий диск MBR.
При этом вы получите такую схему:
- HDD0 - MBR с TrueCrypt, остальное для Windows
- HDD1 - раздел MBR и /boot с GRUB2, еще один раздел для / (ваша Ubuntu), внутри которого будет еще один загрузчик Grub, Lilo или Grub2 в /boot, дополнительные разделы по вашему желанию
Хитрость заключается в следующем:
- Сообщите TrueTrypt, чтобы он выполнил шифрование, поскольку он знает один полный жесткий диск с собственным загрузчиком.
- Загрузите GRUB2 с другого жесткого диска (BIOS должен иметь возможность загрузки со второго жесткого диска)
Итак, при загрузке происходит следующее:
- BIOS считывает свою конфигурацию на CMOS
- BIOS видит загрузку со второго жесткого диска
- BIOS считывает MBR второго жесткого диска
- GRUB2 загружен
- GRUB2 показывает меню: Загрузка Windows / Загрузка Ubuntu
- Если вы выберете Ubuntu, то GRUB2 загрузит другой Grub, lilo и т. д. в корневой раздел Ubuntu, такой другой загрузчик загрузит ваш Linux Ubuntu.
- Если вы выбрали Windows, то GRUB2 выполнит последовательную загрузку на первый жесткий диск, действуя так, как если бы BIOS загружался с первого жесткого диска.
Таким образом:
- TrueCrypt ничего не знает о втором диске для загрузки, не зависит от него
- GRUB2 и Linux не будут перезаписывать/трогать ничего на таком первом диске
- BIOS загрузится со второго жесткого диска
Надеюсь, это достаточно ясно.
Что следует иметь в виду, чтобы сохранить это в архиве:
- Сначала проведите несколько тестов с VirtualBOX, прежде чем делать это на реальной физической машине, чтобы ознакомиться с процессом.
- Во-вторых, записывайте на бумаге шаги, которым вы следуете, по мере их выполнения, чтобы ничего не забыть.
Теперь я должен сказать, что это можно сделать, не открывая ПК... при этом оба диска всегда должны быть подключены.
Представьте себе это:
- HDD0 без раздела
- HDD1 без раздела
- Установка Windows только на HDD0 обычным способом, но без разбиения HDD1
- Установите TrueCrypt и зашифруйте весь HDD0, с HDD1 он ничего не сделает.
- Тест все прошел правильно
- Загрузитесь с LiveCD, например SystemRescueCD, создайте разделы на HDD1
- Убедитесь, что вы создали специальный раздел для /boot только для GRUB2, не связанный с вашим Linux, с 512 МБ вы также сможете поместить на него SystemRescueCD.iso и настроить GRUB2 для циклической загрузки из файла iso (см. веб-сайт SystemRescueCD для получения дополнительной информации).
- Установите GRUB2 на HDD1 MBR и раздел HDD1 /boot
- Настройте grub.cfg такого GRUB2 для загрузки с корневого раздела Linux на HDD1 и последовательной загрузки на HDD0 (а не на какой-либо раздел на HDD0)
- Тест GRUB2 загружает все параметры правильно, просто проверьте правильность загрузки цепочки... при загрузке Windows и TrueCrypt запросят парольную фразу, просто перезагрузите, не теряйте время на загрузку самой Windows
- Установите Ubuntu на корневой раздел HDD1 и укажите ему установить собственный grub на корневой раздел HDD1, где находятся ваши основные файлы Linux Ubuntu, чтобы он вообще не затрагивал раздел HDD1 /boot.
Вот в чем сложность!!!
Идея: использовать другой носитель для создания фактического меню загрузки, в котором можно выбрать, что именно загружается.
Лично у меня на нетбуке такая цепочка:
- /boot с меню GRUB2 с вариантами загрузки: WindowsVista, Windows7, Linux Ubuntu 32bits, Linux Ubuntu 64Bits, SystemRescueCD.iso, memtext86+, floppy, ... и т. д.
- Если я выберу Linux Ubuntu 32Bits... он загрузит другой GRUB2 с опциями: Вернуться назад (загрузка с HDD MBR), Kernel X, Отладка Kernel X, Kernel Y, Отладка Kernel Y и т. д.
- Если я выберу Linux Ubuntu 64Bits... он загрузит другой GRUB2 с опциями: Вернуться назад (загрузка с HDD MBR), Kernel X, Отладка Kernel X, Kernel Y, Отладка Kernel Y и т. д.
В этом и заключается идея... иметь в процессе загрузки более одного GRUB!!
Почему больше одного? Легко... если система обновит Grub, то он не затронет тот, который я использую в качестве загрузочного меню, просто и эффективно.
Теперь проблема с TrueCrypt... если он шифрует системный раздел, то он должен быть в MBR, и он не позволяет вам сделать это никаким другим способом (кроме RecoveryCD).
Так что если TrueTrypt шифрует системный раздел Windows, лучше пусть он шифрует весь диск
Эй! Linux также можно установить на тот же диск, что и Windows, для производительности... а данные на другой...
Первый жесткий диск с:
- /dev/sda -> загрузчик TrueCrypt (MBR)
- /dev/sda0 -> Windows, зашифрованное TrueCrypt (несколько ГБ)
- /dev/sda1 -> Linux Ubuntu / (несколько ГБ) он будет содержать еще один Grub, подпапку с именем boot и все системные файлы и т. д.
Второй жесткий диск с:
- /dev/sdb -> загрузчик GRUB2 (MBR) я буду называть его «BootMenu»
- /dev/sdb1 -> /boot для GRUB2 "BootMenu" (512 МБ, если хотите, на нем файл SystemRescueCD.iso)
- /dev/sdb2 -> раздел NTFS для ДАННЫХ, видимый в Windows и Linux (если не зашифрован) как
Надеюсь, вы до этого доберетесь.
Я объяснил это просто потому, что думал, что вы знаете, как загрузиться с CD, настроить BIOS, создать разделы, установить GRUB2 и т. д.
Это не для новичков. Содержит очень продвинутые технические шаги и не является руководством...
Это всего лишь идея загрузки с другого носителя, такой другой носитель (CD, дискета и т. д.) будет содержать меню загрузки, позволяющее выбрать загрузку с первого жесткого диска или с раздела и т. д. Другими словами, GRUB2.
Надеюсь, вы найдете это полезным.
решение2
Кажется, самым простым решением для этого является использование загрузчика Windows для загрузки в Grub, а не наоборот. Grub, похоже, не может загрузиться с зашифрованного раздела Windows даже с --force
.
Существует инструмент EasyBCD (бесплатный для некоммерческого использования), который правильно настроит загрузчик Windows для загрузки в Grub после ввода пароля TrueCrypt. Теперь мой диск Windows является первым загрузочным устройством в BIOS, а Grub — загрузочным элементом по умолчанию в загрузчике Windows. Вы можете так же легко сделать Windows загрузчиком по умолчанию.
решение3
Вы можете просто войти в меню загрузки и выбрать жесткий диск, с которого хотите загрузиться.
В моем случае я делаю это нажатием, F11когда отображаются сообщения POST. FВ вашем случае это может быть другая клавиша.