So, Google have just announced a new operating system for devices like netbooks. From the announcement:
Google Chrome OS is an open source, lightweight operating system that will initially be targeted at netbooks. Later this year we will open-source its code, and netbooks running Google Chrome OS will be available for consumers in the second half of 2010. Because we're already talking to partners about the project, and we'll soon be working with the open source community, we wanted to share our vision now so everyone understands what we are trying to achieve.
Firstly, this is great news. We already have moblin , maemo, and various netbook remixes, but any big company deciding to invest in building open source platforms is likely to stimulate the ecosystem, provide competition that leads to innovation, and bring valuable eyeballs and marketing to the open source world.
Unfortunately, Google have done it again - started down the path to another "throw it over the wall" open source project, missing out on the key benefits of the open development model and skipping that most important step of all - building a community from inception to ensure the community develops and matures in line with the code.
That announcement quote again, with some emphasis added:
Google Chrome OS is an open source, lightweight operating system that will initially be targeted at netbooks. Later this year we will open-source its code, and netbooks running Google Chrome OS will be available for consumers in the second half of 2010. Because we're already talking to partners about the project, and we'll soon be working with the open source community, we wanted to share our vision now so everyone understands what we are trying to achieve.
Now, I know many people at Google, I know they have a lot of smart folk there, and I know that some parts of the organisation really understand what open source is and how it works. But how is it that there is this continuous disconnect at a fundamental level when it comes to new initiatives? We saw it with Android and we saw it with Chrome: Google do the bulk of the work behind closed doors, then dump the code out there and simply expect everyone to pick it up and run with it. If you're moving to open from a proprietary codebase, such as in Symbian's case, this approach is understandable. But if you're starting from scratch, it makes no sense at all.
Here's the thing. Either you believe in the open source model - and the open development that goes with it - or you're a cynical company using it for marketing and to leverage some free bug fixes. Which is it to be, Google? Are you going to start the conversation around code from inception, giving every motivated developer an opportunity to collaborate and contribute, accepting not just the rewards of community development but also the risks? Or are you going to do your own thing yet again, and hope no-one calls you on it?
I tried out the Moblin test drive USB image on my EeePC, but wanted something a little more permanent. Moblin seems like quite an interesting alternative to the hideous Xandros Linux install that comes by default or my not-strictly-legitimate installation of Mac OS X, and I'd like it hanging around so I can keep an eye on the project. Putting it on an SD will allow me to use it without impacting my normal work environment - and I could even have various releases and other operating systems on multiple SD cards.
Unfortunately, there's a few bugs that cause problems when installing to an SD card, and it took a bit of time searching around to find the right solutions. I found some threads on the moblin-dev mailing list, but thought it would be useful to pull everything into one coherent guide. So here's what I did.
Firstly, create a bootable USB image. The detailed moblin live image instructions contain an error for Mac users:
sudo dd if=/path/to/downloaded.img of=/dev/diskN bs=1m
should read:
sudo dd if=/path/to/downloaded.img of=/dev/diskN bs=1024
When you've written the image to the USB key, you need to boot from the USB key. Press ESC as the machine starts up to get the boot device selection menu. When the Moblin menu appears, select the "Boot and Install" option.
When the installer starts, work through to the section for selecting the install location "Select the drive(s) to use for this installation", and select your SD card device. For me, this shows up as "sdd Single Flash Reader". Also select it as the location for the boot sector, in the "What drive you you like to boot this installation from?" option.
When the installation is complete, allow it to reboot, but again select the USB key to boot from as we need to apply some fixes to our install before it will work. At the Moblin boot menu, select "Boot" to run the live image off the USB key.
When Moblin starts, go to applications and select terminal. You now need to mount the recently installed partition and edit a few files there. Firstly, become root by typing su - (the password is moblin), and then type:
mkdir /mnt/sd
mount /dev/sdd1 /mnt/sd
cd /mnt/sd
vim etc/fstab
This will allow you to edit the location of the partitions to mount. Change any references to sdd in this file to sdc (since when we boot without the USB key, the SD card will be in a different location). There should be two entries - one for the / partition and one for the swap partition.
Next, edit the grub boot configuration (vim etc/grub.conf) and again change sdd to sdc, and also add rootdelay=10 to the kernel line.
Finally, a quick hack to make the boot process pause before checking the disks. vim etc/rc.sysinit and search for the fsckoptions section, and just before that (just after the hostname line) add: sleep 2
You should now be ok to reboot, remove the USB stick, and select your SD card as the drive to boot from.
It works, and it's possible to use the system, but beware that the SD card introduces a fair degree of lag as it is not the fastest device to read from and write to (possibly restricted by the port in the EeePC rather than the card itself).