让你编译出只属于自己电脑系统的专属内核
Tofloor
poster avatar
kikiki
deepin
2011-08-22 20:27
Author
编译内核,初听后的第一感觉就是觉得“这也太深奥了吧”!,对,如果要编译出一个运行效率极高又要适合众多不同配置的电脑无任何差错运行的发行版内核,确实所需要做的事实在太多。然而,如果你只想编译出一个只属于自己的电脑适合运行的内核的话,情况会变得很简单。首先要克服“编译”这二个字的困惑,其实这根本就是按需调整而已,而调整的过程和配置别的软件其实也差不多【图形界面配置环境下】。好了,让我们进入正题,编译出一个只属于自己的Linux内核来。
第一、安装编译内核所需的软件
1、终端输入:sudo apt-get install build-essential kernel-package libncurses5-dev fakeroot
                       sudo apt-get install libqt3-headers libqt3-mt-dev libqt3-compat-headers  libqt3-mt
2、下载最新的内核原码:http://www.kernel.org/    记住,一定得下载Full source版的,也就是完整版。

第二、解压原码和调整配置  【我一般做到这里前,先重起动一下电脑。我迷信,坏习惯】
1、把你下载回来的原码放到一个方便自己找到且记忆的地方【随便放哪里,但我建议在家目录里新建一文件夹,把内核原码放在这里】。需要注意的是,你这个目录的空余空间必需大于2G以上,我编译完事后,这个文件夹大小在2G。
2、终端进入这个文件夹 CD ××××××/×××××/   
3、解压原码,在内核原码当前目录里终端输入:tar jfx linux-××××××.tar.bz2    【××××××是你下载来的内核版本号】。
4、解压完成后,我们在终端进入解压出来的这个内核文件夹内。
5、如果是刚解出来的原码包可以跳过此步,如果有任何编译过的操作请执行:make mrproper 命令,切记!
6、把当前系统正在使用的内核配置文件考贝过来【这个当前系统必需能正常使用,没什么BUG存在】,
     终端输入命令:cp /boot/config-`uname -r` ./.config  
7、最重要的精简内核步骤开始了,记住如果想让你编出的内核精小而在这对台电脑上使用没任何差错的话,务必在这步操作时,先加载一下自己所有的外设:如打印机,就先打一张纸;视频摄像头开下;U盘也先插入让系统加载下;IOS文件也挂载下……其他你还有的东西都必需用一次【这些操作其实也就是让现在这个系统内核写入动态加载的模块按你自己有的东西加载起来,免得以后系统不认识】
8、等你所有的东西都使用一遍后,我们开始精简内核【就是把自己没有的东西不写入内核或模块】,
      终端输入命令:make localmodconfig   【中间过程会让你做选择题,我们全部直接敲“回车”键就行了】
9、等命令完全执行完后,如果你还想再调整一下其他东西就终端命令:make xconfig  【会出来一个配置界面,看到这个你就会觉得其实内核编译也很方便的 】调整好了记得按下保存按钮啊!!![color=#BF0000:ixkrplfc]不太建议刚玩内核编译的人去弄这个,如果第一次搞糟了就会在很大程度上打击你的自信心,等以后咱熟练了在细仔看过金大侠的那篇关于内核编译的译文后再来玩这个[/color:ixkrplfc]。
第三、编译内核
1、终端输入命令:sudo make-kpkg clean   等命令完成。
2、终端输入命令:sudo make-kpkg  --initrd --append-to-version=-deepin-11.06.1 kernel_image kernel-headers
     解释下:这个命令里的“-deepin-11.06.1”你可以写上你自己喜欢的名字,好象名字结尾一定要用数字的,不用数字结尾我没试过。“kernel_image和 kernel-headers”就是生成二个deb包,包的名字前缀就是“-deepin-11.06.1”。
3、刚你敲入回车键后就静等编译完成吧,我的老电脑是一个小时,你的电脑强劲可能会更快点。开始编译后不建议在进行别的操作,因为整个编译过程是对CPU的考验,至少对我的老电脑在说是这个样的。
4、编译完成后,终端界面没什么出错提示的话【呵呵,如果有错也就编译不下去了】,你就可以关闭终端。
5、新编译出来的内核安装包在你一开始新建的文件内核,也就是原码包的上层目录里。找到后你就可以安装这个只属于你的内核了。【建议安装开源的显卡驱动,闭源驱动在新内核里好象问题挺多的】
6、安装完成重起电脑后,在启动界面你一定能看到自己亲手编译的这个内核版本已经默认放在头条了,心里是不是特高兴?等正常进入系统后你一定是十二万分的高兴吧…… :
好了,全文完毕!这个过程我在发贴前亲手用最新内核3.0.3编译过,并安装正常进入系统后发的贴。顺便祝充满好奇心的你也能顺利完成!!!谢谢观看……!
Reply Favorite View the author
All Replies
bbbbb
deepin
2011-08-22 22:43
#1
小白表示鸭梨很大呀!内核的英文都看不懂。
Reply View the author
jouyouyun
deepin
2011-08-23 05:11
#2
7、最重要的精简内核步骤开始了,记住如果想让你编出的内核精小而在这对台电脑上使用没任何差错的话,务必在这步操作时,先加载一下自己所有的外设:如打印机,就先打一张纸;视频摄像头开下;U盘也先插入让系统加载下;IOS文件也挂载下……其他你还有的东西都必需用一次【这些操作其实也就是让现在这个系统内核写入动态加载的模块按你自己有的东西加载起来,免得以后系统不认识】
8、等你所有的东西都使用一遍后,我们开始精简内核【就是把自己没有的东西不写入内核或模块】,
      终端输入命令:make localmodconfig   【中间过程会让你做选择题,我们全部直接敲“回车”键就行了】
这一步是在编译内核之前进行吗?
Reply View the author
kikiki
deepin
2011-08-23 05:20
#3
[quote]
7、最重要的精简内核步骤开始了,记住如果想让你编出的内核精小而在这对台电脑上使用没任何差错的话,务必在这步操作时,先加载一下自己所有的外设:如打印机,就先打一张纸;视频摄像头开下;U盘也先插入让系统加载下;IOS文件也挂载下……其他你还有的东西都必需用一次【这些操作其实也就是让现在这个系统内核写入动态加载的模块按你自己有的东西加载起来,免得以后系统不认识】
8、等你所有的东西都使用一遍后,我们开始精简内核【就是把自己没有的东西不写入内核或模块】,
      终端输入命令:make localmodconfig   【中间过程会让你做选择题,我们全部直接敲“回车”键就行了】
这一步是在编译内核之前进行吗?[/quote]
这一步要在编译内核之前进行!
Reply View the author
jouyouyun
deepin
2011-08-23 06:25
#4
谢谢啦!哈哈,编译成功!
Reply View the author
ldzlylbytom
deepin
2011-08-23 15:09
#5
不知我那本本双核本本能不能编呀,
Reply View the author
kikiki
deepin
2011-08-23 19:39
#6
不知我那本本双核本本能不能编呀,
一样的操作啊,只不过你是本本用户的话,最好先确认你现在用的这个社区版系统运行十分稳健。
Reply View the author
tyuio333
deepin
2011-08-23 21:20
#7
问题出在这里: cp /boot/config-`uname -r` ./.config 这一步操作在以前的深度版本里提示找不到.config ,所以我采用make  oldconfig 来代替 ,再用make menuconfig 来配置内核。
编译时我用的是make-kpkg clean
fakeroot make-kpkg --initrd --append-to-version=-custom kernel_image kernel_headers
在使用sudo编译的时候不知道是因为权限还是有其他错误,不能成功编译。
Reply View the author
tyuio333
deepin
2011-08-23 21:22
#8
以下是我的编译方法

1.准备工作
          打开终端获得root权限打开终端获得root权限:sudo su
然后安装编译内核时需要的工具:

apt-get install build-essential kernel-package libncurses5-dev libqt3-headers

build-essential  (基本的编程库(gcc, make等)
kernel-package   (Debian 系统里生成 kernel-image 的一些配置文件和工具)
libncurses5-dev  (meke menuconfig要调用的)
libqt3-headers   (make xconfig要调用的)

这一步我是通过新立得软件包获得的,直接搜索并下载安装的(有投机取巧嫌疑),

2 .下载内核源代码linux-2.6.37.tar.bz2
            请到www.kernel.org官网下载最新版本linux-2.6.37.tar.bz2内核
假设下载在root目录,然后解压到/usr/src/linux-2.6.37目录里,大家直接用root用户身份登录,在图形界面下进入到/usr/src下用右压即可
解压后会在/usr/src生成新文件夹linux-2.6.37

3.由于接下来我找不到 .config 所以采用如下方法实现,在/usr/src/linux-2.6.37文件夹下打开终端并执行

  # make oldconfig
     执行完此命令会根据新老内核的差异,询问一些问题,如象我样是新手,不懂其中含义,可以直接回车跳过。
之后执行
#make menuconfig

然后我们看到内核的配置菜单. 移动绿色光标到 Load an Alternate Configuration File 行后选择.config文件(包含了当前工作内核的配置)做为配置文件:
然后浏览内核配置菜单, 选择你需要的功能. 完成配置后, 选择Exit, 回答下面的问题(Do you wish to save your new kernel configuration? 你希望保存新的内核配置吗?), 选择Yes:

4. 构建内核
执行下面命令来构建内核:
make-kpkg clean
fakeroot make-kpkg --initrd --append-to-version=-custom kernel_image kernel_headers

在--append-to-version= 后面你可以写上任何字符串来区别内核版本, 但是必须以" - "符号开始而且后面不包括任何空格.
保持耐心, 内核编译需要一定时间, 主要看你的内核配置和处理器速度.

5.安装新内核
新生成的内核会在usr/src/生成两个名为xxxx.deb的文件
使用dpkg  -i  *.deb来安装
Reply View the author
nhnhwsnh
deepin
2011-08-23 22:20
#9
精品好文章啊
Reply View the author
188******20
deepin
2011-08-24 07:01
#10
看到精简内核那步,感到压力很大啊,要是忘了在系统应用某设备,驱动以后重新添加?先留个脚印。
Reply View the author
debian
deepin
2011-08-26 04:12
#11
配置内核如果用的是xconfig,在opion里选上show name(显示模块名)会更清楚点。
Reply View the author