Magellan Linux

Contents of /alx-src/trunk/alxinstall-ng/bin/alxinstall-ng.sh

Parent Directory Parent Directory | Revision Log Revision Log


Revision 522 - (show annotations) (download) (as text)
Fri Jun 27 22:43:02 2008 UTC (15 years, 10 months ago) by niro
File MIME type: application/x-sh
File size: 11648 byte(s)
-removed unnecessary stuff and fixed grub and fstab settings

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