Ja, die 800er kann auch komplett von USB booten

Wir haben aktuell ein Problem mit dem Board und arbeiten an der Lösung...
  • habe die dm800 nicht mehr (schnief), kann also keinen screenshot machen.


    Aber ich hatte beim Schreiben des Textes extra nochmal nachgesehen, dass es genau so da steht, wie es bei mir im bios eingetragen ist.


    Die infos dazu stehen übrigens in der dreambox-wiki unter
    http://dream.reichholf.net/wiki/Bootloader
    Hier der Ausschnitt daraus:

    Zitat


    Prerun bedeutet das "/cf/autorun.bat" alles aller erstes ausgeführt, noch bevor irgendein anderes gestartet wird. Dies kann sehr hilfreich sein wenn man plant eine Image-Update-Software auf einer CF-Karte zu kopieren um somit ein Update ohne jegliche weitere Interaktion des Users zu erstellen.


    Try Default Boot Sources ..bedeutet lediglich das im Fall der Fälle, wenn zum Beispiel die „autoexec.bat“ einen Fehler enthält, "/flash/zImage.elf" also „Default“ geladen wird.


    Primary/secondary/Alternate boot sources
    Die "Primary bootsource" wird als Erstes versucht zu booten (Ausnahme ist hier “prerun", welches noch vorher startet). Schlägt dies fehl, wird die "secondary boot source" angesprochen. (Dies ist nützlich um das Bootverhalten einer Dbox2 nachzuahmen: Erst versuche TFTP, danach den Flash. Um Probleme zu vermeiden wurde dies nicht als Standardwert gesetzt). Die alternative Bootquelle beim Booten der Box durch drücken einer der Tasten („Hoch“ oder „Runter“) an der Box ausgewählt werden. Dabei steht „Hoch“ für „alternative boot source 1“ und "Runter" für „alternative boot source 2“..


    Die DM800 hat gar keine up/down-tasten an der box. Ob man für die Alternative1+2 auch die Fernbedienung nehmen kann???
    Auch hat sie keinen CF. Die haben den Second-Stageloader nicht wirklich an die DM800 angepasst!?!? Ob bei prerun=enabled dann /usb/autorun.bat gestartet wird?


    Auf jeden Fall: Mit o.g. Einstellung: Wenn der USB-Stick abgezogen wird, bootet er vom flash, stöpsel ich ihn an, bootet er wieder vom usb. Das war das was ich wollte. Und es wird nicht der kernel vom Flash verwendet (war mir auch wichtig, wegen der neg. Erfahrungen damit bei dm7000)


    grx
    kddh


    Nachtrag: Nur um Mißverständnisse zu vermeiden:
    In der Textbox habe ich nur "/autorun.bat" eingetragen.
    Das Wort "usb" davor bezieht sich auf die Auswahlbox!

  • Wie wär's, wenn wir hier ein kleines Howto aufbauen, wie man händisch ein Image seiner Wahl auf den USB-Stick transferiert.
    Der Vorteil: Man weiß was man macht und man lernt a bisserl linux. Und hat mehr spaß dabei :) Wir können ja später alles zusammenfassen.


    "Ich mach mal den Anfang" wie ich schon mal irgendwo anders las:-)


    === Arbeitsverzeichnis ===
    Für die nachfolgendnen Schritte brauchst Du ein Verzeichnis, wo Du die Dateien entpacken und erzeugen kannst.
    Du kannst wahlweise in temp arbeiten oder - falls du eine festplatte hast - dir dort ein Verzeichnis anlegen:

    Code
    cd /media/hdd
    mkdir nfiwork
    cd nfiwork


    === NFI-Image dreiteilen===
    Das NFI-Image enthält drei Bereiche:
    1. 256KByte Second-Stage-Loader (das ist das 'BIOS-Setup')
    2. 3,75MByte Boot => enthält den Kernel (vmliux.gz), die autoexec.bat und so Extras wie bootlogo.elf. Dateisystem ist jffs2
    3. Rest (also ab 4MB) ist das root-Verzeichnis. Dateisystem ist jffs2


    Um an den Inhalt zu kommen, müssen wir das NFI in seine Teile zerteilen (Wobei wir den Second-Stage-Loader hier nicht brauchen):

    Code
    dd if=EinImage.nfi of=boot.jffs2 bs=3.75M skip=256K
    dd if=EinImage.nfi of=root.jffs2 skip=4M


    Wichtig: Das 'M' und das 'K' von 256K müssen Großbuchstaben sein!
    Info: dd ist ein Befehl, der bei jedem Unix mit dabei ist.
    'dd' unterscheidet sich vom normalen Copy-Befehl 'cp' dahingehend, dass man auch Blockdevices wie unseren Flashspeicher (/dev/mdt/..) als Quelle oder Ziel angeben kann. Außerdem - und das war ja hier wichtig - kann man auch einen Teil aus einer anderen Datei herauskopieren.
    skip gibt dabei an, wieviele Bytes am Anfang übersprungen werden sollen un 'bs=..' gibt an, wieviele Bytes kopiert werden sollen.
    Das boot.jffs2 ist 3,75MByte groß und liegt im Flash nach dem 256KByte großen Secondstage-Loader => skip=256K bs=3.75M
    Zusammen sind das genau 4MByte, daher root.jffs2 ab skip=4M.


    === Boot-Partition entpacken ===
    Nun haben wir eine Datei namens 'boot.jffs2'. Um an den Linux-Kernel da raus zu holen, müssen wir sie in ein Verzeichnis enpacken.
    Info: Bei Images mit anderen Dateisystemen kann man diese einfach mit dem mount-befehl auf ein Verzeichnis mounten und den Inhalt rauskopieren. JFFS2 ist da eine Ausnahme, weil es ausschließlich mit dem speziellen Blockdevicetreiber für Flashspeicher (MTD) funktioniert. Die beiden Workaurounds (Zwischenschalten eines Loop-Devices oder verwenden des Treibers MTDRAM) funktionieren auf meiner DM800 nicht, weil die notwendigen Treibermodule fehlen. Es bestünde die Möglichkeit, das ganze zu flashen und dann rauszukopieren, aber das will ich nicht. Aber es geht ja auch anders:


    Im Multiboot.rar findet man ein Progrämmchen namens 'dump'. Dieses kann JFFS2-Images in ein Verzeichnis auspacken. Ich habe es am Ende dieses Posts angehängt.


    Und so geht's:

    Code
    mkdir boot
    chmod +x ./dump
    ./dump --no-devtab --two-pass boot.jffs boot 1234

    Die allgemeine Syntax lautet:
    dump [--no-devtab] [--two-pass] SourceJFFS2Image ZielVerzeicnis Endianess
    Das "1234" gibt die Endianess des Prozessors an (DM7025/DM800=Little Endian=1234 vs. DM7000/DBOX2/DM600=Big Endian=4321).
    Die Option "--two-pass" reduziert den Speicherbedarf von 'dump': Es benötigt jetzt 'nur' noch soviel freies RAM wie die Größe des jffs2-Images (ohne diese Option benötigt es doppelt so viel). Da die DM800 256MB RAM hat, muss die Option nicht zwangsläufig verwendet werden.
    Die Bedeutung der Option '--no-devtab' kenne ich nicht.
    Nach dem erfolgreichen Ausführen von 'dump' müssten dann im boot-Verzeichnis mindestens die Dateien 'autoexec.bat' und 'vmlinux.gz' liegen.


    === USB-Stick partitionieren ===
    Am Besten Sie starten die DM800 zunächst ohne USB-Stick und stecken diesen erst an, wenn die DM800 gebootet hat. Das reduziert die Gefahr, dass ein Programm in der DM800 das Löschen des USB-Sticks blockiert.
    Falls Sie auch eine USB-Festplatte oder andere USB-Sticks haben, diese bitte vorerst nicht anstöpseln: Das reduziert die Gefahr, dass Sie die falsche Platte löschen. Für eine Platte am internen oder externen eSATA-Anschluss der DM800 besteht hingegen keine Verwechselungsgefahr, dazu gleich mehr.


    Nach dem Anstöpseln des Sticks müssen wir nachschauen, ob er eingebunden wurde:
    Geben Sie dazu an der shell '/dev/scsi/' ein und drücken Sie ganz oft die TAB-Taste. Die Shell ergänzt die Eingabe mit dem was geht:


    Es gibt drei Möglichkeiten:
    Möglichkeit1:

    Code
    /dev/scsi/host0/bus0/target0/lun0/disc

    ==> Der Stick wurde erkannt, ist aber leer (unpartitioniert). Sie können also sofort mit dem Partitionieren beginnen.


    Möglichkeit2:

    Code
    /dev/scsi/host0/bus0/target0/lun0/
         disc  part1  [part2 ...]

    ==> Der Stick wurde erkannt, enthält aber Partitionen. Es kann sein, dass Linux eine Partition gemountet hat, dann müssen wir sie evtl. umounten (wird später erklärt).


    Möglichkeit3:

    Code
    /dev/scsi/

    ==> Der Stick wurde nicht erkannt! In dem DM800-Image, welches Sie gebootet haben, ist wohl im Kernel der USB-Stick-Support nicht aktiviert. Ist aber nicht schlimm, die Treiber sind da, wir müssen sie nur kurz laden:

    Code
    modprobe usb-storage
       modprobe st .... <-- Mist, wie hieß der Befehl noch. Muss nochmal nachschauen.


    Danach können Sie nochmal probieren, ob der USB-Stick unter /dev/scsi/host... vorhanden ist.
    Hinweis: Falls Sie den Stick zwischenzeitlich an den anderen USB-Port anstöpseln oder mal einen USB-Hub zwischenschalten, dann landet der USB-Stick danach unter /dev/scst/host1/.. usw.
    [/code]


    Schauen wir nun nach, ob und welche Partitionen der Stick hat (Vielleicht passen die ja schon):

    Code
    fdisk -l /dev/host0/bus0/target0/lun0/

    Wir brauchen:
    1. Eine Partition FAT16 (Auch bei mehreren Images nur eine FAT-Partition, es muss die erste sein und vermutlich eine Primäre Partition sein. Größe rund mind. 20-40MByte, größer geht natürlich auch).
    2. Dann eine oder mehrere Partitionen mit ext3 mit je mind. 60MB für die root (im flash stehen auch exakt 60MB zur Verfügung). Wenn mehrere Images auf den Stick sollen, benötigen wir für jedes Image eine ext3-Partition.


    Falls bereits Partitionen auf dem Stick sind und wir diese nicht beibehalten wollen, müssen wir nachgucken, ob die nicht bereits gemountet sind:

    Code
    mount

    Halten Sie dort Ausschau nach '/dev/scsi/host0/bus0/target0/lun0/part1/', '.../part2', '.../part3' etc.
    Falls so ein Eintrag auftauscht, dann beim umaount-Befehl den mountpoint eingeben, bspw.:

    Code
    umount /media/usb/


    So, nachdem der Stick nun eingebunden ist, aber keine Mountpoints existieren, können wir mit dem Partitionieren beginnen:


    Starten Sie fdisk mit Angabe der Disc, danach geht's interaktiv weiter:

    Code
    fdisk /dev/scsi/host0/bus0/target0/lun0/disc


    Mit 'm' erhalten Sie eine Liste der Befehle.
    Die wichtigsten:
    'p' listet die Partitionstabelle
    'd 1' löscht die erste Partition, 'd 2' die zweite usw.
    'a' ("add") fügt eine neue Partition hinzu (er frägt dann nach, was und wo)
    'w' schreibt am Ende die Tabelle zurück (d.h. ohne Schreiben ist nix passiert)
    'o' löscht alle Partitionen


    Legen Sie also eine (primäre) FAT16 (Partitionstyp=6) mit ca. 80MB an und dann eine oder mehrere EXT3 mit je ca. 64MB.


    So, ich muss jetzt wieder unterbrchen....
    grx

  • Hi,


    mal eine andere Idee. Jetzt sammeln wir aus der Bekanntschaft noch die "alten" 64-256MB USB-Sticks und wechseln das Image nicht mehr per Bootmenü sondern indem wir den Stick austauschen. Ganz neue Perspektiven :)



    romeo-golf

  • ja das scriot /media/ba/bin/ba*.py (mpripimage.py geht auch aus dem Multiboot) kann man auch direkt verwenden um mit dump ein nfi file in eindirectory auszupacken


    wenn das die root vom ext3 filesystem des USB sticks ist und du das FAT wie schon beschrieben von hand befüllst dann geht das ganze booten - ist halt nur ein image, aber keine grosse hexerei.


    Insofern hat romeo-golf recht das man dafür auch leicht ein how-to schreiben kann - im Multiboot thread steht mit dem von hand leichtgemacht am anfang ja auch nichts anderes (sogar für 3 Images weil man 4 primary partitionen pro device haben kann, du brauchst dann nur im autorun.bat den root= parameter verwenden um die jeweilige Partition anzugeben)


    Insofern kannst du das auch als basis nehmen, wobei dort beschrieben wie man ein copy vom Flash auf den stick macht, statt direkt ein nfi file auszupacken, aber da habt Ihr ja schon rausgefunden wie es geht.


    Na dann testet mal schön, thowi hat eh erst in einer Woche wieder Zeit.


    LG
    gutemine

    3 Mal editiert, zuletzt von gutemine ()

  • Hallo Gutemine,
    du hast recht, die infos stehen in den threads. Aber ihr macht das auch schon seit 2006 (mit der 7025)!
    Stell Dir einen DM800 Frischbesitzer wie mich vor (ohne vorher die 7025 gehabt zu haben), der einfach nur sein Image auf dem USB haben will.
    Das Flash-Image soll (möglichst) unangetastet bleiben aus zwei Gründen:
    - 1. damit, falls Box defekt wird, nichts privates drin ist
    - 2. damit nach dem rumprobieren mit anderen Images einfach wieder der "Haupt-USB-Stick" mit den programmierten Timer u. Senderliste usw. angesteckt werden kann und alles garantiert wieder funzt.


    Ich habe geschlagene 3 Tage gebraucht (mit je 10h oder so), nur um herauszufinden, dass ich lediglich auf dem Stick 1 FAT und N ext3 Partitionen anlegen muss und diese den Kernels (vmlinux1.gz - vmlinux9.gz) als parameter in den autorun0-9.bat übergeben muß?!?!?!?!


    Ich werde jetzt mal schauen, ob ich in der gemini-wiki ein kleines howto anlegen ''darf'', um anderen diese Zeit zu ersparen.


    Eine Frage hätt' ich noch an Dich/Thowie:
    Ist im Multiboot bereits ein Boot-Auswahlmenu drin, das man in die FAT-Partition des USB-Stick legen kann und über die Autorrun einbinden kann, und das mir dann eine Auswahl der zu startenden Kernel/Root-Kombis anbietet?


    grx
    kddh

  • na ja wie die autorun funktioniert steht aber am Anfang dieses Threads.


    Egal, hast du halt was dabei gelernt :)


    Und ja wenn alles vom stick kommt ist es natürlich schöner.


    Und ja Mutliboot hat auch einen Bootmanager den man aber erst extra im Plugin enabeln muss.


    Wobei es kein echter bootmanager ist, weil er erstmals das letzte image bootet bis erstartet, wenn du dann ein anderes image auswählst muss er die box rebooten damit das aktiv wird (also längere bootzeit), weil er ja nicht wie Barry Allen mit chroot weiter booten kann.


    Und warum ist das so ?


    Nun weil du damit ein bootmanager läuft ja Treiber brauchst (Framebuffer fürs display, Fernbedienung, LCD,...) und damit die laufen sie ja aus einem image oder dem Flash stammen müssen - womit du wenn du dann anderes image auswählst dessen Treiber nicht mehr laden kannst (na, ja theoretisch sind die Treiber auch unloadable - viel spass beim rausfinden warum es trotzdem so nicht klappt)


    Und im endeffekt schreibt der bootmanager auch nur ein neues autorun.bat und rebootet, was eben auch von hand/plugin/multiboot.sh passiert.


    Und ich helfe gerne auch wenn jemand sein eigenes Multiboot oder ganz was anders machen will - ist auch nicht so lustig wenn man da fast ein Monopol hat und sich um jeden Blödsinn der auftritt selber kümmern muss, immer wieder erklären warum manche sachen halt nicht oder nur anders gehen,...


    LG
    gutemine

    3 Mal editiert, zuletzt von gutemine ()

  • Ich habe jetzt die Version 4.5.8 auf der ersten seite ausgetauscht, die macht jetzt auch bei einem ba.sh boot imagename ein cp /media/ba/imagename/boot/* /media/usb so wie es scheinbar von hand funktioniert. Bitte ausprobieren und berichten ob damit dann die images auch bootbar sind und dabei der kernel von /media/usb verwendet wird - wenn nicht bitte checken ob das autorunb.bat funktioniert, und natürlich nicht vergessen im bios entsprechend einstellen das als alternative boot source usb und autourn.bat verwendet werden sollen.


    LG
    gutemine

    Einmal editiert, zuletzt von gutemine ()

  • Zitat

    Originally posted by gutemine
    ..... im bios entsprechend einstellen das als alternative boot source cf und autourn.bat verwendet werden sollen.


    LG
    gutemine


    hoffe Du meinst ... alternative boot source usb


    komme erst morgen dazu ... Bericht folgt :winking_face:

    Man muss das Unmögliche versuchen, um das Mögliche zu erreichen Hermann Hesse (1877-1962).

  • ja natürlich, war nur macht der gewohnheit.


    PS: Wenn wir es bis zum Wochenende hinkriegen das es mit BA funktioniert dann macht thowi auch ein Multiboot 8.74 für die 800er und Ihr habt mehr zum spielen

  • ... Ich habe folgends problem :


    wenn ich das ba installiert habe und dann neu starte bekomme ich kein ba bootlogo und damit auch keine Auswahl !!
    Setzte ich den Bootmanager von ba auf enable (ist ja disable, weil ww gefunden) dann bekomme ich wieder das ba bootlogo und auswahl ...



    Wenn ich ba via telnet einstelle und dann via /flash/vmlinux.gz starte
    kein bootlogo von ba, ba selber ist aber Funktionstüchtig mache dann ein:
    ba.sh boot ...
    Starte im flash und wieder kein ba bootlogo ...


    starte ich via /usb/vmlinux.gz
    kein ba bootlogo und auch kein ba mehr .... (mit mount sehe ich das kein usb und kein ba in media gemounted wird)



    Was noch interessant ist, ist das immer das vmlinux.gz aus dem flash genommen wird (sehe ich ja am bootlogo ..) egal wie starte ... (habe sogar aus /media/ba/ba/image/boot alles haendisch kopiert)


    Habe jetzt mal mit usb/vmlinux.gz gestartet und dann das ba nooch mal installiert und dann sagt ba auch das kein stick mehr zur verfuegung steht und das ba auf die hdd installiert wird....geht auch nicht .....




    PS. ... zur auswahl des Stick beim Booten ... 4 x kurz auf den button drueken ..


    primary 1
    primary2
    alternative 1
    altnative2


    also vier mal :winking_face:

    Man muss das Unmögliche versuchen, um das Mögliche zu erreichen Hermann Hesse (1877-1962).

    Einmal editiert, zuletzt von dreamedge ()

  • wenn BA eine Wally West config mit FAT vorfindet wird der Bootmanager auch disabelt, geht nicht anders, weil damit der Bootmanager läuft müsstest du wieder die Treiber (vom Flash) laden, womit das FAT booten keinen Sinn mehr machen würde - sobald du einen Kernel und Treiber geladen hast kannst du nur mehr durch reboot einen anderen starten - so wie Multiboot das macht, was aber nicht wirklich sinvoll ist weswegen keiner dort den Bootmanager verwendet.


    Daher kann man in dem Fall ein anderes image zum booten nur auswählen im Plugin oder mit ba.sh boot imagename (das wird ja auch vom Plugin aufgerufen)


    Und solange BA die FAT nicht ordentlich nimmt kann es auch nicht funktionieren. Probier nochmals nach der WW installation die 48MB FAT Partition am PC formatieren und dann schauen ob mit manuellem copy drauf der vmlinux von usb genommen wird (also FAT booten funktioniert). Erst dann BA drüber installieren, image auspacken und ba.sh boot imagename machen und schauen ob dann auch vmlinux von usb genommen wird.


    Im Prinzip gehts nur so raus zu finden an welchem schritt es hakt.


    LG
    gutemine

    Einmal editiert, zuletzt von gutemine ()

  • das erste stueck klappt ja ....ww -> dann haendisch kopieren ....booten via usb/vmlinux ..



    Habe jetzt das ba installiert und partion und alles sieht prima aus ...


    dann ba.sh boot image ..


    reboot ...


    Er bootet zwar via /usb/vmlinux.gz, ist aber das flash image und nicht das andere image ...(das versteht ich nicht)....



    Was mir auf faelt ist das es kein ba mehr gibt und das im mount es so aussieht:


    root@dm800:~# mount
    /dev/root on / type jffs2 (rw,noatime)
    none on /dev type devfs (rw)
    /proc on /proc type proc (rw,nodiratime)
    sysfs on /sys type sysfs (rw)
    /dev/ide/host0/bus0/target0/lun0/part1 on /media/hdd type ext3 (rw)
    devpts on /dev/pts type devpts (rw)
    usbdevfs on /proc/bus/usb type usbfs (rw)
    /dev/mtdblock/2 on /boot type jffs2 (ro,noatime)
    tmpfs on /var type tmpfs (rw)
    tmpfs on /tmp type tmpfs (rw)



    Es gibt jetzt auch kein /dev/scsi/host0/..... mehr....


    Bootet ich wieder neu mit /flash/vmlinux.gz ist alles wieder gut ..


    so sieht das mount dann wieder aus:


    /dev/root on / type jffs2 (rw,noatime)
    none on /dev type devfs (rw)
    /proc on /proc type proc (rw,nodiratime)
    sysfs on /sys type sysfs (rw)
    /dev/scsi/host0/bus0/target0/lun0/part1 on /media/usb type vfat (rw,nodiratime,fmask=0022,dmask=0022,codepage=cp437,iocharset=iso8859-1)
    /dev/scsi/host0/bus0/target0/lun0/part2 on /media/ba type ext3 (rw)
    devpts on /dev/pts type devpts (rw)
    usbdevfs on /proc/bus/usb type usbfs (rw)
    /dev/mtdblock/2 on /boot type jffs2 (ro,noatime)
    tmpfs on /var type tmpfs (rw)
    tmpfs on /tmp type tmpfs (rw)
    /dev/ide/host0/bus0/target0/lun0/part1 on /media/hdd type ext3 (rw)
    automount(pid380) on /autofs type autofs (rw)


    und /dev/scsi ist auch wieder da ,,

    Man muss das Unmögliche versuchen, um das Mögliche zu erreichen Hermann Hesse (1877-1962).

    2 Mal editiert, zuletzt von dreamedge ()

  • das andere image ist nicht zufällig das Gemini 3.6 - weil das hat defaultmäßig keinen FAT support im Linux Kernel und kann daher nicht mit WW booten ?!

    Einmal editiert, zuletzt von gutemine ()

  • nee newnigma2 ... komisch ...


    Oozoon im flash (zur Info)


    selbst wenn ich im flash boote und aus /media/ba/ba/image/boot händisch kopiere und dann boote via usb wird das "flashimage" genommen ...


    Sieht man ja an den bootlogos ...



    probiere jetzt mal das LT ....


    Edit: startet trotzdem wieder mit oozoon ... aber zu mindestens der stick wird richtig angezeigt .Das heist dann aber auch das das newnigma es nicht im kernal hat ..


    Edit2 ...
    Was ich nicht verstehe ist folgendes:
    Wenn ich mir das /media/usb anschau (gebootet im flash) dann passt alles ... die Bootlogo.jpg sind vom anderen (LT oder newnigma) .... Boote ich dann via /usb/ dann kommt aber das logo vom flashimage (oozoon) ... Da mueste doch jetzt eigentlich das von Lt oder newnigma erscheinen ... ?????



    Edit3


    Wenn ich via usb boote, verhält sich das ba jetzt anders ob ich mit der gui arbeite oder mit dem cmd ....


    Lass ich mit die installierten image via cmd listen alles ok ...


    Via gui bleibt es leer ...


    Das selbe gilt für extract im cmd ok
    in der gui werden sie nicht angezeigt ..

    Man muss das Unmögliche versuchen, um das Mögliche zu erreichen Hermann Hesse (1877-1962).

    6 Mal editiert, zuletzt von dreamedge ()

  • lass dich nicht immer von den bootlogos verwirren, der secondstage loader liest die sehr früh aus, und da kann es schon sein das er erstmals den Flash verwendet, erst wenn enigma2 startet wird es interessant welche hintergrund logos er da anzeigt.


    Im allgemeinen sind die Bootlogos ungeeignet um zu erkennen in welchem image du bist, einzig cat /.bainfo sagt dir wo deine root liegt. Nur wenn es kein /.bainfo file gibt bist du wirklich im Flash. Und mit ba.sh info kann man auch nachschauen was jetzt Sache ist.


    Und die /media/ba und /media/cf werden im bainit gemountet, und dann mit bind mount dem image zur verfügung gestellt das mit chroot weiter bootet.


    Daher die entsprechenden mount /media/ba und mount /media/usb im telnet eingeben um zu sehen ob sie funktionieren, welbst wenn der stick nach booten nicht da ist (ich schreibe ein nachmounten ins /etc/init.d/bootup, aber kann sein das dort noch /media/cf steht, das sind sachen die erst angepasst werden müssen wenn das händische nachmounten funktioniert).


    poste mal wenn du angeblich vom image gebootet bist den output von df -h oder mount, wenn da /media/usb bzw. /media/ba 2x drinnen ist dann ist erst alles in ordnung


    Und wenn das BA Plugin die shell nicht ausführen kann, dann kann das auch andere ursachen haben, im moment ist es gescheiter alles im telnet zu machen, weil da kannst du mir auch den output posten


    LG
    gutemine

    2 Mal editiert, zuletzt von gutemine ()

  • Hallo dreamedge,


    Steck mal den USB-Stick an den PC und betrachte Dir die 'autorun.bat' (Öffne sie am besten mit Wordpad, dann stimmen die Zeilenumbrüche).


    Dort wird in einer Zeile der Linux-Kernel geladen, und die müsste so aussehen:

    Code
    /usb/vmlinux.gz root=/dev/scsi/host0/bus0/target0/lun0/part2/ rootfs=ext3 rw rootdelay=10


    Ich vermute, dass der Parqameter root=... entweder fehlt oder noch auf die cf-Karte zeigt.
    Wenn kein root=... angegeben wird, dann verwendet der Kernel den defaultwert, und der zeigt auf den Flash (/dev/mtdblock2 war das glaube ich).


    Deshalb lädt er zwar den Kernel vom USB, aber das Image (die root) vom Flash.


    edit: PS: Hat sich grad mit gutemines antwort überschnitten...


    GuteMine
    Nur zum Verständnis:
    Barry Allen wechselt doch per chroot in ein anderes Image(?).
    Der Kernel und die erste root, die bei ba bootet, liegen die im Flash oder auf dem USB?


    ps: was heißt eigentlich 'LG' ?


    LG
    kddh

  • nein, Barry Allen mit Wally West verwendet weiterhin den chroot ansatz um das image zu starten. Damit wird dann zwar der kernel des images von usb, aber die shell vom flash verwendet um sofort ins image subdirectory auf dem stick zu wechseln.


    Du musst also NICHT den root= Parameter im autorun.bat verwenden (würde auch nicht funktionieren, weil bei BA die Images nicht im root des filesystems liegen sondern im jeweiligen image subdirectory).


    Erst wenn thowi Zeit/Lust hat multiboot für die 800er anzupassen wird das ein Thema - und die roots werden im autoun.bat mit den raw device namen angegeben, insofern ist /dev/scsi eigentlich auch falsch :)


    LG=Liebe Grüße
    gutemine

    3 Mal editiert, zuletzt von gutemine ()

  • Hallo Gutemine,
    die Angabe "root=/dev/scsi/host0/lun0/part2" funktioniert garantiert, wenn man die root vom USB-Stick booten will (hatte das selbst so gemacht, siehe oben).


    Zum Chroot:
    Ah, jetzt verstehe ich den Unterschied zum chroot der DM7000:
    Kopiert ba.sh beim Imagewechsel also immer den Kernel des jeweilig ausgewählten Images nach /media/usb (also die 1.FAT-Partition des USB-Sticks)?


    OK,
    lg & grx
    kddh

  • LG=Liebe Grüße, sagte ich doch schon.


    Und nein, schau dir das go script vom Flashwizzard mal genauer an das auf der 7000er meistens verwendet wird.


    Die 7000er kann vom loader her kein booten von FAT, daher geht das kernel kopieren gar nicht, die bootet immer nur den Flash kernel so wie Barry Allen und dann mit chroot das jeweilige image.


    Nur die 7020, die 7025 und jetzt eben die 800er haben einen secondstage loader der von FAT booten kann.


    Wenn du Wally West verwendest kopiert ba.sh boot aber den jeweiligen Kernel und Bootlogos in die FAT Partition und schreibt ein autorun das dann zwar vom Flash bootet, dort wird aber sofort vom Kernel der von FAT stammte das bainit statt dem normalen init binary aufgerufen, und dieses macht chroot ins jeweilige subdirectory.


    Ich habe im DMM board angeregt auch einen rootdir= paramter in der autoun.bat zu unterstützen, wurde zwar für gut befunden, aber nie implementiert (ich könnte das zwar auch, bzw. habs eh schon ausprobiert, aber so früh im Bootvorgang möchte ich nicht die verantwortung haben wenn was schiefgeht)


    PS: wenn /dev/scsi... auch geht OK, wieder was gelernt, Multiboot verwendet /dev/sda* und bei * die Parttitionsnummer am USB stick - probier evt mal aus ob das auf der 800er auch so geht, dann hat thowi weniger zu tun.


    LG
    gutemine

    2 Mal editiert, zuletzt von gutemine ()

  • Hallo Gutemine.


    Ich hatte das mit dem /dev/sda/ schon früher mal gelesen und deshalb zu Beginn meiner Versuche erfolglos probiert.
    Bis ich gelesen habe, dass es beide Varianten gibt.
    Und bei der DM800 landet der USB-Stick halt unter '/dev/scsi/host0/lun0/..'.


    Vielleicht macht die DM7025 bei cf-Karte /dev/sda/..
    Dann wäre das der Punkt, wo multiboot.sh geändert werden müßte (bzw. die autorun1-9.bat's)


    PS: Ich kann mir auch vorstellen, dass es DM800-Images mit einem Kernel gibt, der den USB unter /dev/sda/ anlegt. Ich hatte auch mal gelesen, welches Teil dafür verantwortlich ist...ich vermute mal, dass es der USB-Treiber ist.


    grx
    kddh


    Nachtrag:
    Habe mir gerade im multiboot.rar die 'autorunX.bat' angeschaut, und die sieht so aus:

    Code
    /cf/bootlogo.elf
    /cf/vmlinux.gz console=ttys0,115200 root=/dev/xxxx rw rootdelay=zz


    Nachtrag2:
    Habe gerade die multiboot.sh angeschaut, und dort wird wirklich sdaX verwendet:

    Code
    sed -ie s!xxxx!"sda$PART1"!g $INSTALLDIR/autorun.bat$PART



    Ich schätze, er ersetzt xxxx durch sda2/sda3/...