Magellan Linux

Annotation of /alx-src/trunk/alxinstall-ng/bin/alxinstall-ng.sh.in

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1123 - (hide annotations) (download) (as text)
Tue Aug 4 18:09:51 2009 UTC (14 years, 9 months ago) by niro
Original Path: alx-src/trunk/alxinstall-ng/bin/alxinstall-ng.sh
File MIME type: application/x-sh
File size: 13206 byte(s)
-fixed grub.conf setup
1 niro 258 #!/bin/sh
2     #
3 niro 531 # $Header: /home/cvsd/alx-cvs/alx-src/alxinstall-ng/bin/alxinstall-ng.sh,v 1.15 2008-06-28 00:37:45 niro Exp $
4 niro 258 #
5     # AutoSta_LX Installation Script
6     #
7     # Niels Rogalla <niro@magellan-linux.de>
8     # <rogalla@augusta-bochum.de>
9     #
10     #
11     # Install Navigation Gui
12     #
13    
14     #images: (get ${CDIMAGENAME})
15     source /mnt/cdrom/system/images.conf
16    
17     #Includes
18     source /usr/lib/alxinstall-ng/functions/findhdd.sh > /dev/null
19     ### bugfix ###############################
20 niro 524 cdromdev="$(echo ${cdromdev} | sed 's/ //')"
21 niro 258 ########################################
22    
23     ### System/Config Version
24 niro 1123 VERSION="0.3.2"
25 niro 258 TITLE="alxinstall-ng - ${VERSION}"
26    
27     CDPATH="/mnt/cdrom"
28     INSTALLPATH="/mnt/magellan"
29    
30     ### WICHTIG: anzahl lines in der autosta_lx.tar.gz -1
31     CURRENTLINE=0
32     #TOTALLINES=11072 # -> now in images.conf
33    
34    
35     #################################################
36     # DIALOG BOXEN #
37     #################################################
38    
39 niro 520 die()
40     {
41 niro 258 ERROR=$1
42     RETVAL=$?
43     dialog_install_failure
44     exit 1
45     }
46    
47 niro 520 dialog_warning()
48     {
49 niro 258 dialog \
50 niro 520 --backtitle "${TITLE}" \
51 niro 258 --colors \
52     --defaultno \
53     --yesno "\Z1 !!! Achtung !!! \Zn\n\n\
54     Diese Festplatte wird unwiederruflich geloescht werden.\n\n\
55     Soll ich wirklich fortfahren ?" 10 70
56     RES=$?
57 niro 520 if [[ ${RES} -eq 1 ]]
58 niro 258 then
59     clear
60     echo "Der Vorgang wurde abgebrochen."
61     exit 1
62     fi
63     }
64    
65 niro 520 dialog_setup_hdd_info()
66     {
67     local SHDD="$(echo ${HDD} | sed 's/\/dev\///')"
68 niro 258
69     dialog \
70     --colors \
71     --title "[ Festplatten Partitionierung ]" \
72 niro 520 --backtitle "${TITLE}" \
73 niro 258 --ok-label "Weiter" \
74     --msgbox "\nBitte legen Sie 3 Partitionen an.\n\n\
75     [ \Z3${SHDD}1\Zn ] Typ: \Z3Linux\Zn mit ca. 50MB\n\
76     [ \Z3${SHDD}2\Zn ] Typ: \Z3Linux Swap\Zn mit ca. 256MB\n\
77     [ \Z3${SHDD}3\Zn ] Typ: \Z3Linux \Zn mit dem Rest (min. 256MB)\n\n\
78     Bitte ${SHDD}1 als \Z3bootable\Zn markieren." 12 81
79     }
80    
81 niro 520 dialog_setup_hdd_info_flash()
82     {
83     local SHDD="$(echo $HDD | sed 's/\/dev\///')"
84 niro 258
85 niro 280 dialog \
86     --colors \
87     --title "[ Festplatten Partitionierung ]" \
88 niro 520 --backtitle "${TITLE}" \
89 niro 280 --ok-label "Weiter" \
90     --msgbox "\nBitte legen Sie 1 Partition an.\n\n\
91     [ \Z3${SHDD}1\Zn ] Typ: \Z3Linux\Zn mit dem gesamten Speicher\n\
92     Bitte ${SHDD}1 als \Z3bootable\Zn markieren." 12 81
93     }
94    
95 niro 520 dialog_setup_system_menu()
96     {
97     local i
98 niro 280
99 niro 520 i=$(dialog \
100     --backtitle "${TITLE}" \
101 niro 258 --title "[ Festplatten Partitionierung ]" \
102     --cancel-label "Abbrechen" \
103     --ok-label "Weiter" \
104     --stdout \
105 niro 280 --menu "\nWaehlen Sie die Installations-Methode" 14 70 5 \
106     "1" "Normale IDE-Disk" \
107 niro 520 "2" "Flash-Speicher")
108 niro 258 RES=$?
109 niro 520 [[ ${RES} -eq 1 ]] && return 1
110     if [[ ${RES} -eq 0 ]]
111     then
112     case "${i}" in
113     "1") run_install_normal ;;
114     "2") run_install_flash ;;
115 niro 258 esac
116     fi
117     }
118    
119 niro 520 dialog_setup_hdd_found_manuell()
120     {
121     local i
122 niro 258
123 niro 520 [[ ! -z ${installdevs} ]] && installdevs=""
124    
125 niro 258 echo "dialog \\" > /tmp/hddtmp.sh
126 niro 520 echo "--backtitle \"${TITLE}\" \\" >> /tmp/hddtmp.sh
127 niro 258 echo "--ok-label \"Weiter\" \\" >> /tmp/hddtmp.sh
128     echo "--stdout \\" >> /tmp/hddtmp.sh
129     echo "--colors \\" >> /tmp/hddtmp.sh
130     echo "--msgbox \"Gefundene Hardware:\n\n \\" >> /tmp/hddtmp.sh
131     echo " Festplatten:\n \\" >> /tmp/hddtmp.sh
132    
133 niro 520 if [[ ! -z ${scsidisks} ]]
134 niro 258 then
135 niro 520 for i in ${scsidisks}
136 niro 258 do
137 niro 520 if [[ ${i} != ${cdromdev} ]]
138 niro 258 then
139 niro 520 echo " \\Z7SCSI: \\Z3${i}\\Zn\n \\" >> /tmp/hddtmp.sh
140     installdevs="${installdevs} ${i}"
141 niro 258 fi
142     done
143     fi
144    
145 niro 520 if [[ ! -z ${idedisks} ]]
146 niro 258 then
147 niro 520 for i in ${idedisks}
148 niro 258 do
149 niro 520 if [[ ${i} != ${cdromdev} ]]
150 niro 258 then
151 niro 520 echo " \\Z7IDE: \\Z3${i}\\Zn\n \\" >> /tmp/hddtmp.sh
152     installdevs="${installdevs} ${i}"
153 niro 258 fi
154     done
155     fi
156    
157 niro 520 if [[ ! -z ${cdromdev} ]]
158 niro 258 then
159     echo " \n \\" >> /tmp/hddtmp.sh
160     echo " \\Z7andere Laufwerke:\n \\" >> /tmp/hddtmp.sh
161 niro 520 echo " CDROM: \\Z3${cdromdev}\\Zn\n \\" >> /tmp/hddtmp.sh
162 niro 258 fi
163     echo " \" 13 70" >> /tmp/hddtmp.sh
164     chmod a+x /tmp/hddtmp.sh
165     /tmp/hddtmp.sh
166     }
167    
168 niro 520 dialog_setup_hdd_partitions_manuell()
169     {
170     local i
171    
172     if [[ -z ${installdevs} ]]
173 niro 258 then
174     dialog \
175 niro 520 --backtitle "${TITLE}" \
176 niro 258 --ok-label "Beenden" \
177     --msgbox "Kein geeignetes Laufwerk gefunden.\nDie Installation ist fehlgeschlagen." 6 70
178     exit 1
179     else
180    
181     echo "dialog \\" > /tmp/hddtmp.sh
182 niro 520 echo "--backtitle \"${TITLE}\" \\" >> /tmp/hddtmp.sh
183 niro 258 echo "--ok-label \"Weiter\" \\" >> /tmp/hddtmp.sh
184     echo "--cancel-label \"Beenden\" \\" >> /tmp/hddtmp.sh
185     echo "--stdout \\" >> /tmp/hddtmp.sh
186     echo "--menu \"Installations Laufwerk auswaehlen:\" 10 70 3 \\" >> /tmp/hddtmp.sh
187    
188 niro 520 for i in ${installdevs}
189 niro 258 do
190 niro 520 echo "\"${i}\" \"\" \\" >> /tmp/hddtmp.sh
191 niro 258 done
192     echo -e "\n" >> /tmp/hddtmp.sh
193    
194     chmod a+x /tmp/hddtmp.sh
195 niro 520 HDD="$(/tmp/hddtmp.sh)"
196 niro 258 RES=$?
197 niro 520 [[ ${RES} -eq 1 ]] && return 1
198     if [[ ${RES} -eq 0 ]]
199 niro 258 then
200     dialog_setup_hdd_info
201     setup_hdd_partitions_manuell
202     fi
203     fi
204     }
205    
206 niro 520 dialog_setup_hdd_partitions_manuell_flash()
207     {
208     local i
209    
210     if [[ -z ${installdevs} ]]
211 niro 280 then
212     dialog \
213 niro 520 --backtitle "${TITLE}" \
214 niro 280 --ok-label "Beenden" \
215     --msgbox "Kein geeignetes Laufwerk gefunden.\nDie Installation ist fehlgeschlagen." 6 70
216     exit 1
217     else
218    
219     echo "dialog \\" > /tmp/hddtmp.sh
220 niro 520 echo "--backtitle \"${TITLE}\" \\" >> /tmp/hddtmp.sh
221 niro 280 echo "--ok-label \"Weiter\" \\" >> /tmp/hddtmp.sh
222     echo "--cancel-label \"Beenden\" \\" >> /tmp/hddtmp.sh
223     echo "--stdout \\" >> /tmp/hddtmp.sh
224     echo "--menu \"Installations Laufwerk auswaehlen:\" 10 70 3 \\" >> /tmp/hddtmp.sh
225    
226 niro 520 for i in ${installdevs}
227 niro 280 do
228 niro 520 echo "\"${i}\" \"\" \\" >> /tmp/hddtmp.sh
229 niro 280 done
230     echo -e "\n" >> /tmp/hddtmp.sh
231    
232     chmod a+x /tmp/hddtmp.sh
233 niro 520 HDD="$(/tmp/hddtmp.sh)"
234 niro 280 RES=$?
235 niro 520 [[ ${RES} -eq 1 ]] && return 1
236     if [[ ${RES} -eq 0 ]]
237 niro 280 then
238     dialog_setup_hdd_info_flash
239     setup_hdd_partitions_manuell_flash
240     fi
241     fi
242     }
243    
244 niro 520 dialog_setup_hdd_format()
245     {
246 niro 258 dialog \
247 niro 520 --backtitle "${TITLE}" \
248 niro 258 --infobox "Erstelle Datei-Systeme ..." 3 70
249     }
250    
251 niro 520 dialog_install_settings()
252     {
253 niro 258 dialog \
254 niro 520 --backtitle "${TITLE}" \
255 niro 258 --infobox "Speichere System-Einstellungen ..." 3 70
256     }
257    
258 niro 520 dialog_install_system_image()
259     {
260 niro 258 dialog \
261 niro 520 --backtitle "${TITLE}" \
262 niro 258 --gauge "Kopiere System-Image ..." 6 80
263     }
264    
265 niro 520 dialog_install_meter()
266     {
267     while [[ ${CURRENTLINE} != ${TOTALLINES} ]]
268     do
269 niro 525 CURRENTLINE=$(grep -c . /tmp/install.log)
270     PERCENT=$(( ${CURRENTLINE} * 100 / ${TOTALLINES}))
271 niro 258 echo ${PERCENT}
272     sleep 1
273     done
274     rm -f /tmp/install.log
275     return 0
276     }
277    
278    
279 niro 520 dialog_install_bootsector()
280     {
281 niro 258 dialog \
282 niro 520 --backtitle "${TITLE}" \
283 niro 258 --infobox "Schreibe den Bootsektor ..." 3 70
284     }
285    
286 niro 520 dialog_install_successful()
287     {
288 niro 258 dialog \
289 niro 520 --backtitle "${TITLE}" \
290 niro 258 --colors \
291     --msgbox "Die Installation war \Z2erfolgreich\Zn." 5 81
292     }
293    
294 niro 520 dialog_install_failure()
295     {
296 niro 258 dialog \
297 niro 520 --backtitle "${TITLE}" \
298 niro 258 --colors \
299     --msgbox "Die Installation ist \Z1Fehlgeschlagen\Zn.\n\n\
300 niro 520 Fehler bei ${ERROR}, RetVal: ${RETVAL} \
301 niro 258 " 10 81
302     }
303    
304 niro 520 dialog_main()
305     {
306 niro 258 METHOD=0
307    
308 niro 520 while [[ ${METHOD} -le 2 ]]
309 niro 258 do
310 niro 520 METHOD=$(dialog \
311     --backtitle "${TITLE}" \
312 niro 258 --no-cancel \
313     --ok-label "Weiter" \
314     --stdout \
315     --menu "Konfiguration" 14 70 5 \
316     "1" "AutoSta_LX installieren" \
317     "2" "Uebersicht gefundener Laufwerke" \
318     "3" "Beenden und neustarten" \
319 niro 520 "4" "Beenden und eine Shell starten")
320 niro 258 RES=$?
321 niro 524 [[ ${RES} -eq 1 ]] && exit 1
322 niro 520 if [[ ${RES} -eq 0 ]]
323     then
324     case ${METHOD} in
325     "1") dialog_setup_system_menu ;;
326     "2") dialog_setup_hdd_found_manuell ;;
327     "3") install_do_reboot ;;
328     "4") /bin/bash --login -i ;;
329 niro 258 esac
330     fi
331     done
332     }
333    
334     #################################################
335     # Install Komandos #
336     #################################################
337 niro 520 setup_hdd_partitions_manuell()
338     {
339 niro 258 BOOTHDD="${HDD}1"
340     SWAPHDD="${HDD}2"
341     ROOTHDD="${HDD}3"
342    
343     ## hdds partitionieren manuell
344 niro 520 cfdisk ${HDD} || die
345 niro 258 }
346    
347 niro 520 setup_hdd_partitions_manuell_flash()
348     {
349 niro 280 ROOTHDD="${HDD}1"
350    
351     ## hdds partitionieren manuell
352 niro 520 cfdisk ${HDD} || die
353 niro 280 }
354    
355 niro 520 setup_hdd_format()
356     {
357     mkswap ${SWAPHDD} || die
358     mke2fs -j -q ${BOOTHDD} || die
359     mke2fs -j -q ${ROOTHDD} || die
360 niro 258 }
361    
362 niro 520 setup_hdd_format_flash()
363     {
364     mke2fs -j -q ${ROOTHDD} || die
365 niro 280 }
366    
367 niro 520 install_mount_rootfs()
368     {
369     swapon ${SWAPHDD} || die
370     mount ${ROOTHDD} ${INSTALLPATH} || die
371     install -d ${INSTALLPATH}/boot || die
372     mount ${BOOTHDD} ${INSTALLPATH}/boot || die
373     cd ${INSTALLPATH} || die
374 niro 258 }
375    
376 niro 520 install_mount_rootfs_flash()
377     {
378     mount ${ROOTHDD} ${INSTALLPATH} || die
379     install -d ${INSTALLPATH}/boot || die
380     cd ${INSTALLPATH} || die
381 niro 280 }
382    
383 niro 520 install_system_image()
384     {
385 niro 258 tar xvjpf ${CDPATH}/system/${CDIMAGENAME} -C ${INSTALLPATH}
386     }
387    
388 niro 520 install_bootsector_chroot()
389     {
390 niro 258 ### grubconf schreiben
391 niro 520 source ${INSTALLPATH}/boot/kernelversion
392 niro 258
393     #for alx only
394     if [ -e ${INSTALLPATH}/etc/alx_version ]
395     then
396     OLD_ALXVER="${ALXVER}"
397     source ${INSTALLPATH}/etc/alx_version
398     KRNVER="ALX-${ALXVER}"
399     ALXVER="${OLD_ALXVER}"
400     fi
401 niro 522
402 niro 520 [[ -z ${KRNVER} ]] && KRNVER="AutoSta_LX"
403     [[ -z ${KRNINITRD} ]] && KRNINITRD="initrd"
404 niro 258
405 niro 1123 local grubconf=${INSTALLPATH}/boot/grub/grub.conf
406     : > ${grubconf} || die
407     echo "default 0" >> ${grubconf} || die
408     echo "timeout 3" >> ${grubconf} || die
409     # using current root password
410     echo "password --md5 $(cat ${INSTALLPATH}/etc/shadow | grep root | cut -d: -f2)" >> ${grubconf} || die
411 niro 522
412 niro 1123 echo >> ${grubconf} || die
413     echo "# normal boot" >> ${grubconf} || die
414     echo "title ${KRNVER}" >> ${grubconf} || die
415     echo "root (hd0,0)" >> ${grubconf} || die
416     echo "kernel /boot/vmlinuz root=${ROOTHDD} quiet" >> ${grubconf} || die
417     echo "initrd /boot/initrd" >> ${grubconf} || die
418    
419     echo >> ${grubconf} || die
420     echo "# admin boot" >> ${grubconf} || die
421     echo "title ${KRNVER} - Re-run hardware-detection" >> ${grubconf} || die
422     echo "lock" >> ${grubconf} || die
423     echo "root (hd0,0)" >> ${grubconf} || die
424     echo "kernel /boot/vmlinuz root=${ROOTHDD} quiet hardware-auto-detection" >> ${grubconf} || die
425     echo "initrd /boot/initrd" >> ${grubconf} || die
426    
427     echo >> ${grubconf} || die
428     echo "title ${KRNVER} - Reset *all* local settings" >> ${grubconf} || die
429     echo "lock" >> ${grubconf} || die
430     echo "root (hd0,0)" >> ${grubconf} || die
431     echo "kernel /boot/vmlinuz root=${ROOTHDD} quiet alx-reset-settings" >> ${grubconf} || die
432     echo "initrd /boot/initrd" >> ${grubconf} || die
433    
434 niro 522 # bootsector schreiben chrooted schreiben (lfs/magellan)
435     cat > ${INSTALLPATH}/root/.bashrc << CHROOTEOF
436 niro 258 /usr/sbin/grub --no-floppy --batch << "EOF" 1> /dev/null 2> /dev/null
437     root (hd0,0)
438     setup (hd0)
439     quit
440     EOF
441 niro 528 exit 0
442     CHROOTEOF
443    
444     ## enters chroot
445     mount -t proc proc ${INSTALLPATH}/proc
446     mount -t sysfs sysfs ${INSTALLPATH}/sys
447     mount -o bind /dev ${INSTALLPATH}/dev
448     chroot ${INSTALLPATH} /bin/bash --rcfile /root/.bashrc -i
449     umount ${INSTALLPATH}/proc
450     umount ${INSTALLPATH}/sys
451     umount ${INSTALLPATH}/dev
452     rm ${INSTALLPATH}/root/.bashrc
453     }
454    
455     install_mkinitrd_chroot()
456     {
457     cat > ${INSTALLPATH}/root/.bashrc << CHROOTEOF
458 niro 527 echo "MODULES=\"ext3 amd74xx piix sis5513 via82cxxx\"" > /etc/conf.d/mkinitrd
459 niro 528 mkinitrd -f /boot/$(readlink /boot/initrd) $(readlink /boot/vmlinuz | sed "s:kernel-::g") > /dev/null
460 niro 260 exit 0
461 niro 258 CHROOTEOF
462    
463 niro 522 ## enters chroot
464     mount -t proc proc ${INSTALLPATH}/proc
465 niro 526 mount -t sysfs sysfs ${INSTALLPATH}/sys
466 niro 520 mount -o bind /dev ${INSTALLPATH}/dev
467     chroot ${INSTALLPATH} /bin/bash --rcfile /root/.bashrc -i
468     umount ${INSTALLPATH}/proc
469 niro 522 umount ${INSTALLPATH}/sys
470 niro 520 umount ${INSTALLPATH}/dev
471     rm ${INSTALLPATH}/root/.bashrc
472 niro 258 }
473    
474 niro 520 install_system_settings()
475     {
476 niro 522 # schreibe fstab
477 niro 520 echo -e "${BOOTHDD}\t/boot\text3\tnoatime,noauto\t1 1" > ${INSTALLPATH}/etc/fstab || die
478     echo -e "${ROOTHDD}\t/\text3\tnoatime\t0 0" >> ${INSTALLPATH}/etc/fstab || die
479     echo -e "${SWAPHDD}\tswap\tswap\tpri=1\t0 0" >> ${INSTALLPATH}/etc/fstab || die
480 niro 522 echo -e "proc\t/proc\tproc\tdefaults\t0 0" >> ${INSTALLPATH}/etc/fstab || die
481     echo -e "shm\t/dev/shm\ttmpfs\tdefaults\t0 0" >> ${INSTALLPATH}/etc/fstab || die
482 niro 531
483     # install network config skeleton
484     install -m0644 ${INSTALLPATH}/etc/alxconfig-ng/skel/net/net.eth0 ${INSTALLPATH}/etc/conf.d/ || die
485 niro 258 }
486    
487 niro 520 install_system_settings_flash()
488     {
489 niro 522 # schreibe fstab
490 niro 520 echo -e "${ROOTHDD}\t/\text3\tnoatime\t0 0" > ${INSTALLPATH}/etc/fstab || die
491 niro 522 echo -e "proc\t/proc\tproc\tdefaults\t0 0" >> ${INSTALLPATH}/etc/fstab || die
492     echo -e "shm\t/dev/shm\ttmpfs\tdefaults\t0 0" >> ${INSTALLPATH}/etc/fstab || die
493 niro 280 }
494 niro 520
495     install_umount_rootfs()
496     {
497 niro 258 cd /
498 niro 520 umount ${INSTALLPATH}/boot || die
499     umount ${INSTALLPATH} || die
500     swapoff ${SWAPHDD} || die
501 niro 258 }
502    
503 niro 520 install_umount_rootfs_flash()
504     {
505 niro 280 cd /
506 niro 520 umount ${INSTALLPATH} || die
507 niro 280 }
508    
509 niro 520 install_do_reboot()
510     {
511 niro 258 reboot
512     }
513    
514     #################################################
515     # Install Ablauf Scripte #
516     #################################################
517    
518 niro 520 run_install_normal()
519     {
520 niro 258 dialog_setup_hdd_found_manuell
521 niro 520
522 niro 258 dialog_setup_hdd_partitions_manuell
523     dialog_setup_hdd_format
524     setup_hdd_format > /dev/null
525     install_mount_rootfs
526     (install_system_image > /tmp/install.log) 2> /tmp/install_errors.log | dialog_install_meter | dialog_install_system_image
527 niro 520
528 niro 258 dialog_install_bootsector
529     install_bootsector_chroot
530 niro 519
531 niro 258 dialog_install_settings
532     sleep 1
533     install_system_settings
534 niro 528 install_mkinitrd_chroot
535 niro 258 install_umount_rootfs
536     dialog_install_successful
537     }
538    
539 niro 520 run_install_flash()
540     {
541 niro 280 dialog_setup_hdd_found_manuell
542 niro 520
543 niro 280 dialog_setup_hdd_partitions_manuell_flash
544     dialog_setup_hdd_format
545     setup_hdd_format_flash > /dev/null
546     install_mount_rootfs_flash
547     (install_system_image > /tmp/install.log) 2> /tmp/install_errors.log | dialog_install_meter | dialog_install_system_image
548 niro 520
549 niro 280 dialog_install_bootsector
550     install_bootsector_chroot
551 niro 520
552 niro 280 dialog_install_settings
553     sleep 1
554     install_system_settings_flash
555 niro 528 install_mkinitrd_chroot
556 niro 280 install_umount_rootfs_flash
557     dialog_install_successful
558     }
559    
560 niro 522 dialog_main
561 niro 258
562     exit 0