» » » Разбираемся с UEFI и GPT: установка Windows и Kubuntu на один диск

 

Разбираемся с UEFI и GPT: установка Windows и Kubuntu на один диск

Автор: admin от 1-06-2015, 19:09, посмотрело: 2280

Помните те времена, когда 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 приятно выглядит и там есть поддержка мышки.


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 x 10^21 байт, или условно 1000 Тб)

  • Порядок загрузки: раньше BIOS загружал MBR, и в нем содержались адреса загрузчиков для каждого раздела диска. Теперь UEFI считывает GPT, находит в таблице все разделы типа efi (на них содержатся загрузчики), и подгружает их в память. Разберем это на примере немного позже.



Что делаем:


Устанавливаем следующие ОС на пустой HDD размером в 1 Тб.

  • Windows 8.1 x64. Windows поддерживает загрузку с GPT начиная с Windows 8 для 32 битной архитектуры и с Windows Server 2003 и Windows Vista для 64 бит (Источник).

  • Kubuntu 15.04. По идее подойдет любой дистрибутив, который поддерживает Grub2, лично я предпочитаю Kubuntu.


NB: Материнская плата поддерживает UEFI

Разбивка диска


Сначала устанавливаем Windows 8, т.к. она автоматически будет использовать GPT.
Разбивка будет выглядеть так (пардон за кривой снимок):

Разбираемся с UEFI и GPT: установка Windows и Kubuntu на один диск

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

  • Recovery (300Мб). Очевидно, что он используется для восстановления системы. Оставим как есть.

  • EFI partition (100Мб). Помечается как system type (не любят в Майкрософте называть вещи своими техническими именами). Собсвенно сюда и пишутся загрузчики.

  • MSR (128Мб, Microsoft Reserved Partition). Для меня остается загадкой, зачем он нужен. Данных там никаких нет, просто пустое место, зарезервированное для каких-то непонятных целей в будущем.

  • Основной раздел. Мы его поделим на 3: 200 гигов под винду, 500 гигов для раздела под данные и остальное пространство пока оставим неразмеченным (отформатируем потом при установке Kubuntu).



  • Пропустим саму установку Windows, т.к. в ней все стандартно и понятно.

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

    Проверим EFI раздел:
    [email protected]:~$ 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.

    Можем также сразу посмотреть, что же в этом разделе, подмотировав его:
    [email protected]:~$ sudo mkdir /media/efi
    [email protected]:~$ sudo mount /dev/sda2 /media/efi
    

    Там окажутся следующие файлы:
    EFI
    |--Boot
    |    |--bootx64.efi # дефолтный загрузчик
    |--Microsoft
         |--Boot
             |--bootmgfw.efi # основной виндовый загрузчик
             |--# много других файлов
    

    Убедились, что все хорошо. Теперь продолжаем разбивку диска (через KDE Partition Manager).

    Разбираемся с UEFI и GPT: установка Windows и Kubuntu на один диск

    Первые пять разделов остались прежними. Обратите внимание, как 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 раздел, однако на результат эти ошибки не влияют.

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

    Разбираемся с UEFI и GPT: установка Windows и Kubuntu на один диск

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

    Разбираемся с UEFI и GPT: установка Windows и Kubuntu на один диск

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

    После завершения установки Kubuntu, заходим в систему и проверяем, какие файлы появились на efi разделе (монтировать уже не нужно):
    [email protected]:~$ sudo ls /boot/efi/EFI
    Boot  Microsoft  ubuntu
    [email protected]:~$ sudo ls /boot/efi/EFI/ubuntu
    grub.cfg  grubx64.efi  MokManager.efi  shimx64.efi
    

    Смотрим, как теперь выглядит список загрузчиков:
    [email protected]:~$ 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(EFIMicrosoftBootbootmgfw.efi)
    Boot0001* Hard Drive    BIOS(2,0,00)
    Boot0002* ubuntu        HD(2,96800,32000,c4f37e07-0441-4967-a1ac-75fb5a36e4f3)File(EFIubuntushimx64.efi)
    Boot0003* ubuntu        HD(2,96800,32000,c4f37e07-0441-4967-a1ac-75fb5a36e4f3)File(EFIUbuntugrubx64.efi)
    

    Вот как это выглядит при загрузке:

    Разбираемся с UEFI и GPT: установка Windows и Kubuntu на один диск

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

    Разбираемся с UEFI и GPT: установка Windows и Kubuntu на один диск

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

    Источник: Хабрахабр

    Категория: Системное администрирование, Windows, Linux

    Уважаемый посетитель, Вы зашли на сайт как незарегистрированный пользователь.
    Мы рекомендуем Вам зарегистрироваться либо войти на сайт под своим именем.

    Добавление комментария

    Имя:*
    E-Mail:
    Комментарий:
    Полужирный Наклонный текст Подчеркнутый текст Зачеркнутый текст | Выравнивание по левому краю По центру Выравнивание по правому краю | Вставка смайликов Выбор цвета | Скрытый текст Вставка цитаты Преобразовать выбранный текст из транслитерации в кириллицу Вставка спойлера
    Введите два слова, показанных на изображении: *