Annotation of /mage/trunk/include/alx.minc
Parent Directory | Revision Log
Revision 2735 -
(hide annotations)
(download)
Thu Aug 11 14:51:53 2011 UTC (13 years, 1 month ago) by niro
Original Path: mage/branches/alx-0_6_0/include/alx.minc
File size: 3834 byte(s)
Thu Aug 11 14:51:53 2011 UTC (13 years, 1 month ago) by niro
Original Path: mage/branches/alx-0_6_0/include/alx.minc
File size: 3834 byte(s)
-let grub2 search for special boot params for zotac devices and co, hwinfo stuff only needed for grub-legacy
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 | 2563 | # grub2 |
61 | if [[ -x /sbin/grub-mkconfig ]] | ||
62 | niro | 1921 | then |
63 | niro | 2563 | # create a device.map |
64 | if [[ ! -f /boot/grub/device.map ]] | ||
65 | then | ||
66 | grub-mkdevicemap | ||
67 | fi | ||
68 | niro | 1921 | |
69 | niro | 2563 | # needed by grub-mkconfig on the first run |
70 | if [[ ! -f /boot/grub/video.lst ]] | ||
71 | then | ||
72 | install -m0644 /$(mlibdir)/grub/*/video.lst /boot/grub/video.lst | ||
73 | fi | ||
74 | niro | 1921 | |
75 | niro | 2563 | # update grub.cfg |
76 | LC_ALL=C grub-mkconfig -o ${grub2conf} | ||
77 | niro | 1921 | |
78 | niro | 2563 | # install bootloader to disk |
79 | #local bootpartition="$(df -h /boot |(read; awk '{print $1; exit}'))" | ||
80 | local bootdisk | ||
81 | bootdisk="$(grub-probe --target=drive /boot | sed 's:(\(.*\),.*):(\1):')" | ||
82 | |||
83 | # Generate core.img, but don't let it be installed in boot sector | ||
84 | grub-install --no-floppy "${bootdisk}" | ||
85 | |||
86 | # grub legacy | ||
87 | else | ||
88 | |||
89 | if [ ! -f ${grubconf} ] | ||
90 | niro | 2200 | then |
91 | niro | 2563 | echo "${grubconf} not found" |
92 | return 1 | ||
93 | niro | 2200 | fi |
94 | niro | 2563 | |
95 | # first of all get the first rootfs instance | ||
96 | for i in $(< ${grubconf}) | ||
97 | do | ||
98 | rootfs="$(echo ${i} | grep root=)" | ||
99 | [[ -n ${rootfs} ]] && break | ||
100 | done | ||
101 | |||
102 | # then get the grub-root | ||
103 | OLD_IFS="$IFS" | ||
104 | IFS=$'\n' | ||
105 | for i in $(< ${grubconf}) | ||
106 | do | ||
107 | grubroot="$(echo ${i} | grep 'root (' | cut -d' ' -f2)" | ||
108 | [[ -n ${grubroot} ]] && break | ||
109 | done | ||
110 | IFS="${OLD_IFS}" | ||
111 | |||
112 | niro | 2735 | # check for special hardware |
113 | if [[ -x $(which hwinfo) ]] | ||
114 | then | ||
115 | # zotac devices | ||
116 | if [[ ! -z $(hwinfo --bios --storage | grep -i zotac) ]] | ||
117 | then | ||
118 | grubopts="rootdelay=8" | ||
119 | echo "Special device 'ZOTAC' detected!" | ||
120 | fi | ||
121 | fi | ||
122 | |||
123 | niro | 2563 | # fix description |
124 | : > ${grubconf} | ||
125 | echo "default 0" >> ${grubconf} | ||
126 | echo "timeout 3" >> ${grubconf} | ||
127 | # using roots current password if one was set | ||
128 | pass="$(grep '^root:' /etc/shadow | cut -d: -f2)" | ||
129 | # or fallback to a default password | ||
130 | [[ -z ${pass} ]] && pass="$1$oc/rCMuc$ZodLQSj6N5zYIJtOBg.RT/" | ||
131 | echo "password --md5 ${pass}" >> ${grubconf} | ||
132 | echo >> ${grubconf} | ||
133 | echo "# normal boot" >> ${grubconf} | ||
134 | echo "title ${KERNEL_DESCRIPTION}" >> ${grubconf} | ||
135 | echo "root ${grubroot}" >> ${grubconf} | ||
136 | echo "kernel ${grubroot}/boot/${KERNEL_IMAGE} ${rootfs} quiet ${grubopts}" >> ${grubconf} | ||
137 | echo >> ${grubconf} | ||
138 | echo "# admin boots" >> ${grubconf} | ||
139 | echo "title ${KERNEL_DESCRIPTION} - Re-run hardware-detection" >> ${grubconf} | ||
140 | echo "lock" >> ${grubconf} | ||
141 | echo "root ${grubroot}" >> ${grubconf} | ||
142 | echo "kernel ${grubroot}/boot/${KERNEL_IMAGE} ${rootfs} quiet ${grubopts} hardware-auto-detection" >> ${grubconf} | ||
143 | echo >> ${grubconf} | ||
144 | echo "title ${KERNEL_DESCRIPTION} - Reset *all* local settings" >> ${grubconf} | ||
145 | echo "lock" >> ${grubconf} | ||
146 | echo "root ${grubroot}" >> ${grubconf} | ||
147 | echo "kernel ${grubroot}/boot/${KERNEL_IMAGE} ${rootfs} quiet ${grubopts} alx-reset-settings" >> ${grubconf} | ||
148 | niro | 2200 | fi |
149 | niro | 1921 | } |
150 | |||
151 | niro | 2067 | ## compat |
152 | alx_grub_update_new() | ||
153 | niro | 1921 | { |
154 | niro | 2067 | echo -e "${COLYELLOW}alx_grub_update_new() is deprecated - please only use alx_grub_update() from now on${COLDEFAULT}" |
155 | alx_grub_update | ||
156 | echo -e "${COLYELLOW}alx_grub_update_new() is deprecated - please only use alx_grub_update() from now on${COLDEFAULT}" | ||
157 | niro | 1921 | } |