Magellan Linux

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

Parent Directory Parent Directory | Revision Log Revision Log


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