Yeaaah, I see the problem. uboot is trying to load /boot/boot.scr from sdb1 which obviously will not be there on a blank disk. [expletive deleted] WD and their insistence to have the two drive numbered backwards, down to the boot parameters. Although I'm actually surprised that neither I nor anyone else in the last years ran into this obvious problem, even by accident.
The uboot song and dance goes like this:
bootcmd=run boot_sata_script_ap2nc
↓ runs
boot_sata_script_ap2nc=run load_boot_ap2nc; source 100000
↓ runs
load_boot_ap2nc=echo ----- Checking Boot Partitions -----;if run lbf1;then echo 1:1;elif run lbf2;then echo 0:1;elif run lbf3;then echo 1:2;elif run lbf4;then echo 0:2; fi
↓ runs (in order)
lbf1=sata init; ext2load sata 1:1 100000 /boot/boot.scr
lbf2=sata init; ext2load sata 0:1 100000 /boot/boot.scr
lbf3=sata init; ext2load sata 1:2 100000 /boot/boot.scr
lbf4=sata init; ext2load sata 0:2 100000 /boot/boot.scr
What I'm a bit surprised now is that if the partition exists, just not the file, or if the partition is anything but ext2 ... the ext2load
attempt in the first line apparantly doesn't error or time out, it just sits there confused. Which makes it a rather shitty fallback mechanism. I guess WD never expected anyone to shove anything but a completely uninitialized or a properly MBL-initialized disk in there.
Anyway, at this point there's two solutions to your problem:
a) put OpenWrt on the second disk, too. I would argue this is a very sensible option anyway, OpenWrt does not take up that much space and you afterwards have the option of booting off that disk without reformatting it first. You can leave OpenWrt on that disk unconfigured, it will never actually boot, the MBL will just take the boot.scr file and continue booting from the disk in drive B.
b) change the uboot script
This is a bit more involved. I actually once wrote a much, much simpler boot script than the one MBL uses:
setenv boot_owrt 'echo -- SATA init; sata init; if run boot_owrt_01; then echo -- found boot.scr on 0:1; source 100000; elif run boot_owrt_11; then echo -- found boot.scr on 1:1; source 100000; else echo -- boot.scr not found on any disk!; fi'
setenv boot_owrt_01 'echo -- searching boot.scr on 0:1; ext2load sata 0:1 100000 /boot/boot.scr'
setenv boot_owrt_11 'echo -- searching boot.scr on 1:1; ext2load sata 1:1 100000 /boot/boot.scr'
setenv bootcmd 'run boot_owrt'
Or, if you want it to be as short as possible, without a fallback to booting OpenWrt from a single drive in Drive A:
setenv bootcmd 'sata init; ext2load sata 0:1 100000 /boot/boot.scr; source 100000'
setenv
requires serial access to the uboot console. If you don't have that, you can probably do it via fw_setenv
in the uboot-envtools
package, but I can't help with that since I've actually never done that myself.
As for
I don't have any idea why that would be. It's certainly not related to the boot problem.