Purpose: The idea of this post is to resolve XOrg’s X server startup error messages. Sometime back I had written a post which explained to get your X server to start successfully. However, in this post we are going to specifically focus on the error messages that X server throws out in the log file while trying to start. I highly recommend to use the approach in my previous post first and then follow methods in this post. My intention is to add solutions to different error messages that I get from time to time. For now I will start off with the error messages that I remember so far.
How to check for error message
Every time the X server tries to start, it output all the messages (errors, warnings, info, etc) in the log file located at:
You can give the following command to see where the first error message occured:
# cat /var/log/Xorg.0.log | grep "(EE)"
Here is a legend for the types of messages:
(**) from config file
(==) default setting
(++) from command line
(NI) not implemented
Always look for first error message
Also whenever you check for error messages, try to start resolving the problem from the first error message and not the last. A common mistake that many beginners do is that they try to look at the last error message and start resolving from there. Basically, one should just focus on the first error message because the subsequent error messages might be caused because of the first error messages.
Look for all kinds of messages and not just error messages
Another thing to keep in mind is that one should not only look just for error messages but in general they should look for all other kinds of messages also like warnings, informational, etc. Many time the informational messages might give you some kind of clue as to why your X server is not starting up properly (an example follows soon).
Before you start debugging
Before you start chasing those esoteric and contrived error messages I recommend to do the following:
Switch to console mode by hitting Ctrl+Alt+F1 and giving the following command:
# X -configure
# cp xorg.conf.new /etc/X11/xorg.conf
and now you can chase all the error messages in case if your X server fails to start. Many time doing the above steps will cause your X server to start successfully.
You can see the detailed explanation of above steps in one of the previous posts.
Also it is handy to know sometimes what XOrg driver is your X server trying to use.
Error : (EE) module ABI major version (1) doesn’t match the server’s version (2)
We get the above error message when the XOrg driver module that we have compiled was not meant to be used with the current XOrg server. This typically happens when you try to compile your XOrg graphics driver “out-of-tree” i.e. as a 3rd party driver. Typically many times the support for your graphics chipset hasn’t been integrated into the mainline XOrg and therefore you need to compile them on your own.
Solution: Many times you can get rid of the above error message easily by adding just a line (IgnoreABI) in your /etc/X11/xorg.conf file in the “ServerLayout” section as shown below:
Option "IgnoreABI" "Yes"
If your xorg.conf file does not have the “ServerLayout” section, you should create one.
Alternatively, you can simply pass this as an option while starting your X server (not tested by me):
# startx -- -ignoreABI
Informational: No LVDS found (via ACPI); If you do have an LVDS panel, try adding Option “IgnoreACPI”
The above is an example where the clue is not in the error message but in one of the informational (II) lines:
(II) PSB(0): No LVDS found (via ACPI)
(II) PSB(0): If you do have an LVDS panel, try adding Option "IgnoreACPI"
Solution: The answer is right in the info message – add “IgnoreACPI” in your xorg.conf file:
Option "IgnoreACPI" "1"
Error: /usr/bin/X: symbol lookup error: /usr/lib/xorg/modules/drivers//i128_drv.so:
Fortunately the above error is not a fatal error and can be easily solved by adding appropriate symlinks. Usually these error happens when you compile a Xorg graphics driver from source.
Solution: Many XOrg driver that you compile will produce a deb package called “libdrm-i128″ (or “libdrm-<graphics-driver-name”) which you need to install. This package installs a file starting with the word “libdrm” at the following location like this:
All you need to do is create a symlink in the /lib/ directory like this:
# ln -s /usr/lib/libdrm.so.2.3.0 /lib/libdrm.so.2.3.0
Also you need to delete any other file from the /usr/lib/ that has a similar name. For example, in my case I had a similar file called as:
and I deleted the file:
# rm /usr/lib/libdrm.so.2.4.0
Now restart your X server again and hopefully it will start successfully.
Error: Failed to load module “dri2″ (module does not exist, 0)
Again fortunately this is not a serious/fatal error which would take time to resolve. The reason one gets this error message is because the X server is trying to load the new dri2 module which is typically required for 3D acceleration stuff. Some of the newer versions of X server have started to build this dri2 module.
Solution: You simply comment the following line in your xorg.conf file in the Modules section.
If the X server still tries to load the “dri2″ module, you can add the following line in the Modules section:
Also, there is a more comprehensive list of error messages and its solutions on XOrg’s FAQ website.