首頁 > 軟體

實戰Linux核心編譯(支援NTFS)

2020-06-16 17:30:12

什麼是核心

    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、安裝開發組工具

[root@localhost ~]# yum groupinstall "Server Platform Development" "Development tools"

 

3、解壓核心原始碼包

[root@localhost sdb1]# tar xvf linux-3.16.2.tar.xz

[root@localhost sdb1]# du -sh linux-3.16.2/

634Mlinux-3.16.2/

4、設定核心編譯引數

由於我們只新增一個NTFS,我們把我們現有的環境.config拷貝到到原始碼包目錄下

[root@localhost linux-3.16.2]# cp /boot/config-2.6.32-642.el6.x86_64 ./.config

[root@localhost linux-3.16.2]# make menuconfig 開啟文字視窗,設定核心選項(這裡依據.config檔案中的定義)

如是想查詢,某個引數在哪裡,可以這樣,在這個介面下,輸入: / 然後再輸入: NTFS  就顯示如下:

選中NTFS選項後,儲存.conf 儲存後,按下esc或 選中Exit 進程退出

設定過程中:

[ ] : 表示不進行編譯

[M] : 表示以模組的形式進行編譯

[*] : 編譯進核心中

 

5、編譯核心

[root@localhost linux-3.16.2]# make [-j 2] 表示CPU執行緒編譯

[root@localhost linux-3.16.2]# make modules_install  安裝模組

[root@localhost linux-3.16.2]# make install  安裝核心相關檔案

6、檢視或修改GRUB選單(為了確認你是不是真的把核心安裝好了)

[root@localhost linux-3.16.2]# vim /boot/grub/grub.conf

7、重新啟動系統,測試新核心的工作情況

注意,在啟動的時候,需要自己進來一下選擇,否則預設還是以前的核心啟動哦。除非你在上一步把預設啟動項給改了。

我的第一項竟然是新核心

8、使用新核心啟動系統後,檢視核心版本

[root@localhost ~]# uname -r

3.16.2

[root@localhost ~]# 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

[root@localhost ~]# 

 

核心模組操作

 

核心(模組)管理命令:

模組的作用:把具體功能封裝好的程式。  比如,沖電寶。可以給所有手機衝電。

存放核心模組的目路徑: 

[root@localhost ~]# 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

[root@localhost ~]# cd /lib/modules/3.16.2/kernel/fs/

[root@localhost fs]# ls fat/

fat.ko  msdos.ko  vfat.ko

#Linux可以直接支援FAT32檔案系統

 

插入模組:

insmod 

作用:載入模組

例:載入模組fat.ko

[root@localhost fs]# insmod fat/fat.ko 

 

檢視當前系統中載入的模組

#lsmod    列出當前模組

[root@localhost fs]# lsmod | grep fat

fat                    59379  0 

 

刪除模組

#rmmod   fat  #刪除模組 。跟上模組的名字

[root@localhost fs]# rmmod fat

[root@localhost fs]# lsmod | grep fat

[root@localhost fs]#

 

檢視模組資訊

#modinfo    檢視模組資訊

[root@localhost 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之間的依賴關係一樣)

[root@localhost fat]# modprobe vfat

[root@localhost fat]# lsmod | grep fat

vfat                   10575  0 

fat                    59379  1 vfat

 

#modprobe -r   刪除模組和 rmmod一樣 。刪除時不能自動解決依賴關係的

 

開機載入某個驅動:

[root@localhost ~]# ll /etc/rc.local 

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

[root@localhost ~]# vim /etc/rc.local 

 

實戰-編譯一個NTFS核心模組,實現linux掛載NTFS檔案系統

安裝 fuse:

[root@localhost ~]# tar zxvf fuse-2.8.3.tar.gz

[root@localhost ~]# cd fuse-2.8.3

[root@localhost fuse-2.8.3]# ./configure 

[root@localhost fuse-2.8.3]# make && make install

安裝:ntfs-3g

[root@localhost ~]# tar zxvf ntfs-3g-2011.1.15.tgz 

[root@localhost ~]# cd ntfs-3g-2011.1.15

[root@localhost ntfs-3g-2011.1.15]# ./configure 

[root@localhost ntfs-3g-2011.1.15]# make && make install

 

掛載:

插一個NTFS格式分的U盤。 然後把U盤匯入到虛擬機器中

[root@localhost ~]# mount -t ntfs-3g /dev/sdb1 /opt/

 

開機自動掛載:

[root@localhost ~]#  vim /etc/fstab

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

本文永久更新連結地址http://www.linuxidc.com/Linux/2016-10/136157.htm


IT145.com E-mail:sddin#qq.com