ACHTUNG: Ihr solltet wissen was ihr tut, Nachahmung nur für die Empfohlen die verstehen, was ich hier schreibe.
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:
QUELLTEXT
cd /tmp/sda1
cp -a /bin /dev /etc /lib /media /root /sbin /share /usr /var ./
mkdir mnt proc sys tmp
3. eine Datei "/linuxrc" mit folgendem Inhalt anlegen (nicht auf dem stick!):
QUELLTEXT
#!/bin/sh
/bin/echo "***** linuxrc ******"
/bin/mkdir -p /tmp/mnt
/bin/echo mounting sda1...
if /bin/mount -n /dev/sda1 /tmp/mnt; then
/bin/test -x /tmp/mnt/sbin/init && exec /sbin/chroot /tmp/mnt /sbin/init
/bin/echo "no /sbin/init on sda1"
else
/bin/echo "mount failed!"
fi
exec /sbin/init
Das war's schon. Um nun vom USB-Stick zu booten, einfach im u-boot anhalten und
QUELLTEXT
setenv bootargs console=ttyRI0 mtdparts=cx2450xflash:512k(U-Boot)ro,4096k(kernel),28160k(systemFS) root=mtd2 rootfstype=jffs2 rw mem=384M init=/linuxrc
boot
Wenn ihr dann im / *kein* linuxrc und dafür lost+found habt, hat es geklappt
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.
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:
QUELLTEXT
cd /tmp/sda1
cp -a /bin /dev /etc /lib /media /root /sbin /share /usr /var ./
mkdir mnt proc sys tmp
3. eine Datei "/linuxrc" mit folgendem Inhalt anlegen (nicht auf dem stick!):
QUELLTEXT
#!/bin/sh
/bin/echo "***** linuxrc ******"
/bin/mkdir -p /tmp/mnt
/bin/echo mounting sda1...
if /bin/mount -n /dev/sda1 /tmp/mnt; then
/bin/test -x /tmp/mnt/sbin/init && exec /sbin/chroot /tmp/mnt /sbin/init
/bin/echo "no /sbin/init on sda1"
else
/bin/echo "mount failed!"
fi
exec /sbin/init
Das war's schon. Um nun vom USB-Stick zu booten, einfach im u-boot anhalten und
QUELLTEXT
setenv bootargs console=ttyRI0 mtdparts=cx2450xflash:512k(U-Boot)ro,4096k(kernel),28160k(systemFS) root=mtd2 rootfstype=jffs2 rw mem=384M init=/linuxrc
boot
Wenn ihr dann im / *kein* linuxrc und dafür lost+found habt, hat es geklappt

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.