Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#26 Le 24/11/2023, à 19:20

geole

Re : [En test] Script installation de REFIND

Bonjour
Nouvelle version du script    avec les évolutions suivantes:
1) La version refind 0.13.3.1 est remplacée par la version 0.14.0.2.
2 La commande bootctl est remplacée par la commande  mokutil afin de permettre le fonctionnement en  version 23.10.
3) La commande efibootmgr est installé si absente
Voici le nouveau script testé en 22.04 et en 23.10 pour la partie non-secure et simulée pour la partie secure  certainement à cause de cette réponse.

root@ubuntu:~# mokutil --sb-state
SecureBoot disabled
Platform is in Setup Mode
root@ubuntu:~#
## Procédure pour installer refind (à la place du fichier de boot de windows) devant être lancée sous root. Testée en  version 22.04 le 17/05/2022 puis le  25/11/2023 pour la version 23.10
## création du fichier d'exécution. 
cat >reparer.sh<<"REPARE"
#!/bin/bash
ERR="Appuyer sur la touche \e[1mEntrée\e[0m pour"
PDM="/boot/efi" # définir le point de montage
Stock=$PDM/EFI/refind  ### Le lieu de stockage.
## Est-on bien l'utilisateur root.
if [ $UID != 0 ]; then
   echo -e "\n\a\E[31mVous devez être l'utilisateur root pour exécuter ce script.\E[0m\nPour devenir root, veuillez frapper les deux mots de la ligne ci-dessous.\n\E[0m\E[34;47msudo -i\E[0m\nAppuyer sur la touche entrée. Puis saisissez votre mot de passe. Vous pourrez alors relancer le script en refaisant le 'coller'.\n"
exit 1 ; fi
### Est-on bien  dans# une session EFI?
if [ ! -d /sys/firmware/efi ]; then
   echo -e "\n\a\E[31mSession non-EFI.... Refind ne sait pas gérer. Abandon.\n\E[0m"
exit 2 ; fi
## Le répertoire de boot est-il absent? 
if [ ! -d  $PDM/EFI ]; then
   echo Montons la partition EFI  
   PartEFI=$(blkid | grep ' TYPE="vfat" ' | head -1 | cut -d: -f1 ) && echo $PartEFI
   mkdir -p $PDM
   mount -v $PartEFI  $PDM
else
   PartEFI=$(mount | grep 'on /boot/efi' | head -1 | cut -d' ' -f1 ) && echo $PartEFI
fi
ls $PDM/EFI
mkdir -pv $Stock  $PDM/EFI/Boot 2>/dev/null
if test -z $(which mokutil); then apt install -y mokutil ; fi
SEC=$(mokutil --sb-state 2>/dev/null |grep SecureBoot |cut -d" " -f2) && echo $SEC  ### Au lieu de bootctl ##  mokutil --sb-states=>SecureBoot enabled
if [  ! -f $Stock/refind.conf ]; then 
   BETA=0.14.0.2 # au lieu de  0.13.3.1
   echo -e "\nLe fichier standard de  boot  de refind a la version 0.13.2-1 Nous allons télécharger la version BETA $BETA chez le constructeur....\n"
   wget https://freefr.dl.sourceforge.net/project/refind/$BETA/refind-bin-$BETA.zip
   unzip refind-bin-$BETA.zip 1>/dev/null
   cp     refind-bin-$BETA/refind-install        $Stock 
   if [ $SEC = "disabled" ];then 
      ./refind-bin-$BETA/refind-install  --alldrivers --yes
       MSG="Installation du logiciel standard terminée."
   fi
   if [ $SEC = "enabled" ];then
      echo installation du logiciel
      ./refind-bin-$BETA/refind-install --shim /usr/lib/shim/shimx64.efi.signed --alldrivers --yes
      ### Vérifions que les fichiers de boot choisis pour l'installation sont signés. 
      echo sbverify --list $Stock/shimx64.efi        && sbverify --list $Stock/shimx64.efi.signed
      echo sbverify --list $Stock/grubx64.efi        && sbverify --list $Stock/grubx64.efi
      echo sbverify --list $Stock/drivers_x64/ext4_x64.efi        && sbverify --list $Stock/drivers_x64/ext4_x64.efi 
      MSG="Installation du logiciel sécurisé terminée." 
   fi
else
  echo -e "\nrEFInd est probablement déjà installé.\n"; exit 3 ; fi
if test -z "$MSG"; then
   echo -e "\nType de securité inconnu. Rien n'est fait.\n"
exit 4 ; fi
if test -z $(which efibootmgr); then apt install -y efibootmgr ; fi
efibootmgr -v  
#### Cette partie est prévue indépendante au cas où la commande efibootmgr fasse bloquer l'installation pendant une mise à jour de RAM non supportée
echo Refind va être déplacé dans le répertoire de boot
if [  ! -f $PDM/EFI/Boot/BKbootx64.efi ]; then
   mkdir  $PDM/EFI/Boot 2>/dev/null
   cp -v  $PDM/EFI/Boot/bootx64.efi  $PDM/EFI/Boot/BKbootx64.efi 2>/dev/null
fi
cp -r $Stock/* $PDM/EFI/Boot
if [ $SEC = "enabled" ]; then
   cp -v  $PDM/EFI/Boot/shimx64.efi.signed  $PDM/EFI/Boot/bootx64.efi
else
   cp -v  $PDM/EFI/Boot/refind_x64.efi         $PDM/EFI/Boot/bootx64.efi
fi
echo -e "\nRefind a été installé de façon normale. Si vous souhaitez qu'il remplace le logiciel de boot de windows, appuyez sur la touche \e[1mEntrée\e[0m  pour valider. Sinon faites \e[1mCtrl c\e[0m pour ne pas  continuer. \n\a\E[31mIl faut d'abord booter et s'être aperçu que le boot refind ne fonctionne pas pour décider de remplacer ou recréer la structure de boot de windows. \E[0m\n\n"
read
## windows est-il absent?
if [ ! -f $PDM/EFI/Microsoft/Boot/bootmgfw.efi ]; then
   echo -e "\nLe boot de windows est absent. Il est possible qu'il existe plusieurs partitions de boot. Il est aussi possible que vous l'ayez volontairement supprimé.\E[31m Mais si cet ordinateur est bridé, sa présence est nécessaire. Nous allons le récréer correctement. Appuyez sur la touche \e[1mEntrée\e[0m  pour accepter cette création. Sinon faites \e[1mCtrl c\e[0m pour ne pas  continuer."
   read
   mkdir -p  $PDM/EFI/Microsoft/Boot
   touch $PDM/EFI/Microsoft/Boot/bootmgfw.efi
fi
if [ ! -f $PDM/EFI/Microsoft/boot/bkbootmgfw.efi ]; then
   echo le fichier de duplication  du vrai fichier de boot de windows est absent, on va le créer.
   cp -v   $PDM/EFI/Microsoft/Boot/bootmgfw.efi  $PDM/EFI/Microsoft/Boot/bkbootmgfw.efi
fi
## On va faire une entrée en structure windows.
MAJ=$(grep  "\\\EFI\\\Microsoft\\\Boot\\\bkbootmgfw.efi" $PDM/EFI/refind/refind.conf)  
 if test -z "$MAJ"; then
   cat >>"$PDM"/EFI/refind/refind.conf<<EOF
menuentry "Mon Windows 10" {
icon \EFI\refind\icons\os_win.png
loader \EFI\Microsoft\Boot\bkbootmgfw.efi    }
EOF
   echo Mise à jour du fichier de configuration de refind faite.
fi 
cp -r $PDM/EFI/Boot/* $PDM/EFI/Microsoft/Boot # Transférons le répertoire complet.
#Mettre le fichier de boot standard à la place de celui de windows préventivement sauvé.
cp  -v $PDM/EFI/Microsoft/Boot/bootx64.efi $PDM/EFI/Microsoft/Boot/bootmgfw.efi
md5sum  $PDM/EFI/Microsoft/*/*.efi $PDM/EFI/*/*.efi | sort 
echo -e "Souvenez-vous qu'une \e[1mgrosse mise à jour de windows\e[0m oblige à recommencer cette procédure." $MSG      
REPARE
chmod  +x reparer.sh
./reparer.sh
#### FIN **** 

Dernière modification par geole (Le 25/11/2023, à 19:01)


Les grilles de l'installateur https://doc.ubuntu-fr.org/tutoriel/inst … _subiquity
"gedit admin:///etc/fstab" est proscrit,  utilisez "pkexec env DISPLAY=$DISPLAY XAUTHORITY=$XAUTHORITY xdg-open /etc/fstab" Voir  https://doc.ubuntu-fr.org/gedit
Les partitions EXT4 des disques externes => https://forum.ubuntu-fr.org/viewtopic.p … #p22697248

Hors ligne

#27 Le 24/11/2023, à 20:35

Watael

Re : [En test] Script installation de REFIND

salut,

- touch ne sert à rien.
- un ligne d'un script devrait ne pas excéder 80 caractères.
- les variables doivent toujours être entre guillemets. TOUJOURS ! à moins de savoir pourquoi. big_smile
- un seul md5sum pour tous les fichiers.


Connected \o/
Welcome to sHell. · eval is evil.

Hors ligne