• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

Anfängerfrage zur Konsole

Vbxler

Newbie
Hallo an Alle!

Ich bin ein absoluter Linuxanfänger und beschäftige mich derzeit mit
einem BeaglboneBlack und verstehe eine Konsoleneingabe nicht:

Wenn ich folgendes schreibe funktioniert das:
Code:
root@beaglebone:~# export slots=/sys/devices/bone_capemgr.9/slots 
root@beaglebone:~# cd /lib/firmware/
root@beaglebone:/lib/firmware# echo GPIO-POOL > $slots 
root@beaglebone:/lib/firmware#

Wennich das schreibe geht es nicht
Code:
root@beaglebone:~# echo /lib/firmware/GPIO-POOL > /sys/devices/bone_capemgr.9/slots 
bash: echo: write error: No such file or directory

Kann mir vielleicht jemand kurz sagen warum die zweite Variant nicht geht,
bzw. wie ich das eingeben müsste, dass es geht.

Danke


Vbxler
 
A

Anonymous

Gast
Erwarte hier keine logische Antwort, alles unterhalb von /sys sind mehr oder weniger Schnittstellen zu Treibern, hier fummelt man im richtigen Linux manuell selten rum, eventuell ließt man da mal ab und zu was aus, aber auch ehr selten. Änderungen machen auch nur temporär Sinn, nach dem booten währe der Eintrag sowieso wieder weg, oder musste neu geschrieben werden. Aber viele kleine Programme und Tools beziehen ihre Weißheiten durchaus aus diesem Verzeichnis.
In diese Schnittstellen kannst du wenn überhaupt (viele sind nur lesbar) nur jeweils etwas reinschreiben, was im Treiber auch definiert ist, oder einen im Treiber definierten Verweis auf etwas was mit dem Treiber zusammenarbeitet, zB wie es bei dir aussieht einen Verweis auf eine Datei die Firmware für diesen Treiber beinhaltet.

Ich kenne das BeaglboneBlack Ding nicht, vermute aber mal, dass du dort an irgendwelchen IO-Schnittstellen bzw der Konfiguration dafür rum-doktorst.

"/sys/devices/bone_capemgr.9/slots" scheint die Schnittstelle deiner Wahl zu sein. Im ersten Konsolauszug schreibst du in diese Schnittstelle das Wort "GPIO-POOL" hinein. Dieses könnte zB ein vom Treiber verstandener Hinweis auf eine Datei oder Verzeichnis /lib/firmware/GPIO_POOL?????? sein, mit der der Treiber etwas anfangen kann. Also zB eine Firmwaredatei.

im zweitem Konsolauzug versucht du in die selbe Schnittstelle das Wort "/lib/firmware/GPIO-POOL" zu schreiben. Wenn der Treiber jetzt mit diesem Eintrag das selbe machen, oder genauso interpretieren will wie im ersten Konsolausdruck, dann müssen zwangläufig irgendwelche Fehler aufkommen.

Die aufgekommene Fehlermeldung selbst ist so nicht ohne weiteres interpretierbar, bedeutet nur irgendwo, irgendwas sollte geschrieben werden, aber das Verzeichnis oder die Datei war nicht aufzufinden. Welche Datei genau ?

Versuche mal
Code:
echo GPIO-POOL > /sys/devices/bone_capemgr.9/slots
ich denke das sollte funktionieren.

robi
 

abgdf

Guru
Vbxler schrieb:
Wenn ich folgendes schreibe funktioniert das:
Code:
root@beaglebone:~# export slots=/sys/devices/bone_capemgr.9/slots 
root@beaglebone:~# cd /lib/firmware/
root@beaglebone:/lib/firmware# echo GPIO-POOL > $slots 
root@beaglebone:/lib/firmware#

Wennich das schreibe geht es nicht
Code:
root@beaglebone:~# echo /lib/firmware/GPIO-POOL > /sys/devices/bone_capemgr.9/slots 
bash: echo: write error: No such file or directory

Kann mir vielleicht jemand kurz sagen warum die zweite Variant nicht geht,
bzw. wie ich das eingeben müsste, dass es geht.
Bei mir geht beides nicht. Ich nehme an, daß bei Dir im ersten Fall die Datei "/sys/devices/bone_capemgr.9/slots" gerade vorhanden war, aber als Du das zweite ausgeführt hast, war sie schon wieder weg.
Man könnte das Verzeichnis erst von Hand erstellen:
Code:
mkdir -p /sys/devices/bone_capemgr.9
echo /lib/firmware/GPIO-POOL > /sys/devices/bone_capemgr.9/slots
Aber wie robi schon sagte, an "/sys/devices" sollte man nur 'rumfummeln, wenn man weiß, was man tut. Ich mußte das z.B. (innerhalb jetzt schon einiger Jahre mit Linux) noch nie.

Willst Du eigentlich das Wort "/lib/firmware/GPIO-POOL" schreiben (das wäre echo) oder den Inhalt der Datei "/lib/firmware/GPIO-POOL" (das wäre cat)?
 
OP
V

Vbxler

Newbie
Ich muss dem Board mitteilen, wie sich die einzelen Pins verhalten müssen.
Diese Festlegung liegt in 'GPIO-POOL', anschliessend muss aber diese Festlegung dem System
mitgeteilt werden, dies erfolgt durch den Eintrag in slots.
Danach verhalten sich die Pins des Boards nach den neuen Regeln.

Ich habe mittlerweile festgestellt, dass ich den Pfad zur Firmware nicht angeben muss, sondern es so eingeben kann:
Code:
echo GPIO-POOL > /sys/device/bone_capemgr.*/slots
Das funktioniert in der Konsole.

Ich werde als nächste versuchen, das in eine Scriptdatei zu geben und diesen beim OS-Start auszuführen.
Muss aber erst suchen, wie man das unter Linux bewerkstelligt.
 

abgdf

Guru
Vbxler schrieb:
Code:
echo GPIO-POOL > /sys/device/bone_capemgr.*/slots
Das funktioniert in der Konsole.
:???: Hmm, ich hab' ehrlich gesagt keine Ahnung, was das tut:
Code:
echo GPIO-POOL > /sys/device/bone_capemgr.*/slots
dürfte expandiert werden zu
Code:
echo GPIO-POOL >  /sys/device/bone_capemgr./slots /sys/device/bone_capemgr.a/slots /sys/device/bone_capemgr.b/slots /sys/device/bone_capemgr.abcde/slots /bone_capemgr.weißderKuckuck/slots ...., usw.
Wenn das das tut, was Du möchtest, wäre das reiner Zufall. So unkontrolliert sollte man die bash nicht einsetzen. Sorry.
 
A

Anonymous

Gast
abgdf schrieb:
Wenn das das tut, was Du möchtest, wäre das reiner Zufall. So unkontrolliert sollte man die bash nicht einsetzen. Sorry.
Ich habe nicht umsonst geschrieben
robi schrieb:
Erwarte hier keine logische Antwort, alles unterhalb von /sys sind mehr oder weniger Schnittstellen zu Treibern
Das geht schon, da das dort keine wirklichen Dateien sind und /sys ja auch kein wirklich richtiges Dateisystem, wahrscheinlich ist dort nur ein Verzeichnis das getroffen wird.
Der eine hat eben irgendwas auf SLOT8 gesteckt, der andere (oder ein anderes Boardlayout) hat das selbe eben auf SLOT9 gesteckt, der dritte hätte vielleicht einen Slot7. In allen drei Fällen würde der Befehl einwandfrei funktionieren. Wenn natürlich einer irgendwas auf Slot8 und irgendwas auf Slot9 gesteckt hat, muss er im Forum nachfragen weil der Befehl dann nicht mehr funktioniert und die Fehlermeldung kommt, "slot ist kein Verzeichnis" ;)

robi
 
Oben