Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
grub-pc-annexe [Le 10/01/2010, 19:45] – Correction erreur /etc/bootd est en fait /etc/grub.d lucgegrub-pc-annexe [Le 06/11/2014, 21:54] (Version actuelle) – Suppression : le code des fichiers de configuration cité est très différent de qu'il était en 2009/2010. De plus, les noyaux ne sont visibles que dans un sous-menu maintenant. frombenny
Ligne 1: Ligne 1:
-====== Annexe à grub-pc : exemples de scripts d'autoconfiguration ====== 
-{{tag>grub boot karmic}} 
  
-Compléments à la documentation [[grub-pc]]. 
- 
-Cette annexe donne des exemples de fichiers de génération du menu de boot. 
-Ces scripts sont placés dans le répertoire /etc/grub.d et doivent être validés en exécution. 
-La génération du fichier /boot/grub/grub.cfg se fait par la commande: 
- 
-<code> 
-sudo update-grub 
-</code> 
- 
-La sortie de la commande permet de contrôler les éléments qui seront placés dans le menu. 
- 
- 
-===== Faire apparaître un nombre fixe de noyaux du système en cours ===== 
- 
-On modifie ici le scripts /etc/grub.d/10_linux livré avec ubuntu 9.10 de façon à n'afficher que les NBLISTMAX derniers noyaux du système ubuntu en cours. 
- 
-==== Nouveaux paramètres introduits dans le script ==== 
-1) NBLISTMAX:  
- 
-Nombre de noyaux à afficher dans le menu. 
- 
-2) PREFILTER et POSTFILTER:  
- 
-Filtre sur le nom du noyau permettant de sélectionner les noyaux du système sur lequel on est, dans le cas ou la partition /boot est commune à plusieurs systèmes distincts. 
- 
-Dans le cas de ubuntu Karmic, on a: PREFILTER="-2.6.31-" et POSTFILTER="-generic" 
- 
-//Nota: ces paramètres peuvent être mis à "" si /boot ne contient que les noyaux d'un unique système.// 
- 
-==== code du script /etc/grub.d/10_linux modifié ==== 
- 
- 
-<code> 
-#! /bin/sh -e 
- 
-# grub-mkconfig helper script. 
-# Copyright (C) 2006,2007,2008,2009  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="-2.6.31-" 
-# post-filtering for kernel to use - can be changed to desired value 
-POSTFILTER="-generic" 
-# Intermediate variable - do not change 
-NBLIST=$((0)) 
-#Modification-end 
- 
- 
-prefix=/usr 
-exec_prefix=${prefix} 
-libdir=${exec_prefix}/lib 
-. ${libdir}/grub/grub-mkconfig_lib 
- 
- 
- 
-if [ "x${GRUB_DISTRIBUTOR}" = "x" ] ; then 
-  OS=GNU/Linux 
-else 
-  OS="${GRUB_DISTRIBUTOR}" 
-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/"` 
-    # We can't cope with devices loop-mounted from files here. 
-    case ${GRUB_DEVICE} in 
-      /dev/*) ;; 
-      *) exit 0 ;; 
-    esac 
-  ;; 
-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 
- 
-# add crashkernel option if we have the required tools 
-if [ -x "/usr/bin/makedumpfile" ] && [ -x "/sbin/kexec" ]; then 
-    GRUB_CMDLINE_EXTRA="$GRUB_CMDLINE_EXTRA crashkernel=384M-2G:64M,2G-:128M" 
-fi 
- 
-linux_entry () 
-{ 
-  cat << EOF 
-menuentry "$1" { 
-        recordfail=1 
-        if [ -n \${have_grubenv} ]; then save_env recordfail; fi 
-EOF 
-  if [ "x$3" = "xquiet" ]; then 
-    cat << EOF 
- set quiet=1 
-EOF 
-  fi 
-  save_default_entry | sed -e "s/^/\t/" 
-  prepare_grub_to_access_device ${GRUB_DEVICE_BOOT} | sed -e "s/^/\t/" 
-  cat << EOF 
- linux ${rel_dirname}/${basename} root=${linux_root_device_thisversion} ro $2 
-EOF 
-  if test -n "${initrd}" ; then 
-    cat << EOF 
- initrd ${rel_dirname}/${initrd} 
-EOF 
-  fi 
-  cat << EOF 
-} 
-EOF 
-} 
- 
-list=`for i in /boot/vmlinu[xz]${PREFILTER}*${POSTFILTER} /vmlinu[xz]${PREFILTER}*${POSTFILTER} ; do 
-        if grub_file_is_not_garbage "$i" ; then echo -n "$i " ; fi 
-      done` 
- 
-while [ "x$list" != "x" ] ; do 
-#LL-start 
-  NBLIST=$((NBLIST+1)) 
-#  echo "NBLIST = $NBLIST" >&2 
-  linux=`version_find_latest $list` 
-  if [ "$NBLIST" -le "$NBLISTMAX" ] ; then 
-    echo "Found linux image: $linux" >&2 
-#LL-end 
-    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}, Linux ${version}" \ 
-      "${GRUB_CMDLINE_LINUX} ${GRUB_CMDLINE_EXTRA} ${GRUB_CMDLINE_LINUX_DEFAULT}" \ 
-        quiet 
-    if [ "x${GRUB_DISABLE_LINUX_RECOVERY}" != "xtrue" ]; then 
-      linux_entry "${OS}, Linux ${version} (recovery mode)" \ 
- "single ${GRUB_CMDLINE_LINUX}" 
-    fi 
-#LL-start 
-  fi 
-#LL-end 
-  list=`echo $list | tr ' ' '\n' | grep -vx $linux | tr '\n' ' '` 
-#  echo "liste: $list" >&2 
- 
-done 
-</code>