內核編譯流程和自動化安裝

內核編譯

        在特定的情況我們機器上面有些硬件特性需要利用起來,但是我們現成的這個內核沒有開啟這個功能,那就需要重新編譯,把這個功能模塊加進來,或者打到vmlinux中的核心文件里面。比如ntfs功能,默認系統沒有啟用此功能,但是系統是帶這個功能的,編譯的時候時候可以打開該功能,有些功能打開了,但是用不上,我們也可以在編譯的時候關閉,實現完全定制的內核功能。

        針對硬件驅動的配置有模板,由于驅動數目太多(wc -l /boot/config*****,查看有4000+),且有些功能我們不了解,因此我們可以通過配置模板文件來對模塊進行修改。

模板文件:/boot/config-2.6.32-642.el6.x86_64   通過該文件我們可以看到哪些功能模塊打開,哪些沒打開

                        # CONFIG_CRC32_SELFTEST is not set    表示沒開啟此模塊功能       

                           CONFIG_LIBCRC32C=m  表示打到/lib/modules里面

                           CONFIG_ZLIB_INFLATE=y   表示打到核心里面

    內核編譯:

            (1) 配置內核選項
                 支持“更新”模式進行配置: make help
                            (a) make config:基于命令行以遍歷的方式去配置內核中可配置的每個選項
                            (b) make menuconfig:基于curses的文本窗口界面
                            (c) make gconfig:基于GTK (GNOME)環境窗口界面
                            (d) make xconfig:基于QT(KDE)環境的窗口界面

                支持“全新配置”模式進行配置
                            (a) make defconfig:基于內核為目標平臺提供的“默認”配置進行配置
                            (b) make allyesconfig: 所有選項均回答為“yes“
                            (c) make allnoconfig: 所有選項均回答為"no 
            (2) 編譯
                    全編譯:make [-j #]
                    編譯內核的一部分功能:
                            (a) 只編譯某子目錄中的相關代碼:
                                        # cd /usr/src/linux
                                        # make dir/
                            (b) 只編譯一個特定的模塊:
                                        # cd /usr/src/linux
                                        # make dir/file.ko
                        例如:只為e1000編譯驅動:
                                #make drivers/net/ethernet/intel/e1000/e1000.ko (.ko文件目錄中不存在需要自己寫),編譯完后將文件拷貝到對應的目錄

            需要事先清理操作:
                        # make clean:清理大多數編譯生成的文件,但會保留config文件等
                        # make mrproper: 清理所有編譯生成的文件、 config及某些備份文件
                        # make distclean: mrproper、 patches以及編輯器備份文件

    編譯應用舉例:

            1、下載內核文件、準備模板,安裝“開發工具“包組

            2、tar xvf liux-3.18.tar.xz -C /usr/src

             ln -s linux-3.18.41/ linux

            3、cp /boot/config-2.6.32-642.el6.x86_64 /usr/src/linux/.config

                            注意模板必須命名為“.config”,因為編譯的是要讀該文件,否則無法識別。

            4、cd /usr/src/linux  

                 make menuconfig 通過圖形界面配置驅動模塊(該命令依賴ncures包,首次執行需要yum安裝 )            

                            [*]表示打到vmlinux的核心文件里面去了

                            [M]表示打到的/lib/modules中的.ko文件(驅動模塊)

                            []表示不啟用該功能

            5、全編譯make -j #(cpu的數量,lscpu可以查看)

            6、cd linux 

                         make modules_install 安裝模塊,將模塊拷貝到/lib/modules

            7、make install 生成核心文件vmlinuz initramfs 及grub.conf

            8、reboot

系統自動化安裝

同時部署多臺linux機器,需要依賴自動化安裝
        MBR: /光盤/isolinux/boot.cat  二進制文件
        stage2: isolinux/isolinux.bin
                    配置文件: isolinux/isolinux.cfg

            label linux           ### 此處如果加rescue 就變成了 rescue模式
              menu label ^Install or upgrade an existing system
              menu default
              kernel vmlinuz   ### 加載內核
              append initrd=initrd.img  ###向內核傳遞參數         
            label vesa
              menu label Install system with ^basic video driver
              kernel vmlinuz
              append initrd=initrd.img nomodeset        ###nomodeset 內核參數
            label rescue
              menu label ^Rescue installed system
              kernel vmlinuz
              append initrd=initrd.img rescue        ###rescue 內核參數
            label local
              menu label Boot from ^local drive
              localboot 0xffff
            label memtest86
              menu label ^Memory test
              kernel memtest
              append -

                    每個對應的菜單選項:
                                加載內核: isolinuz/vmlinuz
                                向內核傳遞參數: append initrd=initrd.img …
        裝載根文件系統,并啟動anaconda
                    默認啟動GUI接口
                    若是顯式指定使用TUI接口: 向內核傳遞text參數即可
                    (1)按tab鍵,在后面增加text,啟用字符界面安裝
                    (2)按ESC鍵: boot: linux text  啟動字符界面安裝
                                          boot:linux   等同于 選擇  Install or upgrade an existing system
                                          boot:rescue    等同于選擇    Rescue installed system

1.png

        Anaconda安裝系統分成三個階段:
                安裝前配置階段
                            安裝過程使用的語言
                            鍵盤類型
                            安裝目標存儲設備
                                        Basic Storage:本地磁盤
                                        特殊設備: iSCSI
                            設定主機名
                            配置網絡接口
                            時區
                            管理員密碼
                            設定分區方式及MBR的安裝位置
                            創建一個普通用戶
                            選定要安裝的程序包
                 安裝階段
                            在目標磁盤創建分區,執行格式化操作等
                            將選定的程序包安裝至目標位置
                            安裝bootloader和initramfs
                 首次啟動
                            iptables
                            selinux
                            core dump

         指明kickstart文件的位置: ks=
                DVD drive: ks=cdrom:/PATH/TO/KICKSTART_FILE
                Hard drive: ks=hd:device:/directory/KICKSTART_FILE
                HTTP server: ks=http://host:port/path/to/KICKSTART_FILE
                FTP server: ks=ftp://host:port/path/to/KICKSTART_FILE
                HTTPS server: ks=https://host:port/path/to/KICKSTART_FILE
                NFS server:ks=nfs:host:/path/to/KICKSTART_FILE

        kickstart文件的格式:
                命令段:指明各種安裝前配置,如鍵盤類型等;
                程序包段:指明要安裝的程序包組或程序包,不安裝的程序包等;
                        %packages
                        @group_name
                        package        ###指明要包組中要安裝的包
                        -package        ###指明包組中不安裝的包

                        %end

        腳本段:
                    %pre: 安裝前腳本
                                運行環境:運行于安裝介質上的微型Linux環境
                    %post: 安裝后腳本
                                運行環境:安裝完成的系統

       創建建kickstart文件的方式:
                (1) 直接手動編輯;
                            依據某模板修改
                (2) 可使用創建工具: system-config-kickstart
                            依據某模板修改并生成新配置;
        檢查ks文件的語法錯誤: ksvalidator
                    # ksvalidator /PATH/TO/KICKSTART_FILE

手動指定安裝源的安裝方法:

                1、進入光盤啟動界面,按ESC 進入"boot"界面輸入:linux methmod,進入手動引導安裝界面 ,選擇安裝方法。

1.png

                2、選擇動態獲取IP還是靜態配置IP

2.png

                3、選擇URL的安裝路徑

4.png

                4、進入交互式安裝

5.png

            注意:也可以采取在boot命令行處輸入多個選項:boot:linux askmethod ip=1.1.1.1 vnc vnc passwd="passwd"  ks=hd:sda:/root/ks.cfg

自動化安裝方法:

                1、cp -r /光盤/isolinux/  /testdir/myks/  將光盤中的isolinux目錄拷貝到myks目錄下

                2、編輯vim /testdir/isolinux/isolinux.cfg 配置光盤啟動的界面的選項,并指明ks模板文件的路徑ks=ftp://192.168.1.103/pub/ks.cfg

abel kickstart
  menu label ^kickstart Install a system
  menu default
  kernel vmlinuz
  append initrd=initrd.img ks=   ###指明ks路徑 
label linux
  menu label ^Install or upgrade an existing system
  kernel vmlinuz
  append initrd=initrd.img 
label vesa
label vesa
  menu label Install system with ^basic video driver
  kernel vmlinuz
  append initrd=initrd.img nomodeset
label rescue
  menu label ^Rescue installed system
  kernel vmlinuz
  append initrd=initrd.img rescue
label local
  menu label Boot from ^local drive
  localboot 0xffff
label memtest86
  menu label ^Memory test
  kernel memtest
  append -

         3、 cd /testdir

                mkisofs -R -J -T -v –no-emul-boot –boot-load-size 4 –boot-info-table -V "CentOS 6.8panlinux" -b isolinux/isolinux.bin -c isolinux/boot.cat -o /root/boot.iso myks/

                創建光盤引導文件,保存到/root/boot.iso,注意該操作必須在myks的父目錄下面進行。

         4、生成模板:system-config-kickstart ,并保存到/var/ftp/pub/目錄下,注意如果模板在生成后如發現有需要變更的,直接更改生成的文件即可,不用重新用命令生成模板文件。

                      1474030568878553.png1474030627188981.png

1474032125853700.png                      1474032162445028.png

1474032196558951.png                      1474070183974227.png

1474070221380517.png                      1474070243500848.png

1474070274304094.png                      1474070294963505.png

         5、光盤啟動即可

    

原創文章,作者:Naruto,如若轉載,請注明出處:http://www.www58058.com/46227

(0)
NarutoNaruto
上一篇 2016-09-18 12:25
下一篇 2016-09-18 13:28

相關推薦

  • Linux 文 本 處 理 工 具

    Linux 文 本 處 理 工 具 一.學習大綱: ◎各種文本工具來查看、分析、統計文本文件 文件內容查看工具:cat, tac,rev,more,less 文件截取:head和tail 按列抽?。篶ut,paste 分析文本的工具:wc , sort , uniq,diff和patch 命令使用練習題 ◎文本過濾與處理工具: grep與正則表達式…

    Linux干貨 2016-08-05
  • My Blog Testing!

    My Blog Testing!

    Linux干貨 2016-08-08
  • 初識LINUX

    初識LINUX 一、計算機的組成 二、Linux的發行版本 發行版:數百種之多,主要分為: Debian分支:ubuntu、mint、knopix Slackware分支:S.u.S.E–>SLES、OpenSUSE RedHat分支: Redhat–>Centos   Fedora Core Gent…

    Linux干貨 2016-09-17
  • 銘記今天

        2016年10月19日,我做了一個很艱難的決定,選擇了馬哥24期網絡全程班,就算是沖動也好,無論對錯都要堅持下去。 從出來工作之后,一直做銷售這塊,雖然跟電腦有關,但是其中的艱苦只有自己明白。慢慢的年級上來了,手中沒有什么技術,做人生活,總覺得少了什么,總覺得自己以后會被社會淘汰,心一天一天著急。在后選擇了一個從來都沒有涉及的運維…

    Linux干貨 2016-10-19
  • AWK(一)

    本章內容:awk介紹;awk基本用法;awk變量;awk格式化;awk操作符;awk條件判斷;awk循環;awk數組;awk函數;調用系統命令

    2018-01-01
  • 文件查看及查找命令

    cat  查看一個文件   -E: 顯示行結束符$   -n: 對顯示出的每一行進行編號   -A:顯示所有控制符   -b:非空行編號   -s:壓縮連續的空行成一行   -T:顯示制表符 常用:cat -An /et…

    Linux干貨 2017-04-08

評論列表(1條)

  • 馬哥教育
    馬哥教育 2016-09-23 11:11

    總結的很詳細,也很實用,如果能有一個完整的示例來展示會更有說服力哦。

欧美性久久久久