[linux] VirtualBox doet het niet meer!

Daniel C. von Asmuth asmuth op bakunin.xs4all.nl
Zo Mrt 10 10:12:26 CET 2019


Aldus schreef jjge op Sat, Mar 09, 2019 at 02:55:48PM +0100:
> On 3/9/19 11:31 AM, Daniel C. von Asmuth wrote:
> >
> >>=====
> >>
> >>Tja, da's nou jammer. Ik heb in /var/log/vbox-setup.log gekeken en daar vind
> >>ik een heleboel,  wie er echt naar wil kijken, melde het maar even, maar het
> >>eindigt met een compilatie-error. Ik moet nog even moed verzamelen voor ik
> >>daar in duik (open source is mooi, maar C is al weer een paar eeuwen
> >>geleden...).
> >>
> >Ja. Doe maar. IK ben tenslotte C programmeur.
> 
> Bij deze:
> 

Toch mis ik nog iets van informatie. Is het probleem misschien
opgetreden na een upgrade van de kernel of van VirtualBox?

> Building the main VirtualBox module.
> Error building the module:
> make V=1 CONFIG_MODULE_SIG= -C /lib/modules/4.4.172/build SUBDIRS=/tmp/vbox.0 SRCROOT=/tmp/vbox.0 -j4 modules

	[knip-knip]

> /tmp/vbox.0/r0drv/linux/memobj-r0drv-linux.c: In function 'rtR0MemObjNativeLockUser':
> /tmp/vbox.0/r0drv/linux/memobj-r0drv-linux.c:1123:33: warning: passing argument 6 of 'get_user_pages' makes pointer from integer without a cast [-Wint-conversion]
>                                  fWrite,                 /* force write access. */
>                                  ^
> In file included from /tmp/vbox.0/r0drv/linux/the-linux-kernel.h:101:0,
>                  from /tmp/vbox.0/r0drv/linux/memobj-r0drv-linux.c:31:
> include/linux/mm.h:1200:6: note: expected 'struct page **' but argument is of type 'int'
>  long get_user_pages(struct task_struct *tsk, struct mm_struct *mm,
>       ^
> /tmp/vbox.0/r0drv/linux/memobj-r0drv-linux.c:1125:33: warning: passing argument 7 of 'get_user_pages' from incompatible pointer type [-Wincompatible-pointer-types]
>                                  &pMemLnx->apPages[0],   /* Page array. */
>                                  ^
> In file included from /tmp/vbox.0/r0drv/linux/the-linux-kernel.h:101:0,
>                  from /tmp/vbox.0/r0drv/linux/memobj-r0drv-linux.c:31:
> include/linux/mm.h:1200:6: note: expected 'struct vm_area_struct **' but argument is of type 'struct page **'
>  long get_user_pages(struct task_struct *tsk, struct mm_struct *mm,
>       ^
> /tmp/vbox.0/r0drv/linux/memobj-r0drv-linux.c:1113:18: error: too many arguments to function 'get_user_pages'
>              rc = get_user_pages(pTask,                  /* Task for fault accounting. */
>                   ^
> In file included from /tmp/vbox.0/r0drv/linux/the-linux-kernel.h:101:0,
>                  from /tmp/vbox.0/r0drv/linux/memobj-r0drv-linux.c:31:
> include/linux/mm.h:1200:6: note: declared here
>  long get_user_pages(struct task_struct *tsk, struct mm_struct *mm,
>       ^
	[knip-knip]

In de bovenstaande regels zie je duidelijk dat de compilatie faalt bij
de aanroep van de get_user_pages() functie en dan moet je de
bijbehorende coderegels nog eens nalezen en vergelijken. 

Er is geprobeerd om een kernel module te compileren. Nu is het
waarschijnlijk dat de code bij anderen wel heeft gewerkt. Je hebt
waarschijnlijk ook gehoord dat Linus geen voorstander is van een stabiele
in-kernel API voor drivers e.d. Ik vermoed dus dat de code voor de
VirtualBox kernel module niet compatibel is met de versie van de kernel 
die u gebruikt, zodat het probleem zou kunnen worden opgelost door bij
elkaar passende versies van die twee te gaan zoeken. U kunt natuurlijk
ook zelf de code gaan hacken.

Suc6,



Daniel






-- 
	
		Geeks of a feather cruft together
		


Meer informatie over de Linux maillijst