1-18 编译安装内核支持ntfs文件系统

大纲:

源码编译Linux内核
使用Linux内核模块
实战:编译一个NTFS内核模块,实现Linux挂载NTFS文件系统并实现读写功能

===================================================================

一、源码编译Linux内核

通常我们想对内核进行升级时,可通过下载源码包,编译内核的方式,对内核进行升级

源码包的下载地址在:www.kernel.org

我们可以直接在linux系统中直接下载,如下命令:
wget https://www.kernel.org/pub/linux/kernel/v4.x/linux-4.4.tar.xz

也可以在windows中下载好后,上传到Linux中。自己选择吧

查看当前系统内核版本:

uname –r

注意:在编译内核时,必须保证磁盘有7G以上空间,切各种工具(gcc、gcc-c++、make等)和库(ncurses-devel、openssl-devel)已安装(不然是会报错的,浪费时间)

第一步:为了保证磁盘空间够用,对虚拟机进行如下设置:

1、添加一块磁盘

2、设置内存在2.5G以上(根据自己主机配置,内存太小,编译时会很慢的)

第二步:对添加的磁盘进行分区格式化,并挂载(这里就不写步骤了)

第三步:使用xftp工具,将下载的源码包上传到虚拟机中,并移动到/sdb1目录下

第四步:解压缩源码包

切换到到/sdb1目录下

看到xz结尾的文件,我们可以使用xz命令对其进行解压(xz –help #查看帮助信息,懂点英文还是有好处的,省去不少麻烦)

xz -d linux-4.7.2.tar.xz

解压出来的文件是.tar包,执行如下命令

tar -xf linux-4.7.2.tar

详情如下:

进入解压后的目录,查看所有文件

第五步:编译工具及库是否以安装

为防止浪费时间,保证编译过程顺利,直接检查gcc,gcc-c++,make和库ncurses-devel、openssl-devel是否已安装,执行如下命令:

[[email protected] linux-4.7.2]# rpm -qa | grep gcc
[[email protected] linux-4.7.2]# rpm -qa | grep gcc-c++
[[email protected] linux-4.7.2]# rpm -qa | grep make
[[email protected] linux-4.7.2]# rpm -qa | grep ncurses-devel
[[email protected] linux-4.7.2]# rpm -qa | grep openssl-devel

若未安装,可使用rpm或yum命令进行安装

[[email protected] linux-4.7.2]# yum -y -install ncurses-devel openssl-devel

执行结果:

第六步:清空缓存

为了保证在编译内核过程中,快捷和内存容量问题,我们需要先清空一下缓存

使用free -m命令可以查看内存信息


这时,我们发现缓存太多了,剩余空间很少,这是为了保证缓存中重要的数据不会丢失,先执行一下同步命令,将缓存信息同步到硬盘,命令—>sync

清除缓存,其实就是修改文件。Linux系统中,将是否需要对缓存文件清除的配置文件存放在/proc/sys/vm/drop_caches中。我们可以cat查看一下。具体设置如下:
cat /proc/sys/vm/drop_caches
buff ---> 1
cache ---> 2
buff/cache ---> 3
我们向配置文件中输入3,让系统清除缓存,然后在查看内存信息,详情如下;

[[email protected] linux-4.7.2]# free -m
[[email protected] linux-4.7.2]# sync
[[email protected] linux-4.7.2]# cat /proc/sys/vm/drop_caches
[[email protected] linux-4.7.2]# echo 3 > /proc/sys/vm/drop_caches
[[email protected] linux-4.7.2]# free -m

第七步:配置内核功能,使其支持ntfs 检查

执行命令 make menuconfig #注意,最好在虚拟机中的图形化界面运行

#在xshell中运行可能会不成功,我是在xshell中执行的这条命令,应该与窗口大小有关!

选中File systems选项,回车进入

然后,选中DOS/FAT/NT Filesystems选项,回车进入,如下图:

然后,选中NTFS file system support选项,空格选中,会发现前面多了个M,然后移动光标,空格设置NTFS write support,会发现前面多了个* ,如下图:

然后,使用TAB键,切换到下方功能菜单,移动光标选中Save回车

这是会出现如下,对话框(他是在告诉你,将会把你的配置信息,保存到.config文件中,直接回车,OK即可):然后,我们一直选中Exit,回车退出即可!

这是查看文件会发现,多了一个.config文件

由于内核的配置选项太多,过于繁琐,为了避免错误,方便快捷,可以直接将我们原系统内核中的配置文件保存到当前目录下,覆盖.config,然后再次执行本步骤操作即可。

操作如下:

然后,再次执行make menuconfig依次按照本步骤来即可

注意:操作方法通过上下键,移动光标,使用TAB键切换窗口,空格或回车键选中等

(详情见下图)

第八步:检查配置结果

为了保证编译出的内核,是支持NTFS格式的,我们可以查看.config文件,看看其是否以设置成功。

vim /sdb1/linux-4.7.2/.config

输入:/NTFS  #查找对应关键字,结果如图:

从这里我们可以发现,确实已经设置成功了,如果你还是不敢确定,可以查看/boot/config…中的文件,确认一下,是否一样,老配置文件如图:

第九步:开始编译并安装内核(这是一个很漫长的过程!!!)

编译内核的步骤为:

生成内核---> 生成模块---> 安装模块--->安装内核,命令如下:

[[email protected] linux-4.7.2]# make bzImage #生成内核
[[email protected] linux-4.7.2]# make modules -j 4 #生成模块
[[email protected] linux-4.7.2]# make modules_install  #安装模块
[[email protected] linux-4.7.2]# make install  #安装内核
每执行完一条命令,我们可以使用如下命令,检查上一条命令是否执行成功:

[[email protected] linux-4.7.2]# echo $?

总结:

使用新内核启动系统后,查看内核版本:

[[email protected] ~]# uname –r

最后总结一下编译内核的步骤 :

xz  -d linux-4.4.tar.xz

tar xf linux-4.4.tar   #解压文件比较多就不加-v了

make menuconfig

make bzImage

make modules -j 4

echo $?

为了确保没有错误,可以用上面的命令来查看是否有错误,如果是0的话,就表示没有错误或警告了

make modules_install

make install

重启,测试

注意:

如果我们不知道怎么编译安装内核,可以查看解压后,目录下生成的README文件,这里会有详细的步骤的!!!

vim /sdb1/linux-4.7.2/README

如下图:

 

=============================================================================

内核模块操作

Linux内核模块是一种可被动态加载和卸载的可执行程序。

通过内核模块扩展内核功能,内核模块通长用于设备驱动,文件系统等。

如果没有内核模块,需要向内核添加功能就需要自发代码、重新编译内核、安装新内核等步骤。

内核模块存放的位置:/lib /lib64  (与windows中的dll文件类似--->通用的模块)


modules ---> 存放内核模块

查看我们刚添加的ntfs模块

ls /lib/modules/4.7.2/kernel/fs

模块操作:insmod(插入模块)、modprobe(模块管理高级方案)、lsmod(查看模块)、rmmod(删除模块)、depmod(查看模块依赖)、modinfo(查看模块信息)

insmod命令和modprobe的区别就像#rpm命令和yum命令的区别一样

insmod命令不会自动查找依赖关系(需要我们手动解决)

而modprobe命令会查找模块的依赖关系,并将依赖模块安装

实例如下图:(insmod需要指定文件全名和路径,而modprobe只需给出名称即可)

加载模块、查看效果后卸载
cd /lib/modules/4.4.0/kernel/fs

cd fat/
insmod fat.ko  #插入模块
lsmod | grep fat  #查看模块
rmmod fat  #删除模块

lsmod | grep fat

modinfo #查看某个模块信息
modinfo /lib/modules/4.7.2/kernel/fs/fat/vfat.ko

内容详解:

filename:       /lib/modules/4.7.2/kernel/fs/fat/vfat.ko #文件名称及路径
author:         Gordon Chaffee #作者
description:    VFAT filesystem support #模块描述信息
license:        GPL #模块支持GPL协议
alias:          fs-vfat  #模块别名
srcversion:     D5ADDB2AED00B04F5FF993F #软件版本号
depends:        fat #依赖关系
intree:         Y
vermagic:       4.7.2 SMP mod_unload modversions

depmod #查看模块依赖关系

我们也可以查看配置文件来查找模块依赖关系,命令如下:

vim /lib/modules/4.7.2/modules.dep


开机自动加载
vim /etc/rc.local

实战:
第一步:添加磁盘 ,并对其进行分区

不要格式化,因为工具还没有安装呢!!!

mkfs.        #连按两次tab键


第二步:检查依赖 fuse ntfs

rpm –qa |grep fuse

rpm –qa | grep ntfs

上传ntfs-3g源码包,进行解压,并编译安装:

tar –zxf –C /usr/src ntfs-3g_ntfsprogs-2016.2.22.tgz

(昨天到这里了)安装ntfs-3g
tar -zxf -C /usr/src
cd
./configurs --prefix=/usr/local/ntfs-3g

echo $?
make -j 4

make install

make.ntfs


/usr/local/ntfs-3g/sbin/mkntfs

格式化、创建挂载点,并格式化
mount -t ntfs-3g /dev/sdb1 /ntfs

blkid /dev/sdb1 #查看
http://www.tuxera.com/community/ntfs-3g-download

时间: 2024-09-29 02:17:27

1-18 编译安装内核支持ntfs文件系统的相关文章

编译Linux内核4.6.3使其支持NTFS文件系统

编译安装4.6.3内核,并使其支持NTFS文件系统   在编译内核之前的虚拟机环境搭建,虚拟机硬盘可用空间不得小于7G,内存需大大于2.5G, 根据个人电脑配置适当调整,可提高效率.   一. 下载内核源码包 https://www.kernel.org/     二.查看虚拟机是否具备编译条件 1) [[email protected] /]# rpm -q make make-3.82-21.el7.x86_64 [[email protected] /]# rpm -q gcc gcc-4

redhat6.5安装ntfs-3g rpm来支持ntfs文件系统挂载

linux安装ntfs-3g模块来支持ntfs文件系统挂载 所需包 fuse-2.9.3.tar.gz ntfs-3g_ntfsprogs-2011.4.12.tgz step1. 解压fuse-2.9.3.tar.gz tar -zxvf fuse-2.9.3.tar.gz step2. 编译安装fuse cd fuse-2.9.3 ./configure ./make ./make install 可能出现的错误 cofigure:error:c compiler cannot create

Centos 7 源码编译安装内核4.14.12

为什么要编译内核 需要新功能的支持: 在生产环境中,突然会需要使用一些新的功能,但是原有的内核并不支持此功能,这是就需要重新编译出一个新的内核来提供对此新功能的支持,比如虚拟化.iptables功能必须要在2.4.X以上版本的内核中才支持. 原核心太过于臃肿: 原来安装的内核中,有很多不常用甚至基本上用不到的功能支持,而这些功能又会使内核文件变得很大,这时要将此变成一个简化切功能够用的内核就需要进行重新编译. 与硬件搭配的稳定性: 很多情况下,系统内核中默认一般默认支持的CPU类型为Inter,

编译安装内核

升级内核到 linux-4.20.3.tar.xz 查看当前内核版本: [[email protected] data]#uname -r 3.10.0-862.el7.x86_64 获取内核源代码包:www.kernel.org linux-4.20.3.tar.xz ==实施步骤 1. 安装编译所需的工具 gcc ncurses-devel make(开发工具) 2. 下载内核源码 a. www.kernel.org(最新) b. ftp://ftp.redhat.com/pub/redha

Linux 编译安装内核

一.简介 内核,是一个操作系统的核心.它负责管理系统的进程.内存.设备驱动程序.文件和网络系统,决定着系统的性能和稳定性.Linux作为一个自由软件,在广大爱好者的支持下,内核版本不断更新.新的内核修订了旧内核的bug,并增加了许多新的特性.如果用户想要使用这些新特性,或想根据自己的系统度身定制一个更高效,更稳定的内核,就需要重新编译内核. 本文将以kernel linux-2.6.32.4版本为实验介绍的内核编译与安装一般方法,这些方法适合大多数Linux系统(包括RedHat.Ubuntu.

apache/mysql/php编译安装及支持xcache和fastcgi方式运行

一.编译安装apache     1.安装环境:yum install gcc gcc-c++ openssl-devel libtool -y     2.安装apr.apr-util及pcre         tar jxf apr-1.5.1.tar.bz2         cd apr-1.5.1         ./configure --prefix=/usr/local/apr         make && make install              tar jxf

修复/boot及/etc/fstab、自制linux、编译安装内核

实验一.破坏dev/sda 的MBR的446字节: 破坏:dd if=/dev/zero of=/dev/sda bs=1 count=446 查看:hexdump -C -n 512 /dev/sda 发现前面的字节都为0 状况一.刚破坏未重启的时候修复: 可以利用grub重新生成: grub grub> root (hd0,0) grub> setup (hd0) quit退出 修复完之后使用hexdump -C -n 512 /dev/sda查看发现已经修复成功 状况二.破坏之后重启了,

CentOS7手动编译安装内核4.11.7

1. 进入/usr/src/目录 cd /usr/src 2. 下载内核源码,网址:https://www.kernel.org wget https://cdn.kernel.org/pub/linux/kernel/v4.x/linux-4.11.7.tar.xz 3. 经过了蜗牛般的下载之后,解压源码包 tar xf linux-4.11.7.tar.xz 4. 进入源码目录,执行清理工作: cd linux-4.11.7 make mrproper 注意clean,mrproper,di

LAMP+NFS之编译安装php与NFS文件系统

编译安装php5.6.4 一.准备源码包 此处使用的是5.6.4版本,对于PHP5.3以上版本,为了链接MySQL数据库,可以指定mysqlnd,这样在本机就不需要先安装MySQL或MySQL开发包了.mysqlnd从php 3开始可用,可以编译时绑定到它(而不用和具体的MySQL客户端库绑定形成依赖),但从PHP 5.4开始它就是默认设置了. [[email protected] ~]# tar xf php-5.6.4.tar.xz     [[email protected] ~]# cd