canonical SD card setup? (close but no cigar)

I have a dual-partition 2G SD card.

1st partition is FAT formatted, containing
these four files:

   MLO // yes, MLO is the first file copied
                       // into this partition
   u-boot.img
   uImage
   x-load.bin.ift

2nd partition has rootfs, ext3 format.

When I boot (pressing the USER button while
powering up or hitting RESET,) u-boot reports
that it's booting from NAND (not what I wanted).

The kernel version I end up with is that of the
kernel in NAND (again, not what I wanted.)

So my question is: does my boot partition
layout make sense? Am I using the wrong MLO,
or do I need some particular u-boot script(s) to
boot with this layout?

Or is it a matter of tweaking some particular
u-boot environment variable(s) to work with this
boot partition layout?

/Rafe

Is you FAT partition set to bootable?

Gerald

fdisk seems to think so:

Disk /dev/sdd: 2032 MB, 2032664576 bytes
255 heads, 63 sectors/track, 247 cylinders, total 3970048 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x0a61ad83

Device Boot Start End Blocks Id System
/dev/sdd1 * 2048 803249 400601 c W95 FAT32 (LBA)
/dev/sdd2 803250 3968054 1582402+ 83 Linux

Command (m for help):

/Rafe

^^^^^
That is not going to be bootable..

Your version of 'fdisk' needs "-c=dos -u=cylinders"

#wipe drive
sudo parted -s /dev/sdX mklabel msdos

#setup boot partition size:
sudo fdisk -c=dos -u=cylinders /dev/sdX << MMC_END
n
p
1
1
+64M
t
e
p
w
MMC_END

#set bootable flag
sudo parted --script /dev/sdX set 1 boot on

Regards,

Hello, Robert,

I’m sure that I used the -u switch in fdisk when I
created the partitions in this card. But maybe
not the -c switch. Here’s the same report after
using -u in fdisk:

Command (m for help): u
Changing display/entry units to cylinders (DEPRECATED!)
Command (m for help): p
Disk /dev/sdd: 2032 MB, 2032664576 bytes
255 heads, 63 sectors/track, 247 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x0a61ad83

Device Boot Start End Blocks Id System
/dev/sdd1 * 1 50 400601 c W95 FAT32 (LBA)
/dev/sdd2 51 247 1582402+ 83 Linux

I will attempt to follow your further instructions
and scripts.

/Rafe

Hello, Robert, I tried your commands and scripts
but I’m not sure it went well. For ‘dev’ I used the
DOS boot partition, not the entire card. I’m not
sure that makes sense, but I didn’t see where your
scripts were going to create a dual-partition card.

Thanks for bearing with a newb, I truly appreciate it.

/Rafe

rafe@desktop-ubuntu:~$ **sudo parted -s /dev/sdd1 mklabel msdos**
[sudo] password for rafe:
Error: Partition(s) on /dev/sdd1 are being used.
rafe@desktop-ubuntu:~$ **umount /dev/sdd1**
rafe@desktop-ubuntu:~$ **sudo parted -s /dev/sdd1 mklabel msdos**
Error: Partition(s) 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16 on /dev/sdd1 have been written, but we have been unable to inform the kernel of the change, probably because it/they are in use. As a result, the old partition(s) will remain in use. You should reboot now before making further changes.
rafe@desktop-ubuntu:~$

Hello, Robert, I tried your commands and scripts
but I'm not sure it went well. For 'dev' I used the
DOS boot partition, not the entire card. I'm not
sure that makes sense, but I didn't see where your
scripts were going to create a dual-partition card.

Thanks for bearing with a newb, I truly appreciate it.

/Rafe

rafe@desktop-ubuntu:~$ sudo parted -s /dev/sdd1 mklabel msdos
[sudo] password for rafe:
Error: Partition(s) on /dev/sdd1 are being used.
rafe@desktop-ubuntu:~$ umount /dev/sdd1
rafe@desktop-ubuntu:~$ sudo parted -s /dev/sdd1 mklabel msdos
Error: Partition(s) 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16 on

use: "/dev/sdd" here

rafe@desktop-ubuntu:~$ sudo fdisk -c=dos -u=cylinders /dev/sdd1 use: "/dev/sdd"

use: "/dev/sdd" here

===========

rafe@desktop-ubuntu:~$ sudo parted --script /dev/sdd1 set 1 boot on

use: "/dev/sdd" here

Regards,