#1 Le 06/12/2006, à 23:27
- atlas95
[multiboot]Redémarrer sous l'OS que vous voulez
Ce tuto prendra pour exemple le mien, c'est à dire je vais créer un lanceur pour redémarrer sous windows xp .
Prérequis : grub et un doigt pour tapper au moin.
Dans le haut de fichier menu.lst
sudo gedit /boot/grub/menu.lst
chercher :
# You can specify 'saved' instead of a number. In this case, the default entry
# is the entry saved with the command 'savedefault'.
# WARNING: If you are using dmraid do not change this entry to 'saved' or your
# array will desync and will not let you boot your system.
default 0
Et le changer par:
# You can specify 'saved' instead of a number. In this case, the default entry
# is the entry saved with the command 'savedefault'.
# WARNING: If you are using dmraid do not change this entry to 'saved' or your
# array will desync and will not let you boot your system.
default saved
Mettre timeout à 4 seconde par exemple aussi.
## timeout sec
# Set a timeout, in SEC seconds, before automatically booting the default entry
# (normally the first entry defined).
timeout 4
S'assurer que la section concernant windows xp est comme ceci:
title Microsoft Windows XP Professionnel
root (hd0,0)
savedefault 0
makeactive
chainloader +1
Ensuite compter en quel position est votre windows dans le fichier menu.lst, par exemple moi il était en 4eme position (on ne compte pas la ligne de séparation des système linux et windows)
Exemple mon grub ressemble a ça au démarrage en gros:
Ubuntu <== 1
Ubuntu safe
Memtest <== 3
Other blabla(ligne de séparation)
Windows XP <== 4
Donc on retient 4.
Ensuite on créer le script pour redémarrer:
sudo gedit /usr/local/bin/windows
#!/bin/bash
gksudo grub-set-default 4 ##ligne du système que l'on veut démarrer
gksudo reboot
On met les droit d'excecution
sudo chmod +x /usr/local/bin/windows
Ensuite créer un lanceur ou vous voulez avec l'icône que vous voulez avec comme commande : windows
Ou le lancer direct dans un terminal
Voila, si c'est pas clair dites le moi, je suis créver là et ....
Bonne chance
edit: Vous pourrez créer un lancer pour memtest par exemple mais comment faire si je veux cacher la ligne de memtest du menu grub? Une idée?
Dernière modification par atlas95 (Le 07/12/2006, à 08:23)
Ubuntu sur un XPS m1330:c'est ici !
Mon blog sur ubuntu:c'est ici !
Jabber : cyril at jabber.levis-heb.net
Hors ligne
#2 Le 06/12/2006, à 23:54
- naholyr
Re : [multiboot]Redémarrer sous l'OS que vous voulez
Sauf qu'avec ça, à chaque prochain redémarrage il restera sur Windows, et pas juste une fois
Messagerie instantanée : naholyr@jabber.fr
Envoyer vos images sur le web d'un clic !
Choix du système à rebooter (graphique)
Hors ligne
#3 Le 07/12/2006, à 00:01
- lagnole
Re : [multiboot]Redémarrer sous l'OS que vous voulez
Exact, pour changer cela, il faut modifier
title Microsoft Windows XP Professionnel
root (hd0,0)
savedefault
makeactive
chainloader +1
en :
title Microsoft Windows XP Professionnel
root (hd0,0)
savedefault 0
makeactive
chainloader +1
Et remplacer le 0 de savedefault 0 par le numero d'entrée d'ubuntu dans votre Grub...
Dernière modification par lagnole (Le 07/12/2006, à 00:02)
Hors ligne
#4 Le 07/12/2006, à 00:12
- naholyr
Re : [multiboot]Redémarrer sous l'OS que vous voulez
Bien vu
Messagerie instantanée : naholyr@jabber.fr
Envoyer vos images sur le web d'un clic !
Choix du système à rebooter (graphique)
Hors ligne
#5 Le 07/12/2006, à 00:45
- misteraph
Re : [multiboot]Redémarrer sous l'OS que vous voulez
exact.
je connaissais pas cette astuce.
Perso j'aurai creer 2 menu.lst et un batch qui remet à 0 une fois que windows est lancé.
Par contre comment faire pour que n'execution du script ne demande pas de mot de passe ?
Hors ligne
#6 Le 07/12/2006, à 01:18
- naholyr
Re : [multiboot]Redémarrer sous l'OS que vous voulez
@misteraph : tu peux créer un lanceur qui fait "sudo tonscript" et placer "tonscript" comme ne nécessitant pas de mot de passe dans sudoers. Ou placer directement les commandes reboot et grub-set-default dans sudoers.
P.S: je prépare une interface graphique pour automatiser tout ça avec zenity et dash.
Dernière modification par naholyr (Le 07/12/2006, à 01:18)
Messagerie instantanée : naholyr@jabber.fr
Envoyer vos images sur le web d'un clic !
Choix du système à rebooter (graphique)
Hors ligne
#7 Le 07/12/2006, à 01:19
- amkoolgarst
Re : [multiboot]Redémarrer sous l'OS que vous voulez
Bonsoir,
je me demandais si ça pouvait "coller" avec GAG et grub sur ma partition?
Merci!
Jifya moja haliinjiki chungu.
In girum imus nocte, ecce, et consumimur igni.
Hors ligne
#8 Le 07/12/2006, à 03:28
- naholyr
Re : [multiboot]Redémarrer sous l'OS que vous voulez
J'ai écrit un petit script (une centaine de lignes) pour automatiser cette astuce. Si vous lancez directement le script vous serez guidé par une interface graphique, mais il est possible de forcer tout ou partie des options par les arguments de la ligne de commande.
Les fonctionnalités intéressantes du script
- correction automatique du fichier menu.lst pour permettre l'utilisation de cette méthode
- affichage de la liste des entrées du fichier menu.lst pour le choix du système
Fichiers
Le script : http://naholyr.free.fr/ubuntu/edgy/reboot-system/reboot-system.sh
Une icone représentant un pc/Windows (pour le lanceur) : http://naholyr.free.fr/ubuntu/edgy/reboot-system/windows.xpm
Installation
wget http://naholyr.free.fr/ubuntu/edgy/reboot-system/reboot-system.sh
sudo cp reboot-system.sh /usr/bin/reboot-system
sudo chmod +x /usr/bin/reboot-system
sudo reboot-system -h
Utilisation
Usage : reboot-system [options] [numero]
Options :
-h Affiche cette aide et quitte
-q Ne demande pas avant de rebooter
-s prog Demande une authentification via le programme ’prog’ (sudo ou gksudo)
-a Ne demande pas avant de corriger menu.lst
Si 'numero' est défini, utilisera ce choix sans faire apparaître la
fenêtre de choix du systême
Note: si vous n'utilisez pas -s, il vous incombe de
lancer ce script avec les droits de superutilisateur.
Exemple
En supposant que votre Windows soit sur l'entrée numéro 1, il vous suffit de créer un lanceur sur "reboot-system -q -s gksudo 1" pour rebooter automatiquement sous Windows.
L'intérêt du script est surtout en le lançant sans option
- il va détecter seul si le fichier menu.lst est pret à accepter la méthode, sinon il propose de le corriger (option -a)
- il affiche ensuite la liste des entrées disponibles, vous choisissez le système à lancer au prochain démarrage (dernière option)
- il vous demande si vous voulez redémarrer immédiatement (option -q)
Pour ne plus avoir à taper le mot de passe
Il suffit d'indiquer à "sudo" que le script "reboot-system" n'a plus besoin du mot de passe lorsqu'il est demandé par votre utilisateur.
Pressez Alt+F2, entrez "EDITOR=gedit && sudo visudo", et cocher "exécuter dans un terminal" puis validez.
En fin de fichier, ajoutez ceci :
<nom d'utilisateur> ALL=NOPASSWD:/usr/bin/reboot-system
Il faut bien sûr changer "<nom d'utilisateur>" en votre nom d'utilisateur.
Créez un lanceur sur "sudo reboot-system" et vous aurez votre interface de redémarrage avec choix du système à lancer, sans besoin du mot de passe
---
Edit le 07/12/2006 : Mise à jour du script, merci à pabix pour le remaniement des options de la ligne de commande.
Dernière modification par naholyr (Le 07/12/2006, à 19:57)
Messagerie instantanée : naholyr@jabber.fr
Envoyer vos images sur le web d'un clic !
Choix du système à rebooter (graphique)
Hors ligne
#9 Le 07/12/2006, à 07:37
- cep
Re : [multiboot]Redémarrer sous l'OS que vous voulez
C
sudo grub-install /dev/hda
Commande inutile et potentiellement dangereuse.
Hors ligne
#10 Le 07/12/2006, à 08:22
- atlas95
Re : [multiboot]Redémarrer sous l'OS que vous voulez
Ok je vais éditer je n'étais pas sur !
Super ton script naholyr je vais le prendre mais perso pour la seule utilisation que je veux faire mon ptit script suffira
Dernière modification par atlas95 (Le 07/12/2006, à 08:25)
Ubuntu sur un XPS m1330:c'est ici !
Mon blog sur ubuntu:c'est ici !
Jabber : cyril at jabber.levis-heb.net
Hors ligne
#11 Le 07/12/2006, à 09:44
- pabix
Re : [multiboot]Redémarrer sous l'OS que vous voulez
naholyr : ce que tu préconises est DANGEREUX ! (pas le script lui-même)
Ne JAMAIS faire
gksudo gedit /etc/sudoers
mais TOUJOURS
EDITOR=gedit sudo visudo
Sinon, vous pouvez péter votre système. (le EDITOR=gedit, si vous aimez vim, nano, kate, vous pouvez adapter)
À part ça, merci pour ce script, je vais essayer de l'améliorer. La gestion des options me semble assez "lâche" !
Benoit
Dernière modification par pabix (Le 07/12/2006, à 10:28)
Utilisateur du clavier BÉPO.
mortgat (()) gmail () com
GPG 0x377D716D
Hors ligne
#12 Le 07/12/2006, à 10:15
- atlas95
Re : [multiboot]Redémarrer sous l'OS que vous voulez
Tu pourras poster l'amélioration pabix
Ubuntu sur un XPS m1330:c'est ici !
Mon blog sur ubuntu:c'est ici !
Jabber : cyril at jabber.levis-heb.net
Hors ligne
#13 Le 07/12/2006, à 10:29
- pabix
Re : [multiboot]Redémarrer sous l'OS que vous voulez
bien sûr, mais il faut l'attendre, je peux pas tester ici au bureau
Benoit
Utilisateur du clavier BÉPO.
mortgat (()) gmail () com
GPG 0x377D716D
Hors ligne
#14 Le 07/12/2006, à 10:37
- lagnole
Re : [multiboot]Redémarrer sous l'OS que vous voulez
Ba si tu peux tester au bureau!!! Suffit d'une connexion SSH et un serveur X installé sur ton windows du bureau (comme Xming par exemple...). D'ailleurs c'est ce que je vais faire! ^_^
Hors ligne
#15 Le 07/12/2006, à 10:41
- naholyr
Re : [multiboot]Redémarrer sous l'OS que vous voulez
naholyr : ce que tu préconises est DANGEREUX ! (pas le script lui-même)
[...]
Merci pour la précision, j'ai édité mon message et je vais éditer un autre message où j'ai à nouveau donné la même méthode. Je retiens
À part ça, merci pour ce script, je vais essayer de l'améliorer. La gestion des options me semble assez "lâche" !
Je t'encourage à le faire !
Pour la gestion des options je n'ai pas trouvé de manière "propre" de le faire, ma méthode fonctionne bien mais n'est pas très lisible D'autant moins que j'aurais aimé créé un alias avec argument mais je n'ai pas réussi à le faire. Edit : Je viens de tomber sur ceci je testerai ce soir si ça fonctionne. Contacte-moi sur naholyr -at- yahoo -point- fr si tu veux qu'on coordonne nos efforts
Je ne programme que très occasionnellement en Bash (Dash en l'occurrence) mais je ne voulais pas sortir Python pour ça. Je pense que j'aurais mieux fait tant qu'à faire (ne serait-ce que pour l'analyse du fichier menu.lst à base d'expressions régulières de façon un peu plus robuste que ça)
En même temps, les options je les ai mise pour pas grand-chose, il est bien plus efficace et sûr de lancer "sudo grub-set-default X && sudo reboot" que "sudo reboot-system -q X". À la rigueur la seule option que je pense réellement utile c'est "-q"/"--quiet". De plus je pense que les option --*sudo sont une hérésie, je ne devrais jamais bosser comme ça en pleine nuit
Dernière modification par naholyr (Le 07/12/2006, à 11:29)
Messagerie instantanée : naholyr@jabber.fr
Envoyer vos images sur le web d'un clic !
Choix du système à rebooter (graphique)
Hors ligne
#16 Le 07/12/2006, à 11:32
- pabix
Re : [multiboot]Redémarrer sous l'OS que vous voulez
Je ne peux pas vérifier ce que j'ai fait, mais voici des modifications. Si qqn pouvait tester et réparer les erreurs qui ne manqueront pas de se produire :
#!/bin/bash
# coding: utf-8
# variables
grubMenu=/boot/grub/menu.lst
titleCorrect="Corriger le menu.lst"
textCorrect1="Votre fichier menu.lst est configuré avec"
textCorrect2="Avec cette option, vous ne pourrez utiliser les fonctionnalités de choix du système à redémarrer. Souhaitez-vous que ce script modifie votre fichier menu.lst afin d'activer cette fonctionnalité ? L’ancien fichier sera sauvegardé sous"
titleSelect="Choisir le système"
textSelect="Système a démarrer automatiquement"
widthSelect=400
heightSelect=300
titleReboot="Redémarrer maintenant ?"
textReboot1="Au prochain redémarrage, l’entrée"
textReboot2="sera l’option par défaut. Souhaitez-vous redémarrer immédiatement ?"
textCancel="Opération annulée"
textError="Opération annulée (erreur)"
optionQuiet=0
optionCorrect=0
sudoprog=""
function usage () {
cat << EOF
Usage : $0 [options] [numero]
Options :
-h Affiche cette aide et quitte
-q Ne demande pas avant de rebooter
-s prog Demande une authentification via le programme ’prog’ (sudo ou gksudo)
-a Ne demande pas avant de corriger menu.lst
Si 'numero' est défini, utilisera ce choix sans faire apparaître la
fenêtre de choix du systême
Note: si vous n'utilisez pas -s, il vous incombe de
lancer ce script avec les droits de superutilisateur
EOF
}
# traitement des options de la ligne de commande
while getopts "qas:h" options; do
case $options in
q)
optionQuiet=1
;;
a)
optionCorrect=1
;;
s)
case $OPTARG in
"sudo" | "gksudo")
sudoprog=$OPTARG
;;
*)
echo Non valide
exit 1
;;
esac
resultat=$($sudoprog echo 1)
if [ "$resultat" != "1" ]; then
echo "$textError : Identification échouée"
exit 1
fi
;;
"h" | *)
call usage
exit 0
;;
esac
done
# vérification
grubDefault=`grep '^default[[:space:]]\+' $grubMenu | sed 's/^default\s\+//'`
if [ "$grubDefault" != "saved" ]; then
# on n'a pas trouvé la présence de "default", on demande à corriger le fichier automatiquement
doCorrect=$optionCorrect
if [ $doCorrect -eq 0 ]; then
zenity --question --title "$titleCorrect" --text "$textCorrect1 'default $grubDefault'. $textCorrect2 '$grubMenu.bak'"
if [ $? -eq 0 ]; then
doCorrect=1
fi
fi
if [ $doCorrect -eq 1 ]; then
# copie de sauvegarde
cp $grubMenu $grubMenu.bak
if [ ! -e "$grubMenu.bak" ]; then
zenity --error --text "$textError : impossible de sauvegarder $grubMenu"
exit 1
fi
tmp1=`tempfile`
tmp2=`tempfile`
cp $grubMenu $tmp1
# modification de l'entrée "default X" en "default saved"
# permet de modifier le default dynamiquement
sed 's/^default\s\+.*$/# \0\ndefault\tsaved/' $tmp1 > $tmp2
cp $tmp2 $tmp1
# ajout d'une entrée "savedefault X" après chaque entrée "title" (les autres entrées "savedefault" arrivant après, il n'y a pas de conflit engendré par cette modif)
# permet de récupérer l'entrée par défaut habituelle après chaque reboot.
sed "s/^title.*\$/\\0\\nsavedefault\t$grubDefault/" $tmp1 > $tmp2
cp $tmp2 $grubMenu
else
zenity --info --text "$textCancel"
exit 1
fi
fi
# sélection de l'os à redémarrer
if [ "`echo \" $*\" | grep ' [0-9]$'`" ]; then
# l'option <numero> est spécifiée
numeroChoix=`echo "$*" | sed 's/^.*\([0-9]\+\)$/\1/'`
else
choixEntree=$(awk -v i=0 '/^title[\s\t]*(.*)$/ { print i++" "$2,$3,$4,$5,$6,$7,$8,$9 }' $grubMenu | zenity --list --title "$titleSelect" --text "$textSelect" --column "Boot" --width $widthSelect --height $heightSelect)
numeroChoix=`echo $choixEntree | sed 's/^\([0-9]\+\).*$/\1/'`
nomChoix=`echo $choixEntree | sed 's/^[0-9]\+ //'`
fi
# actions en fonction de la sélection
if [ "$numeroChoix" = "" ]; then
# aucun choix, ou annulation
zenity --info --text "$textCancel"
else
# application du choix
$sudoprog grub-set-default $numeroChoix
if [ $? -eq 0 ]; then
# application ok, affichage d'une question pour rebooter immédiatement ou non
doReboot=$optionQuiet
if [ $doReboot -eq 0 ]; then
zenity --question --title "$titleReboot" --text "$textReboot1 \"$nomChoix\" $textReboot2"
if [ $? -eq 0 ]; then
doReboot=1
fi
fi
if [ $doReboot -eq 1 ]; then
reboot
fi
else
zenity --error --text "$textError"
exit 1
fi
fi
Dernière modification par pabix (Le 07/12/2006, à 12:47)
Utilisateur du clavier BÉPO.
mortgat (()) gmail () com
GPG 0x377D716D
Hors ligne
#17 Le 07/12/2006, à 11:35
- naholyr
Re : [multiboot]Redémarrer sous l'OS que vous voulez
Bon ben voilà c'est fait pour les options ^^
Merci pour le coup de main
Messagerie instantanée : naholyr@jabber.fr
Envoyer vos images sur le web d'un clic !
Choix du système à rebooter (graphique)
Hors ligne
#18 Le 07/12/2006, à 12:33
- atlas95
Re : [multiboot]Redémarrer sous l'OS que vous voulez
[/home/atlas]>$ /usr/bin/reboot-system
/usr/bin/reboot-system: line 50: erreur de syntaxe près du jeton `)' inattendu
/usr/bin/reboot-system: line 50: ` gksudo)'
Ne fonctionne pas ...
Ubuntu sur un XPS m1330:c'est ici !
Mon blog sur ubuntu:c'est ici !
Jabber : cyril at jabber.levis-heb.net
Hors ligne
#19 Le 07/12/2006, à 12:48
- pabix
Re : [multiboot]Redémarrer sous l'OS que vous voulez
oui, en effet ! dans une structure case, c'était pas possible de réunir deux cas comme en C. C'est résolu, merci. Erreur suivante ?
Benoit
Utilisateur du clavier BÉPO.
mortgat (()) gmail () com
GPG 0x377D716D
Hors ligne
#20 Le 07/12/2006, à 13:01
- atlas95
Re : [multiboot]Redémarrer sous l'OS que vous voulez
J'ai pas tester de redémarrer mais j'ai d'erreur.
Ubuntu sur un XPS m1330:c'est ici !
Mon blog sur ubuntu:c'est ici !
Jabber : cyril at jabber.levis-heb.net
Hors ligne
#21 Le 07/12/2006, à 16:32
- misteraph
Re : [multiboot]Redémarrer sous l'OS que vous voulez
j'ai bidouillé mon fichiers sudoers et maintenant, je ne peux plus faire une commande en sudo. Je n'ai pas d'erreur mais rien ne se passe.
Voici mon sudoers :
# /etc/sudoers
#
# This file MUST be edited with the 'visudo' command as root.
#
# See the man page for details on how to write a sudoers file.
#
# Host alias specification
# User alias specification
# Cmnd alias specification
# Defaults
# User privilege specification
root ALL=(ALL) ALL
misteraph ALL=(ALL) ALL
Hors ligne
#22 Le 07/12/2006, à 16:35
- pabix
Re : [multiboot]Redémarrer sous l'OS que vous voulez
misteraph : tu as fait avec visudo ? Ou alors gedit /etc/sudoers ? Si tu as fait gedit /etc/sudoers, tu es bon pour la réinstallation.
Benoit
Utilisateur du clavier BÉPO.
mortgat (()) gmail () com
GPG 0x377D716D
Hors ligne
#23 Le 07/12/2006, à 16:49
- cep
Re : [multiboot]Redémarrer sous l'OS que vous voulez
Il devrait pouvoir éviter la réinstallation
Exemple de configuration de /etc/sudoers sur une edgy :
:~$ stat -c %a /mnt/hdb2/etc/sudoers ; ls -l /mnt/hdb2/etc/sudoers
440
-r--r----- 1 root root 403 2006-10-07 19:40 /mnt/hdb2/etc/sudoers
:~$ sudo cat -n /mnt/hdb2/etc/sudoers
1 # /etc/sudoers
2 #
3 # This file MUST be edited with the 'visudo' command as root.
4 #
5 # See the man page for details on how to write a sudoers file.
6 # Host alias specification
7
8 # User alias specification
9
10 # Cmnd alias specification
11
12 # Defaults
13
14 Defaults !lecture,tty_tickets,!fqdn
15
16 # User privilege specification
17 root ALL=(ALL) ALL
18
19 # Members of the admin group may gain root privileges
20 %admin ALL=(ALL) ALL
Regarde si tu peux démarrer en recovery pour modifier, ou depuis un live cdrom.
Quelques exemples de ménipulation avec sudo :
http://www.cepcasa.info/parted/recup1.html#2%B0_sudo_ne_fonctionne_plus_
Bonne continuation.
cep
Dernière modification par cep (Le 07/12/2006, à 16:50)
Hors ligne
#24 Le 07/12/2006, à 16:51
- cep
Re : [multiboot]Redémarrer sous l'OS que vous voulez
@ misteraph : au fait, pourquoi avoir posté dans ce sujet ?
Hors ligne
#25 Le 07/12/2006, à 17:01
- misteraph
Re : [multiboot]Redémarrer sous l'OS que vous voulez
parce que je l'ai cassé en lisant ce sujet
Sinon, dans le script, quand on veut redemarrer direct, il manque un sudo
#!/bin/bash
# coding: utf-8
# variables
grubMenu=/boot/grub/menu.lst
titleCorrect="Corriger le menu.lst"
textCorrect1="Votre fichier menu.lst est configuré avec"
textCorrect2="Avec cette option, vous ne pourrez utiliser les fonctionnalités de choix du système à redémarrer. Souhaitez-vous que ce script modifie votre fichier menu.lst afin d'activer cette fonctionnalité ? L’ancien fichier sera sauvegardé sous"
titleSelect="Choisir le système"
textSelect="Système a démarrer automatiquement"
widthSelect=400
heightSelect=300
titleReboot="Redémarrer maintenant ?"
textReboot1="Au prochain redémarrage, l’entrée"
textReboot2="sera l’option par défaut. Souhaitez-vous redémarrer immédiatement ?"
textCancel="Opération annulée"
textError="Opération annulée (erreur)"
optionQuiet=0
optionCorrect=0
sudoprog=""
leSudo="sudo"
function usage () {
cat << EOF
Usage : $0 [options] [numero]
Options :
-h Affiche cette aide et quitte
-q Ne demande pas avant de rebooter
-s prog Demande une authentification via le programme ’prog’ (sudo ou gksudo)
-a Ne demande pas avant de corriger menu.lst
Si 'numero' est défini, utilisera ce choix sans faire apparaître la
fenêtre de choix du systême
Note: si vous n'utilisez pas -s, il vous incombe de
lancer ce script avec les droits de superutilisateur
EOF
}
# traitement des options de la ligne de commande
while getopts "qas:h" options; do
case $options in
q)
optionQuiet=1
;;
a)
optionCorrect=1
;;
s)
case $OPTARG in
"sudo" | "gksudo")
sudoprog=$OPTARG
;;
*)
echo Non valide
exit 1
;;
esac
resultat=$($sudoprog echo 1)
if [ "$resultat" != "1" ]; then
echo "$textError : Identification échouée"
exit 1
fi
;;
"h" | *)
call usage
exit 0
;;
esac
done
# vérification
grubDefault=`grep '^default[[:space:]]\+' $grubMenu | sed 's/^default\s\+//'`
if [ "$grubDefault" != "saved" ]; then
# on n'a pas trouvé la présence de "default", on demande à corriger le fichier automatiquement
doCorrect=$optionCorrect
if [ $doCorrect -eq 0 ]; then
zenity --question --title "$titleCorrect" --text "$textCorrect1 'default $grubDefault'. $textCorrect2 '$grubMenu.bak'"
if [ $? -eq 0 ]; then
doCorrect=1
fi
fi
if [ $doCorrect -eq 1 ]; then
# copie de sauvegarde
cp $grubMenu $grubMenu.bak
if [ ! -e "$grubMenu.bak" ]; then
zenity --error --text "$textError : impossible de sauvegarder $grubMenu"
exit 1
fi
tmp1=`tempfile`
tmp2=`tempfile`
cp $grubMenu $tmp1
# modification de l'entrée "default X" en "default saved"
# permet de modifier le default dynamiquement
sed 's/^default\s\+.*$/# \0\ndefault\tsaved/' $tmp1 > $tmp2
cp $tmp2 $tmp1
# ajout d'une entrée "savedefault X" après chaque entrée "title" (les autres entrées "savedefault" arrivant après, il n'y a pas de conflit engendré par cette modif)
# permet de récupérer l'entrée par défaut habituelle après chaque reboot.
sed "s/^title.*\$/\\0\\nsavedefault\t$grubDefault/" $tmp1 > $tmp2
cp $tmp2 $grubMenu
else
zenity --info --text "$textCancel"
exit 1
fi
fi
# sélection de l'os à redémarrer
if [ "`echo \" $*\" | grep ' [0-9]$'`" ]; then
# l'option <numero> est spécifiée
numeroChoix=`echo "$*" | sed 's/^.*\([0-9]\+\)$/\1/'`
else
choixEntree=$(awk -v i=0 '/^title[\s\t]*(.*)$/ { print i++" "$2,$3,$4,$5,$6,$7,$8,$9 }' $grubMenu | zenity --list --title "$titleSelect" --text "$textSelect" --column "Boot" --width $widthSelect --height $heightSelect)
numeroChoix=`echo $choixEntree | sed 's/^\([0-9]\+\).*$/\1/'`
nomChoix=`echo $choixEntree | sed 's/^[0-9]\+ //'`
fi
# actions en fonction de la sélection
if [ "$numeroChoix" = "" ]; then
# aucun choix, ou annulation
zenity --info --text "$textCancel"
else
# application du choix
$sudoprog grub-set-default $numeroChoix
if [ $? -eq 0 ]; then
# application ok, affichage d'une question pour rebooter immédiatement ou non
doReboot=$optionQuiet
if [ $doReboot -eq 0 ]; then
zenity --question --title "$titleReboot" --text "$textReboot1 \"$nomChoix\" $textReboot2"
if [ $? -eq 0 ]; then
doReboot=1
fi
fi
if [ $doReboot -eq 1 ]; then
$leSudo reboot
fi
else
zenity --error --text "$textError"
exit 1
fi
fi
Dernière modification par misteraph (Le 07/12/2006, à 17:10)
Hors ligne