From 13d1c08184ebfc727481fa13ae2285bb7567f279 Mon Sep 17 00:00:00 2001 From: Natanael Copa Date: Tue, 9 Feb 2010 10:36:44 +0000 Subject: setup-disk: implemeint -o option for restoring from apkovl --- setup-disk.in | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/setup-disk.in b/setup-disk.in index f424ee1..424f52c 100644 --- a/setup-disk.in +++ b/setup-disk.in @@ -87,8 +87,13 @@ install_mounted_root() { rootdisk=$(disk_from_part $rootdev) + if [ -z "$APKOVL" ]; then + lbu package - | tar -C "$mnt" -zx + else + echo "Restoring backup from $APKOVL to $rootdev..." + tar -C "$mnt" -zxf "$APKOVL" + fi echon "Installing system on $rootdev: " - lbu package - | tar -C "$mnt" -zx # apk reads config from target root so we need to copy the config mkdir -p "$mnt"/etc/apk/keys/ cp /etc/apk/keys/* "$mnt"/etc/apk/keys/ @@ -188,7 +193,10 @@ is_available_disk() { has_mounted_part $dev && return 1 # check so its not part of an md setup - has_holders /sys/block/$b && return 1 + if has_holders /sys/block/$b; then + [ -n "$USE_RAID" ] && echo "Warning: $dev is part of a running raid" >&2 + return 1 + fi # check so its not an md device [ -e /sys/block/$b/md ] && return 1 @@ -204,7 +212,6 @@ find_disks() { } useall() { - local rootdisk_dev="$1" local i size local boot_size=100 boot_part_type="83" @@ -234,6 +241,9 @@ useall() { echo " swap ${swap_size}MB" echo " / ${root_size}MB" echo "" + if [ -n "$APKOVL" ]; then + echo "System from $APKOVL will be restored" + fi echo -n "WARNING: All contents of $rootdisk_dev will be erased. Continue? [y/N]: " read i case "$i" in @@ -310,9 +320,10 @@ EOF } # Parse args -while getopts "r" opt; do +while getopts "ro:" opt; do case $opt in r) USE_RAID=1;; + o) APKOVL="$OPTARG";; esac done shift $(( OPTIND - 1)) -- cgit v1.2.3