Linux 2.6内核编译安装全景体验(下)

来源:互联网 发布:meta分析软件 编辑:程序博客网 时间:2024/04/30 16:53

  

     

5) USB的支持

推荐使用默认的配置

 

 

1.       通用系统选项

1)      System V IPC and Sysctl support

System VLinux进程通信的机制。Sysctl允许你动态操作多个内核参数,所以选上它们

15 System V & Sysctl

1)      控制台的支持

Linux系统中当然不能缺少功能强大的控制台了,如果将来你想自定义一个个性的控制台,推荐下面的选项:

16 控制台驱动程序的配置

1)      字符设备的支持

在控制台中,大多数用户都需要用一个虚拟终端访问系统,并需要打印机的支持。那么选择该项。

17 字符设备

1)      文件系统的支持

对于一般的桌面用户FAT NTFS ext2 ext3算是最常用的文件系统了,所以只要让内核支持这些就可以了。像下面这样:

18 Windows文件系统的支持

19 虚拟文件系统的支持

20 ext文件系统的支持

另外还有一点要说明的是,如果这不是你第一次配置内核,在执行上面的任何一种配置工具前,一定要先执行make mrproper,对源代码目录进行清理工作,否则编译会出现问题。

 

编译内核

配置完后,我们就要进行编译工作了,如果想让编译出来的代码更加优化,建议各位去修改一下Makefile中的CFLAG参数,当然这要根据你的计算机而定,这里给出一个Pentium4的参考方案

CFLAGS=”-O2 -march=pentium4 –mfpmath=sse –malign-double –mmmx –msse –msse2 –pipe /

-fomit-frame-pointer -fforce-addr -falign-functions=4 -fprefetch-loop-arrays”

21 修改Makefile文件

 

修改完成后,编译就很简单了

make –j2

一个命令就搞定了,连带模块和系统内核的编译全都由这个命令来完成。-j选项的含义就是开启并行编译内核的任务的数目,分配原则基本上是一个CPU可以分配两个任务,由于在编译文件时对硬盘的I/O会影响编译时间,所以开启2个任务可以加快整个内核的编译过程。由于内核源代码之间并不存在依赖,所以并行编译并不会带来任何麻烦。另外和2.4版的内核相比,在编译内核前,我们不再用执行make dep,也不用区分什么bzImagemodules等问题,默认的Makefile规则会为我们处理,我们只要简单的执行makeOK

最后说点编译的小技巧:

如果你不想看到编译内核时的很多输出,但仍想关注警告和错误,你可以把输出重定向到一个文件里

make > your_own_dir_and_file

这样,当你想关心一下编译过程的是后,去看那个文件就是了。其实 一般情况下,我们不许要关心那些警告和错误,把它们重定向到 /dev/nullOK了。

make > /dev/null

而且如果你在变异过程中看到很多的warning并不用担心,这并不会影响内核的使用,只是代码不规范造成的问题,如果真的遇到了错误,make会为你显示***这样开头的内容。

 

安装内核

在执行安装前,我们要切换到root用户,在控制台上执行su命令。下面就是整个安装过程。

首先,我们可以执行make modules_install 命令来安装模块,这个命令会把所有你编译的模块复制到/lib/<your kernel version>目录中去。

对于内核本身的安装,我们可以有两个不同的方法,一个简单,但是做完之后我们学不到什么东西,另一个稍显麻烦,但是我们却可以有所收获。先来看第一个,懒人方法

还是在源代码目录下执行

make install

这个命令就为我们全权代理了安装新内核的所有步骤,执行完后,就可以重新启动,感受一下自己的新内核了。

但是,make install都为我们做了什么呢?第二种方法就是自己来手动安装内核,步骤有三,而这正是make install的工作。

1. 复制生成的内核镜像到/boot

在你编译好内核后,在目录arch/i386/boot/中会有一个名为bzImage的文件躺在那里,这就是我们说的被压缩的可引导的内核镜像,把它复制到/boot目录中,并重新命名为vmlinuz-<your kernel version>,在我们的例子中就是vmlinuz-2.6.11.9

cp arch/i386/boot/bzImage /boot/vmlinuz-2.6.11.

 

2. 生成initrd-<your kernel version>.img文件

这个文件的作用是临时的引导硬件到实际内核vmlinuz能够接管并继续引导的状态。用命令

mkinitrd initrd-2.6.11.9 2.6.11.9可以为我们的系统生成一个initrd-2.6.11.8.img的文件,把这个文件也复制到/boot目录下。要说明的是mkinitrdRedhat特有的命令。其它发行版上应该有相应的生成这个文件的命令。

 

3. 配置grub

到这里,整个内核的安装就结束了,下面要做的就是让机器能够引导新内核,打开/boot/grub/grub.conf,加上下面的代码:

title Magic Linux (2.6.11.9)  # 这是你的Linux发行版的名字

root (hd0,10)              # 我把/boot放在了/dev/hda11上所以是(hd0,10)

kernel /vmlinuz-2.6.11.9 ro root=/dev/hda13 # 这里的root指的是/目录所在的分区,我安装的

# 时候放到了/dev/hda13

splash=silent

initrd /initrd-2.6.11.9.img

如果你的硬盘上还有Windows那么,加入下面的代码

title dos

rootnoverify (hd0,0) # 注意,这是你的windows安装在C盘的时候的情形

                     # 具体要根据你的情况而定

makeactive

chainloader +1

保存并退出

执行reboot,重新启动,如果一切正常,应该能看到2.6.11.9的启动选项了。

最后,我们通过这个编译的过程可以看到,操作系统的内核其实和应用程序没什么不同,也是一种软件,我们可以在系统中编译很多版本的内核。建议各位保留一个安全稳定的内核供使用,之后自己可以任意发挥自己的想象去试验内核的选项,只有这样才能编译出最适合自己需求的内核。

原创粉丝点击