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édentes Révision précédente
Prochaine révision
Révision précédente
grub-pc-annexe [Le 08/01/2010, 12:52]
213.95.41.13
— (Version actuelle)
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/bootd 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/​boot.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>​ 
  • grub-pc-annexe.1262951524.txt.gz
  • Dernière modification: Le 18/04/2011, 14:53
  • (modification externe)