Magellan Linux

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

Parent Directory Parent Directory | Revision Log Revision Log


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