Over many years of developing software, I have run across all kinds of systems. I've had desktop machines packed with 12-core processors, dual GPUs. I've had Lenovos with extended batteries, gaming laptops, Macs. I've had an eeebook 900 that I even managed to turn into a Hackintosh. But the single, most valuable computer I have had, from the point of view of an OS dever, is the Panasonic Toughbook CF-18.
Sure, it is a bit old, it was released sometime around 2004 or 2005, I don't know the exact date, and it came with Windows XP. Cheap, too, you can pick one up on ebay for about $125. But it is very true to its name, it is a rugged system with a lot of unique features.
For an OS dever, the best thing to get your sweaty, dorito covered paws on after you feel you have graduated from the kiddie pool, is a legacy system with open spec devices. Quickly, you will realize that real machines are very different from what you saw in the sheltered, padded walls of virtualization. To make any progress, you need something that has the same hardware as the virtualization software implements, so that you can switch back and forth to test changes.
This old toughbook was lying in a drawer for several years, long neglected. When I found it, and looked at Device Manager in Windows, I knew what it was going to become. This is why I never throw a computer away.
This Toughbook has:
- PS/2 Touchpad and Keyboard
- USB Touchscreen
- Intel Graphics
- AC97 Sound Card
- RTL8139 Network Card
- Intel Wireless Card
- IDE Hard Drive
- USB Boot Support
- Serial Port
- ACPI and Battery
Why are these things important, to the point of making me drool dorito colored spit?
1 and 2: The Inputs
Every virtualization program supports a seamless input mode, based on a USB touchscreen, on UHCI. USB, however, is a very hard spec to implement, so having the old way (PS/2) of doing things left over is incredibly important. Convenient, then, that the toughbook has both!
3: The Graphics
Intel Graphics are the only major graphics cards with completely open specifications. This means that, when the time comes, I will be able to get into 3d acceleration without reading all of the nouveau project's source code. It also has full support for VBE 2.0, which I use to set up a linear frame buffer. Again, every virtualization program implements VBE in the same manner.
4: The Audio
No audio codec in the world has been implemented as often as AC97. Most High Definition Audio motherboard controllers support an AC97 legacy mode, meaning that HDA devices still implement AC97. Every virtualization program supports an AC97 controller, and it is very easy to program.
5 and 6: The Network
Similarly, RTL8139 is extremely easy to program, every virtualization program supports it. When the time comes, because it has an Intel wireless card with an open specification, I will be able to get wireless going easily.
7 and 8: The Storage
Without IDE, I would be lost for storage. This computer has a 40GB disk on the primary ATA channel, which every virtualization program has, as well. It also has the ability to boot from USB over EHCI, which lets me deploy a new version of the operating system in seconds. It also lets me test my USB drivers.
9: The Serial Port
Sometimes, things just don't work. The display is black, the mouse doesn't move, the keys don't work. You need something that you can fallback to when everything else goes wonky. That, my friends, is the serial port. The toughbook has a serial port on what is called COM1 by Windows, which is exactly what I use for debugging in every virtualization program.
10: The Battery
Another important feature of this device is that it can be unplugged. This means it will help me develop a power management system using ACPI.
The Panasonic Toughbook CF-18 is, in essence, the real hardware that every virtualization program attempts to be. It is the canonical PC. It lets me jump directly from virtualization to real hardware, with the same drivers. It has let me discover countless bugs in a much faster manner than I would accomplish if any of its features were different. It is, therefore, An OS Devers Dream.