Magellan Linux

Contents of /trunk/installer/include/prepare_bootloader.sh

Parent Directory Parent Directory | Revision Log Revision Log


Revision 773 - (show annotations) (download) (as text)
Wed Sep 24 10:54:00 2008 UTC (15 years, 7 months ago) by niro
File MIME type: application/x-sh
File size: 3254 byte(s)
-moved helper-scripts into include/ directory

1 # $Header: /home/cvsd/magellan-cvs/magellan-src/installer/include/prepare_bootloader.sh,v 1.1 2008-09-24 10:54:00 niro Exp $
2
3 source hwdetection.sh
4
5 : ${INSTALL_ROOT="/mnt/magellan"}
6
7 create_device_map()
8 {
9 local chroot
10
11 [[ ! -z ${INSTALL_ROOT} ]] && chroot=chrooted
12
13 # create device.map
14 ${chroot} grub --batch --no-floppy --no-config-file --device-map=/boot/grub/device.map </dev/null &>/dev/null
15 }
16
17 install_grub()
18 {
19 local chroot
20
21 [[ ! -z ${INSTALL_ROOT} ]] && chroot=chrooted
22
23 # update grub
24 ${chroot} grub --batch --no-floppy << EOF 1> /dev/null 2> /dev/null
25 root $(convert_device ${PARTITION_DISK_BOOT})
26 setup $(convert_device ${PARTITION_DISK_BOOT} | sed "s:,[0-9]::")
27 quit
28 EOF
29
30 return 0
31 }
32
33 convert_device()
34 {
35 local device="$1"
36 local root_part=
37
38 # extract device type (block) and major number for root drive
39 local major_minor=$(ls -Ll ${device} | awk '{if ($6 < 64) printf("%c%d0", $1, $5); else printf("%c%d1", $1, $5)}')
40
41 # find the matching BIOS device
42 for bios_drive in $(grep -v '^#' ${INSTALL_ROOT}/boot/grub/device.map | awk '{print $2}')
43 do
44 bios_major_minor=$(ls -Ll ${bios_drive} 2>/dev/null | awk '{if ($6 < 64) printf("%c%d0", $1, $5); else printf("%c%d1", $1, $5)}')
45
46 if [[ ${major_minor} = ${bios_major_minor} ]]
47 then
48 # we found it
49 root_drive=$(grep ${bios_drive} ${INSTALL_ROOT}/boot/grub/device.map | awk '{print $1}')
50 root_part=$(ls -Ll ${device} | awk '{print $6}')
51 root_part=$(( ${root_part} % 16 - 1 ))
52 break
53 fi
54 done
55
56 drive=$(echo ${root_drive} | sed "s:)$:,${root_part}):")
57 echo ${drive}
58 }
59
60 add_grub_conf()
61 {
62 echo "$@" >> ${INSTALL_ROOT}/boot/grub/grub.conf
63 }
64
65 create_grub_conf()
66 {
67 local splashimage
68
69 if [[ -z ${PARTITION_DISK_BOOT} ]]
70 then
71 export PARTITION_DISK_BOOT="${PARTITION_DISK_ROOT}"
72 fi
73
74 # create an empty one
75 :> ${INSTALL_ROOT}/boot/grub/grub.conf
76
77 add_grub_conf "default 0"
78 add_grub_conf "timeout 10"
79 add_grub_conf ""
80
81 # our splashimage
82 splashimage="magellan.xpm.gz"
83
84 # forcefully use gfxsplash
85 [[ ! -f ${INSTALL_ROOT}/boot/${splashimage} ]] && cp magellan-black2.xpm.gz ${INSTALL_ROOT}/boot/${splashimage}
86
87 if [[ -f ${INSTALL_ROOT}/boot/${splashimage} ]]
88 then
89 add_grub_conf "# splash image"
90 # old logo
91 #add_grub_conf "splashimage /boot/magellan.xpm.gz"
92 #add_grub_conf "foreground FFFFFF"
93 #add_grub_conf "background 1B456B"
94
95 # the new one
96 add_grub_conf "splashimage $(convert_device ${PARTITION_DISK_BOOT})/boot/${splashimage}"
97 add_grub_conf "foreground FFFFFF"
98 add_grub_conf "background 253861"
99
100 add_grub_conf ""
101 else
102 add_grub_conf "# some pretty colors"
103 add_grub_conf "color cyan/blue white/blue"
104 add_grub_conf ""
105 fi
106
107 add_grub_conf "title Magellan-Linux $(< ${INSTALL_ROOT}/etc/mageversion) ($(readlink ${INSTALL_ROOT}/boot/vmlinuz | sed s:kernel-::))"
108 add_grub_conf "root $(convert_device ${PARTITION_DISK_BOOT})"
109 add_grub_conf "kernel /boot/$(readlink ${INSTALL_ROOT}/boot/vmlinuz) root=${PARTITION_DISK_ROOT}"
110 add_grub_conf "initrd /boot/$(readlink ${INSTALL_ROOT}/boot/initrd)"
111
112 # add an empty line as spacer between other boot entries
113 add_grub_conf ""
114 }
115
116 install_bootloader()
117 {
118 create_device_map >&2
119 echo 25
120 create_grub_conf >&2
121 echo 50
122 create_initrd >&2
123 echo 75
124 install_grub >&2
125 echo 100
126 }
127
128 install_bootloader

Properties

Name Value
svn:executable *