日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > linux >内容正文

linux

Note For Linux By Jes(20)-Linux 核心编译与管理

發布時間:2023/12/14 linux 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Note For Linux By Jes(20)-Linux 核心编译与管理 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

編譯前的任務:認識核心與取得核心原始碼:

什么是核心(Kernel)

  • Kernel:核心就是系統上面的一個文件而已,這個文件包含了驅動主機各項硬件的偵測程序與驅動模塊,這個核心文件通常被放置成/boot/vmlinuz 。

  • 核心模塊(kernel module)的用途:將一些不常用的類似驅動程序的咚咚獨立出核心,編譯成為模塊,然后,核心可以在系統正常運行的過程當中加載這個模塊到核心的支持,存在/lib/modules/$(uname-r)/kernel/ 中。

  • 自制核心– 核心編譯

  • 升級核心的目的:

    • 新功能的需求:
      我需要新的功能,而這個功能只有在新的核心里面才有,那么為了獲得這個功能,只好來重新編譯我的核心了。例如iptables 這個防火墻機制只有在2.4.xx 以后的版本里面才有,而新開發的主板芯片組,很多也需要新的核心推出之后,才能正常而且有效率的工作!

    • 原本核心太過臃腫:
      如果你是那種對於系統『穩定性』很要求的人,對於核心多編譯了很多莫名其妙的功能而不太喜歡的時候,那么就可以重新編譯核心來取消掉該功能羅;

    • 與硬件搭配的穩定性:
      由於原本Linux 核心大多是針對Intel CPU 來作開發的,所以如果你的CPU AMD 的系統時,有可能(注意!只是有可能,不見得一定會如此)會讓系統跑得『不太穩!』。此外,核心也可能沒有正確的驅動新的硬件,此時就得重新編譯核心來讓系統取得正確的模塊才好。

    • 其他需求(如嵌入式系統)
      就是你需要特殊的環境需求時,就得自行設計你的核心羅!(像是一些商業的套裝軟件系統,由於需要較為小而美的操作系統,那么他們的核心就需要更簡潔有力了!)



    核心原始碼的取得方式:

  • 原本distribution 提供的核心原始碼文件

  • 取得最新的穩定版核心原始碼

  • 保留原本配置:利用patch 升級核心原始碼



  • 核心原始碼的解壓縮/安裝/觀察:

  • 核心原始碼的解壓縮與放置目錄:/usr/src/kernels/

  • 核心原始碼下的次目錄:

    • arch:與硬件平臺有關的項目,大部分指的是CPU 的類別,例如x86, x86_64, Xen虛擬支持等;

    • block:與區塊裝置較相關的配置數據,區塊數據通常指的是大量儲存媒體!還包括類似ext3等文件系統的支持是否允許等。

    • crypto:核心所支持的加密的技術,例如md5 或者是des 等等;

    • Documentation:與核心有關的一堆說明文件,若對核心有極大的興趣,要瞧瞧這里!

    • drivers:一些硬件的驅動程序,例如顯卡、網絡卡、PCI相關硬件等等;

    • firmware:一些舊式硬件的微命令碼(韌體)數據;

    • fs:核心所支持的filesystems ,例如vfat, reiserfs,nfs 等等;

    • include:一些可讓其他程序呼叫的標頭(header) 定義數據;

    • init:一些核心初始化的定義功能,包括掛載與init 程序的呼叫等;

    • ipc :定義Linux操作系統內各程序的溝通;

    • kernel:定義核心的程序、核心狀態、運行緒、程序的排程(schedule)、程序的訊號(signle)

    • lib:一些函式庫;

    • mm:與內存單元有關的各項數據,包括swap 與虛擬內存等;

    • net:與網絡有關的各項協議數據,還有防火墻模塊(net/ipv4/netfilter/*)等等;

    • security:包括selinux等在內的安全性配置;

    • sound:與音效有關的各項模塊;

    • virt :與虛擬化機器有關的資訊,目前核心支持的是KVM (Kernel baseVirtual Machine)







    核心編譯的前處理與核心功能選擇:

    保持干凈原始碼:make mrproper

    開始挑選核心功能:make XXconfig

    • make menuconfig
      最常使用的,是文字模式底下可以顯示類似圖形介面的方式,不需要啟動X Window 就能夠挑選核心功能菜單!

    • make oldconfig
      透過使用已存在的./.config文件內容,使用該文件內的配置值為默認值,只將新版本核心內的新功能選項列出讓使用者選擇,可以簡化核心功能的挑選過程!對於作為升級核心原始碼后的功能挑選來說,是非常好用的一個項目!

    • make xconfig
      透過以Qt 為圖形介面基礎功能的圖形化介面顯示,需要具有X window 的支持。例如KDE 就是透過Qt 來設計的X Window,因此你如果在KDE 畫面中,可以使用此一項目。

    • make gconfig
      透過以Gtk 為圖形介面基礎功能的圖形化介面顯示,需要具有X window 的支持。例如GNOME 就是透過Gtk 來設計的X Window,因此你如果在GNOME 畫面中,可以使用此一項目。

    • makeconfig
      最舊式的功能挑選方法,每個項目都以條列式一條一條的列出讓你選擇,如果配置錯誤只能夠再次選擇,很不人性化啊!

    核心功能細項選擇:

  • General setup

  • loadable module + block layer

  • CPU 的類型與功能選擇

  • 電源管理功能

  • 一些匯流排(bus) 的選項

  • 編譯后運行檔的格式

  • 核心的網絡功能

  • 各項裝置的驅動程序

  • 文件系統的支持

  • 核心黑客、資訊安全、口令應用

  • 虛擬化與函式庫







  • 核心的編譯與安裝:

    編譯核心與核心模塊:

    [root@www linux-2.6.30.3]# make clean <==先清除緩存檔 [root@www linux-2.6.30.3]# make bzImage <==先編譯核心 [root@www linux-2.6.30.3]# make modules <==再編譯模塊

    最后制作出來的數據是被放置在/usr/src/kernels/linux-2.6.30.3/



    實際安裝模塊

    兩個解決方法啦:

    • 先將舊的模塊目錄更名,然后才安裝核心模塊到目標目錄去;

    • make menuconfig 時,那個Generalsetup 內的Local version 修改成新的名稱。



    開始安裝新核心與多重核心菜單(grub)

    核心文件放置在/usr/src/kernels/linux-2.6.30.3/arch/x86/boot/bzImage,但是其實系統核心理論上都是擺在/boot 底下,且為vmlinuz 開頭的檔名

  • 移動核心到/boot 且保留舊核心文件

  • 創建相對應的Initial Ram Disk (initrd)

  • 編輯啟動菜單(grub)

  • 重新以新核心啟動、測試、修改







  • 額外(單一)核心模塊編譯

    編譯前注意事項:kernel-devel

    單一模塊編譯:

  • 硬件開發商提供的額外模塊

  • 利用舊有的核心原始碼進行編譯,先到目前的核心原始碼所在目錄下達make menuconfig ,然后將 NTFS 的選項配置成為模塊,之后直接下達:

  • make fs/ntfs/

    那么ntfs 的模塊(ntfs.ko) 就會自動的被編譯出來了!然后將該模塊復制到/lib/modules/2.6.30.3vbird/kernel/fs/ntsf/ 目錄下,再運行 depmod -a







    總結

    以上是生活随笔為你收集整理的Note For Linux By Jes(20)-Linux 核心编译与管理的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。