Chromium + nVidia Build

The current vanilla build of Chromium OS (as of 2.6.32.26+drm33.12) does not include nVidia video drivers. Here's a few helpful hints on getting your own Chromium system up and running on nVidia hardware.

Build vanilla chromium

Follow the Chromium getting started guide to get the latest snapshot of the Chromium sources built. Make sure you set a password for chronos as we'll use the dev console for configuration (instructions are in the guide).

Emerge kernel source

We'll need a kernel to build our driver against. Follow the instructions listed on the Kernel FAQ under "How to test kernel modifications (the slow way)". This will provide a configured kernel source tree required for the nVidia build.

Build nVidia drivers

Set the KERNEL_DIR env variable to wherever you placed the kernel source tree from the previous step

KERNEL_DIR=SOMEDIR/mykernel/files

Emerge the nvidia drivers without clobbering the build using FEATURES=noclean

FEATURES=noclean emerge-x86-generic nvidia-drivers

Cross your fingers and hope for a clean build

Copy and install the nVidia binaries

Once built you'll need to transfer the binaries to your destination. Easiest for me was to create a bootable USB image from the vanilla Chromium build (using ./image_to_usb.sh). Then mount the usb drive and copy the entire nVidia work tree over located here: /build/x86-generic/tmp/portage/x11-drivers/nvidia-drivers-190.42-r3/work.

From this point forward you can boot your Chromium image and continue from the console (ALT-F2)

There will be some setup involving the X driver, kernel module, and openGL libraries which under normal circumstances would be handled by the nVidia installer. We'll have to do the installation by hand. I used the /build/x86-generic/tmp/portage/x11-drivers/nvidia-drivers-190.42-r3/image directory as a guide for determining what to put where.
  • Copy the kernel module to /lib/modules/YOUR_KERNEL_VER/kernel/drivers/video
  • The kernel module is found here: /build/x86-generic/tmp/portage/x11-drivers/nvidia-drivers-190.42-r3/work/NVIDIA-Linux-x86-190.42-pkg0/usr/src/nv/nvidia.ko
  • Copy nvidia_drv.so to /usr/lib/xorg/modules/drivers
  • Copy and symlink libnvidia-wfb.* to /usr/lib/xorg/modules
  • Replace and symlink libglx.* to /usr/lib/xorg/modules/extensions
  • Copy and symlink libXvMCNVIDIA.* to /usr/lib/xorg
  • Replace and symlink any other libgl or libglx library in /usr/lib and /usr/lib/opengl
Configuration

With the kernel modules installed and running you can configure the X driver with the following:

Xorg -configure

nVidia requires exec privilege on the /dev/zero device. Edit /sbin/chromeos_startup, find the command for mounting /dev and replace noexec with exec.

Fini

At this point you should be able to reboot to the Chromium graphical login. I've found the drivers provide a significant performance boost and well worth the effort. There are number of nVidia specific options you can apply to the xorg.conf including enabling TwinView for spanning multiple montiors. Good luck!

Comments