Что я должен сделать перед двойной загрузкой Windows 7 и Debian на EFI?


10

Я собираюсь купить материнскую плату Asus с прошивкой EFI и хотел подготовить себя к установке Windows и Debian после того, как появится оборудование. Я надеялся, что кто-то, кто пошел по этому пути, может дать мне несколько советов.

Какие приготовления я должен сделать, прежде чем пытаться установить Windows 7 и Debian в новой системе на основе UEFI?

Ответы:


8

РЕДАКТИРОВАТЬ: Когда я писал этот ответ, очень немногие дистрибутивы поставлялись с настроенным ядром EFI_STUB, поэтому нужно было создать собственное. В настоящее время большинство дистрибутивов поставляются с соответствующим образом настроенным ядром, и пользовательская сборка больше не требуется. В этом случае интересны разделы «Настройка разделов» и «Настройка» , «Требования» и «Сборка ядра» можно пропустить.

Я не знаю, как Windows обрабатывает UEFI, но со стороны Debian это довольно просто.

Настройте свои разделы

Используйте схему разделов GPT, а не MBR.

Для загрузки из раздела GPT с UEFI требуется выделенный загрузочный раздел, называемый EFI SYSTEM PARTITION (ESP). Это не обязательно, но наиболее совместимым способом является использование раздела FAT32. Размер 200 МБ должен подойти для большинства случаев.

Чтобы зарегистрировать раздел как ESP, он должен быть помечен bootфлагом. В отличие от схем MBR, флаг загрузки используется только для обозначения ESP, а не разделов, с которых можно загружаться.

UEFI использует структуру каталогов \EFI\<vendor>\<application>.efiдля хранения приложений UEFI. Разделитель каталогов обозначается обратной косой чертой даже в Linux. может быть именем дистрибутива, фактическое значение не относится к UEFI.

Приложениями могут быть системные утилиты, такие как средства проверки памяти или оболочка UEFI. Это также может быть загрузчик ОС или сама операционная система. Эти приложения должны быть зарегистрированы в UEFI, чтобы их можно было запускать во время загрузки.

Требования

Версия ядра Linux> = 3.3 может быть загружена непосредственно UEFI. Ядро может действовать как собственный загрузчик. Это называется EFISTUB . Следующие конфигурации ядра необходимы.

CONFIG_EFI = у
CONFIG_EFI_PARTITION = у
CONFIG_EFI_STUB = у
CONFIG_RELOCATABLE = у
CONFIG_FB_EFI = у
CONFIG_FRAMEBUFFER_CONSOLE = у
CONFIG_EFI_VARS = т

Ядро с такой конфигурацией в настоящее время еще не стабильно в Debian. Вы можете испечь свое собственное ядро ​​или использовать ядро ​​из экспериментального дерева, в этом случае вы можете пропустить следующий абзац.

Компиляция ядра

(вероятно, больше не нужно, см. редактирование)

Если вы решили скомпилировать ядро, здесь приведены короткие инструкции, как это сделать. Если вы столкнетесь с проблемами, есть много информации о том, как скомпилировать ядро.

Получение источника

git clone git: //git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6.git

Проверьте одну конкретную версию

git checkout v3.6

Настройка ядра

сделать menuconfig

Сделайте необходимые настройки в вашей системе или оставьте все как есть, если вам нечего настраивать. Это записывает конфигурацию ядра в файл .config.

Убедитесь, что настройки из предыдущего абзаца установлены. Также имеет смысл выбирать CONFIG_INPUT_EVBUG=n. В противном случае ваши журналы будут заполнены ГиБ мусора.

Сборка ядра

INSTALL_MOD_STRIP = 1 make-kpkg --uc --us бинарная арка

Пакеты создаются в родительском каталоге.

Установка ядра

dpkg -i linux-image-3.5.0_Custom.deb linux-headers-3.5.0_Custom.deb

Построение initramfs

mkinitramfs -o /boot/initrd.img-3.6.0-amd64 3.6.0

3.6.0 - версия ядра. По умолчанию используется работающее ядро, что не является хорошим выбором, так как вы все еще работаете со старым ядром.

Настройка вещей

Чтобы иметь возможность загружать ядро ​​Linux, оно должно быть скопировано в ESP вместе с initramfs. Учитывая, что ESP установлен на/boot/efi

/boot/efi/EFI/debian/vmlinuz-3.6.0.efi
/boot/efi/EFI/debian/initrd.img-3.6.0

ПРИМЕЧАНИЕ. Для обеспечения совместимости с большинством систем необходимо добавить расширение efiв ядро.

Теперь ядро ​​можно зарегистрировать в UEFI. Мы используем инструмент efibootmgrдля этого.

echo "root = UUID = 3a4287b6-b3a7-4721-da38-acc38a928278 ro rootfstype = ext4 add_efi_memmap initrd = \\ EFI \\ debian \\ initrd.img-3.6.0" |
  iconv -f ascii -t ucs2 |
  efibootmgr \
    --Создайте \
    --gpt \
    --disk / dev / sda \
    - часть 4 \
    --label "Ядро Debian Linux 3.6.0" \
    --loader "\\ EFI \\ debian \\ vmlinuz-3.6.0" \
    --write-signature \
    --append-binary-args -

Аргументом --diskявляется устройство, в котором находится ядро, а не ESP. --partномер раздела, в котором находится ядро. --labelэто запись в меню загрузки UEFI.

Чтобы увидеть список доступных записей, просто запустите efibootmgrбез аргументов. Синтаксис для удаления конкретной записи

efibootmgr -b запись (hex) -B

например:

efibootmgr -b 001a -B

Эти инструкции не обрабатывают случай обновления ядра. Ядро и initramfs не копируются автоматически в ESP. Это можно сделать с помощью короткого скрипта, который копирует ядро ​​и initramfs в ESP и запускается efibootmgr. Этот скрипт может быть помещен /etc/kernel/postinst.dдля автоматического запуска после обновления ядра.

Примечание: менеджер загрузки, такой как GRUB, не нужен, сам UEFI действует как менеджер загрузки.

Это все, что вам нужно со стороны Linux, я не знаю, что нужно для добавления Windows.


2

Убедитесь, что UEFI не собирается блокировать Linux на вашей машине; вероятно, в BIOS есть настройка на этот счет. Проверьте и убедитесь наверняка. Я бы перепроверил этот пункт с руководством и с производителем, если нужно.

Было некоторое расширенное обсуждение об этом; У ZDNet было несколько статей. Вот статья от 21 сентября 2011 года и одна статья от 23 сентября .

Во-вторых, основываясь на исторических данных, вы можете сначала установить Windows. Традиционно Windows просто предполагает, что это единственная ОС на компьютере - таким образом, она стирает все загрузочные данные, связанные с Linux. Это может быть иначе для UEFI, я не знаю.


2

Вам не обязательно выполнять двойную загрузку Windows и Linux на UEFI. Следуйте инструкциям, чтобы преобразовать ваш UEFI в MBR-BIOS без потери данных.

Это руководство было сделано мной. Кроме того, упомянутый блог никогда не будет снят. Хотя я использовал его 10 раз без потери данных, я бы порекомендовал вам сделать резервную копию ваших данных перед использованием моей процедуры.


Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.