I've only managed to boot a kernel from an usb stick plugged into the guruplug and formatted with the fat filesystem (fat because the vanilla u-boot from plugcomputer.org doesn't contain ext2 support)
Hmm.. I only tried ext2 partitions of different size on different storage devices (built-in sdcard, external usb hdd, external memory sticks) but u.boot would only find the internal sdcard reader (i think) but is unable to load it:
GuruPlug>> usb start
(Re)start USB...
USB: Register 10011 NbrPorts 1
USB EHCI 1.00
scanning bus for devices... 3 USB Device(s) found
scanning bus for storage devices... Device NOT ready
Request Sense returned 02 3A 00
1 Storage Device(s) found
GuruPlug>> usb dev 0:3
USB device 0:
Device 0: Vendor: Generic Rev: 9909 Prod: STORAGE DEVICE
Type: Removable Hard Disk
Capacity: not available
... is now current device
GuruPlug>> usb part
## Unknown partition table
GuruPlug>> usb info 3
config for device 3
3: Mass Storage, USB Revision 2.0
- USB Storage 000000009909
- Class: (from Interface) Mass Storage
- PacketSize: 64 Configurations: 1
- Vendor: 0x05e3 Product 0x0726 Version 153.9
Configuration: 1
- Interfaces: 1 Bus Powered 500mA
Interface: 0
- Alternate Setting 0, Endpoints: 2
- Class Mass Storage, Transp. SCSI, Bulk only
- Endpoint 1 In Bulk MaxPacket 512
- Endpoint 2 Out Bulk MaxPacket 512
The UBI stuff is only usable on mtd devices, which the microsd card isn't. So you only need the UBI stuff for the internal flash of the guruplug.
I understood that now. I tried using it but it fails:
GuruPlug>> setenv mtdids nand0=orion_nand
GuruPlug>> setenv mtdparts mtdparts=orion_nand:1m(u-boot),4m@1m(uImage),507m@5m(root)
GuruPlug>> setenv partition nand0,2
GuruPlug>> ubi part root 2048
Creating 1 MTD partitions on "nand0":
0x000000500000-0x000020000000 : "mtd=2"
UBI: attaching mtd1 to ubi0
UBI: physical eraseblock size: 131072 bytes (128 KiB)
UBI: logical eraseblock size: 126976 bytes
UBI: smallest flash I/O unit: 2048
UBI: sub-page size: 512
UBI: VID header offset: 2048 (aligned 2048)
UBI: data offset: 4096
UBI error: validate_ec_hdr: bad VID header offset 512, expected 2048
UBI error: validate_ec_hdr: bad EC header
UBI error: ubi_io_read_ec_hdr: validation failed for PEB 0
UBI error: ubi_init: cannot attach mtd1
UBI error: ubi_init: UBI error: cannot initialize UBI, error -22
UBI init error -22
GuruPlug>> ubifsmount root
UBIFS error (pid 0): ubifs_get_sb: cannot open "ubi:root", error -19
Error reading superblock on volume 'ubi:root'!
The kernel thinks differently about the partitons:
NAND device: Manufacturer ID: 0xec, Chip ID: 0xdc (Samsung NAND 512MiB 3,3V 8-bit)
Scanning device for bad blocks
Creating 3 MTD partitions on "orion_nand":
0x000000000000-0x000000100000 : "u-boot"
0x000000100000-0x000000500000 : "uImage"
0x000000500000-0x000020000000 : "root"
UBI: attaching mtd2 to ubi0
UBI: physical eraseblock size: 131072 bytes (128 KiB)
UBI: logical eraseblock size: 129024 bytes
UBI: smallest flash I/O unit: 2048
UBI: sub-page size: 512
UBI: VID header offset: 512 (aligned 512)
UBI: data offset: 2048
ata1: SATA link down (SStatus 0 SControl F300)
UBI: attached mtd2 to ubi0
UBI: MTD device name: "root"
UBI: MTD device size: 507 MiB
UBI: number of good PEBs: 4056
UBI: number of bad PEBs: 0
UBI: max. allowed volumes: 128
UBI: wear-leveling threshold: 4096
UBI: number of internal volumes: 1
UBI: number of user volumes: 1
UBI: available PEBs: 0
UBI: total number of reserved PEBs: 4056
UBI: number of PEBs reserved for bad PEB handling: 40
UBI: max/mean erase counter: 2/0
UBI: image sequence number: 0
UBI: background thread "ubi_bgt0d" started, PID 454
Any ideas?