Magellan Linux

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

Parent Directory Parent Directory | Revision Log Revision Log


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