Magellan Linux

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 2554 - (hide annotations) (download)
Mon Jul 4 18:06:45 2011 UTC (12 years, 10 months ago) by niro
File size: 18836 byte(s)
-support grub2
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 2391 VERSION="%VERSIONTAG%"
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 niro 2388 if [[ ! -z $(hwinfo --bios --storage | grep -i zotac) ]]
438 niro 1574 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 niro 2554 local grubconf=${INSTALLPATH}/boot/grub/grub.conf
535     local grub2conf=${INSTALLPATH}/boot/grub/grub.cfg
536 niro 1574
537 niro 2554 # check for grub2
538     if [[ -f ${INSTALLPATH}/sbin/grub-mkconfig ]]
539 niro 258 then
540 niro 2554 # 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
544     fi
545     echo 'grub-mkdevicemap' > ${INSTALLPATH}/root/.bashrc
546     echo "LC_ALL=C grub-mkconfig -o ${grub2conf}" >> ${INSTALLPATH}/root/.bashrc
547     echo "grub-install --no-floppy ${HDD}" >> ${INSTALLPATH}/root/.bashrc
548 niro 522
549 niro 2554 # grub-legacy
550 niro 1574 else
551 niro 2554 ### grubconf schreiben
552     source ${INSTALLPATH}/boot/kernelversion
553 niro 1574
554 niro 2554 #for alx only
555     if [ -e ${INSTALLPATH}/etc/alx_version ]
556     then
557     OLD_ALXVER="${ALXVER}"
558     source ${INSTALLPATH}/etc/alx_version
559     KRNVER="ALX-${ALXVER}"
560     ALXVER="${OLD_ALXVER}"
561     fi
562 niro 522
563 niro 2554 [[ -z ${KRNVER} ]] && KRNVER="AutoSta_LX"
564     [[ -z ${KRNINITRD} ]] && KRNINITRD="initrd"
565     [[ -z ${KRNIMG} ]] && KRNIMG="vmlinuz"
566 niro 1123
567 niro 2554 # uuid support
568     if is_uuid_supported
569     then
570     my_roothdd="UUID=$(get_uuid ${ROOTHDD})"
571     else
572     my_roothdd="${ROOTHDD}"
573     fi
574 niro 1123
575 niro 2554 : > ${grubconf} || die
576     echo "default 0" >> ${grubconf} || die
577     echo "timeout 3" >> ${grubconf} || die
578     # using current root password
579     echo "password --md5 $(cat ${INSTALLPATH}/etc/shadow | grep root | cut -d: -f2)" >> ${grubconf} || die
580 niro 1123
581 niro 2554 echo >> ${grubconf} || die
582     echo "# normal boot" >> ${grubconf} || die
583     echo "title ${KRNVER}" >> ${grubconf} || die
584     echo "root (hd0,0)" >> ${grubconf} || die
585     echo "kernel /boot/${KRNIMG} root=${my_roothdd} ${KERNELOPTS}" >> ${grubconf} || die
586     if is_initrd_supported
587     then
588     echo "initrd /boot/${KRNINITRD}" >> ${grubconf} || die
589     fi
590    
591     echo >> ${grubconf} || die
592     echo "# admin boot" >> ${grubconf} || die
593     echo "title ${KRNVER} - Re-run hardware-detection" >> ${grubconf} || die
594     echo "lock" >> ${grubconf} || die
595     echo "root (hd0,0)" >> ${grubconf} || die
596     echo "kernel /boot/${KRNIMG} root=${my_roothdd} ${KERNELOPTS} hardware-auto-detection" >> ${grubconf} || die
597     if is_initrd_supported
598     then
599     echo "initrd /boot/${KRNINITRD}" >> ${grubconf} || die
600     fi
601    
602     echo >> ${grubconf} || die
603     echo "title ${KRNVER} - Reset *all* local settings" >> ${grubconf} || die
604     echo "lock" >> ${grubconf} || die
605     echo "root (hd0,0)" >> ${grubconf} || die
606     echo "kernel /boot/${KRNIMG} root=${my_roothdd} ${KERNELOPTS} alx-reset-settings" >> ${grubconf} || die
607     if is_initrd_supported
608     then
609     echo "initrd /boot/${KRNINITRD}" >> ${grubconf} || die
610     fi
611    
612     # bootsector schreiben chrooted schreiben (lfs/magellan)
613     cat > ${INSTALLPATH}/root/.bashrc << CHROOTEOF
614 niro 258 /usr/sbin/grub --no-floppy --batch << "EOF" 1> /dev/null 2> /dev/null
615     root (hd0,0)
616     setup (hd0)
617     quit
618     EOF
619 niro 528 exit 0
620     CHROOTEOF
621 niro 2554 fi
622 niro 528
623     ## enters chroot
624     mount -t proc proc ${INSTALLPATH}/proc
625     mount -t sysfs sysfs ${INSTALLPATH}/sys
626     mount -o bind /dev ${INSTALLPATH}/dev
627     chroot ${INSTALLPATH} /bin/bash --rcfile /root/.bashrc -i
628     umount ${INSTALLPATH}/proc
629     umount ${INSTALLPATH}/sys
630     umount ${INSTALLPATH}/dev
631     rm ${INSTALLPATH}/root/.bashrc
632     }
633    
634 niro 1574 is_initrd_supported()
635 niro 528 {
636 niro 1574 # only generate initrds if the cmd exists
637     [[ -x ${INSTALLPATH}/sbin/mkinitrd ]] && return 0
638     return 1
639     }
640    
641     install_initrd_chroot()
642     {
643     # only generate initrds if the cmd exists
644     is_initrd_supported || return 0
645    
646 niro 528 cat > ${INSTALLPATH}/root/.bashrc << CHROOTEOF
647 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
648 niro 528 mkinitrd -f /boot/$(readlink /boot/initrd) $(readlink /boot/vmlinuz | sed "s:kernel-::g") > /dev/null
649 niro 260 exit 0
650 niro 258 CHROOTEOF
651    
652 niro 522 ## enters chroot
653     mount -t proc proc ${INSTALLPATH}/proc
654 niro 526 mount -t sysfs sysfs ${INSTALLPATH}/sys
655 niro 520 mount -o bind /dev ${INSTALLPATH}/dev
656     chroot ${INSTALLPATH} /bin/bash --rcfile /root/.bashrc -i
657     umount ${INSTALLPATH}/proc
658 niro 522 umount ${INSTALLPATH}/sys
659 niro 520 umount ${INSTALLPATH}/dev
660     rm ${INSTALLPATH}/root/.bashrc
661 niro 258 }
662    
663 niro 1574 is_uuid_supported()
664 niro 1180 {
665 niro 1574 if [[ -x $(which busybox.mkinitrd &> /dev/null) ]]
666     then
667     # only detect uuids if supported
668     if [[ ! -z $(busybox.mkinitrd | grep blkid) ]]
669     then
670     return 0
671     fi
672     fi
673    
674     return 1
675     }
676    
677     get_uuid()
678     {
679 niro 1180 local UUID
680     local SEC_TYPE
681     local TYPE
682 niro 1574
683 niro 1180 local dev="$1"
684     [[ -z ${dev} ]] && die "no dev given"
685    
686 niro 1187 # check if given device is already an UUID
687     if [[ ${dev/UUID=/}x != ${dev}x ]]
688     then
689     eval "${dev}"
690     else
691     eval $(busybox.mkinitrd blkid ${dev} | grep "${dev}:" | sed 's/.*:\ //')
692     fi
693 niro 1574 echo "${UUID}"
694 niro 1180 }
695    
696 niro 520 install_system_settings()
697     {
698 niro 522 # schreibe fstab
699 niro 1574 if is_uuid_supported
700     then
701 niro 2387 echo -e "UUID=$(get_uuid ${BOOTHDD})\t/boot\t${FORMAT_FILESYSTEM}\tnoatime,noauto\t1 1" > ${INSTALLPATH}/etc/fstab || die
702     echo -e "UUID=$(get_uuid ${ROOTHDD})\t/\t${FORMAT_FILESYSTEM}\tnoatime\t0 0" >> ${INSTALLPATH}/etc/fstab || die
703 niro 1574 else
704 niro 2387 echo -e "${BOOTHDD}\t/boot\t${FORMAT_FILESYSTEM}\tnoatime,noauto\t1 1" > ${INSTALLPATH}/etc/fstab || die
705     echo -e "${ROOTHDD}\t/\t${FORMAT_FILESYSTEM}\tnoatime\t0 0" >> ${INSTALLPATH}/etc/fstab || die
706 niro 1574 fi
707 niro 1187 # not needed busybox loads all with swapon -a, even if not mentioned in fstab
708 niro 1574 #echo -e "UUID='$(get_uuid ${SWAPHDD})'\tswap\tswap\tpri=1\t0 0" >> ${INSTALLPATH}/etc/fstab || die
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 531
712     # install network config skeleton
713     install -m0644 ${INSTALLPATH}/etc/alxconfig-ng/skel/net/net.eth0 ${INSTALLPATH}/etc/conf.d/ || die
714 niro 258 }
715    
716 niro 520 install_system_settings_flash()
717     {
718 niro 522 # schreibe fstab
719 niro 1574 if is_uuid_supported
720     then
721 niro 2387 echo -e "UUID=$(get_uuid ${ROOTHDD})\t/\t${FORMAT_FILESYSTEM}\tnoatime\t0 0" > ${INSTALLPATH}/etc/fstab || die
722 niro 1574 else
723 niro 2387 echo -e "${ROOTHDD}\t/\t${FORMAT_FILESYSTEM}\tnoatime\t0 0" > ${INSTALLPATH}/etc/fstab || die
724 niro 1574 fi
725 niro 522 echo -e "proc\t/proc\tproc\tdefaults\t0 0" >> ${INSTALLPATH}/etc/fstab || die
726     echo -e "shm\t/dev/shm\ttmpfs\tdefaults\t0 0" >> ${INSTALLPATH}/etc/fstab || die
727 niro 280 }
728 niro 520
729     install_umount_rootfs()
730     {
731 niro 258 cd /
732 niro 520 umount ${INSTALLPATH}/boot || die
733     umount ${INSTALLPATH} || die
734     swapoff ${SWAPHDD} || die
735 niro 258 }
736    
737 niro 520 install_umount_rootfs_flash()
738     {
739 niro 280 cd /
740 niro 520 umount ${INSTALLPATH} || die
741 niro 280 }
742    
743 niro 520 install_do_reboot()
744     {
745 niro 258 reboot
746     }
747    
748     #################################################
749     # Install Ablauf Scripte #
750     #################################################
751    
752 niro 520 run_install_normal()
753     {
754 niro 1574 dialog_hardware_detection
755 niro 520
756 niro 258 dialog_setup_hdd_partitions_manuell
757     dialog_setup_hdd_format
758     setup_hdd_format > /dev/null
759     install_mount_rootfs
760     (install_system_image > /tmp/install.log) 2> /tmp/install_errors.log | dialog_install_meter | dialog_install_system_image
761 niro 520
762 niro 258 dialog_install_settings
763     sleep 1
764     install_system_settings
765 niro 1574 install_initrd_chroot
766 niro 2554
767     dialog_install_bootsector
768     install_bootsector_chroot
769    
770 niro 258 install_umount_rootfs
771     dialog_install_successful
772     }
773    
774 niro 520 run_install_flash()
775     {
776 niro 1574 dialog_hardware_detection
777 niro 520
778 niro 280 dialog_setup_hdd_partitions_manuell_flash
779     dialog_setup_hdd_format
780     setup_hdd_format_flash > /dev/null
781     install_mount_rootfs_flash
782     (install_system_image > /tmp/install.log) 2> /tmp/install_errors.log | dialog_install_meter | dialog_install_system_image
783 niro 520
784 niro 280 dialog_install_settings
785     sleep 1
786     install_system_settings_flash
787 niro 1574 install_initrd_chroot
788 niro 2554
789     dialog_install_bootsector
790     install_bootsector_chroot
791    
792 niro 280 install_umount_rootfs_flash
793     dialog_install_successful
794     }
795    
796 niro 1574 run_install_auto()
797     {
798     dialog_hardware_detection
799    
800     dialog_setup_hdd_partitions_auto
801     dialog_setup_hdd_format
802     setup_hdd_format_flash > /dev/null
803     install_mount_rootfs_flash
804     (install_system_image > /tmp/install.log) 2> /tmp/install_errors.log | dialog_install_meter | dialog_install_system_image
805    
806     dialog_install_settings
807     sleep 1
808     install_system_settings_flash
809     install_initrd_chroot
810 niro 2554
811     dialog_install_bootsector
812     install_bootsector_chroot
813    
814 niro 1574 install_umount_rootfs_flash
815     dialog_install_successful
816     }
817    
818 niro 522 dialog_main
819 niro 258
820     exit 0