I’m a big fan of the stage3 install method.
Prepare partitions, format filesystems and make a mount point. Extract a root filesystem into place. Add a kernel and boot loader, reboot and done. The rest is configuration.
I haven’t had a commercially backed Linux device that I’ve been excited to use as much as my Pixel.
One of the things that brightened my day today was the realisation that Chromebooks support Linux filesystems for SDCards and other removable media.
This opens up a lot of Pi hackery possibilities.
Here’s a neat trick.
In almost every Linux install I do these days, I make sure it uses LVM for partitioning.
This has some advantages over straight up MBR partitions.
– Not having to predetermine the sizes of the rootfs, home partitions etc. I can start with small LVs then lvresize && resize2fs/resize_reiserfs if I ever hit the end.
– Handle hardware expansion elegantly. Adding and removing the underlying HDDs without worrying about copying files and folders. pvcreate, vgextend, pvmove then a final pvremove is all I need to replace a Disk that is starting to show SMART errors.
– RAID1-like protection, but only on LVs that need it. Also RAID0-like striping for performance on SWAP LVs.
– Snapshots: OMG! how useful are these?!?! The use cases deserve a post of their own.
Well, today I found another useful tidbit. Data Migration and vgmerge.
Through no fault of my own, I found myself sitting patiently at my desk waiting for a progress bar to complete. That was last Friday, the progress bar was for Ubuntu 11.10 Server 32-bit. The line between me and the ‘true’ internet contains a vast array of firewalls, switches, routers, nexuses (nexii?), IPS and fiber. I don’t actually hit the internet until the “local” pop-out somewhere in Amsterdam.
20 minutes of a 0.5MB/s download later, I should have realised. I can’t just close my eyes and hope that my dive into Ubuntu would be challengeless.
My task, package ‘P’ so that end-users don’t have to wade through ‘developer-friendly’ documentation. In the modern inclination towards Cloud Computing, Virtualising ‘P’ and pushing it out onto UCS farms seems like the way forward.
We’re experimenting with a Linux port. Linux has the happy ability to live happily with copies of itself in a network without calling in the accountants. It also means that a single use box only needs a single (or dual) core, a bit of RAM and ~5GB of disk space.
When building test tools, one writes code that works to do the job in the very limited scope of the moment. And so it is with program ‘P’. ‘P’ is a perfectly pythonic program and, in theory, should run perfectly happily on any modern OS. It’s a long and even more complicated story why, but program ‘P’ only works on windows. Stands to reason, windows is the most popular desktop OS.
The hand-wavy excuse for this legacy behaviour is that there’s a compiled C module that has one too many windows dependencies.
Snag. Developers, when forced to not use Visual Studio, think Linux is synonymous with Ubuntu. They have my pity and sympathy for not spending too long deciding. It’s understandable since they just want to get on with writing code, if it’s written well, then it should work anywhere.
I fire up my Gentoo templates. I have this really cool one that I just clone, change the hostname/root password and I immediately have a new Linux server.
Gentoo naturally has … err … differences and it is going to take too long to sift through and re-port ‘P’. Ubuntu here I come. A true case of whenyoucantbeatthemjointhem syndrome.
So, actually installing the bug ‘U’ isn’t that painful. There’s a curses wizard that guides you through some nice desirables, LVM partitioning, boot loaders and the VM friendly checkbox. I’m prepared to sacrifice updatability and tweaking if the end executable still works. The package manager works well enough, and google knows which commands I need next. I might even learn something about how the Ubuntu world works, then
come to love it hate it less. I only need to follow a recipe.
 I actually learnt the python language by reading this program.
 Compared to quad/octo-core 8GB RAM (max guest support) and ~40GB disk space, typically.
 It is REALLY cool, menial things like portage trees, local rsync mirrors, binhosts and icecream clusters are pre-configured. I should write a post about setting one up. From this template, friends at work have instantiated new subnets of production worthy servers within hours of summoning it from the mighty god VLAN.
When I buy hardware (computers, phones etc), I ignore every and all software features that may be advertised on the box.
Just because my computers could run windows, doesn’t mean that I need them too. Thus, all my computers boot, or dual boot Gentoo/Linux.
Juniper was a no-brainer, it’s many cores and high clock speed make it a very effective build host and/or number cruncher. If I could afford a multi-CPU machine, then I would have gone for that instead. I settled for a higher-than-average core count.
It’s dawned on me that I can also use this place to express some of my feelings about the current state of technology. So, here’s a small ditty about why I’m very much a fan of the Qt framework.
Qt (pronounced ‘cute’) first came to my attention when I started to use KDE, one of the main desktop environments in Linux. Qt is the toolkit that makes the buttons, graphics, text and layouts. KDE is responsible for using Qt to make full applications and, in general, the complete experience of using a computer to do day-to-day tasks.