uefi - gpt

Rédigé par Paulo Aucun commentaire
Classé dans : Divers Mots clés : uefi


uefi - gpt
 

UEFI : Unified Extensible Firmware Extension
            Définit un logiciel intermédiaire entre le micrologiciel (firmware) et l'OS d'un ordinateur.

  • fait suite à EFI (extended firmware extension de intel)
  • gestionnaire d'amoçage qui se substitue (ou pas) au bios
  • prise en charge des tables de partinion MBR et GPT
  • contrairement au bios, uefi n'exige pas que le secteur de boot se situe à un endroit particulier
  • depuis la version 2.3.1, uefi intègre une fonctionnalité n'autorisant que le démarrage de systèmes connus (verification de signature numérique)
    permet (permettait ....) d'eviter virus et autre rootkit

GPT :  Guid Partition Table           

  • la table de partitionnement du MBR date du début des années 1980. Dès la fin des années 1990, les limitations (taille des disques < 2.2To) qu'elle impose sont apparues trop contraignantes pour les matériels les plus modernes. Intel a alors développé un nouveau format de table de partitionnement, format qui fait partie de ce qui devint UEFI. La GPT étant un sous-ensemble des spécifications de UEFI.
  • table de partitionnement basé sur le MBR est située sur les 512 premiers octets du périphérique d'amorçage (utilisation du bios).
  • en mode gpt, les infos de partitionnement sont situés dans une entête gpt mais pour assurer la compatibilité (bios ne gérant pas gpt mais mbr), les infos du mbr sont toujours à l'adresse 0, l'entête gpt se trouve à l'adresse 1 et la table de partitionnement à l'adresse 2. 

avantages GPT :

  • partitions de taille supérieur à 2.2To
  • pas de limite de partition primaire (128 partitions disponibles)

utilitaires GPT :

  • fdisk n'est pas content de rencontrer un partitionnement GUID, lui prefere : gdisk
  • parted
  • dumpet -i
  • gparted

sauvegarde table de partition :

  • adieu le bon vieux 'dd if=/dev/sdX of=mbr.dd count=1 bs=512'
  • la table de partition (GUID) ayant une longueur/emplacement variable, il faut utiliser une méthode différente pour la sauvegarder (non testée...)
    #installation de gdisk (qui contient sgdisk) 
       sudo yum install gdisk
    
    #sauvegarde GUID
       sgdisk -b sda.gpt /dev/sda


Création de nos isos (modif à apporter afin de gerer partion GPT et UEFI) :

  • kickstart :  suppression du clearpart --all
  • snippet de partitionnement (%pre di kickstart)
    - label GPT posé sur le disque d'installation
    # Detection du types et de nombre de disque
    type="none"
    declare -i nb=0
    lst_dsk=''
    
    for i in /sys/block/[sv]d?; do
        dev=$(basename ${i})
        if ! udevadm info --query=path --name=${dev} | grep -q -e '/usb'; then
            lst_dsk="${lst_dsk} ${dev}"
        fi  
    done    
    lst_dsk=$(echo $lst_dsk|tr ' ' '\n'|sort|tr '\n' ' ')
    nb=$(echo $lst_dsk|wc -w)
    
    #<jpc>
    dsk_gpt=$(echo ${lst_dsk}|cut -d' ' -f1)
    /usr/bin/dd bs=512 count=10 if=/dev/zero of=/dev/${dsk_gpt}
    /usr/sbin/parted --script /dev/${dsk_gpt} mklabel gpt 
    #</jpc>
    
    - ajout de 2 partiions dans le partitionnement:
    ...        
        "part /boot/efi --fstype efi --size 200 --asprimary --ondisk sda",
        "part biosboot --fstype biosboot --size 1 --ondisk sda",
    ...
    

    Ps : sur certains serveurs, il a fallu rajouter le mode 'Legacy' dans la liste des périph de boot

Comment savoir si partition biosboot est necessaire :
source : https://www.redhat.com/archives/kickstart-list/2012-August/msg00005.html

  • le systeme demarre en EFI mode ou en BIOS mode ?
    • EFI : utiliser gpt et jamais biosboot
    • BIOS :
      • le disque est il plus grand que 2.2To ?
        • oui : utiliser gpt et une partition biosboot
        • non : use partition classique

Dans les scripts de de preinstal :
 

  # get disk size in GB
  DISKSIZE=`parted -sm /dev/$DEV unit GB print | grep -e "$DEV" | cut
-d: -f2 | sed -e 's/GB$//'`
  if [ -e /sys/firmware/efi -o $DISKSIZE -gt 2100 ]
  then
    # bios boot partition necessary
    echo "part biosboot --fstype=biosboot --size=1 --ondisk=$DEV" >>
$INCFILE
  fi


 

Les commentaires sont fermés.