Ubuntu Lucid on OLPC XO: Difference between revisions
No edit summary |
|||
Line 1: | Line 1: | ||
== Introduction == |
== Introduction == |
||
This guide describes how to install '''Ubuntu |
This guide describes how to install '''Ubuntu 10.04 (Lucid Lynx)''' on the OLPC XO. The method of installing Ubuntu described herein is aimed at power users who know what they're doing and know what they want - but plain old folks are welcome to give it a try, of course. |
||
At the time of writing, Lucid is still in the development phase, but will soon be released in a stable version. |
|||
The method of installing Ubuntu described herein is aimed at power users who know what they're doing and know what they want - but plain old folks are welcome to give it a try, of course. |
|||
This guide solves the problem that earlier methods had with getting Upstart to work, now we won't have to take a step backwards to sysvinit. |
This guide solves the problem that earlier methods had with getting Upstart to work, now we won't have to take a step backwards to sysvinit. |
||
== Requirements == |
== Requirements == |
||
* The Ubuntu 10.04 |
* The Ubuntu 10.04 CD image: http://releases.ubuntu.com/10.04/ubuntu-10.04-desktop-i386.iso |
||
* A USB flashdrive or an SD card big enough to fit the Ubuntu system, 4 GB should work. |
* A USB flashdrive or an SD card big enough to fit the Ubuntu system, 4 GB should work. |
||
* A computer other than the XO, to create the Ubuntu system on. We will be using a virtualisation software on this computer to create the Ubuntu image which will be written to the flashdrive/SD card. I will be using an Ubuntu system (surprise!) with VirtualBox. Qemu should work too. |
* A computer other than the XO, to create the Ubuntu system on. We will be using a virtualisation software on this computer to create the Ubuntu image which will be written to the flashdrive/SD card. I will be using an Ubuntu system (surprise!) with VirtualBox. Qemu should work too. |
||
* A [[Activation and Developer Keys|developer key]], to unlock the XO bootloader. |
* A [[Activation and Developer Keys|developer key]], to unlock the XO bootloader. |
||
== Creating the Ubuntu |
== Creating the Ubuntu image == |
||
* |
* First, you need to have permissions to access your USB flashdrive/SD card as a normal user: |
||
$ sudo usermod -a -G disk <your username> |
|||
⚫ | |||
Now log out, and log back in for this to take effect. |
|||
* If you are using VirtualBox, add your USB flashdrive or SD card as a virtual harddrive that we can install onto. |
|||
$ cd ~/.VirtualBox/HardDisks |
|||
$ VBoxManage internalcommands createrawvmdk -filename olpc-xo.vmdk -rawdisk /dev/sdX -register |
|||
...where sdX is your USB/SD drive. |
|||
* With Qemu, the commandline option "-hda /dev/sdX" should do the trick. |
|||
⚫ | |||
If you need guidance on how to operate your virtualization software or install Ubuntu in it, please look elsewhere - the Internet has plenty of guides on that. |
If you need guidance on how to operate your virtualization software or install Ubuntu in it, please look elsewhere - the Internet has plenty of guides on that. |
||
Line 20: | Line 28: | ||
When the installation is complete, you will boot into your new system for the first time in the virtual machine. |
When the installation is complete, you will boot into your new system for the first time in the virtual machine. |
||
This is a good time to install the latest packages and updates: |
This is a good time to install the latest and greatest packages and updates: |
||
$ sudo apt-get update |
$ sudo apt-get update |
||
$ sudo apt-get upgrade |
$ sudo apt-get upgrade |
||
== Adapting Ubuntu to the XO == |
== Adapting Ubuntu to the XO == |
||
The following is done while you're still in the virtual machine. |
|||
There is a package called olpc-xo1-hw, that does some XO-specific configuration. I'm not sure that it's needed, but if you want to be on the safe side for now: |
|||
$ sudo apt-get install olpc-xo1-hw |
|||
You might want to install the |
You might want to install the ubuntu-netbook packages. They give your desktop a new look, replacing your standard Gnome desktop with a slightly iPhone-inspired interface. The main menu and the desktop are replaced with a desktop-sized application launcher with nice, big icons. All windows are maximized to make good use of the small screen and take away the hassle of window manipulation. |
||
$ sudo apt-get install ubuntu-netbook |
$ sudo apt-get install ubuntu-netbook |
||
The most important fix, however, is to replace the Linux kernel. For some reason, the stock Ubuntu kernel doesn't work on the XO. (It seems to boot, judging by miscellaneous flashing LEDs on the computer, but the display is stuck on the OpenFirmware screen. Video driver issues?) |
The most important fix, however, is to replace the Linux kernel. For some reason, the stock Ubuntu kernel doesn't work on the XO. (It seems to boot, judging by miscellaneous flashing LEDs on the computer, but the display is stuck on the OpenFirmware screen (even when unfrozen). Video driver issues?) |
||
* Download the latest XO-1 kernel from here: http://dev.laptop.org/~kernels/olpc-2.6.31-xo1/ |
* Download the latest XO-1 kernel from here: http://dev.laptop.org/~kernels/olpc-2.6.31-xo1/ |
||
I use the non-development version. Make sure to get the binary package, and not the source. Example: http://dev.laptop.org/~kernels/olpc-2.6.31-xo1/kernel-2.6.31_xo1- |
I use the non-development version. Make sure to get the binary package, and not the source. Example: http://dev.laptop.org/~kernels/olpc-2.6.31-xo1/kernel-2.6.31_xo1-20100504.1635.1.olpc.7223ce6.i586.rpm |
||
If you're using a more recent version than this one, make sure to change all references to it accordingly in the commands below. |
If you're using a more recent version than this one, make sure to change all references to it accordingly in the commands below. |
||
$ sudo apt-get install rpm2cpio |
$ sudo apt-get install rpm2cpio |
||
$ cd / |
$ cd / |
||
$ sudo sh -c "rpm2cpio /home/user/Downloads/kernel-2.6.31_xo1- |
$ sudo sh -c "rpm2cpio /home/user/Downloads/kernel-2.6.31_xo1-20100504.1635.1.olpc.7223ce6.i586.rpm | cpio -idmv" |
||
$ sudo depmod 2.6.31_xo1- |
$ sudo depmod 2.6.31_xo1-20100504.1635.1.olpc.7223ce6 |
||
For some reason, the WiFi firmware is messed up. Fix it thus: |
For some reason, the WiFi firmware is messed up. Fix it thus: |
||
$ sudo ln -s /lib/firmware/libertas/usb8388_v9.bin /lib/firmware/usb8388.bin |
$ sudo ln -s /lib/firmware/libertas/usb8388_v9.bin /lib/firmware/usb8388.bin |
||
Line 45: | Line 53: | ||
$ mkdir /tmp/initrd && cd /tmp/initrd |
$ mkdir /tmp/initrd && cd /tmp/initrd |
||
$ zcat /boot/initrd.img-2.6.xxxxxxx | cpio -idmv |
$ zcat /boot/initrd.img-2.6.xxxxxxx | cpio -idmv |
||
$ cp -r /lib/modules/2.6.31_xo1- |
$ cp -r /lib/modules/2.6.31_xo1-20100504.1635.1.olpc.7223ce6 lib/modules/ |
||
$ cp -r /lib/firmware/{libertas,usb8388.bin} lib/firmware/ |
$ cp -r /lib/firmware/{libertas,usb8388.bin} lib/firmware/ |
||
$ sudo sh -c "find . | cpio -H newc -o | gzip > /boot/initrd.img-xo" |
$ sudo sh -c "find . | cpio -H newc -o | gzip > /boot/initrd.img-xo" |
||
Line 55: | Line 63: | ||
\ OpenFirmware boot script for USB |
\ OpenFirmware boot script for USB |
||
" u:\boot\initrd.img-xo" to ramdisk |
" u:\boot\initrd.img-xo" to ramdisk |
||
boot u:\boot\vmlinuz-2.6.31_xo1- |
boot u:\boot\vmlinuz-2.6.31_xo1-20100504.1635.1.olpc.7223ce6 ro root=LABEL=OLPCRoot rootdelay=30 |
||
\ OpenFirmware boot script for SD card |
\ OpenFirmware boot script for SD card |
||
" sd:\boot\initrd.img-xo" to ramdisk |
" sd:\boot\initrd.img-xo" to ramdisk |
||
boot sd:\boot\vmlinuz-2.6.31_xo1- |
boot sd:\boot\vmlinuz-2.6.31_xo1-20100504.1635.1.olpc.7223ce6 ro root=mmcblk0p1 rootdelay=30 |
||
'''Attention:''' The USB script needs some special attention to the name of the root partition, see the next section. |
|||
⚫ | |||
⚫ | |||
== Writing image to the drive == |
|||
Now convert your virtual disk image to a raw format that can be written to your flashdrive/SD card. If you are using VirtualBox, the command to do this is: |
|||
$ VBoxManage internalcommands converttoraw <vbox-image>.vdi ubuntu-image.raw |
|||
If you are using Qemu or something else, you're on your own to figure out how to do this. |
|||
'''Attention:''' If you're using the USB script above, you might have noticed that the root partition is referenced by its label. Thus, in order for the Linux kernel to find it, you need to give it the right label at this point: |
|||
Write the image to your flashdrive/SD card: |
|||
$ dd if=ubuntu-image.raw of=/dev/sdX bs=1M |
|||
...where sdX is your drive (do not include partition number - use e.g. ''sda'' instead of ''sda1'') |
|||
This will apply the partition table created with the Ubuntu installer - and needless to say, all data on the drive will vanish.<br /> |
|||
<br /> |
|||
If you are using a USB drive, your root partition has to be given a name. As you can see in the Forth script that you used above, the Linux kernel looks for a root partition by the name of OLPCRoot. You'll get a kernel panic if it doesn't find a partition with this name. If you are using an SD card, the root partition is located by the card's device name, since it will never change on the XO-1. |
|||
$ sudo tune2fs /dev/sdX1 -L OLPCRoot |
$ sudo tune2fs /dev/sdX1 -L OLPCRoot |
||
== Good luck! == |
== Good luck! == |
||
Plug your drive into the XO and boot it up - |
Plug your drive into the XO and boot it up - with any luck, it might work! :] |
||
'''Oops:''' For now, it seems that you have to hold down the "checkmark game button" when powering on. If you don't push the button, OpenFirmware will freeze the screen - and Ubuntu doesn't know how to unfreeze it. Adding "unfreeze" to the bootscript doesn't seem to help. Does anyone know why? |
'''Oops:''' For now, it seems that you have to hold down the "checkmark game button" when powering on. If you don't push the button, OpenFirmware will freeze the screen - and Ubuntu doesn't know how to unfreeze it. Adding "unfreeze" to the bootscript doesn't seem to help. Does anyone know why? |
Revision as of 01:20, 5 May 2010
Introduction
This guide describes how to install Ubuntu 10.04 (Lucid Lynx) on the OLPC XO. The method of installing Ubuntu described herein is aimed at power users who know what they're doing and know what they want - but plain old folks are welcome to give it a try, of course. This guide solves the problem that earlier methods had with getting Upstart to work, now we won't have to take a step backwards to sysvinit.
Requirements
- The Ubuntu 10.04 CD image: http://releases.ubuntu.com/10.04/ubuntu-10.04-desktop-i386.iso
- A USB flashdrive or an SD card big enough to fit the Ubuntu system, 4 GB should work.
- A computer other than the XO, to create the Ubuntu system on. We will be using a virtualisation software on this computer to create the Ubuntu image which will be written to the flashdrive/SD card. I will be using an Ubuntu system (surprise!) with VirtualBox. Qemu should work too.
- A developer key, to unlock the XO bootloader.
Creating the Ubuntu image
- First, you need to have permissions to access your USB flashdrive/SD card as a normal user:
$ sudo usermod -a -G disk <your username>
Now log out, and log back in for this to take effect.
- If you are using VirtualBox, add your USB flashdrive or SD card as a virtual harddrive that we can install onto.
$ cd ~/.VirtualBox/HardDisks $ VBoxManage internalcommands createrawvmdk -filename olpc-xo.vmdk -rawdisk /dev/sdX -register
...where sdX is your USB/SD drive.
- With Qemu, the commandline option "-hda /dev/sdX" should do the trick.
- Install Ubuntu as you normally would.
If you need guidance on how to operate your virtualization software or install Ubuntu in it, please look elsewhere - the Internet has plenty of guides on that.
Attention: Make sure to use the manual partition editor during the installation, and format the root partition as Ext3. Do not use the default setting of Ext4, as it is not yet supported by the OpenFirmware bootloader in the XO.
Also, do not create a swap partition. Flash drives die prematurely from the wear & tear of swapping.
When the installation is complete, you will boot into your new system for the first time in the virtual machine. This is a good time to install the latest and greatest packages and updates:
$ sudo apt-get update $ sudo apt-get upgrade
Adapting Ubuntu to the XO
The following is done while you're still in the virtual machine.
You might want to install the ubuntu-netbook packages. They give your desktop a new look, replacing your standard Gnome desktop with a slightly iPhone-inspired interface. The main menu and the desktop are replaced with a desktop-sized application launcher with nice, big icons. All windows are maximized to make good use of the small screen and take away the hassle of window manipulation.
$ sudo apt-get install ubuntu-netbook
The most important fix, however, is to replace the Linux kernel. For some reason, the stock Ubuntu kernel doesn't work on the XO. (It seems to boot, judging by miscellaneous flashing LEDs on the computer, but the display is stuck on the OpenFirmware screen (even when unfrozen). Video driver issues?)
- Download the latest XO-1 kernel from here: http://dev.laptop.org/~kernels/olpc-2.6.31-xo1/
I use the non-development version. Make sure to get the binary package, and not the source. Example: http://dev.laptop.org/~kernels/olpc-2.6.31-xo1/kernel-2.6.31_xo1-20100504.1635.1.olpc.7223ce6.i586.rpm
If you're using a more recent version than this one, make sure to change all references to it accordingly in the commands below.
$ sudo apt-get install rpm2cpio $ cd / $ sudo sh -c "rpm2cpio /home/user/Downloads/kernel-2.6.31_xo1-20100504.1635.1.olpc.7223ce6.i586.rpm | cpio -idmv" $ sudo depmod 2.6.31_xo1-20100504.1635.1.olpc.7223ce6
For some reason, the WiFi firmware is messed up. Fix it thus:
$ sudo ln -s /lib/firmware/libertas/usb8388_v9.bin /lib/firmware/usb8388.bin
Now, we need to include our new modules in the Ubuntu initrd:
$ mkdir /tmp/initrd && cd /tmp/initrd $ zcat /boot/initrd.img-2.6.xxxxxxx | cpio -idmv $ cp -r /lib/modules/2.6.31_xo1-20100504.1635.1.olpc.7223ce6 lib/modules/ $ cp -r /lib/firmware/{libertas,usb8388.bin} lib/firmware/ $ sudo sh -c "find . | cpio -H newc -o | gzip > /boot/initrd.img-xo"
(Some people reported that they needed the WiFi firmware (libertas) in the initrd in order for the driver to work, so I included that for now)
- If firmware security is enabled on your XO (it most likely is), you will need a developer key in order to boot anything but the stock Fedora/Sugar OS. Once you have your key, create a folder: "sudo mkdir /security", and save your develop.sig file there.
The last step is to create the Forth script that tells OpenFirmware how to boot our system. Create the file /boot/olpc.fth, and depending on whether you are using a USB drive or an SD card, choose one of the following scripts:
\ OpenFirmware boot script for USB " u:\boot\initrd.img-xo" to ramdisk boot u:\boot\vmlinuz-2.6.31_xo1-20100504.1635.1.olpc.7223ce6 ro root=LABEL=OLPCRoot rootdelay=30
\ OpenFirmware boot script for SD card " sd:\boot\initrd.img-xo" to ramdisk boot sd:\boot\vmlinuz-2.6.31_xo1-20100504.1635.1.olpc.7223ce6 ro root=mmcblk0p1 rootdelay=30
- Now, shut down your virtual machine. It's time to try out our creation on the XO!
Attention: If you're using the USB script above, you might have noticed that the root partition is referenced by its label. Thus, in order for the Linux kernel to find it, you need to give it the right label at this point:
$ sudo tune2fs /dev/sdX1 -L OLPCRoot
Good luck!
Plug your drive into the XO and boot it up - with any luck, it might work! :]
Oops: For now, it seems that you have to hold down the "checkmark game button" when powering on. If you don't push the button, OpenFirmware will freeze the screen - and Ubuntu doesn't know how to unfreeze it. Adding "unfreeze" to the bootscript doesn't seem to help. Does anyone know why?
Just one more thing: it'd be awfully nice if you left a comment on the Discussion tab above. Just tell us whether it all went smoothly, or if something needs to be worked on. Thanks for contributing!