]> spindle.queued.net Git - xodist/commitdiff
installer: add actual guts..
authorAndres Salomon <dilinger@collabora.co.uk>
Tue, 2 Jun 2009 23:52:15 +0000 (19:52 -0400)
committerAndres Salomon <dilinger@collabora.co.uk>
Tue, 2 Jun 2009 23:52:15 +0000 (19:52 -0400)
This just does a simple dd to copy the entire drive, partition tables and all.
Obviously, this means if you're installing from a 1GB image onto a 60GB drive,
the drive will appear as only a 1GB drive until the tables/filesystem have
been resized.  This is something we can tweak later..

Signed-off-by: Andres Salomon <dilinger@collabora.co.uk>
installer

index 0d2f2417b4cd591df73f7310920fc7c8e6b6e5b1..98b74278791dd3dfc616abaa4ac53a280ff5fb71 100755 (executable)
--- a/installer
+++ b/installer
@@ -50,17 +50,24 @@ do_install()
                echo "Error: couldn't find drive to install to!"
                exit 1
        fi
+
+       # don't keep fs mounted while copying it
+       umount /root
        
-       echo "Copying data from $ROOT_SRC => $TARGET"
-       echo "IF THIS IS INCORRECT, REBOOT NOW OR YOU WILL LOSE DATA!  (waiting 15s)"
        # wait 15s for user realize that they've made a mistake
+       echo "Copying data from        $ROOT_SRC  =>  $TARGET"
+       echo "IF THIS IS INCORRECT, REBOOT NOW OR YOU WILL LOSE DATA!  (waiting 15s)"
        sleep 15
 
        echo "Too late, starting copy..."
-sleep 20
+       # ideally, we'll resize the filesystem/partitions later..
+       dd if=/dev/$ROOT_SRC of=/dev/$TARGET bs=4k
 
-
-       echo "Done.  Remove installer and reboot."
+       echo "Done.  Remove installer media."
+       while [ -d /sys/block/$ROOT_SRC ]; do
+               sleep 1
+       done
+       reboot
 }
 
 for x in $(cat /proc/cmdline); do