[Из песочницы] Разбираемся с UEFI и GPT: установка Windows и Kubuntu на один диск

Помните те времена, когда BIOS был 16-битным с адресным пространством в 1 Мб, а вся информация о загрузчиках писалась в MBR? На смену уже давно пришли более гибкие технологии: UEFI (замена BIOS), и GPT (замена MBR).Предыстория: Понадобилось мне недавно на свой домашний десктоп поставить 2 системы, чтобы разграничить окружение. Kubuntu для разработки на Ruby on Rails (ибо работаю удаленно), и Windows для всяких игрушек в свободное время. Хочу заметить, что несколько лет назад это было достаточно просто: один раздел для винды и один раздел для линукса, загрузчик записывался в MBR. Однако, технологии не стоят на месте, и оказалось, что настройка dual boot’а теперь несколько изменилась.Итак, начнем.

ТерминологияUEFI (Unified Extensible Firmware Interface, Единый расширяемый интерфейс прошивки) разрабатывался компанией Intel как замена BIOS (Basic Input Output System). В отличие от 16-битного BIOS’а UEFI работает в 32- или 64-битном режиме, что позволяет использовать намного больше памяти для сложных процессов. Кроме того, UEFI приятно выглядит и там есть поддержка мышки.Внешний вид: image GPT (GUID Partition Table, Таблица разделов GUID) — часть спецификации UEFI. UEFI использует GPT так же как BIOS использует MBR.Главным отличием GPT от MBR, на мой взгляд, являются:

Количество разделов: MBR поддерживает только 4 раздела. Можно и больше, но только через extended partition, что является просто хаком ограничений. GPT поддерживает до 128 разделов. Размер диска: MBR поддерживает диски до 2Тб, в то время как GPT — до 9.4 Зеттабайт (=9.4 × 10^21 байт, или условно 1000 Тб) Порядок загрузки: раньше BIOS загружал MBR, и в нем содержались адреса загрузчиков для каждого раздела диска. Теперь UEFI считывает GPT, находит в таблице все разделы типа efi (на них содержатся загрузчики), и подгружает их в память. Разберем это на примере немного позже. Что делаем: Устанавливаем следующие ОС на пустой HDD размером в 1 Тб.Windows 8.1×64. Windows поддерживает загрузку с GPT начиная с Windows 8 для 32 битной архитектуры и с Windows Server 2003 и Windows Vista для 64 бит (Источник). Kubuntu 15.04. По идее подойдет любой дистрибутив, который поддерживает Grub2, лично я предпочитаю Kubuntu. NB: Материнская плата поддерживает UEFIРазбивка диска Сначала устанавливаем Windows 8, т.к. она автоматически будет использовать GPT.Разбивка будет выглядеть так (пардон за кривой снимок): image

Винда по умолчанию создает 4 раздела:

Recovery (300Мб). Очевидно, что он используется для восстановления системы. Оставим как есть. EFI partition (100Мб). Помечается как system type (не любят в Майкрософте называть вещи своими техническими именами). Собсвенно сюда и пишутся загрузчики. MSR (128Мб, Microsoft Reserved Partition). Для меня остается загадкой, зачем он нужен. Данных там никаких нет, просто пустое место, зарезервированное для каких-то непонятных целей в будущем. Основной раздел. Мы его поделим на 3: 200 гигов под винду, 500 гигов для раздела под данные и остальное пространство пока оставим неразмеченным (отформатируем потом при установке Kubuntu). Пропустим саму установку Windows, т.к. в ней все стандартно и понятно.

Теперь загрузимся с USB в Kubuntu Live.

Проверим EFI раздел:

kubuntu@kubuntu:~$ efibootmgr BootCurrent: 0003 Timeout: 0 seconds BootOrder: 0000,0003,0001 Boot0000* Windows Boot Manager Boot0001* Hard Drive Boot0003* UEFI: JetFlashTranscend 16GB Boot0000 — виндовый загрузчикBoot0001 — дефолтный загрузчикBoot0003 — флешка с Kubuntu LiveОбратите внимание, что список загрузчиков не привязан к одному физическому диску как в MBR. Он хранится в NVRAM.Можем также сразу посмотреть, что же в этом разделе, подмотировав его:

kubuntu@kubuntu:~$ sudo mkdir /media/efi kubuntu@kubuntu:~$ sudo mount /dev/sda2 /media/efi Там окажутся следующие файлы: EFI |--Boot | |--bootx64.efi # дефолтный загрузчик |--Microsoft |--Boot |--bootmgfw.efi # основной виндовый загрузчик |--# много других файлов Убедились, что все хорошо. Теперь продолжаем разбивку диска (через KDE Partition Manager).image

Первые пять разделов остались прежними. Обратите внимание, как Kubuntu определила разделы:

sda2 определился как FAT32. Это практически верно, т.к. файловая система типа EFI основана на FAT, только с жесткими спецификациями. sda3 (MSR) не определился, т.к. файловой системы там так таковой нет. Нам осталось только отформатировать раздел для Kubuntu в ext4, и выделить раздел под swap.Несколько слов про swap. Рекомендуют на swap выделять от SQRT (RAM) до 2xRAM.Т. к. у меня 16 Гб RAM, то по минимуму мне надо 4 Гб свопа. Хотя я с трудом могу представить ситуации, при которых он будет использоваться: десктоп в hibernate я не перевожу, и сильно тяжелых программ, которые жрут больше 16 гигов, не использую.P.S. При форматировании раздела в swap Partition Manager может выдать ошибки, которые связаны с тем, что Kubuntu автоматически монтирует в себя любой swap раздел, однако на результат эти ошибки не влияют.

Итак, финальная разбивка:

image

Теперь самое главное для правильного dual boot’а. При установке Kubuntu важно выбрать, куда установить загрузчик:

image

Указываем, конечно же на раздел EFI.

После завершения установки Kubuntu, заходим в систему и проверяем, какие файлы появились на efi разделе (монтировать уже не нужно):

user@kubuntu:~$ sudo ls /boot/efi/EFI Boot Microsoft ubuntu user@kubuntu:~$ sudo ls /boot/efi/EFI/ubuntu grub.cfg grubx64.efi MokManager.efi shimx64.efi Смотрим, как теперь выглядит список загрузчиков: user@kubuntu:~$ efibootmgr -v BootCurrent: 0002 Timeout: 0 seconds BootOrder: 0002,0000,0003,0001 Boot0000* Windows Boot Manager HD (2,96800,32000, c4f37e07–0441–4967-a1ac-75fb5a36e4f3)File (\EFI\Microsoft\Boot\bootmgfw.efi) Boot0001* Hard Drive BIOS (2,0,00) Boot0002* ubuntu HD (2,96800,32000, c4f37e07–0441–4967-a1ac-75fb5a36e4f3)File (\EFI\ubuntu\shimx64.efi) Boot0003* ubuntu HD (2,96800,32000, c4f37e07–0441–4967-a1ac-75fb5a36e4f3)File (EFI\Ubuntu\grubx64.efi) Вот как это выглядит при загрузке: image

А еще эти загрузчики доступны сразу из UEFI (в старом BIOS’е такое было бы невозможно — там был выбор только диска, он просто не знал, что такое загрузчики):

image

Ну и напоследок: чтобы dual boot правильно работал, в Windows надо обязательно отключить fast boot. Это такая нехорошая фича, которая может привести к потере данных.

Объяснение: imageПри выключении компьютера Windows сохраняет файловую структуру NTFS разделов в файл (видимо, потому что один файл прочитать быстрее, чем сканировать много разных файлов). Если записать файл на NTFS раздел через линукс, и потом загрузиться в Windows, то Windows просто не увидит файл. ИсточникЕсли выключить комп через Windows, и потом попытаться загрузить Linux, то он просто не запустится из-за «ошибки» NTFS. Источник

© Habrahabr.ru