Migrating to Modular X
Introduction
To keep old packages from getting in the way, we're going to clean out all the
old xorg-x11 cruft before installing modular X. This isn't absolutely crucial,
but it will help ensure a smooth migration.
First step: clean out your old X
Before you start, make sure you have a package of the old, monolithic xorg-x11
built with USE=dlloader if the dlloader flag was available in that
version. It's not available in >=6.8.99.15.
# emerge gentoolkit
# quickpkg xorg-x11
Get rid of the monolithic installation:
# emerge -Ca xorg-x11
# rm -rf /usr/lib/opengl/xorg-x11
# rm -rf /usr/lib/libGL*
You definitely want a backup copy of the monolithic xorg-x11 so you can mix and
match parts if desired.
The later steps are helpful in getting rid of symlinks created by
opengl-update.
If your /usr/X11R6 isn't a symlink to /usr, delete it
and start from scratch. But first, save a list of all the packages installing
there.
# if [[ ! -L /usr/X11R6 ]]; \
then equery belongs /usr/X11R6 > usr-x11r6-packages \
&& rm -rf /usr/X11R6; fi
Second step: Installing modular X
First, add the required packages to /etc/portage/package.unmask.
Open /usr/portage/profiles/package.mask in your text editor of
choice, then copy and paste the full modular X mask over to
package.unmask. Do the same with package.keywords if
you're running stable.
For direct rendering, you'll want to activate the dri USE flag.
Now, install the metabuild. This will install the server and popular
applications, giving you a working desktop implementation of X:
# emerge xorg-x11
Note that this install tries to be rather minimal, so things like xcursor-themes
are not installed by default.
Next, install some drivers. This will vary depending on your input and video
hardware, so take a look in /usr/portage/x11-drivers/. Here's a
sample:
# emerge xf86-input-mouse xf86-input-keyboard xf86-video-ati
With modular installed, external drivers such as nvidia-glx and wacom as well as
some vnc apps may not work if they install things to
/usr/lib/modules instead of /usr/lib/xorg/modules.
Many of these will have modular X detection added to the installation process
and thus will need to be re-merged after modular X install.
Caveats/Common Problems
'emerge -u world' wants to install xorg-x11
This is because the tree isn't fixed for modular dependencies yet. You can help
the porting effort by reading
http://dev.gentoo.org/~spyderous/xorg-x11/porting_to_modular_x_howto.txt
and filing bugs with patches to the individual package maintainers. The
maintainers will be listed in metadata.xml in the same directory as the package,
and the 'herdstat' package will speed up querying for them.
Driver problems
I've had reports that:
- ati won't start X
- But it works fine on my FireGL 8800
-
Resolved by moving /usr/lib/xorg/modules/multimedia out of
the way
- vesa locks up box with an mga card
- vga produces a very weird-looking screen, divided into quarters
Getting glxinfo/glxgears
The best way to deal with this is undecided by upstream so far, so there's an
ebuild in my overlay contributed by cardoe. Alternately, you can build them by
hand.
Option 1:
http://dev.gentoo.org/~spyderous/overlay/x11-misc/glx-utils/
I'm not going to tell you how to use an overlay, so if you don't know and are
too lazy to read the docs, use option 2.
Option 2: Build by hand
# emerge freeglut
# tar zxvf /usr/portage/distfiles/Mesa-6.3.1.1.tar.gz
# cd Mesa-6.3.1.1/configs
# ln -s linux-dri-x86 current
# cd ../progs/xdemos
# make glxinfo
# make glxgears
# cp glxinfo glxgears /usr/bin/
To get some debugging info from glxinfo to help in getting direct rendering
working:
# LIBGL_DEBUG=verbose glxinfo
Mouse protocol autodetection
If you have Protocol "auto" set in xorg.conf for your mouse, it may not
work. You may need to specify Protocol "ExplorerPS/2" or "IMPS/2"
for your wheel to work.
Where are imake/xmkmf?
These are now in the tree. However, gccmakedep is not modularized yet
and thus the imake build system is still broken for some packages.
Everything in /usr/lib/xorg disappeared!
Remerge >=xorg-server-0.99.1-r4. This was a temporary bug in the ebuild that
resulted in deletion after removal of a package. Instead,
/usr/lib/xorg should have only been deleted when no xorg-server
remained on the system.
gdm/kdm don't work
If you installed modular X on a fresh Gentoo installation, you may not have a
/usr/X11R6 -> /usr symlink. Try creating one; no
ebuild does yet.
You can help get things out of /usr/X11R6 by fixing the packages
that do it and filing bugs.
Other Issues
-
The trap module will give errors on starting X, because the
modular xorg-server doesn't build it yet. You may want to copy it
over from your old X installation.
-
Make sure your xorg.conf doesn't list ModulePath,
because this directory changed from /usr/lib/modules to
/usr/lib/xorg/modules.