一:前要知识准备
1:参考 系统原内核文件的配置文件,编译新内核选项
原配置文件/boot/ config-3.10.0-514.el7.x86_64
了解配置文件的内容信息
cat /boot/ config-3.10.0-514.el7.x86_64
每一行代表一个模块
=y 代表模块存放在核心内核里面
=m 代表模块存放在/lib/modules内
下图中:NTFS is not set 表示NTFS功能没有启用
EXT4文件系统格式的模块是打到/lib/modules内的
2:内核菜单
命令: make menuconfig
需要安装:ncurses-devel 包
make menuconfig:
内核选项菜单
3:编译特定的内核模块
1:选择指定的ko文件路径
2:进入解压内核文件目录 /root/linux4.12
生成ko文件:
make fs/ntfs/ntfs.ko
cp ko文件至 /lib/modules/ 4.12.0-1.0-mashuai-kernel
cp fs/ntfs/ntfs.ko /lib/modules /4.12.0-1.0-mashuai-kernel/kernel/fs/ntfs/
二:编译内核支持NTFS硬盘格式
1:硬件要求
1) /boot空闲空间在500M以上
2) / 空间空间在10G以上
3)真实物理硬盘至少也需要在10G以上
4)本实验系统环境为Centos7,Centos6流程与7类似
2:下载源码文件
llinux-4.12.tar https://www.kernel.org/
放置在根目录下
解压包:tar xvf linux-4.12—
3:准备配置文件
编译内核时,系统默认会去找.config文件
cp /boot/config-3.10.0-514.el7.x86_64 /root/linux-4.12/.config
4:安装开发包包组
yum groupinstall “Development Tools”
5 安装内核选项菜单 文件包
要在内核解压包解压文件的路径下做如下操作:
cd /boot/linux-4.12
yum install nucres-devel
make menuconfig
图片开头的.config 就是依照/root/linux-4.12/.config配置文件而生成的现在的菜单
[]表示模块打入内核中
[] General setup 通用设置
local version:编译者加的内核版本
6: 增加内核版本内容
-1.0-mashuai-keernel
7 :更改文件系统设置
NTFS:改为 NTFS模块文件打入/lib/modules
[*] NTFS write support 写功能开启。
即便是开启,NTFS在实际中也不支持写功能
[*] NTFS debugging support 调试NTFS
8:安装内核相关文件
make –j 4
4表示4颗cpu
缺少软件包 openssl-devel
安装软件包:yum install –y openssl-devel
继续编译内核:make –j 4
生成ko模块驱动文件,so库文件,内核相关文件
9:更新updatedb数据库
更新updatedb数据库 updatedb
查看ntfs.ko文件有无生成: locate ntfs.ko
10:安装模块
make modules_install :相当于把需要内核配置文件中安装在/lib/modules目录内的文件
cp至/lib/modules内。
install命令就相当于复制命令
11:生成内核文件
安装缺少的软件:(此文件为其他人在生成内核文件时出现的报错信息)
yum install elfutils-libelf-devel
make install :安装内核相关文件
ls /boot : 查看vmlinu-4.12内核文件有无生成
cat /boot/grub2/grub.cfg :查看内核启动配置文件有无更改
增加了如图片下的内容:menuentr相当于centos6中的title
系统启动时,会增加一个centos linux 4.12版本的内核启动项
12 :重启电脑
增加了一个4.12的内核选项
13:重新挂载NTFS格式的U盘
df
mount /dev/sdb1 /mnt/cd
可以查看里面的文件内容:cat ansible.txt
但是不可以写入:touch f1
mount :查看挂载属性,为ro只读格式
更改挂载属性: mount –o remount,rw /dev/sdb1
不可以重新挂载,有写保护。NTFS仅支持读
三:清理及卸载内核
1:清理:make clean
make clean:清理大多数编译生成的文件,但会保留config文件等
2:卸载:
删除/lib/modules/目录下不需要的内核库文件
删除/root/linux4.12---/目录下不需要的内核源码
删除/boot目录下启动的内核和内核映像文件
更改grub的配置文件,删除不需要的内核启动列表