_Seth_ Guru
Joined: 15 Sep 2004 Posts: 539 Location: encore paumé dans un labo ;)
|
Posted: Sun Apr 01, 2007 2:52 am Post subject: [SCRIPT]Maintenir à jour son noyau |
|
|
Salut,
En bon fainéant, je n'aime pas trop faire 2 fois les mêmes recherches sur les différentes commandes à réaliser lorsque je souhaite mettre à jour mon noyau. J'ai donc écrit ce script, qui est loin d'être parfait mais qui me simplifie pas mal la vie.
I - Préambule
1- il faut avoir installé sys-kernel/module-rebuild, l'outil qui simplifie la vie pour la gestion des modules externes.
2- idem pour app-admin/eselect, mais difficile d'être sous gentoo sans connaitre cet utilitaire.
3- je n'apporte aucune garantie sur le bon fonctionnement de ce programme et il est sous GPL-2.
4- ça fait longtemps que je dit qu'il faut que j'écrive un script comme celui là, je l'ai fait et posté ici mais s'il me convient bien, il n'est pas dit que vous le trouviez adapté pour vos besoin. Je reste à votre disposition pour intégrer des modifs.
5- avoir monté préalablement sa partoche /boot.
II - Installation
Copier le script dans un fichier (je l'appelle make-new-kernel, ça vaut ce que ça vaut). Lui donner les droits en execution et le rendre accessible dans le PATH :
Code: | chmod a+x make-new-kernel && ln -s /la/ou/est/make-new-kernel /usr/local/sbin/make-new-kernel |
III - Utilisation
Ce script ne fait vraiment pas grand chose, mais m'évite d'avoir à retrouver le fichier texte avec les commandes-qui-vont-bien ou d'aller fouiller les how-to...
Il faut l'exécuter en root, choisir le kernel qu'on veut installer, le configurer (faut pas rêver !) et si on est satisfait de la configuration réalisée, on peut lancer l'installation proprement dite. Vous remarquerez que j'utilise le make install qui ajoute automatiquement le bzImage, le .config et le System.map (avec les noms qui vont bien) dans /boot. Il suffit d'une entrée qui pointe sur vmlinuz (et vmlinuz.old) dans votre grub.conf ou lilo.conf et le tour est joué : vous avez une entrée qui pointe vers le dernier noyau compilé (vmlinuz) et vers le précédent (vmlinuz.old). Ensuite le script se charge de re-emerger les modules externes (alsa, nvidia, ...) et termine par reconfigurer correctement le module nvidia. Comme je n'ai pas d'autres chipsets, je n'ai pas inclus l'étape de reconfigurations pour les ATI, etc...
IV - Le script
make-new-kernel: | #!/bin/bash
#/usr/local/sbin/make-new-kernel
PROG=`basename ${0}`
CURRENT_KERNEL=`uname -r`
if [ ! `whoami` = "root" ]; then
echo "Error: you must be root." >&2
exit 1
fi
if [ $# -eq 1 ] ; then
echo "Usage: $PROG" >&2
exit 1
fi
echo "Current kernel : $CURRENT_KERNEL"
echo "Populating current module list"
module-rebuild populate
eselect kernel list
echo -n "Which kernel do you want to install ? "
read ANSWER
#echo $ANSWER
eselect kernel set $ANSWER
if [ $? -ne 0 ] ; then
echo "Unknown value for kernel selection" >&2
exit 1
fi
cd /usr/src/linux
READY=0
while [ $READY -eq 0 ]; do
make menuconfig
echo -n "Are you ready to install the kernel with this configuration (No, configure it again/Yes/Exit) ? "
read ANSWER
case "$ANSWER" in
[yY]) echo "Let's start the kernel compilation"
READY=1 ;;
[eE]) echo "Good bye !"
exit 0 ;;
*) echo "Configure the kernel again" ;;
esac
done
make && make modules_install install
echo; echo "Rebuild external modules"; echo;
module-rebuild rebuild
echo; echo -n "Do you use Nvidia drivers (N/Y)? "
read ANSWER
case $ANSWER in
[yY]) echo "Update nvidia module"; echo;
modprobe nvidia && modules-update && eselect opengl set nvidia
echo; echo "Ok, all done, quit."; echo;;
*) echo "Only Nvidia supported yet"
echo "You must finish the reconfiguration of your modules by yourself ;) Quitting"; echo;;
esac
exit 0 |
PS: je ne sais plus s'il est toujours recommandé de faire la majeure partie de la manip en user normal (et pas en root), si vous pouvez m'éclairer sur le sujet _________________ no tears to cry, no feelings left
the species has amused itself to death
amused itself to death |
|