Magellan Linux

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

Parent Directory Parent Directory | Revision Log Revision Log


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