Magellan Linux

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 526 - (hide annotations) (download) (as text)
Fri Jun 27 23:32:03 2008 UTC (15 years, 10 months ago) by niro
Original Path: alx-src/trunk/alxinstall-ng/bin/alxinstall-ng.sh
File MIME type: application/x-sh
File size: 11760 byte(s)
-fixed a typo

1 niro 258 #!/bin/sh
2     #
3 niro 526 # $Header: /home/cvsd/alx-cvs/alx-src/alxinstall-ng/bin/alxinstall-ng.sh,v 1.12 2008-06-27 23:32:03 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 520 VERSION="0.3"
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 522 echo "default 0" > ${INSTALLPATH}/boot/grub/grub.conf || die
406     echo "timeout 0" >> ${INSTALLPATH}/boot/grub/grub.conf ||die
407    
408 niro 520 echo -e "\ntitle=${KRNVER}" >> ${INSTALLPATH}/boot/grub/grub.conf || die
409 niro 522 echo "root (hd0,0)" >> ${INSTALLPATH}/boot/grub/grub.conf || die
410 niro 258
411 niro 522 echo "kernel /boot/vmlinuz root=${ROOTHDD} quiet" >> ${INSTALLPATH}/boot/grub/grub.conf || die
412     echo "initrd /boot/initrd" >> ${INSTALLPATH}/boot/grub/grub.conf || die
413 niro 258
414 niro 522 # bootsector schreiben chrooted schreiben (lfs/magellan)
415     cat > ${INSTALLPATH}/root/.bashrc << CHROOTEOF
416 niro 258 /usr/sbin/grub --no-floppy --batch << "EOF" 1> /dev/null 2> /dev/null
417     root (hd0,0)
418     setup (hd0)
419     quit
420     EOF
421 niro 523 echo "MODULES=\"ext3 amd74xx piix sis5513 via82cxxx\" > /etc/conf.d/mkinitrd
422     mkinitrd -f /boot/$(readlink /boot/initrd) $(readlink /boot/vmlinuz | sed "s:kernel-::g")
423 niro 260 exit 0
424 niro 258 CHROOTEOF
425    
426 niro 522 ## enters chroot
427     mount -t proc proc ${INSTALLPATH}/proc
428 niro 526 mount -t sysfs sysfs ${INSTALLPATH}/sys
429 niro 520 mount -o bind /dev ${INSTALLPATH}/dev
430     chroot ${INSTALLPATH} /bin/bash --rcfile /root/.bashrc -i
431     umount ${INSTALLPATH}/proc
432 niro 522 umount ${INSTALLPATH}/sys
433 niro 520 umount ${INSTALLPATH}/dev
434     rm ${INSTALLPATH}/root/.bashrc
435 niro 258 }
436    
437 niro 520 install_system_settings()
438     {
439 niro 522 # schreibe fstab
440 niro 520 echo -e "${BOOTHDD}\t/boot\text3\tnoatime,noauto\t1 1" > ${INSTALLPATH}/etc/fstab || die
441     echo -e "${ROOTHDD}\t/\text3\tnoatime\t0 0" >> ${INSTALLPATH}/etc/fstab || die
442     echo -e "${SWAPHDD}\tswap\tswap\tpri=1\t0 0" >> ${INSTALLPATH}/etc/fstab || die
443 niro 522 echo -e "proc\t/proc\tproc\tdefaults\t0 0" >> ${INSTALLPATH}/etc/fstab || die
444     echo -e "shm\t/dev/shm\ttmpfs\tdefaults\t0 0" >> ${INSTALLPATH}/etc/fstab || die
445 niro 258 }
446    
447 niro 520 install_system_settings_flash()
448     {
449 niro 522 # schreibe fstab
450 niro 520 echo -e "${ROOTHDD}\t/\text3\tnoatime\t0 0" > ${INSTALLPATH}/etc/fstab || die
451 niro 522 echo -e "proc\t/proc\tproc\tdefaults\t0 0" >> ${INSTALLPATH}/etc/fstab || die
452     echo -e "shm\t/dev/shm\ttmpfs\tdefaults\t0 0" >> ${INSTALLPATH}/etc/fstab || die
453 niro 280 }
454 niro 520
455     install_umount_rootfs()
456     {
457 niro 258 cd /
458 niro 520 umount ${INSTALLPATH}/boot || die
459     umount ${INSTALLPATH} || die
460     swapoff ${SWAPHDD} || die
461 niro 258 }
462    
463 niro 520 install_umount_rootfs_flash()
464     {
465 niro 280 cd /
466 niro 520 umount ${INSTALLPATH} || die
467 niro 280 }
468    
469 niro 520 install_do_reboot()
470     {
471 niro 258 reboot
472     }
473    
474     #################################################
475     # Install Ablauf Scripte #
476     #################################################
477    
478 niro 520 run_install_normal()
479     {
480 niro 258 dialog_setup_hdd_found_manuell
481 niro 520
482 niro 258 dialog_setup_hdd_partitions_manuell
483     dialog_setup_hdd_format
484     setup_hdd_format > /dev/null
485     install_mount_rootfs
486     (install_system_image > /tmp/install.log) 2> /tmp/install_errors.log | dialog_install_meter | dialog_install_system_image
487 niro 520
488 niro 258 dialog_install_bootsector
489     install_bootsector_chroot
490 niro 519
491 niro 258 dialog_install_settings
492     sleep 1
493     install_system_settings
494     install_umount_rootfs
495     dialog_install_successful
496     }
497    
498 niro 520 run_install_flash()
499     {
500 niro 280 dialog_setup_hdd_found_manuell
501 niro 520
502 niro 280 dialog_setup_hdd_partitions_manuell_flash
503     dialog_setup_hdd_format
504     setup_hdd_format_flash > /dev/null
505     install_mount_rootfs_flash
506     (install_system_image > /tmp/install.log) 2> /tmp/install_errors.log | dialog_install_meter | dialog_install_system_image
507 niro 520
508 niro 280 dialog_install_bootsector
509     install_bootsector_chroot
510 niro 520
511 niro 280 dialog_install_settings
512     sleep 1
513     install_system_settings_flash
514     install_umount_rootfs_flash
515     dialog_install_successful
516     }
517    
518 niro 522 dialog_main
519 niro 258
520     exit 0