- 浏览: 133225 次
- 性别:
- 来自: 广州
-
文章分类
最新评论
-
newhxj:
03-21 10:56:35.850: E/Web Conso ...
Android简易Flash播放器[转] -
roiz:
谢谢 很好正需要这资料
精确监听AbsListView滚动至底部[转]
1. 准备
2. 获取源代码
3. 源代码解包
4. 配置内核
5. 创建内核
1. make-kpkg
2. --append-to-version
3. --revision
4. Kernel package names
5. fakeroot
6. 生成内核映像
6. 安装内核映像包
7. 打包完工
1. 保持内核!
2. 删除 symlink
3. 备份你的内核
4. 制作新引导盘
5. 创建你的下一版内核
6. 使用原有配置
8. 检查列表
9. 其他链接
=========================================
Linux内核是Ubuntu操作系统的心脏。Ubuntu自带的内核通常包含你所需要的所有驱动程序,但有时你希望调整你的内核或如果由于某些特别原因你需要重新编译,本手册将帮助你。
象这个不太详尽的文档事实上可以在 KernelCompileHowto 找到。
准备
要创建内核,你需要 build-essential fakeroot 和 kernel-package 包.
[code:1]
bash:~$ sudo apt-get install build-essential fakeroot kernel-package
[/code:1]
内核创建工作在/usr/src/目录进行,为此,添加src组
[code:1]
bash:~$ sudo adduser my_username src
Adding user my_username to group src...
Done.
[/code:1]
注销并重新登录,或使用su再登录(切换用户):
[code:1]
bash:~$ su my_username
bash:~$ groups
my_username src audio adm dialout cdrom floppy video plugdev lpadmin
[/code:1]
会列出所有组名,src是其中之一。
获取源代码
你可以用下面的办法搜索内核源代码
[code:1]
bash:~$ apt-cache search source 2.6
[/code:1]
选择你想要的内核源代码.
* 问题:内核原代码有时叫kernel-source-2.6.5等,而有时又叫linux-source-2.6.8.1,为什么?
kernel-source来自于Debian,linux-source来自Ubuntu。如果可能请尽量使用linux-source。所有的依赖关系都还没有改变,虽然如此,如果你通过linux-source得到像"uninstalled package kernel-source"(反安装内核源码包)的错误警告,你可以安全地忽略他们--Bronson.
使用下列命令下载内核源代码:
[code:1]
bash:~$ sudo apt-get install linux-source
[/code:1]
建议安装libncurese-dev和libqt3-dev包,第一个是menuconfig所需要的,第二个用于xconfig,安装他们中的一个是很小的(见下面的内容)
下载并放源代码至 /usr/src
源代码解包
我将使用UBuntu服务器上的最新的2.6.8.1内核为例来写说明
[code:1]
bash:~$ cd /usr/src
bash:/usr/src$ ls -l
linux-source-2.6.8.1.tar.bz2
[/code:1]
如果你看到一个指向较老内核源代码的linux链接,请删除它。
[code:1]
bash:/usr/src$ rm linux
[/code:1]
如果原来的linux链接仍保存在这里的话不要解包。因为如果你的新源代码直接解包至旧内核原代码目录中,创建工作将不会成功。
解开压缩包用:
[code:1]
bash:/usr/src$ tar xjvf linux-source<version>.tar.bz2
[/code:1]
不要使用sudo,这里并不需要。
如果源代码是.bz2格式,使用tar jxvf,如果是.gz则用tar zxvf
这里应该会以你和src组名义创建一个叫linux-source-2.6.8.1的目录。
创建一个叫linux的内核源代码链接
[code:1]
bash:/usr/src$ ln -s linux-source-2.6.8.1 linux
[/code:1]
在当前位置查看一下,你将看到象这样的情况:
[code:1]
bash:/usr/src$ ls
linux@ linux-source-2.6.8.1/ linux-source-2.6.8.1.tar.bz2
[/code:1]
配置内核
有几种方法来配置内核。你将可能使用"xconfig"。改变当前目录至/usr/src/linux目录,象这样启动:
[code:1]
bash:/usr/src/linux$ make xconfig
[/code:1]
如果你未使用X,或你不想使用鼠标:
[code:1]
bash:/usr/src/linux$ make menuconfig
[/code:1]
警告:至少,你必须确认将你所用的总线(bus)、磁盘 (disk)、根分区文件系统(root filesystem)驱动程序直接编译进你的内核。否则,你的新内核映像将无法启动。查看 KernelBuildpackageHowto 来获得无需重新配置内核的方法。
创建内核
make-kpkg
创建内核你要用到"make-kpkg",脚本会自动替换这个命令系列"make dep; make clean; make bzImage; make modules"。花点时间阅读手册中make-kpkg部分。make-kpkg命令行可能有些复杂而首次使用会被吓倒。它的基本语法是:
[code:1]
bash:/usr/src$ make-kpkg <options> <target>
[/code:1]
你的目标target将成为"kernel_image"。让我们以较为重要而通用的两个选项(options)进行探讨,"--append-to- version"和"--revision".
--append-to-version
第一个选项让你添加特别项至内核版本号中,它会成为内核名的一部分。你可以使用字母,"+"和"."(小数点或句号);但不能使用下划线"_"。
这个是当前运行的内核:
[code:1]
bash:/usr/src$ /usr/src/$ uname -a
Linux da5id 2.6.8.1-2-k7 #1 Sat Sep 18 11:23:11 BST 2004 i686 GNU/Linux
[/code:1]
使用--append-to-version时要避免使用象"-686","-k7"和"-sparc"的字串,因为它们常常在Debian预编译内核中被使用。
内核模块放在/lib/modules子目录中;每个内核都有它自己的子目录。你每次安装新命名的内核映像,包安装器会创建一个象/lib /modules的新子目录来存放它的模块。
这就意味着你每次用--append-to-version创建内核映像名,你可以使新内核有一个新名字,从而使它的模块不会与其他内核产生冲突。
如果你用与已安装的内核相同的名称安装内核(相同的版本号和 --append-to-version),安装新内核的包将覆盖旧内核和它的模块。这时你将被警告并被建议退出退出。退出,用另一个append- to-version值来重建内核吧。
--revision
另一个make-kpkg选项是"--revision",它会指定Debian的名字打包而不是内核名。如用--append-to-version,你只能使用字母,"+"和".",而不能使用线"_"。如果你不提供--revision值,make-kpkg将使用"10.00.Custom"。
使用不同的--revision值将无法避免用相同内核名产生的冲突。他们只是让你看起来不同,比如重新编译变化很小的相同内核。
内核包名
Debian内核映像文件名如:
kernel-image-(kernel-version)(--append-to-version)_(--revision)_(architecture).deb
在第一个下划线之前所有字符就是内核包名
[code:1]
bash:/usr/src$ ls
kernel-image-2.6.8.1.181004_10.00.Custom_i386.deb
[/code:1]
现在你就能明白为什么下划线是不允许在make-kpkg选项中出现了--他们隔开包名的各部分。
我建议你为每个编译的内核使用不同的--append-to-version值,并让make-kpkg指定缺省的revision值。Date- based值对我有用,但你可以根据自己的计划自由设定。
如果--append-to-version或--revision值未被清除,或如果你希望使用与我建议的选项不同,请阅读 /usr/share/doc/kernel-package/README.gz。(可以这样做到:"zless README.gz")暂时不要去对flavours和epochs进行探讨,直到你用make-kpkg和Debian包更加熟悉;现在它们对你并不十分有用。
fakeroot
当你已添加你自己到src组,使用正常用户的权限就能做好创建内核包的大多数工作。然而内核包的部分(象内核和内核模块)文件将赋予root并使用 root权限运行;它们必须用root权限来创建。
使用fakeroot,你可以用普通用户来启动make-kpkg,并且大多数工作将运行于普通权限。工作接近尾声时,fakeroot将模拟一个 root环境来创建内核映像包。
手册中有关make-kpkg的部分描述了使用fakeroot的一种方法;我们将使用make-kpkg命令行开始处输入"fakeroot"的较简单的方法来做,象这样:
fakeroot make-kpkg <options> <target>
制作内核映像
最后!马上就要完工了--你准备制作一内核映像。
bash:/usr/src/linux $ fakeroot make-kpkg clean
然后:
[code:1]
bash:/usr/src/linux $ fakeroot make-kpkg --append-to-version=.181004 kernel_image --initrd binary
[/code:1]
现在你所要做的就是等计算机来完成了。在计算机完美的工作中让我们轻松片刻吧。
安装内核映像包
一旦内核映像被创建,你就可以安装内核映像包了,它包含内核和内核模块。首先退回/usr/src目录并列出里面的内容,来检测并确认它被成功创建。
[code:1]
bash:/usr/src/linux$ cd ..
bash:/usr/src$ ls
kernel-image-2.6.8.1.181004_10.00.Custom_i386.deb
linux@
linux-source-2.6.8.1/
linux-source-2.6.8.1.tar.bz2
[/code:1]
有了!注意--append-to-version值是如何成为内核名的一部分的。
安装内核和所有的内核模块:
bash:/usr/src$ sudo dpkg -i kernel-image-2.6.8.1.181004_10.00.Custom_i386.deb
从磁盘安装内核映像包(象对应地从Debian包文件安装)要使用完整的文件名。你可以使用tab键来补齐命令行。
如果每一步都做得很好,你现在要做的就是重新启动。如果新内核无法启动,则启动你原来的内核或插入你的引导软盘并重新启动。调整你的内核配置,重试。
结束
保持内核!
如果你已使用--append-to-version,你不需要为apt-get试图"upgrade"你的内核而担心。如果你试图这样,你只要这样:
[code:1]
bash:~$ echo "kernel-image-2.6.8.1.181004 hold" | sudo dpkg --set-selections
[/code:1]
当然你要用你真实的内核名来代替。查阅dpkg的包以了解有关使用包名比完整的文件名更好。同样,"|"字符输入是\符的上位(Shift)...
[code:1]
bash:~$ dpkg --get-selections | grep kernel-image
kernel-image-2.6.8.1.181004_10.00.Custom_i386.deb hold
[/code:1]
一些人写了关于保持包,如何操作等等.
删除符号链接
接下来,你要在/usr/src目录创建符号链接。这样做有几个原因:
1.下次你下载一个不是Debian格式的内核包,当你解开这个源代码包时会通过旧符号链接覆盖你的旧源码目录树。这是令人不快的事。
2.下次你下载Debian格式的内核源代码,你可能解开源代码到它自己的目录树这个没有问题,但你已有一个叫"linux"的符号链接在src目录里的话,你可能进入并编译旧内核(忘了它之前已经链接到一个旧源代码树)。
3. 当你下载补丁或其他源代码到一个特定的源代码树,你不要想做任何事情,则否弄坏它。通过删除符号链接可以防止#1问题的发生。
删除符号链接这样做:
[code:1]
bash:~$ rm /usr/src/linux
[/code:1]
备份你的内核
这并不是必须的,但备份你的定制内核.deb是个好主意,复制它到一个安全之处。
一旦你的内核已经与它的模块一起打包,你可以安装它到有你的硬件的其他机器上,它也可以在你重设系统后重新安装到当前机器上。
制作新引导盘
你刚安装好内核,要创建另一个引导磁盘。得到另一个软件--覆盖你的旧引导盘不是个好主意;你还没有足够长的时间使用你的新内核来验证它的工作。如果你弄糟了你的系统,一张引导盘是必须的。
[code:1]
bash:/usr/src# cd /boot
bash:/boot# mkboot /boot/vmlinuz-2.4.18.030320
[/code:1]
创建你的下一个内核
如果你因为刚刚买了一块新声卡想重新编译你的内核,或你在第一次编译时忘了某个新功能,你需要做的是重新配置,"fakereoot make-kpkg clean",用不同的--append-to-version值重新编译。看起来象这样:
[code:1]
bash:~$ cd /usr/src
bash:/usr/src$ ln -s linux-source-2.6.8.1 linux
bash:/usr/src$ cd linux
bash:/usr/src/linux$ make xconfig
(reconfigure your kernel)
bash:/usr/src/linux$ fakeroot make-kpkg clean
(lots of cleaning here)
bash:/usr/src/linux$ fakeroot make-kpkg --append-to-version=.181004 kernel_image --initrd binary
(screens and screens of stuff)
[/code:1]
使用已经存在的配置
当你安装好你制定的内核,它的配置被复制至/boot/config-x.y.z。你可能为了保险起见或以后还要使用而想保存它至其他地方(或几个地方)。
假如刚刚在上周你谨慎地通过了内核选项的迷宫,而又决定你希望支持所有硬件和功能配置,今天一个新的稳定内核被释放和导致你希望升级版本。
下载并解开新源代码包并创建一个新符号链接,然后改变目录至/usr/src/linux,复制你已经存在的配置到这里并"make oldconfig":
[code:1]
bash:/usr/src/linux$ cp /boot/config-2.4.18.030320 .config
bash:/usr/src/linux$ make oldconfig
[/code:1]
你将被问及一些新内核选项的有关问题。所有的问题回答"no"它通常是安全的;新选项你应该引起注意。
你完成oldconfig之后,你可以运行xconfig或menuconfig来检查你所选择的项目,改变你的答案,或研究你注意的选项。
用你自己的配置创建最新稳定内核
fakeroot make-kpkg clean
检查列表
1. 制作备份引导盘
2. 安装需要的包
1. build-essential fakeroot kernel-package
3. 设置源代码目录树
1. 添加你自己的源代码,注销,登录,使用使用组确认。
2. 删除旧符号链接
3. 解包源代码压缩包
4. 制作和检查新符号链接。
4. 配置内核
1. 使用旧的有效配置文件,cp /boot/config-x.y.z .config
2. make oldconfig或make xconfig或make menuconfig.
3. 保存稍迟需要用到的.config文件
5. 创建内核映像包
1. fakeroot make-kpkg clean
2. fakeroot make-kpkg --append-to-version=alpha+numeric.but.no.underscore kernel_image --initrd binary
6. 安装内核映像包
1. dpkg -i kernel-image-x.y.z.yy.mm.dd_10.00.Custom_i386.deb
2. 重启
7.下一步是什么?
8.保持你的包. echo "kernel-image-x.y.z.yymmdd hold" | dpkg --set-selections
9. 删除符号链接。
10.备份内核映像。
11. 删除旧的内核映像包。
12. 制作新的引导磁盘。
2. 获取源代码
3. 源代码解包
4. 配置内核
5. 创建内核
1. make-kpkg
2. --append-to-version
3. --revision
4. Kernel package names
5. fakeroot
6. 生成内核映像
6. 安装内核映像包
7. 打包完工
1. 保持内核!
2. 删除 symlink
3. 备份你的内核
4. 制作新引导盘
5. 创建你的下一版内核
6. 使用原有配置
8. 检查列表
9. 其他链接
=========================================
Linux内核是Ubuntu操作系统的心脏。Ubuntu自带的内核通常包含你所需要的所有驱动程序,但有时你希望调整你的内核或如果由于某些特别原因你需要重新编译,本手册将帮助你。
象这个不太详尽的文档事实上可以在 KernelCompileHowto 找到。
准备
要创建内核,你需要 build-essential fakeroot 和 kernel-package 包.
[code:1]
bash:~$ sudo apt-get install build-essential fakeroot kernel-package
[/code:1]
内核创建工作在/usr/src/目录进行,为此,添加src组
[code:1]
bash:~$ sudo adduser my_username src
Adding user my_username to group src...
Done.
[/code:1]
注销并重新登录,或使用su再登录(切换用户):
[code:1]
bash:~$ su my_username
bash:~$ groups
my_username src audio adm dialout cdrom floppy video plugdev lpadmin
[/code:1]
会列出所有组名,src是其中之一。
获取源代码
你可以用下面的办法搜索内核源代码
[code:1]
bash:~$ apt-cache search source 2.6
[/code:1]
选择你想要的内核源代码.
* 问题:内核原代码有时叫kernel-source-2.6.5等,而有时又叫linux-source-2.6.8.1,为什么?
kernel-source来自于Debian,linux-source来自Ubuntu。如果可能请尽量使用linux-source。所有的依赖关系都还没有改变,虽然如此,如果你通过linux-source得到像"uninstalled package kernel-source"(反安装内核源码包)的错误警告,你可以安全地忽略他们--Bronson.
使用下列命令下载内核源代码:
[code:1]
bash:~$ sudo apt-get install linux-source
[/code:1]
建议安装libncurese-dev和libqt3-dev包,第一个是menuconfig所需要的,第二个用于xconfig,安装他们中的一个是很小的(见下面的内容)
下载并放源代码至 /usr/src
源代码解包
我将使用UBuntu服务器上的最新的2.6.8.1内核为例来写说明
[code:1]
bash:~$ cd /usr/src
bash:/usr/src$ ls -l
linux-source-2.6.8.1.tar.bz2
[/code:1]
如果你看到一个指向较老内核源代码的linux链接,请删除它。
[code:1]
bash:/usr/src$ rm linux
[/code:1]
如果原来的linux链接仍保存在这里的话不要解包。因为如果你的新源代码直接解包至旧内核原代码目录中,创建工作将不会成功。
解开压缩包用:
[code:1]
bash:/usr/src$ tar xjvf linux-source<version>.tar.bz2
[/code:1]
不要使用sudo,这里并不需要。
如果源代码是.bz2格式,使用tar jxvf,如果是.gz则用tar zxvf
这里应该会以你和src组名义创建一个叫linux-source-2.6.8.1的目录。
创建一个叫linux的内核源代码链接
[code:1]
bash:/usr/src$ ln -s linux-source-2.6.8.1 linux
[/code:1]
在当前位置查看一下,你将看到象这样的情况:
[code:1]
bash:/usr/src$ ls
linux@ linux-source-2.6.8.1/ linux-source-2.6.8.1.tar.bz2
[/code:1]
配置内核
有几种方法来配置内核。你将可能使用"xconfig"。改变当前目录至/usr/src/linux目录,象这样启动:
[code:1]
bash:/usr/src/linux$ make xconfig
[/code:1]
如果你未使用X,或你不想使用鼠标:
[code:1]
bash:/usr/src/linux$ make menuconfig
[/code:1]
警告:至少,你必须确认将你所用的总线(bus)、磁盘 (disk)、根分区文件系统(root filesystem)驱动程序直接编译进你的内核。否则,你的新内核映像将无法启动。查看 KernelBuildpackageHowto 来获得无需重新配置内核的方法。
创建内核
make-kpkg
创建内核你要用到"make-kpkg",脚本会自动替换这个命令系列"make dep; make clean; make bzImage; make modules"。花点时间阅读手册中make-kpkg部分。make-kpkg命令行可能有些复杂而首次使用会被吓倒。它的基本语法是:
[code:1]
bash:/usr/src$ make-kpkg <options> <target>
[/code:1]
你的目标target将成为"kernel_image"。让我们以较为重要而通用的两个选项(options)进行探讨,"--append-to- version"和"--revision".
--append-to-version
第一个选项让你添加特别项至内核版本号中,它会成为内核名的一部分。你可以使用字母,"+"和"."(小数点或句号);但不能使用下划线"_"。
这个是当前运行的内核:
[code:1]
bash:/usr/src$ /usr/src/$ uname -a
Linux da5id 2.6.8.1-2-k7 #1 Sat Sep 18 11:23:11 BST 2004 i686 GNU/Linux
[/code:1]
使用--append-to-version时要避免使用象"-686","-k7"和"-sparc"的字串,因为它们常常在Debian预编译内核中被使用。
内核模块放在/lib/modules子目录中;每个内核都有它自己的子目录。你每次安装新命名的内核映像,包安装器会创建一个象/lib /modules的新子目录来存放它的模块。
这就意味着你每次用--append-to-version创建内核映像名,你可以使新内核有一个新名字,从而使它的模块不会与其他内核产生冲突。
如果你用与已安装的内核相同的名称安装内核(相同的版本号和 --append-to-version),安装新内核的包将覆盖旧内核和它的模块。这时你将被警告并被建议退出退出。退出,用另一个append- to-version值来重建内核吧。
--revision
另一个make-kpkg选项是"--revision",它会指定Debian的名字打包而不是内核名。如用--append-to-version,你只能使用字母,"+"和".",而不能使用线"_"。如果你不提供--revision值,make-kpkg将使用"10.00.Custom"。
使用不同的--revision值将无法避免用相同内核名产生的冲突。他们只是让你看起来不同,比如重新编译变化很小的相同内核。
内核包名
Debian内核映像文件名如:
kernel-image-(kernel-version)(--append-to-version)_(--revision)_(architecture).deb
在第一个下划线之前所有字符就是内核包名
[code:1]
bash:/usr/src$ ls
kernel-image-2.6.8.1.181004_10.00.Custom_i386.deb
[/code:1]
现在你就能明白为什么下划线是不允许在make-kpkg选项中出现了--他们隔开包名的各部分。
我建议你为每个编译的内核使用不同的--append-to-version值,并让make-kpkg指定缺省的revision值。Date- based值对我有用,但你可以根据自己的计划自由设定。
如果--append-to-version或--revision值未被清除,或如果你希望使用与我建议的选项不同,请阅读 /usr/share/doc/kernel-package/README.gz。(可以这样做到:"zless README.gz")暂时不要去对flavours和epochs进行探讨,直到你用make-kpkg和Debian包更加熟悉;现在它们对你并不十分有用。
fakeroot
当你已添加你自己到src组,使用正常用户的权限就能做好创建内核包的大多数工作。然而内核包的部分(象内核和内核模块)文件将赋予root并使用 root权限运行;它们必须用root权限来创建。
使用fakeroot,你可以用普通用户来启动make-kpkg,并且大多数工作将运行于普通权限。工作接近尾声时,fakeroot将模拟一个 root环境来创建内核映像包。
手册中有关make-kpkg的部分描述了使用fakeroot的一种方法;我们将使用make-kpkg命令行开始处输入"fakeroot"的较简单的方法来做,象这样:
fakeroot make-kpkg <options> <target>
制作内核映像
最后!马上就要完工了--你准备制作一内核映像。
bash:/usr/src/linux $ fakeroot make-kpkg clean
然后:
[code:1]
bash:/usr/src/linux $ fakeroot make-kpkg --append-to-version=.181004 kernel_image --initrd binary
[/code:1]
现在你所要做的就是等计算机来完成了。在计算机完美的工作中让我们轻松片刻吧。
安装内核映像包
一旦内核映像被创建,你就可以安装内核映像包了,它包含内核和内核模块。首先退回/usr/src目录并列出里面的内容,来检测并确认它被成功创建。
[code:1]
bash:/usr/src/linux$ cd ..
bash:/usr/src$ ls
kernel-image-2.6.8.1.181004_10.00.Custom_i386.deb
linux@
linux-source-2.6.8.1/
linux-source-2.6.8.1.tar.bz2
[/code:1]
有了!注意--append-to-version值是如何成为内核名的一部分的。
安装内核和所有的内核模块:
bash:/usr/src$ sudo dpkg -i kernel-image-2.6.8.1.181004_10.00.Custom_i386.deb
从磁盘安装内核映像包(象对应地从Debian包文件安装)要使用完整的文件名。你可以使用tab键来补齐命令行。
如果每一步都做得很好,你现在要做的就是重新启动。如果新内核无法启动,则启动你原来的内核或插入你的引导软盘并重新启动。调整你的内核配置,重试。
结束
保持内核!
如果你已使用--append-to-version,你不需要为apt-get试图"upgrade"你的内核而担心。如果你试图这样,你只要这样:
[code:1]
bash:~$ echo "kernel-image-2.6.8.1.181004 hold" | sudo dpkg --set-selections
[/code:1]
当然你要用你真实的内核名来代替。查阅dpkg的包以了解有关使用包名比完整的文件名更好。同样,"|"字符输入是\符的上位(Shift)...
[code:1]
bash:~$ dpkg --get-selections | grep kernel-image
kernel-image-2.6.8.1.181004_10.00.Custom_i386.deb hold
[/code:1]
一些人写了关于保持包,如何操作等等.
删除符号链接
接下来,你要在/usr/src目录创建符号链接。这样做有几个原因:
1.下次你下载一个不是Debian格式的内核包,当你解开这个源代码包时会通过旧符号链接覆盖你的旧源码目录树。这是令人不快的事。
2.下次你下载Debian格式的内核源代码,你可能解开源代码到它自己的目录树这个没有问题,但你已有一个叫"linux"的符号链接在src目录里的话,你可能进入并编译旧内核(忘了它之前已经链接到一个旧源代码树)。
3. 当你下载补丁或其他源代码到一个特定的源代码树,你不要想做任何事情,则否弄坏它。通过删除符号链接可以防止#1问题的发生。
删除符号链接这样做:
[code:1]
bash:~$ rm /usr/src/linux
[/code:1]
备份你的内核
这并不是必须的,但备份你的定制内核.deb是个好主意,复制它到一个安全之处。
一旦你的内核已经与它的模块一起打包,你可以安装它到有你的硬件的其他机器上,它也可以在你重设系统后重新安装到当前机器上。
制作新引导盘
你刚安装好内核,要创建另一个引导磁盘。得到另一个软件--覆盖你的旧引导盘不是个好主意;你还没有足够长的时间使用你的新内核来验证它的工作。如果你弄糟了你的系统,一张引导盘是必须的。
[code:1]
bash:/usr/src# cd /boot
bash:/boot# mkboot /boot/vmlinuz-2.4.18.030320
[/code:1]
创建你的下一个内核
如果你因为刚刚买了一块新声卡想重新编译你的内核,或你在第一次编译时忘了某个新功能,你需要做的是重新配置,"fakereoot make-kpkg clean",用不同的--append-to-version值重新编译。看起来象这样:
[code:1]
bash:~$ cd /usr/src
bash:/usr/src$ ln -s linux-source-2.6.8.1 linux
bash:/usr/src$ cd linux
bash:/usr/src/linux$ make xconfig
(reconfigure your kernel)
bash:/usr/src/linux$ fakeroot make-kpkg clean
(lots of cleaning here)
bash:/usr/src/linux$ fakeroot make-kpkg --append-to-version=.181004 kernel_image --initrd binary
(screens and screens of stuff)
[/code:1]
使用已经存在的配置
当你安装好你制定的内核,它的配置被复制至/boot/config-x.y.z。你可能为了保险起见或以后还要使用而想保存它至其他地方(或几个地方)。
假如刚刚在上周你谨慎地通过了内核选项的迷宫,而又决定你希望支持所有硬件和功能配置,今天一个新的稳定内核被释放和导致你希望升级版本。
下载并解开新源代码包并创建一个新符号链接,然后改变目录至/usr/src/linux,复制你已经存在的配置到这里并"make oldconfig":
[code:1]
bash:/usr/src/linux$ cp /boot/config-2.4.18.030320 .config
bash:/usr/src/linux$ make oldconfig
[/code:1]
你将被问及一些新内核选项的有关问题。所有的问题回答"no"它通常是安全的;新选项你应该引起注意。
你完成oldconfig之后,你可以运行xconfig或menuconfig来检查你所选择的项目,改变你的答案,或研究你注意的选项。
用你自己的配置创建最新稳定内核
fakeroot make-kpkg clean
检查列表
1. 制作备份引导盘
2. 安装需要的包
1. build-essential fakeroot kernel-package
3. 设置源代码目录树
1. 添加你自己的源代码,注销,登录,使用使用组确认。
2. 删除旧符号链接
3. 解包源代码压缩包
4. 制作和检查新符号链接。
4. 配置内核
1. 使用旧的有效配置文件,cp /boot/config-x.y.z .config
2. make oldconfig或make xconfig或make menuconfig.
3. 保存稍迟需要用到的.config文件
5. 创建内核映像包
1. fakeroot make-kpkg clean
2. fakeroot make-kpkg --append-to-version=alpha+numeric.but.no.underscore kernel_image --initrd binary
6. 安装内核映像包
1. dpkg -i kernel-image-x.y.z.yy.mm.dd_10.00.Custom_i386.deb
2. 重启
7.下一步是什么?
8.保持你的包. echo "kernel-image-x.y.z.yymmdd hold" | dpkg --set-selections
9. 删除符号链接。
10.备份内核映像。
11. 删除旧的内核映像包。
12. 制作新的引导磁盘。
发表评论
-
安装Android Source【转】
2010-08-05 22:57 1096sudo apt-get install git-core g ... -
Linux下创建shell脚本文件
2010-08-05 22:13 51141.touch 文件名 2.编写脚本内容 (注:第一行一定要写 ... -
Ubuntu下安装Android SDK
2010-08-05 18:43 2677Android开发,在 ubuntu 9.10 ... -
Linux下JDK安装【转】
2010-08-05 16:41 9461.JDK下载:http://java.sun.com 下载 ... -
Linux下添加磁盘
2010-08-05 00:08 7691、用命令fdisk -l查看新增的磁盘,如: ... -
Linux中安装vmware tools
2010-08-04 23:54 13821、一定要先安装 build-essential 软件,否则不 ... -
Ubuntu 10.04 编译安装最新版本Linux-2.6.34内核【转】
2010-08-03 15:31 4831第一步:准备工作 打开终端获得root权限:sudo su ... -
Linux下的各种打包与解包【转】
2010-07-31 12:07 1381大致总结了一下linux下 ... -
安装Linux内核源代码【转】
2010-07-31 11:23 41051. 首先要查看内核版本号: 【root@localhost ...
相关推荐
"详细定制Linux内核" 在 Linux 操作系统中,内核是核心组件之一,它控制着系统的硬件资源和提供系统调用接口给应用程序。默认的 Linux 内核提供了大量的功能和驱动程序,但是,如果用户需要特殊的功能或优化系统...
8. **模块化设计**:Linux内核采用模块化设计,非核心功能可以作为可加载模块,使得内核可以根据需求定制,同时保持高效运行。 9. **内核版本管理**:Linux内核版本遵循主版本.次要版本.修订版本的规则,如2.6.35。...
Linux 内核定制和优化 Linux 内核是 Linux 操作系统的核心组件,它控制着系统的所有资源和硬件设备。然而,对于大多数 Linux 用户来说,Linux 内核是一个神秘的黑箱,他们不知道如何去optimise 和定制 Linux 内核以...
《Linux内核精髓-精通Linux内核必会的75个绝技》是一本深入探讨Linux内核的专著,适合那些希望深入了解操作系统工作原理、提升Linux系统编程能力的读者。这本书涵盖了75个关键技能,旨在帮助读者掌握Linux内核的核心...
《Linux内核详细图解》一书主要涵盖了Linux操作系统的核心组成部分,通过图形化的形式帮助读者理解和剖析这个开源操作系统的内在工作原理。以下是基于标题、描述和标签所涉及的关键知识点的详细解析: 1. **Linux...
《Linux内核完全注释》是由著名Linux技术专家赵炯编著的一本深入解析Linux内核的书籍,它为读者提供了全面、详尽的Linux内核知识。这本书因其深入浅出的讲解方式,成为了初学者了解和研究Linux内核的重要参考资料。 ...
《Linux内核设计与实现》第三版是一本深入解析Linux内核的重要著作,它详尽地阐述了Linux操作系统的核心设计理念和实现机制。本书是Linux爱好者、系统管理员、软件开发人员以及对操作系统有深入兴趣的读者不可或缺的...
《LINUX内核源代码情景分析》一书深入探讨了Linux操作系统的核心——内核的源代码,揭示了其内部机制和工作原理。Linux内核是开源软件的典范,它的设计和实现为研究操作系统提供了宝贵的资源。以下是根据标题、描述...
【Linux系统内核定制】 Linux系统内核是操作系统的核心,负责管理硬件资源、调度进程、处理中断等关键任务。Linux的内核是可以根据用户需求进行定制的,这为用户提供了极大的灵活性,允许他们针对特定的硬件配置和...
Linux课程设计—linux内核裁剪与文件定制.zip课程设计—linux内核裁剪与文件定制.zip课程设计—linux内核裁剪与文件定制.zip课程设计—linux内核裁剪与文件定制.zip课程设计—linux内核裁剪与文件定制.zip课程设计—...
Linux内核精髓是指Linux操作系统中最为关键和核心的部分,它负责管理系统资源,包括内存管理、进程调度、文件系统、设备驱动、网络通信等。精通Linux内核,不仅需要深入理解这些系统核心组件的工作原理,还需要掌握...
对于希望深入了解Linux内核并对其进行定制化的开发者来说,这本书提供了系统的指导和实用的方法。书中涵盖了最新的内核版本,并详细解释了各种配置选项的意义及其对系统性能的影响。 ### 三、关键知识点 #### 3.1 ...
Linux 内核移植与编译的过程主要包括了解 Linux 内核相关知识与内核结构、了解 Linux 内核在 ARM 设备上移植的基本步骤和方法、掌握 Linux 内核裁剪与定制的基本方法等。 实验环境中,我们使用的是 PC:windows+...
这本书在中文版的基础上,为中文读者提供了学习和参考Linux内核设计与实现的机会,对于深入理解Linux操作系统及其工作原理,以及进行内核开发和定制有着极其重要的作用。通过阅读本书,读者可以更好地掌握Linux内核...
本书的焦点是为你的服务器和桌面计算机建立一个定制的linux内核。这个内核将针对机器的处理器进行优化,并且只提供需要的驱动和特征。另一个原因是为内核增加新的支持特性,有些特性在发行商提供的内核中有可能没有...
Linux内核是操作系统的核心部分,负责管理系统的硬件资源,提供基础服务给上层的应用程序,以及维护系统的稳定性与安全性。Linux内核的架构是模块化的,允许开发者根据需要选择加载或卸载特定的功能模块,这使得...
Linux内核源码镜像是对Linux操作系统核心代码的完整复制,是理解Linux系统运行机制、进行系统级编程和定制化开发的重要资源。这份名为"linux_old1-master"的压缩包很可能是某个特定版本或者分支的Linux内核源码仓库...
6. 内核定制与优化:学习如何根据特定硬件和应用场景定制Linux内核,以及进行性能优化。 7. 了解相关工具和框架:如GCC、Makefile、Git、Kconfig等,这些工具在内核开发过程中扮演着重要角色。 课程介绍中提到的...