Magellan Linux

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 2342 - (show annotations) (download)
Fri Jan 3 14:57:23 2014 UTC (10 years, 3 months ago) by niro
File size: 24455 byte(s)
-renamed INSTALLPATH variable to INSTALLROOT
1 #!/bin/bash
2 # $Id$
3 #
4 # Simple Installation Script
5 # merged from alxinstall-ng and mcore-installer
6 #
7 # Niels Rogalla <niro@magellan-linux.de>
8 #
9
10 # ignore the environment
11 LC_ALL=C
12 # include dir
13 INSTALLER_LIBDIR="%LIBDIR%"
14
15 # TOTALLINES=linecount of ${CDIMAGENAME}-tarball -1 !
16 # -> now in images.conf
17 CURRENTLINE=0
18
19 # 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
27 # TOTALLINES=linecount of ${CDIMAGENAME}-tarball -1 !
28 # -> now in images.conf
29 CDIMAGENAME=""
30 TOTALLINES=""
31 CURRENTLINE=0
32 if [ -e /mnt/cdrom/system/images.conf ]
33 then
34 source /mnt/cdrom/system/images.conf
35 # 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 else
39 die "/mnt/cdrom/system/images.conf not found"
40 fi
41
42 # includes
43 source ${INSTALLER_LIBDIR}/functions/hwdetection.sh
44
45 ### System/Config Version
46 VERSION="%VERSIONTAG%"
47 TITLE="${DEFAULT_TITLE} - ${VERSION}"
48
49 CDPATH="${DEFAULT_CDPATH}"
50 INSTALLROOT="${DEFAULT_INSTALLROOT}"
51
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 FORMAT_FILESYSTEM="${DEFAULT_FILESYSTEM}"
68
69 #################################################
70 # DIALOG BOXEN #
71 #################################################
72
73 die()
74 {
75 echo "Error: $@"
76 exit 1
77 }
78
79 dialog_die()
80 {
81 ERROR="$1"
82 RETVAL="$?"
83 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 "2") run_install_normal ;;
172 "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 "1") dialog_setup_system_menu ;;
459 "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 [[ -z ${hdd} ]] && dialog_die "Error: get_hdd_size() no \$hdd given!"
533
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 dd if=/dev/zero of=${HDD} count=1 &> /dev/null || dialog_die
562
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 cfdisk ${HDD} || dialog_die
615 }
616
617 setup_hdd_partitions_manuell_flash()
618 {
619 ROOTHDD="${HDD}1"
620
621 ## hdds partitionieren manuell
622 cfdisk ${HDD} || dialog_die
623 }
624
625 setup_hdd_format()
626 {
627 mkswap ${SWAPHDD} || dialog_die
628 mke2fs -j -q ${BOOTHDD} || dialog_die
629 mke2fs -j -q ${ROOTHDD} || dialog_die
630 }
631
632 setup_hdd_format_flash()
633 {
634 mke2fs -j -q ${ROOTHDD} || dialog_die
635 }
636
637 install_mount_rootfs()
638 {
639 swapon ${SWAPHDD} || dialog_die
640 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 }
645
646 install_mount_rootfs_flash()
647 {
648 mount ${ROOTHDD} ${INSTALLROOT} || dialog_die
649 install -d ${INSTALLROOT}/boot || dialog_die
650 cd ${INSTALLROOT} || dialog_die
651 }
652
653 install_system_image()
654 {
655 tar xvjpf ${CDPATH}/system/${CDIMAGENAME} -C ${INSTALLROOT}
656 }
657
658 install_bootsector_chroot()
659 {
660 local my_roothdd
661 local grubconf=${INSTALLROOT}/boot/grub/grub.conf
662 local grub2conf=/boot/grub/grub.cfg
663
664 # check for grub2
665 if [[ -f ${INSTALLROOT}/sbin/grub-mkconfig ]]
666 then
667 # needed by grub-mkconfig on the first run
668 if [[ ! -f ${INSTALLROOT}/boot/grub/video.lst ]]
669 then
670 install -m0644 ${INSTALLROOT}/lib/grub/*/video.lst ${INSTALLROOT}/boot/grub/video.lst || dialog_die
671 fi
672
673 # set kernelopts
674 if [[ -f ${INSTALLROOT}/etc/conf.d/grub ]]
675 then
676 sed -i "s:^\(export GRUB_CMDLINE_LINUX_DEFAULT=\).*:\1\"${KERNELOPTS}\":" ${INSTALLROOT}/etc/conf.d/grub || dialog_die
677 else
678 echo "export GRUB_CMDLINE_LINUX_DEFAULT=\"${KERNELOPTS}\"" > ${INSTALLROOT}/etc/conf.d/grub || dialog_die
679 fi
680 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
685 # grub-legacy
686 else
687 ### grubconf schreiben
688 source ${INSTALLROOT}/boot/kernelversion
689
690 #for alx only
691 if [ -e ${INSTALLROOT}/etc/alx_version ]
692 then
693 OLD_ALXVER="${ALXVER}"
694 source ${INSTALLROOT}/etc/alx_version
695 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 : > ${grubconf} || dialog_die
712 echo "default 0" >> ${grubconf} || dialog_die
713 echo "timeout 3" >> ${grubconf} || dialog_die
714 # using current root password
715 echo "password --md5 $(cat ${INSTALLROOT}/etc/shadow | grep root | cut -d: -f2)" >> ${grubconf} || dialog_die
716
717 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 if is_initrd_supported
723 then
724 echo "initrd /boot/${KRNINITRD}" >> ${grubconf} || dialog_die
725 fi
726
727 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 if is_initrd_supported
734 then
735 echo "initrd /boot/${KRNINITRD}" >> ${grubconf} || dialog_die
736 fi
737
738 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 if is_initrd_supported
744 then
745 echo "initrd /boot/${KRNINITRD}" >> ${grubconf} || dialog_die
746 fi
747
748 # bootsector schreiben chrooted schreiben (lfs/magellan)
749 cat > ${INSTALLROOT}/root/.installrc << CHROOTEOF
750 /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 ## enter chroot
760 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 }
769
770 is_initrd_supported()
771 {
772 # only generate initrds if the cmd exists
773 [[ -x ${INSTALLROOT}/sbin/mkinitrd ]] && return 0
774 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 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
807 # install an appropriate viafb.conf
808 echo "options viafb viafb_mode=1024x768 viafb_refresh=60" > ${INSTALLROOT}/etc/modprobe.d/viafb.conf || dialog_die
809
810 # install an appropriate i810fb.conf
811 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
813 cat > ${INSTALLROOT}/root/.installrc << CHROOTEOF
814 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 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 }
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 [[ -z ${dev} ]] && dialog_die "no dev given"
852
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 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 else
871 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 fi
874 # not needed busybox loads all with swapon -a, even if not mentioned in fstab
875 #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
879 # install network config skeleton
880 install -m0644 ${INSTALLROOT}/etc/alxconfig-ng/skel/net/net.eth0 ${INSTALLROOT}/etc/conf.d/ || dialog_die
881
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 sed -i "s:^\(SPLASH_DEV=\).*:\1\"/dev/fb${fbdev}\":" ${INSTALLROOT}/etc/splash/splash.conf || dialog_die
891 fi
892 fi
893 fi
894 }
895
896 install_system_settings_flash()
897 {
898 # schreibe fstab
899 if is_uuid_supported
900 then
901 echo -e "UUID=$(get_uuid ${ROOTHDD})\t/\t${FORMAT_FILESYSTEM}\tnoatime\t0 0" > ${INSTALLROOT}/etc/fstab || dialog_die
902 else
903 echo -e "${ROOTHDD}\t/\t${FORMAT_FILESYSTEM}\tnoatime\t0 0" > ${INSTALLROOT}/etc/fstab || dialog_die
904 fi
905 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 }
908
909 install_umount_rootfs()
910 {
911 cd /
912 umount ${INSTALLROOT}/boot || dialog_die
913 umount ${INSTALLROOT} || dialog_die
914 swapoff ${SWAPHDD} || dialog_die
915 }
916
917 install_umount_rootfs_flash()
918 {
919 cd /
920 umount ${INSTALLROOT} || dialog_die
921 }
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