Magellan Linux

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 2387 - (hide annotations) (download) (as text)
Wed Jun 15 08:47:04 2011 UTC (12 years, 10 months ago) by niro
Original Path: alx-src/trunk/alxinstall-ng/bin/alxinstall-ng.sh
File MIME type: application/x-sh
File size: 18217 byte(s)
-variable target filesystem
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 2387 # target filesystem
41     FORMAT_FILESYSTEM="ext4"
42    
43 niro 258 #################################################
44     # DIALOG BOXEN #
45     #################################################
46    
47 niro 520 die()
48     {
49 niro 258 ERROR=$1
50     RETVAL=$?
51     dialog_install_failure
52     exit 1
53     }
54    
55 niro 520 dialog_warning()
56     {
57 niro 258 dialog \
58 niro 520 --backtitle "${TITLE}" \
59 niro 258 --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 niro 520 if [[ ${RES} -eq 1 ]]
66 niro 258 then
67     clear
68     echo "Der Vorgang wurde abgebrochen."
69     exit 1
70     fi
71     }
72    
73 niro 520 dialog_setup_hdd_info()
74     {
75     local SHDD="$(echo ${HDD} | sed 's/\/dev\///')"
76 niro 258
77     dialog \
78     --colors \
79     --title "[ Festplatten Partitionierung ]" \
80 niro 520 --backtitle "${TITLE}" \
81 niro 258 --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 niro 520 dialog_setup_hdd_info_flash()
90     {
91     local SHDD="$(echo $HDD | sed 's/\/dev\///')"
92 niro 258
93 niro 280 dialog \
94     --colors \
95     --title "[ Festplatten Partitionierung ]" \
96 niro 520 --backtitle "${TITLE}" \
97 niro 280 --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 niro 1574 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 niro 520 dialog_setup_system_menu()
117     {
118     local i
119 niro 280
120 niro 520 i=$(dialog \
121     --backtitle "${TITLE}" \
122 niro 258 --title "[ Festplatten Partitionierung ]" \
123     --cancel-label "Abbrechen" \
124     --ok-label "Weiter" \
125     --stdout \
126 niro 1577 --colors \
127 niro 280 --menu "\nWaehlen Sie die Installations-Methode" 14 70 5 \
128 niro 1577 "1" "Automatisches Setup (Empfohlen)" \
129     "" "" \
130 niro 1579 "" "\Z1Experten Modi:\Zn" \
131 niro 1577 "2" "Normale IDE-Disk (Manuell)" \
132     "3" "Flash-Speicher (Manuell)")
133 niro 258 RES=$?
134 niro 520 [[ ${RES} -eq 1 ]] && return 1
135     if [[ ${RES} -eq 0 ]]
136     then
137     case "${i}" in
138 niro 1574 "1") run_install_auto ;;
139     "2") run_install_normal ;;
140     "3") run_install_flash ;;
141 niro 1577 "") dialog_setup_system_menu;;
142 niro 258 esac
143     fi
144     }
145    
146 niro 1574 dialog_hardware_detection()
147 niro 520 {
148     local i
149 niro 1574 local hwtmp
150 niro 258
151 niro 1574 if [ -x $(which mktemp &> /dev/null) ]
152     then
153     hwtmp="$(mktemp)"
154     else
155     hwtmp="/tmp/hwtmp.sh"
156     fi
157    
158 niro 520 [[ ! -z ${installdevs} ]] && installdevs=""
159    
160 niro 1574 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 niro 258
168 niro 520 if [[ ! -z ${scsidisks} ]]
169 niro 258 then
170 niro 520 for i in ${scsidisks}
171 niro 258 do
172 niro 520 if [[ ${i} != ${cdromdev} ]]
173 niro 258 then
174 niro 1574 echo " \\Z7SCSI: \\Z3${i}\\Zn\n \\" >> ${hwtmp}
175 niro 520 installdevs="${installdevs} ${i}"
176 niro 258 fi
177     done
178     fi
179    
180 niro 520 if [[ ! -z ${idedisks} ]]
181 niro 258 then
182 niro 520 for i in ${idedisks}
183 niro 258 do
184 niro 520 if [[ ${i} != ${cdromdev} ]]
185 niro 258 then
186 niro 1574 echo " \\Z7IDE: \\Z3${i}\\Zn\n \\" >> ${hwtmp}
187 niro 520 installdevs="${installdevs} ${i}"
188 niro 258 fi
189     done
190     fi
191    
192 niro 520 if [[ ! -z ${cdromdev} ]]
193 niro 258 then
194 niro 1574 echo " \n \\" >> ${hwtmp}
195     echo " \\Z7andere Laufwerke:\n \\" >> ${hwtmp}
196     echo " CDROM: \\Z3${cdromdev}\\Zn\n \\" >> ${hwtmp}
197 niro 258 fi
198 niro 1574
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 niro 258 }
216    
217 niro 520 dialog_setup_hdd_partitions_manuell()
218     {
219     local i
220    
221     if [[ -z ${installdevs} ]]
222 niro 258 then
223     dialog \
224 niro 520 --backtitle "${TITLE}" \
225 niro 258 --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 niro 520 echo "--backtitle \"${TITLE}\" \\" >> /tmp/hddtmp.sh
232 niro 258 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 niro 520 for i in ${installdevs}
238 niro 258 do
239 niro 520 echo "\"${i}\" \"\" \\" >> /tmp/hddtmp.sh
240 niro 258 done
241     echo -e "\n" >> /tmp/hddtmp.sh
242    
243     chmod a+x /tmp/hddtmp.sh
244 niro 520 HDD="$(/tmp/hddtmp.sh)"
245 niro 258 RES=$?
246 niro 520 [[ ${RES} -eq 1 ]] && return 1
247     if [[ ${RES} -eq 0 ]]
248 niro 258 then
249     dialog_setup_hdd_info
250     setup_hdd_partitions_manuell
251     fi
252     fi
253     }
254    
255 niro 520 dialog_setup_hdd_partitions_manuell_flash()
256     {
257     local i
258    
259     if [[ -z ${installdevs} ]]
260 niro 280 then
261     dialog \
262 niro 520 --backtitle "${TITLE}" \
263 niro 280 --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 niro 520 echo "--backtitle \"${TITLE}\" \\" >> /tmp/hddtmp.sh
270 niro 280 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 niro 520 for i in ${installdevs}
276 niro 280 do
277 niro 520 echo "\"${i}\" \"\" \\" >> /tmp/hddtmp.sh
278 niro 280 done
279     echo -e "\n" >> /tmp/hddtmp.sh
280    
281     chmod a+x /tmp/hddtmp.sh
282 niro 520 HDD="$(/tmp/hddtmp.sh)"
283 niro 280 RES=$?
284 niro 520 [[ ${RES} -eq 1 ]] && return 1
285     if [[ ${RES} -eq 0 ]]
286 niro 280 then
287     dialog_setup_hdd_info_flash
288     setup_hdd_partitions_manuell_flash
289     fi
290     fi
291     }
292    
293 niro 1574 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 niro 520 dialog_setup_hdd_format()
340     {
341 niro 258 dialog \
342 niro 520 --backtitle "${TITLE}" \
343 niro 258 --infobox "Erstelle Datei-Systeme ..." 3 70
344     }
345    
346 niro 520 dialog_install_settings()
347     {
348 niro 258 dialog \
349 niro 520 --backtitle "${TITLE}" \
350 niro 258 --infobox "Speichere System-Einstellungen ..." 3 70
351     }
352    
353 niro 520 dialog_install_system_image()
354     {
355 niro 258 dialog \
356 niro 520 --backtitle "${TITLE}" \
357 niro 258 --gauge "Kopiere System-Image ..." 6 80
358     }
359    
360 niro 520 dialog_install_meter()
361     {
362     while [[ ${CURRENTLINE} != ${TOTALLINES} ]]
363     do
364 niro 525 CURRENTLINE=$(grep -c . /tmp/install.log)
365     PERCENT=$(( ${CURRENTLINE} * 100 / ${TOTALLINES}))
366 niro 258 echo ${PERCENT}
367     sleep 1
368     done
369     rm -f /tmp/install.log
370     return 0
371     }
372    
373    
374 niro 520 dialog_install_bootsector()
375     {
376 niro 258 dialog \
377 niro 520 --backtitle "${TITLE}" \
378 niro 258 --infobox "Schreibe den Bootsektor ..." 3 70
379     }
380    
381 niro 520 dialog_install_successful()
382     {
383 niro 258 dialog \
384 niro 520 --backtitle "${TITLE}" \
385 niro 258 --colors \
386     --msgbox "Die Installation war \Z2erfolgreich\Zn." 5 81
387     }
388    
389 niro 520 dialog_install_failure()
390     {
391 niro 258 dialog \
392 niro 520 --backtitle "${TITLE}" \
393 niro 258 --colors \
394     --msgbox "Die Installation ist \Z1Fehlgeschlagen\Zn.\n\n\
395 niro 520 Fehler bei ${ERROR}, RetVal: ${RETVAL} \
396 niro 258 " 10 81
397     }
398    
399 niro 520 dialog_main()
400     {
401 niro 258 METHOD=0
402    
403 niro 520 while [[ ${METHOD} -le 2 ]]
404 niro 258 do
405 niro 520 METHOD=$(dialog \
406     --backtitle "${TITLE}" \
407 niro 258 --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 niro 520 "4" "Beenden und eine Shell starten")
415 niro 258 RES=$?
416 niro 524 [[ ${RES} -eq 1 ]] && exit 1
417 niro 520 if [[ ${RES} -eq 0 ]]
418     then
419     case ${METHOD} in
420     "1") dialog_setup_system_menu ;;
421 niro 1574 "2") dialog_hardware_detection ;;
422 niro 520 "3") install_do_reboot ;;
423     "4") /bin/bash --login -i ;;
424 niro 258 esac
425     fi
426     done
427     }
428    
429     #################################################
430     # Install Komandos #
431     #################################################
432 niro 1574 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 $(lspci -v | 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 niro 520 setup_hdd_partitions_manuell()
481     {
482 niro 258 BOOTHDD="${HDD}1"
483     SWAPHDD="${HDD}2"
484     ROOTHDD="${HDD}3"
485    
486     ## hdds partitionieren manuell
487 niro 520 cfdisk ${HDD} || die
488 niro 258 }
489    
490 niro 520 setup_hdd_partitions_manuell_flash()
491     {
492 niro 280 ROOTHDD="${HDD}1"
493    
494     ## hdds partitionieren manuell
495 niro 520 cfdisk ${HDD} || die
496 niro 280 }
497    
498 niro 520 setup_hdd_format()
499     {
500     mkswap ${SWAPHDD} || die
501     mke2fs -j -q ${BOOTHDD} || die
502     mke2fs -j -q ${ROOTHDD} || die
503 niro 258 }
504    
505 niro 520 setup_hdd_format_flash()
506     {
507     mke2fs -j -q ${ROOTHDD} || die
508 niro 280 }
509    
510 niro 520 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 niro 258 }
518    
519 niro 520 install_mount_rootfs_flash()
520     {
521     mount ${ROOTHDD} ${INSTALLPATH} || die
522     install -d ${INSTALLPATH}/boot || die
523     cd ${INSTALLPATH} || die
524 niro 280 }
525    
526 niro 520 install_system_image()
527     {
528 niro 258 tar xvjpf ${CDPATH}/system/${CDIMAGENAME} -C ${INSTALLPATH}
529     }
530    
531 niro 520 install_bootsector_chroot()
532     {
533 niro 1574 local my_roothdd
534    
535 niro 258 ### grubconf schreiben
536 niro 520 source ${INSTALLPATH}/boot/kernelversion
537 niro 258
538     #for alx only
539     if [ -e ${INSTALLPATH}/etc/alx_version ]
540     then
541     OLD_ALXVER="${ALXVER}"
542     source ${INSTALLPATH}/etc/alx_version
543     KRNVER="ALX-${ALXVER}"
544     ALXVER="${OLD_ALXVER}"
545     fi
546 niro 522
547 niro 520 [[ -z ${KRNVER} ]] && KRNVER="AutoSta_LX"
548     [[ -z ${KRNINITRD} ]] && KRNINITRD="initrd"
549 niro 1574 [[ -z ${KRNIMG} ]] && KRNIMG="vmlinuz"
550 niro 258
551 niro 1574 # uuid support
552     if is_uuid_supported
553     then
554     my_roothdd="UUID=$(get_uuid ${ROOTHDD})"
555     else
556     my_roothdd="${ROOTHDD}"
557     fi
558    
559 niro 1123 local grubconf=${INSTALLPATH}/boot/grub/grub.conf
560     : > ${grubconf} || die
561     echo "default 0" >> ${grubconf} || die
562     echo "timeout 3" >> ${grubconf} || die
563     # using current root password
564     echo "password --md5 $(cat ${INSTALLPATH}/etc/shadow | grep root | cut -d: -f2)" >> ${grubconf} || die
565 niro 522
566 niro 1123 echo >> ${grubconf} || die
567     echo "# normal boot" >> ${grubconf} || die
568     echo "title ${KRNVER}" >> ${grubconf} || die
569     echo "root (hd0,0)" >> ${grubconf} || die
570 niro 1574 echo "kernel /boot/${KRNIMG} root=${my_roothdd} ${KERNELOPTS}" >> ${grubconf} || die
571     if is_initrd_supported
572     then
573     echo "initrd /boot/${KRNINITRD}" >> ${grubconf} || die
574     fi
575 niro 1123
576     echo >> ${grubconf} || die
577     echo "# admin boot" >> ${grubconf} || die
578     echo "title ${KRNVER} - Re-run hardware-detection" >> ${grubconf} || die
579     echo "lock" >> ${grubconf} || die
580     echo "root (hd0,0)" >> ${grubconf} || die
581 niro 1574 echo "kernel /boot/${KRNIMG} root=${my_roothdd} ${KERNELOPTS} hardware-auto-detection" >> ${grubconf} || die
582     if is_initrd_supported
583     then
584     echo "initrd /boot/${KRNINITRD}" >> ${grubconf} || die
585     fi
586 niro 1123
587     echo >> ${grubconf} || die
588     echo "title ${KRNVER} - Reset *all* local settings" >> ${grubconf} || die
589     echo "lock" >> ${grubconf} || die
590     echo "root (hd0,0)" >> ${grubconf} || die
591 niro 1574 echo "kernel /boot/${KRNIMG} root=${my_roothdd} ${KERNELOPTS} alx-reset-settings" >> ${grubconf} || die
592     if is_initrd_supported
593     then
594     echo "initrd /boot/${KRNINITRD}" >> ${grubconf} || die
595     fi
596 niro 1123
597 niro 522 # bootsector schreiben chrooted schreiben (lfs/magellan)
598     cat > ${INSTALLPATH}/root/.bashrc << CHROOTEOF
599 niro 258 /usr/sbin/grub --no-floppy --batch << "EOF" 1> /dev/null 2> /dev/null
600     root (hd0,0)
601     setup (hd0)
602     quit
603     EOF
604 niro 528 exit 0
605     CHROOTEOF
606    
607     ## enters chroot
608     mount -t proc proc ${INSTALLPATH}/proc
609     mount -t sysfs sysfs ${INSTALLPATH}/sys
610     mount -o bind /dev ${INSTALLPATH}/dev
611     chroot ${INSTALLPATH} /bin/bash --rcfile /root/.bashrc -i
612     umount ${INSTALLPATH}/proc
613     umount ${INSTALLPATH}/sys
614     umount ${INSTALLPATH}/dev
615     rm ${INSTALLPATH}/root/.bashrc
616     }
617    
618 niro 1574 is_initrd_supported()
619 niro 528 {
620 niro 1574 # only generate initrds if the cmd exists
621     [[ -x ${INSTALLPATH}/sbin/mkinitrd ]] && return 0
622     return 1
623     }
624    
625     install_initrd_chroot()
626     {
627     # only generate initrds if the cmd exists
628     is_initrd_supported || return 0
629    
630 niro 528 cat > ${INSTALLPATH}/root/.bashrc << CHROOTEOF
631 niro 2387 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
632 niro 528 mkinitrd -f /boot/$(readlink /boot/initrd) $(readlink /boot/vmlinuz | sed "s:kernel-::g") > /dev/null
633 niro 260 exit 0
634 niro 258 CHROOTEOF
635    
636 niro 522 ## enters chroot
637     mount -t proc proc ${INSTALLPATH}/proc
638 niro 526 mount -t sysfs sysfs ${INSTALLPATH}/sys
639 niro 520 mount -o bind /dev ${INSTALLPATH}/dev
640     chroot ${INSTALLPATH} /bin/bash --rcfile /root/.bashrc -i
641     umount ${INSTALLPATH}/proc
642 niro 522 umount ${INSTALLPATH}/sys
643 niro 520 umount ${INSTALLPATH}/dev
644     rm ${INSTALLPATH}/root/.bashrc
645 niro 258 }
646    
647 niro 1574 is_uuid_supported()
648 niro 1180 {
649 niro 1574 if [[ -x $(which busybox.mkinitrd &> /dev/null) ]]
650     then
651     # only detect uuids if supported
652     if [[ ! -z $(busybox.mkinitrd | grep blkid) ]]
653     then
654     return 0
655     fi
656     fi
657    
658     return 1
659     }
660    
661     get_uuid()
662     {
663 niro 1180 local UUID
664     local SEC_TYPE
665     local TYPE
666 niro 1574
667 niro 1180 local dev="$1"
668     [[ -z ${dev} ]] && die "no dev given"
669    
670 niro 1187 # check if given device is already an UUID
671     if [[ ${dev/UUID=/}x != ${dev}x ]]
672     then
673     eval "${dev}"
674     else
675     eval $(busybox.mkinitrd blkid ${dev} | grep "${dev}:" | sed 's/.*:\ //')
676     fi
677 niro 1574 echo "${UUID}"
678 niro 1180 }
679    
680 niro 520 install_system_settings()
681     {
682 niro 522 # schreibe fstab
683 niro 1574 if is_uuid_supported
684     then
685 niro 2387 echo -e "UUID=$(get_uuid ${BOOTHDD})\t/boot\t${FORMAT_FILESYSTEM}\tnoatime,noauto\t1 1" > ${INSTALLPATH}/etc/fstab || die
686     echo -e "UUID=$(get_uuid ${ROOTHDD})\t/\t${FORMAT_FILESYSTEM}\tnoatime\t0 0" >> ${INSTALLPATH}/etc/fstab || die
687 niro 1574 else
688 niro 2387 echo -e "${BOOTHDD}\t/boot\t${FORMAT_FILESYSTEM}\tnoatime,noauto\t1 1" > ${INSTALLPATH}/etc/fstab || die
689     echo -e "${ROOTHDD}\t/\t${FORMAT_FILESYSTEM}\tnoatime\t0 0" >> ${INSTALLPATH}/etc/fstab || die
690 niro 1574 fi
691 niro 1187 # not needed busybox loads all with swapon -a, even if not mentioned in fstab
692 niro 1574 #echo -e "UUID='$(get_uuid ${SWAPHDD})'\tswap\tswap\tpri=1\t0 0" >> ${INSTALLPATH}/etc/fstab || die
693 niro 522 echo -e "proc\t/proc\tproc\tdefaults\t0 0" >> ${INSTALLPATH}/etc/fstab || die
694     echo -e "shm\t/dev/shm\ttmpfs\tdefaults\t0 0" >> ${INSTALLPATH}/etc/fstab || die
695 niro 531
696     # install network config skeleton
697     install -m0644 ${INSTALLPATH}/etc/alxconfig-ng/skel/net/net.eth0 ${INSTALLPATH}/etc/conf.d/ || die
698 niro 258 }
699    
700 niro 520 install_system_settings_flash()
701     {
702 niro 522 # schreibe fstab
703 niro 1574 if is_uuid_supported
704     then
705 niro 2387 echo -e "UUID=$(get_uuid ${ROOTHDD})\t/\t${FORMAT_FILESYSTEM}\tnoatime\t0 0" > ${INSTALLPATH}/etc/fstab || die
706 niro 1574 else
707 niro 2387 echo -e "${ROOTHDD}\t/\t${FORMAT_FILESYSTEM}\tnoatime\t0 0" > ${INSTALLPATH}/etc/fstab || die
708 niro 1574 fi
709 niro 522 echo -e "proc\t/proc\tproc\tdefaults\t0 0" >> ${INSTALLPATH}/etc/fstab || die
710     echo -e "shm\t/dev/shm\ttmpfs\tdefaults\t0 0" >> ${INSTALLPATH}/etc/fstab || die
711 niro 280 }
712 niro 520
713     install_umount_rootfs()
714     {
715 niro 258 cd /
716 niro 520 umount ${INSTALLPATH}/boot || die
717     umount ${INSTALLPATH} || die
718     swapoff ${SWAPHDD} || die
719 niro 258 }
720    
721 niro 520 install_umount_rootfs_flash()
722     {
723 niro 280 cd /
724 niro 520 umount ${INSTALLPATH} || die
725 niro 280 }
726    
727 niro 520 install_do_reboot()
728     {
729 niro 258 reboot
730     }
731    
732     #################################################
733     # Install Ablauf Scripte #
734     #################################################
735    
736 niro 520 run_install_normal()
737     {
738 niro 1574 dialog_hardware_detection
739 niro 520
740 niro 258 dialog_setup_hdd_partitions_manuell
741     dialog_setup_hdd_format
742     setup_hdd_format > /dev/null
743     install_mount_rootfs
744     (install_system_image > /tmp/install.log) 2> /tmp/install_errors.log | dialog_install_meter | dialog_install_system_image
745 niro 520
746 niro 258 dialog_install_bootsector
747     install_bootsector_chroot
748 niro 519
749 niro 258 dialog_install_settings
750     sleep 1
751     install_system_settings
752 niro 1574 install_initrd_chroot
753 niro 258 install_umount_rootfs
754     dialog_install_successful
755     }
756    
757 niro 520 run_install_flash()
758     {
759 niro 1574 dialog_hardware_detection
760 niro 520
761 niro 280 dialog_setup_hdd_partitions_manuell_flash
762     dialog_setup_hdd_format
763     setup_hdd_format_flash > /dev/null
764     install_mount_rootfs_flash
765     (install_system_image > /tmp/install.log) 2> /tmp/install_errors.log | dialog_install_meter | dialog_install_system_image
766 niro 520
767 niro 280 dialog_install_bootsector
768     install_bootsector_chroot
769 niro 520
770 niro 280 dialog_install_settings
771     sleep 1
772     install_system_settings_flash
773 niro 1574 install_initrd_chroot
774 niro 280 install_umount_rootfs_flash
775     dialog_install_successful
776     }
777    
778 niro 1574 run_install_auto()
779     {
780     dialog_hardware_detection
781    
782     dialog_setup_hdd_partitions_auto
783     dialog_setup_hdd_format
784     setup_hdd_format_flash > /dev/null
785     install_mount_rootfs_flash
786     (install_system_image > /tmp/install.log) 2> /tmp/install_errors.log | dialog_install_meter | dialog_install_system_image
787    
788     dialog_install_bootsector
789     install_bootsector_chroot
790    
791     dialog_install_settings
792     sleep 1
793     install_system_settings_flash
794     install_initrd_chroot
795     install_umount_rootfs_flash
796     dialog_install_successful
797     }
798    
799 niro 522 dialog_main
800 niro 258
801     exit 0