Wieder einmal USB-Stick-Boot

  • Ich will mal beschreiben, wie ich es geschafft habe, LinVDR bootfähig auf einen USB-Stick zu bekommen. Es war nicht allzu einfach, einmal konnte ich mit dem einen Rechner booten, ein anderes Mal nur mit einem anderen. Hab etwas experimentieren müssen, aber so ging es dann schließlich.


    Dieser Thread half dabei ein gewaltiges Stück weiter:
    http://www.vdr-portal.de/board/thread.php?threadid=26235


    - Einen passenden Kernel kompilieren. Passend heißt in diesem Fall, dass man die Teile, die zum Betrieb des USB-Sticks benötigt werden, fest einkompiliert werden müssen. Das sind "usb-storage" und außerdem natürlich die USB-Hostcontroller-Geschichten. Man braucht dann KEINE initrd mehr!


    - Syslinux herunterladen. Man braucht aus dem Paket das Tool "mkdiskimage" und "syslinux" selbst auch noch einmal.


    - Stick anstecken. Nichts mouten. Man sollte natürlich sicher sein, dass nichts Wichtiges mehr auf dem Stick ist, da die nachfolgenden Aktionen so ziemlich alles vernichten werden. Mit


    ./mkdiskimage -4 /dev/sda 4 64 32


    eine Partition auf dem Stick anlegen. Das Tool bereitet außerdem den MBR so auf, dass BIOSse von ihm, wie von einer normalen Festplatte booten können. Wer sich in die Tiefen der Syslinux-Doku begibt, erfährt, dass es eine Menge BIOSse mit Bugs gibt, die einen USB-Stick nur booten können, wenn man ihn wie ein USB-ZIPDrive aussehen lässt. Daher erstellt obiger Befehl die Boot-Partition als Nummer 4 und aktiviert sie. Ist etwas ungewohnt, geht aber und war bei einem meiner PCs (mit buggy BIOS) die einzige Möglichkeit, ihn zum Booten zu bekommen.


    - Jetzt muss man die Partition formatieren:


    mkdosfs /dev/sda4


    - Nun den Bootloader, das eigentliche Syslinux, installieren:


    ./syslinux /dev/sda4


    Das verändert den Bootsektor und kopiert eine Datei "ldlinux.sys" drauf.


    - Um den oben kompilierten Kernel draufzukopieren, mounten wir die Partition:


    mount /dev/sda4 /mnt


    "vmlinuz" kommt nach /mnt


    - Im gleichen Verzeichnis muss eine "syslinux.cfg" erstellt werden, damit der Bootloader beim Start weiß, was er zu machen hat. Inhalt:


    default vmlinuz rw root=/dev/sda5 vga=0x315 rootdelay=7


    Die Optionen kann man den Gegebenheiten anpassen. rootdelay=7 sorgt für 7 Sekunden Verzögerung beim Booten, damit usb-storage Zeit hat, den Stick zu erkennen, bevor der Kernel den Mountversuch mit einer Panic aufgibt.


    - Jetzt kann man die Partition mal umounten und einen Startversuch machen. Wenn alles klappt, wird zwar nur der Kernel geladen (da das Rootdevice noch nicht existiert), aber das ist schon verdammt viel wert. Wenn es aussieht, als würde gar nichts booten, erkennt das BIOS den Stick vielleicht nicht richtig. In diesem Fall (siehe oben) kann man mal probieren, als Bootdevice im BIOS "USB-ZIP" zu wählen. Das half bei einer meiner älteren Krücken.


    - Wenn das geht, kann man den nächsten Schritt wagen, nämlich das Draufkopieren des VDR-Systems. Wer gut aufgepasst hat, dem ist aufgefallen, dass ich oben als Rootdevice "/dev/sda5" gewählt habe. Das ist ein logisches Laufwerk einer erweiterten Partition auf dem Stick. Andere Versuche mit einer zweiten primären Partition sind aus irgendeinem Grund auf einem Testsystem fehlgeschlagen. Nachdem man die Partitionen mittels "fdisk" erstellt hat, formatiert man "/dev/sda5" mit dem Dateisystem seiner Wahl (ext2/3 oder wer mag vielleicht auch xfs), mountet es und kopiert sein System drauf. Die "/etc/fstab" bedarf natürlich der Anpassung des Rootdevices und man muss noch irgendwie sicherstellen, dass nicht allzu häufig Schreibzugriffe auf den Stick erfolgen (mit der Ramdisk und Symlinks arbeiten).


    Der letzte Punkt bedarf noch einiger Experimentierarbeit. Hier ist natürlich jede Idee willkommen. :)

  • Wer zu faul ist, Syslinux runterzuladen, dem habe ich unten mal ein Paket mit den beiden Dateien, der syslinux.cfg und dem mkdosfs, welches ja bei LinVDR ncht dabei ist, angehängt.


    Right... Dann war da nochwas mit einem Kernelpatch, den ich eben gebastelt habe. Und zwar sollte das Rootdevice gemountet werden, SOBALD es verfügbar ist:



    Jetzt wird nur noch maximal "rootdelay" Sekunden gewartet. Wenn das Laufwerk vorher da ist, wird gleich gemountet. Spart ein paar Sekunden. :)

  • hi clocker,
    auch von mir danke für die gute Vorarbeit diesem Thema!


    Zitat

    Original von clocker
    ... und man muss noch irgendwie sicherstellen, dass nicht allzu häufig Schreibzugriffe auf den Stick erfolgen (mit der Ramdisk und Symlinks arbeiten).


    mit meinen doch eher bescheidenen Linux Systemkenntnissen bin ich auch/gerade am letzten Punkt sehr interessiert (nachdem hier im Forum immer wieder über das schnelle Ableben der Flashmedien berichtet wurde). Habe mehr das Booten mit CF-Card vor, doch da trifft der Punkt ja genauso zu.


    + seaman

  • Da ich gerade an einem (Festplatten-)System alle Zugriffe so niedrig wie möglich halten will, um die Platte abschalten zu können, habe ich mich näher mit den "Laptop Mode Tools" befasst:
    http://www.xs4all.nl/~bsamwel/…_mode/tools/packages.html


    Diese tunen das Dateisystem so, dass Schreibzugriffe möglichst lange hinausgezögert werden. Der Read Ahead - Wert wird hochgesetzt, so dass die Platte gleich ganze Dateien liest, anstatt immer nur kleine Stücke.
    Wichtig ist, dass du die Abschaltzeit der Platte auf min. 15 Minuten stellst (geht alles in der Config), da normale Desktop-Platten nicht unbedingt für häufiges An- und Abschalten gemacht sind. An, aus, an, aus, an, aus, an, kaputt...
    Funktioniert ganz gut, aber natürlich muss man trotzdem einige Sachen auf die Ramdisk verlagern, denn geschrieben werden einige Sachen so oder so irgendwann.


    Ich empfehle neben der epg.data auch die Logfiles von smbd und nmbd, dazu die Verzeichnisse /vtx, /var/log, /var/locks und /var/run auf die Ramdisk zu verbannen. Einiges ist schon Standard. Ich habe auch mal /tmp auf die Ramdisk gelegt (wegen des Screenshotgrabbings für VDRAdmin). Scheint gut zu gehen, aber eventuell macht es Probleme, wenn mal irgend ein Programm eine größere temporäre Datei braucht. Da muss noch experimentiert werden.


    Das hat hier schon ausgereicht, um die Platte beim normalen Fernsehen abschalten zu können. Man kann so auch Aufnahmen aus dem Netzwerk gucken, ohne, dass sie anspringt.
    Eventuell ist es noch ratsam, einige Config-Dateien auf die Ramdisk zu verbannen: setup.conf, channels.conf, timers.conf etc.

  • Das booten an sich geht schon mal!
    Ich habe die Partitionen sda1 und sda2 erstellt und unter Kanotix syslinux ausgeführt.Was irgendwie nicht richtig geht! weil dan beim booten Fehler kommen das einige Dateien nicht gefunden werden!


    Wo kriege ich die dateien für sda1 her. Der Anhang hier geht nicht irgendwie sind die Dateien beschädigt!
    Noch eine Frage wo kriege ich eigentlich die vmlinuz für sda1 her?
    Aus dem /boot Ordner von der installation die es mal werden soll?
    Oder brauche ich dafür ein anderen.
    Wie läuft das eigentlich?Das System bootet den kernel von sda1 und danach den von sda2/boot oder kommt auf sda1 schon der entgültige kernel (vmlinuz)?
    Kan man auch den kernel vom kupdate nehmen? zumindest unterstützt er auch usb geräte?

    HauptVDR AMD Goede 1750 Easyvdr 0.06.4
    FF_TT2.3 Skystar2.6c 1x160GB + 1x1TB lautloser Rechner weil er im Keller steht. :D


    2x MediaMVP als Client+VOMPServer-Plugin


    TestVDR AMD Goede 1750 mit TT1.5 Easyvdr 06.*
    Bootet auf einer komischen Weise
    PicoPSU als NT

  • Danke!
    Jetzt bleibt nur noch vmlinuz!
    Woher nehmen!

    HauptVDR AMD Goede 1750 Easyvdr 0.06.4
    FF_TT2.3 Skystar2.6c 1x160GB + 1x1TB lautloser Rechner weil er im Keller steht. :D


    2x MediaMVP als Client+VOMPServer-Plugin


    TestVDR AMD Goede 1750 mit TT1.5 Easyvdr 06.*
    Bootet auf einer komischen Weise
    PicoPSU als NT

  • soweit läuft das booten ja!
    nur ich habe keinen Kernel(vmlinuz)
    es geht nur bis zu der meldung
    can not open root device sda2 or unknow block 0,0
    (primär ext3)
    Ich denke es liegt kernel das er die usb module nicht im kernel hat oder?
    Ich habe dem vom kupdate dr.Seltsam und den trx(powernow) probiert!
    Oder liegt es wo anders dran?
    Kan man irgendwo einen runterladen?

    HauptVDR AMD Goede 1750 Easyvdr 0.06.4
    FF_TT2.3 Skystar2.6c 1x160GB + 1x1TB lautloser Rechner weil er im Keller steht. :D


    2x MediaMVP als Client+VOMPServer-Plugin


    TestVDR AMD Goede 1750 mit TT1.5 Easyvdr 06.*
    Bootet auf einer komischen Weise
    PicoPSU als NT

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!