Introduction

The limited storage capability of the eeepc is not adequate to keep multiple operating systems on the internal flash drive. A SD or SDHC card (which can stay forever in the built in card reader) or and usb stick can be a very convenient way to install another system and extended storage. This wiki page gives you a recipe how to do that. Use at your own risk!

This version of the page depends very much on the current versions of kernel, installer and the like and details will probably change in the future. Please edit, when things change.

Drawbacks

A system on an external flash medium can be convenient and very usable. There are some drawbacks, of course:

Installation on exteral flash drive: overview

Installing on external flash drives

  1. Put the stick with the installer in the USB port on the left side.
  2. Press <esc> while booting and select the stick to boot from.

  3. Now put the SD or SDHC card into the built in reader. If you want to install to a usb stick put that one in the second usb port on the right side, the one that is closer to the display.
  4. Start installation until partitioning. Select manual partitioning.
  5. Spot the device you want to install to: the internal card reader is easy to find, the stick might show a brand label, size or something else from which you can tell which stick is which. If you have no clue, then assume the installer is on /dev/sdb1 and the target stick on /dev/sdc1 (if you did put it in the USB ports I told you to).
  6. Write the name of the device down (It's very likely to be /dev/sdc1 with the current installer).
  7. On a pristine stick or card you will see one fat partition, select and delete it.
  8. Now you will see free space. Select that, and create a new primary partition. Accept the default size to use the whole medium.
  9. Filesystem default ext3 is fine. Select mount option noatime.
  10. I would set a volume label like eeeSDcard or eeeStick.
  11. Set the bootable flag.
  12. Select 'Done setting up partition' and 'Finish partitioning and write changes to disk'.
  13. The installer thinks you should have a swap partition, but you can savely continue without. (There will be more warnings about missing swap).
  14. Now let the installer do its thing until it wants to write the GRUB bootloader. Stop now. Do *not* install the GRUB bootloader in the mbr.
  15. To install the bootloader on your external media you have to give the name of the device like the installer sees it during installation. So install it to the device (without partition number) you wrote down in the partitioner. Probably it will be /dev/sdc (*NOT* /dev/sdc1).

    You can double check this by switching to console 2 (press <ctr> + <alt> + <F2> and then <ret>) and use the mount command. It's the device where /target is mounted (without partition number).

    • You install GRUB on a device like /dev/sdc but this will show up as /dev/sdb when the system gets booted. Don't get confused, it *is* confusing. ;-)

  16. Continue until the installer wants to reboot, but don't do that yet. We must correct the faulty disk and device names in /boot/grub/menu.lst and /etc/fstab first. You can do that inside the installer now, or you can decide to let the installer finish and mount the media somewhere else to fix things there before rebooting the eeepc. Next steps show how to do it from the installer.
  17. Switch to console 2 (<ctr> + <alt> + <F2>)

  18. The files show up as mounted under /target. Make a security copy, something like
      cp -a /target/boot/grub/menu.lst /target/boot/grub/menu.lst.INSTALLER.back
      cp -a /target/etc/fstab /target/etc/fstab.INSTALLER.back
  19. Check and edit the drive letter in /etc/fstab. / should be mounted on /dev/sdb1 (not /dev/sdc1)

      nano /etc/fstab
    it should look like this:
     /dev/sdb1    /    ext3    noatime,errors=remount-ro    0  1

    Or even better, see http://www.cyrius.com/debian/nslu2/linux-on-flash.html

     /dev/sdb1    /    ext3    noatime,commit=120,errors=remount-ro    0  1
  20. Edit /boot/grub/menu.lst. The external media should be on (hd0,0). Scroll down until you see the entries for the installed system, something like

    ## ## End Default Options ##
    title           Debian GNU/Linux, kernel 2.6.24-1-686
    root            (hd2,0)
    kernel          /boot/vmlinuz-2.6.24-1-686 root=/dev/sdc1 ro quiet
    initrd          /boot/initrd.img-2.6.24-1-686
    ...
    ### END DEBIAN AUTOMAGIC KERNELS LIST

    Now change to 'root (hd0,0)' and '/dev/sdb1'. With my kernel version it looks like:

    title           Debian GNU/Linux, kernel 2.6.24-1-686
    root            (hd0,0)
    kernel          /boot/vmlinuz-2.6.24-1-686 root=/dev/sdb1 ro quiet
    initrd          /boot/initrd.img-2.6.24-1-686
    title           Debian GNU/Linux, kernel 2.6.24-1-686 (single-user mode)
    root            (hd0,0)
    kernel          /boot/vmlinuz-2.6.24-1-686 root=/dev/sdb1 ro single
    initrd          /boot/initrd.img-2.6.24-1-686

    The internal flash drive should be on (hd1,0) and /dev/sda(x). So for default xandros on the internal drive you would edit the entries (farther down) to look something like:

    # This entry automatically added by the Debian installer for an existing
    # linux installation on /dev/sda1.
    title           Normal Boot (on /dev/sda1)
    root            (hd1,0)
    kernel          /boot/vmlinuz-2.6.21.4-eeepc quiet rw vga=785 irqpoll root=/dev/sda1
    initrd          /boot/initramfs-eeepc.img
    ...

    Now we must correct the entries for update-grub. Edit the device in the kernel options to /dev/sdb1

    # kopt=root=/dev/sdb1 ro

    and root to (hd0,0)

    # groot=(hd0,0)
  21. Now change back to console 1 (<ctr> + <alt> + <F1>) and let the installer reboot.

  22. You can boot by pressing <esc> after power on, or if you boot from SD card you can change hd priority in the bios, and boot directly from the card.

  23. Change the scripts under /etc/acpi so that they never do suspend. If you're like me and have the habbit of saving your work very often or let your applications do that for you, you can use my personal hack for this: I just do shutdown instead of suspend. I don't even ask, who would answer the question when you just closed the lid? I have edited /etc/acpi/actions/suspend.sh
    #!/bin/sh
    # do nothing if package is removed
    [ -d /usr/share/doc/eeepc-acpi-scripts ] || exit 0
    if (runlevel | grep -q [06]) || (pidof '/sbin/shutdown' > /dev/null); then
        exit 0
    fi
    shutdown -h now

    Probably we will have a better method of doing this, see 474531.

Booting external media

Common case

Booting from SDHC card