Welcome! Log In Create A New Profile


GoFlex Net: Boot from USB while SATA disks connected

Posted by cyb 
Re: GoFlex Net: Boot from USB while SATA disks connected
October 17, 2015 02:54PM
Thanks for the help so far:)

I did add some of the lines from the first post. Now things are working almost as I want it.
I am now able to boot both from USB and SATA disk. If USB is atatched, it will boot from it, otherwise from SATA.
But if I boot with some other usb sticks attached, it will fail during boot.

Her is my current env:
# fw_printenv
led_init=green blinking
led_exit=green off
led_error=orange blinking
rescue_set_bootargs=setenv bootargs console=$console ubi.mtd=2 root=ubi0:rootfs ro rootfstype=ubifs $mtdparts $rescue_custom_params
rescue_bootcmd=if test $rescue_installed -eq 1; then run rescue_set_bootargs; nand read.e 0x800000 0x100000 0x400000; bootm 0x800000; else run pogo_bootcmd; fi
pogo_bootcmd=if fsload uboot-original-mtd0.kwb; then go 0x800200; fi
force_rescue_bootcmd=if test $force_rescue -eq 1 || ext2load usb 0:1 0x1700000 /rescueme 1 || fatload usb 0:1 0x1700000 /rescueme.txt 1; then run rescue_bootcmd; fi
ubifs_set_bootargs=setenv bootargs console=$console ubi.mtd=$ubifs_mtd root=ubi0:rootfs rootfstype=ubifs $mtdparts $ubifs_custom_params
ubifs_bootcmd=run ubifs_set_bootargs; if ubi part data && ubifsmount rootfs && ubifsload 0x800000 /boot/uImage && ubifsload 0x1100000 /boot/uInitrd; then bootm 0x800000 0x1100000; fi
usb_scan=usb_scan_done=0;for scan in $usb_scan_list; do run usb_scan_$scan; if test $usb_scan_done -eq 0 && ext2load usb $usb 0x800000 /boot/uImage 1; then usb_scan_done=1; echo "Found bootable drive on usb $usb"; setenv usb_device $usb; setenv usb_root /dev/$dev; fi; done
usb_scan_list=1 2 3 4
usb_scan_1=usb=0:1 dev=sda1
usb_scan_2=usb=1:1 dev=sdb1
usb_scan_3=usb=2:1 dev=sdc1
usb_scan_4=usb=3:1 dev=sdd1
usb_set_bootargs=setenv bootargs console=$console root=$usb_root rootdelay=$usb_rootdelay rootfstype=$usb_rootfstype $mtdparts $usb_custom_params
usb_boot=mw 0x800000 0 1; ext2load usb $usb_device 0x800000 /boot/uImage; if ext2load usb $usb_device 0x1100000 /boot/uInitrd; then bootm 0x800000 0x1100000; else bootm 0x800000; fi
preboot_nc=setenv nc_ready 0; for pingstat in 1 2 3 4 5; do; sleep 1; if run if_netconsole; then setenv nc_ready 1; fi; done; if test $nc_ready -eq 1; then run start_netconsole; fi
preboot=run preboot_nc
usb_init=run usb_scan
usb_bootcmd=run usb_init; run usb_set_bootargs; run usb_boot
set_bootargs_rescue=setenv bootargs console= ubi.mtd=2 root=ubi0:rootfs ro rootfstype=ubifs
bootcmd_rescue=run set_bootargs_rescue; nand read.e 0x800000 0x100000 0x400000; bootm 0x800000
bootcmd_pogo=run bootcmd_rescue
sata_boot=ide reset; mw 0x800000 0 1; ext2load ide 0:1 0x800000 /boot/uImage; if ext2load ide 0:1 0x1100000 /boot/uInitrd; then bootm 0x800000 0x1100000; else bootm 0x800000; fi
sata_bootcmd=run usb_set_bootargs; run sata_boot
bootcmd=usb start; run force_rescue_bootcmd; run ubifs_bootcmd; run usb_bootcmd; usb stop; run sata_bootcmd; run rescue_bootcmd; run pogo_bootcmd; reset

Here is the serial console output if I boot without the USB_rootfs, but still have other usb storage devices attached:
and I see there is a "if_netconsole error"
U-Boot 2014.07-tld-2 (Sep 20 2014 - 00:58:11)
Seagate GoFlex Net

SoC:   Kirkwood 88F6281_A1
DRAM:  128 MiB
WARNING: Caches not enabled
NAND:  256 MiB
In:    serial
Out:   serial
Err:   serial
Net:   egiga0
88E1116 Initialized on egiga0
## Error: "if_netconsole" not defined
## Error: "if_netconsole" not defined
## Error: "if_netconsole" not defined
## Error: "if_netconsole" not defined
## Error: "if_netconsole" not defined
Hit any key to stop autoboot:  0
(Re)start USB...
USB0:   USB EHCI 1.00
scanning bus 0 for devices... 4 USB Device(s) found
       scanning usb for storage devices... 2 Storage Device(s) found
** No partition table - usb 0 **
** No partition table - usb 0 **
UBI: attaching mtd1 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
UBI: attached mtd1 to ubi0
UBI: MTD device name:            "mtd=3"
UBI: MTD device size:            219 MiB
UBI: number of good PEBs:        1752
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:     0
UBI: available PEBs:             1731
UBI: total number of reserved PEBs: 21
UBI: number of PEBs reserved for bad PEB handling: 17
UBI: max/mean erase counter: 1/1
UBIFS error (pid 0): ubifs_get_sb: cannot open "rootfs", error -22
UBIFS error (pid 0): ubifs_mount: Error reading superblock on volume 'rootfs' errno=-22!
Re: GoFlex Net: Boot from USB while SATA disks connected
October 17, 2015 10:55PM

The same answer here:


Forum Wiki
bodhi's corner
Re: GoFlex Net: Boot from USB while SATA disks connected
October 18, 2015 03:26PM
Thanks bodhi
You think the new uboot envs will improve the usb issues?

I have done a bit testing with different usb sticks connected.
I had this 4 port usb hub connected earlier (before I got SATA boot working) and then this booted fine with one usb_rootfs stick and two other usb sticks (8GB + 16GB). I actually had them set up as a raid stipe, just for testing.

After this I tested the following combinations:
- SATA boot with usb hub and the two raided sticks inserted: Boot failed
- SATA boot with 64GB formatted usb stick: Boot successful
- SATA boot with 64GB + 8GB usb sticks: Boot successful
- SATA boot with 64GB + 8Gb + 16GB usb sticks: Boot failed
- SATA boot with 8Gb + 16GB usb sticks: Boot failed
- SATA boot with 64GB + 8GB usb sticks: Boot failed (notice this was the same combination that worked just a moment ago)
At this point I did several reboots testing different combinations with the usb sticks, and all tests with more than one usb stick did fail.

Then I did a final test, even I was certain that it would fail....
- SATA boot with 64GB + 8GB + 8Gb + 4GB usb sticks: Boot sucsessful

I have no idea why this did work, and many of the other combinations failed.
To verify, I did a new boot with the same setup, and this time it failed.
Then I waited a bit, and at the next test it did indeed work again with 4 usb devices connected.
To me it feels very random if it works or not.

One thing I havent tested though. This hub is not powered at the moment, so it draws all the power from the goflex. But I dont think the usb sticks takes to much power to make trouble.
Re: GoFlex Net: Boot from USB while SATA disks connected
October 18, 2015 03:48PM

What I described in the instruction post was the 3 key points:

1. Make sure only one disk has the /boot/uImage and /boot/uInitrd (which are in your designated rootfs already).
2. Make sure these 2 kernel files are in the 1st partition.
3. Make sure only one partition is labeled rootfs among all partitions from all disks

And the u-boot envs are set up to scan and look for these facts (as described in the instruction).

Once you've done the above, it will never fail to boot, and will select the correct kernel and rootfs.

If the usb that contains your rootfs was not initialized correctly by u-boot, then use the u-boot env usb_ready_retry to make the period longer. For example

Forum Wiki
bodhi's corner
Re: GoFlex Net: Boot from USB while SATA disks connected
October 21, 2015 05:20PM
I just found that I have by accident overwritten the label rootfs setting. Now I have set it correct again and everything works perfecly.
I can boot from SATA with any number of usb devices connected without failing. And if I insert the usb_rootfs it will boot from the usb stick.
Thanks bohdi for your help and patience :)

Your Email:


Spam prevention:
Please, enter the code that you see below in the input field. This is for blocking bots that try to post this form automatically. If the code is hard to read, then just try to guess it right. If you enter the wrong code, a new image is created and you get another chance to enter it right.