You are not logged in.
I've got a NVIDIA Optimus laptop (a ThinkPad). I can choose to enable in BIOS either "Discrete", "Integrated" or "Optimus".
So far, I've only tried running Arch with "Discrete Graphics" set in the BIOS, and I'm using the NVIDIA driver from Arch's packages. It works just fine.
What I'd like to be able to do is set in BIOS either "Discrete" or "Integrated" and have the system load the correct modules/drivers automatically. Preferably also use the Integrated card if "Optimus" is set.
I went through Arch's boot process and unpacked the NVIDIA driver that I'm using, figuring that installing the package simply places the "nvidia" module in a certain directory and some other config file blacklists the "nouveau" module.
My "/etc/X11/xorg.conf" looks like this:
$ cat /etc/X11/xorg.conf
Section "Device"
Identifier "Device0"
Driver "nvidia"
VendorName "NVIDIA Corporation"
option "NoLogo" "1"
EndSection
According to the `Driver "nvidia"` option I assume this is where the correct driver (module) is loaded (...and not magically).
Does that mean I can also install Intel video drivers safely (without breaking anything)?
Could anyone point me in the right direction? How would I have the system choose the right driver at boot (or when X starts, for that matter)?
As you can see my knowledge is extremely fragmented and I'm trying to figure things out by connecting pieces of information, but I like understanding things thoroughly.
Thank you.
Offline
The problem is, GL libraries conflict. See this thread for further info: https://bbs.archlinux.org/viewtopic.php?id=129135
Someone should really come up with a solution similar to Gentoo, and then make it part of Arch.
Offline
After some further investigation I realize there are two possible approaches:
(1) Identify the active graphics card and install/remove packages accordingly (using pacman's cache). [example]
(2) Name the conflicting files differently and create symbolic links to the right files upon graphics card identification (e.g. `libGL.so.nvidia` || `libGL.so.original` [symlink]-> libGL.so)
(*) One way is to edit PKGBUILD files [example]
The obvious benefit of the first approach is that packages are quite easily updated, and manual intervention is not required.
The main drawback would be inefficiency - removing, unpacking, copying of files every time the card is changed.
The second approach would theoretically be far more efficient, but is there some way to keep the packages updatable? I suppose that once a new version of the package is fetched the PKGBUILD will be overridden and so will my changes. I don't mind injecting some script to edit the PKGBUILD file of these specific packages when they're updated, but would that be possible? Can anyone come up with different approaches?
Last edited by johndir (2011-11-10 15:10:30)
Offline