Grub2 - Personnalisation

Bonsoir à tous,

Je cherche une solution pour personnaliser “mon” grub2 - version apt-cache policy grub-pc grub-pc: Installé : 1.98~20100110-1 Candidat : 1.98~20100110-1 Table de version : *** 1.98~20100110-1 0 500 http://ftp.fr.debian.org sid/main Packages

Mon objectif premier est de limiter le nombre de noyau à afficher au niveau du menu grub, soit à 2

J’ai trouvé cette page mais les ajoutes au fichier /etc/grub.d/10_linux ne change rien (après un update-grub) dont voici le lien

Voici le début de mon “10_linux” :

[code]#! /bin/sh -e

grub-mkconfig helper script.

Copyright © 2006,2007,2008,2009,2010 Free Software Foundation, Inc.

GRUB is free software: you can redistribute it and/or modify

it under the terms of the GNU General Public License as published by

the Free Software Foundation, either version 3 of the License, or

(at your option) any later version.

GRUB is distributed in the hope that it will be useful,

but WITHOUT ANY WARRANTY; without even the implied warranty of

MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the

GNU General Public License for more details.

You should have received a copy of the GNU General Public License

along with GRUB. If not, see http://www.gnu.org/licenses/.

#Modification-start

Number of version to display - can be changed to desired value

NBLISTMAX=$((2))

pre-filtering for kernel to use - can be changed to desired value

PREFILTER=""

post-filtering for kernel to use - can be changed to desired value

POSTFILTER=""

Intermediate variable - do not change

NBLIST=$((0))
#Modification-end
[/code]

Tu n’es pas sous Debian, là ?
le 10_linux n’est pas écrit de cette façon sous Sid.
Je pense que tu es sous Buntu, non ?
Si c’est le cas, tu ferais bien de le préciser.

Non, je suis bien sur une Debian sid/32bits

J’ai ajouté ça [code]#Modification-start

Number of version to display - can be changed to desired value

NBLISTMAX=$((2))

pre-filtering for kernel to use - can be changed to desired value

PREFILTER=""

post-filtering for kernel to use - can be changed to desired value

POSTFILTER=""

Intermediate variable - do not change

NBLIST=$((0))
#Modification-end[/code]

que j’ai trouvé sur la doc ubuntu, serait ce différent pour Debian??

# apt-cache policy grub-pc grub-pc: Installé : 1.98~20100101-1 Candidat : 1.98~20100110-1 Table de version : 1.98~20100110-1 0 500 http://ftp.fr.debian.org sid/main Packages *** 1.98~20100101-1 0 100 /var/lib/dpkg/status 1.96+20080724-16 0 500 http://ftp.fr.debian.org lenny/main Packages

[code]~# cat /etc/grub.d/10_linux
[…]
prefix=/usr
exec_prefix=${prefix}
bindir=${exec_prefix}/bin
libdir=${exec_prefix}/lib
. ${libdir}/grub/grub-mkconfig_lib

. ${bindir}/gettext.sh
export TEXTDOMAIN=grub
export TEXTDOMAINDIR=${prefix}/share/locale

if [ “x${GRUB_DISTRIBUTOR}” = “x” ] ; then
OS=GNU/Linux
else
OS="${GRUB_DISTRIBUTOR} GNU/Linux"
fi

loop-AES arranges things so that /dev/loop/X can be our root device, but

the initrds that Linux uses don’t like that.

case ${GRUB_DEVICE} in
/dev/loop/*|/dev/loop[0-9])
GRUB_DEVICE=losetup ${GRUB_DEVICE} | sed -e "s/^[^(]*(\([^)]\+\)).*/\1/"
;;
esac

if [ “x${GRUB_DEVICE_UUID}” = “x” ] || [ “x${GRUB_DISABLE_LINUX_UUID}” = “xtrue” ]
|| ! test -e “/dev/disk/by-uuid/${GRUB_DEVICE_UUID}” \
|| [ “grub-probe -t abstraction --device ${GRUB_DEVICE} | sed -e 's,.*\(lvm\).*,\1,'” = “lvm” ] ; then
LINUX_ROOT_DEVICE=${GRUB_DEVICE}
else
LINUX_ROOT_DEVICE=UUID=${GRUB_DEVICE_UUID}
fi

linux_entry ()
{
os="$1"
version="$2"
recovery="$3"
args="$4"
if ${recovery} ; then
title="$(gettext “%s, with Linux %s (recovery mode)”)“
else
title=”$(gettext “%s, with Linux %s”)"
fi
printf “menuentry “${title}” {\n” “${os}” "${version}“
if [ -z “${prepare_boot_cache}” ]; then
prepare_boot_cache=”$(prepare_grub_to_access_device ${GRUB_DEVICE_BOOT} | sed -e “s/^/\t/”)"
fi
printf ‘%s\n’ "${prepare_boot_cache}"
cat << EOF
echo $(printf “$(gettext “Loading Linux %s …”)” ${version})
linux ${rel_dirname}/${basename} root=${linux_root_device_thisversion} ro ${args}
EOF
if test -n “${initrd}” ; then
cat << EOF
echo $(gettext “Loading initial ramdisk …”)
initrd ${rel_dirname}/${initrd}
EOF
fi
cat << EOF
}
EOF
}

list=for i in /boot/vmlinu[xz]-* /vmlinu[xz]-* ; do if grub_file_is_not_garbage "$i" ; then echo -n "$i " ; fi done
prepare_boot_cache=

while [ “x$list” != “x” ] ; do
linux=version_find_latest $list
echo “Found linux image: $linux” >&2
basename=basename $linux
dirname=dirname $linux
rel_dirname=make_system_path_relative_to_its_root $dirname
version=echo $basename | sed -e "s,^[^0-9]*-,,g"
alt_version=echo $version | sed -e "s,\.old$,,g"
linux_root_device_thisversion="${LINUX_ROOT_DEVICE}"

initrd=
for i in “initrd.img-${version}” “initrd-${version}.img”
“initrd-${version}” “initrd.img-${alt_version}”
“initrd-${alt_version}.img” “initrd-${alt_version}”; do
if test -e “${dirname}/${i}” ; then
initrd="$i"
break
fi
done
if test -n “${initrd}” ; then
echo “Found initrd image: ${dirname}/${initrd}” >&2
else
# “UUID=” magic is parsed by initrds. Since there’s no initrd, it can’t work here.
linux_root_device_thisversion=${GRUB_DEVICE}
fi

linux_entry “${OS}” “${version}” false
"${GRUB_CMDLINE_LINUX} ${GRUB_CMDLINE_LINUX_DEFAULT}"
if [ “x${GRUB_DISABLE_LINUX_RECOVERY}” != “xtrue” ]; then
linux_entry “${OS}” “${version}” true
"single ${GRUB_CMDLINE_LINUX}"
fi

list=echo $list | tr ' ' '\n' | grep -vx $linux | tr '\n' ' '
done[/code]
Le mien chez moi (SID amd64) !
Désolé pour la longueur…

# apt-cache policy grub-pc grub-pc: Installé&nbsp;: 1.98~20100101-1 Candidat&nbsp;: 1.98~20100110-1 Table de version&nbsp;: 1.98~20100110-1 0 500 http://ftp.fr.debian.org sid/main Packages *** 1.98~20100101-1 0 100 /var/lib/dpkg/status 1.96+20080724-16 0 500 http://ftp.fr.debian.org lenny/main Packages

Ce n’est pas la même version… Mais je serais étonné de tels changements !

Edit : Et salut au fait… :blush:

Salut lol!!

Ton grub fait apparaître combien de noyau??

Je voudrais ne faire apparaître que le noyau courant (deux lignes avec le mode recovery), celui donc je me sers.

Re,
Malheureusement “une chiée”… 6 noyaux avec les recovery qui vont bien, et un chainload vers XP !
Si tu trouve une solution pour alléger ça je suis preneur !

exactement le même menu pour moi, j’avais lus vaguement une solution un peu brutale : celle de déplacer du /boot tous les fichiers relatifs à d’anciens noyaux vers un dossiers nommés genre “anciensnoyaux”

Je vais voir pour trouver une solution plus propre et surtout plus automatisée…

[quote=“lol”]Re,
Malheureusement “une chiée”… 6 noyaux avec les recovery qui vont bien, et un chainload vers XP !
Si tu trouve une solution pour alléger ça je suis preneur ![/quote]
Même 10_linux que Lol et c’est pour ça que je te posais la question. Nous n’avons pas les lignes que tu montres.
@ Lol :
pour les “single”, moi je les élimine. Si besoin est, il est simple de modifier la ligne au chargement de Grub.

[quote=“ricardo”]
Même 10_linux que Lol et c’est pour ça que je te posais la question. Nous n’avons pas les lignes que tu montre.[/quote]

Oui, je les ai ajouté moi mêmes, c’est normal que tu n’as pas ces lignes…

A quoi sert les “single”??

Re,

[quote=“M3t4linux”]A quoi sert les “single”??[/quote]Single=Recovery.

J’ai trouvé ça, mais c’est pour Ubuntu (encore)…
linuxquestions.org/blog/dras … ub-2-2466/
Il nous manque dans le fichier /usr/sbin/grub-mkconfig la variable : GRUB_HOWMANY !

Sans ça, je na sais pas comment faire…

Bjr,

Je ne sais pas comment tu fais, mais je pense qu’il faut dé-commenter une ligne dans /etc/default/grub. Comme ça [quote]# Uncomment to disable generation of recovery mode menu entries
GRUB_DISABLE_LINUX_RECOVERY=“true”[/quote]

Re,
J’ai testé la solution proposée ci-dessous :

Mais ça ne fonctionne pas.
Il faut modifier /usr/sbin/grub-mkconfig, /etc/defaut/grub et /etc/grub.d/10_linux
J’ai toujours autant de noyaux dans /boot/grub.grub.cfg :frowning: après un petit update-grub

[quote=“phlinux”]Bjr,

Je ne sais pas comment tu fais, mais je pense qu’il faut dé-commenter une ligne dans /etc/default/grub. Comme ça [quote]# Uncomment to disable generation of recovery mode menu entries
GRUB_DISABLE_LINUX_RECOVERY=“true”[/quote][/quote]
exactement ça.

[quote=“lol”]Re,
J’ai testé la solution proposée ci-dessous :

Mais ça ne fonctionne pas.
Il faut modifier /usr/sbin/grub-mkconfig, /etc/defaut/grub et /etc/grub.d/10_linux
J’ai toujours autant de noyaux dans /boot/grub.grub.cfg :frowning: après un petit update-grub[/quote]
Il te reste ma solution, hautement intellectuelle : les éliminer “a la mano” dans grub.cfg.
Par contre, il ne faut pas faire d’update-grub ensuite. :smt003

[quote=“ricardo”][quote=“lol”]Re,
J’ai testé la solution proposée ci-dessous :

Mais ça ne fonctionne pas.
Il faut modifier /usr/sbin/grub-mkconfig, /etc/defaut/grub et /etc/grub.d/10_linux
J’ai toujours autant de noyaux dans /boot/grub.grub.cfg :frowning: après un petit update-grub[/quote]
Il te reste ma solution, hautement intellectuelle : les éliminer “a la mano” dans grub.cfg.
Par contre, il ne faut pas faire d’update-grub ensuite. :smt003[/quote]

Bah oui !
Je vais laisser M3t4linux bosser un peu… Qu’il nous apporte le “cheat code” tout cuit !!! :wink:

re-
une solution semi-bourrin quand même.
On créé un fichier “custom” et on met son/ses entrée(s) dedans

L’entrée sur mon pc, prise dans /boot/grub/grub.cfg, avec en plus la “ligne magique”

[quote]#!/bin/sh
exec tail -n +3 $0

noyau courant

menuentry “Debian GNU/Linux, avec Linux 2.6.32-rc8-686” {
insmod ext2
set root=(hd0,7)
search --no-floppy --fs-uuid --set a755a4e5-8e91-404e-89ba-778970987858
echo Loading Linux 2.6.32-rc8-686 …
linux //vmlinuz-2.6.32-rc8-686 root=UUID=6e90a3b3-2893-499f-bddb-9534ae24bd81 ro quiet
echo Loading initial ramdisk …
initrd //initrd.img-2.6.32-rc8-686
}[/quote]
On active

On désactive ce qui gène

On génère

:smt023

Pas mal ce truc… Merci Phlinux !

re-
Penser à sauvegarder /boot/grub/grub.cfg ça peut servir