Magellan Linux

Contents of /alx-src/trunk/alxinstall-ng/bin/alxinstall-ng.sh.in

Parent Directory Parent Directory | Revision Log Revision Log


Revision 3256 - (show annotations) (download)
Thu Sep 22 09:09:21 2011 UTC (12 years, 7 months ago) by niro
File size: 21598 byte(s)
-use vesafb for rangees instead of viafb. some CLE266 Chipsets does not run with viafb
1 #!/bin/sh
2 #
3 # $Header: /home/cvsd/alx-cvs/alx-src/alxinstall-ng/bin/alxinstall-ng.sh,v 1.15 2008-06-28 00:37:45 niro Exp $
4 #
5 # AutoSta_LX Installation Script
6 #
7 # Niels Rogalla <niro@magellan-linux.de>
8 # <rogalla@augusta-bochum.de>
9 #
10 #
11 # Install Navigation Gui
12 #
13
14 #images: (get ${CDIMAGENAME})
15 source /mnt/cdrom/system/images.conf
16
17 #Includes
18 source /usr/lib/alxinstall-ng/functions/findhdd.sh > /dev/null
19 ### bugfix ###############################
20 cdromdev="$(echo ${cdromdev} | sed 's/ //')"
21 ########################################
22
23 ### System/Config Version
24 VERSION="%VERSIONTAG%"
25 TITLE="alxinstall-ng - ${VERSION}"
26
27 CDPATH="/mnt/cdrom"
28 INSTALLPATH="/mnt/magellan"
29
30 ### WICHTIG: anzahl lines in der autosta_lx.tar.gz -1
31 CURRENTLINE=0
32 #TOTALLINES=11072 # -> now in images.conf
33
34 # standard kernel opts
35 KERNELOPTS="quiet video=1024x768"
36
37 # grub options
38 GRUBLEGACYOPTS=""
39 GRUB2OPTS=""
40
41 # fdisk options
42 FDISKPARTIONBELOW256MB=0
43
44 # default specialdevices
45 SPECIALDEVICE=""
46
47 # target filesystem
48 FORMAT_FILESYSTEM="ext4"
49
50 #################################################
51 # DIALOG BOXEN #
52 #################################################
53
54 die()
55 {
56 ERROR=$1
57 RETVAL=$?
58 dialog_install_failure
59 exit 1
60 }
61
62 dialog_warning()
63 {
64 dialog \
65 --backtitle "${TITLE}" \
66 --colors \
67 --defaultno \
68 --yesno "\Z1 !!! Achtung !!! \Zn\n\n\
69 Diese Festplatte wird unwiederruflich geloescht werden.\n\n\
70 Soll ich wirklich fortfahren ?" 10 70
71 RES=$?
72 if [[ ${RES} -eq 1 ]]
73 then
74 clear
75 echo "Der Vorgang wurde abgebrochen."
76 exit 1
77 fi
78 }
79
80 dialog_setup_hdd_info()
81 {
82 local SHDD="$(echo ${HDD} | sed 's/\/dev\///')"
83
84 dialog \
85 --colors \
86 --title "[ Festplatten Partitionierung ]" \
87 --backtitle "${TITLE}" \
88 --ok-label "Weiter" \
89 --msgbox "\nBitte legen Sie 3 Partitionen an.\n\n\
90 [ \Z3${SHDD}1\Zn ] Typ: \Z3Linux\Zn mit ca. 50MB\n\
91 [ \Z3${SHDD}2\Zn ] Typ: \Z3Linux Swap\Zn mit ca. 256MB\n\
92 [ \Z3${SHDD}3\Zn ] Typ: \Z3Linux \Zn mit dem Rest (min. 256MB)\n\n\
93 Bitte ${SHDD}1 als \Z3bootable\Zn markieren." 12 81
94 }
95
96 dialog_setup_hdd_info_flash()
97 {
98 local SHDD="$(echo $HDD | sed 's/\/dev\///')"
99
100 dialog \
101 --colors \
102 --title "[ Festplatten Partitionierung ]" \
103 --backtitle "${TITLE}" \
104 --ok-label "Weiter" \
105 --msgbox "\nBitte legen Sie 1 Partition an.\n\n\
106 [ \Z3${SHDD}1\Zn ] Typ: \Z3Linux\Zn mit dem gesamten Speicher\n\
107 Bitte ${SHDD}1 als \Z3bootable\Zn markieren." 12 81
108 }
109
110 dialog_setup_hdd_info_auto()
111 {
112 local SHDD="$(echo $HDD | sed 's/\/dev\///')"
113
114 dialog \
115 --colors \
116 --title "[ Festplatten Partitionierung ]" \
117 --backtitle "${TITLE}" \
118 --ok-label "Weiter" \
119 --msgbox "\nAchtung!\n\
120 Alle Daten werden von der Disk [ \Z3${HDD}\Zn ] gelöscht!" 12 81
121 }
122
123 dialog_setup_system_menu()
124 {
125 local i
126
127 i=$(dialog \
128 --backtitle "${TITLE}" \
129 --title "[ Festplatten Partitionierung ]" \
130 --cancel-label "Abbrechen" \
131 --ok-label "Weiter" \
132 --stdout \
133 --colors \
134 --menu "\nWaehlen Sie die Installations-Methode" 14 70 5 \
135 "1" "Automatisches Setup (Empfohlen)" \
136 "" "" \
137 "" "\Z1Experten Modi:\Zn" \
138 "2" "Normale IDE-Disk (Manuell)" \
139 "3" "Flash-Speicher (Manuell)")
140 RES=$?
141 [[ ${RES} -eq 1 ]] && return 1
142 if [[ ${RES} -eq 0 ]]
143 then
144 case "${i}" in
145 "1") run_install_auto ;;
146 "2") run_install_normal ;;
147 "3") run_install_flash ;;
148 "") dialog_setup_system_menu;;
149 esac
150 fi
151 }
152
153 dialog_hardware_detection()
154 {
155 local i
156 local hwtmp
157
158 if [ -x $(which mktemp &> /dev/null) ]
159 then
160 hwtmp="$(mktemp)"
161 else
162 hwtmp="/tmp/hwtmp.sh"
163 fi
164
165 [[ ! -z ${installdevs} ]] && installdevs=""
166
167 echo "dialog \\" > ${hwtmp}
168 echo "--backtitle \"${TITLE}\" \\" >> ${hwtmp}
169 echo "--ok-label \"Weiter\" \\" >> ${hwtmp}
170 echo "--stdout \\" >> ${hwtmp}
171 echo "--colors \\" >> ${hwtmp}
172 echo "--msgbox \"Gefundene Hardware:\n\n \\" >> ${hwtmp}
173 echo " Festplatten:\n \\" >> ${hwtmp}
174
175 if [[ ! -z ${scsidisks} ]]
176 then
177 for i in ${scsidisks}
178 do
179 if [[ ${i} != ${cdromdev} ]]
180 then
181 echo " \\Z7SCSI: \\Z3${i}\\Zn\n \\" >> ${hwtmp}
182 installdevs="${installdevs} ${i}"
183 fi
184 done
185 fi
186
187 if [[ ! -z ${idedisks} ]]
188 then
189 for i in ${idedisks}
190 do
191 if [[ ${i} != ${cdromdev} ]]
192 then
193 echo " \\Z7IDE: \\Z3${i}\\Zn\n \\" >> ${hwtmp}
194 installdevs="${installdevs} ${i}"
195 fi
196 done
197 fi
198
199 if [[ ! -z ${cdromdev} ]]
200 then
201 echo " \n \\" >> ${hwtmp}
202 echo " \\Z7andere Laufwerke:\n \\" >> ${hwtmp}
203 echo " CDROM: \\Z3${cdromdev}\\Zn\n \\" >> ${hwtmp}
204 fi
205
206 # other devices
207 run_hardware_detection
208 case "${SPECIALDEVICE}" in
209 zotac) echo " \n\n\n \\Z2Zotac Device erkannt!\\Zn \\" >> ${hwtmp} ;;
210 rangee) echo " \n\n\n \\Z2Rangee Device erkannt!\\Zn \\" >> ${hwtmp} ;;
211 *) echo " \n\n\n \\ZnStandard Device erkannt!\\Zn \\" >> ${hwtmp} ;;
212 esac
213
214 echo " \" 13 70" >> ${hwtmp}
215 chmod a+x ${hwtmp}
216 ${hwtmp}
217
218 # remove tmp file
219 if [[ -f ${hwtmp} ]]
220 then
221 rm ${hwtmp}
222 fi
223 }
224
225 dialog_setup_hdd_partitions_manuell()
226 {
227 local i
228
229 if [[ -z ${installdevs} ]]
230 then
231 dialog \
232 --backtitle "${TITLE}" \
233 --ok-label "Beenden" \
234 --msgbox "Kein geeignetes Laufwerk gefunden.\nDie Installation ist fehlgeschlagen." 6 70
235 exit 1
236 else
237
238 echo "dialog \\" > /tmp/hddtmp.sh
239 echo "--backtitle \"${TITLE}\" \\" >> /tmp/hddtmp.sh
240 echo "--ok-label \"Weiter\" \\" >> /tmp/hddtmp.sh
241 echo "--cancel-label \"Beenden\" \\" >> /tmp/hddtmp.sh
242 echo "--stdout \\" >> /tmp/hddtmp.sh
243 echo "--menu \"Installations Laufwerk auswaehlen:\" 10 70 3 \\" >> /tmp/hddtmp.sh
244
245 for i in ${installdevs}
246 do
247 echo "\"${i}\" \"\" \\" >> /tmp/hddtmp.sh
248 done
249 echo -e "\n" >> /tmp/hddtmp.sh
250
251 chmod a+x /tmp/hddtmp.sh
252 HDD="$(/tmp/hddtmp.sh)"
253 RES=$?
254 [[ ${RES} -eq 1 ]] && return 1
255 if [[ ${RES} -eq 0 ]]
256 then
257 dialog_setup_hdd_info
258 setup_hdd_partitions_manuell
259 fi
260 fi
261 }
262
263 dialog_setup_hdd_partitions_manuell_flash()
264 {
265 local i
266
267 if [[ -z ${installdevs} ]]
268 then
269 dialog \
270 --backtitle "${TITLE}" \
271 --ok-label "Beenden" \
272 --msgbox "Kein geeignetes Laufwerk gefunden.\nDie Installation ist fehlgeschlagen." 6 70
273 exit 1
274 else
275
276 echo "dialog \\" > /tmp/hddtmp.sh
277 echo "--backtitle \"${TITLE}\" \\" >> /tmp/hddtmp.sh
278 echo "--ok-label \"Weiter\" \\" >> /tmp/hddtmp.sh
279 echo "--cancel-label \"Beenden\" \\" >> /tmp/hddtmp.sh
280 echo "--stdout \\" >> /tmp/hddtmp.sh
281 echo "--menu \"Installations Laufwerk auswaehlen:\" 10 70 3 \\" >> /tmp/hddtmp.sh
282
283 for i in ${installdevs}
284 do
285 echo "\"${i}\" \"\" \\" >> /tmp/hddtmp.sh
286 done
287 echo -e "\n" >> /tmp/hddtmp.sh
288
289 chmod a+x /tmp/hddtmp.sh
290 HDD="$(/tmp/hddtmp.sh)"
291 RES=$?
292 [[ ${RES} -eq 1 ]] && return 1
293 if [[ ${RES} -eq 0 ]]
294 then
295 dialog_setup_hdd_info_flash
296 setup_hdd_partitions_manuell_flash
297 fi
298 fi
299 }
300
301 dialog_setup_hdd_partitions_auto()
302 {
303 local i
304
305 if [[ -z ${installdevs} ]]
306 then
307 dialog \
308 --backtitle "${TITLE}" \
309 --ok-label "Beenden" \
310 --msgbox "Kein geeignetes Laufwerk gefunden.\nDie Installation ist fehlgeschlagen." 6 70
311 exit 1
312 else
313
314 echo "dialog \\" > /tmp/hddtmp.sh
315 echo "--backtitle \"${TITLE}\" \\" >> /tmp/hddtmp.sh
316 echo "--ok-label \"Weiter\" \\" >> /tmp/hddtmp.sh
317 echo "--cancel-label \"Beenden\" \\" >> /tmp/hddtmp.sh
318 echo "--stdout \\" >> /tmp/hddtmp.sh
319 echo "--menu \"Installations Laufwerk auswaehlen:\" 10 70 3 \\" >> /tmp/hddtmp.sh
320
321 for i in ${installdevs}
322 do
323 echo "\"${i}\" \"\" \\" >> /tmp/hddtmp.sh
324 done
325 echo -e "\n" >> /tmp/hddtmp.sh
326
327 chmod a+x /tmp/hddtmp.sh
328 HDD="$(/tmp/hddtmp.sh)"
329 RES=$?
330 [[ ${RES} -eq 1 ]] && return 1
331 if [[ ${RES} -eq 0 ]]
332 then
333 dialog_setup_hdd_info_auto
334 dialog_setup_hdd_create_partitions
335 setup_hdd_partitions_auto
336 fi
337 fi
338 }
339
340 dialog_setup_hdd_create_partitions()
341 {
342 dialog \
343 --backtitle "${TITLE}" \
344 --infobox "Erstelle Disk Partitionen ..." 3 70
345 }
346
347 dialog_setup_hdd_format()
348 {
349 dialog \
350 --backtitle "${TITLE}" \
351 --infobox "Erstelle Datei-Systeme ..." 3 70
352 }
353
354 dialog_install_settings()
355 {
356 dialog \
357 --backtitle "${TITLE}" \
358 --infobox "Speichere System-Einstellungen ..." 3 70
359 }
360
361 dialog_install_system_image()
362 {
363 dialog \
364 --backtitle "${TITLE}" \
365 --gauge "Kopiere System-Image ..." 6 80
366 }
367
368 dialog_install_meter()
369 {
370 while [[ ${CURRENTLINE} != ${TOTALLINES} ]]
371 do
372 CURRENTLINE=$(grep -c . /tmp/install.log)
373 PERCENT=$(( ${CURRENTLINE} * 100 / ${TOTALLINES}))
374 echo ${PERCENT}
375 sleep 1
376 done
377 rm -f /tmp/install.log
378 return 0
379 }
380
381
382 dialog_install_bootsector()
383 {
384 dialog \
385 --backtitle "${TITLE}" \
386 --infobox "Schreibe den Bootsektor ..." 3 70
387 }
388
389 dialog_install_successful()
390 {
391 dialog \
392 --backtitle "${TITLE}" \
393 --colors \
394 --msgbox "Die Installation war \Z2erfolgreich\Zn." 5 81
395 }
396
397 dialog_install_failure()
398 {
399 dialog \
400 --backtitle "${TITLE}" \
401 --colors \
402 --msgbox "Die Installation ist \Z1Fehlgeschlagen\Zn.\n\n\
403 Fehler bei ${ERROR}, RetVal: ${RETVAL} \
404 " 10 81
405 }
406
407 dialog_main()
408 {
409 METHOD=0
410
411 while [[ ${METHOD} -le 2 ]]
412 do
413 METHOD=$(dialog \
414 --backtitle "${TITLE}" \
415 --no-cancel \
416 --ok-label "Weiter" \
417 --stdout \
418 --menu "Konfiguration" 14 70 5 \
419 "1" "AutoSta_LX installieren" \
420 "2" "Uebersicht gefundener Laufwerke" \
421 "3" "Beenden und neustarten" \
422 "4" "Beenden und eine Shell starten")
423 RES=$?
424 [[ ${RES} -eq 1 ]] && exit 1
425 if [[ ${RES} -eq 0 ]]
426 then
427 case ${METHOD} in
428 "1") dialog_setup_system_menu ;;
429 "2") dialog_hardware_detection ;;
430 "3") install_do_reboot ;;
431 "4") /bin/bash --login -i ;;
432 esac
433 fi
434 done
435 }
436
437 #################################################
438 # Install Komandos #
439 #################################################
440 run_hardware_detection()
441 {
442 local hwinfo
443
444 hwinfo="$(hwinfo --bios --storage)"
445
446 # check for special devices/clients:
447 # if zotac a zotac and the disk is a removeable device, then add rootdelay to kernelcmd
448 local removable=0
449 if [[ ! -z $(echo "${hwinfo}" | grep -i zotac) ]]
450 then
451 for i in /sys/block/[hs]d*/removable
452 do
453 if [[ $(< ${i}) = 1 ]]
454 then
455 removable=1
456 fi
457 done
458
459 # only add this for grub legacy, grub2 detect these settings on its own
460 export GRUBLEGACYOPTS="rootdelay=8"
461 export SPECIALDEVICE="zotac"
462 fi
463
464 # check for special devices/clients:
465 # if a rangee and disk ist smaller then 256mb move partion one block further ahead
466 if [[ ! -z $(echo "${hwinfo}" | grep -i CLE266) ]]
467 then
468 # for a rangee always define partion startblock +1
469 export FDISKPARTIONBELOW256MB="1"
470 export SPECIALDEVICE="rangee"
471 export GRUBLEGACYOPTS=""
472 fi
473 }
474
475 hdd_size_below_256mb()
476 {
477 local hdd="$1"
478 local size
479 local retval
480 [[ -z ${hdd} ]] && die "Error: get_hdd_size() no \$hdd given!"
481
482 size=$(fdisk -l ${hdd} | grep "Disk.*${hdd}" | sed 's:.*,\ \(.*\)\ byte.*:\1:')
483 if [[ ${size} -le 257000000 ]]
484 then
485 retval="0"
486 else
487 retval="1"
488 fi
489
490 return "${retval}"
491 }
492
493 setup_hdd_partitions_auto()
494 {
495 ROOTHDD="${HDD}1"
496
497 # run this only if FDISKPARTITIONBELOW256MB is not already 1
498 if [[ ${FDISKPARTIONBELOW256MB} != 1 ]]
499 then
500 if hdd_size_below_256mb ${HDD}
501 then
502 FDISKPARTIONBELOW256MB=1
503 else
504 FDISKPARTIONBELOW256MB=0
505 fi
506 fi
507
508 ## delete disk
509 dd if=/dev/zero of=${HDD} count=1 &> /dev/null || die
510
511 if [[ ${FDISKPARTIONBELOW256MB} = 1 ]]
512 then
513 ## setup one bootable partition
514 #1. n= new disk
515 #2. p= primary disk
516 #3. 1= first partition
517 #4. 2= default sector start // small disk needs more space for grub2 mbr sector
518 #5. ''= defaul sector end
519 #6. a= bootable flag
520 #7. 1= boot flag for partition 1
521 #8. w= write/quit
522 fdisk ${HDD} &> /dev/null << EOF
523 n
524 p
525 1
526 2
527
528 a
529 1
530 w
531 EOF
532 else
533 ## setup one bootable partition
534 #1. n= new disk
535 #2. p= primary disk
536 #3. 1= first partition
537 #4. ''= default sector start
538 #5. ''= defaul sector end
539 #6. a= bootable flag
540 #7. 1= boot flag for partition 1
541 #8. w= write/quit
542 fdisk ${HDD} &> /dev/null << EOF
543 n
544 p
545 1
546
547
548 a
549 1
550 w
551 EOF
552 fi
553 }
554
555 setup_hdd_partitions_manuell()
556 {
557 BOOTHDD="${HDD}1"
558 SWAPHDD="${HDD}2"
559 ROOTHDD="${HDD}3"
560
561 ## hdds partitionieren manuell
562 cfdisk ${HDD} || die
563 }
564
565 setup_hdd_partitions_manuell_flash()
566 {
567 ROOTHDD="${HDD}1"
568
569 ## hdds partitionieren manuell
570 cfdisk ${HDD} || die
571 }
572
573 setup_hdd_format()
574 {
575 mkswap ${SWAPHDD} || die
576 mke2fs -j -q ${BOOTHDD} || die
577 mke2fs -j -q ${ROOTHDD} || die
578 }
579
580 setup_hdd_format_flash()
581 {
582 mke2fs -j -q ${ROOTHDD} || die
583 }
584
585 install_mount_rootfs()
586 {
587 swapon ${SWAPHDD} || die
588 mount ${ROOTHDD} ${INSTALLPATH} || die
589 install -d ${INSTALLPATH}/boot || die
590 mount ${BOOTHDD} ${INSTALLPATH}/boot || die
591 cd ${INSTALLPATH} || die
592 }
593
594 install_mount_rootfs_flash()
595 {
596 mount ${ROOTHDD} ${INSTALLPATH} || die
597 install -d ${INSTALLPATH}/boot || die
598 cd ${INSTALLPATH} || die
599 }
600
601 install_system_image()
602 {
603 tar xvjpf ${CDPATH}/system/${CDIMAGENAME} -C ${INSTALLPATH}
604 }
605
606 install_bootsector_chroot()
607 {
608 local my_roothdd
609 local grubconf=${INSTALLPATH}/boot/grub/grub.conf
610 local grub2conf=/boot/grub/grub.cfg
611
612 # check for grub2
613 if [[ -f ${INSTALLPATH}/sbin/grub-mkconfig ]]
614 then
615 # needed by grub-mkconfig on the first run
616 if [[ ! -f ${INSTALLPATH}/boot/grub/video.lst ]]
617 then
618 install -m0644 ${INSTALLPATH}/lib/grub/*/video.lst ${INSTALLPATH}/boot/grub/video.lst || die
619 fi
620
621 # set kernelopts
622 if [[ -f ${INSTALLPATH}/etc/conf.d/grub ]]
623 then
624 sed -i "s:^\(export GRUB_CMDLINE_LINUX_DEFAULT=\).*:\1\"${KERNELOPTS}\":" ${INSTALLPATH}/etc/conf.d/grub || die
625 else
626 echo "export GRUB_CMDLINE_LINUX_DEFAULT=\"${KERNELOPTS}\"" > ${INSTALLPATH}/etc/conf.d/grub || die
627 fi
628 echo 'grub-mkdevicemap' > ${INSTALLPATH}/root/.installrc || die
629 echo "LC_ALL=C grub-mkconfig -o ${grub2conf} &> /dev/null" >> ${INSTALLPATH}/root/.installrc || die
630 echo "grub-install --no-floppy ${HDD} &> /dev/null" >> ${INSTALLPATH}/root/.installrc || die
631 echo "exit 0" >> ${INSTALLPATH}/root/.installrc || die
632
633 # grub-legacy
634 else
635 ### grubconf schreiben
636 source ${INSTALLPATH}/boot/kernelversion
637
638 #for alx only
639 if [ -e ${INSTALLPATH}/etc/alx_version ]
640 then
641 OLD_ALXVER="${ALXVER}"
642 source ${INSTALLPATH}/etc/alx_version
643 KRNVER="ALX-${ALXVER}"
644 ALXVER="${OLD_ALXVER}"
645 fi
646
647 [[ -z ${KRNVER} ]] && KRNVER="AutoSta_LX"
648 [[ -z ${KRNINITRD} ]] && KRNINITRD="initrd"
649 [[ -z ${KRNIMG} ]] && KRNIMG="vmlinuz"
650
651 # uuid support
652 if is_uuid_supported
653 then
654 my_roothdd="UUID=$(get_uuid ${ROOTHDD})"
655 else
656 my_roothdd="${ROOTHDD}"
657 fi
658
659 : > ${grubconf} || die
660 echo "default 0" >> ${grubconf} || die
661 echo "timeout 3" >> ${grubconf} || die
662 # using current root password
663 echo "password --md5 $(cat ${INSTALLPATH}/etc/shadow | grep root | cut -d: -f2)" >> ${grubconf} || die
664
665 echo >> ${grubconf} || die
666 echo "# normal boot" >> ${grubconf} || die
667 echo "title ${KRNVER}" >> ${grubconf} || die
668 echo "root (hd0,0)" >> ${grubconf} || die
669 echo "kernel /boot/${KRNIMG} root=${my_roothdd} ${KERNELOPTS} ${GRUBLEGACYOPTS}" >> ${grubconf} || die
670 if is_initrd_supported
671 then
672 echo "initrd /boot/${KRNINITRD}" >> ${grubconf} || die
673 fi
674
675 echo >> ${grubconf} || die
676 echo "# admin boot" >> ${grubconf} || die
677 echo "title ${KRNVER} - Re-run hardware-detection" >> ${grubconf} || die
678 echo "lock" >> ${grubconf} || die
679 echo "root (hd0,0)" >> ${grubconf} || die
680 echo "kernel /boot/${KRNIMG} root=${my_roothdd} ${KERNELOPTS} ${GRUBLEGACYOPTS} hardware-auto-detection" >> ${grubconf} || die
681 if is_initrd_supported
682 then
683 echo "initrd /boot/${KRNINITRD}" >> ${grubconf} || die
684 fi
685
686 echo >> ${grubconf} || die
687 echo "title ${KRNVER} - Reset *all* local settings" >> ${grubconf} || die
688 echo "lock" >> ${grubconf} || die
689 echo "root (hd0,0)" >> ${grubconf} || die
690 echo "kernel /boot/${KRNIMG} root=${my_roothdd} ${KERNELOPTS} ${GRUBLEGACYOPTS} alx-reset-settings" >> ${grubconf} || die
691 if is_initrd_supported
692 then
693 echo "initrd /boot/${KRNINITRD}" >> ${grubconf} || die
694 fi
695
696 # bootsector schreiben chrooted schreiben (lfs/magellan)
697 cat > ${INSTALLPATH}/root/.installrc << CHROOTEOF
698 /usr/sbin/grub --no-floppy --batch << "EOF" 1> /dev/null 2> /dev/null
699 root (hd0,0)
700 setup (hd0)
701 quit
702 EOF
703 exit 0
704 CHROOTEOF
705 fi
706
707 ## enters chroot
708 mount -t proc proc ${INSTALLPATH}/proc
709 mount -t sysfs sysfs ${INSTALLPATH}/sys
710 mount -o bind /dev ${INSTALLPATH}/dev
711 chroot ${INSTALLPATH} /bin/bash --rcfile /root/.installrc -i
712 umount ${INSTALLPATH}/proc
713 umount ${INSTALLPATH}/sys
714 umount ${INSTALLPATH}/dev
715 rm ${INSTALLPATH}/root/.installrc
716 }
717
718 is_initrd_supported()
719 {
720 # only generate initrds if the cmd exists
721 [[ -x ${INSTALLPATH}/sbin/mkinitrd ]] && return 0
722 return 1
723 }
724
725 install_initrd_chroot()
726 {
727 # only generate initrds if the cmd exists
728 is_initrd_supported || return 0
729
730 DISKMODS="sd_mod"
731 OLDPATAMODS="amd74xx piix sis5513 via82cxxx"
732 PATAMODS="ata_piix pata_amd pata_mpiix pata_oldpiix pata_sis pata_via"
733 SATAMODS="sata_via sata_sis sata_nv"
734 DRMMODS="i915 mga nouveau r128 radeon savage sis tdfx ttm via"
735 case ${SPECIALDEVICE} in
736 zotac) FBMODS="" ;;
737 rangee) FBMODS="" ;; ## fallback to vesafb, viafb does not run on all CLE266 boards
738 *) FBMODS="uvesafb" ;;
739 esac
740
741 # install an appropriate uvesafb.conf
742 install -d ${INSTALLPATH}/etc/modprobe.d || die
743 echo "options uvesafb mode_option=1024x768-32@60 scroll=ywrap" > ${INSTALLPATH}/etc/modprobe.d/uvesafb.conf || die
744
745 # install an appropriate viafb.conf
746 echo "options viafb viafb_mode=1024x768 viafb_refresh=60" > ${INSTALLPATH}/etc/modprobe.d/viafb.conf || die
747
748 cat > ${INSTALLPATH}/root/.installrc << CHROOTEOF
749 echo "MODULES=\"${FORMAT_FILESYSTEM} ${DISKMODS} ${OLDATAMODS} ${PATAMODS} ${SATAMODS} ${DRMMODS} ${FBMODS}\"" > /etc/conf.d/mkinitrd
750 mkinitrd -f /boot/$(readlink /boot/initrd) $(readlink /boot/vmlinuz | sed "s:kernel-::g") > /dev/null
751 exit 0
752 CHROOTEOF
753
754 ## enters chroot
755 mount -t proc proc ${INSTALLPATH}/proc
756 mount -t sysfs sysfs ${INSTALLPATH}/sys
757 mount -o bind /dev ${INSTALLPATH}/dev
758 chroot ${INSTALLPATH} /bin/bash --rcfile /root/.installrc -i
759 umount ${INSTALLPATH}/proc
760 umount ${INSTALLPATH}/sys
761 umount ${INSTALLPATH}/dev
762 rm ${INSTALLPATH}/root/.installrc
763 }
764
765 is_uuid_supported()
766 {
767 if [[ -x $(which busybox.mkinitrd &> /dev/null) ]]
768 then
769 # only detect uuids if supported
770 if [[ ! -z $(busybox.mkinitrd | grep blkid) ]]
771 then
772 return 0
773 fi
774 fi
775
776 return 1
777 }
778
779 get_uuid()
780 {
781 local UUID
782 local SEC_TYPE
783 local TYPE
784
785 local dev="$1"
786 [[ -z ${dev} ]] && die "no dev given"
787
788 # check if given device is already an UUID
789 if [[ ${dev/UUID=/}x != ${dev}x ]]
790 then
791 eval "${dev}"
792 else
793 eval $(busybox.mkinitrd blkid ${dev} | grep "${dev}:" | sed 's/.*:\ //')
794 fi
795 echo "${UUID}"
796 }
797
798 install_system_settings()
799 {
800 # schreibe fstab
801 if is_uuid_supported
802 then
803 echo -e "UUID=$(get_uuid ${BOOTHDD})\t/boot\t${FORMAT_FILESYSTEM}\tnoatime,noauto\t1 1" > ${INSTALLPATH}/etc/fstab || die
804 echo -e "UUID=$(get_uuid ${ROOTHDD})\t/\t${FORMAT_FILESYSTEM}\tnoatime\t0 0" >> ${INSTALLPATH}/etc/fstab || die
805 else
806 echo -e "${BOOTHDD}\t/boot\t${FORMAT_FILESYSTEM}\tnoatime,noauto\t1 1" > ${INSTALLPATH}/etc/fstab || die
807 echo -e "${ROOTHDD}\t/\t${FORMAT_FILESYSTEM}\tnoatime\t0 0" >> ${INSTALLPATH}/etc/fstab || die
808 fi
809 # not needed busybox loads all with swapon -a, even if not mentioned in fstab
810 #echo -e "UUID='$(get_uuid ${SWAPHDD})'\tswap\tswap\tpri=1\t0 0" >> ${INSTALLPATH}/etc/fstab || die
811 echo -e "proc\t/proc\tproc\tdefaults\t0 0" >> ${INSTALLPATH}/etc/fstab || die
812 echo -e "shm\t/dev/shm\ttmpfs\tdefaults\t0 0" >> ${INSTALLPATH}/etc/fstab || die
813
814 # install network config skeleton
815 install -m0644 ${INSTALLPATH}/etc/alxconfig-ng/skel/net/net.eth0 ${INSTALLPATH}/etc/conf.d/ || die
816 }
817
818 install_system_settings_flash()
819 {
820 # schreibe fstab
821 if is_uuid_supported
822 then
823 echo -e "UUID=$(get_uuid ${ROOTHDD})\t/\t${FORMAT_FILESYSTEM}\tnoatime\t0 0" > ${INSTALLPATH}/etc/fstab || die
824 else
825 echo -e "${ROOTHDD}\t/\t${FORMAT_FILESYSTEM}\tnoatime\t0 0" > ${INSTALLPATH}/etc/fstab || die
826 fi
827 echo -e "proc\t/proc\tproc\tdefaults\t0 0" >> ${INSTALLPATH}/etc/fstab || die
828 echo -e "shm\t/dev/shm\ttmpfs\tdefaults\t0 0" >> ${INSTALLPATH}/etc/fstab || die
829 }
830
831 install_umount_rootfs()
832 {
833 cd /
834 umount ${INSTALLPATH}/boot || die
835 umount ${INSTALLPATH} || die
836 swapoff ${SWAPHDD} || die
837 }
838
839 install_umount_rootfs_flash()
840 {
841 cd /
842 umount ${INSTALLPATH} || die
843 }
844
845 install_do_reboot()
846 {
847 reboot
848 }
849
850 #################################################
851 # Install Ablauf Scripte #
852 #################################################
853
854 run_install_normal()
855 {
856 dialog_hardware_detection
857
858 dialog_setup_hdd_partitions_manuell
859 dialog_setup_hdd_format
860 setup_hdd_format > /dev/null
861 install_mount_rootfs
862 (install_system_image > /tmp/install.log) 2> /tmp/install_errors.log | dialog_install_meter | dialog_install_system_image
863
864 dialog_install_settings
865 sleep 1
866 install_system_settings
867 install_initrd_chroot
868
869 dialog_install_bootsector
870 install_bootsector_chroot
871
872 install_umount_rootfs
873 dialog_install_successful
874 }
875
876 run_install_flash()
877 {
878 dialog_hardware_detection
879
880 dialog_setup_hdd_partitions_manuell_flash
881 dialog_setup_hdd_format
882 setup_hdd_format_flash > /dev/null
883 install_mount_rootfs_flash
884 (install_system_image > /tmp/install.log) 2> /tmp/install_errors.log | dialog_install_meter | dialog_install_system_image
885
886 dialog_install_settings
887 sleep 1
888 install_system_settings_flash
889 install_initrd_chroot
890
891 dialog_install_bootsector
892 install_bootsector_chroot
893
894 install_umount_rootfs_flash
895 dialog_install_successful
896 }
897
898 run_install_auto()
899 {
900 dialog_hardware_detection
901
902 dialog_setup_hdd_partitions_auto
903 dialog_setup_hdd_format
904 setup_hdd_format_flash > /dev/null
905 install_mount_rootfs_flash
906 (install_system_image > /tmp/install.log) 2> /tmp/install_errors.log | dialog_install_meter | dialog_install_system_image
907
908 dialog_install_settings
909 sleep 1
910 install_system_settings_flash
911 install_initrd_chroot
912
913 dialog_install_bootsector
914 install_bootsector_chroot
915
916 install_umount_rootfs_flash
917 dialog_install_successful
918 }
919
920 dialog_main
921
922 exit 0