/
installkernel
77 lines (58 loc) · 1.82 KB
/
installkernel
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
#!/bin/sh
#
# Arguments:
# $1 - kernel version
# $2 - kernel image file
# $3 - kernel map file
# $4 - default install path (blank if root directory)
#
#
# define input variables
#
# assume default install path is /boot
# install_path=$4
#
kver=$1
kimg=$2
kmap=$3
vmlinuz=/boot/vmlinuz-$kver
sysmap=/boot/System.map-$kver
kconfig=/boot/kconfig-$kver
initramfs=/boot/initramfs-$kver.img
#
# check for previous versions
#
if [ -f $vmlinuz ]; then cp $vmlinuz $vmlinuz.old; fi
if [ -f $sysmap ]; then cp $sysmap $sysmap.old; fi
if [ -f $kconfig ]; then cp $kconfig $kconfig.old; fi
#
# install the image and map files
#
cat $kimg > $vmlinuz
cp $kmap $sysmap
cp $(dirname "$kmap")/.config $kconfig
mkinitcpio -v -g $initramfs -k $kver
#
# Check for grub, then lilo
#
grub_menu=/boot/grub/menu.lst
grub_update_conf=/etc/grub-update.conf
if [ -f $grub_menu ] && [ -f $grub_update_conf ]; then
source $grub_update_conf
# don't update it if it already exists
if [ 0 -eq $(grep -sc "vmlinuz-$kver" $grub_menu) ]; then
cp $grub_menu $grub_menu.bck
# off course we'll want the newly compiles one to be the default
default=$(grep -sc "^title" $grub_menu)
sed -i "s/^default *[0-9]/default $default/" $grub_menu
echo >> $grub_menu
echo "# Autogenerated by kernel $kver" >> $grub_menu
echo "title linux $kver" >> $grub_menu
echo "root $grub_root_loc" >> $grub_menu
echo "kernel $grub_boot_loc/vmlinuz-$kver $kopts" >> $grub_menu
echo "initrd $grub_boot_loc/initramfs-$kver.img" >> $grub_menu
echo >> $grub_menu
fi
elif [ -x /sbin/lilo ]; then
/sbin/lilo -v
fi