Chinaunix首页 | 论坛 | 博客
  • 博客访问: 393367
  • 博文数量: 63
  • 博客积分: 3142
  • 博客等级: 中校
  • 技术积分: 838
  • 用 户 组: 普通用户
  • 注册时间: 2007-12-06 13:35
文章分类

全部博文(63)

文章存档

2011年(2)

2010年(114)

2009年(3)

我的朋友

分类: LINUX

2010-06-03 10:01:31

首先用 apg-get 自动下载并安装一些必要的软件包,包括编译内核需要的kernel-package和ncurses-dev等。如果在内核编译、制作过程中,遇到错误提示说某个软件包不存在的话,同样使用 apt-get install 命令进行下载安装。

  apt-get install kernel-package ncurses-dev fakeroot wget bzip2 make patch

  cd /usr/src

  wget

  tar xjf linux-2.6.28.4.tar.bz2

  到 查看最新的内核版本。

  切换到新内核的目录

  cd linux-2.6.28.4

  为了节省时间,执行以下命令从现有内核中获得配置

  make oldconfig

  执行完此条命令后,会根据新老内核的差异情况,询问你一些问题,如果不确定的话都是用默认(直接按回车)。

  以上步骤完成后,执行内核配置程序

  make menuconfig

  至此,内核的配置就算完成了。按 ESC 多次后退出内核配置页面(在系统询问是否要保存新内核的配置时,当然要选择yes)。

  执行以下命令进行新内核的生成!

  make-kpkg clean

  fakeroot make-kpkg --initrd --append-to-version=ofog --revision=1.0 kernel_image

  fakeroot 的作用是在内核的生成过程中暂时性获取root权限(和sudo不同的是fakeroot只是让程序获得root的行为特征而不是真正具备root权限)。如果你直接是用root帐号操作的话,可以省略fakeroot。--append-to-version定义的是内核的软件包名字,类似 kernel-image-2.6.28.4-ofog 这样。而 -revision定义的是软件包的版本。

  现在系统会开始进行新内核的生成,屏幕上会有许多文字闪过。注意,如果生成过程中出现错误,执行 make clean 后,用 make menuconfig 重新配置内核。一般都是仔细看错误信息,找到出错的模块,然后将其去除。

  内核顺利生成完毕后,会在/usr/src目录下产生一个 deb 包。例如 kernel-image-2.6.28.4-ofog_1.0_i386.deb

  执行以下命令安装新内核!

  dpkg -i kernel-image-2.6.28.4-ofog_1.0_i386.deb

  接着Debian会安装新内核并更新Grub的配置文件。

  重新启动(shutdown -r now 或者 reboot)后将会引导到新内核。

 

 

 

编译中会出现以下问题,解决如下:

Filed under: — Nagilum @ 15:23:58

I just upgraded my Debian5 workstation to 2.6.31. While doing so I stumbled over this:

cc -m32 -Wall -Wmissing-declarations -Wmissing-prototypes -O3 -I../../include -I../../arch/x86/include -U_FORTIFY_SOURCE lguest.c -o lguest
lguest.c:21:25: error: sys/eventfd.h: No such file or directory
lguest.c: In function ‘create_thread’:
lguest.c:1021: warning: implicit declaration of function ‘eventfd’
make: *** [lguest] Error 1

This is apparenty due to the old libc-dev package that Lenny comes with. Since libc isn’t exactly a good candidate for a selective upgrade I helped myself with simply editing Documentation/lguest/Makefile and changing:

all: lguest

to

all:

So lguest wont be build anymore. After that make-kpkg binary-arch worked as usual.
I’m also happy to report that my still works on 2.6.31.

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