转自:https://barryx.cn/build_bootlin_elixir
平时经常使用elixir.bootlin.com查看内核源码,很方便。但是苦于该站点服务器在国外,国内用起来很卡很慢,所以想着自己在本地搭一个。
使用环境
Host:Ubuntu 20.04 (Kernel 5.15)
Docker:ubuntu:latest
准备工作
安装依赖
apt-get -y install python3 python3-pip python3-jinja2 python3-bsddb3 python3-pytest perl git libjansson4 libyaml-0-2 wget pip3 install falcon
下载两个特殊依赖并安装
wget https://bootlin.com/pub/elixir/universal-ctags_0+git20200526-0ubuntu1_amd64.deb wget https://bootlin.com/pub/elixir/Pygments-2.6.1.elixir-py3-none-any.whl dpkg -i universal-ctags_0+git20200526-0ubuntu1_amd64.deb pip3 install Pygments-2.6.1.elixir-py3-none-any.whl
配置环境变量
- 修改
/etc/profile
,在末尾增加(具体路径可改为其它)
export LXR_REPO_DIR=/srv/elixir-data/linux/repo export LXR_DATA_DIR=/srv/elixir-data/linux/data
- 使环境变量生效
source /etc/profile
下载配置kernel源码
- 下载kernel源码(建议使用清华大学开源镜像站:https://mirrors.tuna.tsinghua.edu.cn/kernel/)
(以5.15内核为例,可以根据需要自行调整)
wget https://mirrors.tuna.tsinghua.edu.cn/kernel/v5.x/linux-5.15.33.tar.gz
- 建立相应目录
mkdir -p $LXR_REPO_DIR mkdir -p $LXR_DATA_DIR
- 解压至
$LXR_REPO_DIR
tar -zvxf linux-5.15.33.tar.gz --strip-components 1 -C $LXR_REPO_DIR
配置apache服务器
安装依赖
apt install -y apache2 libapache2-mod-wsgi-py3
- 修改
/etc/apache2/sites-available/000-default.conf
(默认监听80端口,可以按照自己需要调整)
<Directory /usr/local/elixir/http/> Options +ExecCGI AllowOverride None Require all granted SetEnv PYTHONIOENCODING utf-8 SetEnv LXR_PROJ_DIR /srv/elixir-data </Directory> <Directory /usr/local/elixir/api/> SetHandler wsgi-script Require all granted SetEnv PYTHONIOENCODING utf-8 SetEnv LXR_PROJ_DIR /srv/elixir-data </Directory> AddHandler cgi-script .py <VirtualHost *:80> ServerName MY_LOCAL_IP DocumentRoot /usr/local/elixir/http WSGIScriptAlias /api /usr/local/elixir/api/api.py AllowEncodedSlashes On RewriteEngine on RewriteRule "^/$" "/linux/latest/source" [R] RewriteRule "^/(?!api|acp).*/(source|ident|search)" "/web.py" [PT] RewriteRule "^/acp" "/autocomplete.py" [PT] </VirtualHost>
- 配置apache.conf
echo -e "\nHttpProtocolOptions Unsafe" >> /etc/apache2/apache2.conf
- 开启依赖模块
a2enmod cgi rewrite
- 启动apache
/usr/sbin/apache2ctl -D FOREGROUND
安装配置bootlin/exilir
- 进入
$LXR_REPO_DIR
目录,更改REPO目录以及www-data的用户目录所有者为www-data
cd $LXR_REPO_DIR cd .. chown -R www-data ./repo cd /var chown -R www-data ./www
- 切换账号到www-data操作(避免一些权限问题引起的错误)
修改/etc/passwd
,使其可以登录。找到www-data一行,将其改为
www-data:x:33:33:www-data:/var/www:/bin/bash
修改www-data用户密码(自己设置一个)
passwd www-data
切换至www-data(可能提示输入密码,输入上面设置的就行)
su www-data
- 回到
$LXR_REPO_DIR
,进行git初始化(带有v5.15版本号的可以根据自己需要调整)
cd $LXR_REPO_DIR git config --global user.email "[email protected]" git config --global user.name "Your Name" git init git add . git commit -m 'v5.15' git tag v5.15
- 切换回管理员用户,如
su ubuntu
,将bootlin/elixir项目clone下载
git clone https://github.com/bootlin/elixir.git /usr/local/elixir/
(最好不要修改/usr/local/elixir/
)
- 生成索引
git config --global --add safe.directory $LXR_REPO_DIR cd /usr/local/elixir/ python3 update.py
(大约需等待一小时左右)
如果执行 python3 update.py 时报“ctags: Unknown option: --kinds-c” 的警告,解决办法参考:https://www.cnblogs.com/wanglouxiaozi/p/16987386.html
- 大功告成,在浏览器输入对应地址即可查看~
官方给出了dockerfile:https://github.com/bootlin/elixir/tree/master/docker,但笔者使用这个安装后打开浏览器是空白页面,推测是权限问题,所以选择了手动配置。
Ref
bootlin/elixir:https://github.com/bootlin/elixir
标签:www,LXR,内核,bootlin,elixir,data,DIR From: https://www.cnblogs.com/wanglouxiaozi/p/16991692.html