Magellan Linux

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1123 - (show annotations) (download) (as text)
Tue Aug 4 18:09:51 2009 UTC (14 years, 8 months ago) by niro
File MIME type: application/x-sh
File size: 13206 byte(s)
-fixed grub.conf setup
1 #!/bin/sh
2 #
3 # $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 #
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 's/ //')"
21 ########################################
22
23 ### System/Config Version
24 VERSION="0.3.2"
25 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 die()
40 {
41 ERROR=$1
42 RETVAL=$?
43 dialog_install_failure
44 exit 1
45 }
46
47 dialog_warning()
48 {
49 dialog \
50 --backtitle "${TITLE}" \
51 --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 if [[ ${RES} -eq 1 ]]
58 then
59 clear
60 echo "Der Vorgang wurde abgebrochen."
61 exit 1
62 fi
63 }
64
65 dialog_setup_hdd_info()
66 {
67 local SHDD="$(echo ${HDD} | sed 's/\/dev\///')"
68
69 dialog \
70 --colors \
71 --title "[ Festplatten Partitionierung ]" \
72 --backtitle "${TITLE}" \
73 --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 dialog_setup_hdd_info_flash()
82 {
83 local SHDD="$(echo $HDD | sed 's/\/dev\///')"
84
85 dialog \
86 --colors \
87 --title "[ Festplatten Partitionierung ]" \
88 --backtitle "${TITLE}" \
89 --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 dialog_setup_system_menu()
96 {
97 local i
98
99 i=$(dialog \
100 --backtitle "${TITLE}" \
101 --title "[ Festplatten Partitionierung ]" \
102 --cancel-label "Abbrechen" \
103 --ok-label "Weiter" \
104 --stdout \
105 --menu "\nWaehlen Sie die Installations-Methode" 14 70 5 \
106 "1" "Normale IDE-Disk" \
107 "2" "Flash-Speicher")
108 RES=$?
109 [[ ${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 esac
116 fi
117 }
118
119 dialog_setup_hdd_found_manuell()
120 {
121 local i
122
123 [[ ! -z ${installdevs} ]] && installdevs=""
124
125 echo "dialog \\" > /tmp/hddtmp.sh
126 echo "--backtitle \"${TITLE}\" \\" >> /tmp/hddtmp.sh
127 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 if [[ ! -z ${scsidisks} ]]
134 then
135 for i in ${scsidisks}
136 do
137 if [[ ${i} != ${cdromdev} ]]
138 then
139 echo " \\Z7SCSI: \\Z3${i}\\Zn\n \\" >> /tmp/hddtmp.sh
140 installdevs="${installdevs} ${i}"
141 fi
142 done
143 fi
144
145 if [[ ! -z ${idedisks} ]]
146 then
147 for i in ${idedisks}
148 do
149 if [[ ${i} != ${cdromdev} ]]
150 then
151 echo " \\Z7IDE: \\Z3${i}\\Zn\n \\" >> /tmp/hddtmp.sh
152 installdevs="${installdevs} ${i}"
153 fi
154 done
155 fi
156
157 if [[ ! -z ${cdromdev} ]]
158 then
159 echo " \n \\" >> /tmp/hddtmp.sh
160 echo " \\Z7andere Laufwerke:\n \\" >> /tmp/hddtmp.sh
161 echo " CDROM: \\Z3${cdromdev}\\Zn\n \\" >> /tmp/hddtmp.sh
162 fi
163 echo " \" 13 70" >> /tmp/hddtmp.sh
164 chmod a+x /tmp/hddtmp.sh
165 /tmp/hddtmp.sh
166 }
167
168 dialog_setup_hdd_partitions_manuell()
169 {
170 local i
171
172 if [[ -z ${installdevs} ]]
173 then
174 dialog \
175 --backtitle "${TITLE}" \
176 --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 echo "--backtitle \"${TITLE}\" \\" >> /tmp/hddtmp.sh
183 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 for i in ${installdevs}
189 do
190 echo "\"${i}\" \"\" \\" >> /tmp/hddtmp.sh
191 done
192 echo -e "\n" >> /tmp/hddtmp.sh
193
194 chmod a+x /tmp/hddtmp.sh
195 HDD="$(/tmp/hddtmp.sh)"
196 RES=$?
197 [[ ${RES} -eq 1 ]] && return 1
198 if [[ ${RES} -eq 0 ]]
199 then
200 dialog_setup_hdd_info
201 setup_hdd_partitions_manuell
202 fi
203 fi
204 }
205
206 dialog_setup_hdd_partitions_manuell_flash()
207 {
208 local i
209
210 if [[ -z ${installdevs} ]]
211 then
212 dialog \
213 --backtitle "${TITLE}" \
214 --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 echo "--backtitle \"${TITLE}\" \\" >> /tmp/hddtmp.sh
221 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 for i in ${installdevs}
227 do
228 echo "\"${i}\" \"\" \\" >> /tmp/hddtmp.sh
229 done
230 echo -e "\n" >> /tmp/hddtmp.sh
231
232 chmod a+x /tmp/hddtmp.sh
233 HDD="$(/tmp/hddtmp.sh)"
234 RES=$?
235 [[ ${RES} -eq 1 ]] && return 1
236 if [[ ${RES} -eq 0 ]]
237 then
238 dialog_setup_hdd_info_flash
239 setup_hdd_partitions_manuell_flash
240 fi
241 fi
242 }
243
244 dialog_setup_hdd_format()
245 {
246 dialog \
247 --backtitle "${TITLE}" \
248 --infobox "Erstelle Datei-Systeme ..." 3 70
249 }
250
251 dialog_install_settings()
252 {
253 dialog \
254 --backtitle "${TITLE}" \
255 --infobox "Speichere System-Einstellungen ..." 3 70
256 }
257
258 dialog_install_system_image()
259 {
260 dialog \
261 --backtitle "${TITLE}" \
262 --gauge "Kopiere System-Image ..." 6 80
263 }
264
265 dialog_install_meter()
266 {
267 while [[ ${CURRENTLINE} != ${TOTALLINES} ]]
268 do
269 CURRENTLINE=$(grep -c . /tmp/install.log)
270 PERCENT=$(( ${CURRENTLINE} * 100 / ${TOTALLINES}))
271 echo ${PERCENT}
272 sleep 1
273 done
274 rm -f /tmp/install.log
275 return 0
276 }
277
278
279 dialog_install_bootsector()
280 {
281 dialog \
282 --backtitle "${TITLE}" \
283 --infobox "Schreibe den Bootsektor ..." 3 70
284 }
285
286 dialog_install_successful()
287 {
288 dialog \
289 --backtitle "${TITLE}" \
290 --colors \
291 --msgbox "Die Installation war \Z2erfolgreich\Zn." 5 81
292 }
293
294 dialog_install_failure()
295 {
296 dialog \
297 --backtitle "${TITLE}" \
298 --colors \
299 --msgbox "Die Installation ist \Z1Fehlgeschlagen\Zn.\n\n\
300 Fehler bei ${ERROR}, RetVal: ${RETVAL} \
301 " 10 81
302 }
303
304 dialog_main()
305 {
306 METHOD=0
307
308 while [[ ${METHOD} -le 2 ]]
309 do
310 METHOD=$(dialog \
311 --backtitle "${TITLE}" \
312 --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 "4" "Beenden und eine Shell starten")
320 RES=$?
321 [[ ${RES} -eq 1 ]] && exit 1
322 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 esac
330 fi
331 done
332 }
333
334 #################################################
335 # Install Komandos #
336 #################################################
337 setup_hdd_partitions_manuell()
338 {
339 BOOTHDD="${HDD}1"
340 SWAPHDD="${HDD}2"
341 ROOTHDD="${HDD}3"
342
343 ## hdds partitionieren manuell
344 cfdisk ${HDD} || die
345 }
346
347 setup_hdd_partitions_manuell_flash()
348 {
349 ROOTHDD="${HDD}1"
350
351 ## hdds partitionieren manuell
352 cfdisk ${HDD} || die
353 }
354
355 setup_hdd_format()
356 {
357 mkswap ${SWAPHDD} || die
358 mke2fs -j -q ${BOOTHDD} || die
359 mke2fs -j -q ${ROOTHDD} || die
360 }
361
362 setup_hdd_format_flash()
363 {
364 mke2fs -j -q ${ROOTHDD} || die
365 }
366
367 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 }
375
376 install_mount_rootfs_flash()
377 {
378 mount ${ROOTHDD} ${INSTALLPATH} || die
379 install -d ${INSTALLPATH}/boot || die
380 cd ${INSTALLPATH} || die
381 }
382
383 install_system_image()
384 {
385 tar xvjpf ${CDPATH}/system/${CDIMAGENAME} -C ${INSTALLPATH}
386 }
387
388 install_bootsector_chroot()
389 {
390 ### grubconf schreiben
391 source ${INSTALLPATH}/boot/kernelversion
392
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
402 [[ -z ${KRNVER} ]] && KRNVER="AutoSta_LX"
403 [[ -z ${KRNINITRD} ]] && KRNINITRD="initrd"
404
405 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
412 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 # bootsector schreiben chrooted schreiben (lfs/magellan)
435 cat > ${INSTALLPATH}/root/.bashrc << CHROOTEOF
436 /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 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 echo "MODULES=\"ext3 amd74xx piix sis5513 via82cxxx\"" > /etc/conf.d/mkinitrd
459 mkinitrd -f /boot/$(readlink /boot/initrd) $(readlink /boot/vmlinuz | sed "s:kernel-::g") > /dev/null
460 exit 0
461 CHROOTEOF
462
463 ## enters chroot
464 mount -t proc proc ${INSTALLPATH}/proc
465 mount -t sysfs sysfs ${INSTALLPATH}/sys
466 mount -o bind /dev ${INSTALLPATH}/dev
467 chroot ${INSTALLPATH} /bin/bash --rcfile /root/.bashrc -i
468 umount ${INSTALLPATH}/proc
469 umount ${INSTALLPATH}/sys
470 umount ${INSTALLPATH}/dev
471 rm ${INSTALLPATH}/root/.bashrc
472 }
473
474 install_system_settings()
475 {
476 # schreibe fstab
477 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 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
483 # install network config skeleton
484 install -m0644 ${INSTALLPATH}/etc/alxconfig-ng/skel/net/net.eth0 ${INSTALLPATH}/etc/conf.d/ || die
485 }
486
487 install_system_settings_flash()
488 {
489 # schreibe fstab
490 echo -e "${ROOTHDD}\t/\text3\tnoatime\t0 0" > ${INSTALLPATH}/etc/fstab || die
491 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 }
494
495 install_umount_rootfs()
496 {
497 cd /
498 umount ${INSTALLPATH}/boot || die
499 umount ${INSTALLPATH} || die
500 swapoff ${SWAPHDD} || die
501 }
502
503 install_umount_rootfs_flash()
504 {
505 cd /
506 umount ${INSTALLPATH} || die
507 }
508
509 install_do_reboot()
510 {
511 reboot
512 }
513
514 #################################################
515 # Install Ablauf Scripte #
516 #################################################
517
518 run_install_normal()
519 {
520 dialog_setup_hdd_found_manuell
521
522 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
528 dialog_install_bootsector
529 install_bootsector_chroot
530
531 dialog_install_settings
532 sleep 1
533 install_system_settings
534 install_mkinitrd_chroot
535 install_umount_rootfs
536 dialog_install_successful
537 }
538
539 run_install_flash()
540 {
541 dialog_setup_hdd_found_manuell
542
543 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
549 dialog_install_bootsector
550 install_bootsector_chroot
551
552 dialog_install_settings
553 sleep 1
554 install_system_settings_flash
555 install_mkinitrd_chroot
556 install_umount_rootfs_flash
557 dialog_install_successful
558 }
559
560 dialog_main
561
562 exit 0