内核编译与管理学习笔记

读入BIOS
读取MBR中的引导程序(lilo或者grub)
读取内核进主存,内核解压,试图驱动所有硬件
启动init程序,启动级别
读取login或者xwindow等用户登录

核心模块放置在/lib/modules/`uname -r`/中
编译核心是为了使得系统更稳定,对对优化提升整体性能而言影响很小

cd /usr/src
tar zxvf linux-2.6.34.1.tar.bz2
cd linux-2.6.34.1
make mrproper 删除一些以前留下来的.o文件
make menuconfig 使用类似菜单方式来选择核心参数,纯文本模式,不需要x window支持。
<*>表示编译进核心 <M> 表示编译成模块,不知道该项目是什么且有模块可选时,就可以直接选择为模块
make clean 将以前曾经生成的*.o文件,这样就不会产生新旧版本的误差
make bzImage:制作出核心文件,这个过程很长。
编译好的核心放在:/usr/src/linux-2.6.34/arch/i386/boot/bzImage里面

make modules:制作出模块相关的文件
我们在重新编译模块之前,我们应该对前一次的编译的模块进行备份。
cd /lib/modules
mv 2.6.34 2.6.34.old
模块安装:
make modules_install

1.移动新核心到/boot中
cp /usr/src/linux-2.6.34/arch/i386/boot/bzImage /boot/vmlinuz-2.6.34
cp /usr/src/linux-2.6.34/System.map /boot/System.map-2.6.34

修改grub设置文件
[root@www ~]# vim /boot/grub/menu.lst
default=0
timeout=10
splashimage=(hd0,0)/boot/grub/splash.xpm.gz
#hiddenmenu
title CentOS (2.6.18-128.2.1.el5xen)
        root (hd0,0)
        kernel /boot/xen.gz-2.6.18-128.2.1.el5
        module /boot/vmlinuz-2.6.18-128.2.1.el5xen ro root=LABEL=/ rhgb quiet
        module /boot/initrd-2.6.18-128.2.1.el5xen.img
title CentOS testing kernel from vbird
        root (hd0,0)
        kernel /boot/vmlinuz-2.6.30.3vbird ro root=LABEL=/ rhgb
        initrd /boot/initrd-2.6.30.3vbird.img
额外(单一)模块编译
这些核心模块根据不同的版本,分别放到/lib/modules/`uname -r`中,各个硬件的驱动程序则放到/lib/modules/`uname -r`/kernel/drivers中,这些模块与设备代号的对应,就必须写入/etc/modprobe.conf中,一般linux内核会自动加载,也可以用modprobe或者insmod命令去加载
在kernel2.6版的内核中,所有的核心模块都改名为*.ko了。

1.下载硬件开发商提供的驱动程序源码
2.读他里面的readme或者install,并依次执行
3.把生成的核心模块拷贝到相应位置
4.更新模块依赖属性:在/lib/modules/`uname -r` (这里是你杠编译完的内核目录)depmod -a
自行编译的模块,在核心更新之后,需要重新编译针对新内核的模块

核心模块管理:lsmod modinfo modprobe insmod rmmod......

你可能感兴趣的:(管理,学习,笔记,内核,编译)