内核编译
内核编译
单内核体系设计,但充分借鉴了微内核设计体系的优点,为内核引入模块化机制。
内核组成部分:
Kernel,内核核心,一般为bzImage,通常在/boot目录下,名称为vmlinuz-WERSION-
RELEASE;
Kernel object:内核对象,一般放置于/lib/modules/VERSION-RELEASE/
[ ]:N 功能模块不编译到现有内核。
[M]:M 生成模块放置于/lib/modules/VERSION-RELEASE/
[* ]: Y 打入内核
辅助文件:ramdisk
Initrd
Initramfs
内核版本
Uname命令:
Uname – print system information
Uname
– n:显示节点名称
-r :显示版本信息VERSION-RELEASE
-a :显示所有信息
内核模块命令
lsmod命令
显示有核心已经装载的内核模块
显示的内容来自于:/proc/modules文件
modinfo命令
显示详细的描述信息
modinfo
-n 只显示模块文件路径
-p 显示模块参数
-a author作者信息
-d description 描述信息
-l license许可证
lsmod | grep xfs ;modinfo xfs
内核模块管理
modprobe命令
装载或卸载内核模块
modprobe [-C config-file] [modulename] [module parame-ter……]
配置文件:/etc/modprobe.conf
/etc/modprobe.d/*.conf
modprobe [-r] modulename
depmod命令
内核模块依赖关系文件及系统信息映射文件的生成工具
装载或卸载内核模块
insmod命令:指定模块文件,不自动解决依赖模块
insmod [filename] [module options….] 安装模块
Insmod `modinfo -n exportfs` 查看模块文件路径
Insmod `modinfo -n xfs`
rmmod 删除模块
rmmod [modulename]
rmmod xfs
rmmod exportfs
编译安装ntfs示例
1、安装开发包组
Yum groupinstall “Development Tools”
Yum groupinstall “server platform Development”
Yum install ncures
将linux-3.18.41.tar.xz内核包拷入一个现成的Linux操作系统
将tar -xvf linux-3.18.41.tar.xz -C /usr/src 解压到源码存放路径
将内核解压完成后进入/usr/src目录会生成一个linux-3.18..41的目录
2、进入linux-3.18..41目录,注意:后续操作都将在该目录下进行。
参考/boot/config-3.10.0-327.e17.x86_64文件,该文件记录了当前系统在编译安装时
它启用了哪些模块,每一行代表了一个模块
=y 代表已经打入核心
未设置代表没有编译到内核中
=m 代表内核模块
可以将该文件作为一个模板在它的基础之上增加一个ntfs的功能,其他的内容不动,
避免因对硬件不了解而出错。
3、将/boot/config-3.10.0-327.e17.x86_64 复制到/usr/src/linux-3.18.41目录中且必须命
名成 . config 的隐藏文件 :cp /boot/config-3.10.0-327.e17.x86_64 .config
因为编译程序只认 . config文件,通过它来展现模块菜单
4、make menuconfig 进入内核编译模式
按下图步骤开始操作
添加内核版本号
文件系统类型
按空格选择是否模块化或打入内核
exit 退出保存
5、执行命令make -j cpu核心数 开始执行编译
eg:make -j 2 编译之前查看一下
6、等待一个漫长的编译过程
7、编译完成后执行命令:
make modules_install 添加模块驱动
make install
8、reboot 用新内核启动
9、执行命令 locate ntfs.ko 查看ntfs是否编入内核,注意在使用locate命令时,先
使用命令updatedb更新一下数据库。
原创文章,作者:zzd,如若转载,请注明出处:http://www.178linux.com/45954