ACHTUNG:
]Ihr solltet wissen was ihr tut, Nachahmung nur für die Empfohlen die verstehen, was hier steht!
Sollte eure Coolstream danach ein Briefbeschwerer sein übernehmen wir keine Haftung.
Du musst angemeldet sein, um Bilder zu sehen.
Um vom USB-Stick booten zu können muss man nicht wirklich viel tun.
Eigentlich wird nicht vom Stick gebootet, aber das Filesystem vom USB-Stick wird als root-Filesystem benutzt.
Zu tun ist das folgende:
1. USB-Stick partitionieren, auf Partition /dev/sda1 ein ext3 Filesystem anlegen
(ich würde übrigens nicht das mkfs.ext3 auf der Coolstream dafür benutzen, das busybox mkfs.ext3 ist bekanntermaßen buggy).
2. Den USB-Stick auf der Coolstream mounten und alles über telnet kopieren:
1 cd /tmp/sda1 2 cp -a /bin /dev /etc /lib /media /root /sbin /share /usr /var ./ 3 mkdir mnt proc sys tmp
3. eine Datei "/linuxrc" mit folgendem Inhalt anlegen (nicht auf dem Stick sondern im root ( / ) der Coolstream!):
1. #!/bin/sh
2. /bin/echo "***** linuxrc ******"
3. /bin/mkdir -p /tmp/mnt
4. /bin/echo mounting sda1...
5. if /bin/mount -n /dev/sda1 /tmp/mnt; then
6. /bin/test -x /tmp/mnt/sbin/init && exec /sbin/chroot /tmp/mnt /sbin/init
7. /bin/echo "no /sbin/init on sda1"
8. else
9. /bin/echo "mount failed!"
10. fi 11. exec /sbin/init
Das war es schon.
Um nun vom USB-Stick zu booten:
1: Die Coolstream ausschalten
2: PC und Coolstream mit einem Nullmodem Kabel verbinden
3: Putty oder Hyperterminal öffnen
4: Coolstream booten (einschalten
Du musst angemeldet sein, um Bilder zu sehen.
)
5: Beliebige Taste drücken während die Box bootet
6: Jetzt sollte das booten gestoppt sein und ihr habt einen prompt und könnt Befehle eingeben.
Jetzt geben wir:
7:
[TD="class: codeLineNumbers container-3"]1.[/TD]
[TD="class: codeLines container-4"]printenv[/TD]
[TD="class: codeLines container-4"][/TD]
ein und erhalten eine Ausgabe die wie folgt Aussehen kann:
1. HD1> printenv 2. bootargs=console=ttyRI0 mtdparts=cx2450xflash:512k(U-Boot)ro,4096k(kernel),28160k(systemFS) root=mtd2 rootfstype=jffs2 rw mem=384M 3. bootcmd=bootm 0xF0080000 4. bootdelay=1 5. baudrate=115200 6. ipaddr=192.168.1.101 7. serverip=192.168.1.24 8. netmask=255.255.255.0 9. bootfile="uImage" 10. stdin=serial 11. stdout=serial 12. stderr=serial 13. Environment size: 308/131068 bytes 14. HD1>
[TD="class: codeLineNumbers container-3"][/TD]
8: Von der Ausgabe kopieren wir uns die bootargs damit wir nicht so viel tippen müssen und um Fehler zu vermeiden. Also alles
nach bootargs= und fügen
am ende init=/linuxrc mit an.
Das ganze sieht dann so aus:
console=ttyRI0 mtdparts=cx2450xflash:512k(U-Boot)ro,4096k(kernel),28160k(systemFS) root=mtd2 rootfstype=jffs2 rw mem=384M init=/linuxrc
9: jetzt geben wir dem u-boot die neuen Argumente mit indem wir:
[TD="class: codeLineNumbers container-3"]1[/TD]
[TD="class: codeLines container-4"]. setenv bootargs console=ttyRI0 mtdparts=cx2450xflash:512k(U-Boot)ro,4096k(kernel),28160k(systemFS) root=mtd2 rootfstype=jffs2 rw mem=384M init=/linuxrc[/TD]
[TD="class: codeLines container-4"][/TD]
und dann:
9:
[TD="class: codeLineNumbers container-3"]1.[/TD]
[TD="class: codeLines container-4"]boot[/TD]
[TD="class: codeLines container-4"][/TD]
eingeben.
Jetzt bootet die Coolstream einmalig vom USB Stick.
Wenn ihr dann im /
kein linuxrc und dafür lost+found seht, 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.
Quelle=Coolstream*to