Boot debian from SATA - Seagate GoFlex Net

This how-to assumes that you have a working Debian installation on a USB drive. If not check Jeff’s site on how to install debian Squeeze on the GoFlex Net.

Once you have installed debian and have verified everything is working fine, we can go ahead with the modifications. It would be a good idea to configure netconsole so that you can monitor and make changes to uBoot if there is any problem. The steps are described in detail here.

The default kernel installed doesn’t have support for the GoFlex Net SATA ports. So we are going to replace it with a newer and updated kernel.

Now we will download and install the updated kernel.

wget http://www.varkey.in/files/linux-image-2.6.37.6-goflex_1.0_armel.deb

dpkg -i linux-image-2.6.37.6-goflex_1.0_armel.deb

cd /boot

# Create the images for uBoot

/usr/bin/mkimage -A arm -O linux -T kernel -C none -a 0x00008000 -e 0x00008000 -n Linux-2.6.37.6 -d /boot/vmlinuz-2.6.37.6-goflex /boot/uImage
/usr/bin/mkimage -A arm -O linux -T ramdisk -C gzip -a 0x00000000 -e 0x00000000 -n initramfs -d /boot/initrd.img-2.6.37.6-goflex /boot/uInitrd


After that reboot GoFlex Net and ‘uname –r’ should show ‘2.6.37.6-goflex’ if the kernel installation was successful. Once you have made sure it’s the updated kernel we can update uBoot environment to the new GoFlex Arch Number to enable the SATA ports.

setenv arcNumber 3089


Reboot again and check the output of ‘dmesg’, it should show something like this

[    1.068182] sata_mv sata_mv.0: version 1.28  
[    1.072505] sata_mv sata_mv.0: slots 32 ports 2
[    1.079814] scsi0 : sata_mv
[    1.083250] scsi1 : sata_mv
[    1.086582] ata1: SATA max UDMA/133 irq 21
[    1.090697] ata2: SATA max UDMA/133 irq 21


Now you can modify the uBoot environment again to make it boot from a SATA drive.

fw_setenv 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'  
fw_setenv sata_bootcmd 'run usb_set_bootargs; run sata_boot'  
fw_setenv 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'


Shutdown the GoFlex Net, connect the hard disk to the *right* side SATA port. There seems to be a bug in Jeff’s uBoot for GoFlex Net, so within uBoot only the right port works. That would be all and the GoFlex Net should now boot from the attached SATA disk.

Here are the logs from a successful SATA boot.

And my uBoot environment settings as well.

If you do not have a GoFlex Hard Disk, you can attach an external eSata disk to the GoFlex Net using these cables.

If you are having any trouble setting this up, leave a comment.


comments powered by Disqus