Разбираемся с 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 приятно выглядит и там есть поддержка мышки.
- Количество разделов: MBR поддерживает только 4 раздела. Можно и больше, но только через extended partition, что является просто хаком ограничений. GPT поддерживает до 128 разделов.
- Размер диска: MBR поддерживает диски до 2Тб, в то время как GPT — до 9.4 Зеттабайт (=9.4 × 10^21 байт, или условно 1000 Тб)
- Порядок загрузки: раньше BIOS загружал MBR, и в нем содержались адреса загрузчиков для каждого раздела диска. Теперь UEFI считывает GPT, находит в таблице все разделы типа efi (на них содержатся загрузчики), и подгружает их в память. Разберем это на примере немного позже.
Что делаем:
- Windows 8.1 x64. Windows поддерживает загрузку с GPT начиная с Windows 8 для 32 битной архитектуры и с Windows Server 2003 и Windows Vista для 64 бит (Источник).
- Kubuntu 15.04. По идее подойдет любой дистрибутив, который поддерживает Grub2, лично я предпочитаю Kubuntu.
Разбивка диска
Сначала устанавливаем Windows 8, т.к. она автоматически будет использовать GPT.
Разбивка будет выглядеть так (пардон за кривой снимок):
- Recovery (300Мб). Очевидно, что он используется для восстановления системы. Оставим как есть.
- EFI partition (100Мб). Помечается как system type (не любят в Майкрософте называть вещи своими техническими именами). Собственно сюда и пишутся загрузчики.
- MSR (128Мб, Microsoft Reserved Partition). Для меня остается загадкой, зачем он нужен. Данных там никаких нет, просто пустое место, зарезервированное для каких-то непонятных целей в будущем.
- Основной раздел. Мы его поделим на 3: 200 гигов под винду, 500 гигов для раздела под данные и остальное пространство пока оставим неразмеченным (отформатируем потом при установке Kubuntu).
Пропустим саму установку Windows, т.к. в ней все стандартно и понятно.
Теперь загрузимся с USB в Kubuntu Live.
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).
- 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 раздел, однако на результат эти ошибки не влияют.
Теперь самое главное для правильного dual boot’а. При установке Kubuntu важно выбрать, куда установить загрузчик:
Указываем, конечно же на раздел 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)
Вот как это выглядит при загрузке:
А еще эти загрузчики доступны сразу из UEFI (в старом BIOS’е такое было бы невозможно — там был выбор только диска, он просто не знал, что такое загрузчики):
Ну и напоследок: чтобы dual boot правильно работал, в Windows надо обязательно отключить fast boot. Это такая нехорошая фича, которая может привести к потере данных.
При выключении компьютера Windows сохраняет файловую структуру NTFS разделов в файл (видимо, потому что один файл прочитать быстрее, чем сканировать много разных файлов). Если записать файл на NTFS раздел через линукс, и потом загрузиться в Windows, то Windows просто не увидит файл. Источник
Если выключить комп через Windows, и потом попытаться загрузить Linux, то он просто не запустится из-за «ошибки» NTFS. Источник
Параллельная установка двух операционных систем: Windows и Ubuntu
Установка сразу двух операционных систем – это отличный способ получить лучшее от обеих опций: Windows и Linux. Установить две операционные системы на один компьютер сравнительно просто, к тому же это хорошая возможность заодно узнать больше о работе компьютера и его программного обеспечения. Когда вы собираете свой компьютер, то оказываетесь перед задачей выбора аппаратных компонентов, которые войдут в состав вашей системы. Это выбор, естественно, ограничивается рядом факторов, но, тем не менее, на ваше усмотрение остается множество вариантов, даже когда вы выбираете в рамках продукции конкретной фирмы, будь то «зеленые», «красные» или «синие». Когда вы, наконец, все собрали и услышали сигналы POST, остается еще один шаг, после которого вы сможете в полной мере наслаждаться своей новой конфигурацией! Прежде чем начать играть, работать с текстами или просто бродить по интернету, нужно установить еще один критически важный компонент – операционную систему (ОС).
Дистрибутив Ubuntu – хороший вариант для начинающих пользователей Linux, хотя есть и другие опции (также на основе Ubuntu), каждая из которых предлагает уникальный опыт перехода на Linux. Zorin и Pop!_OS – идеальные решения для геймеров или недавних пользователей Windows и элементарных ОС, отличающиеся к тому же потрясающим дизайном, который многим напоминает macOS. В принципе, вариантов ОС не так уж много. Для большинства людей Windows – это фактически синоним понятия «операционная система для ПК». Очень многие используют ее в своей повседневной компьютерной практике, она изначально поддерживает различные приложения и вообще доминирует на рынке. Одна из альтернативных опций, macOS – это проприетарная операционная система Apple. И вы не можете просто взять и установить ее на свой новый компьютер – из-за ряда лицензионных и других ограничений по использованию этой системы на компьютерах производства не Apple. Народ, конечно, нашел способы обходить эти ограничения, но Apple не считает это законным. И, наконец, Linux. Как мы косвенно уже упомянули, существует множество разновидностей дистрибутивов Linux, из которых вы можете выбрать наиболее подходящий к вашим задачам. Однако все они базируются на общем ядре Linux, поэтому вся наша дальнейшая аргументация в пользу Linux применима ко всем этим дистрибутивам. Так что вопрос выбора операционной системы, по большому счету, сводится к следующему: Windows или Linux? И мы в данной статье предлагаем вам рассмотреть еще один вариант: “А почему бы не обе?”
Почему Linux? И зачем нужны две операционные системы?
Если вы обычный пользователь, то более простым и надежным вариантом, вероятнее всего, считаете стандартную (и желательно заводскую) установку Windows. Зачем же связываться с Linux? Во-первых, затем, что большинство дистрибутивов Linux – бесплатные, что дает вам возможность немного сэкономить. Поскольку ядро Linux доступно в открытых источниках и большинство ОС Linux – бесплатные, вы даже можете изучить новейшие версии в их развитии. Во-вторых, Linux потребляет сравнительно мало ресурсов ПК. «В нагрузку» к этой ОС добавляют лишь небольшое количество «паразитного» ПО (bloatware), а системные требования для Linux обычно намного легче, чем для Windows: требуется меньше оперативной памяти, меньшее дисковое пространство для установки ОС, поддерживаются относительно старые модели процессоров, не говоря уже о том, что не требуется модуль TPM. Благодаря всему этому дистрибутив Linux будет наилучшим решением, если нужно реанимировать старый компьютер.
Многие пользователи ценят Linux за разнообразие опций настройки – начиная с выбора самого дистрибутива Linux, каждый из которых предлагает уникальный пользовательский опыт. И даже в рамках одного дистрибутива вы можете изменять вид интерфейса, выбирать различные опции менеджеров окон, настроек анимации, рабочего стола и т.д. А благодаря солидному и отзывчивому сообществу пользователей Linux и большому количеству форумов вы практически всегда получите грамотную техническую консультацию по интересующему вас вопросу. Однако Linux не является абсолютно универсальным решением. Например, некоторые приложения могут быть разработаны специально под среду Windows или Mac, поэтому в Linux они работать не будут. Для многих из этих приложений можно найти аналоги в открытых источниках, но некоторые – например, игры – такой альтернативы принципиально не предлагают. Эта ситуация потихоньку начинает меняться – Steam уже поддерживает многие игры на Linux – но все-таки, прежде чем забыть про Windows и полностью перейти на ПО из открытых источников, необходимо взвесить все потенциальные издержки, которые могут быть связаны с этим переходом.
На Steam продолжает расти число игр с поддержкой Linux.
Но зачем же забывать насовсем? Почему бы не установить на компьютер параллельно Windows и Ubuntu, чтобы иметь возможность пользоваться преимуществами каждой из этих ОС? В этом и состоит концепция “опциональной загрузки”, и нам осталось только рассказать вам, как это сделать. Для начала скажем несколько слов о том, что происходит в вашем компьютере при опциональной загрузке. Знать это в деталях не обязательно, но желательно иметь некоторые фоновые представления об этом процессе, чтобы лучше уяснить себе ключевые моменты последующей установки операционных систем.
Что происходит в компьютере во время загрузки?
Когда вы нажимаете кнопку питания вашего ПК, материнская плата включается и начинает процесс загрузки. Этот процесс осуществляется под управлением системы BIOS, которая проводит базовую диагностику аппаратного обеспечения ПК, проверяя наличие и функциональное состояние необходимых компонентов (оперативной памяти, накопителей, клавиатуры, мыши и т.д.). Затем BIOS обращается к главной загрузочной записи (Master Boot Record, MBR), которая начинает процесс загрузки ОС, чтобы далее вы могли запускать на компьютере свои приложения.