The ODROID-U2 is an ARM development board with a quad-core Exynos CPU and 2GB of RAM that I’ve been using since early 2013 to do software development of various kinds. Despite its powerful GPU, I run it headless and access it (much more conveniently, it must be said) via VNC.
I run an ultra-minimalist, extra-light desktop environment on it using openbox
, fbpanel
, pcmanfm
and lxterminal
– it’s the exact same environment that I use inside my Vagrant boxes, and it has served me well over the years.
The machine is fast enough to run NetBeans, Chromium and my usual toolset, and I take advantage of a little-known feature in the vnc4server
package to resize the desktop according to what client device I’m using (ranging from 1024x768 from an iPad mini or phone to full-blown 1920x1080 from a desktop PC).
Resizing the display
You need to launch vnc4server
with multiple --geometry
options, like so:
vncserver -depth 16 --geometry 1024x768 --geometry 1280x720 --geometry 1280x800 --geometry 1600x1200 --geometry 1920x1080 --geometry 2048x1536
…or put those resolutions in your .vnc/config
:
-randr 1024x768,1280x720,1280x800,1280x1024,1600x1200,1920x1080,2048x1536
Those resolutions correspond to the various “thin clients” I use to get stuff done on it: my iPad mini, an Android device, a MacBook Pro, a retina iPad (where I use 1600x1200 quite often), and a regular desktop PC. Whenever I switch clients, I use xrandr
to switch resolutions to match the physical display (all the VNC clients I use seem to support this these days):
$ xrandr
SZ: Pixels Physical Refresh
0 1024 x 768 ( 260mm x 195mm ) 60
*1 1280 x 800 ( 325mm x 203mm ) 60
2 1600 x 1200 ( 406mm x 305mm ) 60
3 1280 x 720 ( 325mm x 183mm ) 60
4 1920 x 1080 ( 488mm x 274mm ) *60
5 2048 x 1536 ( 520mm x 390mm ) 60
Current rotation - normal
Current reflection - none
Rotations possible - normal
Reflections possible - none
$ xrandr -s 4
I’ve recently reinstalled mine to run Ubuntu 14.04 off an 8GB EMMC with an 8GB Class 10 MicroSD Card for extra storage off /opt
:
# cat /etc/fstab
UUID="1E66-94B1" /media/boot vfat defaults 0 0
/dev/mmcblk1p3 none swap 0 0
UUID=074e71d6-ddce-47d5-b3e4-949ef0029619 /opt ext4 defaults 0 0
One of the essential tweaks I do to any Linux system I have to deal with on a regular basis is to install the Infinality font rendering packages, which do away with all the nastiness usually associated with what passes for typography in X11:
Install base packages
apt-get -y update
echo ttf-mscorefonts-installer msttcorefonts/accepted-mscorefonts-eula select true | sudo debconf-set-selections
apt-get -y dist-upgrade
apt-get -y install htop tmux vim rsync python-dev python-setuptools libev-dev
apt-get -y install sqlite3 imagemagick bzip2 ttf-mscorefonts-installer
sudo fc-cache -f -v
sudo easy_install virtualenv
Set up Infinality for better font rendering
if [ ! -d /etc/fonts/infinality ]; then
sudo apt-get install -y build-essential devscripts git-core debhelper
sudo apt-get install -y docbook-to-man libx11-dev x11proto-core-dev quilt
cd ~/Development
git clone https://github.com/rcarmo/debian-infinality.git
cd debian-infinality/freetype-infinality/
./build.sh
cd ../fontconfig-infinality/
./build.sh
cd ..
sudo dpkg -i freetype-infinality/*.deb fontconfig-infinality/*.deb
cd /etc/fonts/infinality
sudo ./infctl.sh setstyle osx
fi