RPI3: Wird das "programmiere USB Boot" automatisch wieder gelöscht?

  • Hallo Leute,


    Wenn ich in der Config.txt eintrage, das der RPI3 in Zukunft von

    USB starten soll, wird der Eintrag nach dem Reboot und programmieren wieder

    automatisch herausgelöscht, oder muss ich das selbst machen?

    (program_usb_boot_mode=1)


    Könnte man das in der Bash.rc mittels Bash auch automatisieren?


    Hintergrund: Ich will nicht unabsichtlich alle RPI3 in "USB Bootable"

    umwandelt, da der Bootvorgang ja ein bischen länger dauert.


    mfG

    Ponos

  • Moin,

    soweit ich es in Erinnerung habe läßt sich es sich nicht mehr

    rückgängig machen.


    Quote

    Before a Raspberry Pi 3 will boot from a mass storage device, it needs to be booted from an SD card with a config option to enable USB boot mode. This will set a bit in the OTP (One Time Programmable) memory in the Raspberry Pi SoC that will enable booting from a USB mass storage device. Once this bit has been set, the SD card is no longer required. Note that any change you make to the OTP is permanent and cannot be undone.


    Quelle:https://www.raspberrypi.org/do…pberrypi/bootmodes/msd.md

  • Rückgängig lässt sich das nicht mehr machen. Aber wenn Du eine SD Karte einlegst wird über die gebootet. Der Bootstart ist dann schneller - ob dann der gesamte Boot schneller fertig sein wird wage ich zu bezweifeln.

    Sichere Deine Raspbberry regelmäßig mit raspiBackup . Sicher ist sicher ;-)


    Darum gebe ich keinen Support per PN


    "Really, I'm not out to destroy Microsoft. That will just be a completely unintentional side effect." Linus Benedict Torvalds, 28.9.2003


  • Das der Wechsel des "Bootmodes" nicht mehr rückgängig gemacht werden kann ist mir klar.

    Aber wie kann ich die Zeile "program_usb_boot_mode=1" aus der config.txt wieder entfernen.

    Mir geht es darum, wenn ich aus Versehen die Karte in einen anderen RPI3 stecke, wird Dieser

    automatisch "umprogrammiert".

    Das möchte ich vermeiden.

    Würde gerne ein kleines Bash script bei Starten laden, welches prüft, ob die Zeile

    "program_usb_boot_mode=1" in der config.txt vorhanden ist.

    Wenn ja, soll Diese per Bash script entfernt werden.


    Leider bin ich noch nicht so "Bash Fit".

  • Dann war Deine Frage etwas unpräzise ;)


    Du brauchst dazu kein bash Script. Es gibt den sed Befehl mit dem kann man Dateiinhalte modifizieren. Dazu brauchst Du noch einen einfachen regulären Ausdruck.


    Wenn ich z.B. in

    Code
    Das ist ein einfacher Text den ich aendern will
    und das die naechste Zeile

    das Wort einfacher loeschen will ist der regulaere Ausdruck

    Code
    sed 's/ ?einfacher//g'

    Bedeutet: Beliebige fuehrendende Leerzeichen ( ?) gefolgt von dem Text einfacher werden durch nichts ersetzt (also geloescht) und das in allen Zeilen (g). Details zu sed siehe man sed.

    Sichere Deine Raspbberry regelmäßig mit raspiBackup . Sicher ist sicher ;-)


    Darum gebe ich keinen Support per PN


    "Really, I'm not out to destroy Microsoft. That will just be a completely unintentional side effect." Linus Benedict Torvalds, 28.9.2003


  • Aber so wird das nicht aus der Datei gelöscht framp sondern nur eine Ausgabe erzeugt in der einfach rausgefiltert wird ;)

    Die Option -i bearbeitet direkt die Datei, und g kann man dann auch weg lassen ;)

    Code
    root@raspberrypi:~# cat /boot/config.txt
    dtparam=audio=on
    max_usb_current=1
    program_usb_boot_mode=1
    root@raspberrypi:~# sed -i 's/program_usb_boot_mode=1//' /boot/config.txt
    root@raspberrypi:~# cat /boot/config.txt
    dtparam=audio=on
    max_usb_current=1
    root@raspberrypi:~#

    Es ginge aber auch sed -i '/program_usb_boot_mode=1/d' /boot/config.txt das wär sogar schöner weil dann keine Leerzeile entstünde


    Hinzu kommt das man "Leerzeichen" am Anfang der Zeile im regexp nicht angeben muss, es sei denn es gibt mehrere mögliche Treffer dann setzt man aber ein ^ mit in die regexp um wirklich nur von Beginn des Zeilenanfangs zu beachten.


    Ponos: Für dich bedeutet das allerdings: Die config.txt wird viel früher verarbeitet als irgendein bash Script. Siehe dazu Was genau machen diese Einstellungen in der config.txt

    Es wäre also einfacher wenn du das ignorierst bzw zwar zB via /etc/rc.local entfernst aber nicht wunderst... Zum einen funktioniert program_usb_boot_mode=1 eh nur mit dem Pi3B (bzw dessen SoC), zum anderen muss der USB Stick bootable sein ansonsten spricht er weiterhin die SD Karte an.



    PS: Über program_usb_boot_mode=1 wird aber auch Network-Boot aktiviert

  • meigrafd ich habe mit Absicht nicht die volle und richtige Lösung beschrieben:shy:


    Du kennst doch sicherlich Konfuzius und seine Aussage zu den Fischen ;)

    Sichere Deine Raspbberry regelmäßig mit raspiBackup . Sicher ist sicher ;-)


    Darum gebe ich keinen Support per PN


    "Really, I'm not out to destroy Microsoft. That will just be a completely unintentional side effect." Linus Benedict Torvalds, 28.9.2003