SEARU.ORG
当前位置:SEARU.ORG > Linux 教程 > 正文

实战Linux内核编译(支持NTFS)

什么是内核

    kernel(内核)是操作系统的核心,相当于人的大脑,掌控所有的硬件设备的控制权,也就是希望计算机帮你完成各项工作,那都需要通过内核的帮助才能完成,当然,如果你想实现的功能内核没有提供,那就必须添加相关的模块到内核中,就类似驱动程序,有了模块的支持我们计算机才能去操控硬件,完成我们想完成的工作

    内核其实就是系统上面的一个文件,这个文件包含了驱动硬件的检测程序与驱动模块,内核文件在/boot目录下一个以vmlinuz开头的文件,有时候/boot下面有几个vmlinuz开头的文件,但是启动的时候只能加载一个,所以说Linux系统是个单内核,多模块的体系

    Linux内核的官方网站是http://www.kernel.org,访问该网站可以获取内核各个版本的代码。其中网站主页上显示的是当前内核的最新稳定版本。

    你可以通过https://www.kernel.org/pub/linux/kernel/来查找任何一个你想要的内核版本,并用wget来下载他

下面实例做一次内核编译(支持NTFS)

内核编译具体步骤

执行步骤:

1、到www.kernel.org上下载相应的内核源码包 
2、确认你的系统中已经具备了编译软件的基本条件,也就是要安装make ,gcc, gcc-c++ ,ncurses-devel和库工具等等 。  开发工具和库
3、解压内核源码包
4、配置内核编译参数
5、编译内核、安装编译好的内核与模块
6、查看或修改GRUB菜单(为了确认你是不是真的把内核安装好了)
7、重新启动系统,测试新内核的工作情况

1、下载相应内核源码包

我这里就不下载了,(网速太慢了/(ㄒoㄒ)/~~)不过我本地有 linux-3.16.2.tar 你们可以去官网下载看看

2、安装开发组工具

[[email protected] ~]# yum groupinstall “Server Platform Development” “Development tools”

 

3、解压内核源码包

[[email protected] sdb1]# tar xvf linux-3.16.2.tar.xz

[[email protected] sdb1]# du -sh linux-3.16.2/

634Mlinux-3.16.2/

4、配置内核编译参数

由于我们只添加一个NTFS,我们把我们现有的环境.config拷贝到到源码包目录下

[[email protected] linux-3.16.2]# cp /boot/config-2.6.32-642.el6.x86_64 ./.config

[[email protected] linux-3.16.2]# make menuconfig 打开文本窗口,配置内核选项(这里依据.config文件中的定义)

wKiom1fXxdOC61STAADVxKAnPdg358.png

如是想查询,某个参数在哪里,可以这样,在这个界面下,输入: / 然后再输入: NTFS  就显示如下:

wKiom1fXxh7C1PHjAAFKEdMnFb8234.gif选中NTFS选项后,保存.conf 保存后,按下esc或 选中Exit 进程退出

wKiom1fXxxvQUCGwAAqJ0mTvtAI428.gif

配置过程中:

[ ] : 表示不进行编译

[M] : 表示以模块的形式进行编译

[*] : 编译进内核中

 

5、编译内核

[[email protected] linux-3.16.2]# make [-j 2] 表示CPU线程编译

[[email protected] linux-3.16.2]# make modules_install  安装模块

[[email protected] linux-3.16.2]# make install  安装内核相关文件

6、查看或修改GRUB菜单(为了确认你是不是真的把内核安装好了)

[[email protected] linux-3.16.2]# vim /boot/grub/grub.conf

wKioL1fX1tqSS1n1AAD4MtEPa0A863.png

7、重新启动系统,测试新内核的工作情况

注意,在启动的时候,需要自己进来一下选择,否则默认还是以前的内核启动哦。除非你在上一步把默认启动项给改了。

wKiom1fX2FLSm4vuAAEpo3dgNyo833.gif我的第一项竟然是新内核

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

[[email protected] ~]# uname -r

3.16.2

[[email protected] ~]# uname -a

Linux localhost.localdomain 3.16.2 #1 SMP Mon Jul 25 10:34:36 CST 2016 x86_64 x86_64 x86_64 GNU/Linux

[[email protected] ~]# 

 

内核模块操作

 

内核(模块)管理命令:

模块的作用:把具体功能封装好的程序。  比如,冲电宝。可以给所有手机冲电。

存放内核模块的目路径: 

[[email protected] ~]# ll /lib/modules/

total 8

drwxr-xr-x. 7 root root 4096 Jul 25 08:43 2.6.32-642.el6.x86_64

drwxr-xr-x  3 root root 4096 Jul 25 12:31 3.16.2

[[email protected] ~]# cd /lib/modules/3.16.2/kernel/fs/

[[email protected] fs]# ls fat/

fat.ko  msdos.ko  vfat.ko

#Linux可以直接支持FAT32文件系统

 

插入模块:

insmod 

作用:载入模块

例:载入模块fat.ko

[[email protected] fs]# insmod fat/fat.ko 

 

查看当前系统中加载的模块

#lsmod    列出当前模块

[[email protected] fs]# lsmod | grep fat

fat                    59379  0 

 

删除模块

#rmmod   fat  #删除模块 。跟上模块的名字

[[email protected] fs]# rmmod fat

[[email protected] fs]# lsmod | grep fat

[[email protected] fs]#

 

查看模块信息

#modinfo    查看模块信息

[[email protected] fs]# modinfo vfat

filename:       /lib/modules/3.16.2/kernel/fs/fat/vfat.ko

author:         Gordon Chaffee

description:    VFAT filesystem support

license:        GPL

alias:          fs-vfat

srcversion:     D2372BC4E9386742F7AE1A6

depends:        fat

intree:         Y

vermagic:       3.16.2 SMP mod_unload modversions

 

#modprobe    插入模块(可以自动解决模块之间的依赖关系,像yum可以自动解决rpm之间的依赖关系一样)

[[email protected] fat]# modprobe vfat

[[email protected] fat]# lsmod | grep fat

vfat                   10575  0 

fat                    59379  1 vfat

 

#modprobe -r   删除模块和 rmmod一样 。删除时不能自动解决依赖关系的

 

开机加载某个驱动:

[[email protected] ~]# ll /etc/rc.local 

lrwxrwxrwx. 1 root root 13 Jul 25 08:37 /etc/rc.local -> rc.d/rc.local

[[email protected] ~]# vim /etc/rc.local 

wKiom1fX35LyyA8iAAA-gyR9D5I534.png

 

实战-编译一个NTFS内核模块,实现linux挂载NTFS文件系统

安装 fuse:

[[email protected] ~]# tar zxvf fuse-2.8.3.tar.gz

[[email protected] ~]# cd fuse-2.8.3

[[email protected] fuse-2.8.3]# ./configure 

[[email protected] fuse-2.8.3]# make && make install

安装:ntfs-3g

[[email protected] ~]# tar zxvf ntfs-3g-2011.1.15.tgz 

[[email protected] ~]# cd ntfs-3g-2011.1.15

[[email protected] ntfs-3g-2011.1.15]# ./configure 

[[email protected] ntfs-3g-2011.1.15]# make && make install

 

挂载:

插一个NTFS格式分的U盘。 然后把U盘导入到虚拟机中

[[email protected] ~]# mount -t ntfs-3g /dev/sdb1 /opt/

 

开机自动挂载:

[[email protected] ~]#  vim /etc/fstab

/dev/sdb1             /opt                 ntfs-3g   defaults        0 0

未经允许不得转载:SEARU.ORG » 实战Linux内核编译(支持NTFS)

赞 (0)
分享到:更多 ()

评论 0