Here’s a super nerdy post for all you techies out there.
I’m really a novice at all of this and there may have been better methods (which I would love to hear) and there may also be problems I have not yet encountered that others may be able to predict.
Essentially what I have done is created a personal, portable, operating system configuration on a portable hard drive. It allows me to work in a consistent environment with all of my personal files, software, and settings by plugging into any computer that will boot from a USB. In addition the system is designed to be a portable clone of both my work computer (on which which I cannot install Ubuntu due to policy) and my home computer and have all of the files from both available to me wherever I am.
Computer capable of booting from USB
320 GB Iomega eGo portable HD (Nicknamed DataFlask)
Ubuntu 10.04.1 Live CD (downloaded and burned .iso to CD)
Step 1: Partitioning
This was done using GParted on the Live CD. The first thing to do was to create the partition set-up on the portable drive. In order to keep my backed-up/synced folders accessible to the windows systems the first partition is left as a ~300 GB NTFS formatted partition. Next comes the boot partition; a 512 MB ext2 partition flagged as ‘boot’. And finally the ~20 GB extended partition with a ext4 section and the swap area. Here is an attempt at a graphical representation:
| 300 GB NTFS | 512 MB ext2 *boot ||< extended | ~20 GB ext4 | swap | /extended >||
Step 2: Ubuntu install
From the Ubuntu Live CD I installed Ubuntu. Using manual partitioning, I selected the portable drive and designated the ext2 partition to mount from /boot and the ext4 partition as the root ‘ / ‘. IMPORTANT on the last page of the install wizard I selected the ‘Advanced’ option and designated the ext2 partition (sdc3 in my case) to be where the boot loader (Grub) is installed. Be sure to encrypt your Home folder so that your personal data on the linux system stays secure.
On restart I was able to log into Ubuntu on the portable drive with no problem. Also, and most importantly, I did not erase the MBR on the HD of the computer I was working on (at least not on the second try). Had I not selected the advanced option and designated where the boot loader would be, I would not be able to load Windows, or any system, without having the portable drive plugged in to the computer that did the installing.
Step 3: Setting up Security
Because this portable drive (which I will refer to as ‘DataFlask’) was going to contain all of my personal files and information the first thing I did was install Truecrypt. Using Truecrypt I created a 100 GB encrypted file on the NTFS partition (FYI: this took several hours). Because truecrypt works across platforms (i.e. works on windows and macs) and the file is located on the NTFS partition, all of my files are securely encrypted but still accessible on the external drive when I’m not running the Ubuntu operating system. I can just plug the DataFlask in while running windows and it functions like a regular external HD.
Step 4: Setting up file syncing
To sync my files between computers and the DataFlask I chose to use Unison (‘sudo aptitude install unison-gtk’) because, again, it is a cross platform software, and because it will sync both ways between folders. Using Unison I synced my user folder under windows (C:/Documents and Settings/usrname) to a file I called ‘Work’ within the truecrypt volume. I then went home and synced my home user folder to a separate folder in the truecrypt volume called ‘Home’.
At this point I had a mountable, portable Ubuntu system with access to all of my personal files on whatever computer I boot into into. Also, the files are still accessible when plugging the DataFlask into a system already running Windows or MacOS (although I haven’t tested it on a Mac).
As an added benefit the DataFlask and Hard Disks of each computer serve as back-ups for one another; protecting my files should one of the drives fail.
Step 5: Making it easier on myself
I found it most efficient to save files to the truecrypt volume while operating in Ubuntu and then sync to the ‘real’ (permanent) HD before shutting down. I put two folders on the Ubuntu desktop labeled ‘Work’ and ‘Home’ respectively. Within each I put links to the ‘Desktop’ and ‘MyDocuments’ folders on the synced folders for each windows computer within the truecrypt volume. This allows quick access to the files I care about in an organized way.
Drawbacks/problems I’ve found:
Start-up is not quite as fast as it would be if install on the computers own HD. However, it is still comperable or BETTTER than booting into windows.
GParted seems to cause errors in the disk, even when not touching the partitions on the DataFlask. This results in unstable mounting of all media drives while using Ubuntu and failure to load Ubuntu on restart. Running fsck on the system drive either before rebooting using -force or using the Live CD seems to fix the problem when it crops up. I’m considering scripting fsck to run on every boot since it is so quick and easy. Just don’t us GParted
Unison sometimes runs into trouble with permissions discrepancies, probably due to the differences between how Windows and Lynux deal with them (?). Running Unison from the command line using: unison syncfile -perms=0 fixes the problem.
I’ve been using this tool for the past few years and its been absolutely amazing. Everything I want is at my fingertips whenever and wherever I want it. Very useful for a graduates student that often brings work home.
Let me know your thoughts and how something similar could be done more simply or flaws and problems I haven’t spotted yet. Thanks!