內核編譯安裝

以下講的是內核基礎、內核管理、安裝編譯內核、安裝程序anaconda、kickstart。

1、內核基礎

 對於內核,現在有單內核和微內核設計,現在的內核多采用單內核和高度模塊化設計,對於模塊化設計,可以進行動態裝卸載。

 內核一般由三部分組成:內核核心文件、內核對象、ramdisk。內核核心文件,一般爲bzImage,經過壓縮處理的鏡像文件,通常內核核心文件保存在/boot目錄下,名稱爲vmlinuz-VERSION-release。內核對象,即內核額外的功能模塊,該類文件放置於/lib/modules/VERSION-release。

 ramdisk取決於內核能否直接驅動rootfs所在的存儲設備,一般來講,kernel的核心文件和ramdisk文件必須具有相同的版本號。ramdisk文件是在操作系統安裝完成之後執行的,由特定的應用程序組成。

 ramdisk文件的製作工具有mkinitrd、dracut兩種,具體解釋如下:

    CentOS 5:mkinitrd initrd-KERNEL-VERSION.img kernel-version

    CentOS 6/7:dracut initramfs-KERNEL-VERSION.img kernel-version


2、內核管理

(1)、uname命令 -----------顯示內核信息

  常用選項:

  -n:顯示節點名稱

  -r:顯示版本號

  -a:顯示所有信息

  # uname -n 

    little

  # uname -r

    2.6.32-573.el6.x86_64

  # uname -a

    Linux little 2.6.32-573.el6.x86_64 #1 SMP Thu Jul 23 15:44:03 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux

(2)、lsmod命令 --------顯示已經裝載的內核模塊

  對於已經裝載模塊,所顯示的內容包括三部分,即模塊名稱、模塊大小、被引用次數及被誰所引用。

(3)、modinfo命令 ---------------顯示具體內核信息

  常用選項:

  -F field:顯示指定字段的信息

  -a:顯示模塊作者

  -n:顯示模塊的絕對路徑

  -d:顯示模塊的描述信息

  -l:顯示許可證信息

  -p:顯示模塊的參數信息

(4)、modprobe命令 ------------裝卸載模塊

  modprobe的默認的配置文件 [-C config-file]爲:/etc/modprobe.conf,/etc/modprobe.d/*

  # modprobe module_name ---------裝載模塊,可自動識別和解決依賴關係

  # modprobe -r module_name ---------卸載模塊


3、僞文件系統

 與內核信息相關的僞文件系統主要有兩個,即/proc、/sys兩類。

(1)、/proc

 /proc:爲內核狀態、統計信息的輸出接口。對於/proc的內容,可以使用echo進行重定向覆蓋輸出,進行設置和修改內核的功能和特性,如:echo "VALUE" > /proc/sys/PATH/TO/PARAMETER。

 對於/proc/sys進行查看和配置可用sysctl命令,sysctl命令的具體用法如下:

 sysctl命令 -----------查看和配置內核參數

  查看內核參數:

    sysctl -a:查看所有可以被修改的內核參數

    sysctl variable:查看指定內核參數的設定值

  配置某個內核參數的值:

    sysctl -w variable=value 

    sysctl -p --------重載

(2)、/sys

 sysfs:輸出內核識別出來的各硬件設備的相關屬性信息。

 udev:讀取/sys目錄下的硬件設備信息,按需創建設備文件,運行於用戶空間,內核通過內置的devtmpfs爲每個內核所要使用的設備創建設備文件;


4、安裝編譯內核

(1)、安裝編譯的條件:

  安裝開發環境、獲取目標主機各硬件信息、獲取目標主機功能選項信息。開發環境的開發工具有 gcc、make、automake、qt、GTK、ncurses等。安裝編譯之前需安裝程序包組"Development Tools"和"Server Platform Development",即開發工具,和服務器平臺開發。

  獲取目標主機上各硬件設備的相關信息,有以下命令:lscpu、lspci、lsusb、lsblk、hal-device 。

(2)、編譯安裝應用程序的三個步驟:

  第一步:# ./.configure ARG1 [ARG2...]

  .configure文件記錄了內核的編譯細節,# make menuconfig|xconfig|gconfig|config

  第二步:# make

  對於編譯,可進行多線程編譯,# make [-j #]

  第三步:# make modules_install

          # make install

  在進行安裝之前,要先安裝相應的模塊,然後再安裝內核核心文件,生成grub啓動菜單。

(3)、配置內核的7種方式:

   1)、# make config:單行命令行遍歷內核所有功能,交互式配置

   2)、# make menuconfig:基於 curses 的文本模式配置窗口;

   3)、# make gconfig:基於 GTK 開發環境的窗口配置界面

   4)、# make xconfig:基於 QT 開發環境的窗口配置界面

   5)、# make defconfig:基於內核

   6)、# make allnoconfig:全部不編譯,模版

   7)、# make allyesconfig:所有功能全部編譯進核心

(4)、三種內核編譯方式:全編譯、部分編譯、交叉編譯

(5)、linux系統安裝的注意事項

  CentOS操作系統絕對不能分區的目錄有:bin, sbin, lib, lib64;建議單獨分區的目錄有:boot, home, var, usr等。


5、安裝程序anaconda

 對於系統安裝,在具體的進行安裝之前,需運行一個安裝程序,即安裝程序anaconda。anaconda給我們提供了兩種操作界面,即TUI文件配置窗口、GUI圖形界面/CLI命令行界面。

 裝載rootfs,然後啓動anaconda,如果內存不夠512M,則anaconda是以文本界面啓動的,如果內存大於512M,anaconda默認以圖形界面啓動。對於stage2階段的配置文件:/isolinux/isolinux.cfg,其中有向內核傳遞的附加參數,其中最重要的是ks,即kickstart啓動無人值守安裝,ks指定了kickstart配置文件的位置,可以本機也可以遠程,注意是絕對路徑。

 anaconda在安裝前具有一個準備配置階段,進行各種基礎配置。對於安裝階段,主要有6個步驟,如下:

 anaconda安裝:

  1)、運行某些預安裝腳本,完成初始化

  2)、創建分區,執行格式化安裝文件系統,掛載

  3)、將選定的程序包或程序包組安裝至目標位置

  4)、安裝bootloader至MBR及boot分區中

  5)、製作ramdisk文件

  6)、運行安裝後腳本

 對於 kickstart文件,具體具有三部分,即命令段、腳本段、程序包/程序包組段。

 【命令段】指明各種安裝前的配置,分爲必備命令和可選命令兩類。9個必備命令爲:authconfig、bootloader、keyboard、lang、part、clearpart、volgroup、logvol、rootpw、timezone。可選命令爲:install、upgrade、text、network、firewall、selinux、repo、reboot、halt/poweroff、url、firstboot。

 【腳本段】有安裝前執行的腳本和安裝後執行的腳本兩部分,%pre --- %end:爲安裝前腳本,運行環境是運行於安裝介質上的微型Linux系統環境。%post ----- %end:爲安裝後腳本,運行環境是安裝以後的操作系統。

 【程序包段】指明要安裝的程序包或程序包組以及不安裝程序包,%packages ----- %end。


 創建kickstart文件的兩種方法,全新創建或用ks模板進行改寫,具體如下:

  1)、直接以anaconda-ks.cfg爲模版,複製之後修改即可。

  2)、使用工具來創建:# system-config-kickstart &

    如果命令不存在,則yum install system-config-kickstart安裝。

  3)、檢測ks文件的語法是否存在錯誤:

    # ksvalidator

    如果該命令不存在,安裝pykickstart-1.74.20-1.el6.noarch。


關閉防火牆:

  CentOS 6:# service iptables stop

            # chkconfig iptables off

  CentOS 7:# systemctl stop firewalld.service

            # systemctl disable firewalld.service


臨時清理防火牆規則,並將selinux設置爲permissive模式:  

  # iptables -F ---------防火牆臨時不生效

  # setenforce 0 ----------SELinux臨時不限用戶行爲


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章