Backup whole OS
What you can do is to backup your home directory and save a list of all packages that you have installed. To save the list of installed software use following command:
sudo dpkg --get-selections > package_list
This will create a file with a list of all pakcages/softwares that are installed on this system. You will need to backup this file to somewhere safe.
Then when you reinstall ubuntu on your machine you can use the following command to install all these software
sudo dpkg --set-selections < packages_list
This command WILL NOT install anything. It will just mark the packages for install. To install them, run the following command:
sudo apt-get -u dselect-upgrade
This will take time to complete as your system will download and install all the packages. After this command is complete replace your current home directory with the one you backedup previously.
Hope this helps
I answered "How to customize live Ubuntu CD?" with a way of creating live CDs from current installations. This means that you will not need to download all the packages again. This guide may seem long and hard, but it is mostly "follow along" and "copy and paste". Here it is, copied out and edited a bit:
Creating a live CD from an existing/new installation
A good way would be making a live CD from a current installation. This can be done using a virtual machine (just don't install any VM tools inside the guest OS)
So, first we need a fresh install(if you can't install it for real, try using a virtual machine) with only things that you need (in your case thunderbird, samba and ssh). Then we tweak the system and record where the tweaks are (e.g. you change your desktop background, the settings are in ~/.gconf or you add firefox shortcuts, they are located in ~/Desktop). This is needed for step 4.
Set up some variables:
export WORK=~/temp export CD=~/livecd export FORMAT=squashfs export FS_DIR=casper
Replace ~/temp with a path to a temporary directory in which we will work in. Replace ~/livecd with a path to the CD tree.
Make the folder structure.
sudo mkdir -p ${CD}/{${FS_DIR},boot/grub} ${WORK}/rootfs
Now we will need to install some packages:
sudo apt-get install grub2 xorriso squashfs-tools
Now we will copy the current installation, modify the exclude flags to fit your needs:
sudo rsync -av --one-file-system --exclude=/proc/* --exclude=/dev/* \ --exclude=/sys/* --exclude=/tmp/* --exclude=/home/* --exclude=/lost+found \ --exclude=/var/tmp/* --exclude=/boot/grub/* --exclude=/root/* \ --exclude=/var/mail/* --exclude=/var/spool/* --exclude=${WORK}/rootfs \ --exclude=/etc/fstab --exclude=/etc/mtab --exclude=/etc/hosts \ --exclude=/etc/timezone --exclude=/etc/shadow* --exclude=/etc/gshadow* \ --exclude=/etc/X11/xorg.conf* --exclude=/etc/gdm/custom.conf \ / ${WORK}/rootfs
If you have a separate boot partition, execute this:
sudo cp -av /boot/* ${WORK}/rootfs/boot
If you want to copy your user configurations and files, modify this list as needed: CONFIG='.config .gconf Desktop someotherfolder andanotherfolder' And now we copy your configurations and files:cd ~ && for i in $CONFIG do sudo cp -rpv --parents $i ${WORK}/rootfs/etc/skel done
Now we chroot into the new system and modify it.
sudo mount --bind /dev/ ${WORK}/rootfs/dev sudo mount -t proc proc ${WORK}/rootfs/proc sudo mount -t sysfs sysfs ${WORK}/rootfs/sys sudo mount -t devpts devpts ${WORK}/rootfs/dev/pts sudo chroot ${WORK}/rootfs /bin/bash
The next commands are done in chroot:
LANG= apt-get update apt-get install casper
Casper contains live scripts. Now the installer (gnome version) apt-get install ubiquity ubiquity-frontend-gtk Or if you want KDE:
apt-get install ubiquity ubiquity-frontend-kde
Update modules.dep and initramfs:
depmod -a $(uname -r) update-initramfs -u -k $(uname -r)
Remove non-system users - do not worry, we have copied the settings and data into the "skeleton" of users. That means all new users will have them.
for i in `cat /etc/passwd | awk -F":" '{print $1}'` do uid=`cat /etc/passwd | grep "^${i}:" | awk -F":" '{print $3}'` [ "$uid" -gt "999" -a "$uid" -ne "65534" ] && userdel --force ${i} 2>/dev/null done
Clean up:
apt-get clean find /var/log -regex '.*?[0-9].*?' -exec rm -v {} \; find /var/log -type f | while read file do cat /dev/null | tee $file done rm /etc/resolv.conf /etc/hostname
Exit chroot.
exit
Now, we copy the kernel:
export kversion=`cd ${WORK}/rootfs/boot && ls -1 vmlinuz-* | tail -1 | sed 's@vmlinuz-@@'` sudo cp -vp ${WORK}/rootfs/boot/vmlinuz-${kversion} ${CD}/boot/vmlinuz sudo cp -vp ${WORK}/rootfs/boot/initrd.img-${kversion} ${CD}/boot/initrd.img sudo cp -vp ${WORK}/rootfs/boot/memtest86+.bin ${CD}/boot
So that the installer doesn't install things like casper:
sudo chroot ${WORK}/rootfs dpkg-query -W --showformat='${Package} ${Version}\n' | sudo tee ${CD}/${FS_DIR}/filesystem.manifest sudo cp -v ${CD}/${FS_DIR}/filesystem.manifest{,-desktop} REMOVE='ubiquity casper user-setup os-prober libdebian-installer4' for i in $REMOVE do sudo sed -i "/${i}/d" ${CD}/${FS_DIR}/filesystem.manifest-desktop done
Unmount what we have mounted:
sudo umount ${WORK}/rootfs/proc sudo umount ${WORK}/rootfs/sys sudo umount ${WORK}/rootfs/dev/pts sudo umount ${WORK}/rootfs/dev
Convert to squashfs:
sudo mksquashfs ${WORK}/rootfs ${CD}/${FS_DIR}/filesystem.${FORMAT}
Make filesystem.size:
echo -n $(sudo du -s --block-size=1 ${WORK}/rootfs | tail -1 | awk '{print $1}') | sudo tee ${CD}/casper/filesystem.size
And md5:
find ${CD} -type f -print0 | xargs -0 md5sum | sed "s@${CD}@.@" | grep -v md5sum.txt |sudo tee ${CD}/md5sum.txt
Now grub.cfg:
sudo nano ${CD}/boot/grub/grub.cfg
(replace nano with your fav text editor, it doesn't matter) Paste this and save:
set default="0" set timeout=10 menuentry "Ubuntu GUI" { linux /boot/vmlinuz boot=casper quiet splash initrd /boot/initrd.img } menuentry "Ubuntu in safe mode" { linux /boot/vmlinuz boot=casper xforcevesa quiet splash initrd /boot/initrd.img } menuentry "Ubuntu CLI" { linux /boot/vmlinuz boot=casper textonly quiet splash initrd /boot/initrd.img } menuentry "Ubuntu GUI persistent mode" { linux /boot/vmlinuz boot=casper boot=casper persistent quiet splash initrd /boot/initrd.img } menuentry "Ubuntu GUI from RAM" { linux /boot/vmlinuz boot=casper nopersistent toram quiet splash initrd /boot/initrd.img } menuentry "Check Disk for Defects" { linux /boot/vmlinuz boot=casper integrity-check quiet splash initrd /boot/initrd.img } menuentry "Memory Test" { linux16 /boot/memtest86+.bin } menuentry "Boot from the first hard disk" { set root=(hd0) chainloader +1 }
Make the CD/DVD!
sudo grub-mkrescue -o ~/live-cd.iso ${CD}
Test it using a virtual machine!
All credit goes to capink, because the guide is from here.
In China, some friends use ucloner in Ubuntu to backup the OS.
https://code.google.com/p/ucloner/
UCloner is a backup/restore/clone tool designed for Ubuntu Linux. In some way it's just like Norton Ghost for Windows.
With UCloner you can backup your Ubuntu system to a squashfs image file. Directly from this image file you can boot up a PC into a so-called "Live Ubuntu" environment (need "casper" package).
An active ubuntu system can clone itself into a/some target partition(s) with the help of UCloner. Remember Agent Smith in Matrix ? yeah, that's it.
It has both command line and graphical interface. It's more flexible when running in command line interface.
UCloner is free software, distributed under GPL v2.