Magellan Linux

Annotation of /trunk/installer-simple/bin/installer.sh.in

Parent Directory Parent Directory | Revision Log Revision Log


Revision 2342 - (hide annotations) (download)
Fri Jan 3 14:57:23 2014 UTC (10 years, 4 months ago) by niro
File size: 24455 byte(s)
-renamed INSTALLPATH variable to INSTALLROOT
1 niro 2323 #!/bin/bash
2 niro 2322 # $Id$
3 niro 2320 #
4 niro 2322 # Simple Installation Script
5     # merged from alxinstall-ng and mcore-installer
6 niro 2320 #
7     # Niels Rogalla <niro@magellan-linux.de>
8     #
9    
10 niro 2339 # ignore the environment
11     LC_ALL=C
12 niro 2340 # include dir
13 niro 2333 INSTALLER_LIBDIR="%LIBDIR%"
14    
15 niro 2340 # TOTALLINES=linecount of ${CDIMAGENAME}-tarball -1 !
16     # -> now in images.conf
17     CURRENTLINE=0
18    
19 niro 2334 # configuration
20     if [ -e %SYSCONFDIR%/installer.conf ]
21     then
22     source %SYSCONFDIR%/installer.conf
23     else
24     die "/etc/installer.conf not found"
25     fi
26 niro 2332
27 niro 2340 # TOTALLINES=linecount of ${CDIMAGENAME}-tarball -1 !
28     # -> now in images.conf
29     CDIMAGENAME=""
30     TOTALLINES=""
31     CURRENTLINE=0
32 niro 2334 if [ -e /mnt/cdrom/system/images.conf ]
33     then
34     source /mnt/cdrom/system/images.conf
35 niro 2340 # check if all required variables are set
36     [[ -z ${CDIMAGENAME} ]] && die "CDIMAGENAME is empty in /mnt/cdrom/system/images.conf"
37     [[ -z ${TOTALLINES} ]] && die "TOTALLINES is empty in /mnt/cdrom/system/images.conf"
38 niro 2334 else
39     die "/mnt/cdrom/system/images.conf not found"
40     fi
41 niro 2320
42 niro 2335 # includes
43     source ${INSTALLER_LIBDIR}/functions/hwdetection.sh
44 niro 2334
45 niro 2320 ### System/Config Version
46     VERSION="%VERSIONTAG%"
47 niro 2332 TITLE="${DEFAULT_TITLE} - ${VERSION}"
48 niro 2320
49 niro 2332 CDPATH="${DEFAULT_CDPATH}"
50 niro 2342 INSTALLROOT="${DEFAULT_INSTALLROOT}"
51 niro 2320
52     # standard kernel opts
53     KERNELOPTS="quiet video=1024x768"
54    
55     # grub options
56     GRUBLEGACYOPTS=""
57     GRUB2OPTS=""
58    
59     # fdisk options
60     FDISKPARTIONBELOW256MB=0
61    
62     # default specialdevices
63     SPECIALDEVICE=""
64     FORMFACTOR="desktop"
65    
66     # target filesystem
67 niro 2332 FORMAT_FILESYSTEM="${DEFAULT_FILESYSTEM}"
68 niro 2320
69     #################################################
70     # DIALOG BOXEN #
71     #################################################
72    
73     die()
74     {
75 niro 2336 echo "Error: $@"
76     exit 1
77     }
78    
79     dialog_die()
80     {
81 niro 2341 ERROR="$1"
82     RETVAL="$?"
83 niro 2320 dialog_install_failure
84     exit 1
85     }
86    
87     dialog_warning()
88     {
89     dialog \
90     --backtitle "${TITLE}" \
91     --colors \
92     --defaultno \
93     --yesno "\Z1 !!! Achtung !!! \Zn\n\n\
94     Diese Festplatte wird unwiederruflich geloescht werden.\n\n\
95     Soll ich wirklich fortfahren ?" 10 70
96     RES=$?
97     if [[ ${RES} -eq 1 ]]
98     then
99     clear
100     echo "Der Vorgang wurde abgebrochen."
101     exit 1
102     fi
103     }
104    
105     dialog_setup_hdd_info()
106     {
107     local SHDD="$(echo ${HDD} | sed 's/\/dev\///')"
108    
109     dialog \
110     --colors \
111     --title "[ Festplatten Partitionierung ]" \
112     --backtitle "${TITLE}" \
113     --ok-label "Weiter" \
114     --msgbox "\nBitte legen Sie 3 Partitionen an.\n\n\
115     [ \Z3${SHDD}1\Zn ] Typ: \Z3Linux\Zn mit ca. 50MB\n\
116     [ \Z3${SHDD}2\Zn ] Typ: \Z3Linux Swap\Zn mit ca. 256MB\n\
117     [ \Z3${SHDD}3\Zn ] Typ: \Z3Linux \Zn mit dem Rest (min. 256MB)\n\n\
118     Bitte ${SHDD}1 als \Z3bootable\Zn markieren." 12 81
119     }
120    
121     dialog_setup_hdd_info_flash()
122     {
123     local SHDD="$(echo $HDD | sed 's/\/dev\///')"
124    
125     dialog \
126     --colors \
127     --title "[ Festplatten Partitionierung ]" \
128     --backtitle "${TITLE}" \
129     --ok-label "Weiter" \
130     --msgbox "\nBitte legen Sie 1 Partition an.\n\n\
131     [ \Z3${SHDD}1\Zn ] Typ: \Z3Linux\Zn mit dem gesamten Speicher\n\
132     Bitte ${SHDD}1 als \Z3bootable\Zn markieren." 12 81
133     }
134    
135     dialog_setup_hdd_info_auto()
136     {
137     local SHDD="$(echo $HDD | sed 's/\/dev\///')"
138    
139     dialog \
140     --colors \
141     --title "[ Festplatten Partitionierung ]" \
142     --backtitle "${TITLE}" \
143     --ok-label "Weiter" \
144     --msgbox "\nAchtung!\n\
145     Alle Daten werden von der Disk [ \Z3${HDD}\Zn ] gelöscht!" 12 81
146     }
147    
148     dialog_setup_system_menu()
149     {
150     local i
151    
152     i=$(dialog \
153     --backtitle "${TITLE}" \
154     --title "[ Festplatten Partitionierung ]" \
155     --cancel-label "Abbrechen" \
156     --ok-label "Weiter" \
157     --stdout \
158     --colors \
159     --menu "\nWaehlen Sie die Installations-Methode" 14 70 5 \
160     "1" "Automatisches Setup (Empfohlen)" \
161     "" "" \
162     "" "\Z1Experten Modi:\Zn" \
163     "2" "Normale IDE-Disk (Manuell)" \
164     "3" "Flash-Speicher (Manuell)")
165     RES=$?
166     [[ ${RES} -eq 1 ]] && return 1
167     if [[ ${RES} -eq 0 ]]
168     then
169     case "${i}" in
170     "1") run_install_auto ;;
171 niro 2341 "2") run_install_normal ;;
172 niro 2320 "3") run_install_flash ;;
173     "") dialog_setup_system_menu;;
174     esac
175     fi
176     }
177    
178     dialog_hardware_detection()
179     {
180     local i
181     local hwtmp
182    
183     if [ -x $(which mktemp &> /dev/null) ]
184     then
185     hwtmp="$(mktemp)"
186     else
187     hwtmp="/tmp/hwtmp.sh"
188     fi
189    
190     [[ ! -z ${installdevs} ]] && installdevs=""
191    
192     echo "dialog \\" > ${hwtmp}
193     echo "--backtitle \"${TITLE}\" \\" >> ${hwtmp}
194     echo "--ok-label \"Weiter\" \\" >> ${hwtmp}
195     echo "--stdout \\" >> ${hwtmp}
196     echo "--colors \\" >> ${hwtmp}
197     echo "--msgbox \"Gefundene Hardware:\n\n \\" >> ${hwtmp}
198     echo " Festplatten:\n \\" >> ${hwtmp}
199    
200     if [[ ! -z ${scsidisks} ]]
201     then
202     for i in ${scsidisks}
203     do
204     if [[ ${i} != ${cdromdev} ]]
205     then
206     echo " \\Z7SCSI: \\Z3${i}\\Zn\n \\" >> ${hwtmp}
207     installdevs="${installdevs} ${i}"
208     fi
209     done
210     fi
211    
212     if [[ ! -z ${idedisks} ]]
213     then
214     for i in ${idedisks}
215     do
216     if [[ ${i} != ${cdromdev} ]]
217     then
218     echo " \\Z7IDE: \\Z3${i}\\Zn\n \\" >> ${hwtmp}
219     installdevs="${installdevs} ${i}"
220     fi
221     done
222     fi
223    
224     if [[ ! -z ${cdromdev} ]]
225     then
226     echo " \n \\" >> ${hwtmp}
227     echo " \\Z7andere Laufwerke:\n \\" >> ${hwtmp}
228     echo " CDROM: \\Z3${cdromdev}\\Zn\n \\" >> ${hwtmp}
229     fi
230    
231     # other devices
232     run_hardware_detection
233     case "${SPECIALDEVICE}" in
234     zotac*) echo " \n\n\n \\Z2Zotac Device erkannt.\\Zn \\" >> ${hwtmp} ;;
235     rangee) echo " \n\n\n \\Z2Rangee Device erkannt.\\Zn \\" >> ${hwtmp} ;;
236     maxdata) echo " \n\n\n \\Z2Maxdata Device erkannt.\\Zn \\" >> ${hwtmp} ;;
237     *) echo " \n\n\n \\ZnStandard Device erkannt.\\Zn \\" >> ${hwtmp} ;;
238     esac
239     if [[ ${FORMFACTOR} = laptop ]]
240     then
241     echo " \n \\ZnFormfactor Laptop, Powersave Modus 'ondemand' wird aktiviert.\\Zn \\" >> ${hwtmp}
242     fi
243    
244     echo " \" 14 70" >> ${hwtmp}
245     chmod a+x ${hwtmp}
246     ${hwtmp}
247    
248     # remove tmp file
249     if [[ -f ${hwtmp} ]]
250     then
251     rm ${hwtmp}
252     fi
253     }
254    
255     dialog_setup_hdd_partitions_manuell()
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
288     setup_hdd_partitions_manuell
289     fi
290     fi
291     }
292    
293     dialog_setup_hdd_partitions_manuell_flash()
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_flash
326     setup_hdd_partitions_manuell_flash
327     fi
328     fi
329     }
330    
331     dialog_setup_hdd_partitions_auto()
332     {
333     local i
334    
335     if [[ -z ${installdevs} ]]
336     then
337     dialog \
338     --backtitle "${TITLE}" \
339     --ok-label "Beenden" \
340     --msgbox "Kein geeignetes Laufwerk gefunden.\nDie Installation ist fehlgeschlagen." 6 70
341     exit 1
342     else
343    
344     echo "dialog \\" > /tmp/hddtmp.sh
345     echo "--backtitle \"${TITLE}\" \\" >> /tmp/hddtmp.sh
346     echo "--ok-label \"Weiter\" \\" >> /tmp/hddtmp.sh
347     echo "--cancel-label \"Beenden\" \\" >> /tmp/hddtmp.sh
348     echo "--stdout \\" >> /tmp/hddtmp.sh
349     echo "--menu \"Installations Laufwerk auswaehlen:\" 10 70 3 \\" >> /tmp/hddtmp.sh
350    
351     for i in ${installdevs}
352     do
353     echo "\"${i}\" \"\" \\" >> /tmp/hddtmp.sh
354     done
355     echo -e "\n" >> /tmp/hddtmp.sh
356    
357     chmod a+x /tmp/hddtmp.sh
358     HDD="$(/tmp/hddtmp.sh)"
359     RES=$?
360     [[ ${RES} -eq 1 ]] && return 1
361     if [[ ${RES} -eq 0 ]]
362     then
363     dialog_setup_hdd_info_auto
364     dialog_setup_hdd_create_partitions
365     setup_hdd_partitions_auto
366     fi
367     fi
368     }
369    
370     dialog_setup_hdd_create_partitions()
371     {
372     dialog \
373     --backtitle "${TITLE}" \
374     --infobox "Erstelle Disk Partitionen ..." 3 70
375     }
376    
377     dialog_setup_hdd_format()
378     {
379     dialog \
380     --backtitle "${TITLE}" \
381     --infobox "Erstelle Datei-Systeme ..." 3 70
382     }
383    
384     dialog_install_settings()
385     {
386     dialog \
387     --backtitle "${TITLE}" \
388     --infobox "Speichere System-Einstellungen ..." 3 70
389     }
390    
391     dialog_install_system_image()
392     {
393     dialog \
394     --backtitle "${TITLE}" \
395     --gauge "Kopiere System-Image ..." 6 80
396     }
397    
398     dialog_install_meter()
399     {
400     while [[ ${CURRENTLINE} != ${TOTALLINES} ]]
401     do
402     CURRENTLINE=$(grep -c . /tmp/install.log)
403     PERCENT=$(( ${CURRENTLINE} * 100 / ${TOTALLINES}))
404     echo ${PERCENT}
405     sleep 1
406     done
407     rm -f /tmp/install.log
408     return 0
409     }
410    
411    
412     dialog_install_bootsector()
413     {
414     dialog \
415     --backtitle "${TITLE}" \
416     --infobox "Schreibe den Bootsektor ..." 3 70
417     }
418    
419     dialog_install_successful()
420     {
421     dialog \
422     --backtitle "${TITLE}" \
423     --colors \
424     --msgbox "Die Installation war \Z2erfolgreich\Zn." 5 81
425     }
426    
427     dialog_install_failure()
428     {
429     dialog \
430     --backtitle "${TITLE}" \
431     --colors \
432     --msgbox "Die Installation ist \Z1Fehlgeschlagen\Zn.\n\n\
433     Fehler bei ${ERROR}, RetVal: ${RETVAL} \
434     " 10 81
435     }
436    
437     dialog_main()
438     {
439     METHOD=0
440    
441     while [[ ${METHOD} -le 2 ]]
442     do
443     METHOD=$(dialog \
444     --backtitle "${TITLE}" \
445     --no-cancel \
446     --ok-label "Weiter" \
447     --stdout \
448     --menu "Konfiguration" 14 70 5 \
449     "1" "AutoSta_LX installieren" \
450     "2" "Uebersicht gefundener Laufwerke" \
451     "3" "Beenden und neustarten" \
452     "4" "Beenden und eine Shell starten")
453     RES=$?
454     [[ ${RES} -eq 1 ]] && exit 1
455     if [[ ${RES} -eq 0 ]]
456     then
457     case ${METHOD} in
458 niro 2341 "1") dialog_setup_system_menu ;;
459 niro 2320 "2") dialog_hardware_detection ;;
460     "3") install_do_reboot ;;
461     "4") /bin/bash --login -i ;;
462     esac
463     fi
464     done
465     }
466    
467     #################################################
468     # Install Komandos #
469     #################################################
470     run_hardware_detection()
471     {
472     local hwinfo
473    
474     hwinfo="$(hwinfo --bios --storage --pci --gfxcard --sys)"
475    
476     # check for special devices/clients:
477     # if zotac a zotac and the disk is a removeable device, then add rootdelay to kernelcmd
478     local removable=0
479     if [[ ! -z $(echo "${hwinfo}" | grep -i zotac) ]]
480     then
481     for i in /sys/block/[hs]d*/removable
482     do
483     if [[ $(< ${i}) = 1 ]]
484     then
485     removable=1
486     fi
487     done
488    
489     # only add this for grub legacy, grub2 detect these settings on its own
490     export GRUBLEGACYOPTS="rootdelay=8"
491     # there are to zotac types in the wild, nvidia based gfx and intel
492     if [[ ! -z $(echo "${hwinfo}" | grep -i nouveau) ]]
493     then
494     export SPECIALDEVICE="zotac_nvidia"
495     else
496     export SPECIALDEVICE="zotac_intel"
497     fi
498     fi
499    
500     # check for special devices/clients:
501     # if a rangee and disk ist smaller then 256mb move partion one block further ahead
502     if [[ ! -z $(echo "${hwinfo}" | grep -i CLE266) ]]
503     then
504     # for a rangee always define partion startblock +1
505     export FDISKPARTIONBELOW256MB="1"
506     export SPECIALDEVICE="rangee"
507     export GRUBLEGACYOPTS=""
508     fi
509    
510     # check for special devices/clients:
511     # check for maxdata / i810/ i815 Chipsets and disable KMS and use i810fb frambuffer
512     if [[ ! -z $(echo "${hwinfo}" | grep -i i810) ]] || [[ ! -z $(echo "${hwinfo}" | grep -i i815) ]]
513     then
514     export SPECIALDEVICE="maxdata"
515     export GRUBLEGACYOPTS=""
516     fi
517    
518     # check for special devices/clients:
519     # check for laptops and activate cpufreq scaling
520     if [[ $(echo "${hwinfo}" | grep 'Formfactor:' | sed 's:.*Formfactor\:\ \"\(.*\)\":\1:') = laptop ]]
521     then
522     export FORMFACTOR="laptop"
523     export KERNELOPTS="${KERNELOPTS} cpufreq.governor=ondemand"
524     fi
525     }
526    
527     hdd_size_below_256mb()
528     {
529     local hdd="$1"
530     local size
531     local retval
532 niro 2336 [[ -z ${hdd} ]] && dialog_die "Error: get_hdd_size() no \$hdd given!"
533 niro 2320
534     size=$(fdisk -l ${hdd} | grep "Disk.*${hdd}" | sed 's:.*,\ \(.*\)\ byte.*:\1:')
535     if [[ ${size} -le 257000000 ]]
536     then
537     retval="0"
538     else
539     retval="1"
540     fi
541    
542     return "${retval}"
543     }
544    
545     setup_hdd_partitions_auto()
546     {
547     ROOTHDD="${HDD}1"
548    
549     # run this only if FDISKPARTITIONBELOW256MB is not already 1
550     if [[ ${FDISKPARTIONBELOW256MB} != 1 ]]
551     then
552     if hdd_size_below_256mb ${HDD}
553     then
554     FDISKPARTIONBELOW256MB=1
555     else
556     FDISKPARTIONBELOW256MB=0
557     fi
558     fi
559    
560     ## delete disk
561 niro 2336 dd if=/dev/zero of=${HDD} count=1 &> /dev/null || dialog_die
562 niro 2320
563     if [[ ${FDISKPARTIONBELOW256MB} = 1 ]]
564     then
565     ## setup one bootable partition
566     #1. n= new disk
567     #2. p= primary disk
568     #3. 1= first partition
569     #4. 2= default sector start // small disk needs more space for grub2 mbr sector
570     #5. ''= defaul sector end
571     #6. a= bootable flag
572     #7. 1= boot flag for partition 1
573     #8. w= write/quit
574     fdisk ${HDD} &> /dev/null << EOF
575     n
576     p
577     1
578     2
579    
580     a
581     1
582     w
583     EOF
584     else
585     ## setup one bootable partition
586     #1. n= new disk
587     #2. p= primary disk
588     #3. 1= first partition
589     #4. ''= default sector start
590     #5. ''= defaul sector end
591     #6. a= bootable flag
592     #7. 1= boot flag for partition 1
593     #8. w= write/quit
594     fdisk ${HDD} &> /dev/null << EOF
595     n
596     p
597     1
598    
599    
600     a
601     1
602     w
603     EOF
604     fi
605     }
606    
607     setup_hdd_partitions_manuell()
608     {
609     BOOTHDD="${HDD}1"
610     SWAPHDD="${HDD}2"
611     ROOTHDD="${HDD}3"
612    
613     ## hdds partitionieren manuell
614 niro 2336 cfdisk ${HDD} || dialog_die
615 niro 2320 }
616    
617     setup_hdd_partitions_manuell_flash()
618     {
619     ROOTHDD="${HDD}1"
620    
621     ## hdds partitionieren manuell
622 niro 2336 cfdisk ${HDD} || dialog_die
623 niro 2320 }
624    
625     setup_hdd_format()
626     {
627 niro 2336 mkswap ${SWAPHDD} || dialog_die
628     mke2fs -j -q ${BOOTHDD} || dialog_die
629     mke2fs -j -q ${ROOTHDD} || dialog_die
630 niro 2320 }
631    
632     setup_hdd_format_flash()
633     {
634 niro 2336 mke2fs -j -q ${ROOTHDD} || dialog_die
635 niro 2320 }
636    
637     install_mount_rootfs()
638     {
639 niro 2336 swapon ${SWAPHDD} || dialog_die
640 niro 2342 mount ${ROOTHDD} ${INSTALLROOT} || dialog_die
641     install -d ${INSTALLROOT}/boot || dialog_die
642     mount ${BOOTHDD} ${INSTALLROOT}/boot || dialog_die
643     cd ${INSTALLROOT} || dialog_die
644 niro 2320 }
645    
646     install_mount_rootfs_flash()
647     {
648 niro 2342 mount ${ROOTHDD} ${INSTALLROOT} || dialog_die
649     install -d ${INSTALLROOT}/boot || dialog_die
650     cd ${INSTALLROOT} || dialog_die
651 niro 2320 }
652    
653     install_system_image()
654     {
655 niro 2342 tar xvjpf ${CDPATH}/system/${CDIMAGENAME} -C ${INSTALLROOT}
656 niro 2320 }
657    
658     install_bootsector_chroot()
659     {
660     local my_roothdd
661 niro 2342 local grubconf=${INSTALLROOT}/boot/grub/grub.conf
662 niro 2320 local grub2conf=/boot/grub/grub.cfg
663    
664     # check for grub2
665 niro 2342 if [[ -f ${INSTALLROOT}/sbin/grub-mkconfig ]]
666 niro 2320 then
667     # needed by grub-mkconfig on the first run
668 niro 2342 if [[ ! -f ${INSTALLROOT}/boot/grub/video.lst ]]
669 niro 2320 then
670 niro 2342 install -m0644 ${INSTALLROOT}/lib/grub/*/video.lst ${INSTALLROOT}/boot/grub/video.lst || dialog_die
671 niro 2320 fi
672    
673     # set kernelopts
674 niro 2342 if [[ -f ${INSTALLROOT}/etc/conf.d/grub ]]
675 niro 2320 then
676 niro 2342 sed -i "s:^\(export GRUB_CMDLINE_LINUX_DEFAULT=\).*:\1\"${KERNELOPTS}\":" ${INSTALLROOT}/etc/conf.d/grub || dialog_die
677 niro 2320 else
678 niro 2342 echo "export GRUB_CMDLINE_LINUX_DEFAULT=\"${KERNELOPTS}\"" > ${INSTALLROOT}/etc/conf.d/grub || dialog_die
679 niro 2320 fi
680 niro 2342 echo 'grub-mkdevicemap' > ${INSTALLROOT}/root/.installrc || dialog_die
681     echo "LC_ALL=C grub-mkconfig -o ${grub2conf} &> /dev/null" >> ${INSTALLROOT}/root/.installrc || dialog_die
682     echo "grub-install --no-floppy ${HDD} &> /dev/null" >> ${INSTALLROOT}/root/.installrc || dialog_die
683     echo "exit 0" >> ${INSTALLROOT}/root/.installrc || dialog_die
684 niro 2320
685     # grub-legacy
686     else
687     ### grubconf schreiben
688 niro 2342 source ${INSTALLROOT}/boot/kernelversion
689 niro 2320
690     #for alx only
691 niro 2342 if [ -e ${INSTALLROOT}/etc/alx_version ]
692 niro 2320 then
693     OLD_ALXVER="${ALXVER}"
694 niro 2342 source ${INSTALLROOT}/etc/alx_version
695 niro 2320 KRNVER="ALX-${ALXVER}"
696     ALXVER="${OLD_ALXVER}"
697     fi
698    
699     [[ -z ${KRNVER} ]] && KRNVER="AutoSta_LX"
700     [[ -z ${KRNINITRD} ]] && KRNINITRD="initrd"
701     [[ -z ${KRNIMG} ]] && KRNIMG="vmlinuz"
702    
703     # uuid support
704     if is_uuid_supported
705     then
706     my_roothdd="UUID=$(get_uuid ${ROOTHDD})"
707     else
708     my_roothdd="${ROOTHDD}"
709     fi
710    
711 niro 2336 : > ${grubconf} || dialog_die
712     echo "default 0" >> ${grubconf} || dialog_die
713     echo "timeout 3" >> ${grubconf} || dialog_die
714 niro 2320 # using current root password
715 niro 2342 echo "password --md5 $(cat ${INSTALLROOT}/etc/shadow | grep root | cut -d: -f2)" >> ${grubconf} || dialog_die
716 niro 2320
717 niro 2336 echo >> ${grubconf} || dialog_die
718     echo "# normal boot" >> ${grubconf} || dialog_die
719     echo "title ${KRNVER}" >> ${grubconf} || dialog_die
720     echo "root (hd0,0)" >> ${grubconf} || dialog_die
721     echo "kernel /boot/${KRNIMG} root=${my_roothdd} ${KERNELOPTS} ${GRUBLEGACYOPTS}" >> ${grubconf} || dialog_die
722 niro 2320 if is_initrd_supported
723     then
724 niro 2336 echo "initrd /boot/${KRNINITRD}" >> ${grubconf} || dialog_die
725 niro 2320 fi
726    
727 niro 2336 echo >> ${grubconf} || dialog_die
728     echo "# admin boot" >> ${grubconf} || dialog_die
729     echo "title ${KRNVER} - Re-run hardware-detection" >> ${grubconf} || dialog_die
730     echo "lock" >> ${grubconf} || dialog_die
731     echo "root (hd0,0)" >> ${grubconf} || dialog_die
732     echo "kernel /boot/${KRNIMG} root=${my_roothdd} ${KERNELOPTS} ${GRUBLEGACYOPTS} hardware-auto-detection" >> ${grubconf} || dialog_die
733 niro 2320 if is_initrd_supported
734     then
735 niro 2336 echo "initrd /boot/${KRNINITRD}" >> ${grubconf} || dialog_die
736 niro 2320 fi
737    
738 niro 2336 echo >> ${grubconf} || dialog_die
739     echo "title ${KRNVER} - Reset *all* local settings" >> ${grubconf} || dialog_die
740     echo "lock" >> ${grubconf} || dialog_die
741     echo "root (hd0,0)" >> ${grubconf} || dialog_die
742     echo "kernel /boot/${KRNIMG} root=${my_roothdd} ${KERNELOPTS} ${GRUBLEGACYOPTS} alx-reset-settings" >> ${grubconf} || dialog_die
743 niro 2320 if is_initrd_supported
744     then
745 niro 2336 echo "initrd /boot/${KRNINITRD}" >> ${grubconf} || dialog_die
746 niro 2320 fi
747    
748     # bootsector schreiben chrooted schreiben (lfs/magellan)
749 niro 2342 cat > ${INSTALLROOT}/root/.installrc << CHROOTEOF
750 niro 2320 /usr/sbin/grub --no-floppy --batch << "EOF" 1> /dev/null 2> /dev/null
751     root (hd0,0)
752     setup (hd0)
753     quit
754     EOF
755     exit 0
756     CHROOTEOF
757     fi
758    
759 niro 2336 ## enter chroot
760 niro 2342 mount -t proc proc ${INSTALLROOT}/proc
761     mount -t sysfs sysfs ${INSTALLROOT}/sys
762     mount -o bind /dev ${INSTALLROOT}/dev
763     chroot ${INSTALLROOT} /bin/bash --rcfile /root/.installrc -i
764     umount ${INSTALLROOT}/proc
765     umount ${INSTALLROOT}/sys
766     umount ${INSTALLROOT}/dev
767     rm ${INSTALLROOT}/root/.installrc
768 niro 2320 }
769    
770     is_initrd_supported()
771     {
772     # only generate initrds if the cmd exists
773 niro 2342 [[ -x ${INSTALLROOT}/sbin/mkinitrd ]] && return 0
774 niro 2320 return 1
775     }
776    
777     install_initrd_chroot()
778     {
779     # only generate initrds if the cmd exists
780     is_initrd_supported || return 0
781    
782     DISKMODS="sd_mod"
783     OLDPATAMODS="amd74xx piix sis5513 via82cxxx"
784     PATAMODS="ata_piix pata_amd pata_mpiix pata_oldpiix pata_sis pata_via"
785     SATAMODS="sata_via sata_sis sata_nv"
786     DRMMODS="i915 mga nouveau r128 radeon savage sis tdfx ttm via"
787     OTHERMODS=""
788     case ${SPECIALDEVICE} in
789     zotac_intel) FBMODS=""; DRMMODS="i915" ;;
790     zotac_nvidia) FBMODS=""; DRMMODS="nouveau" ;;
791     rangee) FBMODS="" ;; ## fallback to vesafb, viafb does not run on all CLE266 boards
792     # not working with kms enabled drivers -> segfaults
793     #maxdata) FBMODS="i810fb" ;; ## check for maxdata / i810/ i815 Chipsets and disable KMS and use i810fb frambuffer
794     maxdata) FBMODS="" ;;
795     *) FBMODS="uvesafb" ;;
796     esac
797    
798     if [[ ${FORMFACTOR} = laptop ]]
799     then
800     OTHERMODS="acpi-cpufreq cpufreq_ondemand cpufreq_conservative cpufreq_powersave"
801     fi
802    
803     # install an appropriate uvesafb.conf
804 niro 2342 install -d ${INSTALLROOT}/etc/modprobe.d || dialog_die
805     echo "options uvesafb mode_option=1024x768-32@60 scroll=ywrap" > ${INSTALLROOT}/etc/modprobe.d/uvesafb.conf || dialog_die
806 niro 2320
807     # install an appropriate viafb.conf
808 niro 2342 echo "options viafb viafb_mode=1024x768 viafb_refresh=60" > ${INSTALLROOT}/etc/modprobe.d/viafb.conf || dialog_die
809 niro 2320
810     # install an appropriate i810fb.conf
811 niro 2342 echo "options i810fb xres=1024 yres=768 bpp=16 mtrr=1 hsync1=30 hsync2=62 vsync1=30 vsync2=60" > ${INSTALLROOT}/etc/modprobe.d/i810fb.conf || dialog_die
812 niro 2320
813 niro 2342 cat > ${INSTALLROOT}/root/.installrc << CHROOTEOF
814 niro 2320 echo "MODULES=\"${FORMAT_FILESYSTEM} ${DISKMODS} ${OLDATAMODS} ${PATAMODS} ${SATAMODS} ${DRMMODS} ${FBMODS} ${OTHERMODS}\"" > /etc/conf.d/mkinitrd
815     mkinitrd -f /boot/$(readlink /boot/initrd) $(readlink /boot/vmlinuz | sed "s:kernel-::g") > /dev/null
816     exit 0
817     CHROOTEOF
818    
819     ## enters chroot
820 niro 2342 mount -t proc proc ${INSTALLROOT}/proc
821     mount -t sysfs sysfs ${INSTALLROOT}/sys
822     mount -o bind /dev ${INSTALLROOT}/dev
823     chroot ${INSTALLROOT} /bin/bash --rcfile /root/.installrc -i
824     umount ${INSTALLROOT}/proc
825     umount ${INSTALLROOT}/sys
826     umount ${INSTALLROOT}/dev
827     rm ${INSTALLROOT}/root/.installrc
828 niro 2320 }
829    
830     is_uuid_supported()
831     {
832     if [[ -x $(which busybox.mkinitrd &> /dev/null) ]]
833     then
834     # only detect uuids if supported
835     if [[ ! -z $(busybox.mkinitrd | grep blkid) ]]
836     then
837     return 0
838     fi
839     fi
840    
841     return 1
842     }
843    
844     get_uuid()
845     {
846     local UUID
847     local SEC_TYPE
848     local TYPE
849    
850     local dev="$1"
851 niro 2336 [[ -z ${dev} ]] && dialog_die "no dev given"
852 niro 2320
853     # check if given device is already an UUID
854     if [[ ${dev/UUID=/}x != ${dev}x ]]
855     then
856     eval "${dev}"
857     else
858     eval $(busybox.mkinitrd blkid ${dev} | grep "${dev}:" | sed 's/.*:\ //')
859     fi
860     echo "${UUID}"
861     }
862    
863     install_system_settings()
864     {
865     # schreibe fstab
866     if is_uuid_supported
867     then
868 niro 2342 echo -e "UUID=$(get_uuid ${BOOTHDD})\t/boot\t${FORMAT_FILESYSTEM}\tnoatime,noauto\t1 1" > ${INSTALLROOT}/etc/fstab || dialog_die
869     echo -e "UUID=$(get_uuid ${ROOTHDD})\t/\t${FORMAT_FILESYSTEM}\tnoatime\t0 0" >> ${INSTALLROOT}/etc/fstab || dialog_die
870 niro 2320 else
871 niro 2342 echo -e "${BOOTHDD}\t/boot\t${FORMAT_FILESYSTEM}\tnoatime,noauto\t1 1" > ${INSTALLROOT}/etc/fstab || dialog_die
872     echo -e "${ROOTHDD}\t/\t${FORMAT_FILESYSTEM}\tnoatime\t0 0" >> ${INSTALLROOT}/etc/fstab || dialog_die
873 niro 2320 fi
874     # not needed busybox loads all with swapon -a, even if not mentioned in fstab
875 niro 2342 #echo -e "UUID='$(get_uuid ${SWAPHDD})'\tswap\tswap\tpri=1\t0 0" >> ${INSTALLROOT}/etc/fstab || dialog_die
876     echo -e "proc\t/proc\tproc\tdefaults\t0 0" >> ${INSTALLROOT}/etc/fstab || dialog_die
877     echo -e "shm\t/dev/shm\ttmpfs\tdefaults\t0 0" >> ${INSTALLROOT}/etc/fstab || dialog_die
878 niro 2320
879     # install network config skeleton
880 niro 2342 install -m0644 ${INSTALLROOT}/etc/alxconfig-ng/skel/net/net.eth0 ${INSTALLROOT}/etc/conf.d/ || dialog_die
881 niro 2320
882     # intel framebufer quirk
883     if [[ -e /proc/fb ]]
884     then
885     if [[ ! -z $(grep 'inteldrmfb' /proc/fb) ]]
886     then
887     fbdev=$(grep 'inteldrmfb' /proc/fb | sed 's:\([0-9]\).*:\1:')
888     if [[ ${fbdev} != 0 ]]
889     then
890 niro 2342 sed -i "s:^\(SPLASH_DEV=\).*:\1\"/dev/fb${fbdev}\":" ${INSTALLROOT}/etc/splash/splash.conf || dialog_die
891 niro 2320 fi
892     fi
893     fi
894     }
895    
896     install_system_settings_flash()
897     {
898     # schreibe fstab
899     if is_uuid_supported
900     then
901 niro 2342 echo -e "UUID=$(get_uuid ${ROOTHDD})\t/\t${FORMAT_FILESYSTEM}\tnoatime\t0 0" > ${INSTALLROOT}/etc/fstab || dialog_die
902 niro 2320 else
903 niro 2342 echo -e "${ROOTHDD}\t/\t${FORMAT_FILESYSTEM}\tnoatime\t0 0" > ${INSTALLROOT}/etc/fstab || dialog_die
904 niro 2320 fi
905 niro 2342 echo -e "proc\t/proc\tproc\tdefaults\t0 0" >> ${INSTALLROOT}/etc/fstab || dialog_die
906     echo -e "shm\t/dev/shm\ttmpfs\tdefaults\t0 0" >> ${INSTALLROOT}/etc/fstab || dialog_die
907 niro 2320 }
908    
909     install_umount_rootfs()
910     {
911     cd /
912 niro 2342 umount ${INSTALLROOT}/boot || dialog_die
913     umount ${INSTALLROOT} || dialog_die
914 niro 2336 swapoff ${SWAPHDD} || dialog_die
915 niro 2320 }
916    
917     install_umount_rootfs_flash()
918     {
919     cd /
920 niro 2342 umount ${INSTALLROOT} || dialog_die
921 niro 2320 }
922    
923     install_do_reboot()
924     {
925     reboot
926     }
927    
928     #################################################
929     # Install Ablauf Scripte #
930     #################################################
931    
932     run_install_normal()
933     {
934     dialog_hardware_detection
935    
936     dialog_setup_hdd_partitions_manuell
937     dialog_setup_hdd_format
938     setup_hdd_format > /dev/null
939     install_mount_rootfs
940     (install_system_image > /tmp/install.log) 2> /tmp/install_errors.log | dialog_install_meter | dialog_install_system_image
941    
942     dialog_install_settings
943     sleep 1
944     install_system_settings
945     install_initrd_chroot
946    
947     dialog_install_bootsector
948     install_bootsector_chroot
949    
950     install_umount_rootfs
951     dialog_install_successful
952     }
953    
954     run_install_flash()
955     {
956     dialog_hardware_detection
957    
958     dialog_setup_hdd_partitions_manuell_flash
959     dialog_setup_hdd_format
960     setup_hdd_format_flash > /dev/null
961     install_mount_rootfs_flash
962     (install_system_image > /tmp/install.log) 2> /tmp/install_errors.log | dialog_install_meter | dialog_install_system_image
963    
964     dialog_install_settings
965     sleep 1
966     install_system_settings_flash
967     install_initrd_chroot
968    
969     dialog_install_bootsector
970     install_bootsector_chroot
971    
972     install_umount_rootfs_flash
973     dialog_install_successful
974     }
975    
976     run_install_auto()
977     {
978     dialog_hardware_detection
979    
980     dialog_setup_hdd_partitions_auto
981     dialog_setup_hdd_format
982     setup_hdd_format_flash > /dev/null
983     install_mount_rootfs_flash
984     (install_system_image > /tmp/install.log) 2> /tmp/install_errors.log | dialog_install_meter | dialog_install_system_image
985    
986     dialog_install_settings
987     sleep 1
988     install_system_settings_flash
989     install_initrd_chroot
990    
991     dialog_install_bootsector
992     install_bootsector_chroot
993    
994     install_umount_rootfs_flash
995     dialog_install_successful
996     }
997    
998     dialog_main
999    
1000     exit 0