Contents of /trunk/installer-simple/bin/installer.sh.in
Parent Directory | Revision Log
Revision 2950 -
(show annotations)
(download)
Thu Jun 16 08:43:55 2016 UTC (8 years, 3 months ago) by niro
File size: 19009 byte(s)
Thu Jun 16 08:43:55 2016 UTC (8 years, 3 months ago) by niro
File size: 19009 byte(s)
-fixed broken fstab
1 | #!/bin/bash |
2 | # $Id$ |
3 | # |
4 | # Simple Installation Script |
5 | # merged from alxinstall-ng and mcore-installer |
6 | # |
7 | # Niels Rogalla <niro@magellan-linux.de> |
8 | # |
9 | |
10 | # setup locales |
11 | TEXTDOMAIN=installer |
12 | |
13 | # include dir |
14 | INSTALLER_LIBDIR="%LIBDIR%" |
15 | |
16 | # TOTALLINES=linecount of ${CDIMAGENAME}-tarball -1 ! |
17 | # -> now in images.conf |
18 | CURRENTLINE=0 |
19 | |
20 | die() |
21 | { |
22 | echo "Error: $@" |
23 | exit 1 |
24 | } |
25 | |
26 | # load common includes |
27 | for inc in %SYSCONFDIR%/installer.conf \ |
28 | ${INSTALLER_LIBDIR}/functions/common.sh \ |
29 | ${INSTALLER_LIBDIR}/functions/common-dialogs.sh \ |
30 | ${INSTALLER_LIBDIR}/functions/hwdetection.sh \ |
31 | ${INSTALLER_LIBDIR}/functions/bootloader.sh \ |
32 | ${INSTALLER_LIBDIR}/functions/initrd-tools.sh \ |
33 | ${INSTALLER_LIBDIR}/functions/installer-dialogs.sh |
34 | do |
35 | if [ -e ${inc} ] |
36 | then |
37 | source "${inc}" |
38 | else |
39 | die "'${inc}' not found" |
40 | fi |
41 | done |
42 | |
43 | # fetch cmdline |
44 | for argv in $* |
45 | do |
46 | case $1 in |
47 | --liveroot) shift; cmdliveroot="$1" ;; |
48 | --imageroot) shift; cmdimageroot="$1" ;; |
49 | --installroot) shift; cmdinstallroot="$1" ;; |
50 | --filesystem) shift; cmdformatfilesystem="$1" ;; |
51 | --help) |
52 | echo "$0 options:" |
53 | echo " --liveroot [path] - override default liveroot" |
54 | echo " --imageroot [path] - override default imageroot" |
55 | echo " --installroot [path] - override default installroot" |
56 | echo " --filesystem [fstype] - override default filesystem used to format the disk" |
57 | exit 0 ;; |
58 | esac |
59 | shift |
60 | done |
61 | |
62 | ### System/Config Version |
63 | VERSION="%VERSIONTAG%" |
64 | TITLE="${DEFAULT_TITLE} - ${VERSION}" |
65 | |
66 | # initialize global variables so they are exportable |
67 | # some sane defaults |
68 | INSTALL_METHOD="" |
69 | if [[ -n ${cmdliveroot} ]] |
70 | then |
71 | LIVEROOT="${cmdliveroot}" |
72 | else |
73 | LIVEROOT="${DEFAULT_LIVEROOT}" |
74 | fi |
75 | if [[ -n ${cmdimageroot} ]] |
76 | then |
77 | IMAGEROOT="${cmdimageroot}" |
78 | else |
79 | IMAGEROOT="${DEFAULT_IMAGEROOT}" |
80 | fi |
81 | if [[ -n ${cmdinstallroot} ]] |
82 | then |
83 | INSTALLROOT="${cmdinstallroot}" |
84 | else |
85 | INSTALLROOT="${DEFAULT_INSTALLROOT}" |
86 | fi |
87 | KERNELPKG="${DEFAULT_KERNELPKG}" |
88 | KERNELOPTS="${DEFAULT_KERNELOPTS}" |
89 | GRUBLEGACYOPTS="" |
90 | GRUB2OPTS="" |
91 | FDISKPARTIONBELOW256MB=0 |
92 | SPECIALDEVICE="" |
93 | FORMFACTOR="${DEFAULT_FORMFACTOR}" |
94 | if [[ -n ${cmdformatfilesystem} ]] |
95 | then |
96 | FORMAT_FILESYSTEM="${cmdformatfilesystem}" |
97 | else |
98 | FORMAT_FILESYSTEM="${DEFAULT_FILESYSTEM}" |
99 | fi |
100 | FLASHDISK=0 |
101 | |
102 | # TOTALLINES=linecount of ${CDIMAGENAME}-tarball -1 ! |
103 | # -> now in images.conf |
104 | CDIMAGENAME="" |
105 | TOTALLINES="" |
106 | CURRENTLINE=0 |
107 | if [ -e ${IMAGEROOT}/images.conf ] |
108 | then |
109 | source ${IMAGEROOT}/images.conf |
110 | # check if all required variables are set |
111 | [[ -z ${CDIMAGENAME} ]] && die "CDIMAGENAME is empty in ${IMAGEROOT}/images.conf" |
112 | [[ -z ${TOTALLINES} ]] && die "TOTALLINES is empty in ${IMAGEROOT}/images.conf" |
113 | else |
114 | die "${IMAGEROOT}/images.conf not found" |
115 | fi |
116 | |
117 | ### helper scripts ### |
118 | |
119 | trap_exit() |
120 | { |
121 | is_mounted --location "${INSTALLROOT}/dev" && umount ${INSTALLROOT}/dev |
122 | is_mounted --location "${INSTALLROOT}/proc" && umount ${INSTALLROOT}/proc |
123 | is_mounted --location "${INSTALLROOT}/sys" && umount ${INSTALLROOT}/sys |
124 | is_mounted --location "${INSTALLROOT}/boot" && umount ${INSTALLROOT}/boot |
125 | is_mounted --location "${INSTALLROOT}" && umount ${INSTALLROOT} |
126 | [[ -n ${SWAPHDD} ]] && swapoff ${SWAPHDD} |
127 | |
128 | echo $"Installation aborted." |
129 | exit 1 |
130 | } |
131 | |
132 | install_meter() |
133 | { |
134 | while [[ ${CURRENTLINE} != ${TOTALLINES} ]] |
135 | do |
136 | CURRENTLINE=$(grep -c . /tmp/install.log) |
137 | PERCENT=$(( ${CURRENTLINE} * 100 / ${TOTALLINES})) |
138 | echo ${PERCENT} |
139 | sleep 1 |
140 | done |
141 | rm -f /tmp/install.log |
142 | return 0 |
143 | } |
144 | |
145 | mount_rootfs() |
146 | { |
147 | local retval |
148 | |
149 | if [[ -n ${SWAPHDD} ]] |
150 | then |
151 | swapon ${SWAPHDD} || dialog_die $"Could not enable swap space '${SWAPHDD}'" |
152 | fi |
153 | |
154 | if [[ -n ${ROOTHDD} ]] |
155 | then |
156 | if is_mounted --location "${INSTALLROOT}" |
157 | then |
158 | echo $"${INSTALLROOT} already mounted" >&2 |
159 | else |
160 | mount -t "${FORMAT_FILESYSTEM_ROOTHDD}" "${ROOTHDD}" "${INSTALLROOT}" || dialog_die $"Could not mount rootfs - drive '${ROOTHDD}' -> '${INSTALLROOT}'" |
161 | fi |
162 | fi |
163 | |
164 | [[ -d ${INSTALLROOT}/boot ]] || install -d ${INSTALLROOT}/boot |
165 | |
166 | if [[ -n ${BOOTHDD} ]] |
167 | then |
168 | if is_mounted --location "${INSTALLROOT}"/boot |
169 | then |
170 | echo $"${INSTALLROOT}/boot already mounted" >&2 |
171 | else |
172 | mount -t "${FORMAT_FILESYSTEM_BOOTHDD}" "${BOOTHDD}" "${INSTALLROOT}"/boot || dialog_die $"Could not mount bootfs - drive '${BOOTHDD}' -> '${INSTALLROOT}/boot'" |
173 | fi |
174 | fi |
175 | } |
176 | |
177 | umount_rootfs() |
178 | { |
179 | is_mounted --location ${INSTALLROOT}/boot && umount ${INSTALLROOT}/boot |
180 | is_mounted --location ${INSTALLROOT} && umount ${INSTALLROOT} |
181 | |
182 | if [[ -n ${SWAPHDD} ]] |
183 | then |
184 | swapoff ${SWAPHDD} || die |
185 | fi |
186 | } |
187 | |
188 | install_do_reboot() |
189 | { |
190 | reboot |
191 | } |
192 | |
193 | run_hardware_detection() |
194 | { |
195 | local hwinfo |
196 | hwinfo="$(hwinfo --bios --storage --pci --gfxcard --sys)" |
197 | |
198 | # check for special devices/clients: |
199 | # if zotac a zotac and the disk is a removeable device, then add rootdelay to kernelcmd |
200 | local removable=0 |
201 | if [[ ! -z $(echo "${hwinfo}" | grep -i zotac) ]] |
202 | then |
203 | for i in /sys/block/[hs]d*/removable |
204 | do |
205 | if [[ $(< ${i}) = 1 ]] |
206 | then |
207 | removable=1 |
208 | # we assume that all removable disks are flash disks on a zotac |
209 | export FLASHDISK=1 |
210 | fi |
211 | done |
212 | # smartcard = udevadm info -n /dev/sda -a | grep -i 'configuration.*card' |
213 | |
214 | # only add this for grub legacy, grub2 detect these settings on its own |
215 | export GRUBLEGACYOPTS="rootdelay=8" |
216 | # there are to zotac types in the wild, nvidia based gfx and intel |
217 | if [[ ! -z $(echo "${hwinfo}" | grep -i nouveau) ]] |
218 | then |
219 | export SPECIALDEVICE="zotac_nvidia" |
220 | else |
221 | export SPECIALDEVICE="zotac_intel" |
222 | fi |
223 | fi |
224 | |
225 | # check for special devices/clients: |
226 | # if a rangee and disk ist smaller then 256mb move partion one block further ahead |
227 | if [[ ! -z $(echo "${hwinfo}" | grep -i CLE266) ]] |
228 | then |
229 | # for a rangee always define partion startblock +1 |
230 | export FDISKPARTIONBELOW256MB="1" |
231 | export SPECIALDEVICE="rangee" |
232 | export GRUBLEGACYOPTS="" |
233 | fi |
234 | |
235 | # check for special devices/clients: |
236 | # check for maxdata / i810/ i815 Chipsets and disable KMS and use i810fb frambuffer |
237 | if [[ ! -z $(echo "${hwinfo}" | grep -i i810) ]] || [[ ! -z $(echo "${hwinfo}" | grep -i i815) ]] |
238 | then |
239 | export SPECIALDEVICE="maxdata" |
240 | export GRUBLEGACYOPTS="" |
241 | fi |
242 | |
243 | # check for i845 Chipsets and enable KMS and use 915 drm driver later in initrd |
244 | if [[ ! -z $(echo "${hwinfo}" | grep -i i845) ]] |
245 | then |
246 | export SPECIALDEVICE="i845" |
247 | # unset default video=1024x768 opt or the drm driver breaks |
248 | export KERNELOPTS="quiet" |
249 | export GRUBLEGACYOPTS="" |
250 | # enable full kms support |
251 | export GRUB2GFXPAYLOAD="keep" |
252 | fi |
253 | |
254 | # check for radeon gfxcards |
255 | if [[ ! -z $(echo "${hwinfo}" | grep -i radeon) ]] |
256 | then |
257 | # enable full kms support |
258 | export GRUB2GFXPAYLOAD="keep" |
259 | fi |
260 | |
261 | # requires nomsi to prevent massive IRQ error spam |
262 | # see: http://ubuntuforums.org/showthread.php?t=1234983 |
263 | if [[ ! -z $(echo "${hwinfo}" | grep -i 'P5VD2-X') ]] || [[ ! -z $(echo "${hwinfo}" | grep -i 'VT8237') ]] || [[ ! -z $(echo "${hwinfo}" | grep -i 'VX700') ]] |
264 | then |
265 | export SPECIALDEVICE="nomsi" |
266 | export KERNELOPTS="${KERNELOPTS} pci=nomsi,noaer" |
267 | fi |
268 | |
269 | # check for special devices/clients: |
270 | # check for laptops and activate cpufreq scaling |
271 | if [[ $(echo "${hwinfo}" | grep 'Formfactor:' | sed 's:.*Formfactor\:\ \"\(.*\)\":\1:') = laptop ]] |
272 | then |
273 | export FORMFACTOR="laptop" |
274 | export KERNELOPTS="${KERNELOPTS} cpufreq.governor=ondemand" |
275 | fi |
276 | } |
277 | |
278 | run_hardware_detection_disks() |
279 | { |
280 | local bootdev |
281 | |
282 | # all disks but exclude ramdisks |
283 | export ALL_DISKS=$(get_hwinfo disk | sed '/\/dev\/ram[0-9].*/d') |
284 | # remove the boot device from ALL_DISKS if it was an usbstick |
285 | if [[ $(grep '[[:space:]]${LIVEROOT}[[:space:]]' /proc/mounts | cut -d' ' -f3) != iso9660 ]] |
286 | then |
287 | bootdev=$(grep "[[:space:]]${LIVEROOT}[[:space:]]" /proc/mounts | cut -d' ' -f1 | sed 's:[0-9]::g') |
288 | export ALL_DISKS=$(echo "${ALL_DISKS}" | grep -v "${bootdev}") |
289 | fi |
290 | export ALL_CDROMS="$(get_hwinfo cdrom)" |
291 | } |
292 | |
293 | auto_partition_clear_disk() |
294 | { |
295 | if [ -e ${HDD} ] |
296 | then |
297 | dd if=/dev/zero of=${HDD} count=1 &> /dev/null || dialog_die |
298 | else |
299 | echo "clear disk: device ${HDD} does not exist" >&2 |
300 | fi |
301 | } |
302 | |
303 | auto_partition_command() |
304 | { |
305 | if [ -e ${HDD} ] |
306 | then |
307 | fdisk ${HDD} &> /dev/null << EOF |
308 | $(echo "${PARTITION_OPTS}") |
309 | EOF |
310 | else |
311 | echo "partition command: device ${HDD} does not exist" >&2 |
312 | fi |
313 | } |
314 | |
315 | setup_hdd_partitions() |
316 | { |
317 | local partition_number |
318 | local partition_type |
319 | local partition_start_sector |
320 | local partition_size |
321 | |
322 | # sanity check - should not happen |
323 | if is_mounted --device "${ROOTHDD}" |
324 | then |
325 | echo "partition: device ${ROOTHDD} is already mounted, umount it" >&2 |
326 | umount "${ROOTHDD}" |
327 | fi |
328 | if [[ -n ${BOOTHDD} ]] |
329 | then |
330 | if is_mounted --device "${BOOTHDD}" |
331 | then |
332 | echo "partition: device ${BOOTHDD} is already mounted, umount it" >&2 |
333 | umount "${BOOTHDD}" |
334 | fi |
335 | fi |
336 | |
337 | if [[ ${INSTALL_METHOD} = auto ]] |
338 | then |
339 | # run this only if FDISKPARTITIONBELOW256MB is not already 1 |
340 | if [[ ${FDISKPARTIONBELOW256MB} != 1 ]] |
341 | then |
342 | if device_minimum_size "${HDD}" 256 |
343 | then |
344 | FDISKPARTIONBELOW256MB=1 |
345 | else |
346 | FDISKPARTIONBELOW256MB=0 |
347 | fi |
348 | fi |
349 | |
350 | ## delete disk |
351 | auto_partition_clear_disk |
352 | |
353 | # setup partition options |
354 | export PARTITION_OPTS |
355 | |
356 | if [[ -n ${BOOTHDD} ]] |
357 | then |
358 | # create a boot disk with 50meg size - bootable |
359 | partition_type="p" |
360 | partition_number="1" |
361 | if [[ ${FDISKPARTIONBELOW256MB} = 1 ]] |
362 | then |
363 | # 2= default sector start // small disk needs more space for grub2 mbr sector |
364 | partition_start_sector="2" |
365 | else |
366 | # '' use default sector start |
367 | partition_start_sector="" |
368 | fi |
369 | # 50meg size |
370 | partition_size="+50M" |
371 | |
372 | # create a boot disk with 50meg size - bootable |
373 | # n= new disk |
374 | # p= primary disk |
375 | # w= write/quit |
376 | PARTITION_OPTS="n |
377 | ${partition_type} |
378 | ${partition_number} |
379 | ${partition_start_sector} |
380 | ${partition_size} |
381 | w" |
382 | # create the disk |
383 | auto_partition_command |
384 | |
385 | # mark the disk bootable |
386 | PARTITION_OPTS="a |
387 | ${partition_number} |
388 | w" |
389 | auto_partition_command |
390 | |
391 | fi |
392 | |
393 | if [[ -n ${SWAPHDD} ]] |
394 | then |
395 | # p= primary disk |
396 | partition_type="p" |
397 | if [[ -n ${BOOTHDD} ]] |
398 | then |
399 | # boot disk exist, partition 2 |
400 | partition_number="2" |
401 | else |
402 | # boot disk does not exist, partition 1 |
403 | partition_number="1" |
404 | fi |
405 | if [[ ${FDISKPARTIONBELOW256MB} = 1 ]] |
406 | then |
407 | # fake sector 2 and fdisk finds the next free sector which must be selected with enter |
408 | partition_start_sector="2 |
409 | " |
410 | else |
411 | # '' use default sector start |
412 | partition_start_sector="" |
413 | fi |
414 | partition_start_sector="" |
415 | # +2G disk size |
416 | partition_size="+2G" |
417 | |
418 | # create a swap disk with 2GB size |
419 | PARTITION_OPTS="n |
420 | ${partition_type} |
421 | ${partition_number} |
422 | ${partition_start_sector} |
423 | ${partition_size} |
424 | w" |
425 | # create the disk |
426 | auto_partition_command |
427 | |
428 | # mark disk as swap space |
429 | PARTITION_OPTS=" |
430 | t" |
431 | if [[ ${partition_number} != 1 ]] |
432 | then |
433 | PARTITION_OPTS+=" |
434 | ${partition_number}" |
435 | fi |
436 | PARTITION_OPTS+=" |
437 | 82 |
438 | w" |
439 | auto_partition_command |
440 | fi |
441 | |
442 | if [[ -n ${ROOTHDD} ]] |
443 | then |
444 | # p= primary disk |
445 | partition_type="p" |
446 | if [[ -z ${BOOTHDD} ]] && [[ -z ${SWAPHDD} ]] |
447 | then |
448 | # boot and swap disk does not exist, partition 1 |
449 | partition_number="1" |
450 | fi |
451 | if [[ -n ${BOOTHDD} ]] || [[ -n ${SWAPHDD} ]] |
452 | then |
453 | # boot or swap disk exist, partition 2 |
454 | partition_number="2" |
455 | fi |
456 | if [[ -n ${BOOTHDD} ]] && [[ -n ${SWAPHDD} ]] |
457 | then |
458 | # boot and swap disk does exist, partition 3 |
459 | partition_number="3" |
460 | fi |
461 | if [[ ${FDISKPARTIONBELOW256MB} = 1 ]] |
462 | then |
463 | if [[ -z ${BOOTHDD} ]] |
464 | then |
465 | # 2= default sector start // small disk needs more space for grub2 mbr sector |
466 | partition_start_sector="2" |
467 | else |
468 | # fake sector 2 and fdisk finds the next free sector which must be selected with enter |
469 | partition_start_sector="2 |
470 | " |
471 | fi |
472 | else |
473 | # '' use default sector start |
474 | partition_start_sector="" |
475 | fi |
476 | # '' default sector end |
477 | partition_size="" |
478 | |
479 | # create system disk with remaining space |
480 | # w= write/quit |
481 | PARTITION_OPTS="n |
482 | ${partition_type} |
483 | ${partition_number} |
484 | ${partition_start_sector} |
485 | ${partition_size} |
486 | w" |
487 | # create the disk |
488 | auto_partition_command |
489 | |
490 | # no boot disk? then this is the boot disk |
491 | if [[ -z ${BOOTHDD} ]] |
492 | then |
493 | # mark the disk bootable |
494 | PARTITION_OPTS="a |
495 | ${partition_number} |
496 | w" |
497 | auto_partition_command |
498 | fi |
499 | fi |
500 | else |
501 | cfdisk ${HDD} || dialog_die |
502 | fi |
503 | } |
504 | |
505 | setup_hdd_format() |
506 | { |
507 | install -d /tmp |
508 | :> /tmp/format.log |
509 | |
510 | if [[ -n ${SWAPHDD} ]] |
511 | then |
512 | # sanity check - should not happen |
513 | if is_mounted --device "${SWAPHDD}" |
514 | then |
515 | echo "format: device ${SWAPHDD} is already mounted, umount it" >&2 |
516 | umount "${SWAPHDD}" |
517 | fi |
518 | mkswap ${SWAPHDD} || die |
519 | fi |
520 | |
521 | if [[ -n ${BOOTHDD} ]] |
522 | then |
523 | # sanity check - should not happen |
524 | if is_mounted --device "${BOOTHDD}" |
525 | then |
526 | echo "format: device ${BOOTHDD} is already mounted, umount it" >&2 |
527 | umount "${BOOTHDD}" |
528 | fi |
529 | |
530 | mkfs."${FORMAT_FILESYSTEM_BOOTHDD}" "${BOOTHDD}" &>> /tmp/format.log || dialog_die |
531 | fi |
532 | |
533 | if [[ -n ${ROOTHDD} ]] |
534 | then |
535 | # sanity check - should not happen |
536 | if is_mounted --device "${ROOTHDD}" |
537 | then |
538 | echo "format: device ${ROOTHDD} is already mounted, umount it" >&2 |
539 | umount "${ROOTHDD}" |
540 | fi |
541 | |
542 | mkfs."${FORMAT_FILESYSTEM_ROOTHDD}" "${ROOTHDD}" &>> /tmp/format.log || dialog_die |
543 | fi |
544 | } |
545 | |
546 | install_system_image() |
547 | { |
548 | pushd ${INSTALLROOT} > /dev/null |
549 | tar xvjpf ${IMAGEROOT}/${CDIMAGENAME} -C ${INSTALLROOT} |
550 | popd > /dev/null |
551 | } |
552 | |
553 | install_system_settings() |
554 | { |
555 | local CONFIG |
556 | |
557 | # write fstab |
558 | CONFIG="${INSTALLROOT}/etc/fstab" |
559 | clearconfig |
560 | if [[ -n ${BOOTHDD} ]] |
561 | then |
562 | addconfig -e "UUID=$(get_uuid ${BOOTHDD})\t/boot\t${FORMAT_FILESYSTEM_BOOTHDD}\tdefaults,noatime\t1 1" |
563 | fi |
564 | if [[ -n ${ROOTHDD} ]] |
565 | then |
566 | addconfig -e "UUID=$(get_uuid ${ROOTHDD})\t/\t${FORMAT_FILESYSTEM_ROOTHDD}\tdefaults,noatime\t0 0" |
567 | fi |
568 | if [[ -n ${SWAPHDD} ]] |
569 | then |
570 | addconfig -e "UUID='$(get_uuid ${SWAPHDD})'\tswap\tswap\tpri=1\t0 0" |
571 | fi |
572 | addconfig -e "proc\t/proc\tproc\tdefaults\t0 0" |
573 | addconfig -e "shm\t/dev/shm\ttmpfs\tdefaults\t0 0" |
574 | |
575 | # install network config skeleton |
576 | CONFIG="${INSTALLROOT}/etc/conf.d/net.eth0" |
577 | clearconfig |
578 | addconfig 'ONBOOT="yes"' |
579 | addconfig 'NETWORKING="dhcp"' |
580 | |
581 | # intel framebuffer quirk |
582 | CONFIG="${INSTALLROOT}/etc/splash/splash.conf" |
583 | if [ -e ${CONFIG} ] && [ -e /proc/fb ] |
584 | then |
585 | if [[ ! -z $(grep 'inteldrmfb' /proc/fb) ]] |
586 | then |
587 | fbdev=$(grep 'inteldrmfb' /proc/fb | sed 's:\([0-9]\).*:\1:') |
588 | [[ ${fbdev} != 0 ]] && sed -i "s:^\(SPLASH_DEV=\).*:\1\"/dev/fb${fbdev}\":" ${CONFIG} || dialog_die |
589 | fi |
590 | fi |
591 | } |
592 | |
593 | |
594 | ### installer dialogs ### |
595 | |
596 | dialog_die() |
597 | { |
598 | ERROR="$1" |
599 | RETVAL="$?" |
600 | dialog_install_failure |
601 | exit 1 |
602 | } |
603 | |
604 | dialog_warning() |
605 | { |
606 | local retval |
607 | |
608 | yesnobox $"\Z1 !!! Warning !!! \Zn\n\n\This harddrive will be irreversibly erased.\n\n\Do you want to continue ?" |
609 | retval=$? |
610 | if [[ ${retval} -eq 1 ]] |
611 | then |
612 | clear |
613 | echo $"The process was aborted." |
614 | exit 1 |
615 | fi |
616 | } |
617 | |
618 | |
619 | ### installer tasks ### |
620 | |
621 | task_setup_system_menu() |
622 | { |
623 | local mode |
624 | local retval |
625 | |
626 | mode="$(dialog_setup_system_menu)" |
627 | retval=$? |
628 | [[ ${retval} -eq 1 ]] && return 1 |
629 | if [[ ${retval} -eq 0 ]] |
630 | then |
631 | case "${mode}" in |
632 | "1") run_install auto ;; |
633 | "2") run_install normal ;; |
634 | "") task_setup_system_menu;; |
635 | esac |
636 | fi |
637 | } |
638 | |
639 | task_hardware_detection() |
640 | { |
641 | local message |
642 | |
643 | run_hardware_detection_disks |
644 | |
645 | message+=$"Harddrives:\n" |
646 | |
647 | if [[ ! -z ${ALL_DISKS} ]] |
648 | then |
649 | for i in ${ALL_DISKS} |
650 | do |
651 | message+="\Z3${i}\Zn " |
652 | done |
653 | message+="\n" |
654 | fi |
655 | |
656 | if [[ ! -z ${ALL_CDROMS} ]] |
657 | then |
658 | message+="\n" |
659 | message+=$"Optical disk drives:\n" |
660 | for i in ${ALL_CDROMS} |
661 | do |
662 | message+="\Z3${i}\Zn" |
663 | done |
664 | message+="\n" |
665 | fi |
666 | |
667 | # other devices |
668 | run_hardware_detection |
669 | case "${SPECIALDEVICE}" in |
670 | zotac*) message+=$"\n\Z2Zotac device detected.\Zn" ;; |
671 | rangee) message+=$"\n\Z2Rangee device detected.\Zn" ;; |
672 | maxdata) message+=$"\n\Z2Maxdata device detected.\Zn" ;; |
673 | i845) message+=$"\n\Z2Intel i845 VGA device detected.\Zn" ;; |
674 | nomsi) message+=$"\n\Z2Mainboard with P5VD2-X/VT8237/VX700 chipset detected.\Zn" |
675 | message+=$"\n\Z2Disabling Message Signaled Interrupts (MSI) capability of the kernel.\Zn" ;; |
676 | *) message+=$"\n\ZnCommon device detected.\Zn" ;; |
677 | esac |
678 | if [[ ${FORMFACTOR} = laptop ]] |
679 | then |
680 | message+=$"\n\ZnFormfactor Laptop, activating 'ondemand' powersaving mode.\Zn" |
681 | fi |
682 | if [[ ${FLASHDISK} = 1 ]] |
683 | then |
684 | message+=$"\n\ZnFlash memory detected.\Zn" |
685 | message+=$"\n\ZnF2FS will be used as default filesystem within the auto installation mode.\Zn" |
686 | fi |
687 | |
688 | messagebox -y 12 -h $"Detected hardware:" "${message}" |
689 | } |
690 | |
691 | task_select_target_hdd() |
692 | { |
693 | if [[ -z ${ALL_DISKS} ]] |
694 | then |
695 | dialog_no_harddrive_found |
696 | exit 1 |
697 | else |
698 | export HDD=$(dialog_select_target_harddrive) |
699 | fi |
700 | } |
701 | |
702 | task_setup_hdd_partitions() |
703 | { |
704 | local retval |
705 | |
706 | if [[ -z ${HDD} ]] |
707 | then |
708 | dialog_no_harddrive_found |
709 | exit 1 |
710 | else |
711 | dialog_setup_hdd_info |
712 | setup_hdd_partitions |
713 | fi |
714 | } |
715 | |
716 | task_main() |
717 | { |
718 | local method=0 |
719 | local retval |
720 | |
721 | while [[ ${method} -le 2 ]] |
722 | do |
723 | method=$(dialog_main) |
724 | retval=$? |
725 | [[ ${retval} -eq 1 ]] && exit 1 |
726 | if [[ ${retval} -eq 0 ]] |
727 | then |
728 | case ${method} in |
729 | "1") task_setup_system_menu ;; |
730 | "2") task_hardware_detection ;; |
731 | "3") install_do_reboot ;; |
732 | "4") /bin/bash --login -i ;; |
733 | esac |
734 | fi |
735 | done |
736 | } |
737 | |
738 | run_install() |
739 | { |
740 | local method="$1" |
741 | |
742 | task_hardware_detection |
743 | task_select_target_hdd |
744 | |
745 | case "${method}" in |
746 | auto) |
747 | if [[ ${FLASHDISK} = 1 ]] |
748 | then |
749 | export BOOTHDD="${HDD}1" |
750 | export SWAPHDD="" |
751 | export ROOTHDD="${HDD}2" |
752 | export FORMAT_FILESYSTEM_BOOTHDD="ext2" |
753 | export FORMAT_FILESYSTEM_ROOTHDD="f2fs" |
754 | else |
755 | # ext4 seems not to be compatible again |
756 | if [[ ${FORMAT_FILESYSTEM} = ext4 ]] |
757 | then |
758 | export BOOTHDD="${HDD}1" |
759 | export SWAPHDD="" |
760 | export ROOTHDD="${HDD}2" |
761 | export FORMAT_FILESYSTEM_BOOTHDD="ext2" |
762 | export FORMAT_FILESYSTEM_ROOTHDD="${FORMAT_FILESYSTEM}" |
763 | else |
764 | export BOOTHDD="" |
765 | export SWAPHDD="" |
766 | export ROOTHDD="${HDD}1" |
767 | export FORMAT_FILESYSTEM_BOOTHDD="" |
768 | export FORMAT_FILESYSTEM_ROOTHDD="${FORMAT_FILESYSTEM}" |
769 | fi |
770 | fi |
771 | export INSTALL_METHOD="${method}" |
772 | ;; |
773 | normal) |
774 | export BOOTHDD="${HDD}1" |
775 | export SWAPHDD="${HDD}2" |
776 | export ROOTHDD="${HDD}3" |
777 | export FORMAT_FILESYSTEM_BOOTHDD="${FORMAT_FILESYSTEM}" |
778 | export FORMAT_FILESYSTEM_ROOTHDD="${FORMAT_FILESYSTEM}" |
779 | export INSTALL_METHOD="${method}" |
780 | ;; |
781 | single) |
782 | export BOOTHDD="" |
783 | export SWAPHDD="" |
784 | export ROOTHDD="${HDD}1" |
785 | export FORMAT_FILESYSTEM_BOOTHDD="" |
786 | export FORMAT_FILESYSTEM_ROOTHDD="${FORMAT_FILESYSTEM}" |
787 | export INSTALL_METHOD="${method}" |
788 | ;; |
789 | flash) |
790 | export BOOTHDD="${HDD}1" |
791 | export SWAPHDD="" |
792 | export ROOTHDD="${HDD}2" |
793 | export FORMAT_FILESYSTEM_BOOTHDD="ext2" |
794 | export FORMAT_FILESYSTEM_ROOTHDD="f2fs" |
795 | export INSTALL_METHOD="${method}" |
796 | ;; |
797 | *) |
798 | die "Unknown install method '${method}', aborting." |
799 | ;; |
800 | esac |
801 | |
802 | task_setup_hdd_partitions |
803 | dialog_setup_hdd_format |
804 | setup_hdd_format > /dev/null |
805 | mount_rootfs |
806 | (install_system_image > /tmp/install.log) 2> /tmp/install_errors.log | install_meter | dialog_install_system_image |
807 | |
808 | dialog_install_settings |
809 | sleep 1 |
810 | install_system_settings |
811 | if is_initrd_supported |
812 | then |
813 | dialog_install_initrd |
814 | initrd_config |
815 | initrd_install |
816 | fi |
817 | |
818 | dialog_install_bootsector |
819 | bootloader_config |
820 | bootloader_install |
821 | |
822 | umount_rootfs |
823 | dialog_install_successful |
824 | } |
825 | |
826 | # set some proper traps |
827 | trap "trap_exit" SIGINT SIGQUIT |
828 | |
829 | task_main |
830 | |
831 | exit 0 |