Magellan Linux

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

Parent Directory Parent Directory | Revision Log Revision Log


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