#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.
- un seul md5sum pour tous les fichiers.
Connected \o/
Welcome to sHell. · eval is evil.
Hors ligne