编译一个内核
首先,配置好编译环境:用yum装几个软件包yum groupinstall "Development Libraise" "Development Tools"这是文本字符界面,装上这两组包就可以完成编译环境;若想用图形界面还可装"X software Development" "KDE software Development"这两组包;还需要知道一些硬件信息,可用cat /proc/cpuinfo显示CPU的信息,用cat /proc/interrupts显示中断号,用hal-device列出搜有硬件信息,用hal-device-manager在图形化界面看硬件平台。下面只介绍用文本字符界面的环境:
环境配置好了,就要开始编译源码包:
1.)从网上下载Linux的内核压缩包(以linux-2.6.28.10tar.gz为例),并把它放到/usr/src内,并用tar解压缩包。
2.)创建一个链接文件ln -sv linux-2.6.28.10    linux,然后ls -al确定linux是linux-2.6.28.10的软链接文件,在cd linux进入目录linux中。
3.)执行命令make menuconfig进入文本字符编辑界面,可对内核进行编辑,
具体编辑内容可参考:http://lamp.linux.gov.cn/Linux/kernel_options.html,编辑完成后保存后退出,保存文件为.config。
4.)执行make命令开始编译(大约40多分钟)。
5.)编译后输入make modules_install和make install安装。
最后,待安装结束,重启Linux,选择linux-2.6.28.10可正常启动Linux操作系统,由此一个源码的内核包就被编译为一个二进制包,内核编译完成。
 

                                                       内核的职责
1.)系统初始化
2.)进程调度
3.)内存管理
4.)安全方面,selinux和防火墙
5.)缓冲预缓存
6.)支持标准网络协议
 

                                                        uname命令
uname:打印系统信息
      -a          显示所有系统信息
      -s          显示内核的名字
      -n          显示nodename(主机名)
      -r          显示内核的发行版本号
      -v          显示内核的版本号
      -m          显示硬件平台
      -p          显示处理器类型
      -i          显示硬件平台架构
      -o          现实操作系统
 

                                                       主分区的类型
5           Extended            扩展分区
82          Linux swap          交换分区
83          Linux               ext2,ext3分区
8e          Linux LVM           LVM分区
fd          Linux RAID auto     RAID分区
 

                                                          分区命令
fdisk -l                                显示硬盘分区表情况
fdisk   /dev/sda(设备名称)
      p          列出当前分区表
      n          创建一个新分区
      d          删除一个分区
      t          改变分区change system id
      u          显示分区大小时,用扇区表示大小
      q          推出不保存
      w          保存并退出
partprobe        内核重读硬盘分区表
mkfs  -t ext3 /dev/sda1  ==  mkfs.ext3  把/dev/sda1分区以ext3形式格式化
mkfs  -t ext3 /dev/sda2  ==  mkfs.ext2  把/dev/sda2分区以ext2形式格式化
mkswap    /dev/sda3                     创建交换分区       
mke2fs  [options]  device
         -b                             指定块的大小
         -c                             在格式化系统时检查是否有坏块
         -i                             指定字节与Inode的比率,比率越大,inode号越小,但不能小于块的大小
         -m                             指定了为管理员用户(以维护数据)预留的空间占整个空间的比率,默认为5%
         -n                             做测试,看格式化之后会出现什么情况
         -N                             指定Inodes的数目,你可以创多个Inode号,但有上线
         -L                             指定卷标
         -E                             引用扩展选项,指定调带大小,加速RAM
         -j                             可使ext2文件系统升级为ext3文件系统,可升级但不可降级
         -J                             记录日志,对突然断电的情况可检查日志已恢复数据
e2lable  /dev/sda1                              查看ext2/ext3的卷标
e2lable  /dev/sda1  root                改变设备/dev/sda1的卷标为root
blkid                                   查看设备卷标,UUID等信息
fsck                                    检查并修复一个Linux文件系统
         -t                             指定文件系统的类型
         -a                             检查是否是自动修复系统的
         -i                             交互式的说明是否要修复系统
tune2fs                                 只能对ext2修改
tune2fs  -m  10    /dev/sda1            把为管理员用户(以维护数据)预留的空间占整个空间的比率调整为10%
tune2fs  -o  acl,user_xattr  /dev/sda1  为设备设定默认的选项
tune2fs  -i0 -c0     /dev/sda1          -i表示调整时间间隔自检,默认180天在自检,0表示关闭;-c表示挂载多少此后自检,0表示关闭
 
                                                     mount命令
mount [options]  -o [options]  /dev/device /path to mount_point
       -r                               只读挂载          
       -w                               读写挂载
       -a                               表示挂载/etc/fstab中的每一个文件系统
       -t                               表示文件系统类型
       --bind                           再是绑定到挂载点
                      ro                只读挂载
                      rw                读写挂载      
                      sync              同步写入
                      async             异步写入(暂存与内存)
                      defaults          默认选项
                      auto              是否允许自动挂载
                      dev               支持特殊设备文件
                      exec              是否执行二进制文件
                      nouser            禁止普通用户挂载文件系统
                      netdev            表示网络设备,判断服务是否在线
                      remount           重新挂载
                      suid              是否支持带suid位的文件系统
                      acl               是否启动acl列表
                       
fuser -v  /mount_point                  看谁在使用此设备     
fuser -km /mount_point                  强行剔除使用此设备的用户和进程
/etc/fstab是在系统启动时自动挂载文件系统的列表;文件由6段组成:设备:挂载点:文件系统类型:挂在选项:转储频率:开始时检查文件的次序
/etc/mtab是当前系统已经挂载的文件系统的信息
                          内核模块(.ko)
内核模块的优势:他可以减少内核的体积;增加弹性;提高运行时间。
每一个内核都会有一个内核模块与之对应,存放内核模块的目录在/lib/modules/$(uname -r)/内。
与内核模块有关的命令:
lsmod                显示以加载模块的详细信息
modprobe             加载模块(后跟模块名)   
modprobe -l          列出加载的模块
modprobe -s          错误信息记录到日志中去
modprobe -r          卸载模块
modinfo              显示模块的摘要信息
insmod               加载模块(后跟模块的全路径)
AN initrd RAM disk的重建:mkinitrd /boot/initrd-$(uname -r).img $(uname -r)