Contents of /trunk/installer/include/prepare_bootloader.sh
Parent Directory | Revision Log
Revision 775 -
(show annotations)
(download)
(as text)
Wed Sep 24 11:21:07 2008 UTC (16 years ago) by niro
File MIME type: application/x-sh
File size: 3267 byte(s)
Wed Sep 24 11:21:07 2008 UTC (16 years ago) by niro
File MIME type: application/x-sh
File size: 3267 byte(s)
- bootlogo now resides in data/
1 | # $Header: /home/cvsd/magellan-cvs/magellan-src/installer/include/prepare_bootloader.sh,v 1.3 2008-09-24 11:21:07 niro Exp $ |
2 | |
3 | source include/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 data/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 | * |