Welcome! Log In Create A New Profile

Advanced

Dockstar - transferring rootfs from USB stick to an HDD

Posted by puppetmaster 
puppetmaster
Dockstar - transferring rootfs from USB stick to an HDD
December 24, 2012 02:57PM
Hi all,

I hava a Dockstar which boots Debian from a USB stick pretty nicely, but I'd like to change to booting from a USB hard drive. I've unsuccessfully tried the following advice and created the exact rootfs partition (and swap partition + the rest of space dedicated to data partition) on HDD as is on a USB stick using gparted (copy partition). I didn't edit the /etc/fstab because it should stay the same, right? (or should I set the UUID of the new rootfs partition somewhere?)

I've read here that booting from a USB HDD may require setting the bootdelay environment variable to a couple of seconds to allow the disk to spin up, is that so? I tried setting the variable with fw_setenv in uBoot to 5, but again Debian failed to boot from the hard drive.

The advantage of booting Debian from the HDD instead of a USB stick is that in the event of a power failure, Debian on an HDD will repair the filesystem automatically during next boot and with the USB stick I have to manually run fsck of the rootfs on another machine to fix it?
Re: Dockstar - transferring rootfs from USB stick to an HDD
December 24, 2012 04:54PM
@puppetmaster,

Since you're using a different Linux box to transfer your USB stick to HDD, it could be done similarly to the way that was decribed in the linked post. But you could keep it even simpler:

- Create rootft and swap partitions on the HDD, just like what you have on the USB stick, except that the size are different. And the order should be the same (rootfs is partition 1, swap is partition 2).

- Format the rootfs as ext3 (it should be ok to boot Ext3 even though uBoot env for rootfstype is set to Ext2) . Ext3 is to prevent FS corruption during power outage. But in the future, in Debian, you will need to change uBoot envs to state that it is Ext3, in order to use it as intended.

- Copy the content of the USB stick to the HDD:
cp -aR /media/sda1/* /media/sdb1/

assuming the USB stick rootfs partition is mounted as sda1, and the HDD rootfs partition is mounted as sdb1, and you are logging in as root user.

That's all you need to do for the HDD. You can now boot the Dockstar with it.

I'd suggest that you set up netconsole first, to observe uBoot booting sequence. It'll be much more obvious what the problem might be.



Edited 2 time(s). Last edit at 12/24/2012 04:56PM by bodhi.
puppetmaster
Re: Dockstar - transferring rootfs from USB stick to an HDD
December 25, 2012 04:47AM
Hi bodhi,

thank you for the help. I did exactly as you said, but Debian failed to boot from a hard drive. This is the uBoot booting sequence:

Quote

U-Boot 2011.12 (Feb 12 2012 - 21:33:07)
Seagate FreeAgent DockStar
arm-none-linux-gnueabi-gcc (Sourcery G++ Lite 2009q3-67) 4.4.1
GNU ld (Sourcery G++ Lite 2009q3-67) 2.19.51.20090709
Hit any key to stop autoboot: 0
(Re)start USB...
USB: Register 10011 NbrPorts 1
USB EHCI 1.00
scanning bus for devices... EHCI timed out on TD - token=0x80008c80
3 USB Device(s) found
scanning bus for storage devices... 0 Storage Device(s) found
** Block device usb 0 not supported

** Invalid boot device **
Creating 1 MTD partitions on "nand0":
0x000002500000-0x000010000000 : "mtd=3"
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 "ubi:rootfs", error -19
Error reading superblock on volume 'ubi:rootfs'!
** Block device usb 0 not supported
** Block device usb 1 not supported
** Block device usb 2 not supported
** Block device usb 3 not supported
** Block device usb 0 not supported
** Block device usb 0 not supported
Wrong Image Format for bootm command
ERROR: can't get kernel image!
stopping USB..
### JFFS2 loading 'uboot-original-mtd0.kwb' to 0x800000
Scanning JFFS2 FS: ........ done.
puppetmaster
Re: Dockstar - transferring rootfs from USB stick to an HDD
December 25, 2012 04:54AM
btw. this is my environment:

Quote

Pogoplug:/usr/sbin$ ./fw_printenv
ethact=egiga0
baudrate=115200
mainlineLinux=yes
console=ttyS0,115200
led_init=green blinking
led_exit=green off
led_error=orange blinking
mtdparts=mtdparts=orion_nand:1M(u-boot),4M(uImage),32M(rootfs),-(data)
mtdids=nand0=orion_nand
partition=nand0,2
rescue_installed=0
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=0
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_mtd=3
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_init=run usb_scan
usb_device=0:1
usb_root=/dev/sda1
usb_rootfstype=ext2
usb_rootdelay=10
usb_set_bootargs=setenv bootargs console=$console root=$usb_root rootdelay=$usb_rootdelay rootfstype=$usb_rootfstype $mtdparts $usb_custom_params
usb_bootcmd=run usb_init; run usb_set_bootargs; run usb_boot
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
bootcmd=usb start; run force_rescue_bootcmd; run ubifs_bootcmd; run usb_bootcmd; usb stop; run rescue_bootcmd; run pogo_bootcmd; reset
ethaddr=00:10:75:1A:8B:74
arcNumber=2097
if_netconsole=ping $serverip
bootdelay=10
preboot=run if_netconsole start_netconsole
serverip=192.168.1.246
ipaddr=192.168.1.238
start_netconsole=setenv ncip $serverip; setenv bootdelay 10; setenv stdin nc; setenv stdout nc; setenv stderr nc; version;
puppetmaster
Re: Dockstar - transferring rootfs from USB stick to an HDD
December 25, 2012 05:05AM
Ok, this solves the issue.

Quote

fw_setenv usb_init 'usb stop; usb start; run usb_scan'
Author:

Your Email:


Subject:


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.
Message: