Creating a Multi-Boot EXOPC Tablet

Peter Mui, ICS, 2011-06-15 This article describes how to install multiple separately bootable operating systems (OSes) on an EXOPC tablet. As of June 2011, two tri-boot variations have been successfully created: - MeeGo Alpha, Ubuntu, WeTab - MeeGo Alpha, Ubuntu, Windows 7 Roughly, the process involves: 1) Installing the OSes in the proper order (Windows 7 or WeTab first, Ubuntu 2nd, MeeGo Alpha 3rd) using bootable install media (SD cards, USB drives, or CD/DVDs) 2) Between each OS install, resizing partitions on the solid-state drive (SSD) to accept the next OS installation 3) Performing a final reinstallation and reconfiguration of GRUB 2 to recognize all the OSes available to boot. ASSUMPTIONS: I've written this in "cookbook" fashion so that even a relatively inexperienced person can follow and complete the steps. However, I recognize that the more computer savvy you are, the easier it's going to be. At the very least you're going to have to: - download and prepare bootable ISO and .img media - boot from external media like SD cards, USB drives, and or CD/DVDs - identify and re-size hard disk partitions - use the terminal to enter commands So read through the steps below and see if you're comfortable taking the plunge. ------------------------------ HIGH LEVEL DESCRIPTION: The various OS installers use different boot loaders and file system formats. Ubuntu's GRUB 2 boot manager seems to support multiple OSes the easiest so the process to create a multi-boot EXOPC tablet described in this article uses GRUB 2 to manage which OS to boot on startup. However, the Windows 7 and WeTab installers re-format and re-partition the entire disk automatically, so they have to be installed first. Ubuntu is installed second alongside Windows 7 or WeTab, at which point the EXOPC is dual-boot. The MeeGo Alpha uses the btrfs file system, which as of 2011-06 can't be modified by gparted, so to install it we need to shrink the already installed Ubuntu partition, creating unallocated "free space" on the SSD that the MeeGo Alpha installs into. Finally, we need to re-establish GRUB 2 as the boot manager. TIME TO COMPLETE: There are configuration steps that requires entering text between and during the various installs but the vast majority of time is spent waiting for unattended aspects of the installs to run. Allow at least 6 hours to complete everything including initial OS updates, a full day if you're doing this as a background process, more if you're performing backup(s). BACKUPS: Backup any data on the EXOPC you want to keep, as everything on the EXOPC's solid-state drive (SSD) will be overwritten in this process. HARDWARE NEEDED: - USB keyboard Some combination of: - 1GB or greater USB thumb drives OR - 1GB or greater SD Cards (more elegant, saves USB ports for keyboard and/or mouse and/or DVD drive or backup drive) OR - USB DVD drive OPTIONAL HARDWARE: - a USB hub so you can plug the keyboard and mouse into a single USB slot, save the EXOPC's second slot for a USB thumb drive or DVD drive .img or .iso - USB mouse SOFTWARE: Software to have ready and installed on media (SD, USB, or CD/DVD): - Windows 7 Install DVD OR - WeTab recovery and install .img: (as of 2011-06 this is at Download .img or torrent under section entitiled “HowTo – Install WeTab OS with Recovery USB Boot Stick” IMPORTANT NOTE: Accompanying instructions under step 3 on the WeTab web page and the instructions built into install script are BOTH WRONG!! Need to follow instructions as outlined later in this article. - Latest Meego Alpha: (as of 2011-06 this is at - Ubuntu Live (either Intel 32-bit or 64-bit is OK): (as of 2011-06 this is at - Gparted Live: (as of 2011-06 this is at (Ubuntu Live has Gparted included, but Ubuntu Live takes longer to boot, so Gparted Live is good to have) - Backup software: I used CloneZilla: Transfer all downloaded software properly as .img or .iso files to SD cards or USB thumb drives or CD/DVDs so they can boot from the EXOPC. You also need a wireless internet connection available for downloads required by the various installers. =================================== STEP 0: BOOTING THE EXOPC FROM EXTERNAL MEDIA At the EXOPC BIOS Boot Screen there are "Setup" and "BBS" options in the upper right. Press and hold BBS, and, assuming they're attached, you're presented with a selection of various media to boot from. To select your USB drive, SD card, or CD/DVD drive, tap the EXOPC's ambient light sensor (in the upper left) to highlight the boot media, then hold your thumb over the ambient light sensor to select. =================================== STEP 1: INSTALL WETAB OR WINDOWS 7 The WeTab and Windows 7 installers re-format and re-partition the entire disk automatically, so if you're installing either OS it has to be installed first and it's mutually exclusive with the other. Installing WeTab: Boot from the WeTab Install media you created earlier (See Step 0). The WeTab installer stops at a screen with lots of text and International warning symbols saying to press the EXOPC's ambient light sensor twice to start the install: THAT DOESN’T WORK. Instead, once at that screen: 1) attach a USB keyboard 2) press CTRL-ALT-F3 to get a shell 3) log in as root (password “wetab”), then enter: 4) silent_installer /mnt/live/system.tar.bz2 and press CR. Be very patient, as initially there’s no feedback anything’s happening; after a long while you should get a progress meter showing that WeTab is installing. When it's finished installing you'll get some attractive registration and configuration screens. Once configured for the wireless network, WeTab performs some immediate updates which seem to take some time: it may be OK to interrupt these but I didn't chance it: I let them all run and waited for the OS to settle down and stabilize before proceeding to STEP 2. Installing Windows 7: install from Windows 7 install disk. The Windows 7 installer checks the hard disk size and won't install in under 40Gb of disk space. However once installed the Windows 7 NTFS partition can be shrunk in size during the Ubuntu install (see next step.) I shrank it to 25Gb and have not noticed any ill effects, but I haven't experimented with it aggressively, either. =================================== STEP 2: INSTALL UBUNTU 2.1: Boot from the Ubuntu Live media you created earlier (See Step 0). 2.1 Connect to Internet: You need a wireless internet connection for the Ubuntu install. As it boots, Ubuntu Live will detect wireless networks. It has touch screen capability, so select the wireless network indicator (third from the upper right) and connect to your network: you'll need a USB keyboard to enter the password. At this point it will also prompt to create a new password keyring, enter any password here as it's not persistent (the same password in both fields, however.) 2.2 Select "Install Ubuntu", on the screen that follows make sure you have three green checkmarks, also select "download updates while installing" and "install this third party software". 2.3 Select "Install Ubuntu alongside existing OS". At this point the Ubuntu installer will run gparted and propose an initial re-partitioning of the SSD drive. Use your finger or your mouse to adjust the partition sizes with the arrow in the middle of the screen. Partitioning considerations: Something important to consider at this point is: how large do you want the MeeGo Alpha partition to be? You'll need to create space for that partition by shrinking the Ubuntu partition after installation and creating unallocated "free space". I chose to shrink the Windows 7 partition to 25Gb, and the WeTab partition to 15Gb although the WeTab partition can certainly be reduced by more. 2.4 Complete the remaining Ubuntu configuration screens and let the installation complete. At this point you'll have a dual boot EXOPC that will boot into Ubuntu by default. When the EXOPC boots now a GRUB 2 menu will appear with the different boot options displayed. Ubuntu is the first choice and the highlighted default, Windows 7 displays as "Windows 7", WeTab displays as "Unknown Linux distribution". To change the boot option, tap the EXOPC's ambient light sensor (in the upper left) to highlight your boot choice, then hold your finger over the ambient light sensor to select. NOTE: the "tap to highlight" works one-way only in the GRUB 2 menu, it doesn't cycle back to the top of the menu. If you miss the OS you want to boot into you have to power off the EXOPC and start again (frown.) =================================== STEP 3: SHRINK THE UBUNTU PARTITION Recall in Step 2.3 above we discussed shrinking the Ubuntu partition to create unallocated "free space" to install the MeeGo Alpha partition. We're going to do that now. 3.1 Boot from either Gparted Live media (recommended, it's faster) or Ubuntu Live media (see Step 0) and run gparted. It will show you the current partitioning / layout of your hard disk, which will look something like this: Partition File System Label Size Used Unused Flags /dev/sda1 ntfs System 100.00 MiB 33.59MiB 6.41 MiB boot /dev/sda2 ntfs OS 24.20 GiB 13.82 GiB 10.38 GiB /dev/sda3 extended 35.33 Gib /dev/sda5 ext4 33.34 Gib 3.25 GiB 30.09 GiB /dev/sda6 linux-swap 1.99 GiB In this example, the Ubuntu partition is /dev/sda5 and is 33.34 Gb in size. (The Windows partition is /dev/sda2 and is 24.20 Gb in size.) 3.2 Using gparted, shrink the Ubuntu partition to create unallocated "free space" for the MeeGo Alpha partition to install into. You don't need much space for the MeeGo Alpha, but keep in mind that a 2Gb swap space will also be created. So if you shrink the Ubuntu partition to create 10Gb of unallocated "free space" the MeeGo Alpha install will partition the disk with 2Gb of swap space and 8Gb of user space. The MeeGo Alpha installs using the btrfs ("butter FS") file system format. While btrfs offers many advanced features it is not backward compatible with gparted and gparted can't operate on btrfs file systems, so once the MeeGo Alpha's installed you have to use "btrfs resize" to resize it. That's a consideration when choosing the size of unallocated "free space" the MeeGo Alpha installs into in the next step. =================================== STEP 4: INSTALL MEEGO ALPHA 4.1 Boot from the MeeGo Alpha media you created earlier (See Step 0). The third or fourth screen of the install is the partitioning screen: there's a pulldown menu towards the top whose default option is "Remove Linux partitions on selected drives and create default layout". Instead: select the “Use free space on selected drives and create default layout” option in the pulldown menu. YOU MUST SELECT THIS OPTION or the install will overwrite your other installs. Assuming you made the unallocated "free space" on the SSD with gparted as in step 3, the MeeGo Alpha installer will find the free space and install there: this install occurs pretty quickly. 4.2 When the system reboots after successful MeeGo Alpha installation, it will only boot into MeeGo even though the other operating systems are still present on the SSD. Unfortunately, the MeeGo Alpha’s Syslinux/extlinux boot loader grabs control of the boot process from GRUB 2. In the next step we re-establish GRUB 2 as the boot loader so we can select among the different OSes. =================================== STEP 5: RE-ESTABLISH GRUB 2 AS THE BOOT MANAGER After MeeGo’s installed, the EXOPC will boot into the MeeGo Alpha by default. To re-acquire GRUB 2 as the boot manager, boot from the Ubuntu Live media (See Step 0) and follow the instructions below excerpted from This will re-acquire GRUB 2 and the Ubuntu partition and re-find the other OSes: WeTab and MeeGo will show up as "Unknown Linux distribution" in the GRUB 2 boot menu. ------------------------- (excerpted text from Boot to the LiveCD Desktop. 1. Open a terminal by selecting Applications, Accessories, Terminal from the menu bar. 2. Determine the partition with the Ubuntu installation. The fdisk option "-l" is a lowercase "L". 1. sudo fdisk -l 2. If the user isn't sure of the partition, look for one of the appropriate size or formatting. 3. Running sudo blkid may provide more information to help locate the proper partition, especially if the partitions are labeled. The device/drive is designated by sdX, with X being the device designation. sda is the first device, sdb is the second, etc. For most users the MBR will be installed to sda, the first drive on their system. The partition is designated by the Y. The first partition is 1, the second is 2. Note the devices and partitions are counted differently. 1. Mount the partition containing the Ubuntu installation. 2. sudo mount /dev/sdXY /mnt 3. Example: sudo mount /dev/sda1 Note: If the user has a separate /boot partition, this must be mounted to /mnt/boot Note: If the user has a separate /home partition, this must be mounted to /mnt/home. Encrypted home partitions should work. 4. Run the grub-install command as described below. This will reinstall the GRUB 2 files on the mounted partition to the proper location and to the MBR of the designated device. 1. sudo grub-install --boot-directory=/mnt/boot /dev/sdX 2. Example: sudo grub-install --root-directory=/mnt /dev/sda 3. Reboot (into the Ubuntu install on the SSD, NOT the Live media) 4. Refresh the GRUB 2 menu with sudo update-grub ------------------------- Congratulations! At this point you have a tri-boot EXOPC. It will boot into Ubuntu by default; to choose a different OS to boot into, tap your thumb over the ambient light sensor in the upper left to highlight your choice, then hold your thumb over the sensor to select. NOTE: continued tapping doesn’t cycle back to the top of the menu, so if you tap your thumb too many times and go past the OS you wanted to boot you have to power off the EXOPC and start again from the top of the GRUB 2 menu. In the GRUB 2 boot menu, Windows 7 displays as "Windows 7", but both WeTab and MeeGo Alpha display as "Unknown Linux distribution". After you're familiar with the order of the OSes in the GRUB 2 boot menu it's not difficult to distinguish them. Also: because we installed WeTab first, it will always have the lower partition number (e.g. /dev/sda2 for WeTab vs. /dev/sda7 for the MeeGo Alpha) ------------------------- MISCELLANEOUS THOUGHTS AND OBSERVATIONS - As of this writing (June 2011), WeTab and Windows 7 are the most refined from an end-user usability standpoint, at least initially. Ubuntu 11.04 has some tablet capabilities built-in (i.e. rudimentary touch support) but requires additional configuration tweaks and package installations before the EXOPC can begin to act as a keyboard-less stand alone Ubuntu tablet. - Occasionally the OSes will freeze while booting, I suspect it’s an EXOPC hardware incompatibility issue. It’s no big deal: shutting down the EXOPC and starting again typically clears the freeze and results in a complete boot. - While the process described above installs Ubuntu, any number of Linux variants that use GRUB 2 as the boot loader can probably be substituted. The EXOPC's 64Gb SSD, combined with both the small storage requirements of Linux operating systems and GRUB 2’s versatility in managing booting means that lots of OSes can fit in the EXOPC simultaneously. I've read about tweaking multiple Linux OSes to use the same /home partition, meaning that you can share files, data, and configuration data between the various OSes. (Because both KDE and MeeGo are Qt based, substituting Kubuntu for Ubuntu results in a "pure" Qt-based multi-boot EXOPC -- nice!) - Ubuntu issues: Ubuntu and the other *buntu variants added some tablet-friendly features like multi-touch to the latest version (11.04 "Natty Narwhal") but the Ubuntu Live installer is still oriented towards computers with keyboards and pointing devices: you need to tweak a bunch of stuff before getting a satisfying tablet experience. Specific Ubuntu nits I discovered: -- lacks a good on-screen, context-senstive keyboard (see below) -- lack of ACPI support specific to the EXOPC, like controlling the adaptive brightness -- the default sleep / screensaver modes prompts for your password, requiring a USB keyboard -- Ubuntu's new Unity desktop is awkward w/o a keyboard for input -- the EXOPC's bluetooth is not configured initially, seems to need a deprecated driver - Linux is lacking a good on-screen keyboard. The ones I'm aware of and have tried are Florence and kvkbd. I have high hopes for Maliit but it's still early in development: - It should be possible to modify the GRUB 2 menu to be more descriptive and elegant. Specifically: 1) change the default OS GRUB 2 boots into from Ubuntu and 2) rename the WeTab and MeeGo Alpha entries to something different than "Unknown Linux distribution" but I haven't figured out how to do that yet. - A quad-boot EXOPC with both Windows and WeTab would require tweaking the WeTab installer script. I've experimented with modifying the WeTab install script to bypass its automatic re-format and re-partition of the entire disk by setting up the partitions in advance and then directing WeTab to install into those partitions, but as of 2011-06 haven’t gotten this working. - It should be possible to use Syslinux/extlinux in place of GRUB 2 as the boot manager, I haven’t tried this yet. - If you have any problems with the procedures above, or make any improvements or refinements to the procedures above, please get in touch with me at and share your efforts: I’m always interested in hearing what you’ve done. =============================== APPENDICES PARTITIONING LAYOUT: Here's what gparted reports as the partitioning scheme for my tri-boot WeTab (Meego) - Ubuntu 11.04 - Meego Alpha EXOPC: Partition File System Label Size Used Unused Flags /dev/sda1 ext3 203.92 MiB 21.70 Mib 182.22 MiB WeTAB BOOT /dev/sda2 linux-swap 2.01GiB WeTAB SWAP /dev/sda3 ext3 18.62 GiB 3.05GiB 15.57 GiB WeTAB (shrunk as part of Ubuntu install) /dev/sda4 extended 38.80GiB (Physical Partition holding extended partions 5, 6, 7, 8) /dev/sda5 ext4 24.51 GiB 3.14 GiB 21.38 GiB UBUNTU (shrunk manually) /dev/sda7 ext3 250 MiB 21.90 MiB 228.10 MiB boot MEEGO BOOT /dev/sda8 btrfs 12.05 GiB 1.36 GiB 10.69 GiB MEEGO /dev/sda6 linux-swap 1.99 GiB UBUNTU SWAP (I deleted an sda9 of 2 GiB earlier so I suspect that MeeGo Alpha has no swap) Note that each OS wants it's own 2GiB swap, but suspend doesn't seem to work in the MeeGo alpha anyway so I deleted it (sda9). I wouldn't bother deleting it in the future, I'd just leave it alone. On an EXOPC as received from Intel with the MeeGo Alpha installed gparted shows: Partition File System Label Size Used Unused Flags /dev/sda1 ext3 250MiB 21.67Mib 228.33 MiB boot /dev/sda2 brtfs 57.66 GiB 1.33 GiB 56.33 Gib /dev/sda3 linux-swap 1.72 GiB unallocated unallocated 5.63 MiB ==============================

For more complete information about compiler optimizations, see our Optimization Notice.


Hi Kevin: as per step 2.4 in

Hi Kevin: as per step 2.4 in my post: ..."To change the boot option (in GRUB 2), tap the EXOPC's ambient light sensor (in the upper left) to highlight your boot choice, then hold your finger over the ambient light sensor to select.

"NOTE: the "tap to highlight" works one-way only in the GRUB 2 menu, it doesn't cycle back to the top of the menu. If you miss the OS you want to boot into you have to power off the EXOPC and start again (frown.)"

Or did you mean something different? -Peter

Hi Peter, thanks for the

Hi Peter, thanks for the helpful page. One small typo you might want to fix: Under STEP 5, you wrote: "1. sudo grub-install --boot-directory=/mnt/boot /dev/sdX" I believe you meant to write "--root-directory" as you do in the line below it. Cheers!

Excellent article, Peter.

Excellent article, Peter. When I have time, I will see if I can burn the WeTab image as a live DVD-RW. I'd like to do the same with the Meego Alpha, as well. I'm guessing the Windows 7 image would be very difficult to make live.