Magellan Linux

Annotation of /tags/installer-0_1_2/include/prepare_bootloader.sh

Parent Directory Parent Directory | Revision Log Revision Log


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

1 niro 773 # $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 *