Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Pixel 2015: unable to modprobe vboxdrv #45

Open
davidradkowski opened this issue Aug 19, 2016 · 78 comments
Open

Pixel 2015: unable to modprobe vboxdrv #45

davidradkowski opened this issue Aug 19, 2016 · 78 comments
Labels

Comments

@davidradkowski
Copy link

Retried few times already, to no avail :(

Every single time I get following error in dmesg:

supdrvGipCreate: failed to allocate the GIP page. rc=-26

@pigeonflight
Copy link

Getting the same error on a Dell Chromebook 13
I'm on the developer channel.

Version 54.0.2830.0 dev (64-bit)
Platform 8714.0.0 (Official Build) dev-channel lulu
Firmware Google_Lulu.6301.136.57

@forrestgit
Copy link

me too

@jamebus
Copy link

jamebus commented Sep 16, 2016

Looks like the kernel ABI has changed and we'll need new header packages.

@ferdbold
Copy link

ferdbold commented Sep 19, 2016

I'm having issues as well on a Dell Chromebook 13. Retried a few times with various targets (xfce, kde, gnome) to no avail.

Version 53.0.2785.103 (64-bit)
Platform 8530.81.0 (Official Build) stable-channel lulu
Firmware Google_Lulu.6301.136.57

➜  ~ vboxmanage --version
WARNING: The vboxdrv kernel module is not loaded. Either there is no module
         available for the current kernel (3.14.0) or it failed to
         load. Please recompile the kernel module and install it by

           sudo /sbin/vboxconfig

         You will not be able to start VMs until this problem is fixed.

@czenzel
Copy link

czenzel commented Oct 2, 2016

+1 Same issue on the Chromebook 2015.

@bumblebeers
Copy link

Hey, I'm here from #2793. I was actually having this same problem a few months ago on this same machine (Pixel 2015). I was on the dev channel at that point, so I could get the Play store. I ended up swapping back to the stable channel and reinstalling my chroot. After that, everything worked as expected and I was able to compile and install the headers and setup Virtualbox no problem. Now, I've updated my chromebook, still on the stable channel, and am having the same issue again. I can't help but wonder if it has something to do with ARC or the SELinux implementation for the Play Store. But then why would we be having issues on the Dell Chromebook 13...??

@bumblebeers
Copy link

I just did a powerwash and installed a fresh chroot, and I'm having the same problem.

crouton: version 1-20161010184059~master:0e57cac4
release: trusty
architecture: amd64
xmethod: xorg
targets: audio,core,cli-extra,extension,keyboard,x11,touch,xorg,gnome-desktop
host: version 8530.93.0 (Official Build) stable-channel samus
kernel: Linux localhost 3.14.0 #1 SMP PREEMPT Mon Sep 26 14:47:33 PDT 2016 x86_64 x86_64 x86_64 GNU/Linux
freon: yes

Version 53.0.2785.144 (64-bit)
Platform 8530.93.0 (Official Build) stable-channel samus
ARC Version 3301557
Firmware Google_Samus.6300.174.0

dmesg.txt

Here are my compiled .deb files just for kicks:

https://drive.google.com/open?id=0B5e6BkGq8HNfRDcxR3hVUmxDVHM
https://drive.google.com/open?id=0B5e6BkGq8HNfZkdGVGtMYmRnTFE

Anything else I can provide to help please let me know I am at whit's end.

@bumblebeers
Copy link

From dmesg above

audit: type=1400 audit(1476156294.812:307): avc: denied { execute } for pid=25168 comm="vboxballoonctrl" name="VBoxBalloonCtrl" dev="sda1" ino=1594219 scontext=u:r:chromeos:s0 tcontext=u:object_r:unlabeled:s0 tclass=file permissive=1

I really think this has something to with SELinux as I described in my first comment. Is there a way to totally disable SELinux so I could test this?

@drinkcat
Copy link

I really think this has something to with SELinux as I described in my first comment. Is there a way to totally disable SELinux so I could test this?

The line in dmesg says permissive=1, so nothing was actually blocked.

One thing that could have happened is that, for ARC++ support, the 3.14 kernel has changed quite a bit (new config options, possibly some ABI changes).

@bumblebeers
Copy link

@drinkcat Any idea how I might confirm this?

@drinkcat
Copy link

Huh, I just noticed that the earlier reports are on lulu R53/54, which clearly does not have ARC++... So I'm pretty sure this has nothing to do with SELinux.

So, I'm still not clear what broke, but generate new Linux kernel header files seems to be the right thing to try, first (I'm actually not sure how @divx118 did that).

If that still fail, you could try to bisect the kernel, I can provide instructions for that if you have time and motivation.

@divx118
Copy link
Owner

divx118 commented Oct 12, 2016

Sorry guys, been too occupied lately. I indeed think new kernel headers are the way to go. However if you follow the guide in the wiki you will build from the latest kernel source which can get you into problems as some new changes are in the kernel source that aren't in the released kernels for dev, beta or stable. So you probably need to checkout the kernel at an earlier time and then build the headers.
@drinkcat is there any easy way to checkout the kernel source for the different channels instead of building the latest so the kernel headers are in sync with the released kernels? Normally I just build the latest source which worked fine 99% of the time, however lately with so many changes in the kernel this is not the way to continue.

@divx118 divx118 added the bug label Oct 12, 2016
@drinkcat
Copy link

Channels, not really, but each release (e.g. 53), has it's own branch in the repo, e.g.: https://chromium.googlesource.com/chromiumos/third_party/kernel/+/release-R53-8530.B-chromeos-3.14

@divx118
Copy link
Owner

divx118 commented Oct 12, 2016

@drinkcat Ah ok, should be good enough. Thanks. @Pdbrantley try building the kernel headers with the above mentioned branch, that should be the right one for your kernel.

@bumblebeers
Copy link

@divx118 Thanks! I'll try as soon as I get off work this evening. Will update with results.

@bumblebeers
Copy link

No Luck! Recompiled from the reccomended source. Still getting the same error.

Here is dmesg:

dmesg.txt

I'll try to update with more info tomorrow morning.

@drinkcat
Copy link

Trying to figure out what's going on in Virtualbox source code (/var/lib/dkms/virtualbox/4.3.36/source/vboxdrv):

supdrvGipCreate: failed to allocate the GIP page. rc=-26

=> errno 26 is ETXTBSY (that's an extremely uncommon error code...)

Due to this call failing:

    rc = RTR0MemObjAllocCont(&pDevExt->GipMemObj, RT_UOFFSETOF(SUPGLOBALINFOPAGE, aCPUs[cCpus]), false /*fExecutable*/);
==> RTR0MemObjAllocContTag((pMemObj), (cb), (fExecutable), RTMEM_TAG)
==> rtR0MemObjNativeAllocCont(pMemObj, cbAligned, fExecutable)

(which then calls many Linux kernel functions)

But, back to the ETXTBSY error, it most likely comes from include/linux/fs.h, get_write_access or deny_write_access, but then I have no idea where these calls come from.

Somebody should try to instrument rtR0MemObjNativeAllocCont in vboxdrv (add printk's...), and see exactly which calls are being made, and where exactly the failure happens.

I did have a cursory look at kernel 3.14 diffs between R51 and R53, and I don't see anything of interest. But again, it used to work (right?), so bisecting the kernel is definitely something that could be tried. It's long and boring, but relatively easy.

@kdavh
Copy link

kdavh commented Oct 13, 2016

I'm in the same boat as @Pdbrantley . Virtualbox broke for me on updating to Chrome OS v53 on Pixel 2015. I'm not familiar enough with linux kernels etc, so I'm glad you all are looking into it.

@bumblebeers
Copy link

@drinkcat Sorry, I've been busy and haven't had much time to devote to this lately. I really appreciate all of your help.

To answer your question, yes it did work. Right up to the point when the play store was brought to the stable channel. I'm assuming R53.

Unfortunately we have gotten a little out of my depth, but with that being said, I'm willing to put in the time and effort to get this working, hopefully with minimal hand-holding on your part.

I'm not really sure how I would go bout "instrument[ing] rtR0MemObjNativeAllocCont in vboxdrv" but I'm happy to give it a shot if someone could point me in the right direction.

Also, I'm down for bisecting the kernel from R51 to R53, but I'm not quite sure how I would actually be able to test it. I know that I won't really be able to spot the problem from source. I guess I could compile and test headers on each commit, but good lord, that would take forever... Any better ideas on this?

@drinkcat
Copy link

I'm not really sure how I would go bout "instrument[ing] rtR0MemObjNativeAllocCont in vboxdrv" but I'm happy to give it a shot if someone could point me in the right direction.

You need to find a way to rebuild vboxdrv kernel driver from source, and add some printk("XYZ") at various places in the code (which will then show up in dmesg), until we understand exactly which call is failing.

Also, I'm down for bisecting the kernel from R51 to R53, but I'm not quite sure how I would actually be able to test it. I know that I won't really be able to spot the problem from source. I guess I could compile and test headers on each commit, but good lord, that would take forever... Any better ideas on this?

One should bisect the kernel itself, not the headers (by rebuilding it using a Chromium OS SDK chroot). It only takes log(number of commits) to do. The idea is that you start from a range x..y (where x is good, y is bad), and then test the commit halfway between x and y, until you find the bad commit.

But if it's related to ARC++ enabling, it might be very tricky... Let's try the tracing approach first.

@sclaughl
Copy link

I'm in the same boat -- upgraded Chrome OS on my pixel and am now unable to run virtualbox. I tried using the crouton-packages/README.md approach, and when that failed I followed the more involved instructions at "Build kernel headers and install Virtualbox (x86)" from the crouton wiki. I took care to use the chromeos-3.14 branch of the kernel repo (since my chrome os is running 3.14.0). At any rate, I'm having no luck, and I'm not sure what to do next. But I'm happy to help in any way I'm able, so please let me know if there's anything I can do..?

@sudonotpseudo
Copy link

@divx118 Thanks, I will continue to follow here.

@divx118
Copy link
Owner

divx118 commented Oct 31, 2016

Ok, tested it on 3.8.11 kernel

Version 55.0.2883.29 dev (64-bit)
Platform 8872.27.0 (Official Build) dev-channel falco
Firmware Google_Falco.4389.92.0

and have the same issues loading vboxdrv.ko results in

[  807.320038] Chromium OS LSM: init_module locking-ignored module="/home/chronos/user/Downloads/kernel/vboxdrv.ko" pid=11707 cmdline="insmod vboxdrv.ko"
[  807.332058] vboxdrv: Found 2 processor cores
[  807.332235] supdrvGipCreate: failed to allocate the GIP page. rc=-26

This is with freshly build kernel headers on branch release-R55-8872.B-chromeos-3.8 .
I will follow @drinkcat advice and see if I can add some printk to the driver source.

@bumblebeers
Copy link

bumblebeers commented Oct 31, 2016

configure.log.txt

I've been attempting to compile vbox and add in some printk as recommended, but have had issues compiling, well issues configuring actually. Specifically with libvpx and vpx.pc. I've attached configure.log if you run into the same problem or have a solution please let me know, otherwise I will keep working at it.

Also, just a quick note, I am compiling in my chroot. Figured that would give it the best chance of actually working when complete. I was wondering though if I should just compile for redistribution on another machine just so I can actually get a .deb file with the printk inserted. Thoughts on this?

@divx118
Copy link
Owner

divx118 commented Oct 31, 2016

@Pdbrantley For building the module again, I just cd into /var/lib/dkms/virtualbox/5.0.24/build/vboxdrv and then use sudo make vboxdrv and to clean sudo make clean Not my choice building as root, but in this case, just for testing it is the easiest fastest way. The vboxdrv.ko will turn up in the same folder as where you build. So you can use in the same folder sudo insmod ./vboxdrv.ko For now, to see what is going wrong it will be enough to only build the vboxdrv.ko since that is the first one to be loaded the other modules depend on it. If that fails the rest will also fail.

@divx118
Copy link
Owner

divx118 commented Nov 1, 2016

@drinkcat @Pdbrantley
Ok, had a bit of time tonight and traced the failing call back to file /var/lib/dkms/virtualbox/5.0.24/build/vboxdrv/r0drv/linux/memobj-r0drv-linux.c replace 5.0.24 with whatever version you have. https://gist.github.com/divx118/eb237697872bf2a624bf21b27720d104 line 731 and 738 both fail with -26 . This is due to line 323 paPages = 0 and then return -26 on line 338

Still need to look into it further, but for now a little update. Maybe someone has already an idea? :)

@z3ntu
Copy link

z3ntu commented Mar 24, 2017

Hello, I just wanted to ask if the current kernel header (for 3.14) packages are usable and functional for building other kernel modules?

@divx118
Copy link
Owner

divx118 commented Mar 25, 2017

@z3ntu I doubt it, they are quite old. Better to build new headers, or build the modules directly from the kernel 3.14 source. Of course you can try, also depends on which modules you want to build. If nothing or not much has changed in that section of the source then they still could work.

@ghost
Copy link

ghost commented Apr 25, 2017

What is the latest version of chrome os which is still supported?

@bumblebeers
Copy link

@Jimster121 as far as I know it's R51.

@ghost
Copy link

ghost commented Apr 26, 2017

Thank you, does this link have the correct image of chrome 51 os for the Asus c300? https://chromium.googlesource.com/chromiumos/third_party/kernel/+/release-R51-8172.B-chromeos-3.14

@gauravsharma013
Copy link

I have chrome book C720p and getting similar issue when i run 'virtualbox' command I get

The vboxdrv kernel module is not loaded. Either there is no module
available for the current kernel (3.8.11) or it failed to
load. Please recompile the kernel module and install it by

   sudo /sbin/vboxconfig

 You will not be able to start VMs until this problem is fixed.

Any solution ?

@ghost
Copy link

ghost commented May 30, 2017

Is this project abandoned?

@sclaughl
Copy link

sclaughl commented May 30, 2017 via email

@ghost
Copy link

ghost commented May 30, 2017

@sclaughl Ok, thank you for this information.

@divx118
Copy link
Owner

divx118 commented May 31, 2017

@Jimster121 yes @sclaughl is right. Using dual boot with galliumos is the best way now for virtualbox.

@ghost
Copy link

ghost commented Jun 1, 2017

ok thank you, I'll try gallium os

@natethegreatsu
Copy link

Hey guys would you mind explaining a bit on how to run virtual box in gallium OS? Do you run a chariot inside of gallium and then do it the normal way? Or do you download virtual box directly while inside of gallium? I pretty much get the legacy boot part just not how to download virtual box any comments would be greatly appreciated.

@natethegreatsu
Copy link

Also I like the concept of github. What can I do or learn to really contribute on this platform? I think the concept is pretty dope.

@ghost
Copy link

ghost commented Jul 23, 2017

@natethegreatsu Installing Virtualbox on Gallium OS is super easy. Open up Synaptic and search for "Virtualbox". Once you find it, double-click it and it will select all the required packages. Click "Apply" and it will do the job. Works well on Asus c300 Chromebook with RW_Legacy Bios. Good Luck!

@natethegreatsu
Copy link

Thank you so much for the tips. You guys are the best.

@natethegreatsu
Copy link

natethegreatsu commented Jul 25, 2017

@Jimster121 @divx118 Hey yal I just wanted to update yal and let yal know that it totally worked. I now have gallium and virtualbox works fine. I have two new issues im working through now though. I messed around and delete chromeos so now when I press ctrl+D on start up it crashes, so I have to use ctrl+L exclusively and secondly the The Yosemite MAC OS file I have isn't booting in virtualbox. Thank you guys for your help. Also when I tried to use synaptic manager virtualbox would not install. So I had to use the following from Quidsup https://quidsup.net/tutorials/?p=virtualbox
sudo su echo "deb http://download.virtualbox.org/virtualbox/debian $(lsb_release -cs) contrib non-free #Virtualbox" > /etc/apt/sources.list.d/virtualbox.list wget -q http://download.virtualbox.org/virtualbox/debian/oracle_vbox.asc -O- | apt-key add - apt-get update apt-get install virtualbox-5.0 if [ "grep vboxusers /etc/group|grep $USER" == "" ] ; then sudo usermod -G vboxusers -a $USER ; fi I hope this helps someone in the future.

@ghost
Copy link

ghost commented Jul 26, 2017

@natethegreatsu I don't know how to help you with the Chrome OS problem, I don't even use it because it eats up the limited storage space my chromebook has. As for the second problem, what error does it show when you boot up the virtual image?

@natethegreatsu
Copy link

@Jimster121 it gets stuck at the hackintosh loading screen
image

@ghost
Copy link

ghost commented Jul 27, 2017

Try to boot another OS (ex. Windows XP) and see if it is booting. I'm pretty sure that this has to do with the virtual machine and nothing with the host OS. Try searching for it in forum and check for potential fixes.

@natethegreatsu
Copy link

@Jimster121 It tried running a windows iso but it gets hung at the booting screen. Im about to search online for a solution

@ghost
Copy link

ghost commented Aug 1, 2017

Ok, Good Luck!

@david-expresscorp
Copy link

@natethegreatsu @divx118 So I have been trying to get crouton and virtualbox to work together for the last few days to no avail and luckily came across this post. You people understand my pain! Can we confirm that dual-booting will solve this issue? Gallium OS seems like the way to go but I am a bit of a newbie with this so if you guys have any step by step guides to reference the install, it would be much appreciated.

@sclaughl
Copy link

sclaughl commented Jan 22, 2018 via email

@david-expresscorp
Copy link

@sclaughl thanks for the quick reply! Will have to give this a try on my Acer R11 later on.

@natethegreatsu
Copy link

natethegreatsu commented Jan 22, 2018 via email

@ghost
Copy link

ghost commented Jan 22, 2018

@david-expresscorp According to this https://wiki.galliumos.org/Hardware_Compatibility you may experience sound problems. It seems it will be fixed in the future since the Acer R11 it's a quite popular device.

@sparrow-labz
Copy link

I was able to run a parrot os vm with qemu and kvm on a pixelbook. I used the change kernel flags script from crouton repo, then installed qemu and kvm packages normally for my debian 9 chroot. Virt manager doesn't work, but I can make a hard drive image with CLI and boot up a vm with CLI and it all works, albeit it is a bit slow even with kvm. Probably cause even a pixelbook has low resources.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests