The ChromiumOS64 Project

by

Teo En Ming (Zhang Enming)
Singapore


What is the ChromiumOS64 project?



ChromiumOS64 is an unofficial port of the original Google's Chromium OS project (when officially released in 2010, it will be called Google Chrome OS) to the x86_64 64-bit architecture. The original Chromium OS project does not support 64-bit platforms. This is because the majority of the netbooks in the market are based on Intel Atom processors, which are mostly 32-bit. It is highly anticipated that Google's Chrome OS will debut in 2010, based on the open source Chromium OS project, which is itself based on Ubuntu 9.10 Karmic Koala GNU/Linux. Ubuntu itself is derived from Debian GNU/Linux. In turn, Debian itself is derived from Linus Torvalds' Linux kernel.

 

Announcements



9 December 2009 Wednesday 1:46 P.M. SGT

Temporary Suspension of Downloads

I have temporarily suspended downloads as my hosting provider has notified me that the monthly bandwidth usage has been exceeded.

3 December 2009 Thursday 5:22 P.M. SGT

Announcing the Release of the World's First 64-bit Build of Google's Chromium OS with Xen Virtualization Support

I have integrated the open source Xen hypervisor 3.4.3 RC1-pre and Jeremy Fitzhardinge's pv-ops dom0-patched kernel 2.6.31.6 into my 64-bit build of ChromiumOS. With the integrated Xen virtualization support, you can now create and run virtual machines or guest operating systems in Google's Chromium OS. If you do not have a need to create virtual machines, you can simply run ChromiumOS64 as a Xen domU virtual machine.

To run Windows XP, Windows Vista, Windows 7, Windows 2000, Windows Server 2003 and/or Windows Server 2008 as a hardware virtual machine (HVM), you need to have a processor with hardware virtualization support, e.g. Intel VT-x or AMD Pacifica.

To enable PCI/PCI-e and/or VGA pass-through to HVM virtual machines, you need to have a motherboard with a supporting chipset capable of Intel Virtualization Technology for Directed Input/Output (VT-d). VGA passthrough is more involved and may require you to modify the code to properly support your specific PCI Express x16 graphics card and recompile the Xen hypervisor and Xen tools.

Download your copy now! Please note that this is a pre-alpha release.

30 November 2009 Monday 4:07 A.M. SGT

Announcing the Release of the World's First 64-bit Build of Google's Chromium OS

Over the past few days, I have ported the original 32-bit Chromium OS to the x86_64 64-bit architecture by patching the build scripts and development code of the original Google's Chromium OS project. ChromiumOS64 is still in the alpha development stage.

 

Downloads



Build enming.teo-3dec2009-0420hrs-sgt (pre-alpha release) with Xen virtualization support

This download is 1.1 GB.

Click here to download

Thanks to Mr. Stephen Spector from the Xen.org community for helping to host the download.

Build enming.teo-28nov2009-0610hrs-sgt (alpha release)

 

Verifying your Downloads (MD5 checksums)



Build enming.teo-3dec2009-0420hrs-sgt (pre-alpha release) with Xen virtualization support

19934c5e6a1f15785950a6d4ca045dd0 chromiumos64-xen-build-enming.teo-3dec2009-0420hrs-sgt.vmdk.zip

Build enming.teo-28nov2009-0610hrs-sgt (alpha release)

3b34f121e70b1d9884a10c58a9b76b58 chromiumos64-build-enming.teo-28nov2009-0610hrs-sgt.vmdk.zip.aa
aa080b0c961d11ea27810b07c4ec59ad chromiumos64-build-enming.teo-28nov2009-0610hrs-sgt.vmdk.zip.ab
9223729d7ca976bfae7daf123f4e5cfa chromiumos64-build-enming.teo-28nov2009-0610hrs-sgt.vmdk.zip.ac
95136db283d56f598572a0266abb39bf chromiumos64-build-enming.teo-28nov2009-0610hrs-sgt.vmdk.zip.ad
34297ffda3d0bfacef94b0087335eca0 chromiumos64-build-enming.teo-28nov2009-0610hrs-sgt.vmdk.zip.ae
14d919ccdfa1826c598ea881604ce59c chromiumos64-build-enming.teo-28nov2009-0610hrs-sgt.vmdk.zip.af
7276a955ed9616e49c988133700db6b3 chromiumos64-build-enming.teo-28nov2009-0610hrs-sgt.vmdk.zip.ag

1c83e2ecf0b2447c49328033e64ed2ed chromiumos64-build-enming.teo-28nov2009-0610hrs-sgt.vmdk.zip

 

Installation Instructions



1. Reconstructing the original zip archive

To concatenate all the 7 parts you have downloaded into a single zip archive, execute the following command on a Linux or UNIX platform. If you are using Windows, you may want to install Cygwin. Cygwin is a linux-like environment for Windows. You can download and install it from http://www.cygwin.com/setup.exe.

$ cat chromiumos64-build-enming.teo-28nov2009-0610hrs-sgt.vmdk.zip.* > chromiumos64-build-enming.teo-28nov2009-0610hrs-sgt.vmdk.zip

You can then proceed to unzip the resulting zip archive to produce a VMware VMDK image file.

2. Using ChromiumOS64 as a virtual machine with the Xen hypervisor or VMware Server/Workstation/Player

To use ChromiumOS64 as a virtual machine under Xen environment, you have to convert the VMware VMDK image to Xen domU image. Please refer to the following link on how to perform the conversion.

http://wiki.xensource.com/xenwiki/VMDKImage

If you are using VMware Server/Workstation/Player, no conversion is necessary.

Sun VirtualBox is currently not supported. If you can get it to work with VirtualBox, please let me know the details. Most likely, if you see a blank screen for a long time in VirtualBox during the boot process, X.org X server could not detect the virtual graphics card properly and complains about "screens not found". In that case, you may switch to the second virtual terminal by typing CTRL+ALT+F2. To fix the problem, remount the root filesystem in read-write mode, and reconfigure X server by invoking "sudo Xorg -configure".

3. Booting ChromiumOS64 from a USB thumb drive or USB external harddisk like a Linux Live CD/DVD/USB

It is not necessary to install ChromiumOS64 to your computer.

3.1 Windows instructions by marko from chromium-os-discuss Google group:

Download WinImage from: http://www.winimage.com/download.htm. Run the program and click DISK - "Restore Virtual Disk Image on physical drive", select a 16 GB (or larger) USB thumdrive or USB external harddisk from the list then open the chromiumos64.vmdk file. The file transfer will take a while.

Put the USB thumbdrive or USB external harddisk in your desktop or laptop and on boot, select the thumbdrive as the first boot device. Login as username "enming" with the password of "enming". This is an offline test user account in ChromiumOS64 OS. (You can login with your real gmail account later but this is not necessary.)

3.2 Linux instructions by myself:

Convert the ChromiumOS64 VMware VMDK image file you have downloaded to the raw harddisk image first. You have to install qemu before doing so.

On Fedora Linux systems:

# yum install qemu

On Ubuntu/Debian Linux systems:

# sudo apt-get install qemu

$ qemu-img convert -f vmdk chromiumos64.vmdk -O raw chromiumos64.img

With the resulting chromiumos64.img, proceed to transfer the raw harddisk image to your USB stick/thumb drive/flash memory/external harddisk.

# dd if=chromiumos64.img of=/dev/sdc

Assuming /dev/sdc is the device name of your USB stick/thumb drive/flash memory/external harddisk.

You can then plug in the USB thumb drive or USB external harddisk to your 64-bit computer and start booting, selecting the USB thumb drive or USB external harddisk as your First Boot Device.

 

Detailed Instructions for Using the Hybrid Xen 3.4.3-RC1-pre and 64-bit Google Chromium OS Live USB Image to Create a Fedora 11 Linux PV Virtual Machine/Guest Operating System/DomU



After you have transferred the ChromiumOS64-Xen VMDK image file to a USB external harddisk or an IDE/SATA/SCSI internal harddisk or a USB thumb drive/flash memory (let's say /dev/sdc in this tutorial) using WinImage, and assuming you still have plenty of free space on that same harddisk/thumb drive/flash memory, you may use that free disk space to store the virtual disk images for all of your virtual machines.

# fdisk /dev/sdc

Create a new primary partition. It will be partition number 4. The 64-bit Google Chromium OS will occupy the first 3 partitions on your harddisk.

Type "n" and press enter.
Type "p" and press enter.
Press enter again.

Assuming you have 100 GB free space left on the harddisk, type "+100G" and press enter.

Type "w" and press enter.

# reboot

After rebooting, you need to create a filesystem on /dev/sdc4. In this tutorial, we will use the ext3 filesystem.

# mke2fs -j /dev/sdc4

After completing the above steps, you are now ready to boot into the Hybrid 64-bit Google Chromium OS + Xen 3.4.3-RC1-pre hypervisor Live USB.

After displaying the blue graphical login screen with "chromium os", press CTRL+ALT+F2 to switch to virtual terminal 2.

Login as username "chronos" with the password of "enming".

You are now ready to begin creating and running your very own virtual machines!

First, you need to remount the root filesystem (/) as read-write.

$ sudo mount -o remount,rw /

Uninstall the chromeos-connman package.

$ sudo dpkg -r chromeos-connman

Terminate the connmand and dhclient daemons/processes.

$ sudo kill -9 <process ID of connmand)

$ sudo kill -9 `pidof dhclient`

Start the xend daemon.

$ sudo service xend start

$ sudo xm list

You should see Domain 0 listed. In Windows Server 2008 R2 Hyper-V speak, it is referred to as the parent partition.

$ sudo mkdir /virtualmachines

We will need to mount the free disk space we created earlier to run our virtual machines.

$ sudo mount /dev/sdc4 /virtualmachines

$ cd /virtualmachines

Create a virtual harddisk space of 10G for the Fedora 11 Linux virtual machine.

$ sudo dd if=/dev/zero of=fedora11-pv.img bs=1 count=1 seek=10G

$ sudo mkdir -p /var/cache/apt/archives/partial

We must ensure peth0 is up but without any IP address configured.

$ sudo ifconfig peth0 0.0.0.0

$ sudo ifconfig peth0 down

$ sudo ifconfig peth0 up

Now, we will bring up the ethernet bridge eth0.

$ sudo ifconfig eth0 up

Get a dynamic IP address for the network interface eth0 from your router.

$ sudo dhclient eth0

Install the Apache HTTP web server. This will be required for your virtual machine installation later.

$ sudo apt-get install apache2

Start the Apache HTTP server.

$ sudo /etc/init.d/apache2 start

$ sudo mkdir /var/www/fedora11

Insert the Fedora 11 Linux DVD into your DVD drive and mount it.

$ sudo mount /dev/sr0 /var/www/fedora11

$ cd /var/www/fedora11/images/pxeboot

We will need the kernel image and the initial ramdisk image to pxeboot your virtual machine installation.

$ sudo cp vmlinuz initrd.img /virtualmachines

$ cd /etc/xen

Create the virtual machine configuration file.

$ sudo vi fedora11-pv

Configuration file for Fedora 11 PV virtual machine:

name="fedora11-pv"
memory=1024
disk = ['file:/virtualmachines/fedora11-pv.img,xvda,w' ]
vif = [ 'bridge=eth0' ]
vfb = [ 'vnc=1,vncunused=1,vncdisplay=0,vnclisten=<IP address of your Domain 0>,vncpasswd=' ]
vncconsole=0
#bootloader = "/usr/bin/pygrub"
kernel = "/virtualmachines/vmlinuz"
ramdisk = "/virtualmachines/initrd.img"
vcpus=2
>>
Allow incoming VNC and HTTP connections in the firewall.

$ sudo iptables -I INPUT 4 -p tcp --dport 5900 -j ACCEPT

$ sudo iptables -I INPUT 5 -p tcp --dport 80 -j ACCEPT

Change the default firewall policy for the FORWARD and OUTPUT chains to ACCEPT.

$ sudo iptables -P FORWARD ACCEPT

$ sudo iptables -P OUTPUT ACCEPT

Start your virtual machine installation.

$ sudo xm create fedora11-pv

Using a laptop or another computer, vnc into the Fedora 11 installation using a vncviewer.

For example,

$ vncviewer <IP address of Dom0>:<Display Number>

During the Fedora 11 Linux virtual machine installation process, select HTTP or URL as the source of installation. Do not select CD/DVD or any other method.

E.g.,

http://<IP address of Dom0>/fedora11

After you have finished the Fedora 11 Linux virtual machine installation, you need to

$ sudo xm list

$ sudo xm destroy <domain ID of rebooted F11 guest operating system>

Edit the virtual machine configuration file *again*.

$ sudo vi /etc/xen/fedora11-pv

name="fedora11-pv"
memory=1024
disk = ['file:/virtualmachines/fedora11-pv.img,xvda,w' ]
vif = [ 'bridge=eth0' ]
vfb = [ 'vnc=1,vncunused=1,vncdisplay=0,vnclisten=<IP address of your Domain 0>,vncpasswd=' ]
vncconsole=0
bootloader = "/usr/bin/pygrub"
#kernel = "/virtualmachines/vmlinuz"
#ramdisk = "/virtualmachines/initrd.img"
vcpus=2
> >
You may now start your newly installed Fedora 11 Linux virtual machine.

$ sudo xm create fedora11-pv

You will need to VNC into your virtual machine again.

The above tutorial demonstrates the installation process for a Fedora 11 Linux virtual machine. However, you may also install Windows XP, Windows Vista, Windows 7, Windows 2000, Windows Server 2003, and/or Windows Server 2008 as a HVM virtual machine. Other Linux and UNIX guest operating systems are supported too.

 

Detailed Instructions for Installing and Running Windows XP HVM Virtual Machine on the Hybrid Xen 3.4.3-RC1-pre + 64-bit Google Chromium OS Live USB Image



After verifying that the installation and execution of Fedora 11 Linux PV virtual machine works with the hybrid Xen 3.4.3-rc1-pre + 64-bit Google Chromium OS, I proceeded to installing and running Windows XP as a HVM virtual machine.

Here are the exact steps:

Remount the root filesystem (/) in read-write mode.

$ sudo mount -o remount,rw /

Start the xend daemon.

$ sudo service xend start

Configure Xen networking.

$ sudo ifconfig eth0 up

$ sudo dhclient eth0

Check that the dynamic configuration of network interface eth0 works.

$ sudo ifconfig eth0

Check that the entries in the kernel routing table are correct.

$ route

Check that the domain name servers have been configured correctly by the DHCP protocol.

$ cat /etc/resolv.conf

Mount the disk partition containing disk images of all the virtual machines.

$ sudo mount /dev/sdc4 /virtualmachines

$ cd /virtualmachines

Create a 5 GB virtual harddisk for installing Windows XP as a virtual machine.

$ sudo dd if=/dev/zero of=windows-xp.img bs=1 count=1 seek=5G

$ cd /etc/xen

Configure firewalling rules.

Allow incoming VNC connections.

$ sudo iptables -I INPUT 4 -p tcp --dport 5900 -j ACCEPT

Set the default firewall policies to ACCEPT for the FORWARD and OUTPUT chains.

$ sudo iptables -P FORWARD ACCEPT

$ sudo iptables -P OUTPUT ACCEPT

Create Windows XP HVM virtual machine configuration file.

$ sudo vi windows

import os, re
arch = os.uname()[4]
if re.search('64', arch):
    arch_libdir = 'lib64'
else:
    arch_libdir = 'lib'

kernel = "/usr/lib/xen/boot/hvmloader"
builder='hvm'
memory = 3072

# Should be at least 2KB per MB of domain memory, plus a few MB per vcpu.
shadow_memory = 8
name = "winxphome32"
vif = [ 'bridge=eth0' ]
acpi = 1
apic = 1
disk = [ 'file:/virtualmachines/windows-xp.img,hda,w', 'phy:/dev/sr0,hdc:cdrom,r' ]

device_model = '/usr/lib/xen/bin/qemu-dm'

#-----------------------------------------------------------------------------
# boot on floppy (a), hard disk (c) or CD-ROM (d)
# default: hard disk, cd-rom, floppy
boot="cd"
sdl=0
vnc=1
vnclisten="<IP address of domain 0>"
vncdisplay=0
vncconsole=0
vncpasswd=''

serial='pty'
usbdevice='tablet'

Start the Windows XP HVM virtual machine.

$ sudo xm create windows

You will need to use a VNC viewer on another computer or laptop to remote in on the Windows XP virtual machine installation.

For example,

$ vncviewer <IP address of domain 0>

or

$ xtightvncviewer <IP address of domain 0>

Follow through the Windows XP virtual machine installation and you are done. Using the same concept outlined above, you can also create Windows Vista, Windows 7, Windows Server 2003, and/or Windows Server 2008 virtual machines with the hybrid Xen 3.4.3-rc1-pre + 64-bit Google Chromium OS Live USB image.

 

Why 64-bit?



The current king of netbook processors is the Intel Atom. All the Intel Aton processors are 32-bit, with one exception. Intel Atom 300, which is a dual core 45 nm process technology, supports x86-64.

Both AMD Neo and Via Nano support x86-64 instructions.

You can use ChromiumOS64 with your Intel Core 2 Duo, Core 2 Quad, Core i5, Core i7, AMD Athlon 64, Ahtlon 64 X2, Phenom, Phenom II, and Athlon II.

 

Testing



ChromiumOS64 works on real physical hardware. I've successfully booted up ChromiumOS64 on my Intel Pentium Dual Core E6300 @ 2.8 GHz, Intel Desktop Board DQ45CB, 6 GB DDR2-800 memory and nVidia GeForce 8400 GS PCI Express x16 add-on external graphics card. It can't detect the Intel GMA4500 onboard graphics though. X.org X server complains "no screens found". To reconfigure X server to work with the IGD on the Intel DQ45CB motherboard, switch to the 2nd virtual terminal by pressing CTRL+ALT+F2, login, remount the root filesystem in read-write mode, and invoke "sudo Xorg -configure".

I am able to surf the world wide web and watch high defintion (HD) Youtube videos at the same time using my 64-bit port of Google Chromium OS (ChromiumOS64).

 

Hardware Compatibility List



All x86 64-bit platforms are supported. IA64, ARM, and PPC are not supported.

 

Hardware Not Compatible with ChromiumOS64


Acknowledgements



Without the Chromium OS project, there will be no ChromiumOS64 project.

The original Chromium OS Project

http://www.chromium.org/

 

Links



My primary blog: http://teo-en-ming-aka-zhang-enming.blogspot.com

My secondary blog: http://enmingteo.wordpress.com

My Youtube videos: http://www.youtube.com/user/enmingteo

Email: space.time.universe@gmail.com