Quick start xubuntu 12.04

From RidgeRun Developer Wiki

My Ubuntu 10.10 distro went out of support. After ignoring the problem for months, I decided today (2012 12 22) to give myself a holiday present and upgrade. I bought another 64GB SSD for the root directory (except /home and /opt, which I keep on another physical disk). I bought the second SSD, so I could get back to work using the one holding Ubuntu 10.10 if everything went wrong.

I spent several day getting my xorg.conf file working with my 3 monitors (two X screens, one with two monitors). I didn't want to spend several more days trying to get xubuntu happy.

Installing Xubuntu

Downloaded 64 bit Xubuntu 12.04 ISO from http:www.xubuntu.org and did a default install, selecting installing non Open Source packages. Updated to the latest version.

sudo apt-get upgrade

When I started Xubuntu 12.04, one monitor was black and the other two were mirrored - ugh. I checked the /etc/X11/xorg.conf file only to find none existed. I installed the nvidia drivers (I have two nvidia cards), copied over the Ubuntu 10.04 xorg.conf file, crossed my fingers, and reboot. Yeah! two X screens one with two monitors and a separate one for IM on the third monitor. The only issue I have to work out is why everything looks grayed out on the IM monitor. But I can ignore that for now and instead focus on getting Xubuntu ready for embedded Linux development.

sudo, my best friend

I don't want sudo to ask me for a password all the time, so I run:

sudo sh -c "echo '%admin ALL=(ALL) NOPASSWD:ALL' >> /etc/sudoers"

Capturing packages installed on desktop PC

I have been using the same desktop PC, with Ubuntu installed, for several years. The simple way to make sure my Xubuntu desktop would have what I needed while on the road was to install the same packages I have installed on my desktop.

With Ubuntu 10.10 running, I executed:

INSTALLED_PACKAGES=`aptitude search '[a-z]*'  | grep ^i | cut -c5-36`
for PACKAGE in $INSTALLED_PACKAGES ; do echo apt-get -y install $PACKAGE ; done > /tmp/get-packages.sh

Installing packages on xubuntu

I used /tmp/get-packages.sh to install the set of packages I have used in the past:

time sudo sh -x $HOME/Desktop/get-packages.sh

The only problem with this approach is when I stop using a package, I still carry it around. It also took around XXX hours to download and install. If I would have put all the packages on one command line it would have been much faster.

Windows and mouse

I like auto focus and auto-raise as I move the mouse around. I also like the close, minimize, and maximize buttons to match OSX. I wen into menu -> Settings -> Settings Manager -> Window Manager to adjust those settings.

Use bash instead of dash

The shell scripts I use follow the bash syntax, so I need it as my default shell.

rm /bin/sh ; ln -s /bin/bash /bin/sh

Separating operating system data from user data

Many years ago someone taught me the trick to keep my data in /local/opt and /local/home, where I have the following symbolic links

mv /opt /opt.old
ln -s /local/opt /opt
mv /home /home.old
ln -s /local/home /home

where /local is the mount point for a separate hard disk. This is the same /local I used on Ubuntu 10.04, so all my personal settings and data are ready to go, along with all the tools and libraries I have installed that were not part of the distribution.

My /etc/fstab contains:

# <file system>                             <mount point>   <type>  <options>                  <dump>  <pass>
UUID=15b2e4cf-d939-4b6c-aa8e-4c3625d0c7b9   /               ext4    errors=remount-ro          0       1
UUID=877d0afa-7afd-4a63-af9d-73de26a63c85   /local          ext4    relatime,errors=remount-ro 0       2

It can be a bit tricky to make the first user (/home/tfischer in my case). I make a normal one during the Ubuntu install process, then I run the symblic line commands shown above and my home directory with all it contents magically appears. I sometimes have to change the UID (user ID) in the /etc/passwd file.

Get some needed 32 bit versions of the libraries

sudo apt-get install liblzo2-2:i386 liblzo2-dev:i386 # for mkfs.ubifs

Check out, configure, and build RidgeRun SDK

To see if I had everything I needed installed, I checked out one of RidgeRun's SDKs and built the target hardware images.

cd
mkdir -p work
cd work
svn co $SDK_URL dm368sdk
cd dm368sdk
make config
make