内核升级综合谈
来源:互联网 发布:华为交换机给端口命名 编辑:程序博客网 时间:2024/05/22 08:53
目录说明:
/lib/modules 目录存放内核加载用到的所有模块。没有新的模块的话,看到的是系统本身旧的模块。
/boot/ 存放系统加载用到的核心和System.map 以及.img config-版本号 的地方,没有编译新内核的话,看到的是旧的文件。
/usr/src/ 目录存放系统内核代码,在没有新内核的情况,看到的是系统本身旧内核代码。
/usr/src/X.Y.Z/configs 目录下存放编译内核所用的配置。这里的X.Y.Z指的是系统的内核版本号。
/usr/src/x.y.z/arch/i386/boot/ 存放编译后的新内核bzImage。x.y.z代指版本号。
/usr/src/x.y.z/ 存放编译后的新System.map 以及新的.config。x.y.z代指版本号。
/usr/src/x.y.z/Arch arch子目录包括了所有和体系结构相关的核心代码。它的每一个子目录都代表一种支持的体系结构
/usr/src/x.y.z/Include include子目录包括编译核心所需要的大部分头文件。与平台无关的头文件在 include/linux子目录下,与 intel cpu相关的头文件在include/asm-i386子目录下,而include/scsi目录则是有关scsi设备的头文件目录
/usr/src/x.y.z/Init 这个目录包含核心的初始化代码(注:不是系统的引导代码),包含两个文件main.c和Version.c,这是研究核心如何工作的一个非常好的起点。
/usr/src/x.y.z/Mm 这个目录包括所有独立于 cpu 体系结构的内存管理代码,如页式存储管理内存的分配和释放等;而和体系结构相关的内存管理代码则位于arch/*/mm/,例如arch/i386/mm/Fault.c
/usr/src/x.y.z/Kernel 主要的核心代码,此目录下的文件实现了大多数linux系统的内核函数,其中最重要的文件当属sched.c;同样,和体系结构相关的代码在arch/*/kernel中;
/usr/src/x.y.z/Drivers 放置系统所有的设备驱动程序;每种驱动程序又各占用一个子目录。
/usr/src/x.y.z/Lib 放置核心的库代码
/usr/src/x.y.z/Ipc 这个目录包含核心的进程间通讯的代码
/usr/src/x.y.z/Scripts 此目录包含用于配置核心的脚本文件等。
/usr/src/x.y.z/Net 核心与网络相关的代码
/usr/src/x.y.z/Fs 所有的文件系统代码和各种类型的文件操作代码,它的每一个子目录支持一个文件系统,例如fat和ext2;
一般,在每个目录下,都有一个 .depend 文件和一个 Makefile 文件,这两个文件都是编译时使用的辅助文件,还有Readme 文件,它是对该目录下的文件的一些说明。
内核配置方式:
make gconfig 基于图形窗口模式的配置界面,需要Gtk开发库的支持
make xconfig 基于图形窗口模式的配置界面,需要Qt开发库的支持
make config 基于文本的最为传统的配置界面
make menuconfig 基于文本选单的配置界面
make oldconfig 只在原来内核配置的基础上修改
命令说明:
1。make menuconfig 配置内核(整个内核编译的关键所在,直接影响你系统的功能)
2。make mrproper 这步是为确保原代码目录下没有不正确的.o文件及文件的相互依赖,刚解开的新内核包不需此步骤。
3。make def 确保关键文件在正确的位置,也就是验证文件依赖关系,编译2.6内核无需此步骤
4。make clean 清除内核编译完成的用不到的临时文件 /确保所有有关文件都处于最新版本状态
5。make -jn n代表同时编译的进程,可以加快编译速度,n由你的配置决定,一般为15-25。注意: 此命令已完成make bzImage及make modules的工作, 生成的bzImage内核文件在arch/i386/boot目录中,你的CPU不同内核文件存放位置也不同,如arch/i586/boot、arch/i686/boot这样子。
6。make zImage 编译压缩形式的内核,即:小内核
6。make bzImage 编译内核(大内核) 编译后的内核文件会存放在/usr/src/新内核版本号/arch/i386/boot/下文件名字是:bzImage
7。make modules 编译内核需要的模块
8。make modules_install 安装编译好的模块。模块会被安装在/lib/modules/ 名字为:新内核版本号比如2.4.8
9。mkinitrd mkinitrd会在/boot目录下生成initrd-XX.img文件,如: mkinitrd /boot/initrd-2.4.26.img 2.4.26 在/boot目录下生成initrd-2.4.26.img文件
10 make install 完成mkinitrd命令及内核(bzImage)和System.map的拷贝,如果使用Grub可以不用修改grub.conf文件了。直接reboot就可以。
编译准备:
1、要安装了相关编译工具或套件。比如GCC等。
2、具备管理员权限,也就是root。
3、做好相关的备份工作。
4、默认情况下(使用Intel x86 CPU系列),下面这一步可以省略。否则将/usr/include/asm、/usr/inlude/linux、/usr/include/scsi链接到/usr/src/linux/include目录下的对应目录中。方法如下:
# cd /usr/include
# rm -Rf asm linux
# ln -s /usr/src/X.Y.Z/include/asm-i386 asm (如果你使用其它CPU比如PPC,那就需要连接到相应的目录) 这里的X.Y.Z 是你新内核版本
# ln -s /usr/src/X.Y.Z/include/linux linux 这里的X.Y.Z 是你新内核版本
# ln -s /usr/src/X.Y.Z/include/scsi scsi 这里的X.Y.Z 是你新内核版本
编译过程:
这里以2.4.26为例:
[root@localhost root]# cd /usr/src
[root@localhost src]# tar vxfj linux-2.4.26.tar.bz2
[root@localhost src]# cd /usr/src/linux -2.4.26
[root@localhost linux-2.4.26]# cp /boot/config-2.4.20-8 .config
[root@localhost linux-2.4.26]# make menuconfig
[root@localhost linux-2.4.26]# make dep
[root@localhost linux-2.4.26]# make clean
[root@localhost linux-2.4.26]# make bzImage
[root@localhost linux-2.4.26]# make modules 这里的make bzImage 和make modules 可以用make -jn一个命令来替代 保险起见,不使用make -jn。
[root@localhost linux-2.4.26]# make modules_install
[root@localhost linux-2.4.26]# cp arch/i386/boot/bzImage /boot/vmlinuz-2.4.26
[root@localhost linux-2.4.26]# cp .config /boot/config-2.4.26
[root@localhost linux-2.4.26]# cp System.map /boot/System.map-2.4.26
[root@localhost linux-2.4.26]# mkinitrd /boot/initrd-2.4.26.img 2.4.26
[root@localhost linux-2.4.26]# cd /boot
[root@localhost boot]# rm -f System.map vmlinuz 这个步骤可以不做。
[root@localhost boot]# ln -s System.map-2.4.26 System.map 这个步骤也可以不错。但是如果搞开发的话,可能会用到System.map这个文件。
[root@localhost boot]# ln -s vmlinuz-2.4.26 vmlinuz 同上解释。
[root@localhost boot]# cd grub
[root@localhost grub]# vi grub.conf 这里是修改引导程序,如果你的是LILO引导方法类似。
[root@localhost grub]# reboot
GRUB的修改:以2.4.20-8和2.4.6为例子:
如果你用make install安装过了内核,那么下面的Grub的修改仅做参考。
vi grub.conf
# grub.conf generated by anaconda
#
# Note that you do not have to rerun grub after making changes to this file
# NOTICE: You have a /boot partition. This means that
# all kernel and initrd paths are relative to /boot/, eg.
# root (hd0,0)
# kernel /vmlinuz-version ro root=/dev/hda2
# initrd /initrd-version.img
#boot=/dev/hda
default=1
timeout=10
splashimage=(hd0,0)/grub/splash.xpm.gz
title Red Hat Linux (2.4.20-8)
root (hd0,0)
kernel /vmlinuz-2.4.20-8 ro root=LABEL=/
initrd /initrd-2.4.20-8.img
#添加如下文字:
title Red Hat Linux (2.4.26)
root (hd0,0)
kernel /vmlinuz-2.4.26 ro root=LABEL=/
initrd /initrd-2.4.26.img
#注意要把kernel /vmlinuz-2.4.26 ro root=LABEL=/ 改成 kernel /vmlinuz-2.4.26 ro root=/dev/hdaX 其中X是你的/的分区。如果不知道你的/分区,用命令df就可以知道了。
LILO的修改:
vi /etc/lilo.conf
#在该文件中加入下面几行:
image=/boot/X.Y.Z #X.Y.Z 表示内核版本号
label=linux-custom #自定义的Lable
initrd=/boot/initrd-X.Y.Z.img #X.Y.Z 表示内核版本号
read-only
root=/dev/hdaX #这与你的具体配置有关有可能是hdaX或sdaX X在这里是指/的挂载点
#并把 default=linux
#改为 default=linux-custom #linux-custom是自定义的名字
2.使新配置生效
# /sbin/lilo
关于grub的界面操作:
e -编辑引导命令
ESC键 -回到上级目录
o -插入一行命令
b -开始引导系统
d -删除一行
利用这些命令也可以在利用grub引导之后,对grub.conf进行编辑。
写在最后,这里含概了大部分内核编译涉及的到的各个方面的问题和解决方法,其中有些地方是我引用其他人的经验描述,当然很多地方我也自己修改了。目的是使它更为详细更为明了。
/lib/modules 目录存放内核加载用到的所有模块。没有新的模块的话,看到的是系统本身旧的模块。
/boot/ 存放系统加载用到的核心和System.map 以及.img config-版本号 的地方,没有编译新内核的话,看到的是旧的文件。
/usr/src/ 目录存放系统内核代码,在没有新内核的情况,看到的是系统本身旧内核代码。
/usr/src/X.Y.Z/configs 目录下存放编译内核所用的配置。这里的X.Y.Z指的是系统的内核版本号。
/usr/src/x.y.z/arch/i386/boot/ 存放编译后的新内核bzImage。x.y.z代指版本号。
/usr/src/x.y.z/ 存放编译后的新System.map 以及新的.config。x.y.z代指版本号。
/usr/src/x.y.z/Arch arch子目录包括了所有和体系结构相关的核心代码。它的每一个子目录都代表一种支持的体系结构
/usr/src/x.y.z/Include include子目录包括编译核心所需要的大部分头文件。与平台无关的头文件在 include/linux子目录下,与 intel cpu相关的头文件在include/asm-i386子目录下,而include/scsi目录则是有关scsi设备的头文件目录
/usr/src/x.y.z/Init 这个目录包含核心的初始化代码(注:不是系统的引导代码),包含两个文件main.c和Version.c,这是研究核心如何工作的一个非常好的起点。
/usr/src/x.y.z/Mm 这个目录包括所有独立于 cpu 体系结构的内存管理代码,如页式存储管理内存的分配和释放等;而和体系结构相关的内存管理代码则位于arch/*/mm/,例如arch/i386/mm/Fault.c
/usr/src/x.y.z/Kernel 主要的核心代码,此目录下的文件实现了大多数linux系统的内核函数,其中最重要的文件当属sched.c;同样,和体系结构相关的代码在arch/*/kernel中;
/usr/src/x.y.z/Drivers 放置系统所有的设备驱动程序;每种驱动程序又各占用一个子目录。
/usr/src/x.y.z/Lib 放置核心的库代码
/usr/src/x.y.z/Ipc 这个目录包含核心的进程间通讯的代码
/usr/src/x.y.z/Scripts 此目录包含用于配置核心的脚本文件等。
/usr/src/x.y.z/Net 核心与网络相关的代码
/usr/src/x.y.z/Fs 所有的文件系统代码和各种类型的文件操作代码,它的每一个子目录支持一个文件系统,例如fat和ext2;
一般,在每个目录下,都有一个 .depend 文件和一个 Makefile 文件,这两个文件都是编译时使用的辅助文件,还有Readme 文件,它是对该目录下的文件的一些说明。
内核配置方式:
make gconfig 基于图形窗口模式的配置界面,需要Gtk开发库的支持
make xconfig 基于图形窗口模式的配置界面,需要Qt开发库的支持
make config 基于文本的最为传统的配置界面
make menuconfig 基于文本选单的配置界面
make oldconfig 只在原来内核配置的基础上修改
命令说明:
1。make menuconfig 配置内核(整个内核编译的关键所在,直接影响你系统的功能)
2。make mrproper 这步是为确保原代码目录下没有不正确的.o文件及文件的相互依赖,刚解开的新内核包不需此步骤。
3。make def 确保关键文件在正确的位置,也就是验证文件依赖关系,编译2.6内核无需此步骤
4。make clean 清除内核编译完成的用不到的临时文件 /确保所有有关文件都处于最新版本状态
5。make -jn n代表同时编译的进程,可以加快编译速度,n由你的配置决定,一般为15-25。注意: 此命令已完成make bzImage及make modules的工作, 生成的bzImage内核文件在arch/i386/boot目录中,你的CPU不同内核文件存放位置也不同,如arch/i586/boot、arch/i686/boot这样子。
6。make zImage 编译压缩形式的内核,即:小内核
6。make bzImage 编译内核(大内核) 编译后的内核文件会存放在/usr/src/新内核版本号/arch/i386/boot/下文件名字是:bzImage
7。make modules 编译内核需要的模块
8。make modules_install 安装编译好的模块。模块会被安装在/lib/modules/ 名字为:新内核版本号比如2.4.8
9。mkinitrd mkinitrd会在/boot目录下生成initrd-XX.img文件,如: mkinitrd /boot/initrd-2.4.26.img 2.4.26 在/boot目录下生成initrd-2.4.26.img文件
10 make install 完成mkinitrd命令及内核(bzImage)和System.map的拷贝,如果使用Grub可以不用修改grub.conf文件了。直接reboot就可以。
编译准备:
1、要安装了相关编译工具或套件。比如GCC等。
2、具备管理员权限,也就是root。
3、做好相关的备份工作。
4、默认情况下(使用Intel x86 CPU系列),下面这一步可以省略。否则将/usr/include/asm、/usr/inlude/linux、/usr/include/scsi链接到/usr/src/linux/include目录下的对应目录中。方法如下:
# cd /usr/include
# rm -Rf asm linux
# ln -s /usr/src/X.Y.Z/include/asm-i386 asm (如果你使用其它CPU比如PPC,那就需要连接到相应的目录) 这里的X.Y.Z 是你新内核版本
# ln -s /usr/src/X.Y.Z/include/linux linux 这里的X.Y.Z 是你新内核版本
# ln -s /usr/src/X.Y.Z/include/scsi scsi 这里的X.Y.Z 是你新内核版本
编译过程:
这里以2.4.26为例:
[root@localhost root]# cd /usr/src
[root@localhost src]# tar vxfj linux-2.4.26.tar.bz2
[root@localhost src]# cd /usr/src/linux -2.4.26
[root@localhost linux-2.4.26]# cp /boot/config-2.4.20-8 .config
[root@localhost linux-2.4.26]# make menuconfig
[root@localhost linux-2.4.26]# make dep
[root@localhost linux-2.4.26]# make clean
[root@localhost linux-2.4.26]# make bzImage
[root@localhost linux-2.4.26]# make modules 这里的make bzImage 和make modules 可以用make -jn一个命令来替代 保险起见,不使用make -jn。
[root@localhost linux-2.4.26]# make modules_install
[root@localhost linux-2.4.26]# cp arch/i386/boot/bzImage /boot/vmlinuz-2.4.26
[root@localhost linux-2.4.26]# cp .config /boot/config-2.4.26
[root@localhost linux-2.4.26]# cp System.map /boot/System.map-2.4.26
[root@localhost linux-2.4.26]# mkinitrd /boot/initrd-2.4.26.img 2.4.26
[root@localhost linux-2.4.26]# cd /boot
[root@localhost boot]# rm -f System.map vmlinuz 这个步骤可以不做。
[root@localhost boot]# ln -s System.map-2.4.26 System.map 这个步骤也可以不错。但是如果搞开发的话,可能会用到System.map这个文件。
[root@localhost boot]# ln -s vmlinuz-2.4.26 vmlinuz 同上解释。
[root@localhost boot]# cd grub
[root@localhost grub]# vi grub.conf 这里是修改引导程序,如果你的是LILO引导方法类似。
[root@localhost grub]# reboot
GRUB的修改:以2.4.20-8和2.4.6为例子:
如果你用make install安装过了内核,那么下面的Grub的修改仅做参考。
vi grub.conf
# grub.conf generated by anaconda
#
# Note that you do not have to rerun grub after making changes to this file
# NOTICE: You have a /boot partition. This means that
# all kernel and initrd paths are relative to /boot/, eg.
# root (hd0,0)
# kernel /vmlinuz-version ro root=/dev/hda2
# initrd /initrd-version.img
#boot=/dev/hda
default=1
timeout=10
splashimage=(hd0,0)/grub/splash.xpm.gz
title Red Hat Linux (2.4.20-8)
root (hd0,0)
kernel /vmlinuz-2.4.20-8 ro root=LABEL=/
initrd /initrd-2.4.20-8.img
#添加如下文字:
title Red Hat Linux (2.4.26)
root (hd0,0)
kernel /vmlinuz-2.4.26 ro root=LABEL=/
initrd /initrd-2.4.26.img
#注意要把kernel /vmlinuz-2.4.26 ro root=LABEL=/ 改成 kernel /vmlinuz-2.4.26 ro root=/dev/hdaX 其中X是你的/的分区。如果不知道你的/分区,用命令df就可以知道了。
LILO的修改:
vi /etc/lilo.conf
#在该文件中加入下面几行:
image=/boot/X.Y.Z #X.Y.Z 表示内核版本号
label=linux-custom #自定义的Lable
initrd=/boot/initrd-X.Y.Z.img #X.Y.Z 表示内核版本号
read-only
root=/dev/hdaX #这与你的具体配置有关有可能是hdaX或sdaX X在这里是指/的挂载点
#并把 default=linux
#改为 default=linux-custom #linux-custom是自定义的名字
2.使新配置生效
# /sbin/lilo
关于grub的界面操作:
e -编辑引导命令
ESC键 -回到上级目录
o -插入一行命令
b -开始引导系统
d -删除一行
利用这些命令也可以在利用grub引导之后,对grub.conf进行编辑。
写在最后,这里含概了大部分内核编译涉及的到的各个方面的问题和解决方法,其中有些地方是我引用其他人的经验描述,当然很多地方我也自己修改了。目的是使它更为详细更为明了。
- 内核升级综合谈
- 升级内核
- 内核升级
- 升级内核
- 升级内核
- 内核升级
- 内核参数 升级内核
- 如何升级编译内核
- Linux内核升级
- Linux的内核升级
- 升级linux内核
- Ubuntu升级内核
- Linux内核升级详解!
- Linux内核升级
- 如何升级RedHat9内核
- PCBSD内核编译/升级
- redhat9内核升级
- Linux内核升级全过程
- 我们这个国家还有什么是安全的
- 总觉得股市要起大变化!
- FxJob、FxAsk和FxFriend已经支持uc接口
- The use method of afxDump and TRACE
- 设置背景色
- 内核升级综合谈
- 建立yum服务器
- 计算机杂志投稿CSCD库指南
- 关于SQL的执行计划
- ASP.NET中Session的状态保持方式浅议
- 用C语言技术进行CGI程序设计
- 关于dwr学习(转)
- JSTL&EL对Map集合的支持
- 茅塞顿开