Magellan Linux

Annotation of /mage/branches/alx-0_6_0/include/alx.minc

Parent Directory Parent Directory | Revision Log Revision Log


Revision 2731 - (hide annotations) (download)
Thu Aug 11 14:30:15 2011 UTC (12 years, 9 months ago) by niro
File size: 3986 byte(s)
-use check for special hardware for grub2 too
1 niro 1921 # alx specific functions
2    
3     add_conf_prot()
4     {
5     local i
6    
7     for i in $@
8     do
9     export CONFIG_PROTECT="${CONFIG_PROTECT} ${i}"
10     done
11     }
12    
13     add_conf_prot_mask()
14     {
15     local i
16    
17     for i in $@
18     do
19     export CONFIG_PROTECT_MASK="${CONFIG_PROTECT_MASK} ${i}"
20     done
21     }
22    
23 niro 2092 add_conf_prot_ignore()
24     {
25     local i
26    
27     for i in $@
28     do
29     export CONFIG_PROTECT_IGNORE="${CONFIG_PROTECT_IGNORE} ${i}"
30     done
31     }
32    
33 niro 1921 # updates /boot/grub/grub.conf with given params
34     # example: alx_grub_update kernel-image-name description
35     alx_grub_update()
36     {
37     local KERNEL_IMAGE
38     local KERNEL_DESCRIPTION
39     local i
40     local rootfs
41     local grubroot
42 niro 2200 local grubopts
43 niro 1921 local OLD_IFS
44     local grubconf="/boot/grub/grub.conf"
45 niro 2563 local grub2conf="/boot/grub/grub.cfg"
46 niro 2517 local pass
47 niro 1921
48     KERNEL_IMAGE="$1"
49     KERNEL_DESCRIPTION="$2"
50    
51     # some checks
52     if [ -z "${KERNEL_IMAGE}" ]
53     then
54     echo "At least a kernel-image must be given"
55     return 1
56     fi
57    
58     [ -z "${KERNEL_DESCRIPTION}" ] && KERNEL_DESCRIPTION="${KERNEL_IMAGE}"
59    
60 niro 2731 # check for special hardware
61     if [[ -x $(which hwinfo) ]]
62     then
63     # zotac devices
64     if [[ ! -z $(hwinfo --bios --storage | grep -i zotac) ]]
65     then
66     grubopts="rootdelay=8"
67     echo "Special device 'ZOTAC' detected!"
68     fi
69     fi
70    
71 niro 2563 # grub2
72     if [[ -x /sbin/grub-mkconfig ]]
73 niro 1921 then
74 niro 2563 # create a device.map
75     if [[ ! -f /boot/grub/device.map ]]
76     then
77     grub-mkdevicemap
78     fi
79 niro 1921
80 niro 2563 # needed by grub-mkconfig on the first run
81     if [[ ! -f /boot/grub/video.lst ]]
82     then
83     install -m0644 /$(mlibdir)/grub/*/video.lst /boot/grub/video.lst
84     fi
85 niro 1921
86 niro 2731 # fix grubconfig for special devices
87     if [[ -n ${grubopts} ]]
88     then
89     sed -i "s:^\(export GRUB_CMDLINE_LINUX=\).*:\1\"${grubopts}\":" /etc/conf.d/grub
90     fi
91    
92 niro 2563 # update grub.cfg
93     LC_ALL=C grub-mkconfig -o ${grub2conf}
94 niro 1921
95 niro 2563 # install bootloader to disk
96     #local bootpartition="$(df -h /boot |(read; awk '{print $1; exit}'))"
97     local bootdisk
98     bootdisk="$(grub-probe --target=drive /boot | sed 's:(\(.*\),.*):(\1):')"
99    
100     # Generate core.img, but don't let it be installed in boot sector
101     grub-install --no-floppy "${bootdisk}"
102    
103     # grub legacy
104     else
105    
106     if [ ! -f ${grubconf} ]
107 niro 2200 then
108 niro 2563 echo "${grubconf} not found"
109     return 1
110 niro 2200 fi
111 niro 2563
112     # first of all get the first rootfs instance
113     for i in $(< ${grubconf})
114     do
115     rootfs="$(echo ${i} | grep root=)"
116     [[ -n ${rootfs} ]] && break
117     done
118    
119     # then get the grub-root
120     OLD_IFS="$IFS"
121     IFS=$'\n'
122     for i in $(< ${grubconf})
123     do
124     grubroot="$(echo ${i} | grep 'root (' | cut -d' ' -f2)"
125     [[ -n ${grubroot} ]] && break
126     done
127     IFS="${OLD_IFS}"
128    
129     # fix description
130     : > ${grubconf}
131     echo "default 0" >> ${grubconf}
132     echo "timeout 3" >> ${grubconf}
133     # using roots current password if one was set
134     pass="$(grep '^root:' /etc/shadow | cut -d: -f2)"
135     # or fallback to a default password
136     [[ -z ${pass} ]] && pass="$1$oc/rCMuc$ZodLQSj6N5zYIJtOBg.RT/"
137     echo "password --md5 ${pass}" >> ${grubconf}
138     echo >> ${grubconf}
139     echo "# normal boot" >> ${grubconf}
140     echo "title ${KERNEL_DESCRIPTION}" >> ${grubconf}
141     echo "root ${grubroot}" >> ${grubconf}
142     echo "kernel ${grubroot}/boot/${KERNEL_IMAGE} ${rootfs} quiet ${grubopts}" >> ${grubconf}
143     echo >> ${grubconf}
144     echo "# admin boots" >> ${grubconf}
145     echo "title ${KERNEL_DESCRIPTION} - Re-run hardware-detection" >> ${grubconf}
146     echo "lock" >> ${grubconf}
147     echo "root ${grubroot}" >> ${grubconf}
148     echo "kernel ${grubroot}/boot/${KERNEL_IMAGE} ${rootfs} quiet ${grubopts} hardware-auto-detection" >> ${grubconf}
149     echo >> ${grubconf}
150     echo "title ${KERNEL_DESCRIPTION} - Reset *all* local settings" >> ${grubconf}
151     echo "lock" >> ${grubconf}
152     echo "root ${grubroot}" >> ${grubconf}
153     echo "kernel ${grubroot}/boot/${KERNEL_IMAGE} ${rootfs} quiet ${grubopts} alx-reset-settings" >> ${grubconf}
154 niro 2200 fi
155 niro 1921 }
156    
157 niro 2067 ## compat
158     alx_grub_update_new()
159 niro 1921 {
160 niro 2067 echo -e "${COLYELLOW}alx_grub_update_new() is deprecated - please only use alx_grub_update() from now on${COLDEFAULT}"
161     alx_grub_update
162     echo -e "${COLYELLOW}alx_grub_update_new() is deprecated - please only use alx_grub_update() from now on${COLDEFAULT}"
163 niro 1921 }