Forum: PC Hard- und Software Linux: Warum wurden die udev-Regeln verschoben?


von Uhu U. (uhu)


Lesenswert?

Ich amüsiere mich gerade damit, meine VirtualBox VMs wieder zum Laufen 
zu bekommen, speziell den USB-Zugang und wunderte mich, warum bei Mint 
19 in /etc/udev/rules.d gähnende Leere herrscht. Dort die Regeln von 
Mint 17 hinein zu kopieren, bewirkt offenbar nichts - nichts desto 
Trotz sind die Verzeichnisse nach der Installation von Mint 19.2 
vorhanden.

Des Rätsels Lösung: man hat /ect/udev/ nach /lib/udev verschoben. Jetzt 
ist natürlich alles vieeeel besser, als vorher, nur leider funktioniert 
nix mehr…

Welcher Teufel hat die denn geritten?

von Jack V. (jackv)


Lesenswert?

Die hat gar nix geritten. Die nehmen nur Sachen von Anderen her, und 
packen die hübsch ein. Deren Quelle hat’s halt umgestellt, weil die 
aktuelle udev-Version das nun so vorgibt. In den Changelogs solltest du 
informiert worden sein.

von Uhu U. (uhu)


Lesenswert?

Jack V. schrieb:
> Die hat gar nix geritten.

Man kann auch mutwillig bewährte Installationen kaputt machen und diese 
tollen Neuigkeiten dann irgendwo in schier endlosen Textdateien 
verbuddeln…

Das Mindeste wäre ein Hinweis in /etc/udev, wenn man die schon drin 
lässt.

von Bernd K. (prof7bit)


Lesenswert?

Uhu U. schrieb:
> Des Rätsels Lösung: man hat /ect/udev/ nach /lib/udev verschoben. Jetzt
> ist natürlich alles vieeeel besser, als vorher, nur leider funktioniert
> nix mehr…

/lib/udev/rules.d/ gibts doch schon gefühlt ewig, da sind die 
vorinstallierten Defaultregeln drin.

/etc/udev/rules.d/ überschreibt die bei Bedarf und hat höhere Priorität 
falls ein Dateiname gleich ist. So kenne ich das und genau so haben die 
das beabsichtigt. Macht auch absolut Sinn.

Wenn das in Mint plötzlich nicht mehr geht dann haben die wohl irgendwas 
kaputt gepatcht, wäre ja nicht das erste mal daß ne Distribution perfekt 
funktionierenden Upstream-Code kaputt patcht weil sie glauben nach nur 
einem flüchtigen Blick im Vorbeigehen alles besser zu überblicken als 
derjenige der sein Leben damit verbracht hat den betreffenden Code zu 
schreiben.

Ich würde einen Bug aufmachen.

von Uhu U. (uhu)


Lesenswert?

Bernd K. schrieb:
> Macht auch absolut Sinn.

OK. Wie ich jetzt sehe, liegt das Problem wohl eher bei VB: die haben 
/usr/share/virtualbox/VBoxCreateUSBNode.sh nach /usr/lib/virtualbox/ 
verschoben und damit natürlich die alten Regeln kaputt gemacht.

Den Pfad in den alten Regeln gändert, die dann nach /etc/udev/rules.d 
kopiert und schon gehts…

: Bearbeitet durch User
von Bernd K. (prof7bit)


Lesenswert?

Uhu U. schrieb:
> OK. Wie ich jetzt sehe, liegt das Problem wohl eher bei VB: die haben
> /usr/share/virtualbox/VBoxCreateUSBNode.sh nach /usr/lib/virtualbox/
> verschoben und damit natürlich die alten Regeln kaputt gemacht.

Kapier ich nicht. Was soll Virtualbox mit dem Funktionieren oder 
Nichtfunktionieren der udev-Regeln zu tun kaben?

von Uhu U. (uhu)


Lesenswert?

Für USB-Geräte, die an VB durchgereicht werden sollen, muss es 
udev-Regeln geben. Fehlen die, dann kannst du dich auf den Kopf stellen 
- keine VM wird ein USB-Gerät sehen, von exklusiv darauf zugreifen 
können, ganz zu schweigen.

VB benutzt dazu das genannte Skript, das bei mir auf Mint 17 in der 
Regel /etc/udev/rules.d/60-vboxdrv.rules verdrahtet war. Greift die 
Regel daneben, dann funktionierts nicht. Im Log steht nichts davon, man 
kann sich also auf eine längere Suche machen. Und das Internet ist mit 
veralteten Rezepten, sowas zu beheben auch mehr eine Gefahr, als eine 
Hilfe…

: Bearbeitet durch User
von Bernd K. (prof7bit)


Lesenswert?

Uhu U. schrieb:
> VB benutzt dazu das genannte Skript, das bei mir auf Mint 17 in der
> Regel /etc/udev/rules.d/60-vboxdrv.rules verdrahtet war.

Also der Installer von VB hat seine Regeln in /lib/udev abgelegt und VB 
selbst hat erwartet sie in /etc/udev zu finden? Versteh ich das richtig?

Oder die Regel war in /etc/udev, hat aber nicht funktioniert weil sie 
irgendwie falsch war oder auf was nichtexistierendes verwiesen hat?

Ich kapiers immer noch nicht.

: Bearbeitet durch User
von Uhu U. (uhu)


Lesenswert?

Bernd K. schrieb:
> Also der Installer von VB hat seine Regeln in /lib/udev abgelegt und VB
> selbst hat erwartet sie in /etc/udev zu finden? Versteh ich das richtig?

Nein, das verstehst du nicht richtig.

Der Installer legt gar keine Regeln in einem udev-Verzeichnis ab - das 
muss man schon selber machen, wenn man Geräte, wie Chipkartenleser, 
avrisp u.dgl. von einer VM aus nutzen will.

Die Regel von Mint 17, die ich einfach übernommen hatte, zeigte unter 
Mint 19 auf den falschen Pfad - deswegen hat das nicht funktioniert.

Blockdevices kann man über Shares durchreichen, dann hat die VM sie aber 
nicht exklusiv.

: Bearbeitet durch User
von Rolf M. (rmagnus)


Lesenswert?

Uhu U. schrieb:
> Ich amüsiere mich gerade damit, meine VirtualBox VMs wieder zum Laufen
> zu bekommen, speziell den USB-Zugang und wunderte mich, warum bei Mint
> 19 in /etc/udev/rules.d gähnende Leere herrscht.

Wozu muss man dort manuell in irgendwelchen udev-Rules rumfuhrwerken? 
hab ich noch nie gemacht. Ich mach das immer so, wie es im Handbuch 
steht, durch Hinzufügen des Benutzers zur Gruppe vboxusers.

von Uhu U. (uhu)


Lesenswert?

Rolf M. schrieb:
> Ich mach das immer so, wie es im Handbuch
> steht, durch Hinzufügen des Benutzers zur Gruppe vboxusers.

Ich bin Mitglied der Gruppe vboxusers und kann trotzdem nicht ohne die 
speziellen udev-Regeln auf meinen Chipkartenleser, den avrisp mkII und 
den Acer n50 PDA zugreifen.

Sobald ich die Regeln (mit dem korrigierten Pfad) nach /etc/udev/rules.d 
kopiert habe, ist der Zugriff darauf aus der Windows-VM möglich.

Scheint also doch "irgenwie" essentiell zu sein…

Beitrag #5957835 wurde von einem Moderator gelöscht.
von Rolf M. (rmagnus)


Lesenswert?

Uhu U. schrieb:
> Scheint also doch "irgenwie" essentiell zu sein…

Ok, ich hab mal nachgesehen, und bei mir gibt's unter /lib/udev/rules.d 
tatsächlich eine Regel 60-virtualbox.rules. Die hat wohl das 
Installationspaket (für Ubuntu) automatisch angelegt.
Bei MINT müsstest du das von Ubuntu doch auch nutzen können? MINT 19 
basiert ja so wie es aussieht auf Ubuntu 18.04 LTS.

: Bearbeitet durch User
von Uhu U. (uhu)


Lesenswert?

Rolf M. schrieb:
> Bei MINT müsstest du das von Ubuntu doch auch nutzen können? MINT 19
> basiert ja so wie es aussieht auf Ubuntu 18.04 LTS.

Das mache ich ja. Ich hatte die Regeln früher mal unter Ubuntu angelegt 
und dann einfach zu Mint 17 mitgenommen.

Was ich aber nicht verstehe: warum soll der VB-Installer unter Ubuntu 
was anderes machen, als unter Mint? Mint basiert doch auf Ubuntu und 
bedient sich dort auch des Repositoriums.

Meine derzeitige VB-Version habe ich nicht vom Mint-Repo, sondern direkt 
von der VB-Download-Seite. Das ist ein .deb-File für Ubuntu 18.04, denn 
darauf beruht ja Mint 19.

Unter /lib/udev/rules.d gibts bei mir nur eine 60-virtualbox-dkms.rules. 
Das könnte aber die Folge von einigen De- und Reinstallationsversuchen 
sein und dass ich die alten Mint 17 Rules nach etc kopiert hatte, hat 
dann womöglich eine existierende Standardregel überdeckt.

Auf jeden Fall habe ich versucht, Quicken mit Chipkarte unter Windows 
zum laufen zu bekommen und erst als das nicht funktionierte, einiges 
probiert - u.a. die alten Regeln nach etc zu kopieren -, aber ohne auf 
einen grünen Zeig zu kommen.

: Bearbeitet durch User
von Rolf M. (rmagnus)


Lesenswert?

Uhu U. schrieb:
> Was ich aber nicht verstehe: warum soll der VB-Installer unter Ubuntu
> was anderes machen, als unter Mint? Mint basiert doch auf Ubuntu und
> bedient sich dort auch des Repositoriums.

Eben, deshalb wundert mich ja auch, dass es bei dir nicht angelegt wird.

> Meine derzeitige VB-Version habe ich nicht vom Mint-Repo, sondern direkt
> von der VB-Download-Seite. Das ist ein .deb-File für Ubuntu 18.04, denn
> darauf beruht ja Mint 19.

Ja, das habe ich auch. Ich hatte aber vorher schon ältere Versionen 
installiert, von denen das noch stammen könnten. Vielleicht funktioniert 
es ja nur bei der aktuellsten nicht richtig.

> Unter /lib/udev/rules.d gibts bei mir nur eine 60-virtualbox-dkms.rules.

Die habe ich ebenfalls.

> Das könnte aber die Folge von einigen De- und Reinstallationsversuchen
> sein und dass ich die alten Mint 17 Rules nach etc kopiert hatte, hat
> dann womöglich eine existierende Standardregel überdeckt.

Sollte eigentlich nicht, aber wer weiß. Aber wenn's nun funktioniert, 
ist ja alles gut.

von usuru (Gast)


Lesenswert?

Ich habe Ubuntu 18.04 und nutze auch Virtualbox, bei beiden Rechnern 
gibt es eine 60-vboxdrv.rules in /etc/udev/rules.d/, aber nichts mit 
vbox oder virtualbox in /lib/udev/rules.d/

> Das könnte aber die Folge von einigen De- und Reinstallationsversuchen
> sein und dass ich die alten Mint 17 Rules nach etc kopiert hatte, hat
> dann womöglich eine existierende Standardregel überdeckt.

Möglicherweise war es ein Fehler, die udev-rule einfach zu übernehmen.

von Bernd K. (prof7bit)


Lesenswert?

Uhu U. schrieb:
> speziellen udev-Regeln auf meinen Chipkartenleser, den avrisp mkII und
> den Acer n50 PDA zugreifen.
>
> Sobald ich die Regeln (mit dem korrigierten Pfad)

Zeig mal so ne Regel. Normalerweise setzt man da ein paar permissions 
oder nutzer:gruppe für ein device, was für ein Pfad soll da noch rein?

Wenn die Permissions richtig sind und Du als Benutzer am Host das Gerät 
benutzen kannst dann kannst Du es auch für VB freigeben.

von Uhu U. (uhu)


Lesenswert?

Bernd K. schrieb:
> Zeig mal so ne Regel. Normalerweise setzt man da ein paar permissions
> oder nutzer:gruppe für ein device, was für ein Pfad soll da noch rein?

Die Regeln sagen dem udev-System, wie es für ein eben angeschlossenes 
System i-nodes unter /dev/usb anlegen soll. Die gibt es vorher nicht und 
damit kann man auch keine Permissions setzen.

Das ist der Inhalt von /etc/udev/rules.d/60-vboxdrv.rules:
1
KERNEL=="vboxdrv", NAME="vboxdrv", OWNER="root", GROUP="root", MODE="0600"
2
KERNEL=="vboxdrvu", NAME="vboxdrvu", OWNER="root", GROUP="root", MODE="0666"
3
KERNEL=="vboxnetctl", NAME="vboxnetctl", OWNER="root", GROUP="root", MODE="0600"
4
SUBSYSTEM=="usb_device", ACTION=="add", RUN+="/usr/lib/virtualbox/VBoxCreateUSBNode.sh $major $minor $attr{bDeviceClass}"
5
SUBSYSTEM=="usb", ACTION=="add", ENV{DEVTYPE}=="usb_device", RUN+="/usr/lib/virtualbox/VBoxCreateUSBNode.sh $major $minor $attr{bDeviceClass}"
6
SUBSYSTEM=="usb_device", ACTION=="remove", RUN+="/usr/lib/virtualbox/VBoxCreateUSBNode.sh --remove $major $minor"
7
SUBSYSTEM=="usb", ACTION=="remove", ENV{DEVTYPE}=="usb_device", RUN+="/usr/lib/virtualbox/VBoxCreateUSBNode.sh --remove $major $minor"

Das Skript, das da mit RUN+=… eingebunden wird, regelt den Zugang zu dem 
Gerät für VB.

> Wenn die Permissions richtig sind und Du als Benutzer am Host das Gerät
> benutzen kannst dann kannst Du es auch für VB freigeben.

Problematisch sind nicht die Blockdevices - die kann man nicht-exklusiv 
als shared folders der VM zugänglich machen.

: Bearbeitet durch User
von Bernd K. (prof7bit)


Lesenswert?

Uhu U. schrieb:
> SUBSYSTEM=="usb", ACTION=="add", ENV{DEVTYPE}=="usb_device",
> RUN+="/usr/lib/virtualbox/VBoxCreateUSBNode.sh

Ja, 0k. jetzt wenn man es sieht ist es klar was passiert ist.

Du hast die alten Regeln mit den falschen Pfaden nach /etc/udev/rules.d/ 
gekippt und dort hatten sie Vorrang vor den richtigen Regeln die der 
Installer vorher schon längst nach /lib/udev/rules.d geschrieben hatte.

Entferne diese alten VBox-Regeln einfach ersatzlos aus /etc und lass 
stattdessen die bereits installierten Defaultregeln in /lib ihre Wirkung 
entfalten.

: Bearbeitet durch User
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.