Annotation of /mcore-src/trunk/mcore-install/bin/mcore-install.sh
Parent Directory | Revision Log
Revision 1275 -
(hide annotations)
(download)
(as text)
Fri Feb 4 22:20:50 2011 UTC (13 years, 3 months ago) by niro
File MIME type: application/x-sh
File size: 17087 byte(s)
Fri Feb 4 22:20:50 2011 UTC (13 years, 3 months ago) by niro
File MIME type: application/x-sh
File size: 17087 byte(s)
- initial release
1 | niro | 1275 | #!/bin/bash |
2 | # $Id$ | ||
3 | |||
4 | MLIBDIR="/usr/lib/mcore-intall" | ||
5 | |||
6 | # images: (get ${CDIMAGENAME}) | ||
7 | source /mnt/cdrom/system/images.conf | ||
8 | |||
9 | # includes | ||
10 | source ${MLIBDIR}/functions/findhdd.sh > /dev/null | ||
11 | ### bugfix ############################### | ||
12 | cdromdev="$(echo ${cdromdev} | sed 's/ //')" | ||
13 | ######################################## | ||
14 | |||
15 | ### System/Config Version | ||
16 | VERSION="@@VERSION@@" | ||
17 | TITLE="mcore-install - ${VERSION}" | ||
18 | |||
19 | CDPATH="/mnt/cdrom" | ||
20 | INSTALLPATH="/mnt/magellan" | ||
21 | |||
22 | ### WICHTIG: anzahl lines in der autosta_lx.tar.gz -1 | ||
23 | CURRENTLINE=0 | ||
24 | #TOTALLINES=11072 # -> now in images.conf | ||
25 | |||
26 | # standart kernel opts | ||
27 | KERNELOPTS="quiet" | ||
28 | |||
29 | # default specialdevices | ||
30 | SPECIALDEVICE="" | ||
31 | |||
32 | ################################################# | ||
33 | # DIALOG BOXEN # | ||
34 | ################################################# | ||
35 | |||
36 | die() | ||
37 | { | ||
38 | ERROR=$1 | ||
39 | RETVAL=$? | ||
40 | dialog_install_failure | ||
41 | exit 1 | ||
42 | } | ||
43 | |||
44 | dialog_warning() | ||
45 | { | ||
46 | dialog \ | ||
47 | --backtitle "${TITLE}" \ | ||
48 | --colors \ | ||
49 | --defaultno \ | ||
50 | --yesno "\Z1 !!! Achtung !!! \Zn\n\n\ | ||
51 | Diese Festplatte wird unwiederruflich geloescht werden.\n\n\ | ||
52 | Soll ich wirklich fortfahren ?" 10 70 | ||
53 | RES=$? | ||
54 | if [[ ${RES} -eq 1 ]] | ||
55 | then | ||
56 | clear | ||
57 | echo "Der Vorgang wurde abgebrochen." | ||
58 | exit 1 | ||
59 | fi | ||
60 | } | ||
61 | |||
62 | dialog_setup_hdd_info() | ||
63 | { | ||
64 | local SHDD="$(echo ${HDD} | sed 's/\/dev\///')" | ||
65 | |||
66 | dialog \ | ||
67 | --colors \ | ||
68 | --title "[ Festplatten Partitionierung ]" \ | ||
69 | --backtitle "${TITLE}" \ | ||
70 | --ok-label "Weiter" \ | ||
71 | --msgbox "\nBitte legen Sie 3 Partitionen an.\n\n\ | ||
72 | [ \Z3${SHDD}1\Zn ] Typ: \Z3Linux\Zn mit ca. 50MB\n\ | ||
73 | [ \Z3${SHDD}2\Zn ] Typ: \Z3Linux Swap\Zn mit ca. 256MB\n\ | ||
74 | [ \Z3${SHDD}3\Zn ] Typ: \Z3Linux \Zn mit dem Rest (min. 256MB)\n\n\ | ||
75 | Bitte ${SHDD}1 als \Z3bootable\Zn markieren." 12 81 | ||
76 | } | ||
77 | |||
78 | dialog_setup_hdd_info_flash() | ||
79 | { | ||
80 | local SHDD="$(echo $HDD | sed 's/\/dev\///')" | ||
81 | |||
82 | dialog \ | ||
83 | --colors \ | ||
84 | --title "[ Festplatten Partitionierung ]" \ | ||
85 | --backtitle "${TITLE}" \ | ||
86 | --ok-label "Weiter" \ | ||
87 | --msgbox "\nBitte legen Sie 1 Partition an.\n\n\ | ||
88 | [ \Z3${SHDD}1\Zn ] Typ: \Z3Linux\Zn mit dem gesamten Speicher\n\ | ||
89 | Bitte ${SHDD}1 als \Z3bootable\Zn markieren." 12 81 | ||
90 | } | ||
91 | |||
92 | dialog_setup_hdd_info_auto() | ||
93 | { | ||
94 | local SHDD="$(echo $HDD | sed 's/\/dev\///')" | ||
95 | |||
96 | dialog \ | ||
97 | --colors \ | ||
98 | --title "[ Festplatten Partitionierung ]" \ | ||
99 | --backtitle "${TITLE}" \ | ||
100 | --ok-label "Weiter" \ | ||
101 | --msgbox "\nAchtung!\n\ | ||
102 | Alle Daten werden von der Disk [ \Z3${HDD}\Zn ] gelöscht!" 12 81 | ||
103 | } | ||
104 | |||
105 | dialog_setup_system_menu() | ||
106 | { | ||
107 | local i | ||
108 | |||
109 | i=$(dialog \ | ||
110 | --backtitle "${TITLE}" \ | ||
111 | --title "[ Festplatten Partitionierung ]" \ | ||
112 | --cancel-label "Abbrechen" \ | ||
113 | --ok-label "Weiter" \ | ||
114 | --stdout \ | ||
115 | --colors \ | ||
116 | --menu "\nWaehlen Sie die Installations-Methode" 14 70 5 \ | ||
117 | "1" "Automatisches Setup (Empfohlen)" \ | ||
118 | "" "" \ | ||
119 | "" "\Z1Experten Modi:\Zn" \ | ||
120 | "2" "Normale IDE-Disk (Manuell)" \ | ||
121 | "3" "Flash-Speicher (Manuell)") | ||
122 | RES=$? | ||
123 | [[ ${RES} -eq 1 ]] && return 1 | ||
124 | if [[ ${RES} -eq 0 ]] | ||
125 | then | ||
126 | case "${i}" in | ||
127 | "1") run_install_auto ;; | ||
128 | "2") run_install_normal ;; | ||
129 | "3") run_install_flash ;; | ||
130 | "") dialog_setup_system_menu;; | ||
131 | esac | ||
132 | fi | ||
133 | } | ||
134 | |||
135 | dialog_hardware_detection() | ||
136 | { | ||
137 | local i | ||
138 | local hwtmp | ||
139 | |||
140 | if [ -x $(which mktemp &> /dev/null) ] | ||
141 | then | ||
142 | hwtmp="$(mktemp)" | ||
143 | else | ||
144 | hwtmp="/tmp/hwtmp.sh" | ||
145 | fi | ||
146 | |||
147 | [[ ! -z ${installdevs} ]] && installdevs="" | ||
148 | |||
149 | echo "dialog \\" > ${hwtmp} | ||
150 | echo "--backtitle \"${TITLE}\" \\" >> ${hwtmp} | ||
151 | echo "--ok-label \"Weiter\" \\" >> ${hwtmp} | ||
152 | echo "--stdout \\" >> ${hwtmp} | ||
153 | echo "--colors \\" >> ${hwtmp} | ||
154 | echo "--msgbox \"Gefundene Hardware:\n\n \\" >> ${hwtmp} | ||
155 | echo " Festplatten:\n \\" >> ${hwtmp} | ||
156 | |||
157 | if [[ ! -z ${scsidisks} ]] | ||
158 | then | ||
159 | for i in ${scsidisks} | ||
160 | do | ||
161 | if [[ ${i} != ${cdromdev} ]] | ||
162 | then | ||
163 | echo " \\Z7SCSI: \\Z3${i}\\Zn\n \\" >> ${hwtmp} | ||
164 | installdevs="${installdevs} ${i}" | ||
165 | fi | ||
166 | done | ||
167 | fi | ||
168 | |||
169 | if [[ ! -z ${idedisks} ]] | ||
170 | then | ||
171 | for i in ${idedisks} | ||
172 | do | ||
173 | if [[ ${i} != ${cdromdev} ]] | ||
174 | then | ||
175 | echo " \\Z7IDE: \\Z3${i}\\Zn\n \\" >> ${hwtmp} | ||
176 | installdevs="${installdevs} ${i}" | ||
177 | fi | ||
178 | done | ||
179 | fi | ||
180 | |||
181 | if [[ ! -z ${cdromdev} ]] | ||
182 | then | ||
183 | echo " \n \\" >> ${hwtmp} | ||
184 | echo " \\Z7andere Laufwerke:\n \\" >> ${hwtmp} | ||
185 | echo " CDROM: \\Z3${cdromdev}\\Zn\n \\" >> ${hwtmp} | ||
186 | fi | ||
187 | |||
188 | # other devices | ||
189 | run_hardware_detection | ||
190 | case "${SPECIALDEVICE}" in | ||
191 | zotac) echo " \n\n\n \\Z2Zotac Device erkannt!\\Zn \\" >> ${hwtmp} ;; | ||
192 | *) echo " \n\n\n \\ZnStandard Device erkannt!\\Zn \\" >> ${hwtmp} ;; | ||
193 | esac | ||
194 | |||
195 | echo " \" 13 70" >> ${hwtmp} | ||
196 | chmod a+x ${hwtmp} | ||
197 | ${hwtmp} | ||
198 | |||
199 | # remove tmp file | ||
200 | if [[ -f ${hwtmp} ]] | ||
201 | then | ||
202 | rm ${hwtmp} | ||
203 | fi | ||
204 | } | ||
205 | |||
206 | dialog_setup_hdd_partitions_manuell() | ||
207 | { | ||
208 | local i | ||
209 | |||
210 | if [[ -z ${installdevs} ]] | ||
211 | then | ||
212 | dialog \ | ||
213 | --backtitle "${TITLE}" \ | ||
214 | --ok-label "Beenden" \ | ||
215 | --msgbox "Kein geeignetes Laufwerk gefunden.\nDie Installation ist fehlgeschlagen." 6 70 | ||
216 | exit 1 | ||
217 | else | ||
218 | |||
219 | echo "dialog \\" > /tmp/hddtmp.sh | ||
220 | echo "--backtitle \"${TITLE}\" \\" >> /tmp/hddtmp.sh | ||
221 | echo "--ok-label \"Weiter\" \\" >> /tmp/hddtmp.sh | ||
222 | echo "--cancel-label \"Beenden\" \\" >> /tmp/hddtmp.sh | ||
223 | echo "--stdout \\" >> /tmp/hddtmp.sh | ||
224 | echo "--menu \"Installations Laufwerk auswaehlen:\" 10 70 3 \\" >> /tmp/hddtmp.sh | ||
225 | |||
226 | for i in ${installdevs} | ||
227 | do | ||
228 | echo "\"${i}\" \"\" \\" >> /tmp/hddtmp.sh | ||
229 | done | ||
230 | echo -e "\n" >> /tmp/hddtmp.sh | ||
231 | |||
232 | chmod a+x /tmp/hddtmp.sh | ||
233 | HDD="$(/tmp/hddtmp.sh)" | ||
234 | RES=$? | ||
235 | [[ ${RES} -eq 1 ]] && return 1 | ||
236 | if [[ ${RES} -eq 0 ]] | ||
237 | then | ||
238 | dialog_setup_hdd_info | ||
239 | setup_hdd_partitions_manuell | ||
240 | fi | ||
241 | fi | ||
242 | } | ||
243 | |||
244 | dialog_setup_hdd_partitions_manuell_flash() | ||
245 | { | ||
246 | local i | ||
247 | |||
248 | if [[ -z ${installdevs} ]] | ||
249 | then | ||
250 | dialog \ | ||
251 | --backtitle "${TITLE}" \ | ||
252 | --ok-label "Beenden" \ | ||
253 | --msgbox "Kein geeignetes Laufwerk gefunden.\nDie Installation ist fehlgeschlagen." 6 70 | ||
254 | exit 1 | ||
255 | else | ||
256 | |||
257 | echo "dialog \\" > /tmp/hddtmp.sh | ||
258 | echo "--backtitle \"${TITLE}\" \\" >> /tmp/hddtmp.sh | ||
259 | echo "--ok-label \"Weiter\" \\" >> /tmp/hddtmp.sh | ||
260 | echo "--cancel-label \"Beenden\" \\" >> /tmp/hddtmp.sh | ||
261 | echo "--stdout \\" >> /tmp/hddtmp.sh | ||
262 | echo "--menu \"Installations Laufwerk auswaehlen:\" 10 70 3 \\" >> /tmp/hddtmp.sh | ||
263 | |||
264 | for i in ${installdevs} | ||
265 | do | ||
266 | echo "\"${i}\" \"\" \\" >> /tmp/hddtmp.sh | ||
267 | done | ||
268 | echo -e "\n" >> /tmp/hddtmp.sh | ||
269 | |||
270 | chmod a+x /tmp/hddtmp.sh | ||
271 | HDD="$(/tmp/hddtmp.sh)" | ||
272 | RES=$? | ||
273 | [[ ${RES} -eq 1 ]] && return 1 | ||
274 | if [[ ${RES} -eq 0 ]] | ||
275 | then | ||
276 | dialog_setup_hdd_info_flash | ||
277 | setup_hdd_partitions_manuell_flash | ||
278 | fi | ||
279 | fi | ||
280 | } | ||
281 | |||
282 | dialog_setup_hdd_partitions_auto() | ||
283 | { | ||
284 | local i | ||
285 | |||
286 | if [[ -z ${installdevs} ]] | ||
287 | then | ||
288 | dialog \ | ||
289 | --backtitle "${TITLE}" \ | ||
290 | --ok-label "Beenden" \ | ||
291 | --msgbox "Kein geeignetes Laufwerk gefunden.\nDie Installation ist fehlgeschlagen." 6 70 | ||
292 | exit 1 | ||
293 | else | ||
294 | |||
295 | echo "dialog \\" > /tmp/hddtmp.sh | ||
296 | echo "--backtitle \"${TITLE}\" \\" >> /tmp/hddtmp.sh | ||
297 | echo "--ok-label \"Weiter\" \\" >> /tmp/hddtmp.sh | ||
298 | echo "--cancel-label \"Beenden\" \\" >> /tmp/hddtmp.sh | ||
299 | echo "--stdout \\" >> /tmp/hddtmp.sh | ||
300 | echo "--menu \"Installations Laufwerk auswaehlen:\" 10 70 3 \\" >> /tmp/hddtmp.sh | ||
301 | |||
302 | for i in ${installdevs} | ||
303 | do | ||
304 | echo "\"${i}\" \"\" \\" >> /tmp/hddtmp.sh | ||
305 | done | ||
306 | echo -e "\n" >> /tmp/hddtmp.sh | ||
307 | |||
308 | chmod a+x /tmp/hddtmp.sh | ||
309 | HDD="$(/tmp/hddtmp.sh)" | ||
310 | RES=$? | ||
311 | [[ ${RES} -eq 1 ]] && return 1 | ||
312 | if [[ ${RES} -eq 0 ]] | ||
313 | then | ||
314 | dialog_setup_hdd_info_auto | ||
315 | dialog_setup_hdd_create_partitions | ||
316 | setup_hdd_partitions_auto | ||
317 | fi | ||
318 | fi | ||
319 | } | ||
320 | |||
321 | dialog_setup_hdd_create_partitions() | ||
322 | { | ||
323 | dialog \ | ||
324 | --backtitle "${TITLE}" \ | ||
325 | --infobox "Erstelle Disk Partitionen ..." 3 70 | ||
326 | } | ||
327 | |||
328 | dialog_setup_hdd_format() | ||
329 | { | ||
330 | dialog \ | ||
331 | --backtitle "${TITLE}" \ | ||
332 | --infobox "Erstelle Datei-Systeme ..." 3 70 | ||
333 | } | ||
334 | |||
335 | dialog_install_settings() | ||
336 | { | ||
337 | dialog \ | ||
338 | --backtitle "${TITLE}" \ | ||
339 | --infobox "Speichere System-Einstellungen ..." 3 70 | ||
340 | } | ||
341 | |||
342 | dialog_install_system_image() | ||
343 | { | ||
344 | dialog \ | ||
345 | --backtitle "${TITLE}" \ | ||
346 | --gauge "Kopiere System-Image ..." 6 80 | ||
347 | } | ||
348 | |||
349 | dialog_install_meter() | ||
350 | { | ||
351 | while [[ ${CURRENTLINE} != ${TOTALLINES} ]] | ||
352 | do | ||
353 | CURRENTLINE=$(grep -c . /tmp/install.log) | ||
354 | PERCENT=$(( ${CURRENTLINE} * 100 / ${TOTALLINES})) | ||
355 | echo ${PERCENT} | ||
356 | sleep 1 | ||
357 | done | ||
358 | rm -f /tmp/install.log | ||
359 | return 0 | ||
360 | } | ||
361 | |||
362 | |||
363 | dialog_install_bootsector() | ||
364 | { | ||
365 | dialog \ | ||
366 | --backtitle "${TITLE}" \ | ||
367 | --infobox "Schreibe den Bootsektor ..." 3 70 | ||
368 | } | ||
369 | |||
370 | dialog_install_successful() | ||
371 | { | ||
372 | dialog \ | ||
373 | --backtitle "${TITLE}" \ | ||
374 | --colors \ | ||
375 | --msgbox "Die Installation war \Z2erfolgreich\Zn." 5 81 | ||
376 | } | ||
377 | |||
378 | dialog_install_failure() | ||
379 | { | ||
380 | dialog \ | ||
381 | --backtitle "${TITLE}" \ | ||
382 | --colors \ | ||
383 | --msgbox "Die Installation ist \Z1Fehlgeschlagen\Zn.\n\n\ | ||
384 | Fehler bei ${ERROR}, RetVal: ${RETVAL} \ | ||
385 | " 10 81 | ||
386 | } | ||
387 | |||
388 | dialog_main() | ||
389 | { | ||
390 | METHOD=0 | ||
391 | |||
392 | while [[ ${METHOD} -le 2 ]] | ||
393 | do | ||
394 | METHOD=$(dialog \ | ||
395 | --backtitle "${TITLE}" \ | ||
396 | --no-cancel \ | ||
397 | --ok-label "Weiter" \ | ||
398 | --stdout \ | ||
399 | --menu "Konfiguration" 14 70 5 \ | ||
400 | "1" "AutoSta_LX installieren" \ | ||
401 | "2" "Uebersicht gefundener Laufwerke" \ | ||
402 | "3" "Beenden und neustarten" \ | ||
403 | "4" "Beenden und eine Shell starten") | ||
404 | RES=$? | ||
405 | [[ ${RES} -eq 1 ]] && exit 1 | ||
406 | if [[ ${RES} -eq 0 ]] | ||
407 | then | ||
408 | case ${METHOD} in | ||
409 | "1") dialog_setup_system_menu ;; | ||
410 | "2") dialog_hardware_detection ;; | ||
411 | "3") install_do_reboot ;; | ||
412 | "4") /bin/bash --login -i ;; | ||
413 | esac | ||
414 | fi | ||
415 | done | ||
416 | } | ||
417 | |||
418 | ################################################# | ||
419 | # Install Komandos # | ||
420 | ################################################# | ||
421 | run_hardware_detection() | ||
422 | { | ||
423 | # check for special devices/clients: | ||
424 | # if zotac a zotac and the disk is a removeable device, then add rootdelay to kernelcmd | ||
425 | local removable=0 | ||
426 | if [[ ! -z $(lspci -v | grep -i zotac) ]] | ||
427 | then | ||
428 | for i in /sys/block/[hs]d*/removable | ||
429 | do | ||
430 | if [[ $(< ${i}) = 1 ]] | ||
431 | then | ||
432 | removable=1 | ||
433 | fi | ||
434 | done | ||
435 | |||
436 | export KERNELOPTS="${KERNELOPTS} rootdelay=8" | ||
437 | export SPECIALDEVICE="zotac" | ||
438 | fi | ||
439 | } | ||
440 | |||
441 | setup_hdd_partitions_auto() | ||
442 | { | ||
443 | ROOTHDD="${HDD}1" | ||
444 | |||
445 | ## delete disk | ||
446 | dd if=/dev/zero of=${HDD} count=1 &> /dev/null || die | ||
447 | |||
448 | ## setup one bootable partition | ||
449 | #1. n= new disk | ||
450 | #2. p= primary disk | ||
451 | #3. 1= first partition | ||
452 | #4. ''= default sector start | ||
453 | #5. ''= defaul sector end | ||
454 | #6. a= bootable flag | ||
455 | #7. 1= boot flag for partition 1 | ||
456 | #8. w= write/quit | ||
457 | fdisk ${HDD} &> /dev/null << EOF | ||
458 | n | ||
459 | p | ||
460 | 1 | ||
461 | |||
462 | |||
463 | a | ||
464 | 1 | ||
465 | w | ||
466 | EOF | ||
467 | } | ||
468 | |||
469 | setup_hdd_partitions_manuell() | ||
470 | { | ||
471 | BOOTHDD="${HDD}1" | ||
472 | SWAPHDD="${HDD}2" | ||
473 | ROOTHDD="${HDD}3" | ||
474 | |||
475 | ## hdds partitionieren manuell | ||
476 | cfdisk ${HDD} || die | ||
477 | } | ||
478 | |||
479 | setup_hdd_partitions_manuell_flash() | ||
480 | { | ||
481 | ROOTHDD="${HDD}1" | ||
482 | |||
483 | ## hdds partitionieren manuell | ||
484 | cfdisk ${HDD} || die | ||
485 | } | ||
486 | |||
487 | setup_hdd_format() | ||
488 | { | ||
489 | mkswap ${SWAPHDD} || die | ||
490 | mke2fs -j -q ${BOOTHDD} || die | ||
491 | mke2fs -j -q ${ROOTHDD} || die | ||
492 | } | ||
493 | |||
494 | setup_hdd_format_flash() | ||
495 | { | ||
496 | mke2fs -j -q ${ROOTHDD} || die | ||
497 | } | ||
498 | |||
499 | install_mount_rootfs() | ||
500 | { | ||
501 | swapon ${SWAPHDD} || die | ||
502 | mount ${ROOTHDD} ${INSTALLPATH} || die | ||
503 | install -d ${INSTALLPATH}/boot || die | ||
504 | mount ${BOOTHDD} ${INSTALLPATH}/boot || die | ||
505 | cd ${INSTALLPATH} || die | ||
506 | } | ||
507 | |||
508 | install_mount_rootfs_flash() | ||
509 | { | ||
510 | mount ${ROOTHDD} ${INSTALLPATH} || die | ||
511 | install -d ${INSTALLPATH}/boot || die | ||
512 | cd ${INSTALLPATH} || die | ||
513 | } | ||
514 | |||
515 | install_system_image() | ||
516 | { | ||
517 | tar xvjpf ${CDPATH}/system/${CDIMAGENAME} -C ${INSTALLPATH} | ||
518 | } | ||
519 | |||
520 | install_bootsector_chroot() | ||
521 | { | ||
522 | local my_roothdd | ||
523 | |||
524 | # grubconf schreiben | ||
525 | source ${INSTALLPATH}/boot/kernelversion | ||
526 | |||
527 | # for mcore only | ||
528 | if [ -e ${INSTALLPATH}/etc/mcore_version ] | ||
529 | then | ||
530 | OLD_MCOREVER="${MCOREVER}" | ||
531 | source ${INSTALLPATH}/etc/mcore_version | ||
532 | KRNVER="mCore-${MCOREVER}" | ||
533 | MCOREVER="${OLD_MCOREVER}" | ||
534 | fi | ||
535 | |||
536 | [[ -z ${KRNVER} ]] && KRNVER="mCore" | ||
537 | [[ -z ${KRNINITRD} ]] && KRNINITRD="initrd" | ||
538 | [[ -z ${KRNIMG} ]] && KRNIMG="vmlinuz" | ||
539 | |||
540 | # uuid support | ||
541 | if is_uuid_supported | ||
542 | then | ||
543 | my_roothdd="UUID=$(get_uuid ${ROOTHDD})" | ||
544 | else | ||
545 | my_roothdd="${ROOTHDD}" | ||
546 | fi | ||
547 | |||
548 | local grubconf=${INSTALLPATH}/boot/grub/grub.conf | ||
549 | : > ${grubconf} || die | ||
550 | echo "default 0" >> ${grubconf} || die | ||
551 | echo "timeout 3" >> ${grubconf} || die | ||
552 | # using current root password | ||
553 | echo "password --md5 $(cat ${INSTALLPATH}/etc/shadow | grep root | cut -d: -f2)" >> ${grubconf} || die | ||
554 | |||
555 | echo >> ${grubconf} || die | ||
556 | echo "# normal boot" >> ${grubconf} || die | ||
557 | echo "title ${KRNVER}" >> ${grubconf} || die | ||
558 | echo "root (hd0,0)" >> ${grubconf} || die | ||
559 | echo "kernel /boot/${KRNIMG} root=${my_roothdd} ${KERNELOPTS}" >> ${grubconf} || die | ||
560 | if is_initrd_supported | ||
561 | then | ||
562 | echo "initrd /boot/${KRNINITRD}" >> ${grubconf} || die | ||
563 | fi | ||
564 | |||
565 | # bootsector schreiben chrooted schreiben (lfs/magellan) | ||
566 | cat > ${INSTALLPATH}/root/.bashrc << CHROOTEOF | ||
567 | /usr/sbin/grub --no-floppy --batch << "EOF" 1> /dev/null 2> /dev/null | ||
568 | root (hd0,0) | ||
569 | setup (hd0) | ||
570 | quit | ||
571 | EOF | ||
572 | exit 0 | ||
573 | CHROOTEOF | ||
574 | |||
575 | ## enters chroot | ||
576 | mount -t proc proc ${INSTALLPATH}/proc | ||
577 | mount -t sysfs sysfs ${INSTALLPATH}/sys | ||
578 | mount -o bind /dev ${INSTALLPATH}/dev | ||
579 | chroot ${INSTALLPATH} /bin/bash --rcfile /root/.bashrc -i | ||
580 | umount ${INSTALLPATH}/proc | ||
581 | umount ${INSTALLPATH}/sys | ||
582 | umount ${INSTALLPATH}/dev | ||
583 | rm ${INSTALLPATH}/root/.bashrc | ||
584 | } | ||
585 | |||
586 | is_initrd_supported() | ||
587 | { | ||
588 | # only generate initrds if the cmd exists | ||
589 | [[ -x ${INSTALLPATH}/sbin/mkinitrd ]] && return 0 | ||
590 | return 1 | ||
591 | } | ||
592 | |||
593 | install_initrd_chroot() | ||
594 | { | ||
595 | # only generate initrds if the cmd exists | ||
596 | is_initrd_supported || return 0 | ||
597 | |||
598 | cat > ${INSTALLPATH}/root/.bashrc << CHROOTEOF | ||
599 | echo "MODULES=\"ext3 amd74xx piix sis5513 via82cxxx sd_mod ata_piix pata_amd pata_mpiix pata_oldpiix pata_sis pata_via sata_via sata_sis sata_nv\"" > /etc/conf.d/mkinitrd | ||
600 | mkinitrd -f /boot/$(readlink /boot/initrd) $(readlink /boot/vmlinuz | sed "s:kernel-::g") > /dev/null | ||
601 | exit 0 | ||
602 | CHROOTEOF | ||
603 | |||
604 | ## enters chroot | ||
605 | mount -t proc proc ${INSTALLPATH}/proc | ||
606 | mount -t sysfs sysfs ${INSTALLPATH}/sys | ||
607 | mount -o bind /dev ${INSTALLPATH}/dev | ||
608 | chroot ${INSTALLPATH} /bin/bash --rcfile /root/.bashrc -i | ||
609 | umount ${INSTALLPATH}/proc | ||
610 | umount ${INSTALLPATH}/sys | ||
611 | umount ${INSTALLPATH}/dev | ||
612 | rm ${INSTALLPATH}/root/.bashrc | ||
613 | } | ||
614 | |||
615 | is_uuid_supported() | ||
616 | { | ||
617 | if [[ -x $(which busybox.mkinitrd &> /dev/null) ]] | ||
618 | then | ||
619 | # only detect uuids if supported | ||
620 | if [[ ! -z $(busybox.mkinitrd | grep blkid) ]] | ||
621 | then | ||
622 | return 0 | ||
623 | fi | ||
624 | fi | ||
625 | |||
626 | return 1 | ||
627 | } | ||
628 | |||
629 | get_uuid() | ||
630 | { | ||
631 | local UUID | ||
632 | local SEC_TYPE | ||
633 | local TYPE | ||
634 | |||
635 | local dev="$1" | ||
636 | [[ -z ${dev} ]] && die "no dev given" | ||
637 | |||
638 | # check if given device is already an UUID | ||
639 | if [[ ${dev/UUID=/}x != ${dev}x ]] | ||
640 | then | ||
641 | eval "${dev}" | ||
642 | else | ||
643 | eval $(busybox.mkinitrd blkid ${dev} | grep "${dev}:" | sed 's/.*:\ //') | ||
644 | fi | ||
645 | echo "${UUID}" | ||
646 | } | ||
647 | |||
648 | install_system_settings() | ||
649 | { | ||
650 | # schreibe fstab | ||
651 | if is_uuid_supported | ||
652 | then | ||
653 | echo -e "UUID=$(get_uuid ${BOOTHDD})\t/boot\text3\tnoatime,noauto\t1 1" > ${INSTALLPATH}/etc/fstab || die | ||
654 | echo -e "UUID=$(get_uuid ${ROOTHDD})\t/\text3\tnoatime\t0 0" >> ${INSTALLPATH}/etc/fstab || die | ||
655 | else | ||
656 | echo -e "${BOOTHDD}\t/boot\text3\tnoatime,noauto\t1 1" > ${INSTALLPATH}/etc/fstab || die | ||
657 | echo -e "${ROOTHDD}\t/\text3\tnoatime\t0 0" >> ${INSTALLPATH}/etc/fstab || die | ||
658 | fi | ||
659 | # not needed busybox loads all with swapon -a, even if not mentioned in fstab | ||
660 | #echo -e "UUID='$(get_uuid ${SWAPHDD})'\tswap\tswap\tpri=1\t0 0" >> ${INSTALLPATH}/etc/fstab || die | ||
661 | echo -e "proc\t/proc\tproc\tdefaults\t0 0" >> ${INSTALLPATH}/etc/fstab || die | ||
662 | echo -e "shm\t/dev/shm\ttmpfs\tdefaults\t0 0" >> ${INSTALLPATH}/etc/fstab || die | ||
663 | |||
664 | # install network config skeleton | ||
665 | echo 'ONBOOT="yes"' > ${INSTALLPATH}/etc/conf.d/net.eth0 || die | ||
666 | echo 'NETWORKING="dhcp"' >> ${INSTALLPATH}/etc/conf.d/net.eth0 || die | ||
667 | } | ||
668 | |||
669 | install_system_settings_flash() | ||
670 | { | ||
671 | # schreibe fstab | ||
672 | if is_uuid_supported | ||
673 | then | ||
674 | echo -e "UUID=$(get_uuid ${ROOTHDD})\t/\text3\tnoatime\t0 0" > ${INSTALLPATH}/etc/fstab || die | ||
675 | else | ||
676 | echo -e "${ROOTHDD}\t/\text3\tnoatime\t0 0" > ${INSTALLPATH}/etc/fstab || die | ||
677 | fi | ||
678 | echo -e "proc\t/proc\tproc\tdefaults\t0 0" >> ${INSTALLPATH}/etc/fstab || die | ||
679 | echo -e "shm\t/dev/shm\ttmpfs\tdefaults\t0 0" >> ${INSTALLPATH}/etc/fstab || die | ||
680 | } | ||
681 | |||
682 | install_umount_rootfs() | ||
683 | { | ||
684 | cd / | ||
685 | umount ${INSTALLPATH}/boot || die | ||
686 | umount ${INSTALLPATH} || die | ||
687 | swapoff ${SWAPHDD} || die | ||
688 | } | ||
689 | |||
690 | install_umount_rootfs_flash() | ||
691 | { | ||
692 | cd / | ||
693 | umount ${INSTALLPATH} || die | ||
694 | } | ||
695 | |||
696 | install_do_reboot() | ||
697 | { | ||
698 | reboot | ||
699 | } | ||
700 | |||
701 | ################################################# | ||
702 | # Install Ablauf Scripte # | ||
703 | ################################################# | ||
704 | |||
705 | run_install_normal() | ||
706 | { | ||
707 | dialog_hardware_detection | ||
708 | |||
709 | dialog_setup_hdd_partitions_manuell | ||
710 | dialog_setup_hdd_format | ||
711 | setup_hdd_format > /dev/null | ||
712 | install_mount_rootfs | ||
713 | (install_system_image > /tmp/install.log) 2> /tmp/install_errors.log | dialog_install_meter | dialog_install_system_image | ||
714 | |||
715 | dialog_install_bootsector | ||
716 | install_bootsector_chroot | ||
717 | |||
718 | dialog_install_settings | ||
719 | sleep 1 | ||
720 | install_system_settings | ||
721 | install_initrd_chroot | ||
722 | install_umount_rootfs | ||
723 | dialog_install_successful | ||
724 | } | ||
725 | |||
726 | run_install_flash() | ||
727 | { | ||
728 | dialog_hardware_detection | ||
729 | |||
730 | dialog_setup_hdd_partitions_manuell_flash | ||
731 | dialog_setup_hdd_format | ||
732 | setup_hdd_format_flash > /dev/null | ||
733 | install_mount_rootfs_flash | ||
734 | (install_system_image > /tmp/install.log) 2> /tmp/install_errors.log | dialog_install_meter | dialog_install_system_image | ||
735 | |||
736 | dialog_install_bootsector | ||
737 | install_bootsector_chroot | ||
738 | |||
739 | dialog_install_settings | ||
740 | sleep 1 | ||
741 | install_system_settings_flash | ||
742 | install_initrd_chroot | ||
743 | install_umount_rootfs_flash | ||
744 | dialog_install_successful | ||
745 | } | ||
746 | |||
747 | run_install_auto() | ||
748 | { | ||
749 | dialog_hardware_detection | ||
750 | |||
751 | dialog_setup_hdd_partitions_auto | ||
752 | dialog_setup_hdd_format | ||
753 | setup_hdd_format_flash > /dev/null | ||
754 | install_mount_rootfs_flash | ||
755 | (install_system_image > /tmp/install.log) 2> /tmp/install_errors.log | dialog_install_meter | dialog_install_system_image | ||
756 | |||
757 | dialog_install_bootsector | ||
758 | install_bootsector_chroot | ||
759 | |||
760 | dialog_install_settings | ||
761 | sleep 1 | ||
762 | install_system_settings_flash | ||
763 | install_initrd_chroot | ||
764 | install_umount_rootfs_flash | ||
765 | dialog_install_successful | ||
766 | } | ||
767 | |||
768 | dialog_main | ||
769 | |||
770 | exit 0 |