Chinaunix首页 | 论坛 | 博客
  • 博客访问: 621733
  • 博文数量: 69
  • 博客积分: 1891
  • 博客等级: 上尉
  • 技术积分: 1359
  • 用 户 组: 普通用户
  • 注册时间: 2010-11-20 23:38
文章分类

全部博文(69)

文章存档

2012年(46)

2011年(23)

分类: LINUX

2011-06-30 20:34:13

    说实话,在看书的时候,感觉内核一直是个想象中的东西,可想而不可触及,所以很难够有着很好的效果。其实没事的时候,我们也可以看看内核的代码,也可以编译一下内核,说不定也可以改改代码什么的,反正,能实践就多动手。这里简单介绍一下内核的编译,以及用lxr+apache+glimpse搭建本地代码服务器。

环境:ubuntu 11.04 linux-2.6.38
==================编译内核==================================
编译内核其实比较简单了,跟源码安装软件差不多,config,make install一直下去就ok了。
下面简单介绍一下:
第一步,下源码
1.首先查看自己系统使用的内核版本
kenvi@kenvi-laptop:~$ uname -r
2.6.38-10-generic

2.获取源码
寻找源码
kenvi@kenvi-laptop:~$ sudo apt-cache search linux-source
linux-source - Linux kernel source with Ubuntu patches
linux-source-2.6.38 - Linux kernel source for version 2.6.38 with Ubuntu patches

下载内核源码
kenvi@kenvi-laptop:~$ sudo apt-get install linux-source-2.6.38
这样在/usr/src目录下就又了源码的压缩包linux-source-2.6.38.tar.bz
解压即可

第二步,编译
进入解压后源码的目录,make oldconfig
kenvi@kenvi-laptop:/usr/src/linux-source-2.6.38$ :make oldconfig
这里消耗的时间比较长,大概半个多小时,不出错就好了,我这里出了一个小错误:

提示如下:
ld: /ubuntu/

omnibook/sections.lds: No such file: No such file or directory
make[2]: *** [ubuntu/omnibook/omnibook] Error 1
make[1]: *** [ubuntu/omnibook] Error 2
make: *** [ubuntu] Error

解决方法:

ln -s /usr/src/linux-2.6.35/ubuntu /ubuntu


然后make
kenvi@kenvi-laptop:/usr/src/linux-source-2.6.38$ sudo make

最后make bzImange
kenvi@kenvi-laptop:/usr/src/linux-source-2.6.38$ sudo make bzImage

成功的话,会提示Kernel: arch/x86/boot/bzImage is ready  (#2)
这样基本上就完成了


==========================源码服务器搭建=======================
1、环境配置
需要的软件:apache2,libapache2-mod-perl2,lxr,glimpse
前面几个直接apt-get 安装即可
glimpse需要在官网下载安装

2.配置目录
在/etc/apache2/httpd.conf 末尾加上以下内容:
Alias /
lxr /usr/share/lxr
lxr>
Options All
AllowOverride All

这样可以达到 =>
/usr/share/lxr

3.设置脚本
 在/usr/share/lxr/http下创建文件 .htaccess, 并写入一下内容:

SetHandler cgi-script


4.创建/usr/share/lxr/source/XX目录 (XX为版本号)
mkdir /usr/share/lxr/source/2.6.38
然后在
/usr/share/lxr/source/2.6.38 下创建linux符号连接
ln -s /usr/src/linux-source-2.6.38 /usr/share/lxr/source/2.6.38/linux

5. 创建
/usr/share/lxr/source/versions,这里记录所有要看的版本,内容是
2.6.38
要保证2.6.38 =>/usr/share/lxr/source/2.6.38
创建/usr/share/lxr/source/defversion,这里记录缺省要看的版本,内容是
2.6.38
之所以是这两个文件,见/usr/share/lxr/http/lxr.conf里的相关设置

6. 建立索引
cd
/usr/share/lxr/source/2.6.38/
sudo genxref 2.6.38 //这样会在当前目录生成fileidx和xref
sudo glimpseindex -H /usr/share/lxr/source/2.6.38/ /usr/share/lxr/source/2.6.38/linux
(需要等待一段时间)
之所以是这个目录(
/usr/share/lxr/source/2.6.38/),/usr/share/lxr/http/lxr.conf里的相关设置(database项)

7.修改属性,让代码具有可读权限
sudo chmod +r -R /usr/share/lxr/source/2.6.38/*

8.重启服务器,验证
/etc/init.d/apache restart
http/blurb.html






阅读(1359) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~