#1 Le 26/03/2021, à 16:18
- geole
[En test] Script installation de REFIND
Bonjour.
Je suis loin de connaître les lignes de commandes et le script. En voulant améliorer une documentation, je tente de fabriquer un script. Unitairement, les lignes de commandes fonctionnent. Mais lorsque je veux rassembler tout cela pour en faire l'exécution par la technique copier/coller, pas grand chose ne fonctionne.
J'ai tenté de mettre ce script dans un fichier, de mettre les droits d'exécution dans le fichier. Cela semble mieux fonctionner. Mais le problème est que ce script est prévu pour être utilisé en dépannage du démarrage de l'ordinateur.
Donc souvent on a une partition FAT32 et il faut un montage très spécial pour pouvoir mettre les droits d'exécution.
Du coup, comme le script n'est pas si volumineux que cela, je pense que le proposer à l'utilisateur en technique copier/coller est jouable.
Ma première question.
J'envisage de mettre dans cet échange le lieu de récupération du script.
Il y a probablement d'autres possibilités. Mais je ne pense pas que le mettre dans la documentation soit une bonne solution.... S'il y a mieux, je suis preneur.
Ma demande.
J'ai écrit comme j'ai pu, Il peut donc y avoir beaucoup mieux pour codifier. N'hésitez pas à proposer.
Mon souhait serait que malgré tout, les commandes ne deviennent pas trop incompréhensibles.
Je ne peux pas utiliser la sortie exit du script. Les messages de sorties n'ont pas le temps d'être lus. D'où la double comparaison pour que la totalité du script se déroule.
Les deux problèmes que je rencontre.
1) Je souhaite transmettre une information à l'utilisateur, lui laisser le temps de la lire avant de continuer
Je peux toujours mettre une commande sleep de 96 secondes et lui demander de patienter un peu.
Initialement j'ai pensé à une commande read. Il suffirait que l'utilisateur appuie sur return lorsqu'il a fini de lire, de comprendre ce qui est demandé et de décider de passer à la suite ou pas.
Dans un contexte unitaire, cette commande fonctionne, mais en utilisation copier/coller, il me semble qu'elle récupère la suite du script.. (un écho de la réponse à read)..
Donc quelle solution ????
2) Ce script va quelquefois au bout, quelquefois non. Je ne sais pas trop si c'est à cause de sa taille ou à cause de la commande read. J'ai une très mauvaise parade en le découpant en deux mais cela va compliquer son mode d'emploi.
Voici donc les deux morceaux du script.
### Procédure pour installer refind à la place du fichier de boot de windows devant être lancée sous root
#On se sait jamais
setxkbmap fr
### Est-on bien dans une session EFI?
if [ -d /sys/firmware/efi ]; then
MSG=""
## Est-on bien l'utilisateur root.
if [ $UID != 0 ]; then
MSG="\n\a\E[31mVous devez être l'utilisateur root pour exécuter ce script.\n\E[0m\E[34;47msudo -i\E[0m\n"
fi
else
MSG="\n\a\E[31mSession non-EFI.... Refind ne sait pas gérer. Abandon.\n\E[0m"
fi
## Le répertoire de boot est-il absent?
if [ ${#MSG} = 0 ]; then
if [ ! -d /boot/efi/EFI ]; then
#monter la partition de boot EFI
PartEFI=$(blkid | grep vfat | head -1 | cut -d: -f1 ) && echo $PartEFI
mkdir -p /boot/efi
mount -v $PartEFI /boot/efi
fi
ls /boot/efi/EFI
## windows est-il absent?
if [ ! -f /boot/efi/EFI/Microsoft/Boot/bootmgfw.efi ]; then
MSG="\nLe boot de windows est absent. Il est possible qu'il existe plusieurs partitions de boot. \E[31mCe cas n'est pas prévu.\E[0m Abandon du script.\n\a"
fi
## refind est-il absent?
if [ ${#MSG} = 0 ]; then
if [ ! -d /boot/efi/EFI/refind ]; then
echo Refind est absent. Installation de refind et de efibootmgr lancée.
add-apt-repository universe
echo -e "\nveuillez valider la réponse \e[1mOUI\e[0m prépositionnée dans la grille d'installation de refind qui va s'afficher.\n"
echo -e "appuyer sur la touche \e[1mEntrée\e[0m pour continuer."
read
sleep 96
apt install --reinstall refind
# On le transfert dans la partition de boot
cp -r /usr/share/refind/* /boot/efi/EFI
# On en profite pour fabriquer le fichier de configuration.
cp -v /boot/efi/EFI/refind/refind.conf-sample /boot/efi/EFI/refind/refind.conf
fi
fi
## On se positionne dans la partition de boot efi
cd /boot/efi/EFI
# Par prudence, sauvons le fichier de boot de windows
cp -v Microsoft/Boot/bootmgfw.efi Microsoft/Boot/bootmgfw$(date +"-%Y-%m-%d-%H-%M-%S").efi
# On va vérifier la présence du fichier de boot de sécurité de windows.
if [ ! -f Microsoft/boot/bkbootmgfw.efi ]; then
echo le fichier de sécurité est absent, on va le créer.
cp -v Microsoft/Boot/bootmgfw.efi Microsoft/Boot/bkbootmgfw.efi
fi
## Mettons à jour le fichier de configuration de refind. Vérifions si cela a déjà été fait.
if grep -q "\\\EFI\\\Microsoft\\\Boot\\\bkbootmgfw.efi" refind/refind.conf ; then
cat >>refind/refind.conf<<EOF
menuentry "Windows 10" {
icon \EFI\refind\icons\os_win.png
loader \EFI\Microsoft\Boot\bkbootmgfw.efi }
EOF
# la borne doit être suivie d'une ligne à espace.
fi
SECURE=$(bootctl status 2>/dev/null | grep "Secure Boot") && echo $SECURE
SEC=$(echo $SECURE|cut -d: -f2) && echo $SEC
fi
echo -e $MSG
##Terminé
### Procédure pour écraser le fichier de boot de windows par celui de refind devant être lancée sous root Cette procéduire doit être lancée a la suite de la précédante
SECURE=$(bootctl status 2>/dev/null | grep "Secure Boot") && echo $SECURE
SEC=$(echo $SECURE|cut -d: -f2) && echo $SEC
MSG=""
cd /boot/efi/EFI
# a-t-on affaire à un ordinateur sécurisé ?
if [ ${#MSG} = 0 ]; then
if [ $SEC = "enabled" ];then
echo -e "le boot est en mode secure. Cela complique le redémarrage. Faites \e[1mCtrl c\e[0m si vous ne souhaitez pas continuer. Sinon appuyer sur la touche \e[1mEntrée\e[0m pour valider."
read Rep ; echo $Rep
if [ ! -f ubuntu/shimx64.efi ]; then
MSG="\n\a\E[31mil n'existe pas de fichier de boot securisé de substitution. l'opération ne peut pas se faire....\n\E[0m"
else
cp -R ubuntu/* Microsoft/Boot
cp -R refind/* Microsoft/Boot
#Mettre le fichier de boot du shim à la place de celui de windows préventivement sauvé.
cp -v Microsoft/Boot/shimx64.efi Microsoft/Boot/bootmgfw.efi
#Mettre le fichier de boot de refind à la place de celui du grub
cp -v Microsoft/Boot/refind_x64.efi Microsoft/Boot/grubx64.efi
MSG="\nInstallation terminée. Voir la documentation refind pour faire valider les clés lors du premier boot.\nSouvenez-vous que la clé de sécurité est dans le fichier /efi/Microsoft/Boot/keys/refind.cer\n"
fi
echo FIN INSTALLATION
fi
fi
# a-t-on affaire à un ordinateur non sécurisé ?
if [ ${#MSG} = 0 ]; then
if [ $SEC = "disabled" ];then
echo -e "le boot est en mode non secure. Cela ne doit poser aucun problème pour le redémarrage. Faites \e[1mCtrl c\e[0m si vous ne souhaitez pas continuer. Sinon appuyer sur la touche \e[1mEntrée\e[0m pour valider."
read Rep ; echo $Rep
cp -R refind/* Microsoft/Boot
#Mettre le fichier de boot de refind à la place de celui de windows préventivement sauvé
cp -v Microsoft/Boot/refind_x64.efi Microsoft/Boot/bootmgfw.efi
MSG="\nInstallation terminée.\n"
fi
fi
# a-t-on affaire à un contexte inconnu ?
if [ ${#MSG} = 0 ]; then
MSG="\nType de securité inconnu. Rien n'est fait hormis l'installation standard de refind.\n"
fi
# Terminé. Edition du compte-rendu
echo -e $MSG
##Terminé
Je pense mentionner le script dans Le paragraphe 6.9 de cette documentation.
Merci pour votre aide..
Dernière modification par geole (Le 31/03/2021, à 17:43)
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
#2 Le 26/03/2021, à 16:39
- Watael
Re : [En test] Script installation de REFIND
quand l'utilisateur n'est pas root, il faut quitter le script.
quand le système n'a pas d'EFI, il faut quitter le script.
${#MSG} est testé à nouveau, alors qu'on est dans le cas où il a été testé positivement.
read tout seul. pas besoin de sleep en plus.
on ne cd pas dans un script : c'est des coups à se perdre. si le chemin est "trop long", utilise une variable.
la borne doit être suivie d'une ligne à espace.
comprends pas.
Connected \o/
Welcome to sHell. · eval is evil.
Hors ligne
#3 Le 26/03/2021, à 19:20
- geole
Re : [En test] Script installation de REFIND
Merci de te pencher sur le problème
Pour les réponses
1) Lorsqu'on quitte le script par un exit. On ne peut pas lire ce que le script veut afficher!!
Du moins, c'est ce que j'avais eu plusieurs fois. d'où l'astuce
En voulant le montrer de ma session installée, C'est raté........
Cela affiche bien le message de déconnexion
root@a:~# echo Vous vous êtes trompés
Vous vous êtes trompés
root@a:~# exit
déconnexion
Je vais reprendre dans le contexte live-usb
2) Pour le problème READ
c'est bien bloqué et c'est je que je veux.
Je viens de voir que cela fonctionne pour prévu pour la session installée
Je vais reprendre dans le contexte live-usb
Pour les deux cas, Ma session installée est en 20.04 Mais la clé USB d'installation est en 18.04
Je vais refaire une clé USB 20.04
Mais je suis quand même surpris que des commandes de base ne se comportent pas pareil.
3) Pour cat >>refind/refind.conf<<EOF
Pas de problème non plus en session installée.
4) Bonne idée pour la variable PDM="/boot/efi/EFI" && echo $PDM
Cela aura l'avantage de diminuer la longueur des lignes.
La suite: Demain, si je suis en forme, je fais une live-USB de la version 20.04 et regarde s'il y a un bon comportement.
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
#4 Le 26/03/2021, à 19:27
- Watael
Re : [En test] Script installation de REFIND
1/ sortir d'un script ne fait pas quitter le terminal
sortir d'un terminal fait quitter le terminal.
Connected \o/
Welcome to sHell. · eval is evil.
Hors ligne
#5 Le 26/03/2021, à 20:01
- geole
Re : [En test] Script installation de REFIND
J'en suis donc au premier paragraphe revu
ERR="\nAppuyer sur Entrée pour quitter la procédure"
### Est-on bien dans une session EFI?
if [ ! -d /sys/firmware/efi ]; then
## 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.\n\E[0m\E[34;47msudo -i\E[0m $ERR"
read
exit 1
fi
else
echo -e "\n\a\E[31mSession non-EFI.... Refind ne sait pas gérer. Abandon.\n\E[0m $ERR"
read
exit 2
fi
J'ai trouvé cette solution mais cela ne me semble pas terrible. L'utilisateur doit ré-ouvrir un terminal pour recommencer. Si je pouvais lui éviter de le faire......
De plus, je dois mettre le read pour lui permettre de prendre connaissance de l'erreur.
Je préfère presque une sortie normale avec test de la longueur du message d'erreur....
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
#6 Le 26/03/2021, à 20:59
- Watael
Re : [En test] Script installation de REFIND
ne souhaiterais-tu pas que le script ne s'exécute que si c'est root qui le lance ?
il faut bien penser l'algorithme.
Dernière modification par Watael (Le 26/03/2021, à 21:00)
Connected \o/
Welcome to sHell. · eval is evil.
Hors ligne
#7 Le 27/03/2021, à 15:12
- geole
Re : [En test] Script installation de REFIND
Bonjour
J'avance dans l'écriture du script. Les problèmes sont un peu différents : J'ai remanié et je viens de booter avec la version 20.04.
Voici ce qui se passe lorsque je prends en compte la remarque de ne pas mettre une ligne blanche après la borne EOF d'insertion de ligne dans un fichier
A) Si je suis un utilisateur quelconque
Je copie le script avec crtl a et ctrl c
J'ouvre une session avec ctrl alt t
Je ne peux pas coller le contenu avec crtl v, je sois obligé d'utiliser le touch pad ou la souris pour le faire. Mais l'insertion est correcte.
La session se ferme alors automatiquement sans rien afficher. L'utilisateur n'est donc pas au courant de son erreur.
B) Si je suis l'utilisateur root, en faisant les même actions, cela s 'affiche à l'écran. Je joins un coller du résultat, on y voit bien la ligne EOF suivie de la ligne FI
On voit surtout que le script est incomplet et semble lié aux sorties exit.
ubuntu@ubuntu:~$ sudo -i
root@ubuntu:~# ### Procédure pour installer refind à la place du fichier de boot de windows devant être lancée sous root
root@ubuntu:~# #On se sait jamais
t-on affaire à un ordinateur non sécurisé ?
if [ $SEC != "disabled" ];then
echo -e "le boot est en mode non secure. Cela root@ubuntu:~# setxkbmap fr
ne doit poseroot@ubuntu:~# ERR="Appuyer sur la touche \e[1mEntrée\e[0m pour"
root@ubuntu:~#
root@ubuntu:~# ## Est-on bien l'utilisateur root.
root@ubuntu:~# 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\navant de faire le 'coller'. Vous pourrez alors relancer le script.\n"
> echo -ne $ERR
> echo " sortir du script et pouvoir le relancer."
> read
> exit 1
> fi
root@ubuntu:~#
root@ubuntu:~# ### Est-on bien dans une session EFI?
root@ubuntu:~# if [ -d /sys/firmware/efi ]; then
> echo -e "\n\a\E[31mSession non-EFI.... Refind ne sait pas gérer. Abandon.\n\E[0m"
> echo -ne $ERR
> echo " sortir du script et rebooter en mode EFI avant de pouvoir relancer."
> read
> exit 2
> fi
Session non-EFI.... Refind ne sait pas gérer. Abandon.
r aucun problème pour le redémarrage. Faites \e[1mCtrl c\e[0m si vous ne souhaitez pas continuer. Sinon appuyer sur la touche \e[1mEntrée\e[0m pour valider."
read
cp -R $PDM/EFI/refind/* $PDM/EFI/Microsoft/Boot
#Mettre le fichier de boot de refind à la place de celui de windows préventivement sauvé
cp -v $PDM/EFI/Microsoft/Boot/refind_x64.efi $PDM/EFI/Microsoft/Boot/bootmgfw.efi
MSG="Installation terminée."
fi
# a-t-on affaire à un contexte inconnu ?
if [ ${#MSG} = 0 ]; then
MSG="Type de securité inconnu. Rien n'est fait hormis l'installation standard de refind."
fi
# Terminé. Edition du compte-rendu
md5sum $PDM/EFI/Microsoft/Boot/*.efi
echo -e $MSG
Appuyer sur la touche Entrée pour sortir du script et rebooter en mode EFI avant de pouvoir relancer.
logout
ubuntu@ubuntu:~$ cure. Cela ne doit poser aucun problème pour le redémarrage. Faites \e[1mCtrl c\e[0m si vous ne souhaitez pas continuer. Sinon appuyer sur la touche \e[1mEntrée\e[0m pour valider."
> read
> cp -R $PDM/EFI/refind/* $PDM/EFI/Microsoft/Boot
> #Mettre le fichier de boot de refind à la place de celui de windows préventivement sauvé
> cp -v $PDM/EFI/Microsoft/Boot/refind_x64.efi $PDM/EFI/Microsoft/Boot/bootmgfw.efi
> MSG="Installation terminée."
> fi
> # a-t-on affaire à un contexte inconnu ?
> if [ ${#MSG} = 0 ]; then
> MSG="Type de securité inconnu. Rien n'est fait hormis l'installation standard de refind."
> fi
> # Terminé. Edition du compte-rendu
> md5sum $PDM/EFI/Microsoft/Boot/*.efi
> echo -e $MSG
>
>
>
>
>
>
>
>
>
>
>
On y voit le message d'erreur quelque part. De plus, il faut faire ctrl c pour finir la procédure!
En revanche si je mets une ligne à espace et surtout pas une ligne de commentaires, cela fonctionne correctement en quittant bien.
>ubuntu@ubuntu:~$ sudo -i ### Procédure pour installer refind à la place du fichier de boot de windows devant être lancée sous root
root@ubuntu:~# #On se sait jamais
root@ubuntu:~# setxkbmap fr
root@ubuntu:~# ERR="Appuyer sur la touche \e[1mEntrée\e[0m pour"
root@ubuntu:~#
root@ubuntu:~# ## Est-on bien l'utilisateur root.
root@ubuntu:~# 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\navant de faire le 'coller'. Vous pourrez alors relancer le script.\n"
> echo -ne $ERR
> echo " sortir du script et pouvoir le relancer."
> read
> exit 1
> fi
root@ubuntu:~#
root@ubuntu:~# ### Est-on bien dans une session EFI?
root@ubuntu:~# if [ -d /sys/firmware/efi ]; then
> echo -e "\n\a\E[31mSession non-EFI.... Refind ne sait pas gérer. Abandon.\n\E[0m"
> echo -ne $ERR
> echo " sortir du script et rebooter en mode EFI avant de pouvoir relancer."
> read
> exit
> fi
Session non-EFI.... Refind ne sait pas gérer. Abandon.
Appuyer sur la touche Entrée pour sortir du script et rebooter en mode EFI avant de pouvoir relancer.
logout
ubuntu@ubuntu:~$
Cela va rester un mystère. Voici le script actuel.
### Procédure pour installer refind à la place du fichier de boot de windows devant être lancée sous root
#On se sait jamais
setxkbmap fr
ERR="Appuyer sur la touche \e[1mEntrée\e[0m pour"
## 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\navant de faire le 'coller'. Vous pourrez alors relancer le script.\n"
echo -ne $ERR
echo " sortir du script et pouvoir le relancer."
read
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"
echo -ne $ERR
echo " sortir du script et rebooter en mode EFI avant de pouvoir relancer."
read
exit
fi
PDM="/boot/efi" #définir le point de montage
## Le répertoire de boot est-il absent?
if [ ! -d $PDM/EFI ]; then
#monter la partition de boot EFI
PartEFI=$(blkid | grep vfat | head -1 | cut -d: -f1 ) && echo $PartEFI
mkdir -p $PDM
mount -v $PartEFI $PDM
fi
ls $PDM/EFI
## 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. \E[31mCe cas n'est pas prévu.\E[0m Abandon du script.\n\a"
echo -ne $ERR
echo " sortir du script. Il faudra en chercher la cause."
read
exit 3
fi
## refind est-il absent?
if [ ! -d /boot/efi/EFI/refind ]; then
echo Refind est absent. Installation de refind et de efibootmgr lancée.
add-apt-repository universe
echo -e "\nveuillez valider la réponse \e[1mOUI\e[0m prépositionnée dans la grille d'installation de refind qui va s'afficher en cours d'installation.\n"
echo -ne $ERR
echo " continuer l'installation."
read
apt install refind
# On en profite pour fabriquer le fichier de configuration.
cp -v /boot/efi/EFI/refind/refind.conf-sample /boot/efi/EFI/refind/refind.conf
fi
echo Par prudence, sauvons le fichier de boot de windows.
cp -v $PDM/EFI/Microsoft/Boot/bootmgfw.efi $PDM/EFI/Microsoft/Boot/bootmgfw$(date +"-%Y-%m-%d-%H-%M-%S").efi
# On va vérifier la présence du fichier de boot de sécurité de windows.
if [ ! -f $PDM/EFI/Microsoft/boot/bkbootmgfw.efi ]; then
echo le fichier de sécurité est absent, on va le créer.
cp -v $PDM/EFI/Microsoft/Boot/bootmgfw.efi $PDM/Microsoft/Boot/bkbootmgfw.efi
fi
## Mettons à jour le fichier de configuration de refind. Verifions si cela a déjà fait.
if grep -q "\\\EFI\\\Microsoft\\\Boot\\\bkbootmgfw.efi" $PDM/EFI/refind/refind.conf ; then
cat >>$PDM/EFI/refind/refind.conf<<EOF
menuentry "Windows 10" {
icon \EFI\refind\icons\os_win.png
loader \EFI\Microsoft\Boot\bkbootmgfw.efi }
EOF
### fin insertion
fi
SECURE=$(bootctl status 2>/dev/null | grep "Secure Boot") && echo $SECURE
SEC=$(echo $SECURE|cut -d: -f2) && echo $SEC
# a-t-on affaire à un ordinateur sécurisé ?
if [ $SEC = "enabledd" ];then
echo -e "le boot est en mode secure. Cela complique le redémarrage. Faites \e[1mCtrl c\e[0m si vous ne souhaitez pas continuer. Sinon appuyer sur la touche \e[1mEntrée\e[0m pour valider."
read
if [ ! -f $PDM/EFI/ubuntu/shimx64.efi ]; then
MSG="\n\a\E[31mil n'existe pas de fichier de boot securisé de substitution. l'opération ne peut pas se faire....\n\E[0m"
else
cp -rv $PDM/EFI/ubuntu/* $PDM/EFI/Microsoft/Boot
cp -R $PDM/EFI/refind/* $PDM/EFI/Microsoft/Boot
#Mettre le fichier de boot du shim à la place de celui de windows préventivement sauvé
cp -v $PDM/EFI/Microsoft/Boot/shimx64.efi $PDM/EFI/Microsoft/Boot/bootmgfw.efi
#Mettre le fichier de boot de refind à la place de celui du grub
cp -v $PDM/EFI/Microsoft/Boot/refind_x64.efi $PDM/EFI/Microsoft/Boot/grubx64.efi
MSG="Installation terminée. Voir la documentation refind pour faire valider les clés lors du premier boot."
fi
fi
# a-t-on affaire à un ordinateur non sécurisé ?
if [ $SEC != "disabled" ];then
echo -e "le boot est en mode non secure. Cela ne doit poser aucun problème pour le redémarrage. Faites \e[1mCtrl c\e[0m si vous ne souhaitez pas continuer. Sinon appuyer sur la touche \e[1mEntrée\e[0m pour valider."
read
cp -R $PDM/EFI/refind/* $PDM/EFI/Microsoft/Boot
#Mettre le fichier de boot de refind à la place de celui de windows préventivement sauvé
cp -v $PDM/EFI/Microsoft/Boot/refind_x64.efi $PDM/EFI/Microsoft/Boot/bootmgfw.efi
MSG="Installation terminée."
fi
# a-t-on affaire à un contexte inconnu ?
if [ ${#MSG} = 0 ]; then
MSG="Type de securité inconnu. Rien n'est fait hormis l'installation standard de refind."
fi
# Terminé. Edition du compte-rendu
md5sum $PDM/EFI/Microsoft/Boot/*.efi
echo -e $MSG
Je vais essayer d'avancer sur le problème des READ qui ne bloquent pas.
Dernière modification par geole (Le 27/03/2021, à 15:15)
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
#8 Le 27/03/2021, à 15:45
- geole
Re : [En test] Script installation de REFIND
Pour le problème du read incorporé dans la procédure. On voit qu'elle n'est pas finie
root@ubuntu:~#
root@ubuntu:~#
root@ubuntu:~# ### Procédure pour installer refind à la place du fichier de boot de windows devant être lancée sous root
root@ubuntu:~# #On se sait jamais
root@ubuntu:~# setxkbmap fr
I/Microsoft/Boot/grubx64.efi
MSG="Installation terminée. Voir la documentation refind pour faire valider les clés lors du premier bootroot@ubuntu:~# ERR="Appuyer sur la touche \e[1mEntrée\e[0m pour"
root@ubuntu:~#
ordinateur nroot@ubuntu:~# ## Est-on bien l'utilisateur root.
root@ubuntu:~# 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\navant de faire le 'coller'. Vous pourrez alors relancer le script.\n"
> echo -ne $ERR
> echo " sortir du script et pouvoir le relancer."
> read
> exit 1
> fi
root@ubuntu:~#
root@ubuntu:~# ### Est-on bien dans une session EFI?
root@ubuntu:~# if [ ! -d /sys/firmware/efi ]; then
> echo -e "\n\a\E[31mSession non-EFI.... Refind ne sait pas gérer. Abandon.\n\E[0m"
> echo -ne $ERR
> echo " sortir du script et rebooter en mode EFI avant de pouvoir relancer."
> read
> exit 2
> fi
root@ubuntu:~#
root@ubuntu:~# PDM="/boot/efi" #définir le point de montage
root@ubuntu:~# ## Le répertoire de boot est-il absent?
root@ubuntu:~# if [ ! -d $PDM/EFI ]; then
> #monter la partition de boot EFI
> PartEFI=$(blkid | grep vfat | head -1 | cut -d: -f1 ) && echo $PartEFI
> mkdir -p $PDM
> mount -v $PartEFI $PDM
> fi
root@ubuntu:~# ls $PDM/EFI
banners Boot fonts grub Microsoft refind refind-install tools ubuntu Windows10
root@ubuntu:~# ## windows est-il absent?
root@ubuntu:~# 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. \E[31mCe cas n'est pas prévu.\E[0m Abandon du script.\n\a"
> echo -ne $ERR
> echo " sortir du script. Il faudra en chercher la cause."
> read
> exit 3
> fi
root@ubuntu:~#
root@ubuntu:~# ## refind est-il absent?
root@ubuntu:~# if [ ! -d /boot/efi/EFI/refind555 ]; then
> echo Refind est absent. Installation de refind et de efibootmgr lancée.
> add-apt-repository universe
> echo -e "\nveuillez valider la réponse \e[1mOUI\e[0m prépositionnée dans la grille d'installation de refind qui va s'afficher en cours d'installation.\n"
> echo -ne $ERR
> echo " continuer l'installation."
> read
> apt install refind
> # On en profite pour fabriquer le fichier de configuration.
> cp -v /boot/efi/EFI/refind/refind.conf-sample /boot/efi/EFI/refind/refind.conf
> fi
Refind est absent. Installation de refind et de efibootmgr lancée.
'universe' distribution component is already enabled for all sources.
veuillez valider la réponse OUI prépositionnée dans la grille d'installation de refind qui va s'afficher en cours d'installation.
Appuyer sur la touche Entrée pour continuer l'installation.
Reading package lists... Done
Building dependency tree
Reading state information... Done
refind is already the newest version (0.11.4-1).
0 upgraded, 0 newly installed, 0 to remove and 115 not upgraded.
'/boot/efi/EFI/refind/refind.conf-sample' -> '/boot/efi/EFI/refind/refind.conf'
root@ubuntu:~# ation terminée. Voir la documentation refind pour faire valider les clés lors du premier boot."
> fi
> fi
>
> # a-t-on affaire à un ordinateur non sécurisé ?
> if [ $SEC != "disabled" ];then
> echo -e "le boot est en mode non secure. Cela ne doit poser aucun probléme pour le redémarrage. Faites \e[1mCtrl c\e[0m si vous ne souhaitez pas continuer. Sinon appuyer sur la touche \e[1mEntrée\e[0m pour valider."
> read
> cp -R $PDM/EFI/refind/* $PDM/EFI/Microsoft/Boot
> #Mettre le fichier de boot de refind à la place de celui de windows préventivement sauvé
> cp -v $PDM/EFI/Microsoft/Boot/refind_x64.efi $PDM/EFI/Microsoft/Boot/bootmgfw.efi
> MSG="Installation terminée."
> fi
> # a-t-on affaire à un contexte inconnu ?
> if [ ${#MSG} = 0 ]; then
> MSG="Type de securité inconnu. Rien n'est fait hormis l'installation standard de refind."
> fi
> # Terminé. Edition du compte-rendu
> md5sum $PDM/EFI/Microsoft/Boot/*.efi
> echo -e $MSG
>
>
>
>
>
>
>
>
>
>
>
Pourtant de faon unitaire, elle fonctionne.
root@ubuntu:~# if [ ! -d $PDM/EFI/refind555 ]; then
> echo Refind est absent. Installation de refind et de efibootmgr lancée.
> add-apt-repository universe
> echo -e "\nveuillez valider la réponse \e[1mOUI\e[0m prépositionnée dans la grille d'installation de refind qui va s'afficher en cours d'installation.\n"
> echo -ne $ERR
> echo " continuer l'installation."
> read
> apt install refind
> # On en profite pour fabriquer le fichier de configuration.
> cp -v /boot/efi/EFI/refind/refind.conf-sample /boot/efi/EFI/refind/refind.conf
> fi
Refind est absent. Installation de refind et de efibootmgr lancée.
'universe' distribution component is already enabled for all sources.
veuillez valider la réponse OUI prépositionnée dans la grille d'installation de refind qui va s'afficher en cours d'installation.
Appuyer sur la touche Entrée pour continuer l'installation.
D'où le palliatif de dire que l'installation va bientôt démarrer dans 96 secondes .
Je ne serais pas surpris que le read ne fonctionne pas dans une procédure en copier/coller. Récupérerait-il la suite des commandes?
Dernière modification par geole (Le 27/03/2021, à 15:52)
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
#9 Le 27/03/2021, à 16:17
- Watael
Re : [En test] Script installation de REFIND
on ne colle pas un script dans un terminal.
un script, on le colle dans un fichier.
Connected \o/
Welcome to sHell. · eval is evil.
Hors ligne
#10 Le 27/03/2021, à 16:38
- geole
Re : [En test] Script installation de REFIND
Désolé. Mais cela me semblait plus pratique.
Il va donc falloir faire un script qui fabrique un fichier puis qui le garnit, puis qui mets les droits d'exécution.
Cela devrait pouvoir se faire en copier coller cette fois-ci!!!!
Je m'y attelles et te tiens au courant.
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
#11 Le 27/03/2021, à 16:47
- Watael
Re : [En test] Script installation de REFIND
Il va donc falloir faire un script qui fabrique un fichier puis qui le garnit, puis qui mets les droits d'exécution.
tu sens ?
le gaz.
ça sent l'usine à gaz, non ?
tu as plus vite fait d'indiquer la manip : copier/coller dans un fichier, modifier les droits, et exécuter.
ou alors, faire plus court (moins de vérifications) dans un tuto bien détaillé, commande par commande.
Connected \o/
Welcome to sHell. · eval is evil.
Hors ligne
#12 Le 27/03/2021, à 17:48
- geole
Re : [En test] Script installation de REFIND
Il parait qu'avec la covid, on perd l'odorat..
La documentation était pourtant claire pour les experts.
Lorsque je vois les difficultés que certains aidants ont pour conseiller la modification d'un fichier par gedit ou par nano....
C'est pour cela que je tentais quelque chose de simple.
Pour l'instant je suis en train de chercher comment faire fonctionner de façon correcte cette commande
man cat
cat >>FIC<<EOF
A=Bonjour
echo "$A"
EOF
Je pensais que cela copiait... en fait cela interprète avant de copier!!!
a@b:~$ cat >>FIC<<EOF
> A=Bonjour
> echo $A
> EOF
a@b:~$
a@b:~$ cat FIC
A=Bonjour
echo
a@b:~$
Trouvé... il faut mettre echo "$A" Donc toutes les variables à mettre entre quote.
Dernière modification par geole (Le 27/03/2021, à 18:21)
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
#13 Le 27/03/2021, à 18:10
- Watael
Re : [En test] Script installation de REFIND
ou, protéger le dollar (<troll>comme s'il en avait vraiment besoin</troll> ) avec une contre barre oblique :
echo "\$A"
Connected \o/
Welcome to sHell. · eval is evil.
Hors ligne
#14 Le 27/03/2021, à 19:18
- Hizoka
Re : [En test] Script installation de REFIND
Salut,
si tu ne veux pas interpréter les variables :
cat >> FIC << 'EOF'
Si tu ne veux pas interpréter certaines variables, alors il faut les protéger comme te l'indique Watael.
Dernière modification par Hizoka (Le 27/03/2021, à 19:18)
KDE Neon 64bits
Tous mes softs (MKVExtractorQt, HizoSelect, HizoProgress, Qtesseract, Keneric, Services menus...) sont sur github
Hors ligne
#15 Le 27/03/2021, à 19:22
- Watael
Re : [En test] Script installation de REFIND
ah, oui !
reste que le script doit être une "synthèse" finale d'un tuto au cours duquel les commandes viendront en démonstration de l'explication du pourquoi/comment.
Connected \o/
Welcome to sHell. · eval is evil.
Hors ligne
#16 Le 27/03/2021, à 23:00
- geole
Re : [En test] Script installation de REFIND
ou, protéger le dollar (<troll>comme s'il en avait vraiment besoin</troll> ) avec une contre barre oblique :
echo "\$A"
Voila. J'ai mis partout des \
Après essai avec la technique copier/coller, je pense que le script est bon.
Je le mets à disposition dans ce forum par aussi la technique copier/coller afin qu'il puisse être récupérable
### Procédure pour installer refind à la place du fichier de boot de windows devant être lancée sous root
## création du fichier d'exécution.
touch réparer.sh
chmod +x réparer.sh
cat >réparer.sh<<REPARE
#!/bin/bash
ERR="Appuyer sur la touche \e[1mEntrée\e[0m pour"
PDM="/boot/efi" # définir le point de montage
MSG=""
## 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\navant de faire le 'coller'. Vous pourrez alors relancer le script.\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 vfat | head -1 | cut -d: -f1 ) && echo \$PartEFI
mkdir -p \$PDM
mount -v \$PartEFI \$PDM
fi
ls \$PDM/EFI
## 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. \E[31mCe cas n'est pas prévu.\E[0m Abandon du script.\n\a"
exit 3
fi
## refind est-il absent?
if [ ! -d \$PDM/EFI/refind ]; then
echo Refind est absent. Installation de refind et de efibootmgr lancée.
add-apt-repository universe
echo -e "\nveuillez valider la réponse \e[1mOUI\e[0m prépositionnée dans la grille d'installation de refind qui va s'afficher en cours d'installation.\n"
echo -ne \$ERR
echo " continuer l'installation."
apt install refind
# On en profite pour fabriquer le fichier de configuration.
cp -v \$PDM/EFI/refind/refind.conf-sample \$PDM/EFI/refind/refind.conf123
fi
echo Par prudence, sauvons le fichier de boot de windows.
cp -v \$PDM/EFI/Microsoft/Boot/bootmgfw.efi \$PDM/EFI/Microsoft/Boot/bootmgfw$(date +"-%Y-%m-%d-%H-%M-%S").efi
# On va vérifier la présence du fichier de boot de sécurité de windows.
if [ ! -f \$PDM/EFI/Microsoft/boot/bkbootmgfw.efi123 ]; then
echo le fichier de sécurité est absent, on va le créer.
cp -v \$PDM/EFI/Microsoft/Boot/bootmgfw.efi \$PDM/EFI/Microsoft/Boot/bkbootmgfw.efi
fi
## Mettons à jour le fichier de configuration de refind. Verifions si cela a déjà fait.
if grep -q "\\\EFI\\\Microsoft\\\Boot\\\bkbootmgfw.efi" \$PDM/EFI/refind/refind.conf ; then
cat >>"$PDM"/EFI/refind/refind.conf<<EOF
menuentry "Windows 10" {
icon \EFI\refind\icons\os_win.png
loader \EFI\Microsoft\Boot\bkbootmgfw.efi }
EOF
fi
SECURE=\$(bootctl status 2>/dev/null | grep "Secure Boot") && echo \$SECURE
SEC=\$(echo \$SECURE|cut -d: -f2) ## echo \$SEC
# a-t-on affaire à un ordinateur sécurisé ?
if [ \$SEC = "enabled" ];then
if [ ! -f \$PDM/EFI/ubuntu/shimx64.efi ]; then
echo -e "\n\a\E[31mil n'existe pas de fichier de boot securisé de substitution. l'opération ne peut pas se finir....\n\E[0m"
exit 4
else
echo -e "le boot est en mode secure. Cela complique le redémarrage. Faites \e[1mCtrl c\e[0m si vous ne souhaitez pas continuer. Sinon appuyer sur la touche \e[1mEntrée\e[0m pour valider."
read
cp -r \$PDM/EFI/ubuntu/* \$PDM/EFI/Microsoft/Boot
cp -r \$PDM/EFI/refind/* \$PDM/EFI/Microsoft/Boot
#Mettre le fichier de boot du shim à la place de celui de windows préventivement sauvé
cp -v \$PDM/EFI/Microsoft/Boot/shimx64.efi \$PDM/EFI/Microsoft/Boot/bootmgfw.efi
#Mettre le fichier de boot de refind à la place de celui du grub
cp -v \$PDM/EFI/Microsoft/Boot/refind_x64.efi \$PDM/EFI/Microsoft/Boot/grubx64.efi
MSG="Installation terminée. Voir la documentation refind pour faire valider les clés lors du premier boot."
fi
fi
# a-t-on affaire à un ordinateur non sécurisé ?
if [ \$SEC = "disabled" ];then
echo -e "le boot est en mode non secure. Cela ne doit poser aucun probléme pour le redémarrage. Faites \e[1mCtrl c\e[0m si vous ne souhaitez pas continuer. Sinon appuyer sur la touche \e[1mEntrée\e[0m pour valider."
read
cp -rv \$PDM/EFI/refind/* \$PDM/EFI/Microsoft/Boot
#Mettre le fichier de boot de refind à la place de celui de windows préventivement sauvé
cp -v \$PDM/EFI/Microsoft/Boot/refind_x64.efi \$PDM/EFI/Microsoft/Boot/bootmgfw.efi
MSG="Installation terminée."
fi
# a-t-on affaire à un contexte inconnu ?
if [ \${#MSG} = 0 ]; then
MSG="\nType de securité inconnu. Rien n'est fait hormis l'installation standard de refind.\n"
fi
# Terminé. Edition du compte-rendu
md5sum \$PDM/EFI/Microsoft/Boot/*.efi
echo -e \$MSG
REPARE
./réparer.sh
Et je découvre la réponse de Hizoka que je remercie... Du coup, je ne vais essayer que demain...
Nota. J'ai fait le copier/coller, à partir de la session 20.04 installée.
Finalement, cétait juste un coup de remplacement de \$ par $
Le nouveau fichier
### Procédure pour installer refind à la place du fichier de boot de windows devant être lancée sous root
## création du fichier d'exécution.
touch réparer.sh
chmod +x réparer.sh
cat >réparer.sh<<"REPARE"
#!/bin/bash
ERR="Appuyer sur la touche \e[1mEntrée\e[0m pour"
PDM="/boot/efi" # définir le point de montage
MSG=""
## 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\navant de faire le 'coller'. Vous pourrez alors relancer le script.\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 vfat | head -1 | cut -d: -f1 ) && echo $PartEFI
mkdir -p $PDM
mount -v $PartEFI $PDM
fi
ls $PDM/EFI
## 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. \E[31mCe cas n'est pas prévu.\E[0m Abandon du script.\n\a"
exit 3
fi
## refind est-il absent?
if [ ! -d $PDM/EFI/refind ]; then
echo Refind est absent. Installation de refind et de efibootmgr lancée.
add-apt-repository universe
echo -e "\nveuillez valider la réponse \e[1mOUI\e[0m prépositionnée dans la grille d'installation de refind qui va s'afficher en cours d'installation.\n"
echo -ne $ERR
echo " continuer l'installation."
apt install refind
# On en profite pour fabriquer le fichier de configuration.
cp -v $PDM/EFI/refind/refind.conf-sample $PDM/EFI/refind/refind.conf123
fi
echo Par prudence, sauvons le fichier de boot de windows.
cp -v $PDM/EFI/Microsoft/Boot/bootmgfw.efi $PDM/EFI/Microsoft/Boot/bootmgfw$(date +"-%Y-%m-%d-%H-%M-%S").efi
# On va vérifier la présence du fichier de boot de sécurité de windows.
if [ ! -f $PDM/EFI/Microsoft/boot/bkbootmgfw.efi123 ]; then
echo le fichier de sécurité est absent, on va le créer.
cp -v $PDM/EFI/Microsoft/Boot/bootmgfw.efi $PDM/EFI/Microsoft/Boot/bkbootmgfw.efi
fi
## Mettons à jour le fichier de configuration de refind. Verifions si cela a déjà fait.
if grep -q "\\\EFI\\\Microsoft\\\Boot\\\bkbootmgfw.efi" $PDM/EFI/refind/refind.conf ; then
cat >>"$PDM"/EFI/refind/refind.conf<<EOF
menuentry "Windows 10" {
icon \EFI\refind\icons\os_win.png
loader \EFI\Microsoft\Boot\bkbootmgfw.efi }
EOF
# Il faut que la borne EOF soit suivie d'une ligne à espace pour que le script soit cohérant. Cette ligne à espace n'a pas de rapport avec la command cat.
fi
SECURE=$(bootctl status 2>/dev/null | grep "Secure Boot") && echo $SECURE
SEC=$(echo $SECURE|cut -d: -f2) ## echo $SEC
# a-t-on affaire à un ordinateur sécurisé ?
if [ $SEC = "enabled" ];then
if [ ! -f $PDM/EFI/ubuntu/shimx64.efi ]; then
echo -e "\n\a\E[31mil n'existe pas de fichier de boot securisé de substitution. l'opération ne peut pas se finir....\n\E[0m"
exit 4
else
echo -e "le boot est en mode secure. Cela complique le redémarrage. Faites \e[1mCtrl c\e[0m si vous ne souhaitez pas continuer. Sinon appuyer sur la touche \e[1mEntrée\e[0m pour valider."
read
cp -r $PDM/EFI/ubuntu/* $PDM/EFI/Microsoft/Boot
cp -r $PDM/EFI/refind/* $PDM/EFI/Microsoft/Boot
#Mettre le fichier de boot du shim à la place de celui de windows préventivement sauvé
cp -v $PDM/EFI/Microsoft/Boot/shimx64.efi $PDM/EFI/Microsoft/Boot/bootmgfw.efi
#Mettre le fichier de boot de refind à la place de celui du grub
cp -v $PDM/EFI/Microsoft/Boot/refind_x64.efi $PDM/EFI/Microsoft/Boot/grubx64.efi
MSG="Installation terminée. Voir la documentation refind pour faire valider les clés lors du premier boot."
fi
fi
# a-t-on affaire à un ordinateur non sécurisé ?
if [ $SEC = "disabled" ];then
echo -e "le boot est en mode non secure. Cela ne doit poser aucun probléme pour le redémarrage. Faites \e[1mCtrl c\e[0m si vous ne souhaitez pas continuer. Sinon appuyer sur la touche \e[1mEntrée\e[0m pour valider."
read
cp -rv $PDM/EFI/refind/* $PDM/EFI/Microsoft/Boot
#Mettre le fichier de boot de refind à la place de celui de windows préventivement sauvé
cp -v $PDM/EFI/Microsoft/Boot/refind_x64.efi $PDM/EFI/Microsoft/Boot/bootmgfw.efi
MSG="Installation terminée."
fi
# a-t-on affaire à un contexte inconnu ?
if [ ${#MSG} = 0 ]; then
MSG="\nType de securité inconnu. Rien n'est fait hormis l'installation standard de refind.\n"
fi
# Terminé. Edition du compte-rendu
md5sum $PDM/EFI/Microsoft/Boot/*.efi
echo -e $MSG
REPARE
./réparer.sh
Le résultat est probant, un extrait du second passage,
md5sum $PDM/EFI/Microsoft/Boot/*.efi
> echo -e $MSG
> REPARE
root@ubuntu:~# ./réparer.sh
banners Boot fonts grub Microsoft refind refind-install réparer.sh tools ubuntu Windows10
Par prudence, sauvons le fichier de boot de windows.
'/boot/efi/EFI/Microsoft/Boot/bootmgfw.efi' -> '/boot/efi/EFI/Microsoft/Boot/bootmgfw-2021-03-27-22-46-12.efi'
Secure Boot: enabled
le boot est en mode secure. Cela complique le redémarrage. Faites Ctrl c si vous ne souhaitez pas continuer. Sinon appuyer sur la touche Entrée pour valider.
'/boot/efi/EFI/Microsoft/Boot/shimx64.efi' -> '/boot/efi/EFI/Microsoft/Boot/bootmgfw.efi'
'/boot/efi/EFI/Microsoft/Boot/refind_x64.efi' -> '/boot/efi/EFI/Microsoft/Boot/grubx64.efi'
18d02deb69a048b110ca720c3023a4f0 /boot/efi/EFI/Microsoft/Boot/bkbootmgfw.efi
18d02deb69a048b110ca720c3023a4f0 /boot/efi/EFI/Microsoft/Boot/bootmgfw-2021-03-24-17-46-18.efi
0a39dbccade814a550b5052a7b11474c /boot/efi/EFI/Microsoft/Boot/bootmgfw-2021-03-27-15-22-46.efi
(
Avec obligation d'appuyer sur entrée pour que cela continue.
Il n'était pas facile de trouver que par copier/coller c'était injouable et la documentation n'explique pas tellemnt que la borne doit être entre quote pour qu'il n'y ait pas interprétation. Je cherchais naîvelent dans "man cat" une option.
Il me semble que le problème est résolu. Je vous en remercie de m'avoir permis d'y arriver en créant automatiquemnt le fichier exécutable.
Le plus dur va rester à faire. Booter en mode secure et documenter l'acquisition de la clé de refind.
Dernière modification par geole (Le 28/03/2021, à 00:02)
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
#17 Le 31/03/2021, à 18:32
- geole
Re : [En test] Script installation de REFIND
Bonjour
Une nouvelle version d'un script d'installation de refind
Il peut être utilisé en live usb avant installation de tout logiciel (Son rôle principal). Ce qui permet d'installer ultérieurement ubuntu en ligne de commande (ubiquity -b) afin de ne pas installer le grub qui dysfonctionne de plus en plus.
Il peut aussi être utilisé avec un ubuntu déjà opérationnel.
Contraintes: Obligation d'avoir positionné le bios en mode EFI.
Il est nécessaire qu'un disque dispose d'une partition FAT32 avec un drapeau ESP
Les plus par rapport à l'installateur standard
1) Modifie le fichier de boot standard (comme boot-repair) afin de permettre aux ordinateurs qui ne bootent que de cette manière de pouvoir booter.
2) Modifie le fichier de boot de windows afin de permettre aux ordinateurs dits 'bridés" de pouvoir booter.
3) Fonctionne aussi avec le secure boot activé avec des résultats non garantis.
a) L'écran reste noir: C'est totalement bloqué, on est malgré tout obligé de déactiver.
===> en fait, il suffit d'appuyer un certain nombre de fois sur la touche entrée et c'est parti...
Remarque, cet ordinateur a besoin de l'option nomodest pour que le grub s'affiche!!! Même bug dans refind????
b) Le boot réclame de fournir la bonne valeur pour le noyau ubuntu chargé.
====> Il suffit de valider ( VALIDER (ok) ), pour passer au suivant, Au quatrième écran, c'est bon. Les détails viendront. (pas possible de faire des captures d'écran et je suis piètre dessinateur)
c) Le boot reconnaît le noyau et accepte de le lancer....
d) Le boot ne reconnaît pas la version 18.04. Le message d'erreur est détecté par REFIND! C'est:
Starting vmlinuz-4.15.0-72-generic'
Using load options 'root=UUID= 11111111-1111-1111-111111111111 ro fsck.mode=force fsck.repair=yes initrd=boot\initrd.img-4.15.0-72-generic
Secure boot validationfiure loading vmlinuz-4.15.0-72-generic!
This computer is configured with Secure Bootactive but,
vmlinuz-4.15.0-72-generic has failed validation
You can
* Launch another bootloader
* Disable Secure Boot in your Firmware
* Sign vmlinuz-4.15.0-72-generic with a machine owner key (MOK)
* Use a MOK utility (ofte present on the second row) to add a MOK with which
vmlinuz-4.15.0-72-generic has already been signed
* Use a MOK utility to register vmlinuz-4.15.0-72-generic ("enroll its hash") without
signing it.
See http://www.rodsbooks.com/refind/secureboot.html for more information
* hit any key to continue *
Cette dernière méthode me semble simple, On accède facilement au fichier. Je peux visualiser la clé SHA26 générée. Je pense avoir fait correctement la validation. Mais au reboot, il y a toujours refus pour la même cause.
Comme, cela ne bloque pas pour une autre version 18.04.1, je pense qu'il y a un problème lorsque l'O.S. est chiffré!!!!
https://www.rodsbooks.com/refind/secure … ml#caveats
4) Il est relançable en ne refaisant pas ce qui a été réalisé.
La version secure embarquée par le script est la version 0.13
===> https://www.rodsbooks.com/refind/getting.html ==> https://sourceforge.net/projects/refind/files/
Le test a été fait en version 20.04 , en version 20.10 et 21.04. Il y a certainement encore pas mal de choses oubliées.
A vous de l'utiliser et de faire vos retours.
Il a été fait pour être simple d'utilisation. Il nécessite d'ouvrir un terminal (Ctrl Alt t), de se mettre root (sudo -i)
et de faire un copier (ctrl a ctrcl c) de ce qui suit et de le coller dans la session ouverte et de bien lire ce qui se passe pendant l'exécution.
Voici le script pour la version 20.04: Il a besoin d'installer deux logiciels ubuntu absents du CD d'installation.
Le message suivant donne le script pour les versions 20.10 et 21.04 qui n'ont pas besoin de télécharger ces deux logiciels.
### Procédure pour installer refind à la place du fichier de boot de windows devant être lancée sous root
## création du fichier d'exécution. version 20.04 Date 14 avril 15 heures
touch réparer.sh
chmod +x réparer.sh
cat >réparer.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\navant de faire le 'coller'. Vous pourrez alors relancer le script.\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 -p $Stock $PDM/EFI/Boot 2>/dev/null
SECURE=$(bootctl status 2>/dev/null | grep "Secure Boot") && echo $SECURE
SEC=$(echo $SECURE|cut -d: -f2)
if [ ! -f $Stock/refind.conf ]; then
echo -e "\nNous avons besoin d'installer le gestionnaire EFI de ubuntu....\n"
apt install efibootmgr
echo -e "\nNous avons besoin d'installer le gestionnaire de boot de ubuntu....\n"
apt install shim-signed
echo -e "\nLe fichier standard de boot de refind n'est pas au point. Nous allons télécharger la version BETA chez le constructueur....\n"
wget https://sourceforge.net/projects/refind/files/0.13.2/refind-bin-0.13.2.zip
unzip refind-bin-0.13.2.zip 1>/dev/null
cp refind-bin-0.13.2/refind-install $Stock
if [ $SEC = "disabled" ];then
./refind-bin-0.13.2/refind-install --alldrivers --yes
MSG="Installation du logiciel standard terminée."
fi
if [ $SEC = "enabled" ];then
./refind-bin-0.13.2/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
MSG="refind est déjà installé."
fi
if [ ${#MSG} = 0 ]; then
echo -e "\nType de securité inconnu. Rien n'est fait.\n"
exit 3
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 apperç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 [ ${#MAJ} = 0 ]; 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/Boot/*.efi >/tmp/MDSUM
md5sum $PDM/EFI/Refind/*.efi >>/tmp/MDSUM
md5sum $PDM/EFI/boot/*.efi >>/tmp/MDSUM
sort /tmp/MDSUM
echo -e "Souvenez-vous qu'une \e[1mgrosse mise à jour de windows\e[0m oblige à recommencer cette procédure." $MSG
REPARE
./réparer.sh
#### FIN ****
Bon usage.
Dernière modification par geole (Le 15/04/2021, à 13:25)
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
#18 Le 14/04/2021, à 17:27
- geole
Re : [En test] Script installation de REFIND
Bonjour.
Voici un script d'installation de refind en mode sécurisé ou pas pour les versions ubuntu 20.10 et 21.04 et 21.10.
Condition d'installation. Disposer d'une partition de boot avec un drapeau ESP . Cette partition peut n'avoir aucun fichier et avoir une taille de 36 Mo. Disposer d'une connexion réseau. Environ 4 Mo seront téléchargés
Méthode de Boot .
Booter avec un support d'installation de ubuntu 20.10 ou 21.04
Choisir essayer avant d'installer puis ouvrir un terminal en mode root et faire un copier/coller du script ci-dessous.
Puis procéder à l'installation de ubuntu en ligne de commande sudo ubiquity -b
Risque identifié pendant l'installation: Celui qui survient pendant l'installation de ubuntu lorsque la NVRAM refuse de se mettre à jour. Il est préférable de le savoir avant d'installer ubuntu que de le découvrir après!!!
Le palliatif trouvé est de relancer le script, il mettra alors à jour le répertoire standard de boot qui n'a pas été faite à cause du blocage en NVRAM.
Risque identifié après installation: L'ordinateur ne sait démarrer que par windows.!!!
Le palliatif trouvé est de relancer le script, il vous demandera l'autorisation de mettre à jour le répertoire de boot de windows en le récréant en cas de besoin.
### Procédure pour installer refind à la place du fichier de boot de windows devant être lancée sous root
## création du fichier d'exécution. version 21.04 Date 14 avril 15 heures
touch réparer.sh
chmod +x réparer.sh
cat >réparer.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\navant de faire le 'coller'. Vous pourrez alors relancer le script.\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 -p $Stock $PDM/EFI/Boot 2>/dev/null
SECURE=$(bootctl status 2>/dev/null | grep "Secure Boot") && echo $SECURE
SEC=$(echo $SECURE|cut -d: -f2)
if [ ! -f $Stock/refind.conf ]; then
echo -e "\nLe fichier standard de boot de refind n'est pas au point. Nous allons télécharger la version BETA chez le constructueur....\n"
wget https://sourceforge.net/projects/refind/files/0.13.2/refind-bin-0.13.2.zip
unzip refind-bin-0.13.2.zip 1>/dev/null
cp refind-bin-0.13.2/refind-install $Stock
if [ $SEC = "disabled" ];then
./refind-bin-0.13.2/refind-install --alldrivers --yes
MSG="Installation du logiciel standard terminée."
fi
if [ $SEC = "enabled" ];then
./refind-bin-0.13.2/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
MSG="refind est déjà installé."
fi
if [ ${#MSG} = 0 ]; then
echo -e "\nType de securité inconnu. Rien n'est fait.\n"
exit 3
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 apperç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 [ ${#MAJ} = 0 ]; 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/Boot/*.efi >/tmp/MDSUM
md5sum $PDM/EFI/Refind/*.efi >>/tmp/MDSUM
md5sum $PDM/EFI/boot/*.efi >>/tmp/MDSUM
sort /tmp/MDSUM
echo -e "Souvenez-vous qu'une \e[1mgrosse mise à jour de windows\e[0m oblige à recommencer cette procédure." $MSG
REPARE
./réparer.sh
#### FIN ****
Dernière modification par geole (Le 24/10/2021, à 11:19)
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
#19 Le 18/04/2021, à 13:55
- geole
Re : [En test] Script installation de REFIND
Bonjour.
Attention. En installant le sécure boot, certains vieux noyaux bien que signés, ne seront plus reconnus.
Je n'ai pas réussi à faire certifier leur signature
Exemple d'un noyau refusé
sudo sbverify --list /mnt/boot/vmlinuz-4.15.0-72-generic
signature 1
image signature issuers:
- /C=GB/ST=Isle of Man/L=Douglas/O=Canonical Ltd./CN=Canonical Ltd. Master Certificate Authority
image signature certificates:
- subject: /C=GB/ST=Isle of Man/O=Canonical Ltd./OU=Secure Boot/CN=Canonical Ltd. Secure Boot Signing
issuer: /C=GB/ST=Isle of Man/L=Douglas/O=Canonical Ltd./CN=Canonical Ltd. Master Certificate Authority
Exemple d'un noyau accepté
sudo sbverify --list /boot/vmlinuz-5.4.0-72-generic
signature 1
image signature issuers:
- /C=GB/ST=Isle of Man/L=Douglas/O=Canonical Ltd./CN=Canonical Ltd. Master Certificate Authority
image signature certificates:
- subject: /C=GB/ST=Isle of Man/O=Canonical Ltd./OU=Secure Boot/CN=Canonical Ltd. Secure Boot Signing (2017)
issuer: /C=GB/ST=Isle of Man/L=Douglas/O=Canonical Ltd./CN=Canonical Ltd. Master Certificate Authority
La différence est visible par cette expression (2017)
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
#20 Le 17/05/2022, à 13:15
- geole
Re : [En test] Script installation de REFIND
Bonjour.
Voici un script d'installation de refind en mode sécurisé ou pas pour les versions ubuntu 20.10, 21.04, 21.10 et 22.04.
Condition d'installation. Disposer d'une partition de boot avec un drapeau ESP. Cette partition peut n'avoir aucun fichier et avoir une taille de 36 Mo. Disposer d'une connexion réseau. Environ 4,2 Mo seront téléchargés.
Méthode de Boot .
Booter avec un support d'installation de ubuntu récent (22.04)
Choisir essayer avant d'installer puis ouvrir une session "super utilisateur" en frappant la commande suivante
sudo -i
Après avoir répondu au mot de passe, faire un copier/coller du script ci-dessous.
La version refind 13.3.1 du 12/04/2022 sera téléchargée. Les modifications par rapport à la version précédente sont minimes
# 0.13.3.1-- Fix bug that caused failure to detect mounted ESP in Linux
# 0.13.3 -- Remove stray exit from CreateBootCsvFile()
Puis procéder à l'installation de ubuntu en ligne de commande sudo ubiquity -b
Risque identifié pendant l'installation: Celui qui survient pendant l'installation de ubuntu lorsque la NVRAM refuse de se mettre à jour. Il est préférable de le savoir avant d'installer ubuntu que de le découvrir après!!!
Le palliatif trouvé est de relancer le script, il mettra alors à jour le répertoire standard de boot qui n'a pas été faite à cause du blocage en NVRAM.
Risque identifié après installation: L'ordinateur ne sait démarrer que par windows.!!!
Le palliatif trouvé est de relancer le script, il vous demandera l'autorisation de mettre à jour le répertoire de boot de windows en le récréant en cas de besoin.
## 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 mai 2022
## création du fichier d'exécution.
touch reparer.sh
chmod +x reparer.sh
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 -p $Stock $PDM/EFI/Boot 2>/dev/null
SECURE=$(bootctl status 2>/dev/null | grep "Secure Boot") && echo $SECURE
SEC=$(echo $SECURE|cut -d: -f2)
if [ ! -f $Stock/refind.conf ]; then
BETA=0.13.3.1
echo -e "\nLe fichier standard de boot de refind n'est pas au point. Nous allons télécharger la version 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
./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
MSG="refind est déjà installé."
fi
if [ ${#MSG} = 0 ]; then
echo -e "\nType de securité inconnu. Rien n'est fait.\n"
exit 3
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 [ ${#MAJ} = 0 ]; 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/Boot/*.efi >/tmp/MDSUM
md5sum $PDM/EFI/Refind/*.efi >>/tmp/MDSUM
md5sum $PDM/EFI/boot/*.efi >>/tmp/MDSUM
sort /tmp/MDSUM
echo -e "Souvenez-vous qu'une \e[1mgrosse mise à jour de windows\e[0m oblige à recommencer cette procédure." $MSG
REPARE
./reparer.sh
#### FIN ****
Dernière modification par geole (Le 06/09/2022, à 17:47)
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
#21 Le 17/05/2022, à 15:28
- Watael
Re : [En test] Script installation de REFIND
salut,
#touch réparer.sh # inutile
#chmod +x réparer.sh #déplacé
cat >rEparer.bash<<"REPARE" # éviter les accents dans les noms des fichiers, surtout un exécutable. et .bash parce que c'est du bash, pas du shell POSIX
[...]
REPARE
chmod +x rEparer.bash
je lirai le script ce soir.
Dernière modification par Watael (Le 17/05/2022, à 15:28)
Connected \o/
Welcome to sHell. · eval is evil.
Hors ligne
#22 Le 17/05/2022, à 20:40
- Watael
Re : [En test] Script installation de REFIND
cp
refind-bin-$BETA/refind-install $Stock
ça marche comme ça ?
if [ ${#MSG} = 0 ]; then
juste if test -n "$MSG", etpareil pour MAJ
Connected \o/
Welcome to sHell. · eval is evil.
Hors ligne
#23 Le 18/05/2022, à 00:20
- geole
Re : [En test] Script installation de REFIND
Merci.
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
#24 Le 27/05/2022, à 18:53
- mloupiot
Re : [En test] Script installation de REFIND
@geole
Bonjour,
un GRAND merci à toi pour ton script (version 20.04) : depuis deux jours j'ai essayé je ne sais combien de recettes plus ou moins exotiques pour arriver à booter l'ordinateur de mon fils (Lordi région Occitanie) après avoir installé une Kubuntu 20.04. J'ai fini par virer Windows, ce qui n'a rien arrangé… Tu avais même prévu le cas… Chapeau bas !
Hors ligne
#25 Le 11/07/2022, à 14:30
- xubu1957
Re : [En test] Script installation de REFIND
Bonjour,
Pour info.
Nous avons eu ce cas de paquets bloqués, pour une mise à niveau pour la 22.04, et dans l'historique :
63 sudo apt install -y refind
64 sudo apt-mark hold grub-efi-amd64-signé grub-common grug-efi-amd64-bin grub-common grubZ-common
==============
La Doc refind.
et dans rodsbooks.com/refind/bootcoup :
A less radical approach to preventing boot coups related to GRUB updates is to use your packaging system to lock the current version in place. You can do this with Debian-based installations with the apt-mark hold command, as in:
Une approche moins radicale pour empêcher les coups de démarrage liés aux mises à jour de GRUB consiste à utiliser votre système de paquets pour verrouiller la version actuelle en place. Vous pouvez le faire avec les installations basées sur Debian avec la commande apt-mark hold, comme dans :# apt-mark hold grub-efi-amd64 grub-efi-amd64-signed grub-common grub-efi-amd64-bin \ grub-common grub2-common
Conseils pour les nouveaux demandeurs et pas qu'eux
Important : Pensez à passer vos sujets en [Réso|u] lorsque ceux-ci le sont, au début du titre en cliquant sur Modifier sous le premier message, et un bref récapitulatif de la solution à la fin de celui-ci. Merci. Membre de Linux-Azur
En ligne