diff options
author | Andreas Loibl <andreas@andreas-loibl.de> | 2011-03-17 05:07:10 +0100 |
---|---|---|
committer | Andreas Loibl <andreas@andreas-loibl.de> | 2011-03-17 05:07:10 +0100 |
commit | 00286a5db286e21a766b6af057052dc5d17561ad (patch) | |
tree | 7232dadf6dc3570705c3104fe0c000f480c7a0ee /backend/modules/install | |
download | acritoxinstaller-00286a5db286e21a766b6af057052dc5d17561ad.zip acritoxinstaller-00286a5db286e21a766b6af057052dc5d17561ad.tar.gz |
Initial commit
Diffstat (limited to 'backend/modules/install')
-rw-r--r-- | backend/modules/install | 75 |
1 files changed, 75 insertions, 0 deletions
diff --git a/backend/modules/install b/backend/modules/install new file mode 100644 index 0000000..760f40d --- /dev/null +++ b/backend/modules/install @@ -0,0 +1,75 @@ +#!/bin/bash + +function do_install() +{ + send install_step check_partitions_for_install + check_partitions_for_install + prepare_target + prepare_partitions_for_install + copy_system_to_target + update_fstab_on_target + update_passwd_on_target + copy_home_to_target + copy_etc_to_target + configure_target_update_files + configure_target_purge_live_only_stuff + configure_target_services + install_bootmanager_to_target + send install_step cleanup + cleanup +} + +function prepare_target() +{ + send install_step prepare_target + mkdir -p /live/hdinstall + export TARGET=/live/hdinstall +} + +# Synopsis: chroot_it <...> +# +# execute the supplied command in the target +function chroot_it() +{ + [ -n "$TARGET" -a $UID -eq 0 ] && chroot $TARGET "$@" +} + +# Synopsis: copy_system_to_target +# +# This function copies the system to the target. +# Therefore $TARGET and all partitions of hd_map have to be mounted +# this should have be done in the prepare-stage (see prepare_partitions_for_install) +# +function copy_system_to_target() +{ + send install_step copy_system_to_target + emit_progress 0 + calculate_min_space + orig_size="$ESTIMATED_ROOT_MIN" + dest_size_before=$(di -dm -fSMu | gawk '/\/live\/hdinstall/{used+=int($3)} END{print int(used)}') + dest_size_diff=0 + + cd /live/filesystem + cp -a * $TARGET & + + cp=$! + old_percent=0 + while ps --pid $cp &>/dev/null + do + dest_size=$(di -dm -fSMu | gawk '/\/live\/hdinstall/{used+=int($3)} END{print int(used)}') + dest_size_diff=$(( $dest_size - $dest_size_before )) + percent=$((( 100 * $dest_size_diff ) / $orig_size )) + if [ "$percent" != "$old_percent" ]; then + emit_progress $percent + old_percent="$percent" + fi + sleep 5 + done + + sync + mkdir -p "$TARGET/proc" "$TARGET/dev" "$TARGET/sys" + mount --bind /proc "$TARGET/proc" + mount --bind /dev "$TARGET/dev" + mount --bind /sys "$TARGET/sys" +} + |