编译一个内核
首先,配置好编译环境:用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)