Magellan Linux

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

Parent Directory Parent Directory | Revision Log Revision Log


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