EDIT: Коли я писав цю відповідь, дуже мало дистрибутивів, що постачаються з ядром, налаштованим 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 = y
CONFIG_EFI_PARTITION = y
CONFIG_EFI_STUB = y
CONFIG_RELOCATABLE = y
CONFIG_FB_EFI = y
CONFIG_FRAMEBUFFER_CONSOLE = y
CONFIG_EFI_VARS = m
Ядро з цією конфігурацією наразі ще не є стабільним для Debian. Ви можете запекти власне ядро або скористатись експериментальним деревом, тоді ви можете пропустити наступний абзац.
Компіляція ядра
(певно, більше не потрібно, дивіться редагування)
Якщо ви вирішили скласти ядро, ось короткі інструкції, як це зробити. Якщо у вас виникли проблеми, доступно багато інформації про те, як скласти ядро.
Отримання джерела
git clone git: //git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6.git
Перегляньте одну конкретну версію
git checkout v3.6
Налаштування ядра
зробити менюконфігуру
Зробіть потрібні налаштування у вашій системі або залиште їх такими, як є, якщо у вас немає нічого для налаштування. Це записує конфігурацію ядра у файл .config
.
Переконайтесь, що встановлені параметри з попереднього абзацу. Це також має сенс вибрати CONFIG_INPUT_EVBUG=n
. В іншому випадку ваші журнали будуть заповнені GiB сміття.
Побудова ядра
INSTALL_MOD_STRIP = 1 make-kpkg --uc --us binary-arch
Пакети створюються в батьківському каталозі.
Встановлення ядра
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 \
- мітка "Ядро Debian Linux 3.6.0" \
- завантажувач "\\ EFI \\ debian \\ vmlinuz-3.6.0" \
- написати-підпис \
--додаток-бінарні-args -
Аргументом --disk
є пристрій, де знаходиться ядро, а не ESP.
--part
- номер розділу, де знаходиться ядро. --label
це запис у меню завантаження UEFI.
Щоб побачити список доступних записів, просто запустіть efibootmgr
без аргументів. Синтаксис для видалення певного запису
efibootmgr -b запис (шістнадцятковий) -B
наприклад:
efibootmgr -b 001a -B
Ці інструкції не стосуються випадку оновлення ядра. Ядро та initramfs не копіюються автоматично в ESP. Це можна зробити за допомогою короткого сценарію, який копіює ядро та initramfs в ESP і запускається efibootmgr
. Цей скрипт може бути поміщений /etc/kernel/postinst.d
для запуску автоматично після оновлення ядра.
Примітка: менеджер завантаження, як GRUB, не потрібен, UEFI сам виступає як менеджер завантаження.
Це все, що вам потрібно з боку Linux, я не знаю, що потрібно для додавання Windows.