|
# uname -r
2.6.18-308.el5
==kernel相关概念==
双树结构(测试版,稳定版)
一、升级内核: linux-2.6.39.tar.gz
==升级内核的目的
追求前瞻性
开发测试使用
增加新的功能
使用新的硬件驱动
给内核瘦身
其它需求(嵌入式开发)
==实施步骤
1. 安装编译所需的工具 gcc lib make(开发工具 开发库)
2. 下载内核源码
a. www.kernel.org(最新)
b. ftp://ftp.redhat.com/pub/redhat/linux/enterprise/5Server
ftp://ftp.redhat.com/pub/redhat/linux/enterprise/6Server
3. 解压linux-2.6.39.tar.gz
4. 配置内核编译的参数make menuconfig (类似./configure)
5. 开始编译make (等价于这两个命令 make bzImage make modules)
6. 安装模块make modules_install //安装到了 /lib/modules/$(uname -r)
7. 安装内核make install //安装到了 /boot
8. 检查 ls /boot, /boot/grub/grub.conf, /lib/modules查看是否有了新的内核
==具体实施
1. yum -y groupinstall "开发工具" "开发库"
2. 下载
3. # tar xvf linux-2.6.39.tar.gz -C /usr/src/
# cd /usr/src/linux-2.6.39/
4. # make prproper 清理代码树
# cp /boot/config-2.6.18-308.el5PAE .config将系统中原有的config复制
# make menuconfig ******这个很重要,以后要学会根据需要配置
RHEL5:
General setup --->
Enable deprecated sysfs features to support old userspace tool
Enable deprecated sysfs features by default
===================
# head -5 Makefile 修改kernel版本名
VERSION = 2
PATCHLEVEL = 6
SUBLEVEL = 39
EXTRAVERSION = -yangsheng
===================
5. # make
6. # make modules_install
7. # make install
8. 检查 ls /boot, /boot/grub/grub.conf
# ls /lib/modules/2.6.39-yangsheng/kernel/fs/ntfs/
ntfs.ko
二、给当前内核增加功能(模块)kernel-2.6.18-308.el5.src.rpm
注:使用和当前内核版本完全匹配内核源码包
1. 查看当前内核版本
[root@station230 ~]# uname -r
2.6.18-308.el5
2. 建议不要从www.kernel.org
ftp://ftp.redhat.com/pub/redhat/linux/enterprise/5Server
kernel-2.6.18-308.el5.src.rpm
3. 需要工具rpm-build,开发工具,开发库
[root@station230 ~]# rpm -q rpm-build
rpm-build-4.4.2.3-27.el5
[root@station230 ~]# ls /usr/src/redhat/
BUILD RPMS SOURCES SPECS SRPMS
4. 释放src.rpm //因为模块在这个内核源码包里,所以要先释放这个
[root@station230 kernel]# rpm -ivh kernel-2.6.18-308.el5.src.rpm
[root@station230 ~]# rpmbuild -bp --target=$(uname -m) /usr/src/redhat/SPECS/kernel.spec 将源码解压
[root@station230 ~]# cd /usr/src/redhat/BUILD/
[root@station230 BUILD]# ls
kernel-2.6.18
[root@station230 ~]# cd /usr/src/redhat/BUILD/kernel-2.6.18/linux-2.6.18-308.el5.i686/
[root@station230 linux-2.6.18-308.el5.i686]# ls
arch CREDITS fs Kbuild Makefile REPORTING-BUGS sound
block crypto include kernel mm samples tools
configs Documentation init lib net scripts usr
COPYING drivers ipc MAINTAINERS README security
示例:安装xfs.ko jfs.ko
以下的操作在内核的源码目录
==编译模块
[root@station230 linux-2.6.18-308.el5.i686]# make menuconfig
│ JFS filesystem support │ │
│ │[ ] JFS POSIX Access Control Lists (NEW) │ │
│ │[ ] JFS Security Labels (NEW) │ │
│ │[ ] JFS debugging (NEW) │ │
│ │[ ] JFS statistics (NEW) │ │
│ │ XFS filesystem support
[root@station230 linux-2.6.18-308.el5.i686]# mkdir .tmp_versions //建立这个目录是因为后面报错了没有它
[root@station230 linux-2.6.18-308.el5.i686]# ls
arch crypto init MAINTAINERS net security
block Documentation ipc Makefile README sound
configs drivers Kbuild mm REPORTING-BUGS tools
COPYING fs kernel Module.markers samples usr
CREDITS include lib Module.symvers scripts
[root@station230 linux-2.6.18-308.el5.i686]# make fs/xfs/xfs.ko //安装模块
[root@station230 linux-2.6.18-308.el5.i686]# make fs/jfs/jfs.ko
==复制模块到当前内核模块目录/lib/modules
[root@station230 ~]# mkdir /lib/modules/2.6.18-308.el5/kernel/fs/{xfs,jfs}
[root@station230 linux-2.6.18-308.el5.i686]# pwd
/usr/src/redhat/BUILD/kernel-2.6.18/linux-2.6.18-308.el5.i686
[root@station230 linux-2.6.18-308.el5.i686]# cp fs/jfs/jfs.ko /lib/modules/2.6.18-308.el5/kernel/fs/jfs/
[root@station230 linux-2.6.18-308.el5.i686]# cp fs/xfs/xfs.ko /lib/modules/2.6.18-308.el5/kernel/fs/xfs/
==重新生成模块的依赖关系
[root@station230 ~]# cd /lib/modules/2.6.18-308.el5/
[root@station230 2.6.18-308.el5]# ls
build modules.dep modules.seriomap
[root@station230 2.6.18-308.el5]# depmod //更新依赖关系
管理模块
modinfo 查看模块的信息 modinfo xfs modinfo -n xfs
lsmod 查看已加载的模块
modprobe jfs 手动加载模块
modprobe xfs
modprobe -r xfs 移出模块
示例:创建一个jfs的文件系统
1. fdisk -u /dev/sda
2. 安装创建jfs文件系统的软件
tar xvf jfsutils-1.1.15.tar.gz 解压
[root@station230 ~]# cd jfsutils-1.1.15
[root@station230 jfsutils-1.1.15]# ./configure && make && make install 安装三部曲
3. 创建文件系统
[root@station230 ~]# mkfs.jfs /dev/md0
[root@station230 ~]# mkdir /mnt/jfs
[root@station230 ~]# mount /dev/md0 /mnt/jfs
[root@station230 ~]# lsmod |grep jfs
jfs 149228 1
=======安装网卡驱动========
[root@station253 ~]# modinfo -n e1000e
/lib/modules/2.6.18-308.el5xen/kernel/drivers/net/e1000e/e1000e.ko
[root@station253 ~]# rm -rf /lib/modules/2.6.18-308.el5xen/kernel/drivers/net/e1000e
[root@station230 ~]# depmod
[root@station230 ~]# modinfo e1000e
modinfo: could not find module e1000e
下载相应的网卡驱动
[root@station230 ~]# tar xvf e1000e-2.0.0.1.tar.gz
[root@station230 ~]# cd e1000e-2.0.0.1
[root@station230 e1000e-2.0.0.1]# ls
COPYING e1000e.7 e1000e.spec pci.updates README src SUMS
[root@station230 e1000e-2.0.0.1]# vim README
2. Untar/unzip archive:
tar zxf e1000e-x.x.x.tar.gz
3. Change to the driver src directory:
cd e1000e-x.x.x/src/
4. Compile the driver module:
# make install
[root@station230 src]# pwd
/root/e1000e-2.0.0.1/src
[root@station230 src]# make install
[root@station230 ~]# depmod
[root@station230 ~]# modinfo e1000e
[root@station230 ~]# modprobe e1000e
[root@station230 ~]# lsmod |grep e1000e
e1000e 187608 0
8021q 25929 2 e1000e,cxgb3
kernel-headers-2.6.18-308.el5
|
|
|