欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費電子書(shū)等14項超值服

開(kāi)通VIP
編譯Linux內核

下面的實(shí)驗以 debian7.5 64bit 為例.

獲取源碼

獲取 debian7.5 本身的源碼非常簡(jiǎn)單:

sudo apt-get install linux-source

https://www.kernel.org/ 的git上提供的源碼分支非常多, 剛開(kāi)始學(xué)習源碼主要關(guān)注下面幾個(gè)分支:

  1. linus分支: https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/
    linux創(chuàng )始人的分支, 不用說(shuō)肯定最重要, 它是所有分支的根源. 處于 "mainline" 的地位.
    這個(gè)分支還有個(gè)好聽(tīng)的名字 – "vanilla(香草)" 內核.
  2. linux-next樹(shù): https://git.kernel.org/cgit/linux/kernel/git/next/linux-next.git/
    這個(gè)一個(gè)為發(fā)布將來(lái)的版本而積累新代碼并進(jìn)行測試的源碼樹(shù).
    由 Stephen Rothwell 等人進(jìn)行管理和維護
  3. stable樹(shù): https://git.kernel.org/cgit/linux/kernel/git/stable/linux-stable.git/
    這是一個(gè)主要針對過(guò)去發(fā)布的內核版本進(jìn)行bug修改, 使其更加穩定的樹(shù).
    由 Greg Kroah-Hartman, Chris Wright 進(jìn)行管理和維護.
    針對某個(gè)Linus樹(shù)的穩定版維護一般持續6個(gè)月左右, 也有更持久的.

上面的列出的git樹(shù)中都可以獲取想要的源碼.

編譯內核

其實(shí)編譯內核和編譯普通軟件也沒(méi)多大區別, 只是內核編譯的參數非常之多.
下面就來(lái)先看看如何設置內核編譯參數

內核編譯選項

  1. 編譯選項個(gè)數
    內核的編譯選項的個(gè)數非常多, v2.6.38的內核中就有 12 000 個(gè)左右的設置選項(這是包含所有arch的配置選項).
    內核編譯選項不僅多, 有些編譯選項之間還存在依賴(lài)關(guān)系, 所以手動(dòng)設置編譯選項幾乎是不可能的.
    值得慶幸的是, 只要知道自己需要設置的那些選項, 就可以使用 make ***config 來(lái)進(jìn)行設置, 它還會(huì )自動(dòng)處理依賴(lài)關(guān)系.
  2. 配置編譯選項:
    設置內核編譯選項是通過(guò) kconfig 這個(gè)工具來(lái)完成的.
    kconfig 的源碼就是內核代碼中 script/kconfig 目錄下

    各個(gè)編譯選項的選擇有3種方式:

    1. =y :: 直接編譯到內核中
    2. =m :: 以模塊方式編譯到內核中
    3. 不設置 :: 不編譯

    編譯方法:

    1. make menuconfig :: 源碼根目錄下生成 .config (沒(méi)有會(huì )自動(dòng)生成), .config中就是各個(gè)內核編譯選項的選擇狀況.
    2. make defconfig :: 根據當前系統的架構默認 .config 生成內核源碼目錄下的 .config (每個(gè)架構的配置文件: ex. arch/x86/configs/x86_64_defconfig)
    3. make oldconfig :: 將已有的 .config 放到源碼根目錄下后執行, 目的是為了復用之前的內核編譯選項的配置.
    4. make xconfig :: 圖形化配置, 需要qt3, 個(gè)人覺(jué)得沒(méi)有必要, 有 make menuconfig 就足夠了.
    5. make localmodconfig :: 生成以正在使用的內核模塊為對象的 .config

編譯

編譯很簡(jiǎn)單, 內核編譯選項設置好之后, 只需簡(jiǎn)單的命令 make, 就可以編譯了.
由于內核代碼的龐大, 所以和一般應用程序相比, 編譯時(shí)間會(huì )很長(cháng). 可以嘗試以下方法來(lái)加快編譯速度:

  1. 不用的驅動(dòng)程序都不要設置, 這樣就不會(huì )編譯
  2. 利用make的 -j 選項來(lái)并發(fā)編譯, ex. make -j N (N是并發(fā)數). 如果你的機器有2個(gè)CPU, 可以用 make -j 2 來(lái)提高編譯速度
  3. 使用 make localmodconfig 來(lái)生成僅以正在使用的內核模塊為對象的 .config (一般這樣生成的.config中包含的內核模塊最少, 所以編譯速度快)

  4. 編譯時(shí)間比較: 測試環(huán)境 - debian v7.5虛擬機(cpu: 單核, 內存: 512MB)

.config生成make時(shí)間生成的modules備注
make menuconfig1小時(shí)13分41秒3052個(gè).ko, 共1.2GB默認配置, 什么也不選擇
make localmodconfig19分36秒337 個(gè).ko, 共176MB 

modules 是通過(guò) make modules_install 之后, 在 /lib/modules 中根據編譯內核版本號來(lái)查看的
查看有多少個(gè) .ko 文件的方法:

cd /lib/modules/3.2.60find . -name '*.ko' | wc -l

分開(kāi)編譯

模塊和內核不在一起的編譯, 就是在現有的內核中追加一些內核模塊時(shí), 不需要將內核也重新編譯.
模塊分開(kāi)編譯的方法很簡(jiǎn)單, 參考之前的博客: 《Linux內核設計與實(shí)現》讀書(shū)筆記(六)- 內核數據結構 這篇博客中的例子就是和內核分開(kāi)編譯的模塊.

交叉編譯

交叉編譯就是在當前平臺上編譯其他平臺上的內核二進(jìn)制映像, 比如在 x86_64 平臺上編譯 arm 的內核映像.
交叉編譯需要目標平臺的交叉編譯器. 編譯時(shí)主要是 ARCH 和 CROSS_COMPILE 2個(gè)變量的設置.

下面舉個(gè)交叉編譯 ARM 的例子: 公司用的制作 Cubieboard 板子上的image中的一段編譯內核的代碼

make -C ${CB_KSRC_DIR} O=${CB_KBUILD_DIR} ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- kernel_defconfigmake -C ${CB_KSRC_DIR} O=${CB_KBUILD_DIR} ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- -j4 INSTALL_MOD_PATH=${CB_TARGET_DIR} uImage modules

上述 第一行 是編譯內核源碼. 第二行 是創(chuàng )建 uImage 格式的內核映像以及創(chuàng )建內核模塊
最終在 INSTALL_MOD_PATH 生成的內核模塊可以直接拷貝到 arm機器上使用.

生成內核包

debian 系 linux下生成 內核源碼包的方法

make deb-pkg

安裝內核

make modules_install (安裝內核模塊到 /lib/modules 下)
make install (安裝內核二進(jìn)制映像, 生成并安裝boot初始化文件系統映像文件)

卸載內核

  1. 刪除/lib/modules/目錄下不需要的內核庫文件
  2. 刪除/usr/src/kernel/目錄下不需要的內核源碼
  3. 刪除/boot目錄下啟動(dòng)的核心檔案禾內核映像
  4. 更改grub的配置,刪除不需要的內核啟動(dòng)列表

內核 Makefile 中一些有用的 target

  1. make help : 內核Makefile中的各種 target
  2. make cscope : 生成 cscope 文件
  3. make tags/TAGS : tags可用于vim, TAGS可用于emacs
本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請點(diǎn)擊舉報。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
linux內核編譯命令解析
Ubuntu 12.10內核編譯,升級
[轉]編譯linux內核并安裝
Linux內核中Makefile、Kconfig和.config的關(guān)系
編譯Linux 內核
menuconfig過(guò)程詳解
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導長(cháng)圖 關(guān)注 下載文章
綁定賬號成功
后續可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服

欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久