Magellan Linux

Annotation of /tags/grubby-8_40/new-kernel-pkg

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1710 - (hide annotations) (download)
Sat Feb 18 00:28:45 2012 UTC (12 years, 2 months ago) by niro
Original Path: trunk/grubby/new-kernel-pkg
File size: 20363 byte(s)
    Fix new-kernel-pkg invocation of grubby for grub (bz 725185)
    
    new-kernel-pkg did not specify --grub when it called grubby to 
update the
    kernel entry with an initrd. Grubby would then try to probe what to 
do and
    would give preference to grub2 and thus leave an incomplete grub 
entry.
    
    new-kernel-pkg did also not specify the grub config file explicitly 
to
    grubby as it do for the grub2 config file. That could perhaps in 
some
    situations cause grubby to do something else than new-kernel-pkg 
expected.
    
    Now --grub -c $grubConfig is specified explicitly in all cases.


1 niro 532 #!/bin/bash
2 niro 924 # $Id$
3 niro 532 #
4 niro 923 # new-kernel-pkg
5 niro 532 # Invoked upon installation or removal of a kernel package, the following
6     # tasks are/can be done here:
7     # creation/removal of initrd
8     # run of depmod/removal of depmod generated files
9     # addition/removal of kernel images from grub/lilo configuration (via grubby)
10     #
11 niro 923 # Copyright 2002-2008 Red Hat, Inc. All rights reserved.
12 niro 532 # modified for Magellan-Linux by Niels Rogalla <niro@magellan-linux.de>
13     #
14 niro 923 # This program is free software; you can redistribute it and/or modify
15     # it under the terms of the GNU General Public License as published by
16     # the Free Software Foundation; either version 2 of the License, or
17     # (at your option) any later version.
18     #
19     # This program is distributed in the hope that it will be useful,
20     # but WITHOUT ANY WARRANTY; without even the implied warranty of
21     # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
22     # GNU General Public License for more details.
23     #
24     # You should have received a copy of the GNU General Public License
25     # along with this program. If not, see <http://www.gnu.org/licenses/>.
26     #
27 niro 532
28     PATH=/sbin:/bin:$PATH
29    
30     lilo=/sbin/lilo
31    
32     # some defaults that are sane for most arches
33     kernelName=kernel
34    
35 niro 924 if [ -x ./grubby ]
36     then
37     grubby=./grubby
38 niro 532 else
39 niro 924 grubby=/sbin/grubby
40 niro 532 fi
41    
42 niro 925 [ -f /etc/conf.d/grubby ] && . /etc/conf.d/grubby
43 niro 1691 [ -f /etc/conf.d/grubby-uboot ] && . /etc/conf.d/grubby-uboot
44 niro 532
45 niro 1697 cfgGrub2=""
46     cfgGrub2Efi=""
47 niro 532 cfgGrub=""
48     cfgLilo=""
49 niro 1691 cfguBoot=""
50 niro 532 runLilo=""
51     grubConfig=""
52 niro 1702 grub2Config=""
53     grub2EfiConfig=""
54 niro 532
55     ARCH=$(uname -m)
56    
57 niro 924 if [[ ${ARCH} = ia64 ]]
58     then
59     liloConfig=/boot/efi/EFI/redhat/elilo.conf
60     bootPrefix=/boot/efi/EFI/redhat
61     liloFlag=elilo
62     isx86=""
63     elif [[ ${ARCH} = ppc64 ]] || [[ ${ARCH} = ppc ]]
64     then
65     liloConfig=/etc/yaboot.conf
66     bootPrefix=/boot
67     lilo=/sbin/ybin
68     liloFlag=yaboot
69     runLilo="yes"
70     isx86=""
71     elif [[ ${ARCH} = sparc ]] || [[ ${ARCH} = sparc64 ]]
72     then
73     liloConfig=/etc/silo.conf
74     bootPrefix=/boot
75     liloFlag=silo
76     lilo=/sbin/silo
77     isx86=""
78     elif [[ ${ARCH} = s390 ]] || [[ ${ARCH} = s390x ]]
79     then
80     liloConfig=/etc/zipl.conf
81     bootPrefix=/boot
82     liloFlag=zipl
83     lilo=/sbin/zipl
84     runLilo="yes"
85     isx86=""
86 niro 1691 elif [[ ${ARCH} = armv7l ]]
87     then
88     liloConfig=""
89     bootPrefix=/boot
90     ubootDir=${UBOOT_DIR:-"/boot/uboot"}
91     ubootScript=$ubootDir/${UBOOT_SCR:-"boot.scr"}
92     ubootKList=${UBOOT_KLIST:-"klist.txt"}
93     ubootDevice=/dev/${UBOOT_DEVICE:-"mmcblk0p1"}
94     ubootDefaultImage=${UBOOT_UIMAGE:-"uImage"}
95     ubootDefaultInitrd=${UBOOT_UINITRD:-"uInitrd"}
96     mounted=""
97     liloFlag=""
98     isx86=""
99 niro 532 else
100 niro 924 # this leaves i?86 and x86_64
101     liloConfig=/etc/lilo.conf
102     grubConfig=/boot/grub/grub.conf
103 niro 1697 grub2Config=/boot/grub/grub.cfg
104     grub2EfiConfig=/boot/grub/grub-efi.cfg
105 niro 924 bootPrefix=/boot
106     liloFlag=lilo
107     isx86="yes"
108 niro 532 fi
109    
110     mode=""
111     version=""
112     initrd=""
113 niro 1334 dracut=""
114     dracuthostonly=""
115 niro 532 initrdfile=""
116     moddep=""
117     verbose=""
118     makedefault=""
119     package=""
120 niro 1706 mbkernel="${HYPERVISOR}"
121     mbargs="${HYPERVISOR_ARGS}"
122 niro 1334 adddracutargs=""
123     addplymouthinitrd=""
124 niro 532
125 niro 924 usage()
126     {
127 niro 1334 echo "Usage: $(basename $0) [-v] [--mkinitrd] [--rminitrd] [--dracut]" >&2
128 niro 924 echo " [--initrdfile=<initrd-image>] [--depmod] [--rmmoddep]" >&2
129 niro 1305 echo " [--kernel-args=<args>] [--remove-args=<args>]" >&2
130 niro 924 echo " [--banner=<banner>] [--multiboot=multiboot]" >&2
131 niro 1334 echo " [--mbargs=mbargs] [--make-default] [--add-dracut-args]" >&2
132     echo " [--add-plymouth-initrd]" >&2
133     echo " [--host-only]" >&2
134 niro 924 echo " <--install | --remove | --update> <kernel-version>" >&2
135     echo " (ex: $(basename $0) --mkinitrd --depmod --install 2.4.7-2)" >&2
136     exit 1
137 niro 532 }
138    
139 niro 924 install()
140     {
141     # XXX kernel should be able to be specified also (or work right on ia64)
142     if [ ! -f ${bootPrefix}/${kernelName}-${version} ]
143     then
144     [[ -n ${verbose} ]] && echo "kernel for ${version} does not exist, not running grubby"
145     return
146     fi
147 niro 923
148 niro 924 INITRD=""
149     if [ -f ${initrdfile} ]
150     then
151     [[ -n ${verbose} ]] && echo "found ${initrdfile} and using it with grubby"
152     INITRD="--initrd ${initrdfile}"
153 niro 1334
154     if [[ -n ${addplymouthinitrd} ]]
155     then
156     INITRD="${INITRD} --extra-initrd ${bootPrefix}/initrd-plymouth.img"
157     fi
158 niro 924 fi
159 niro 532
160 niro 924 # FIXME: is this a good heuristic to find out if we're on iSeries?
161     if [ -d /proc/iSeries ]
162     then
163     [[ -n ${verbose} ]] && echo "On an iSeries, just making img file"
164     if [[ -z ${initrdfile} ]]
165     then
166     [[ -n ${verbose} ]] && echo "No initrd, just adding system map"
167     /sbin/addSystemMap ${bootPrefix}/System.map-${version} ${bootPrefix}/${kernelName}-${version} ${bootPrefix}/vmlinitrd-${version}
168     else
169     /sbin/addSystemMap ${bootPrefix}/System.map-${version} ${bootPrefix}/${kernelName}-${version} ${bootPrefix}/vmlinux.sm-${version}
170     /sbin/addRamDisk ${initrdfile} ${bootPrefix}/System.map-${version} ${bootPrefix}/vmlinux.sm-${version} ${bootPrefix}/vmlinitrd-${version} 2>/dev/null
171     rm ${bootPrefix}/vmlinux.sm-${version}
172     fi
173     return
174 niro 532 fi
175    
176 niro 924 # get the root filesystem to use
177     rootdevice=$(awk '{ if ($1 !~ /^[ \t]*#/ && $2 == "/") { print $1; }}' /etc/fstab)
178 niro 532
179 niro 924 if [[ -n ${mbkernel} ]] && [[ -n ${cfgLilo} ]] && [[ ${liloFlag} != elilo ]]
180     then
181     [[ -n ${verbose} ]] && echo "multiboot specified, not updating lilo.conf"
182     cfgLilo=""
183     fi
184 niro 532
185 niro 924 if [[ -n ${cfgGrub} ]]
186     then
187     [[ -n ${verbose} ]] && echo "adding ${version} to ${grubConfig}"
188 niro 532
189 niro 924 if [[ -n ${banner} ]]
190     then
191     title="${banner} (${version})"
192     elif [ -f /etc/mageversion ]
193     then
194     title="Magellan Linux $(< /etc/mageversion) (${version})"
195     else
196     title="Magellan Linux (${version})"
197     fi
198 niro 1710 ${grubby} --grub -c ${grubConfig} \
199     --add-kernel=${bootPrefix}/${kernelName}-${version} \
200 niro 924 ${INITRD} --copy-default ${makedefault} --title "${title}" \
201     ${mbkernel:+--add-multiboot="${mbkernel}"} ${mbargs:+--mbargs="${mbargs}"} \
202     --args="root=${rootdevice} ${kernargs}" --remove-kernel="TITLE=${title}"
203 niro 532 else
204 niro 1697 [[ -n ${verbose} ]] && echo "${grubConfig} does not exist, not running grubby for grub 0.97"
205 niro 532 fi
206 niro 1697 if [[ -n ${cfgGrub2} ]]
207     then
208     [[ -n ${verbose} ]] && echo "adding ${version} to ${grub2Config}"
209 niro 532
210 niro 1697 if [[ -n ${banner} ]]
211     then
212     title="${banner} (${version})"
213     elif [ -f /etc/mageversion ]
214     then
215     title="Magellan Linux $(< /etc/mageversion) (${version})"
216     else
217     title="Magellan Linux (${version})"
218     fi
219 niro 1702 ${grubby} --grub2 -c ${grub2Config} \
220 niro 1697 --add-kernel=${bootPrefix}/${kernelName}-${version} \
221     ${INITRD} --copy-default ${makedefault} --title "${title}" \
222     ${mbkernel:+--add-multiboot="${mbkernel}"} \
223     ${mbargs:+--mbargs="${mbargs}"} \
224     --args="root=${rootdevice} ${kernargs}" --remove-kernel="TITLE=${title}"
225     else
226     [[ -n ${verbose} ]] && echo "${grub2Config} does not exist, not running grubby for grub 2"
227     fi
228     if [[ -n ${cfgGrub2Efi} ]]
229     then
230     [[ -n ${verbose} ]] && echo "adding ${version} to ${grub2EfiConfig}"
231    
232     if [[ -n ${banner} ]]
233     then
234     title="${banner} (${version})"
235     elif [ -f /etc/mageversion ]
236     then
237     title="Magellan Linux $(< /etc/mageversion) (${version})"
238     else
239     title="Magellan Linux (${version})"
240     fi
241 niro 1702 ${grubby} --grub2 -c ${grub2EfiConfig} \
242 niro 1697 --add-kernel=${bootPrefix}/${kernelName}-${version} \
243     ${INITRD} --copy-default ${makedefault} --title "${title}" \
244     ${mbkernel:+--add-multiboot="${mbkernel}"} \
245     ${mbargs:+--mbargs="${mbargs}"} \
246     --args="root=${rootdevice} ${kernargs}" --remove-kernel="TITLE=${title}"
247     else
248     [[ -n ${verbose} ]] && echo "${grub2EfiConfig} does not exist, not running grubby for grub 2 with UEFI"
249     fi
250    
251 niro 924 if [[ -n ${cfgLilo} ]]
252     then
253     [[ -n ${verbose} ]] && echo "adding ${version} to ${liloConfig}"
254 niro 532
255 niro 924 ${grubby} --add-kernel=${bootPrefix}/${kernelName}-${version} ${INITRD} \
256     --copy-default ${makedefault} --title ${version} \
257     ${mbkernel:+--add-multiboot="${mbkernel}"} ${mbargs:+--mbargs="${mbargs}"} \
258     --args="root=${rootdevice} ${kernargs}" --remove-kernel="TITLE=${version}" \
259     --${liloFlag}
260 niro 532
261 niro 924 if [[ -n ${runLilo} ]]
262     then
263     [[ -n ${verbose} ]] && echo "running ${lilo}"
264 niro 1305 if [ ! -x ${lilo} ]
265 niro 924 then
266     [[ -n ${verbose} ]] && echo "${lilo} does not exist"
267     else
268     ${lilo} > /dev/null
269     fi
270     fi
271     else
272     [[ -n ${verbose} ]] && echo "${liloConfig} does not exist, not running grubby"
273 niro 532 fi
274     }
275    
276 niro 924 remove()
277     {
278     # FIXME: is this a good heuristic to find out if we're on iSeries?
279     if [ -d /proc/iSeries ]
280     then
281     [[ -n ${verbose} ]] && echo "On an iSeries, remove img file"
282     rm -f ${bootPrefix}/${kernelName}-${version}.img 2>/dev/null
283     return
284     fi
285 niro 532
286 niro 924 if [[ -n ${cfgGrub} ]]
287     then
288     [[ -n ${verbose} ]] && echo "removing ${version} from ${grubConfig}"
289 niro 1710 ${grubby} --grub -c ${grubConfig} \
290     --remove-kernel=${bootPrefix}/${kernelName}-${version}
291 niro 924 else
292 niro 1697 [[ -n ${verbose} ]] && echo "${grubConfig} does not exist, not running grubby for grub 0.97"
293 niro 924 fi
294 niro 1697 if [[ -n ${cfgGrub2} ]]
295     then
296     [[ -n ${verbose} ]] && echo "removing ${version} from ${grub2Config}"
297     ${grubby} --grub2 -c ${grub2Config} \
298     --remove-kernel=${bootPrefix}/${kernelName}-${version}
299     else
300     [[ -n ${verbose} ]] && echo "${grub2Config} does not exist, not running grubby for grub 2"
301     fi
302     if [[ -n ${cfgGrub2Efi} ]]
303     then
304     [[ -n ${verbose} ]] && echo "removing ${version} from ${grub2EfiConfig}"
305     ${grubby} --grub2 -c ${grub2EfiConfig} \
306     --remove-kernel=${bootPrefix}/${kernelName}-${version}
307     else
308     [[ -n ${verbose} ]] && echo "${grub2EfiConfig} does not exist, not running grubby grub 2 with UEFI"
309     fi
310 niro 532
311 niro 924 if [[ -n ${cfgLilo} ]]
312     then
313     [[ -n ${verbose} ]] && echo "removing ${version} from ${liloConfig}"
314 niro 1305 ${grubby} --remove-kernel=${bootPrefix}/${kernelName}-${version} --${liloFlag}
315 niro 532
316 niro 924 if [[ -n ${runLilo} ]]
317     then
318     [[ -n ${verbose} ]] && echo "running ${lilo}"
319     if [ ! -x ${lilo} ]
320     then
321     [[ -n ${verbose} ]] && echo "${lilo} does not exist"
322     else
323     ${lilo} > /dev/null
324     fi
325     fi
326     else
327     [[ -n ${verbose} ]] && echo "${liloConfig} does not exist, not running grubby"
328 niro 532 fi
329 niro 1691
330     if [[ -n ${cfguBoot} ]]
331     then
332     [[ -n ${verbose} ]] && echo "removing ${version} from ${ubootDir}..."
333    
334     if [ -f ${ubootDir}/${ubootKList} ]
335     then
336     tmpKList=$(mktemp ${ubootDir}/${ubootKList}.XXXX)
337     curversion=$(tail -n1 ${ubootDir}/${ubootKList})
338     sed "/${version}/d" ${ubootDir}/${ubootKList} > ${tmpKList}
339     newversion=$(tail -n1 ${tmpKList})
340     if [ -f ${ubootDir}/uImage-${newversion} ] && [ -f ${ubootDir}/uInitrd-${newversion} ]
341     then
342     if [[ ${curversion} != ${newversion} ]]
343     then
344     cp -fp ${ubootDir}/uImage-${newversion} ${ubootDir}/${ubootDefaultImage}
345     if [ $? -ne 0 ]
346     then
347     [[ -n ${verbose} ]] && echo "copy uImage-${newversion} error, default kernel not replaced!" && exit
348     fi
349     cp -fp ${ubootDir}/uInitrd-${newversion} ${ubootDir}/${ubootDefaultInitrd}
350     if [ $? -ne 0 ]
351     then
352     [[ -n ${verbose} ]] && echo "copy uInitrd-${newversion} error, default Initrd not replaced!" && exit
353     fi
354     fi
355    
356     [[ -n ${verbose} ]] && echo "removing uImage-${version}"
357     if [ -f ${ubootDir}/uImage-${version} ]
358     then
359     rm -f ${ubootDir}/uImage-${version}
360     else
361     [[ -n ${verbose} ]] && echo "uImage-${version} did not exist!"
362     fi
363    
364     [[ -n ${verbose} ]] && echo "removing uInitrd-${version}"
365     if [ -f ${ubootDir}/uInitrd-${version} ]
366     then
367     rm -f ${ubootDir}/uInitrd-${version}
368     else
369     [[ -n ${verbose} ]] && echo "uInitrd-${version} did not exist!"
370     fi
371    
372     mv ${tmpKList} ${ubootDir}/${ubootKList}
373     else
374     [[ -n ${verbose} ]] && echo "uImage ${newversion} does not exist!"
375     [ -f ${tmpKList} ] && rm -f ${tmpKList}
376     fi
377     else
378     [[ -n ${verbose} ]] && echo "No previous kernel version. uBoot images not removed!"
379     fi
380     else
381     [[ -n ${verbose} ]] && echo "${ubootScript} does not exist, not modifying ${ubootDir}"
382     fi
383 niro 532 }
384    
385 niro 924 update()
386     {
387 niro 1305 if [ ! -f ${bootPrefix}/${kernelName}-${version} ]
388     then
389     [[ -n ${verbose} ]] && echo "kernel for ${version} does not exist, not running grubby"
390     return
391     fi
392    
393     INITRD=""
394     if [ -f ${initrdfile} ]
395     then
396     [[ -n ${verbose} ]] && echo "found ${initrdfile} and using it with grubby"
397     INITRD="--initrd ${initrdfile}"
398 niro 1334
399     if [[ -n ${addplymouthinitrd} ]]
400     then
401     INITRD="${INITRD} --extra-initrd ${bootPrefix}/initrd-plymouth.img"
402     fi
403 niro 1305 fi
404    
405 niro 924 if [[ -n ${cfgGrub} ]]
406     then
407     [[ -n ${verbose} ]] && echo "updating ${version} from ${grubConfig}"
408 niro 1710 ${grubby} --grub -c ${grubConfig} \
409     --update-kernel=${bootPrefix}/${kernelName}-${version} \
410 niro 1305 ${INITRD} \
411 niro 924 ${kernargs:+--args="${kernargs}"} \
412     ${removeargs:+--remove-args="${removeargs}"}
413     else
414     [[ -n ${verbose} ]] && echo "${grubConfig} does not exist, not running grubby"
415     fi
416 niro 923
417 niro 1697 if [[ -n ${cfgGrub2} ]]
418     then
419     [[ -n ${verbose} ]] && echo "updating ${version} from ${grub2Config}"
420     ${grubby} --grub2 -c ${grub2Config} \
421     --update-kernel=${bootPrefix}/${kernelName}-${version} \
422     ${INITRD} \
423     ${kernargs:+--args="${kernargs}"} \
424     ${removeargs:+--remove-args="${removeargs}"}
425     else
426     [[ -n ${verbose} ]] && echo "${grub2Config} does not exist, not running grubby"
427     fi
428    
429     if [[ -n ${cfgGrub2Efi} ]]
430     then
431     [[ -n ${verbose} ]] && echo "updating ${version} from ${grub2EfiConfig}"
432     ${grubby} --grub2 -c ${grub2EfiConfig} \
433     --update-kernel=${bootPrefix}/${kernelName}-${version} \
434     ${INITRD} \
435     ${kernargs:+--args="${kernargs}"} \
436     ${removeargs:+--remove-args="${removeargs}"}
437     else
438     [[ -n ${verbose} ]] && echo "${grub2EfiConfig} does not exist, not running grubby"
439     fi
440    
441 niro 924 if [[ -n ${cfgLilo} ]]
442     then
443     [[ -n ${verbose} ]] && echo "updating ${version} from ${liloConfig}"
444     ${grubby} --update-kernel=${bootPrefix}/${kernelName}-${version} \
445 niro 1305 ${INITRD} \
446 niro 924 ${kernargs:+--args="${kernargs}"} \
447     ${removeargs:+--remove-args="${removeargs}"} \
448     --${liloFlag}
449 niro 923
450 niro 924 if [[ -n ${runLilo} ]]
451     then
452     [[ -n ${verbose} ]] && echo "running ${lilo}"
453     if [ ! -x ${lilo} ]
454     then
455     [[ -n ${verbose} ]] && echo "${lilo} does not exist"
456     else
457     ${lilo} > /dev/null
458     fi
459     fi
460     else
461     [[ -n ${verbose} ]] && echo "${liloConfig} does not exist, not running grubby"
462 niro 923 fi
463 niro 1691
464     if [[ -n ${cfguBoot} ]]
465     then
466     [[ -n ${verbose} ]] && echo "adding $version to ${ubootDir}..."
467    
468     [[ -n ${verbose} ]] && echo "creating uImage-${version}"
469     mkimage -A arm -O linux -T kernel -C none -a 0x80008000 -e 0x80008000 \
470     -n ${version} -d ${bootPrefix}/${kernelName}-${version} ${ubootDir}/uImage-${version}
471    
472     [[ -n ${verbose} ]] && echo "creating uInitrd-${version}"
473     mkimage -A arm -O linux -T ramdisk -C none -a 0 -e 0 \
474     -n initramfs -d ${initrdfile} ${ubootDir}/uInitrd-${version}
475    
476     if [ -f ${ubootDir}/uImage-${version} ] && [ -f ${ubootDir}/uInitrd-${version} ]
477     then
478     cp -fp ${ubootDir}/uImage-${version} ${ubootDir}/${ubootDefaultImage}
479     if [ $? -ne 0 ]
480     then
481     [[ -n ${verbose} ]] && echo "copy uImage-${version} error, kernel not installed!" && exit
482     fi
483     cp -fp ${ubootDir}/uInitrd-${version} ${ubootDir}/${ubootDefaultInitrd}
484     if [ $? -ne 0 ]
485     then
486     [[ -n ${verbose} ]] && echo "copy uInitrd-${version} error, kernel not installed!" && exit
487     fi
488     echo ${version} >> ${ubootDir}/${ubootKList}
489     else
490     [[ -n ${verbose} ]] && echo "cannot make ${version} the default"
491     fi
492     else
493     [[ -n ${verbose} ]] && echo "${ubootScript} does not exist, not setting up ${ubootDir}"
494     fi
495 niro 923 }
496    
497 niro 924 mkinitrd()
498     {
499 niro 1334 if [[ -n ${dracut} ]]
500     then
501     tool="/sbin/dracut ${dracuthostonly} -f ${initrdfile} ${version}"
502     else
503     tool="/sbin/mkinitrd --allow-missing -f ${initrdfile} ${version}"
504     fi
505 niro 924 [[ -n ${verbose} ]] && echo "creating initrd ${initrdfile} using ${version}"
506 niro 1334 ${tool}
507 niro 924 rc=$?
508     if [ ${rc} != 0 ]
509     then
510     echo "mkinitrd failed" >&2
511     exit 1
512     fi
513 niro 532 }
514    
515 niro 924 rminitrd()
516     {
517     [[ -n ${verbose} ]] && echo "removing initrd ${initrdfile}"
518     [ -f ${initrdfile} ] && rm -f ${initrdfile}
519 niro 532 }
520    
521 niro 924 doDepmod()
522     {
523     [[ -n ${verbose} ]] && echo "running depmod for ${version}"
524     depmod -ae -F /boot/System.map-${version} ${version}
525 niro 532 }
526    
527 niro 924 doRmmoddep()
528     {
529     [[ -n ${verbose} ]] && echo "removing modules.dep info for ${version}"
530     [ -d /lib/modules/${version} ] && rm -f /lib/modules/${version}/modules.*
531 niro 532 }
532    
533    
534 niro 924 while [ $# -gt 0 ]
535     do
536     case $1 in
537     --mkinitrd)
538     initrd="make"
539     ;;
540 niro 532
541 niro 924 --rminitrd)
542     initrd="remove"
543     ;;
544 niro 532
545 niro 1334 --dracut)
546     dracut=--dracut
547     ;;
548    
549     --host-only)
550     dracuthostonly=-H
551     ;;
552    
553 niro 924 --initrdfile*)
554     if echo $1 | grep '=' >/dev/null
555     then
556     initrdfile=$(echo $1 | sed 's/^--initrdfile=//')
557     else
558     initrdfile=$2
559     shift
560     fi
561     ;;
562 niro 532
563 niro 924 --kernel-args*)
564     if echo $1 | grep '=' >/dev/null
565     then
566     kernargs=$(echo $1 | sed 's/^--kernel-args=//')
567     else
568     kernargs=$2
569     shift
570     fi
571     ;;
572 niro 532
573 niro 924 --remove-args*)
574     if echo $1 | grep '=' >/dev/null
575     then
576 niro 1305 removeargs=$(echo $1 | sed 's/^--remove-args=//')
577 niro 924 else
578     removeargs=$2
579     shift
580     fi
581     ;;
582 niro 923
583 niro 924 --banner*)
584     if echo $1 | grep '=' >/dev/null
585     then
586     banner=$(echo $1 | sed 's/^--banner=//')
587     else
588     banner=$2
589     shift
590     fi
591     ;;
592 niro 532
593 niro 924 --multiboot*)
594     if echo $1 |grep '=' >/dev/null
595     then
596     mbkernel=$(echo $1 | sed 's/^--multiboot=//')
597     else
598     # can't really support having an optional second arg here
599     # sorry!
600     mbkernel="/boot/xen.gz"
601     fi
602     ;;
603 niro 532
604 niro 924 --mbargs*)
605     if echo $1 |grep '=' >/dev/null
606     then
607     mbargs=$(echo $1 | sed 's/^--mbargs=//')
608     else
609     mbargs="$2"
610     shift
611     fi
612     ;;
613 niro 532
614 niro 924 --depmod)
615     moddep="make"
616     ;;
617 niro 532
618 niro 924 --rmmoddep)
619     moddep="remove"
620     ;;
621 niro 532
622 niro 924 --make-default)
623     makedefault="--make-default"
624     ;;
625 niro 532
626 niro 924 --package)
627     if echo $1 | grep '=' >/dev/null
628     then
629     package=$(echo $1 | sed 's/^--package=//')
630     else
631     package=$2
632     shift
633     fi
634     ;;
635 niro 532
636 niro 1334 --add-dracut-args)
637     adddracutargs=--add-dracut-args
638     ;;
639    
640     --add-plymouth-initrd)
641     addplymouthinitrd=--add-plymouth-initrd
642     ;;
643    
644 niro 924 -v)
645     verbose=-v
646     ;;
647 niro 532
648 niro 924 *)
649     if [[ -z ${mode} ]]
650     then
651     mode=$1
652     elif [[ -z ${version} ]]
653     then
654     version=$1
655     else
656     usage
657     fi
658     ;;
659     esac
660 niro 532
661 niro 924 shift
662 niro 532 done
663    
664     # make sure the mode is valid
665 niro 924 if [[ ${mode} != --install ]] && [[ ${mode} != --remove ]] && [[ ${mode} != --update ]]
666     then
667     usage
668 niro 532 fi
669    
670 niro 924 if [[ -z ${version} ]]
671     then
672     usage
673 niro 532 fi
674    
675 niro 924 if [ "${mode}" != "--install" -a "${makedefault}" ]
676     then
677     usage
678 niro 532 fi
679    
680 niro 924 kernelmajor=$(echo ${kernel} | cut -d . -f 1,2)
681 niro 532
682 niro 1305 # kernel image for 2.4 is kernel
683 niro 924 if [[ ${ARCH} = ppc64 ]] || [[ ${ARCH} = ppc ]]
684     then
685     if [[ ${kernelmajor} = 2.4 ]]
686     then
687     kernelName=kernel
688     fi
689 niro 532 fi
690    
691     # set the initrd file based on arch; ia64 is the only currently known oddball
692 niro 924 if [[ -z ${initrdfile} ]]
693     then
694     INITRD_NAME_PREFIX="initrd"
695 niro 1334 if [[ -n ${dracut} ]]
696     then
697     INITRD_NAME_PREFIX="initramfs"
698     fi
699 niro 923
700 niro 924 if [[ $(uname -m) = ia64 ]]
701     then
702     initrdfile="/boot/efi/EFI/redhat/${INITRD_NAME_PREFIX}-${version}.img"
703     else
704     initrdfile="/boot/${INITRD_NAME_PREFIX}-${version}.img"
705     fi
706 niro 532 fi
707 niro 924 [[ -n ${verbose} ]] && echo "initrdfile is ${initrdfile}"
708 niro 532
709 niro 1334 # add dracut i18n, keyboard and plymouth kernel args if requested
710     if [[ -n ${dracut} ]] || [[ -n ${adddracutargs} ]]
711     then
712     [ -r /etc/conf.d/keymap ] && . /etc/conf.d/keymap
713     [ -r /etc/conf.d/consolefont ] && . /etc/conf.d/consolefont
714    
715     if [[ -n ${KEYMAP} ]]
716     then
717     kernargs="${kernargs} KEYTABLE=${KEYMAP}"
718     fi
719    
720     if [[ -n ${CONSOLEFONT} ]]
721     then
722     kernargs="${kernargs} SYSFONT=${CONSOLEFONT}"
723     fi
724     fi
725    
726 niro 532 # set this as the default if we have the package and it matches
727 niro 924 if [[ ${mode} = --install ]] && [[ ${UPDATEDEFAULT} = yes ]] && [[ -n ${package} ]] &&
728     [[ -n ${DEFAULTKERNEL} ]] && [[ ${package} = ${DEFAULTKERNEL} ]]
729     then
730     makedefault="--make-default"
731     [[ -n ${verbose} ]] && echo "making it the default based on config"
732 niro 532 fi
733    
734 niro 924 if [[ ${moddep} = make ]]
735     then
736     doDepmod
737     elif [[ ${moddep} = remove ]]
738     then
739     doRmmoddep
740 niro 532 fi
741    
742 niro 924 if [[ ${initrd} = make ]]
743     then
744     mkinitrd
745     elif [[ ${initrd} = remove ]]
746     then
747     rminitrd
748 niro 532 fi
749    
750 niro 924 if [ ! -x ${grubby} ]
751     then
752     [[ -n ${verbose} ]] && echo "${grubby} does not exist"
753     exit 0
754 niro 532 fi
755    
756 niro 924 [[ -n ${grubConfig} ]] && [ -f ${grubConfig} ] && cfgGrub=1
757 niro 1697 [[ -n ${grub2Config} ]] && [ -f ${grub2Config} ] && cfgGrub2=1
758     [[ -n ${grub2EfiConfig} ]] && [ -f ${grub2EfiConfig} ] && cfgGrub2Efi=1
759 niro 924 [[ -n ${liloConfig} ]] && [ -f ${liloConfig} ] && cfgLilo=1
760 niro 532
761 niro 1691 # if we have a uBoot directory, check if it is mounted.
762     # if not, mount it. Then check if a boot script exists.
763     if [[ -n ${ubootDir} ]]
764     then
765     mountEntry=$(mount | grep ${ubootDir})
766     if [[ -z ${mountEntry} ]]
767     then
768     mount ${ubootDevice} ${ubootDir}
769     mounted=1
770     fi
771     [ -f ${ubootScript} ] && cfguBoot=1
772     fi
773    
774 niro 532 # if we have a lilo config on an x86 box, see if the default boot loader
775     # is lilo to determine if it should be run
776 niro 924 if [[ -n ${cfgLilo} ]] && [[ -n ${isx86} ]]
777     then
778     runLilo=$(${grubby} --bootloader-probe | grep lilo)
779 niro 532 fi
780    
781 niro 924 if [[ ${mode} = --install ]]
782     then
783     install
784     elif [[ ${mode} = --remove ]]
785     then
786     remove
787     elif [[ ${mode} = --update ]]
788     then
789     update
790 niro 532 fi
791    
792     exit 0

Properties

Name Value
svn:executable *