About a month ago I was lucky enough to score one of those $99.00 touchpads.  I seen the explosion on the internet the night before and got up nice and early and headed to our local Staples where a line had already formed.  

Essentially I purchased this tablet with the sole intent of porting it over to android honeycomb whenever the instructions and forums came out.  To help pass the time waiting for the android port I’ve decided to throw Ubuntu on the unit, just to see how well it works.  Don’t get me wrong, HP’s webOS is not that bad and I’m really enjoying my experience with it, but I find the built in browser is lacking somewhat.  So I thought I would give Ubuntu port a try and see what Chrome was like.  There is a lot of information out there, below is really just a compilation of information that I found, and the steps that I took to make this work….

For the most part I followed the directions and links off of this page so if you run into any issues you may want to browse the content and links there.
So, Step 1. You need to install Preware.  Basically this is like a homebrew installation, or like jail breaking an ipad.  There are a ton of pages with instructions on how to install Preware and I'm not going to regurgitate them all.  The nicest instructions I have found is this post from Jason Nash.
All that you really need to have installed from that blog post is Preware, but I would recommend pulling down some of the other apps Jason mentioned as well.  One big note is to be sure you are running 3.0.2 of webOS as instructed in Jason's blog as this is what I am going to base our webOS doctor build off of.
After you have Preware installed, grab your linux or osx machine and let the fun begin.  For the purpose of this tutorial I used an Ubuntu based laptop, but I'm sure they wouldn't stray too far from the following on a Mac.
In order to get the packages that we need you will have to add the partners repo to your sources.list using the following command.
sudo echo "deb http://archive.cononical.com/ lucid partner" >> /etc/apt/sources.list
And then install git, git-core, and java if you don't already have them.
sudo apt-get update
sudo apt-get install git git-core
sudo apt-get install sun-java6-jre
Download Palm novacom and install it
32 bit
64 bit
Use the following command to install the respective package
sudo dpkg -i palm-novacom_1.0.76_i386.deb
Now we need to get the meta doctor in order to build our new images for webOS (including our partitioned space for Ubuntu).  For this we will use git.  I did this inside of my users home directory but feel free to do it wherever you like, just remember where you are….
git clone git://git.webos-internals.org/tools/meta-doctor.git
After this is done syncing down the packages go into meta-doctor folder and create a downloads folder
cd meta-doctor
mkdir downloads
cd downloads
Now you need to pull down the appropriate webOS doctor version for your device.  I got this by using the following command
wget http://palm.cdnetworks.net/rom/touchpad/p302r0d08012011/wifip302rod/webosdoctorp302hstnhwifi.jar
Now we need to edit the MakeFile in order to partition off some space for our ext3fs partition.  Hopefully you are familiar with vi, if not, I'll do my best to explain it.
Get back to the root directory of meta-doctor
cd meta-doctor
Open up makefile
sudo vi Makefile
Scroll down through file until you see the line # EXT3FS_PARTITION_SIZE = 2GB.  This is where we will uncomment (remove the #) before this line.  To do this, simply place you cursor over the # and hit the 'x' key so it now reads EXT3FS_PARTITION_SIZE = 2GB
You can increase the size of this as well if you like, I only have a 16GB model, so I just left it at default.
To save and quit vi type the following in the vi window
Now we need to actually build our images for the touchpad.  This is done by typing the following
make DEVICE=touchpad CARRIER=wifi all
At this point I actually received an error stating "Please download the correct version of the webOS doctor .jar file………"  Basically, as long as you downloaded the correct jar file specified in the wget statement above,  you just need to rename your downloaded jar file to the one in the error message by using the following command.
mv downloads/webosdoctorp302hstnhwifi.jar  downloads/webosdoctorp302hstnhwifi-3.0.2.jar
then run the make command again
make DEVICE=touchpad CARRIER=wifi all
After the build is complete, you should be left with a jar file in the build directory.  I attempted to perform the following steps from within Ubuntu but had no luck, so I just copied the build directory back over to my windows box where I had installed the WebOS quick installer (from Jason's blog) and completed the rest of the process there….

Double click the newly created Jar file and set your language, accept the agreement etc.
I ran into a few little issues here trying to get my system to recognize my touchpad.  I had to power on my touchpad in usb mode (holding power button and volumes button in) in order to get it to be recognized by the quick installer.  However you should be able just to plug the unit in and just click 'Close' on the usb prompt when it comes up, but if all else fails, do the boot sequence above.
This process will take a few minutes as it basically re-installs webOS on your touchpad and brings it back to factory default (with our new partition)  As well, it will need to resync all of your applications again from the HP App Catalog (so hopefully you remember your webOS account credentials)  Also none of the tutorials mentioned re-installing Preware, but I had to do that again as well.
Once it's done we need to set our ext3fs partition to mount at boot time.  There are a few ways to do this, but I did it using novaproxy, putty, and python.
Install Python (download)
Get a copy of the novaproxy.py script (novaproxy.py) – Just right click this and save file as.  I put it right in my c:\python\ folder for ease of use.
And you should already have putty  (download)
Now, you need to connect your touchpad to your system again in 'charge only mode' (click close when the usb prompt comes up).
Then drop down to your Python folder and run 'python novaproxy.py' in a command prompt.
It should tell you that it is 'listening on localhost' on a certain port.  Every time I ran it was it was port 8023.  Now we need to fire up putty, connect to localhost on port 8023 using raw as the connection type.  Also, under the terminal options you need to select 'Force off' for all of the Line Discipline options.
You should now be connected to a shell on the touchpad.  Now we will get into actually setting our partition to mount at boot time.  This is done by executing the following commands in the terminal window.
mount -o remount,rw /
mkdir -p /media/ext3fs
mount -o remount,rw /
echo "/dev/mapper/store-ext3fs /media/ext3fs ext3   noatime,data=writeback   0   0" >> /etc/fstab
mount -a
Ok, almost there now.  We need to go back to Preware now and install the following applications.
UbuntuChroot, Xecutah, and XServer
After you have installed these just fire up Xecutah, and tap the Ubuntu Chroot 11.04 option.  You should see a new card pop up and after a few moments you will be sitting at your new Ubuntu installation.  From here, you can install applications and patches using the standard apt-get install options and place whatever you want within your installation.  Some applications however work better than others.  I followed the autoconfig instructions located here in order to get my window manager and everything configured.  Just a note, I used lxde as my window manager and chose to use the onboard keyboard as the default keyboard.  

Just a few other tips…When using the native touchpad keyboard its better to start Xecutah and launch Ubuntu in portrait mode as well, this way you have a bit more real-estate as there is no way that I can find to hide the native keyboard while using it.  If using the other keyboard that comes standard with the auto config it's best to go and grab 'Tweaks' from Preware and hide the onboard keyboard for good.  Also during this whole process, I found that if something didn't work, just reboot the device, it does wonders!  Anyways, Ubuntu clearly doesn't run perfect on the touchpad, but it is nice to have chrome for a browser on my unit, as I thought the original webOS browser seems to be lacking in some ways, plus, being the geek that I am…I just found this kinda fun! 🙂