Annotation of /trunk/installer/include/prepare_bootloader.sh
Parent Directory | Revision Log
Revision 774 -
(hide annotations)
(download)
(as text)
Wed Sep 24 11:07:50 2008 UTC (16 years ago) by niro
File MIME type: application/x-sh
File size: 3262 byte(s)
Wed Sep 24 11:07:50 2008 UTC (16 years ago) by niro
File MIME type: application/x-sh
File size: 3262 byte(s)
-moved helper-scripts into include/ directory
1 | niro | 774 | # $Header: /home/cvsd/magellan-cvs/magellan-src/installer/include/prepare_bootloader.sh,v 1.2 2008-09-24 11:07:50 niro Exp $ |
2 | niro | 773 | |
3 | niro | 774 | source include/hwdetection.sh |
4 | niro | 773 | |
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 | * |