Ubuntu 22.04.1 配置 LXR 阅读Linux kernel源码

配置环境

首先更新一下

$ sudo apt-get update

根据lxr的官方文档, 我们需要准备Perl,ctags

$ sudo apt-get install perl universal-ctags

数据库这里选择 MySQL 8.0

$ sudo apt-get install mysql-server

关于如何在Ubuntu上配置MySQL的教程,这里给出以下链接:How To Install MySQL on Ubuntu 20.04 | DigitalOcean

文档搜索工具使用 Glimpse 或者 Swish-e,推荐使用 Glimpse

$ sudo apt-get install glimpse

除此之外,我们还需要安装Perl数据库接口 DBI 和 DBD 驱动,由于我们的数据库是MySQL所以这边安装的是libdbd-mysql-perl

$ sudo apt-get install libdbd-mysql-perl

以及Perl模块File::MMagic

$ sudo apt-get install libfile-mmagic-perl

服务器我们选择Apache2

$ sudo apt-get install apache2

由于lxr是使用Perl-script来生成页面,所以我们还需要安装mod_perl

$ sudo apt-get install libapache2-mod-perl2

安装LXR

下载lxr源码包,链接:LXR Cross Referencer download | SourceForge.net

此处下载的是lxr-2.3.6

如果你是浏览器下载的话,lxr源码包会默认下载到你的家目录的Downloads路径下,切换到源码包所在路径, 并且解压。(具体路径以您自身的下载路径以及版本为准)

$ cd ~/Downloads
$ tar -zxf lxr-2.3.6.tgz

接下来非常重要,请将您解压好的文件安装到 /usr/local/share路径下,并重命名文件夹为lxr,否则到时候配置完毕时你会发现403 Forbidden

注意:/usr/local/share/lxr 为您的lxr安装路径,下文以lxr安装路径指代。

$ sudo mv lxr-2.3.6 /usr/local/share/lxr

切换到/usr/local/share/lxr路径下,使用./genxref --checkonly命令对上一节所提到的工具进行检查

$ ./genxref --checkonly

不出意外的话您应该看到以下结果:(其中对应版本以您自身为准)

Ubuntu 22.04.1 配置 LXR 阅读Linux kernel源码_第1张图片

(此处图片引用的是官方文档中的图片)

 配置LXR和数据库

注意:本小节命令都在 /usr/local/share/lxr 路径下使用

使用lxr安装路径中的 configure-lxr.pl 脚本来生成LXR以及其数据库的配置文件

$ ./scripts/configure-lxr.pl -vv 

关于配置请参考官方文档,这里会提到一些比较重要的点

在配置glimpse database时请使用 /usr/local/share/glimpse_DB 路径,之后lxr会自动帮你生成该路径,如果您使用私有路径,既将glimpse_DB放置在家目录下,后面会报403,除非您能该路径有足够的权限让lxr访问到。

在配置您的源码路径时,请使用 /usr/local/share/linux-kernel-project 即你的项目路径。若使用私有路径后面会报403。

注意:该路径需要您到时候自行创建,并将Linux kernel源码放置在该目录下,在后文我会详细说明步骤。 

在配置 Name to display for the path root?这一项时默认即可,以及version name中键入 v1。

在创建 /usr/local/share/linux-kernel-project 时,在该目录下需要再创建v1子目录,并将Linux kernel 源码放置在 /usr/local/share/linux-kernel-project/v1 目录下。

原因还请参考官方文档,

Ubuntu 22.04.1 配置 LXR 阅读Linux kernel源码_第2张图片

配置数据库

注意:此处 DB password最好改一下,原因取决于您之前配置MySQL的password strength等级,若当时您设置的等级较高,后面在创建数据库时可能会报错! 

Ubuntu 22.04.1 配置 LXR 阅读Linux kernel源码_第3张图片

OK,至此LXR配置结束,接下来只需要生成数据库即可

$ ./custom.d/initdb.sh

注意:在MySQL环境下,需要多次设置数据库管理员密码。

最后拷贝 lxr.conf 至最终位置

$ sudo cp custom.d/lxr.conf .

填充数据库

下载Linux kernel源码,链接:Linux Kernel 官网

此处安装的是Linux-6.0,您可以根据自己需求下载对应版本。

在使用脚本填充数据之前,我们需要把Linux kernel 源码解压并放置在上节所提到的路径下。

即 /usr/local/share/linux-kernel-project/v1 下

$ sudo mkdir -vp /usr/local/share/linux-kernel-project/v1

将家目录中Downloads下的Linux kernel 源码解压并放置在刚才所创建的路径下,并重命名为6.0。

$ cd ~/Downloads
$ tar -zxvf linux-6.0-rc5.tar.gz
$ sudo mv linux-6.0-rc5 /usr/local/share/linux-kernel-project/v1/6.0

这样一来,我们的数据就准备充分了。

接下来我们得回到 lxr 安装路径并运行脚本(注意:此处需要权限运行该脚本,因为之前配置glimpse database时我们将其指定在 /usr/local/share 路径下)

$ cd /usr/local/share/lxr
$ sudo ./genxref --url=http://localhost/lxr --version=v1

该过程极度缓慢,大概需要2~3个小时才能搞定,但胜利就在眼前。

配置服务器

此处以Apache2为例。

首先我们需要将lxr生成的配置文件复制到Apache的配置目录 /etc/apache2/conf-available中,并启用该配置。

$ sudo cp custom.d/apache-lxrserver.conf /etc/apache2/conf-available
$ sudo a2enconf apache-lxrserver.conf

在重启Apache之前我们还需更改 /etc/apache2/conf-available/serve-cgi-bin.conf文件中的CGI配置,并启动cgi

$ sudo vi /etc/apache2/conf-available/serve-cgi-bin.conf

并将找到 ScriptAlias项,将其指定到您的lxr安装路径,(下图中红线标出的位置)

Ubuntu 22.04.1 配置 LXR 阅读Linux kernel源码_第4张图片

 保存并退出后,启动cgi

$ sudo a2enmod cgi

根据官方文档我们还需开启mpm_worker

$ sudo a2dismod mpm*
$ sudo a2enmod mpm_worker

为了能使Perl script 工作我们还需要修改一下 /etc/anache2/site-enabled/000-default.conf 文件

$ sudo vi /etc/apache2/site-enabled/000-default.conf

复制以下代码到该文件中(其实就是添加 Directory中的所有代码到对应位置)


         ServerAdmin webmaster@localhost
         DocumentRoot /var/www/html
        
       
               AddHandler perl-script .pl .cgi
               PerlResponseHandler ModPerl::Registry
               Options +ExecCGI +FollowSymLinks +MultiViews
               PerlOptions +ParseHeaders
               AllowOverride All
               Order allow,deny
               Allow from all 
         
         ErrorLog ${APACHE_LOG_DIR}/error.log
         CustomLog ${APACHE_LOG_DIR}/access.log combined
 

这样一来就万事俱备,只需重启Apache即可

$ sudo systemctl restart apache2

最终检查,在浏览器中输入 http://localhost/lxr/source 不出意外的话应该会出现以下内容

Ubuntu 22.04.1 配置 LXR 阅读Linux kernel源码_第5张图片

至此恭喜,配置成功!

 

你可能感兴趣的:(ubuntu,linux,运维)