Magellan Linux

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 2573 - (show annotations) (download)
Mon Jul 4 21:24:46 2011 UTC (12 years, 10 months ago) by niro
File size: 19702 byte(s)
-fixed grub2 handling
-do not overwrite .bashrc -> using .installrc
-split modules in proper variabls and install kms/drm and framebuffer modules + modprobe configs to enable bootsplash

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=/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 ${INSTALLPATH}/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/.installrc || die
554 echo "LC_ALL=C grub-mkconfig -o ${grub2conf} &> /dev/null" >> ${INSTALLPATH}/root/.installrc || die
555 echo "grub-install --no-floppy ${HDD} &> /dev/null" >> ${INSTALLPATH}/root/.installrc || die
556 echo "exit 0" >> ${INSTALLPATH}/root/.installrc || die
557
558 # grub-legacy
559 else
560 ### grubconf schreiben
561 source ${INSTALLPATH}/boot/kernelversion
562
563 #for alx only
564 if [ -e ${INSTALLPATH}/etc/alx_version ]
565 then
566 OLD_ALXVER="${ALXVER}"
567 source ${INSTALLPATH}/etc/alx_version
568 KRNVER="ALX-${ALXVER}"
569 ALXVER="${OLD_ALXVER}"
570 fi
571
572 [[ -z ${KRNVER} ]] && KRNVER="AutoSta_LX"
573 [[ -z ${KRNINITRD} ]] && KRNINITRD="initrd"
574 [[ -z ${KRNIMG} ]] && KRNIMG="vmlinuz"
575
576 # uuid support
577 if is_uuid_supported
578 then
579 my_roothdd="UUID=$(get_uuid ${ROOTHDD})"
580 else
581 my_roothdd="${ROOTHDD}"
582 fi
583
584 : > ${grubconf} || die
585 echo "default 0" >> ${grubconf} || die
586 echo "timeout 3" >> ${grubconf} || die
587 # using current root password
588 echo "password --md5 $(cat ${INSTALLPATH}/etc/shadow | grep root | cut -d: -f2)" >> ${grubconf} || die
589
590 echo >> ${grubconf} || die
591 echo "# normal boot" >> ${grubconf} || die
592 echo "title ${KRNVER}" >> ${grubconf} || die
593 echo "root (hd0,0)" >> ${grubconf} || die
594 echo "kernel /boot/${KRNIMG} root=${my_roothdd} ${KERNELOPTS}" >> ${grubconf} || die
595 if is_initrd_supported
596 then
597 echo "initrd /boot/${KRNINITRD}" >> ${grubconf} || die
598 fi
599
600 echo >> ${grubconf} || die
601 echo "# admin boot" >> ${grubconf} || die
602 echo "title ${KRNVER} - Re-run hardware-detection" >> ${grubconf} || die
603 echo "lock" >> ${grubconf} || die
604 echo "root (hd0,0)" >> ${grubconf} || die
605 echo "kernel /boot/${KRNIMG} root=${my_roothdd} ${KERNELOPTS} hardware-auto-detection" >> ${grubconf} || die
606 if is_initrd_supported
607 then
608 echo "initrd /boot/${KRNINITRD}" >> ${grubconf} || die
609 fi
610
611 echo >> ${grubconf} || die
612 echo "title ${KRNVER} - Reset *all* local settings" >> ${grubconf} || die
613 echo "lock" >> ${grubconf} || die
614 echo "root (hd0,0)" >> ${grubconf} || die
615 echo "kernel /boot/${KRNIMG} root=${my_roothdd} ${KERNELOPTS} alx-reset-settings" >> ${grubconf} || die
616 if is_initrd_supported
617 then
618 echo "initrd /boot/${KRNINITRD}" >> ${grubconf} || die
619 fi
620
621 # bootsector schreiben chrooted schreiben (lfs/magellan)
622 cat > ${INSTALLPATH}/root/.installrc << CHROOTEOF
623 /usr/sbin/grub --no-floppy --batch << "EOF" 1> /dev/null 2> /dev/null
624 root (hd0,0)
625 setup (hd0)
626 quit
627 EOF
628 exit 0
629 CHROOTEOF
630 fi
631
632 ## enters chroot
633 mount -t proc proc ${INSTALLPATH}/proc
634 mount -t sysfs sysfs ${INSTALLPATH}/sys
635 mount -o bind /dev ${INSTALLPATH}/dev
636 chroot ${INSTALLPATH} /bin/bash --rcfile /root/.installrc -i
637 umount ${INSTALLPATH}/proc
638 umount ${INSTALLPATH}/sys
639 umount ${INSTALLPATH}/dev
640 rm ${INSTALLPATH}/root/.installrc
641 }
642
643 is_initrd_supported()
644 {
645 # only generate initrds if the cmd exists
646 [[ -x ${INSTALLPATH}/sbin/mkinitrd ]] && return 0
647 return 1
648 }
649
650 install_initrd_chroot()
651 {
652 # only generate initrds if the cmd exists
653 is_initrd_supported || return 0
654
655 DISKMODS="sd_mod"
656 OLDPATAMODS="amd74xx piix sis5513 via82cxxx"
657 PATAMODS="ata_piix pata_amd pata_mpiix pata_oldpiix pata_sis pata_via"
658 SATAMODS="sata_via sata_sis sata_nv"
659 DRMMODS="i915 mga nouveau r128 radeon savage sis tdfx ttm via"
660 FBMODS="uvesafb"
661
662 # install an appropriate uvesafb.conf
663 install -d ${INSTALLPATH}/etc/modprobe.d || die
664 echo "options uvesafb mode_option=1024x768-32@60 scroll=ywrap" > ${INSTALLPATH}/etc/modprobe.d/uvesafb.conf || die
665
666 cat > ${INSTALLPATH}/root/.installrc << CHROOTEOF
667 echo "MODULES=\"${FORMAT_FILESYSTEM} ${DISKMODS} ${OLDATAMODS} ${PATAMODS} ${SATAMODS} ${DRMMODS} ${FBMODS}\"" > /etc/conf.d/mkinitrd
668 mkinitrd -f /boot/$(readlink /boot/initrd) $(readlink /boot/vmlinuz | sed "s:kernel-::g") > /dev/null
669 exit 0
670 CHROOTEOF
671
672 ## enters chroot
673 mount -t proc proc ${INSTALLPATH}/proc
674 mount -t sysfs sysfs ${INSTALLPATH}/sys
675 mount -o bind /dev ${INSTALLPATH}/dev
676 chroot ${INSTALLPATH} /bin/bash --rcfile /root/.installrc -i
677 umount ${INSTALLPATH}/proc
678 umount ${INSTALLPATH}/sys
679 umount ${INSTALLPATH}/dev
680 rm ${INSTALLPATH}/root/.installrc
681 }
682
683 is_uuid_supported()
684 {
685 if [[ -x $(which busybox.mkinitrd &> /dev/null) ]]
686 then
687 # only detect uuids if supported
688 if [[ ! -z $(busybox.mkinitrd | grep blkid) ]]
689 then
690 return 0
691 fi
692 fi
693
694 return 1
695 }
696
697 get_uuid()
698 {
699 local UUID
700 local SEC_TYPE
701 local TYPE
702
703 local dev="$1"
704 [[ -z ${dev} ]] && die "no dev given"
705
706 # check if given device is already an UUID
707 if [[ ${dev/UUID=/}x != ${dev}x ]]
708 then
709 eval "${dev}"
710 else
711 eval $(busybox.mkinitrd blkid ${dev} | grep "${dev}:" | sed 's/.*:\ //')
712 fi
713 echo "${UUID}"
714 }
715
716 install_system_settings()
717 {
718 # schreibe fstab
719 if is_uuid_supported
720 then
721 echo -e "UUID=$(get_uuid ${BOOTHDD})\t/boot\t${FORMAT_FILESYSTEM}\tnoatime,noauto\t1 1" > ${INSTALLPATH}/etc/fstab || die
722 echo -e "UUID=$(get_uuid ${ROOTHDD})\t/\t${FORMAT_FILESYSTEM}\tnoatime\t0 0" >> ${INSTALLPATH}/etc/fstab || die
723 else
724 echo -e "${BOOTHDD}\t/boot\t${FORMAT_FILESYSTEM}\tnoatime,noauto\t1 1" > ${INSTALLPATH}/etc/fstab || die
725 echo -e "${ROOTHDD}\t/\t${FORMAT_FILESYSTEM}\tnoatime\t0 0" >> ${INSTALLPATH}/etc/fstab || die
726 fi
727 # not needed busybox loads all with swapon -a, even if not mentioned in fstab
728 #echo -e "UUID='$(get_uuid ${SWAPHDD})'\tswap\tswap\tpri=1\t0 0" >> ${INSTALLPATH}/etc/fstab || die
729 echo -e "proc\t/proc\tproc\tdefaults\t0 0" >> ${INSTALLPATH}/etc/fstab || die
730 echo -e "shm\t/dev/shm\ttmpfs\tdefaults\t0 0" >> ${INSTALLPATH}/etc/fstab || die
731
732 # install network config skeleton
733 install -m0644 ${INSTALLPATH}/etc/alxconfig-ng/skel/net/net.eth0 ${INSTALLPATH}/etc/conf.d/ || die
734 }
735
736 install_system_settings_flash()
737 {
738 # schreibe fstab
739 if is_uuid_supported
740 then
741 echo -e "UUID=$(get_uuid ${ROOTHDD})\t/\t${FORMAT_FILESYSTEM}\tnoatime\t0 0" > ${INSTALLPATH}/etc/fstab || die
742 else
743 echo -e "${ROOTHDD}\t/\t${FORMAT_FILESYSTEM}\tnoatime\t0 0" > ${INSTALLPATH}/etc/fstab || die
744 fi
745 echo -e "proc\t/proc\tproc\tdefaults\t0 0" >> ${INSTALLPATH}/etc/fstab || die
746 echo -e "shm\t/dev/shm\ttmpfs\tdefaults\t0 0" >> ${INSTALLPATH}/etc/fstab || die
747 }
748
749 install_umount_rootfs()
750 {
751 cd /
752 umount ${INSTALLPATH}/boot || die
753 umount ${INSTALLPATH} || die
754 swapoff ${SWAPHDD} || die
755 }
756
757 install_umount_rootfs_flash()
758 {
759 cd /
760 umount ${INSTALLPATH} || die
761 }
762
763 install_do_reboot()
764 {
765 reboot
766 }
767
768 #################################################
769 # Install Ablauf Scripte #
770 #################################################
771
772 run_install_normal()
773 {
774 dialog_hardware_detection
775
776 dialog_setup_hdd_partitions_manuell
777 dialog_setup_hdd_format
778 setup_hdd_format > /dev/null
779 install_mount_rootfs
780 (install_system_image > /tmp/install.log) 2> /tmp/install_errors.log | dialog_install_meter | dialog_install_system_image
781
782 dialog_install_settings
783 sleep 1
784 install_system_settings
785 install_initrd_chroot
786
787 dialog_install_bootsector
788 install_bootsector_chroot
789
790 install_umount_rootfs
791 dialog_install_successful
792 }
793
794 run_install_flash()
795 {
796 dialog_hardware_detection
797
798 dialog_setup_hdd_partitions_manuell_flash
799 dialog_setup_hdd_format
800 setup_hdd_format_flash > /dev/null
801 install_mount_rootfs_flash
802 (install_system_image > /tmp/install.log) 2> /tmp/install_errors.log | dialog_install_meter | dialog_install_system_image
803
804 dialog_install_settings
805 sleep 1
806 install_system_settings_flash
807 install_initrd_chroot
808
809 dialog_install_bootsector
810 install_bootsector_chroot
811
812 install_umount_rootfs_flash
813 dialog_install_successful
814 }
815
816 run_install_auto()
817 {
818 dialog_hardware_detection
819
820 dialog_setup_hdd_partitions_auto
821 dialog_setup_hdd_format
822 setup_hdd_format_flash > /dev/null
823 install_mount_rootfs_flash
824 (install_system_image > /tmp/install.log) 2> /tmp/install_errors.log | dialog_install_meter | dialog_install_system_image
825
826 dialog_install_settings
827 sleep 1
828 install_system_settings_flash
829 install_initrd_chroot
830
831 dialog_install_bootsector
832 install_bootsector_chroot
833
834 install_umount_rootfs_flash
835 dialog_install_successful
836 }
837
838 dialog_main
839
840 exit 0