<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                企業??AI智能體構建引擎,智能編排和調試,一鍵部署,支持知識庫和私有化部署方案 廣告
                ## 24.3 核心的編譯與安裝 將最復雜的核心功能選擇完畢后,接下來就是進行這些核心、核心模塊的編譯了!而編譯完成后,當然就是需要使用嚕~ 那如何使用新核心呢?就得要考慮 grub 這個玩意兒啦!下面我們就來處理處理: ### 24.3.1 編譯核心與核心模塊 核心與核心模塊需要先編譯起來,而編譯的過程其實非常簡單,你可以先使用“ make help ”去查閱一下所有可用編譯參數, 就會知道有下面這些基本功能: ``` [root@study linux-3.10.89]# make vmlinux &lt;==未經壓縮的核心 [root@study linux-3.10.89]# make modules &lt;==僅核心模塊 [root@study linux-3.10.89]# make bzImage &lt;==經壓縮過的核心(默認) [root@study linux-3.10.89]# make all &lt;==進行上述的三個動作 ``` 我們常見的在 /boot/ 下面的核心文件,都是經過壓縮過的核心文件,因此,上述的動作中比較常用的是 modules 與 bzImage 這兩個,其中 bzImage 第三個字母是英文大寫的 I 喔!bzImage 可以制作出壓縮過后的核心, 也就是一般我們拿來進行系統開機的信息啰!所以,基本上我們會進行的動作是: ``` [root@study linux-3.10.89]# make -j 4 clean &lt;==先清除暫存盤 [root@study linux-3.10.89]# make -j 4 bzImage &lt;==先編譯核心 [root@study linux-3.10.89]# make -j 4 modules &lt;==再編譯模塊 [root@study linux-3.10.89]# make -j 4 clean bzImage modules &lt;==連續動作! ``` 上述的動作會花費非常長的時間,編譯的動作依據你選擇的項目以及你主機硬件的性能而不同。此外,為啥要加上 -j 4 呢? 因為鳥哥的系統上面有四個 CPU 核心,這幾個核心可以同時進行編譯的行為,這樣在編譯時速度會比較快!如果你的 CPU 核心數 (包括超線程) 有多個, 那這個地方請加上你的可用 CPU 數量吧! 最后制作出來的數據是被放置在 /usr/src/kernels/linux-3.10.89/ 這個目錄下,還沒有被放到系統的相關路徑中喔!在上面的編譯過程當中,如果有發生任何錯誤的話, 很可能是由于核心項目的挑選選擇的不好,可能你需要重新以 make menuconfig 再次的檢查一下你的相關設置喔! 如果還是無法成功的話,那么或許將原本的核心數據內的 .config 文件,復制到你的核心原始文件目錄下, 然后據以修改,應該就可以順利的編譯出你的核心了。最后注意到,下達了 make bzImage 后,最終的結果應該會像這樣: ``` Setup is 16752 Bytes (padded to 16896 Bytes). System is 4404 kB CRC 30310acf Kernel: arch/x86/boot/bzImage is ready (#1) [root@study linux-3.10.89]# ll arch/x86/boot/bzImage -rw-r--r--. 1 root root 4526464 Oct 20 09:09 arch/x86/boot/bzImage ``` 可以發現你的核心已經編譯好而且放置在 /usr/src/kernels/linux-3.10.89/arch/x86/boot/bzImage 里面啰~那個就是我們的核心文件!最重要就是他啦!我們等一下就會安裝到這個文件哩! 然后就是編譯模塊的部分啰~ make modules 進行完畢后,就等著安裝啦! ^_^ ### 24.3.2 實際安裝模塊 安裝模塊前有個地方得要特別強調喔!我們知道模塊是放置到 /lib/modules/$(uname -r) 目錄下的,那如果同一個版本的模塊被反復編譯后來安裝時,會不會產生沖突呢?舉例來說,鳥哥這個 3.10.89 的版本第一次編譯完成且安裝妥當后,發現有個小細節想要重新處理,因此又重新編譯過一次,那兩個版本一模一樣時, 模塊放置的目錄會一樣,此時就會產生沖突了!如何是好?有兩個解決方法啦: * 先將舊的模塊目錄更名,然后才安裝核心模塊到目標目錄去; * 在 make menuconfig 時,那個 [General setup](../Text/index.html#general) 內的 Local version 修改成新的名稱。 鳥哥建議使用第二個方式,因為如此一來,你的模塊放置的目錄名稱就不會相同,這樣也就能略過上述的目錄同名問題啰! 好,那么如何安裝模塊到正確的目標目錄呢?很簡單,同樣使用 make 的功能即可: ``` [root@study linux-3.10.89]# make modules_install [root@study linux-3.10.89]# ll /lib/modules/ drwxr-xr-x. 7 root root 4096 Sep 9 01:14 3.10.0-229.11.1.el7.x86_64 drwxr-xr-x. 7 root root 4096 May 4 17:56 3.10.0-229.el7.x86_64 drwxr-xr-x. 3 root root 4096 Oct 20 14:29 3.10.89vbird # 這就是剛剛裝好的核心模塊! ``` 看到否,最終會在 /lib/modules 下面創建起你這個核心的相關模塊喔!不錯吧!模塊這樣就已經處理妥當啰~ 接下來,就是準備要進行核心的安裝了!哈哈!又跟 grub2 有關啰~ ### 24.3.3 開始安裝新核心與多重核心菜單 (grub) 現在我們知道核心文件放置在 /usr/src/kernels/linux-3.10.89/arch/x86/boot/bzImage ,但是其實系統核心理論上都是擺在 /boot 下面,且為 vmlinuz 開頭的文件名。 此外,我們也曉得一部主機是可以做成多重開機系統的!這樣說,應該知道鳥哥想要干嘛了吧? 對啦!我們將同時保留舊版的核心,并且新增新版的核心在我們的主機上面。 此外,與 grub1 不一樣, grub2 建議我們不要直接修改配置文件,而是通過讓系統自動偵測來處理 grub.cfg 這個配置文件的內容。 所以,在處理核心文件時,可能就得要知道核心文件的命名規則比較好耶! * 移動核心到 /boot 且保留舊核心文件 保留舊核心有什么好處呢?最大的好處是可以確保系統能夠順利開機啦!因為核心雖然被編譯成功了, 但是并不保證我們剛剛挑選的核心項目完全適合于目前這部主機系統, 可能有某些地方我們忘記選擇了,這將導致新核心無法順利驅動整個主機系統,更差的情況是, 你的主機無法成功開機成功!此時,如果我們保留舊的核心,呵呵!若新核心測試不通過,就用舊核心來啟動啊!嘿嘿! 保證比較不會有問題嘛!另外,核心文件通常以 vmlinuz 為開頭,接上核心版本為依據的文件名格式,因此可以這樣做看看: ``` [root@study linux-3.10.89]# cp arch/x86/boot/bzImage /boot/vmlinuz-3.10.89vbird &lt;==實際核心 [root@study linux-3.10.89]# cp .config /boot/config-3.10.89vbird &lt;==建議配置文件也復制備份 [root@study linux-3.10.89]# chmod a+x /boot/vmlinuz-3.10.89vbird [root@study linux-3.10.89]# cp System.map /boot/System.map-3.10.89vbird [root@study linux-3.10.89]# gzip -c Module.symvers &gt; /boot/symvers-3.10.89vbird.gz [root@study linux-3.10.89]# restorecon -Rv /boot ``` * 創建相對應的 Initial Ram Disk (initrd) 還記得[第十九章談過的 initramfs](../Text/index.html#grub_initrd) 這個玩意兒吧! 由于鳥哥的系統使用 SATA 磁盤,加上剛剛 SATA 磁盤支持的功能并沒有直接編譯到核心去,所以當然要使用 initramfs 來載入才行! 使用如下的方法來創建 initramfs 吧!記得搭配正確的核心版本喔! ``` [root@study ~]# dracut -v /boot/initramfs-3.10.89vbird.img 3.10.89vbird ``` * 編輯開機菜單 (grub) 前面的文件大致上都擺放妥當之后,同時得要依據你的核心版本來處理文件名喔!接下來就直接使用 grub2-mkconfig 來處理你的 grub2 開機菜單設置即可!讓我們來處理處理先! ``` [root@study ~]# grub2-mkconfig -o /boot/grub2/grub.cfg Generating grub configuration file ... Found linux image: /boot/vmlinuz-3.10.89vbird # 應該要最早出現! Found initrd image: /boot/initramfs-3.10.89vbird.img .....(下面省略)..... ``` 因為默認較新版本的核心會放在最前面成為默認的開機菜單項目,所以你得要確認上述的結果中,第一個被發現的核心為你剛剛編譯好的核心文件才對喔! 否則等一下開機可能就會出現使用舊核心開機的問題。現在讓我們重新開機來測試看看啰! * 重新以新核心開機、測試、修改 如果上述的動作都成功后,接下來就是重新開機并選擇新核心來啟動系統啦!如果系統順利啟動之后,你使用 uname -a 會出現類似下面的數據: ``` [root@study ~]# uname -a Linux study.centos.vbird 3.10.89vbird #1 SMP Tue Oct 20 09:09:11 CST 2015 x86_64 x86_64 x86_64 GNU/Linux ``` 包括核心版本與支持的硬件平臺都是 OK 的!嘿嘿!那你所編譯的核心就是差不多成功的啦! 如果運行一陣子后,你的系統還是穩定的情況下,那就能夠將 default 值使用這個新的核心來作為默認開機啰! 這就是核心編譯!那你也可以自己處理嵌入式系統的核心編譯啰! ^_^
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看