Browse the Linux Kernel Source with LXR
LXR (stands for Linux Cross-Reference), is a great tool which indexes the source code of the Linux Kernel and allows you browse the source in your favorite browser (Firefox), with quick references for all functions/files referenced in that code. (it’s not limited to use in Linux Kernel though, and can be used to index any large project’s source code).
Whenever I need to touch the Linux Kernel code, I first open a new tab with LXR, another with Google ready to work, and a shell terminal ready for grep queries.
This post will deal with installing LXR on Ubuntu and making it work.
1. First we need to install Apache (http server) and related stuff:
sudo apt-get install apache2 libapache2-mod-perl2
sudo apt-get install libcgi-simple-perl libcgi-ajax-perl libhtml-parser-perl libtemplate-perl
2. Install LXR
sudo apt-get install lxr
3. Now we need to install Glimpse, which is a powerful indexing tool used by LXR:
First we need to download the latest version from Glimpse’s homepage. Click here to download.
Extract the tarball:
tar xzf glimpse-latest.tar.gz
Now we need to install flex (needed for installing glimpse)
sudo apt-get install flex
In the top directory of glimpse run these:
./configure
make
sudo make install
4. Open /etc/apache2/httpd.conf with your favorite text editor (vim) as root, and add these:
# Linux Cross Reference Stuff
Alias /lxr /usr/share/lxr
<Directory /usr/share/lxr>
Options All
AllowOverride All
</Directory>
5. Open the file /usr/share/lxr/http/.htaccess with your favorite text editor and add these:
<Files ~ (search|source|ident|diff|find)$>
SetHandler cgi-script
</Files>
6. Go to /usr/share/lxr/source/
7. Create a directory with the Kernel version number. For example:
mkdir 2.6.22
8. Download the Kernel Source from kernel.org into /usr/share/lxr/source/2.6.22
9. untar the source tarball inside the 2.6.22 directory
10. Add the version number to /usr/share/lxr/source/versions:
echo 2.6.22 > /usr/share/lxr/source/versions
11. Create a symbolic link to 2.6.22 to make also the default version displayed:
ln -s /usr/share/lxr/source/2.6.22 /usr/share/lxr/source/defversion
12. Generate the cross-reference (This might take a few minutes):
cd /usr/share/lxr/source/2.6.22/
genxref
glimpseindex -H . .
13. Give permissions to http server to read the files:
chown www-data.www-data .glimpse_*
chown -R www-data.www-data /usr/share/lxr/
chown www-data.www-data fileidx
14. restart apache
/etc/init.d/apache2 restart
15. Open /usr/share/lxr/http/lxr.conf with a text editor.
Change this line:
sourceroot: /usr/share/lxr/source/$v/linux/
into:
sourceroot: /usr/share/lxr/source/$v/
16. That’s it, now open firefox, and go to:
http://localhost/lxr/http/blurb.html
- Note: It’s possible to cross-reference multiple source code projects (or multiple kernel versions). See more information in the sites linked below.
You should be able to browse the Kernel source files like the screenshot below:
Enjoy
Credits:
If you enjoyed this post, make sure you subscribe to my RSS feed!No related posts.
6 Comments to Browse the Linux Kernel Source with LXR
Leave a Reply
About Me
Tags
Categories
- Algorithms
- Bash
- BlackBerry
- Collaboration
- Command Line
- Cool Tricks
- Easter Eggs
- Ebooks
- Firefox
- Hardware
- Humor
- iPhone
- Linux
- Linux Development
- Linux Kernel
- Networks
- Open Knowledge
- Other
- Productivity
- Programming
- Regular Expressions
- Science
- Security
- Shell Scripts
- Short Posts
- Social Networks
- Thoughts
- Tools
- Vim
- Web Development
- Websites
Popular Posts
Calendar
Archives
- September 2010 (2)
- August 2010 (2)
- July 2010 (5)
- June 2010 (1)
- May 2010 (1)
- April 2010 (3)
- March 2010 (1)
- January 2010 (1)
- December 2009 (2)
- September 2009 (13)
- July 2009 (1)
- June 2009 (6)
- May 2009 (4)
- March 2009 (18)
- February 2009 (10)
- January 2009 (10)
- December 2008 (7)
- November 2008 (8)
- October 2008 (1)
- August 2008 (1)
- July 2008 (1)
- June 2008 (1)


Hi buddy,
One correction, before doing
chown www-data.www-data .glimpse_*
we need to do cd /root
and also
in /usr/share/lxr/http/lxr.conf
the value of glimpsebin have to be changed to
glimpsebin: <Directory glimpse has been installed/glimpse/bin
It works fine for everything…………….Great work Buddy very helpful
@Karthik, thank you for you comment, and for the corrections. Pleased that you found it helpfull
Thank You, good work. For me works perfectly, but I had to add: chmod a+rwx .glimpse_*
Happy to help
I’m looking for a little help with installing LXR as per your instructions. Everything fine until I click on “Browse the code”. Get a 404 error “URL /lxr/http/source/ not found. No directory called “source” under “/lxr/http” Any advice would be welcomed. Regards, Mike
Firstly,thank you for sharing it!But I have a problem: when I open a file of .c,it shows: warning:Cannot open the xref database.What should I do?