Magellan Linux

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

Parent Directory Parent Directory | Revision Log Revision Log


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