+ -
当前位置:首页 → 问答吧 → grub相关操作-经测试的正式版本

grub相关操作-经测试的正式版本

时间:2011-10-31

来源:互联网

引用:
在介绍如何编译内核之前, 需要对内核相关概念有一定的了解.这里只介绍系统中相关的目录, 文件及命令.

/boot

/boot/vmlinuz-<version> : 用于启动的压缩内核镜像, 它也就是/arch/<arch>/boot中的压缩镜像.
/boot/system.map-<version> : 存储内核符号地址.
/boot/initrd.img-<version> : 初始化RAM硬盘时, 用来存储挂载根文件系统所需的模块.
/boot/grub/menu.lst : grub的配置文件. (不同的发行版中它可能位于不同位置).
/lib/modules : 该目录包含了内核模块及其他文件.
注意, modules中一般会有多个目录: 系统自带的内核模块在这里, 你编译自己的内核模块后, 它们也会被安装到这里.
不同的目录由内核版本号来区分. 即modules里目录的名称是内核版本号. (使用$ uname -r 可知当前系统内核所用的模块位于哪个目录).

/lib/modules/<kernel-version>/build : 储存为该版本的内核编译新模块所需的文件. 包括Makefile, .config, module.symVers(模块符号信息), 内核头文件(位于include/, include/asm/中)

/lib/modules/<kernel-version>/kernel : 储存内核目标文件(以.ko为后缀). 它的目录组织和内核源代码中kernel的目录组织相同.

/lib/modules/<kernel-version>/中:
modules.alias : 模块别名定义. 模块加载工具使用它来加载相应的模块.
modules.dep : 定义了模块间的依赖关系.
modules.symbols : 指定符号属于哪个模块.

这些文件都是文本文件, 可以查看它们.

$ uname -r

uname(1)被用来查看系统信息, 这里对我们有用的是它的"-r"选项, 它显示内核版本信息.



1、 构建编译环境
在编译内核的时候,尽可能的安装编译过程中所需的软件工具:make ,gcc, make-kpkg,
运行menuconfig等等和编译内核相关的工具:build-essential kernel-package libncurses5-dev
代码:
# apt-get install make gcc make-kpkg build-essential  kernel-package  libncurses5-dev

当然, 如果你的内核是要安装到不同体系结构的目标系统中, 还需要构建cross编译环境.

2、下载内核源码,可在任何目录(网上流传只能在/usr/src下,本人认为这是不限制的)。我以在root或者家目录下为例
代码:
$ cd root/

代码:
$ wget http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.38.tar.bz2

3、 解压源码
代码:
$ cd ~
$ mkdir src && tar jfx linux-2.6.25.10.tar.bz2 -C src/


4、进入源码空间
代码:
$ cd ~/src/linux-2.6.25.10


5、编译前的准备工作
首先,清理以前编译时留下的临时文件。如果是刚刚解开的包,不需要执行这步。如果是第二次或者是第n次编译,那么一定要执行。相关命令如下:
代码:
$ sudo make mrproper


6、配置内核选项
代码:
   
$ sudo make menuconfig
如果只是要编译,也可将现有的配置拷贝过来
$ cp /boot/config-`uname -r` ./.config
(1) 将配置文件(不要将它命名为.config!)拷贝到内核源码树根目录.
(2) make menuconfig, 然后将上述的配置文件加载进去.
(3) 配置完成后, 将生成的配置文件备份(.config, 也可以在menuconfig中指定生成的配置文件名).


7、开始编译内核
代码:
$ sudo make-kpkg clean
$ sudo make-kpkg -initrd --initrd --append-to-version=QH400 kernel_image kernel-headers
   
......(真需要很久很久的时间 Long time is needed!)


8、安装内核
代码:
编译好的内核会在上一层目录中。包括linux-headers-...-_i386.deb和linux-image-...-i386.deb两个文件。
$ cd ..
$ sudo dpkg -i  linux-image-(按tab键)
安装完成后,可与现在的内核进行比较
$ ls -l /boot/


9、重新启动验证内核
代码:
$ sudo reboot

作者: soledadboy   发布时间: 2011-10-31

转载请注明

作者: 速腾1994   发布时间: 2011-10-31