红联Linux门户
Linux帮助
当前位置: 红联Linux门户 > SuSE

SUSE模块相关的一些东西

发布时间:2008-01-17 00:55:03来源:红联作者:wynlchae
how to perform a kernel update and how to compile and install a custom kernel

一、升级SUSE内核
1、查看当前系统内核版本
cat /proc/version
rpm -qf /boot/vmlinuz
2、备份原kernel的启动文件
cp /boot/vmlinuz /boot/vmlinuz.old
cp /boot/initrd /boot/initrd.old
3、安装新内核
rpm -Uvh new_kernel.rpm

二、降级内核
rpm -Uvh --force old_kernel.rpm

三、内核配置
当前内核结构存储在/proc/config.gz中,
1、要修改配置,需以root用户到/usr/src/linux*目录下执行:
zcat /proc/config.gz >.config
make oldconfig

make oldconfig命令以/usr/src/linux*/.config做为内核配置的临时模板,当前系统内核中所有新的选项都会被扫描。

如果没有使用.config,则默认使用当前内核源码配置

2、命令行下配置
make menuconfig

3、X-window下配置
make xconfig

四、内核模块

硬件发展速度太快,内核更新速度相对慢,使用新的硬件设备就需要使用驱动程序,让kernel认识这个新设备。

linux中配置驱动有两种方式:
1、将驱动程序编译到内核中,这样编译出来在内核体积很大。
2、将驱动程序编译成一个模块,kernel在需要时再加载这个模块,这样编译出来的内核体积小,
在编译内核时,选择驱动程序是否编译到内核中。
在系统启动时,bios或者 boot loader.需要加载内核,所以,最好情况下是尽可能的减小内核大小,加快启动速度。
像ext2,SCSI驱动等一些小的驱动程序,适合编译到内核中;
而像声卡、msdos、isofs这些在系统启动时并不需要,可以做为模块来加载,不要编译到内核中,减小内核大小

内核模块位于/lib/modules/目录下

1、hwinfo命令可以打印出当前系统中的硬件信息
hwinfo --help
hwinfo --scsi 可以查看某一个模块的信息

2、模块相关的一些命令

insmod
从/lib/modules/及其子目录下查找模块,然后加载模块到kernel中。2.6之后尽量使用modprobe代替insmod命令

rmmod
卸载指定的模块。当某个模块不再需要时,可以从内核中卸载。
例如,isofs模块,只有在CD-ROM没有mount时才可以卸载
depmod
在/lib/modules/下创建一个modules.dep文件,详细说明了所有模块之间的附属关系。
当系统启动时,会自动创建这个文件

modprobe
加载、卸载一个指定的模块。
modprobe会检查/etc/modprobe.conf文件,加载模块

lsmod
查看当前系统中加载了那些模块,哪些模块使用了它们

modinfo
查看某个模块的信息
std:~ # modinfo ide_disk
filename: /lib/modules/2.6.16.21-0.8-default/kernel/drivers/ide/ide-disk.ko
description: ATA DISK Driver
alias: ide:*m-disk*
license: GPL
vermagic: 2.6.16.21-0.8-default 586 REGPARM gcc-4.1
supported: yes
depends: ide-core
srcversion: 83FCEE80754F82BEA4B03A0

3、/etc/modprobe.conf

系统启动时,会读取/etc/modprobe.con、/etc/modprobe.conf.local和/etc/modprobe.d目录,根据这些文件与目录相关内容加载模块
更详细信息查看man modprobe.conf

五、编译内核
将内核编译成一个"bzImage"
如果配置过程中,加载了过多的模块。造成内核过大,在编译过程中会报错

cd /usr/src/linux*
make clean
make bzImage

make clean
make vmlinux

上面命令也可以写成一行
make clean bzImage
make clean vmlinux

完成后,到/usr/src/linux/arch//boot下查找名称为vmlinux.gz的文件,这个是内核的压缩镜像
如果没有文件,说明编译过程不成功

make bzImage 2>&1 | tee kernel.out

make clean vmlinux 2>&1 | tee kernel.out
文章评论

共有 0 条评论