[Nook Color Android Development] rookie1:
Source code is up at https://github.com/rookie1/u-boot-nc1.2

May 15 - Thanks to verygreen, I've modified multi u-boot to solve SD booting problem. Version bumped to 0.4.

It's reported the previous version has compatibility issues with 2.6.32 kernel. I've updated multi u-boot base on B&N 1.2 source. Now it's flashable using CWM. Boot message should show "(multi)U-Boot v0.4 loading..." after flashing this. Note this zip is for flashing to EMMC. For people using this on SD card, you need to manually copy the u-boot.bin in this zip file to your SD card boot partition.

Download link - http://dl.dropbox.com/u/20480343/multi-uboot-v0.4.zip

Looks like people are requesting different boot orders. I've created this multi-boot capable u-boot for you all :)

Install instructions

1. If you plan to use a bootable sd card to control the boot, replace u-boot.bin on 1st partition of the sd card with my (multi)u-boot.bin. Remember to make a backup of your original u-boot.bin just in case.

2. If you do not plan to use a bootable sd card, replace the u-boot.bin on 1st partition of the eMMC. Again remember to make a backup.

How to configure boot

normal boot is booting up without pressing any key. alternate boot is booting up with Home key ('n' key) pressed. recovery boot is booting up with both Vol+ and Vol- key pressed.

1. Boot device order

Which device to boot from is controlled by a file called u-boot.order in the same partition as (multi)u-boot.bin. Only the 1st 2 bytes of this file are significant. The first byte tells (multi)u-boot.bin where to look for kernel/ramdisk in normal boot. 2nd byte tells (multi)u-boot.bin where to look for kernel/ramdisk in alternate boot.

Value '0' means sd card, value '1' means eMMC.

For example, if you do "echo 10 > u-boot.order", you are telling (multi)u-boot.bin to load kernel/ramdisk from eMMC in normal boot, and load from sd card in alternate boot.

If this file is not present, both normal and alternate boot will load from the device where u-boot.bin is.

2. Alternate boot kernel/ramdisk file name

In the same partition as (multi)u-boot.bin, you can create 2 new files, u-boot.altimg and u-boot.altram to specify the kernel image and ramdisk file name to load in alternate boot.

In normal boot, (multi)u-boot.bin loads default kernel image (uImage) and default ramdisk (uRamdisk) from the device specified by the 1st byte in u-boot.order.

If either file is not present, the default value (uImage or uRamdisk) will be used.

Example configuration

1. eMMC stock eclair, sd card froyo or hc, and you want to boot normally into eMMC, and press 'n' key to boot into sd card

- put (multi)u-boot.bin into sd card 1st partition

- create a text file named u-boot.order in you sd card 1st partition, which contains 10

2. eMMC stock eclair, sd card froyo or hc, and you want to boot normally into sd card, and press 'n' key to boot into eMMC

- put (multi)u-boot.bin into sd card 1st partition

- create a file named u-boot.order, which contains 01

3. eMMC contains dual boot eclair and froyo (see my dual-boot post), boot normally into stock, press 'n' to boot into froyo

- put (multi)u-boot.bin into eMMC 1st partition

- if you have setup dual boot using my script, create a text file named u-boot.altimg, which contains the word "uFImg" (without quotes), and another text file named u-boot.altram with content "uFRam" (without quotes).

There are other combinations possible, e.g. creating a dual boot froyo and hc sd card without touching stock eMMC, using oc kernel as normal boot and stock kernel as alternate boot, etc.