Um vom USB-Stick booten zu können muss man nicht wirklich viel tun.
Naja, eigentlich wird ja nicht vom Stick gebootet, aber das Filesystem vom USB-Stick wird als root-FS benutzt.
Zu tun ist das folgende:
1. USB-Stick partitionieren, auf Partition /dev/sda1 ein ext3 FS anlegen (ich würde übrigens nicht das mkfs.ext3 auf der Coolstream dafür benutzen, das busybox mkfs.ext3 ist bekanntermassen buggy).
2. Den USB-Stick auf der Coolstream mounten, alles rüberkopieren:
Code: Alles auswählen
cd /tmp/sda1
cp -a /bin /dev /etc /lib /media /root /sbin /share /usr /var ./
mkdir mnt proc sys tmp
Code: Alles auswählen
#!/bin/sh
#
# /linuxrc script for USB booting
#
# (C) 2009 Stefan Seyfried, License: GPL V2
#
# this is a hack for booting the coolstream HD1 from USB
# put this script into the original root fs as /linuxrc,
# chmod it to 0755 and add "init=/linuxrc" to the bootargs of
# U-Boot
#
# the usb stick should have an "/oldroot" directory, so you
# can unmount the jffs2 "old" root later.
#
e="/bin/echo linuxrc:"
$e "***** linuxrc ******"
/bin/mkdir -p /tmp/newroot
$e mounting sda1...
if ! /bin/mount -n /dev/sda1 /tmp/newroot; then
$e "mount failed, doing normal init. Goodbye!"
exec /sbin/init
fi
if /bin/test -e /tmp/newroot/sbin/pivot_root; then
$e "using pivot_root to enter new root"
cd /tmp/newroot
sbin/pivot_root . oldroot
bin/mknod dev/console c 5 1
exec sbin/chroot . sbin/init < dev/console > dev/console 2>&1
fi
$e "no /sbin/pivot_root on sda1, trying normal chroot"
if /bin/test -x /tmp/newroot/sbin/init; then
exec /sbin/chroot /tmp/newroot /sbin/init
fi
$e "no /sbin/init on sda1, booting from flash."
exec /sbin/init
Code: Alles auswählen
setenv bootargs console=ttyRI0 mtdparts=cx2450xflash:512k(U-Boot)ro,4096k(kernel),28160k(systemFS) root=mtd2 rootfstype=jffs2 rw mem=384M init=/linuxrc
Code: Alles auswählen
boot
Weil die /linuxrc ein fallback hat, macht es auch nichts aus, wenn der stick nicht steckt. Und weil der Kernel ein fallback hat, macht es auch nichts aus, wenn kein /linuxrc da ist. Insofern könnte man das per "saveenv" zum default machen, die Kiste würde sogar nach dem nächsten Image-Update noch booten. Das soll aber jeder machen wie er will.