EDIT: Lorsque j'ai écrit cette réponse, très peu de distributions étaient livrées avec un noyau configuré EFI_STUB, il fallait donc en créer un personnalisé. De nos jours, la plupart des distributions livrent un noyau correctement configuré et une construction personnalisée n'est plus requise. Dans ce cas, les sections «Configurer vos partitions» et «Configurer les choses» sont les plus intéressantes, «Exigences» et «Compilation du noyau» peuvent être ignorées.
Je ne sais pas comment Windows gère UEFI, mais du côté Debian, c'est assez simple.
Configurez vos partitions
Utilisez le schéma de partition GPT, pas MBR.
Pour démarrer à partir d'une partition GPT avec UEFI, une partition de démarrage dédiée est obligatoire, appelée EFI SYSTEM PARTITION (ESP). Ce n'est pas obligatoire, mais le moyen le plus compatible est d'utiliser une partition FAT32. Une taille de 200 Mio devrait convenir dans la plupart des cas.
Pour enregistrer la partition en tant qu'ESP, elle doit être signalée avec l' boot
indicateur. Contrairement aux schémas MBR, l'indicateur de démarrage est uniquement utilisé pour indiquer l'ESP, pas les partitions à partir desquelles démarrer.
UEFI utilise une structure de répertoires \EFI\<vendor>\<application>.efi
pour stocker les applications UEFI. Un séparateur de répertoires est indiqué par une barre oblique inverse , même sous Linux. pourrait être un nom de distribution, la valeur réelle n'est pas pertinente pour l'UEFI.
Les applications peuvent être des utilitaires système comme des vérificateurs de mémoire ou un shell UEFI. Il peut également s'agir d'un chargeur de système d'exploitation ou du système d'exploitation lui-même. Ces applications doivent être enregistrées dans l'UEFI pour pouvoir être lancées au démarrage.
Exigences
La version du noyau Linux> = 3.3 peut être chargée directement par l'UEFI. Le noyau peut agir comme son propre chargeur. Cela s'appelle EFISTUB . Les configurations de noyau suivantes sont nécessaires.
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
Un noyau avec cette configuration n'est actuellement pas encore stable dans Debian. Vous pouvez soit faire cuire votre propre noyau ou utiliser celui de l'arborescence expérimentale dans ce cas, vous pouvez ignorer le paragraphe suivant.
Compiler le noyau
(probablement plus nécessaire, voir modifier)
Si vous décidez de compiler le noyau, voici de courtes instructions pour le faire. Si vous rencontrez des problèmes, de nombreuses informations sont disponibles sur la façon de compiler un noyau.
Obtenir la source
git clone git: //git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6.git
Découvrez une version particulière
git checkout v3.6
Configuration du noyau
faire menuconfig
Définissez les paramètres nécessaires sur votre système ou laissez-les tels quels si vous n'avez rien à personnaliser. Cela écrit la configuration du noyau dans le fichier .config
.
Assurez-vous que les paramètres du paragraphe précédent sont définis. Il est également judicieux de sélectionner CONFIG_INPUT_EVBUG=n
. Sinon, vos journaux seront remplis de Gio de déchets.
Construire le noyau
INSTALL_MOD_STRIP = 1 make-kpkg --uc --us binary-arch
Les packages sont créés dans le répertoire parent.
Installation du noyau
dpkg -i linux-image-3.5.0_Custom.deb linux-headers-3.5.0_Custom.deb
Création d'initramfs
mkinitramfs -o /boot/initrd.img-3.6.0-amd64 3.6.0
3.6.0 est la version du noyau. Il s'agit par défaut du noyau en cours d'exécution, ce qui n'est pas un bon choix, car vous utilisez toujours l'ancien noyau.
Mise en place des choses
Pour pouvoir démarrer le noyau Linux, il doit être copié sur l'ESP avec les initramfs. Étant donné que l'ESP est monté à/boot/efi
/boot/efi/EFI/debian/vmlinuz-3.6.0.efi
/boot/efi/EFI/debian/initrd.img-3.6.0
REMARQUE: pour garantir la compatibilité avec la plupart des systèmes, l'extension efi
doit être ajoutée au noyau.
Maintenant, le noyau peut être enregistré dans l'UEFI. Nous utilisons l'outil efibootmgr
pour cela.
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 \
--créer \
--gpt \
--disk / dev / sda \
--partie 4 \
--label "Debian Linux kernel 3.6.0" \
--loader "\\ EFI \\ debian \\ vmlinuz-3.6.0" \
--write-signature \
--append-binary-args -
L'argument de --disk
est le périphérique où réside le noyau, pas l'ESP.
--part
est le numéro de partition où réside le noyau. --label
est l'entrée dans le menu de démarrage UEFI.
Pour voir une liste des entrées disponibles, lancez simplement efibootmgr
sans arguments. Syntaxe pour supprimer une entrée particulière
efibootmgr -b entrée (hex) -B
par exemple:
efibootmgr -b 001a -B
Ces instructions ne gèrent pas le cas d'une mise à jour du noyau. Le noyau et initramfs ne sont pas automatiquement copiés sur l'ESP. Cela peut être fait en utilisant un script court qui copie le noyau et les initramfs sur l'ESP et s'exécute efibootmgr
. Ce script peut être placé /etc/kernel/postinst.d
pour être lancé automatiquement après la mise à jour du noyau.
Remarque: Un gestionnaire de démarrage comme GRUB n'est pas nécessaire, UEFI lui-même agit comme gestionnaire de démarrage.
C'est tout ce dont vous avez besoin du côté Linux, je ne sais pas ce qu'il faut pour ajouter Windows.