Updating Debian with fresh install on new drive

The following are the steps I take update Debian by making a fresh install on a clean drive.

Create a drive. There's plenty around to explain this step if you're not sure.

Format and mount the drive.

mkfs.ext4 /dev/sdb1 #enter your drive here
mount /dev/sdb1 /mnt

Install deboostrap and bootstrap the system using your arch and preferred distrobution. Mount proc and dev.

debootstrap --arch amd64 testing /mnt http://ftp.us.debian.org/debian
mount -t proc none /mnt/proc
mount -o bind /dev /mnt/dev

Backup the following configuration files on the new system and copy the old ones. This will preserve the new system in case of a failure. Also if you plan to install all the same packages make a list of those currently installed.

# drive mounts
/etc/fstab #use blkid to get UUID (/dev/sdb1 can change)
# apt source list
# networking - some of these may already be correct
# list of current packages (for installation later)
dpkg --get-selections > /home/packages.list

Chroot into the new system and do some final configuration touches.

LANG=C chroot /mnt /bin/bash
# configure time with system prompt
dpkg-reconfigure tzdata
# install and configure locales
aptitude install locales
dpkg-reconfigure locales
# mount all your drives
mount -a

Migrate users, passwords, groups, etc. One way to do this is to follow these instructions migrate-user-from-old-server-to-new-server. If you're the only user on your machine, you can simply add an identical user.

Update apt. Then install a Linux image and grub. Verify the root account has a password.

aptitude update
# search for appropriate kernel
aptitude search linux-image
# install image, including specific version is you wish (linux-image-3.1.0-1-amd64)
aptitude install linux-image
aptitude install grub2
# if grub-install and update-grub do not fire automatically, you should run them now
# make sure the root password has been set

The last step is to install up-to-date versions of your current packages on the new system, if you wish. You may, of course, simply set out installing any packages you want with aptitude.

# run these two functions to install all of your current packages
dpkg --set-selections