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"选项, 它显示内核版本信息.
/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/
$ 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!)
$ 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/
$ cd ..
$ sudo dpkg -i linux-image-(按tab键)
安装完成后,可与现在的内核进行比较
$ ls -l /boot/
9、重新启动验证内核
代码:
$ sudo reboot
作者: soledadboy 发布时间: 2011-10-31
转载请注明
作者: 速腾1994 发布时间: 2011-10-31
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28