Contents of /mcore-src/trunk/mcore-install/bin/mcore-install.sh
Parent Directory | Revision Log
Revision 1275 -
(show annotations)
(download)
(as text)
Fri Feb 4 22:20:50 2011 UTC (13 years, 3 months ago) by niro
File MIME type: application/x-sh
File size: 17087 byte(s)
Fri Feb 4 22:20:50 2011 UTC (13 years, 3 months ago) by niro
File MIME type: application/x-sh
File size: 17087 byte(s)
- initial release
1 | #!/bin/bash |
2 | # $Id$ |
3 | |
4 | MLIBDIR="/usr/lib/mcore-intall" |
5 | |
6 | # images: (get ${CDIMAGENAME}) |
7 | source /mnt/cdrom/system/images.conf |
8 | |
9 | # includes |
10 | source ${MLIBDIR}/functions/findhdd.sh > /dev/null |
11 | ### bugfix ############################### |
12 | cdromdev="$(echo ${cdromdev} | sed 's/ //')" |
13 | ######################################## |
14 | |
15 | ### System/Config Version |
16 | VERSION="@@VERSION@@" |
17 | TITLE="mcore-install - ${VERSION}" |
18 | |
19 | CDPATH="/mnt/cdrom" |
20 | INSTALLPATH="/mnt/magellan" |
21 | |
22 | ### WICHTIG: anzahl lines in der autosta_lx.tar.gz -1 |
23 | CURRENTLINE=0 |
24 | #TOTALLINES=11072 # -> now in images.conf |
25 | |
26 | # standart kernel opts |
27 | KERNELOPTS="quiet" |
28 | |
29 | # default specialdevices |
30 | SPECIALDEVICE="" |
31 | |
32 | ################################################# |
33 | # DIALOG BOXEN # |
34 | ################################################# |
35 | |
36 | die() |
37 | { |
38 | ERROR=$1 |
39 | RETVAL=$? |
40 | dialog_install_failure |
41 | exit 1 |
42 | } |
43 | |
44 | dialog_warning() |
45 | { |
46 | dialog \ |
47 | --backtitle "${TITLE}" \ |
48 | --colors \ |
49 | --defaultno \ |
50 | --yesno "\Z1 !!! Achtung !!! \Zn\n\n\ |
51 | Diese Festplatte wird unwiederruflich geloescht werden.\n\n\ |
52 | Soll ich wirklich fortfahren ?" 10 70 |
53 | RES=$? |
54 | if [[ ${RES} -eq 1 ]] |
55 | then |
56 | clear |
57 | echo "Der Vorgang wurde abgebrochen." |
58 | exit 1 |
59 | fi |
60 | } |
61 | |
62 | dialog_setup_hdd_info() |
63 | { |
64 | local SHDD="$(echo ${HDD} | sed 's/\/dev\///')" |
65 | |
66 | dialog \ |
67 | --colors \ |
68 | --title "[ Festplatten Partitionierung ]" \ |
69 | --backtitle "${TITLE}" \ |
70 | --ok-label "Weiter" \ |
71 | --msgbox "\nBitte legen Sie 3 Partitionen an.\n\n\ |
72 | [ \Z3${SHDD}1\Zn ] Typ: \Z3Linux\Zn mit ca. 50MB\n\ |
73 | [ \Z3${SHDD}2\Zn ] Typ: \Z3Linux Swap\Zn mit ca. 256MB\n\ |
74 | [ \Z3${SHDD}3\Zn ] Typ: \Z3Linux \Zn mit dem Rest (min. 256MB)\n\n\ |
75 | Bitte ${SHDD}1 als \Z3bootable\Zn markieren." 12 81 |
76 | } |
77 | |
78 | dialog_setup_hdd_info_flash() |
79 | { |
80 | local SHDD="$(echo $HDD | sed 's/\/dev\///')" |
81 | |
82 | dialog \ |
83 | --colors \ |
84 | --title "[ Festplatten Partitionierung ]" \ |
85 | --backtitle "${TITLE}" \ |
86 | --ok-label "Weiter" \ |
87 | --msgbox "\nBitte legen Sie 1 Partition an.\n\n\ |
88 | [ \Z3${SHDD}1\Zn ] Typ: \Z3Linux\Zn mit dem gesamten Speicher\n\ |
89 | Bitte ${SHDD}1 als \Z3bootable\Zn markieren." 12 81 |
90 | } |
91 | |
92 | dialog_setup_hdd_info_auto() |
93 | { |
94 | local SHDD="$(echo $HDD | sed 's/\/dev\///')" |
95 | |
96 | dialog \ |
97 | --colors \ |
98 | --title "[ Festplatten Partitionierung ]" \ |
99 | --backtitle "${TITLE}" \ |
100 | --ok-label "Weiter" \ |
101 | --msgbox "\nAchtung!\n\ |
102 | Alle Daten werden von der Disk [ \Z3${HDD}\Zn ] gelöscht!" 12 81 |
103 | } |
104 | |
105 | dialog_setup_system_menu() |
106 | { |
107 | local i |
108 | |
109 | i=$(dialog \ |
110 | --backtitle "${TITLE}" \ |
111 | --title "[ Festplatten Partitionierung ]" \ |
112 | --cancel-label "Abbrechen" \ |
113 | --ok-label "Weiter" \ |
114 | --stdout \ |
115 | --colors \ |
116 | --menu "\nWaehlen Sie die Installations-Methode" 14 70 5 \ |
117 | "1" "Automatisches Setup (Empfohlen)" \ |
118 | "" "" \ |
119 | "" "\Z1Experten Modi:\Zn" \ |
120 | "2" "Normale IDE-Disk (Manuell)" \ |
121 | "3" "Flash-Speicher (Manuell)") |
122 | RES=$? |
123 | [[ ${RES} -eq 1 ]] && return 1 |
124 | if [[ ${RES} -eq 0 ]] |
125 | then |
126 | case "${i}" in |
127 | "1") run_install_auto ;; |
128 | "2") run_install_normal ;; |
129 | "3") run_install_flash ;; |
130 | "") dialog_setup_system_menu;; |
131 | esac |
132 | fi |
133 | } |
134 | |
135 | dialog_hardware_detection() |
136 | { |
137 | local i |
138 | local hwtmp |
139 | |
140 | if [ -x $(which mktemp &> /dev/null) ] |
141 | then |
142 | hwtmp="$(mktemp)" |
143 | else |
144 | hwtmp="/tmp/hwtmp.sh" |
145 | fi |
146 | |
147 | [[ ! -z ${installdevs} ]] && installdevs="" |
148 | |
149 | echo "dialog \\" > ${hwtmp} |
150 | echo "--backtitle \"${TITLE}\" \\" >> ${hwtmp} |
151 | echo "--ok-label \"Weiter\" \\" >> ${hwtmp} |
152 | echo "--stdout \\" >> ${hwtmp} |
153 | echo "--colors \\" >> ${hwtmp} |
154 | echo "--msgbox \"Gefundene Hardware:\n\n \\" >> ${hwtmp} |
155 | echo " Festplatten:\n \\" >> ${hwtmp} |
156 | |
157 | if [[ ! -z ${scsidisks} ]] |
158 | then |
159 | for i in ${scsidisks} |
160 | do |
161 | if [[ ${i} != ${cdromdev} ]] |
162 | then |
163 | echo " \\Z7SCSI: \\Z3${i}\\Zn\n \\" >> ${hwtmp} |
164 | installdevs="${installdevs} ${i}" |
165 | fi |
166 | done |
167 | fi |
168 | |
169 | if [[ ! -z ${idedisks} ]] |
170 | then |
171 | for i in ${idedisks} |
172 | do |
173 | if [[ ${i} != ${cdromdev} ]] |
174 | then |
175 | echo " \\Z7IDE: \\Z3${i}\\Zn\n \\" >> ${hwtmp} |
176 | installdevs="${installdevs} ${i}" |
177 | fi |
178 | done |
179 | fi |
180 | |
181 | if [[ ! -z ${cdromdev} ]] |
182 | then |
183 | echo " \n \\" >> ${hwtmp} |
184 | echo " \\Z7andere Laufwerke:\n \\" >> ${hwtmp} |
185 | echo " CDROM: \\Z3${cdromdev}\\Zn\n \\" >> ${hwtmp} |
186 | fi |
187 | |
188 | # other devices |
189 | run_hardware_detection |
190 | case "${SPECIALDEVICE}" in |
191 | zotac) echo " \n\n\n \\Z2Zotac Device erkannt!\\Zn \\" >> ${hwtmp} ;; |
192 | *) echo " \n\n\n \\ZnStandard Device erkannt!\\Zn \\" >> ${hwtmp} ;; |
193 | esac |
194 | |
195 | echo " \" 13 70" >> ${hwtmp} |
196 | chmod a+x ${hwtmp} |
197 | ${hwtmp} |
198 | |
199 | # remove tmp file |
200 | if [[ -f ${hwtmp} ]] |
201 | then |
202 | rm ${hwtmp} |
203 | fi |
204 | } |
205 | |
206 | dialog_setup_hdd_partitions_manuell() |
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 |
239 | setup_hdd_partitions_manuell |
240 | fi |
241 | fi |
242 | } |
243 | |
244 | dialog_setup_hdd_partitions_manuell_flash() |
245 | { |
246 | local i |
247 | |
248 | if [[ -z ${installdevs} ]] |
249 | then |
250 | dialog \ |
251 | --backtitle "${TITLE}" \ |
252 | --ok-label "Beenden" \ |
253 | --msgbox "Kein geeignetes Laufwerk gefunden.\nDie Installation ist fehlgeschlagen." 6 70 |
254 | exit 1 |
255 | else |
256 | |
257 | echo "dialog \\" > /tmp/hddtmp.sh |
258 | echo "--backtitle \"${TITLE}\" \\" >> /tmp/hddtmp.sh |
259 | echo "--ok-label \"Weiter\" \\" >> /tmp/hddtmp.sh |
260 | echo "--cancel-label \"Beenden\" \\" >> /tmp/hddtmp.sh |
261 | echo "--stdout \\" >> /tmp/hddtmp.sh |
262 | echo "--menu \"Installations Laufwerk auswaehlen:\" 10 70 3 \\" >> /tmp/hddtmp.sh |
263 | |
264 | for i in ${installdevs} |
265 | do |
266 | echo "\"${i}\" \"\" \\" >> /tmp/hddtmp.sh |
267 | done |
268 | echo -e "\n" >> /tmp/hddtmp.sh |
269 | |
270 | chmod a+x /tmp/hddtmp.sh |
271 | HDD="$(/tmp/hddtmp.sh)" |
272 | RES=$? |
273 | [[ ${RES} -eq 1 ]] && return 1 |
274 | if [[ ${RES} -eq 0 ]] |
275 | then |
276 | dialog_setup_hdd_info_flash |
277 | setup_hdd_partitions_manuell_flash |
278 | fi |
279 | fi |
280 | } |
281 | |
282 | dialog_setup_hdd_partitions_auto() |
283 | { |
284 | local i |
285 | |
286 | if [[ -z ${installdevs} ]] |
287 | then |
288 | dialog \ |
289 | --backtitle "${TITLE}" \ |
290 | --ok-label "Beenden" \ |
291 | --msgbox "Kein geeignetes Laufwerk gefunden.\nDie Installation ist fehlgeschlagen." 6 70 |
292 | exit 1 |
293 | else |
294 | |
295 | echo "dialog \\" > /tmp/hddtmp.sh |
296 | echo "--backtitle \"${TITLE}\" \\" >> /tmp/hddtmp.sh |
297 | echo "--ok-label \"Weiter\" \\" >> /tmp/hddtmp.sh |
298 | echo "--cancel-label \"Beenden\" \\" >> /tmp/hddtmp.sh |
299 | echo "--stdout \\" >> /tmp/hddtmp.sh |
300 | echo "--menu \"Installations Laufwerk auswaehlen:\" 10 70 3 \\" >> /tmp/hddtmp.sh |
301 | |
302 | for i in ${installdevs} |
303 | do |
304 | echo "\"${i}\" \"\" \\" >> /tmp/hddtmp.sh |
305 | done |
306 | echo -e "\n" >> /tmp/hddtmp.sh |
307 | |
308 | chmod a+x /tmp/hddtmp.sh |
309 | HDD="$(/tmp/hddtmp.sh)" |
310 | RES=$? |
311 | [[ ${RES} -eq 1 ]] && return 1 |
312 | if [[ ${RES} -eq 0 ]] |
313 | then |
314 | dialog_setup_hdd_info_auto |
315 | dialog_setup_hdd_create_partitions |
316 | setup_hdd_partitions_auto |
317 | fi |
318 | fi |
319 | } |
320 | |
321 | dialog_setup_hdd_create_partitions() |
322 | { |
323 | dialog \ |
324 | --backtitle "${TITLE}" \ |
325 | --infobox "Erstelle Disk Partitionen ..." 3 70 |
326 | } |
327 | |
328 | dialog_setup_hdd_format() |
329 | { |
330 | dialog \ |
331 | --backtitle "${TITLE}" \ |
332 | --infobox "Erstelle Datei-Systeme ..." 3 70 |
333 | } |
334 | |
335 | dialog_install_settings() |
336 | { |
337 | dialog \ |
338 | --backtitle "${TITLE}" \ |
339 | --infobox "Speichere System-Einstellungen ..." 3 70 |
340 | } |
341 | |
342 | dialog_install_system_image() |
343 | { |
344 | dialog \ |
345 | --backtitle "${TITLE}" \ |
346 | --gauge "Kopiere System-Image ..." 6 80 |
347 | } |
348 | |
349 | dialog_install_meter() |
350 | { |
351 | while [[ ${CURRENTLINE} != ${TOTALLINES} ]] |
352 | do |
353 | CURRENTLINE=$(grep -c . /tmp/install.log) |
354 | PERCENT=$(( ${CURRENTLINE} * 100 / ${TOTALLINES})) |
355 | echo ${PERCENT} |
356 | sleep 1 |
357 | done |
358 | rm -f /tmp/install.log |
359 | return 0 |
360 | } |
361 | |
362 | |
363 | dialog_install_bootsector() |
364 | { |
365 | dialog \ |
366 | --backtitle "${TITLE}" \ |
367 | --infobox "Schreibe den Bootsektor ..." 3 70 |
368 | } |
369 | |
370 | dialog_install_successful() |
371 | { |
372 | dialog \ |
373 | --backtitle "${TITLE}" \ |
374 | --colors \ |
375 | --msgbox "Die Installation war \Z2erfolgreich\Zn." 5 81 |
376 | } |
377 | |
378 | dialog_install_failure() |
379 | { |
380 | dialog \ |
381 | --backtitle "${TITLE}" \ |
382 | --colors \ |
383 | --msgbox "Die Installation ist \Z1Fehlgeschlagen\Zn.\n\n\ |
384 | Fehler bei ${ERROR}, RetVal: ${RETVAL} \ |
385 | " 10 81 |
386 | } |
387 | |
388 | dialog_main() |
389 | { |
390 | METHOD=0 |
391 | |
392 | while [[ ${METHOD} -le 2 ]] |
393 | do |
394 | METHOD=$(dialog \ |
395 | --backtitle "${TITLE}" \ |
396 | --no-cancel \ |
397 | --ok-label "Weiter" \ |
398 | --stdout \ |
399 | --menu "Konfiguration" 14 70 5 \ |
400 | "1" "AutoSta_LX installieren" \ |
401 | "2" "Uebersicht gefundener Laufwerke" \ |
402 | "3" "Beenden und neustarten" \ |
403 | "4" "Beenden und eine Shell starten") |
404 | RES=$? |
405 | [[ ${RES} -eq 1 ]] && exit 1 |
406 | if [[ ${RES} -eq 0 ]] |
407 | then |
408 | case ${METHOD} in |
409 | "1") dialog_setup_system_menu ;; |
410 | "2") dialog_hardware_detection ;; |
411 | "3") install_do_reboot ;; |
412 | "4") /bin/bash --login -i ;; |
413 | esac |
414 | fi |
415 | done |
416 | } |
417 | |
418 | ################################################# |
419 | # Install Komandos # |
420 | ################################################# |
421 | run_hardware_detection() |
422 | { |
423 | # check for special devices/clients: |
424 | # if zotac a zotac and the disk is a removeable device, then add rootdelay to kernelcmd |
425 | local removable=0 |
426 | if [[ ! -z $(lspci -v | grep -i zotac) ]] |
427 | then |
428 | for i in /sys/block/[hs]d*/removable |
429 | do |
430 | if [[ $(< ${i}) = 1 ]] |
431 | then |
432 | removable=1 |
433 | fi |
434 | done |
435 | |
436 | export KERNELOPTS="${KERNELOPTS} rootdelay=8" |
437 | export SPECIALDEVICE="zotac" |
438 | fi |
439 | } |
440 | |
441 | setup_hdd_partitions_auto() |
442 | { |
443 | ROOTHDD="${HDD}1" |
444 | |
445 | ## delete disk |
446 | dd if=/dev/zero of=${HDD} count=1 &> /dev/null || die |
447 | |
448 | ## setup one bootable partition |
449 | #1. n= new disk |
450 | #2. p= primary disk |
451 | #3. 1= first partition |
452 | #4. ''= default sector start |
453 | #5. ''= defaul sector end |
454 | #6. a= bootable flag |
455 | #7. 1= boot flag for partition 1 |
456 | #8. w= write/quit |
457 | fdisk ${HDD} &> /dev/null << EOF |
458 | n |
459 | p |
460 | 1 |
461 | |
462 | |
463 | a |
464 | 1 |
465 | w |
466 | EOF |
467 | } |
468 | |
469 | setup_hdd_partitions_manuell() |
470 | { |
471 | BOOTHDD="${HDD}1" |
472 | SWAPHDD="${HDD}2" |
473 | ROOTHDD="${HDD}3" |
474 | |
475 | ## hdds partitionieren manuell |
476 | cfdisk ${HDD} || die |
477 | } |
478 | |
479 | setup_hdd_partitions_manuell_flash() |
480 | { |
481 | ROOTHDD="${HDD}1" |
482 | |
483 | ## hdds partitionieren manuell |
484 | cfdisk ${HDD} || die |
485 | } |
486 | |
487 | setup_hdd_format() |
488 | { |
489 | mkswap ${SWAPHDD} || die |
490 | mke2fs -j -q ${BOOTHDD} || die |
491 | mke2fs -j -q ${ROOTHDD} || die |
492 | } |
493 | |
494 | setup_hdd_format_flash() |
495 | { |
496 | mke2fs -j -q ${ROOTHDD} || die |
497 | } |
498 | |
499 | install_mount_rootfs() |
500 | { |
501 | swapon ${SWAPHDD} || die |
502 | mount ${ROOTHDD} ${INSTALLPATH} || die |
503 | install -d ${INSTALLPATH}/boot || die |
504 | mount ${BOOTHDD} ${INSTALLPATH}/boot || die |
505 | cd ${INSTALLPATH} || die |
506 | } |
507 | |
508 | install_mount_rootfs_flash() |
509 | { |
510 | mount ${ROOTHDD} ${INSTALLPATH} || die |
511 | install -d ${INSTALLPATH}/boot || die |
512 | cd ${INSTALLPATH} || die |
513 | } |
514 | |
515 | install_system_image() |
516 | { |
517 | tar xvjpf ${CDPATH}/system/${CDIMAGENAME} -C ${INSTALLPATH} |
518 | } |
519 | |
520 | install_bootsector_chroot() |
521 | { |
522 | local my_roothdd |
523 | |
524 | # grubconf schreiben |
525 | source ${INSTALLPATH}/boot/kernelversion |
526 | |
527 | # for mcore only |
528 | if [ -e ${INSTALLPATH}/etc/mcore_version ] |
529 | then |
530 | OLD_MCOREVER="${MCOREVER}" |
531 | source ${INSTALLPATH}/etc/mcore_version |
532 | KRNVER="mCore-${MCOREVER}" |
533 | MCOREVER="${OLD_MCOREVER}" |
534 | fi |
535 | |
536 | [[ -z ${KRNVER} ]] && KRNVER="mCore" |
537 | [[ -z ${KRNINITRD} ]] && KRNINITRD="initrd" |
538 | [[ -z ${KRNIMG} ]] && KRNIMG="vmlinuz" |
539 | |
540 | # uuid support |
541 | if is_uuid_supported |
542 | then |
543 | my_roothdd="UUID=$(get_uuid ${ROOTHDD})" |
544 | else |
545 | my_roothdd="${ROOTHDD}" |
546 | fi |
547 | |
548 | local grubconf=${INSTALLPATH}/boot/grub/grub.conf |
549 | : > ${grubconf} || die |
550 | echo "default 0" >> ${grubconf} || die |
551 | echo "timeout 3" >> ${grubconf} || die |
552 | # using current root password |
553 | echo "password --md5 $(cat ${INSTALLPATH}/etc/shadow | grep root | cut -d: -f2)" >> ${grubconf} || die |
554 | |
555 | echo >> ${grubconf} || die |
556 | echo "# normal boot" >> ${grubconf} || die |
557 | echo "title ${KRNVER}" >> ${grubconf} || die |
558 | echo "root (hd0,0)" >> ${grubconf} || die |
559 | echo "kernel /boot/${KRNIMG} root=${my_roothdd} ${KERNELOPTS}" >> ${grubconf} || die |
560 | if is_initrd_supported |
561 | then |
562 | echo "initrd /boot/${KRNINITRD}" >> ${grubconf} || die |
563 | fi |
564 | |
565 | # bootsector schreiben chrooted schreiben (lfs/magellan) |
566 | cat > ${INSTALLPATH}/root/.bashrc << CHROOTEOF |
567 | /usr/sbin/grub --no-floppy --batch << "EOF" 1> /dev/null 2> /dev/null |
568 | root (hd0,0) |
569 | setup (hd0) |
570 | quit |
571 | EOF |
572 | exit 0 |
573 | CHROOTEOF |
574 | |
575 | ## enters chroot |
576 | mount -t proc proc ${INSTALLPATH}/proc |
577 | mount -t sysfs sysfs ${INSTALLPATH}/sys |
578 | mount -o bind /dev ${INSTALLPATH}/dev |
579 | chroot ${INSTALLPATH} /bin/bash --rcfile /root/.bashrc -i |
580 | umount ${INSTALLPATH}/proc |
581 | umount ${INSTALLPATH}/sys |
582 | umount ${INSTALLPATH}/dev |
583 | rm ${INSTALLPATH}/root/.bashrc |
584 | } |
585 | |
586 | is_initrd_supported() |
587 | { |
588 | # only generate initrds if the cmd exists |
589 | [[ -x ${INSTALLPATH}/sbin/mkinitrd ]] && return 0 |
590 | return 1 |
591 | } |
592 | |
593 | install_initrd_chroot() |
594 | { |
595 | # only generate initrds if the cmd exists |
596 | is_initrd_supported || return 0 |
597 | |
598 | cat > ${INSTALLPATH}/root/.bashrc << CHROOTEOF |
599 | echo "MODULES=\"ext3 amd74xx piix sis5513 via82cxxx sd_mod ata_piix pata_amd pata_mpiix pata_oldpiix pata_sis pata_via sata_via sata_sis sata_nv\"" > /etc/conf.d/mkinitrd |
600 | mkinitrd -f /boot/$(readlink /boot/initrd) $(readlink /boot/vmlinuz | sed "s:kernel-::g") > /dev/null |
601 | exit 0 |
602 | CHROOTEOF |
603 | |
604 | ## enters chroot |
605 | mount -t proc proc ${INSTALLPATH}/proc |
606 | mount -t sysfs sysfs ${INSTALLPATH}/sys |
607 | mount -o bind /dev ${INSTALLPATH}/dev |
608 | chroot ${INSTALLPATH} /bin/bash --rcfile /root/.bashrc -i |
609 | umount ${INSTALLPATH}/proc |
610 | umount ${INSTALLPATH}/sys |
611 | umount ${INSTALLPATH}/dev |
612 | rm ${INSTALLPATH}/root/.bashrc |
613 | } |
614 | |
615 | is_uuid_supported() |
616 | { |
617 | if [[ -x $(which busybox.mkinitrd &> /dev/null) ]] |
618 | then |
619 | # only detect uuids if supported |
620 | if [[ ! -z $(busybox.mkinitrd | grep blkid) ]] |
621 | then |
622 | return 0 |
623 | fi |
624 | fi |
625 | |
626 | return 1 |
627 | } |
628 | |
629 | get_uuid() |
630 | { |
631 | local UUID |
632 | local SEC_TYPE |
633 | local TYPE |
634 | |
635 | local dev="$1" |
636 | [[ -z ${dev} ]] && die "no dev given" |
637 | |
638 | # check if given device is already an UUID |
639 | if [[ ${dev/UUID=/}x != ${dev}x ]] |
640 | then |
641 | eval "${dev}" |
642 | else |
643 | eval $(busybox.mkinitrd blkid ${dev} | grep "${dev}:" | sed 's/.*:\ //') |
644 | fi |
645 | echo "${UUID}" |
646 | } |
647 | |
648 | install_system_settings() |
649 | { |
650 | # schreibe fstab |
651 | if is_uuid_supported |
652 | then |
653 | echo -e "UUID=$(get_uuid ${BOOTHDD})\t/boot\text3\tnoatime,noauto\t1 1" > ${INSTALLPATH}/etc/fstab || die |
654 | echo -e "UUID=$(get_uuid ${ROOTHDD})\t/\text3\tnoatime\t0 0" >> ${INSTALLPATH}/etc/fstab || die |
655 | else |
656 | echo -e "${BOOTHDD}\t/boot\text3\tnoatime,noauto\t1 1" > ${INSTALLPATH}/etc/fstab || die |
657 | echo -e "${ROOTHDD}\t/\text3\tnoatime\t0 0" >> ${INSTALLPATH}/etc/fstab || die |
658 | fi |
659 | # not needed busybox loads all with swapon -a, even if not mentioned in fstab |
660 | #echo -e "UUID='$(get_uuid ${SWAPHDD})'\tswap\tswap\tpri=1\t0 0" >> ${INSTALLPATH}/etc/fstab || die |
661 | echo -e "proc\t/proc\tproc\tdefaults\t0 0" >> ${INSTALLPATH}/etc/fstab || die |
662 | echo -e "shm\t/dev/shm\ttmpfs\tdefaults\t0 0" >> ${INSTALLPATH}/etc/fstab || die |
663 | |
664 | # install network config skeleton |
665 | echo 'ONBOOT="yes"' > ${INSTALLPATH}/etc/conf.d/net.eth0 || die |
666 | echo 'NETWORKING="dhcp"' >> ${INSTALLPATH}/etc/conf.d/net.eth0 || die |
667 | } |
668 | |
669 | install_system_settings_flash() |
670 | { |
671 | # schreibe fstab |
672 | if is_uuid_supported |
673 | then |
674 | echo -e "UUID=$(get_uuid ${ROOTHDD})\t/\text3\tnoatime\t0 0" > ${INSTALLPATH}/etc/fstab || die |
675 | else |
676 | echo -e "${ROOTHDD}\t/\text3\tnoatime\t0 0" > ${INSTALLPATH}/etc/fstab || die |
677 | fi |
678 | echo -e "proc\t/proc\tproc\tdefaults\t0 0" >> ${INSTALLPATH}/etc/fstab || die |
679 | echo -e "shm\t/dev/shm\ttmpfs\tdefaults\t0 0" >> ${INSTALLPATH}/etc/fstab || die |
680 | } |
681 | |
682 | install_umount_rootfs() |
683 | { |
684 | cd / |
685 | umount ${INSTALLPATH}/boot || die |
686 | umount ${INSTALLPATH} || die |
687 | swapoff ${SWAPHDD} || die |
688 | } |
689 | |
690 | install_umount_rootfs_flash() |
691 | { |
692 | cd / |
693 | umount ${INSTALLPATH} || die |
694 | } |
695 | |
696 | install_do_reboot() |
697 | { |
698 | reboot |
699 | } |
700 | |
701 | ################################################# |
702 | # Install Ablauf Scripte # |
703 | ################################################# |
704 | |
705 | run_install_normal() |
706 | { |
707 | dialog_hardware_detection |
708 | |
709 | dialog_setup_hdd_partitions_manuell |
710 | dialog_setup_hdd_format |
711 | setup_hdd_format > /dev/null |
712 | install_mount_rootfs |
713 | (install_system_image > /tmp/install.log) 2> /tmp/install_errors.log | dialog_install_meter | dialog_install_system_image |
714 | |
715 | dialog_install_bootsector |
716 | install_bootsector_chroot |
717 | |
718 | dialog_install_settings |
719 | sleep 1 |
720 | install_system_settings |
721 | install_initrd_chroot |
722 | install_umount_rootfs |
723 | dialog_install_successful |
724 | } |
725 | |
726 | run_install_flash() |
727 | { |
728 | dialog_hardware_detection |
729 | |
730 | dialog_setup_hdd_partitions_manuell_flash |
731 | dialog_setup_hdd_format |
732 | setup_hdd_format_flash > /dev/null |
733 | install_mount_rootfs_flash |
734 | (install_system_image > /tmp/install.log) 2> /tmp/install_errors.log | dialog_install_meter | dialog_install_system_image |
735 | |
736 | dialog_install_bootsector |
737 | install_bootsector_chroot |
738 | |
739 | dialog_install_settings |
740 | sleep 1 |
741 | install_system_settings_flash |
742 | install_initrd_chroot |
743 | install_umount_rootfs_flash |
744 | dialog_install_successful |
745 | } |
746 | |
747 | run_install_auto() |
748 | { |
749 | dialog_hardware_detection |
750 | |
751 | dialog_setup_hdd_partitions_auto |
752 | dialog_setup_hdd_format |
753 | setup_hdd_format_flash > /dev/null |
754 | install_mount_rootfs_flash |
755 | (install_system_image > /tmp/install.log) 2> /tmp/install_errors.log | dialog_install_meter | dialog_install_system_image |
756 | |
757 | dialog_install_bootsector |
758 | install_bootsector_chroot |
759 | |
760 | dialog_install_settings |
761 | sleep 1 |
762 | install_system_settings_flash |
763 | install_initrd_chroot |
764 | install_umount_rootfs_flash |
765 | dialog_install_successful |
766 | } |
767 | |
768 | dialog_main |
769 | |
770 | exit 0 |