Welcome, Guest. Please login or register.
Did you miss your activation email?

Author Topic: [DE] Wie patcht man richtig?  (Read 4587 times)

Offline Geier0815

  • User
  • Posts: 586
[DE] Wie patcht man richtig?
« on: 2017/11/14, 11:06:03 »
Moin Moin,

ausgehend von diesem Thread zu VirtualBox und dem 4.14er Kernel, kam bei mir die Frage auf: Wie gehe ich eigentlich "richtig" mit solchen Hinweisen/Patchfiles um.

In diesem Fall habe ich den Patch runter geladen, entpackt und genauer in den Code geguckt. Dann hab ich auf meinem System nach VBoxNetFlt-linux.c (welche im Patchfile erwähnt wurde) gesucht, aber nichts gefunden. Aber unterhalb von /usr/share/virtualbox/src/vboxhost/vboxnetflt/ war eine VBoxNetFlt.c zu finden. Ich bin dann eine Verzeichnisebene höher gegangen (vboxhost) weil dort auch ein makefile lag und habe dann "patch -p1 < /WEG-ZUM-PATCH/PATCH" ausgeführt. Lief auch soweit wobei mich Meldungen wie "patch unexpectedly ends in middle of line" ein wenig erschreckten. Aber "Hunk #1 succeeded at 353 with fuzz 2." ließ mich hoffen daß das Ganze wohl doch durchgelaufen ist.
Danach hab ich vboxconfig laufen lassen, was dann wohl die entsprechenden Sachen gebaut hat. Normalerweise hatte ich erwartet da noch "make && make install" laufen lassen zu müßen, war aber in dem Fall nicht so, zumindest läuft VirtualBox bei mir.

ABER: Wie geht so etwas "richtig"? War mein Weg jetzt überhaupt richtig/erfolgreich oder hätte ich evtl. gar nichts machen müßen? Wie finde ich heraus in welches Verzeichnis ich muß oder nach welcher Source-Datei ich suchen muß, da zwischen meinem "Fund" und dem "echten" Namen ja ein Unterschied besteht? Sorry wenn euch die Fragen dumm vorkommen aber ich bin kein C-Programmierer und irgendwelche Basteleien am Kernel bzw seinem Umfeld liegen Jahre zurück (Debian 2.0 Soundkarte aktivieren 1998).
Wenn Windows die Lösung ist...
kann ich dann bitte das Problem zurück haben?

Offline der_bud

  • User
  • Posts: 1.072
  • member
Re: Wie patcht man richtig?
« Reply #1 on: 2017/11/14, 14:09:04 »
Zu dem von Dir verlinkten Beitrag gibt es auch eine ältere Version von Juli , darin hat melmarker ein dreizeiliges Patch-Howto geschrieben:
 
try that:

Code: [Select]
cd /usr/share/virtualbox/src
# place the patch here
patch -Np0 < vbox.patch

and rebuild the modules

Meinst Du sowas?
Du lachst? Wieso lachst du? Das ist doch oft so, Leute lachen erst und dann sind sie tot.

Offline samoht

  • User
  • Posts: 478
Re: Wie patcht man richtig?
« Reply #2 on: 2017/11/15, 01:45:09 »
Ich kann das bestätigen, @Geier0815.

Sieht hier wie folgt aus:

Code: [Select]
root@tuxxy:/usr/share/virtualbox/src/vboxhost# patch -bNp1 < virtualbox-modules-5.1.28-udp.patch 
patching file vboxnetflt/linux/VBoxNetFlt-linux.c
Hunk #1 succeeded at 141 (offset 15 lines).
patching file vboxpci/linux/VBoxPci-linux.c
patch unexpectedly ends in middle of line
Hunk #1 succeeded at 353 with fuzz 2.

Auch ich bekomme nach erfolgreichem

Code: [Select]
root@tuxxy:/usr/share/virtualbox/src/vboxhost# /sbin/vboxconfig                                     
Created symlink /etc/systemd/system/multi-user.target.wants/vboxdrv.service → /lib/systemd/system/vboxdrv.service.                                                                                                                           
Created symlink /etc/systemd/system/multi-user.target.wants/vboxballoonctrl-service.service → /lib/systemd/system/vboxballoonctrl-service.service.                                                                                           
Created symlink /etc/systemd/system/multi-user.target.wants/vboxautostart-service.service → /lib/systemd/system/vboxautostart-service.service.                                                                                               
Created symlink /etc/systemd/system/multi-user.target.wants/vboxweb-service.service → /lib/systemd/system/vboxweb-service.service.                                                                                                           
vboxdrv.sh: Stopping VirtualBox services.                                                                                                                                                                                                     
vboxdrv.sh: Building VirtualBox kernel modules.                                                                                                                                                                                               
vboxdrv.sh: Starting VirtualBox services.

eine funktionierende VBox.

Greetings,
Tom
 
« Last Edit: 2017/11/15, 19:46:34 by samoht »

Offline bevo

  • User
  • Posts: 319
Re: Wie patcht man richtig?
« Reply #3 on: 2017/11/15, 09:08:03 »
Ich steh völlig auf dem Schlauch :(

Bei mir gibt es das Verzeichnis src im Path /usr/share/virtualbox/ nicht, auch vboxhost existiert nicht.

bevo



Offline Geier0815

  • User
  • Posts: 586
Re: Wie patcht man richtig?
« Reply #4 on: 2017/11/15, 09:15:03 »
@der_bud,

die Anleitung ist soweit gut, ich hatte sie nicht auf dem Radar. ABER: Patch spielt ja einen Unterschied zwischen zwei Dateien ein um die lokale Version auf den Stand der externen zu bringen. Wie aber bei dem Beispiel von mir zu sehen war, unterscheidet sich der betreffende Dateiname in der Patch-Datei vom Dateinamen auf meinem System (VBoxNetFlt-linux.c != VBoxNetFlt.c). Daher die Unsicherheit ob ich überhaupt die richtige Datei am Wickel habe. Ist das zusätzliche "-linux" in der Patch-Datei immer zu ignorieren? Wenn ja, warum steht es dann da so drin? Mir geht es dabei in erster Linie darum heraus zu finden nach welcher Datei bzw in welchem Verzeichnis ich suchen muß um patchen zu können. zB liegt der virtualbox-Kram unter /usr/share/ nvidia liegt offensichtlich unter /usr/src.
Mir geht es jetzt nicht nur um diesen einen Patch sondern allgemein ums Patchen, kann ja auch mal was Anderes sein.
Ebenso war das mit dem vboxconfig ausführen bei mir Zufall. Wäre da der offizielle Weg dann im Verzeichnis wo auch das make-file liegt dann "make clean && make && make install" auszuführen? Oder muß da dann noch etwas Anderes beachtet werden? Wie verhält es sich bei Sachen die eigentlich über die Paketverwaltung kommen zB X11 wenn da mal etwas gemacht werden muß weil der Nvidia Treiber nicht will aber schon ein Patch existiert der noch nicht ins Paket eingeflossen ist (oder wegen grundlegender Änderungen auch nicht einfließen wird, aber noch kein neuer Treiber von Nvidia existiert)? Was muß dabei beachtet werden, wenn überhaupt?

@samoht,

schön, dann war das offensichtlich bei mir auch nicht verkehrt gelaufen auch wenn die Meldung erst einmal etwas Anderes erwarten lassen würde.

@bevo,

dann suche doch mal per "find / -name "VBoxNetFlt.c" nach der betreffenden Datei. Ansonsten bleibt die Frage ob Du überhaupt virtualbox installiert hast und wenn ja, in welcher Version und aus welcher Quelle.

Im Zweifel wäre das aber ein schönes Beispiel für das was ich durch diesen Thread erfragen wollte: Wie finde ich den richtigen Ort um einen Patch anzuwenden...
Wenn Windows die Lösung ist...
kann ich dann bitte das Problem zurück haben?

Offline bevo

  • User
  • Posts: 319
Re: Wie patcht man richtig?
« Reply #5 on: 2017/11/15, 09:44:22 »
@Geier0815

Die File liegt im Pfad:

/usr/src/virtualbox-5.2.0/vboxnetflt/vboxnetflt.c

Ich benutze vbox 5.2.0_Debian r118415 auf 3 Systemen.

bevo
« Last Edit: 2017/11/15, 09:51:29 by bevo »

Offline Geier0815

  • User
  • Posts: 586
Re: Wie patcht man richtig?
« Reply #6 on: 2017/11/15, 10:43:41 »
@bevo,

hast Du denn ein Problem mit virtualbox seit dem 14er Kernel? Scheint nämlich auch nicht jeden zu treffen wie man im ersten, von mir verlinkten, Thread sehen kann.
Wenn ja, dann kannst Du in das Verzeichnis /usr/src/virtualbox-5.2.0/ als root gehen und dort dann den Patch wie von mir beschrieben ausführen, also "patch -p1 < /WEG-ZUM-PATCH/virtualbox-modules-5.1.28-udp.patch". Danach führst Du "/sbin/vboxconfig" aus. Dabei werden die Module erstellt und virtualbox sollte sich dann starten lassen.

ABER: Das Ganze ist ohne Gewähr, schließlich fragte ich ja hier nach wie patchen richtig geht ;-)
Wenn Windows die Lösung ist...
kann ich dann bitte das Problem zurück haben?

Offline harley-peter

  • User
  • Posts: 1.022
Re: Wie patcht man richtig?
« Reply #7 on: 2017/11/15, 10:45:42 »
Hallo Freunde,

Auch bei mir liegt die virtualbox Sache im Verzeichnis /usr/src/virtualbox-5.2.0/
Wenn ich den Patch lese dann bezieht er sich ja auf zwei Dateien, der VBoxNetFlt.c und der VBoxPci.c. Diese liegen bei mir aber in unterschiedlichen Verzeichnissen nämlich in /usr/src/virtualbox-5.2.0/vboxnetflt bzw. in /usr/src/virtualbox-5.2.0/vboxpci.
Muss ich nun den Patch zweimal machen in den jeweiligen Verzeichnissen oder genügt es ihn in das übergeordnete Verzeichnis zu packen?
Und dann gibt es bei mir kein vboxconfig. Muss ich dann ein "make clean && make && make install" durchführen?
Sorry für die vielleicht einfachen Fragen aber ich bin auch kein c-Programmierer.
Danke für die Hilfe.

Offline Geier0815

  • User
  • Posts: 586
Re: Wie patcht man richtig?
« Reply #8 on: 2017/11/15, 11:11:00 »
Soweit ich die man-page von patch verstanden habe gibt die p-Option an wie weit unterhalb des Verzeichnisses in dem man den Befehl ausführt noch nach der passenden Datei gesucht wird. Je höher die Zahl je weniger Verzeichnisebenen.
Quote from: man patch
-pnum  or  --strip=num
          Strip the smallest prefix containing num leading slashes  from  each
          file  name found in the patch file.  A sequence of one or more adja‐
          cent slashes is counted as a single slash.  This controls  how  file
          names  found  in  the  patch file are treated, in case you keep your
          files in a different directory than the  person  who  sent  out  the
          patch.  For example, supposing the file name in the patch file was

          /u/howard/src/blurfl/blurfl.c

       setting -p0 gives the entire file name unmodified, -p1 gives

          u/howard/src/blurfl/blurfl.c

       without the leading slash, -p4 gives

          blurfl/blurfl.c

       and not specifying -p at all just gives you blurfl.c.  Whatever you end
       up with is looked for either in the current directory, or the directory
       specified by the -d option.

Der Patch sollte beide Dateien anfassen. Also nur einmal ausführen.

/sbin/vboxconfig sollte auch in der 5.2 vorhanden sein. Beachte bitte das der Befehl nur von root ausgeführt werden kann.
« Last Edit: 2017/11/15, 11:14:03 by Geier0815 »
Wenn Windows die Lösung ist...
kann ich dann bitte das Problem zurück haben?

Offline harley-peter

  • User
  • Posts: 1.022
Re: Wie patcht man richtig?
« Reply #9 on: 2017/11/15, 12:33:50 »
@Geier0815:
alles klar, dann packe ich den Patch mal eine Ebene höher aber eine vboxconfig gibt es bei mir definitiv nicht. Auch die Suche mit
Code: [Select]
find / -name vbox*brachte keine entsprechende Datei zutage und wie schon erwähnt weiß ich jetzt nicht wie ich vorgehen soll.

Online towo

  • Administrator
  • User
  • *****
  • Posts: 2.920
Re: Wie patcht man richtig?
« Reply #10 on: 2017/11/15, 12:35:24 »
/sbin/vboxconfig gibts nur im Oracle-Paket.
Debian nutzt immer noch dkms für den Modulbau.
Ich gehe nicht zum Karneval, ich verleihe nur manchmal mein Gesicht.

Offline Geier0815

  • User
  • Posts: 586
Re: Wie patcht man richtig?
« Reply #11 on: 2017/11/15, 13:41:38 »
@harley-peter,

hast Du denn überhaupt irgendwelche Probleme? Im anderen Thread entstand bei mir irgendwie durch vilde der Eindruck das die Debian-Version gar nicht betroffen ist.
Wenn Windows die Lösung ist...
kann ich dann bitte das Problem zurück haben?

Offline whistler_mb

  • User
  • Posts: 198
Re: Wie patcht man richtig?
« Reply #12 on: 2017/11/15, 14:50:41 »
@Geier0815

Mit towos 4.14er Kernel und virtualbox 5.2 wird dieser Patch benötigt, sonst kann dkms das Modul nicht bauen.

Code: [Select]
$ apt-cache policy virtualbox-dkms
virtualbox-dkms:
  Installiert:           5.2.0-dfsg-5
  Installationskandidat: 5.2.0-dfsg-5
  Versionstabelle:
 *** 5.2.0-dfsg-5 500
        500 http://ftp.de.debian.org/debian unstable/contrib amd64 Packages
        500 http://ftp.de.debian.org/debian unstable/contrib i386 Packages
        100 /var/lib/dpkg/status

Offline harley-peter

  • User
  • Posts: 1.022
Re: Wie patcht man richtig?
« Reply #13 on: 2017/11/16, 13:57:42 »
Nach dem Patch und dem Neubau des Moduls mit dkms funktioniert die Sache auch bei mir wieder.  :)
Vielen Dank euch allen für die Unterstützung! :D

Offline 10toe

  • User
  • Posts: 159
Re: Wie patcht man richtig?
« Reply #14 on: 2017/11/17, 07:05:40 »
@harley-peter
Hier hänge ich gerade noch: Wie lauten die Befehle denn genau, mit dem Du das Modul neu gebaut hast?