国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

編譯Linux 2.6.34內(nèi)核

這篇具有很好參考價值的文章主要介紹了編譯Linux 2.6.34內(nèi)核。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

《Linux內(nèi)核設計與實現(xiàn)(第三版)》中所用的內(nèi)核版本為2.6.34,這個版本太舊了,在高版本系統(tǒng)中編譯各種不支持,所以選了Ubuntu 14.04進行編譯。

編譯準備

編譯環(huán)境:Ubuntu 14.04

GCC版本:4.8.4

編譯的內(nèi)核版本:Linux 2.6.34

內(nèi)核源碼下載:https://mirrors.edge.kernel.org/pub/linux/kernel/

編譯過程

解壓源碼linux-2.6.34.tar.gz,進入源碼目錄執(zhí)行以下命令:

# make mrproper

# make clean

# make config

# make > /dev/null

編譯成功后,源碼目錄所用空間從443M增至4.9G。

上述命令包含三個階段:

1)清理

make mrproper,該命令用于清除Linux內(nèi)核源代碼樹中生成的文件,通常在編譯內(nèi)核時使用,以確保舊的編譯產(chǎn)物被完全清除,以開始一個全新的編譯過程,該命令會刪除所有的編譯生成文件、內(nèi)核配置文件(.config文件)和各種備份文件,所以幾乎只在第一次執(zhí)行內(nèi)核編譯前才用這條命令。
make clean,該命令則是用于刪除大多數(shù)的編譯生成文件,但是會保留內(nèi)核的配置文件.config,還有足夠的編譯支持來建立擴展模塊。所以若只想刪除前一次編譯過程的殘留數(shù)據(jù),只需執(zhí)行make clean命令。
make mrproper刪除的范圍比make clean大,實際上make mrproper在具體執(zhí)行時第一步就是調(diào)用make clean。

2)配置

make config,該命令會逐一遍歷所有配置項,要求用戶選擇yes、no或module,這是一種基于文本的傳統(tǒng)配置方式,它會為內(nèi)核支持的每一個特性向用戶提問,如果用戶輸入“y”,則把該特性編譯進內(nèi)核,如果輸入“m”,則把該特性變成以模塊,如果輸入為“n”,則表示不編譯該特性,用戶的配置選擇結果會存入.config文件。

make config比較繁瑣耗時,可以使用make menuconfig或GTK+圖形界面下的make gconfig來進行配置選擇。

還有兩條與配置相關的命令:

make defconfig,生成默認配置。

make oldconfig,檢查已有的.config文件和Kconfig文件的規(guī)則是否一致,如果一致就什么都不做,否則提示用戶哪些源代碼中有的選項在.config文件沒有,讓用戶進行選擇。Kconfig文件是源碼中提供用來配置內(nèi)核的文件,是各種配置界面(包括make config這樣的文本方式)所需要的源文件,內(nèi)核配置工具讀取各個Kconfig文件,生成配置界面供開發(fā)人員配置內(nèi)核,最后生成配置文件.config。當把一個老版本內(nèi)核源碼中已經(jīng)配置好的.config文件拷貝到一個新版本源碼文件夾中繼續(xù)使用時,應該執(zhí)行make oldconfig命令,因為新版本內(nèi)核往往會增加配置項。

3)生成

make,生成內(nèi)核映像和內(nèi)核模塊。

補充:

make bzImage,只生成內(nèi)核映像。

make modules,只生成內(nèi)核模塊。

make -jn,開啟n個并發(fā)編譯作業(yè),在多核環(huán)境中可以極大加快編譯速度。

編譯報錯

1)報錯提示:

gcc: error: elf_x86_64: No such file or directory
gcc: error: unrecognized command line option ‘-m’

解決方法:

這是由于gcc 4.6及以上不再支持linker-style架構,需要將arch/x86/vdso/Makefile中,以VDSO_LDFLAGS_vdso.lds開頭所在行的“-m elf_x86_64”替換成“-m64”(注意不是-m 64),將VDSO_LDFLAGS_vdso32.lds開頭所在行的“-m elf_i386”替換成“-m32”。

2)報錯提示:

drivers/net/igbvf/igbvf.h:129:15: error: duplicate member ‘page’

解決方法:

這是因為高版本GCC對舊定義方式不支持所致,把相關結構體struct igbvf_buffer中最后一個struct page *page注釋掉或刪掉。

內(nèi)核安裝

# sudo make modules_install

# sudo make install

make modules_install是安裝內(nèi)核模塊,安裝目錄為/lib/modules,這里會生成一個以內(nèi)核版本號2.6.34命名的子目錄,存放各個以.ko為后綴的模塊文件。

make install是安裝內(nèi)核映像,安裝目錄為/boot,本次安裝中這里被放入四個文件:vmlinuz-2.6.34,initrd.img-2.6.34,System.map-2.6.34,config-2.6.34

vmlinuz:內(nèi)核映像文件。

initrd.img:initrd是initial ramdisk的簡寫,意為初始RAM磁盤,是在系統(tǒng)引導過程中掛載的一個臨時根文件系統(tǒng),initrd綁定到內(nèi)核,并作為內(nèi)核引導過程的一部分加載,用來支持兩階段的引導過程。initrd文件中包含了各種可執(zhí)行程序和驅動程序,它們可以用來掛載真正的根文件系統(tǒng),然后再將這個臨時根文件系統(tǒng)卸載,繼而釋放內(nèi)存。但在很多嵌入式系統(tǒng)中initrd就是最終的根文件系統(tǒng)。

System.map:這是一份用于調(diào)試內(nèi)核的符號對照表,可以將內(nèi)核符號和它們的起始地址對應起來,將內(nèi)存地址翻譯成容易理解的函數(shù)名及變量名。

config:從其內(nèi)容來看,該文件記錄了make config中對內(nèi)核各個配置項的選擇。

可以執(zhí)行make modules_install install將內(nèi)核模塊和內(nèi)核映像一并安裝。

在執(zhí)行make install時,如果/boot目錄下已經(jīng)存在相同版本的內(nèi)核,已存在內(nèi)核會被重命名為vmlinuz-x.x.xx.old。

有些教程中需要手動運行mkinitramfs命令以在/boot下創(chuàng)建initrd文件,但本次測試中運行make install后自動創(chuàng)建了initrd文件。

更新引導

執(zhí)行命令:

# sudo update-grub

選擇內(nèi)核

方式一:

在系統(tǒng)啟動時,按shift鍵進入GRUB菜單,選擇"Advanced Options for Ubuntu",在新菜單頁中選擇指定版本的內(nèi)核啟動,如"Ubuntu, with Linux 2.6.34"。

方式二:

編輯文件/etc/default/grub,添加配置
GRUB_TIMEOUT_STYLE=menu
再執(zhí)行update-grub命令更新GRUB配置,系統(tǒng)重啟后會自動進入GRUB菜單,再選擇指定版本的內(nèi)核啟動。
方式三
直接指定開機啟動項,編輯文件/etc/default/grub,將配置GRUB_DEFAULT=0修改如下:
GRUB_DEFAULT="1>4"
其中,1表示在第一個菜單頁中選擇第2項,也即"Advanced Options for Ubuntu",4表示在第二個菜單頁中選擇第5項,也即"Ubuntu, with Linux 2.6.34"
再執(zhí)行updage-grub命令更新GRUB配置,系統(tǒng)重啟后會自動按照"1>4"依次選擇相應的菜單項。

驗證成功

選擇2.6.34版本內(nèi)核重啟系統(tǒng)后,執(zhí)行命令:

# uname -r

可以查看系統(tǒng)當前所用內(nèi)核的版本。

?
?
?

?文章來源地址http://www.zghlxwxcb.cn/news/detail-695061.html

?

?

?

?

到了這里,關于編譯Linux 2.6.34內(nèi)核的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如若轉載,請注明出處: 如若內(nèi)容造成侵權/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • 編譯tiny4412 Linux 內(nèi)核

    工作環(huán)境 Ubuntu 22 交叉編譯器 4.5.1 解壓Linux內(nèi)核源碼,進入目錄 將官方配置完好的defconfig文件作為配置文件 由于內(nèi)核版本較低,需要下載低版本的gcc,選擇下載gcc-9與g+±9 將gcc g++版本都切換為9 切換后可以通過 gcc -v 查看是否切換成功 進入Linux目錄,執(zhí)行make編譯 出現(xiàn)錯誤 C

    2024年02月11日
    瀏覽(48)
  • Linux內(nèi)核的編譯、安裝、調(diào)試

    Linux內(nèi)核的編譯、安裝、調(diào)試

    Linux內(nèi)核下載The Linux Kernel Archives 打開 .config 更改 CONFIG_SYSTEM_TRUSTED_KEYS 和 CONFIG_SYSTEM_REVOCATION_KEYS 更改 CONFIG_DEBUG_INFO_BTF 注釋掉CONFIG_X86_X32 首先安裝模塊 這里加上 INSTALL_MOD_STRIP=1 是為了避免內(nèi)核啟動時卡在 loading initial ramdisk 安裝內(nèi)核 更改引導 更改 grub 修改文件 更新 重啟 在

    2024年02月11日
    瀏覽(46)
  • ARM & Linux 基礎學習 / 配置交叉編譯工具鏈 / 編譯 Linux 應用和驅動 / 編譯內(nèi)核

    編輯整理 by Staok。 本文部分內(nèi)容摘自 “100ask imx6ull” 開發(fā)板的配套資料(如 百問網(wǎng)的《嵌入式Linux應用開發(fā)完全手冊》,在 百問網(wǎng) imx6ull pro 開發(fā)板 頁面 中的《2.1 100ASK_IMX6ULL_PRO:開發(fā)板資料》或《2.2 全系列Linux教程:在線視頻與配套資料》里面可以下載到),還有參考 菜

    2024年02月04日
    瀏覽(23)
  • ARM Linux 內(nèi)核的配置和編譯原理

    ARM Linux 內(nèi)核的配置和編譯原理

    1、源碼從哪里來 (1) 之前講過,我們使用 2.6.35.7 版本的內(nèi)核。 這個版本的內(nèi)核有三種: 第一種,是 kernel.org 上的官方版本; 第二種,是三星移植過的; 第三種,是九鼎 X210 的移植版本。 我們講課時使用第三種內(nèi)核來講解,后面的移植實驗使用第二種內(nèi)核來移植。 (2) 源碼

    2024年02月09日
    瀏覽(27)
  • 【Linux驅動】內(nèi)核模塊編譯 —— make modules 的使用(單模塊編譯、多模塊編譯)

    編譯驅動一般采用的是將驅動編譯成模塊(.ko 文件),然后加載到內(nèi)核,這其中就用到了 make modules 命令。 目錄 一、單模塊編譯 1、一個 c 文件編譯成一個 ko 文件 2、多個文件編譯成一個 ko 文件 二、多模塊編譯(多文件多模塊) 下面是最簡易的單文件單模塊編譯,假設我們

    2024年02月10日
    瀏覽(90)
  • Linux 編譯內(nèi)核模塊出現(xiàn)--Unknown symbol mcount

    Linux suse: 在編譯SUSE Linux Enterprise Server 12 SP時,使用低版本的docker鏡像編譯內(nèi)核模塊時,加載內(nèi)核模塊時出現(xiàn): 加載內(nèi)核模塊時: (1) 指示系統(tǒng)可能受到 Spectre V2 漏洞的影響,并且正在加載的模塊沒有使用 retpoline 編譯器進行編譯。 Spectre V2(CVE-2017-5715)是 Spectre 漏洞家族

    2024年02月11日
    瀏覽(87)
  • 【樹莓派Linux內(nèi)核開發(fā)】入門實操篇(虛擬機Ubuntu環(huán)境搭建+內(nèi)核源碼獲取與配置+內(nèi)核交叉編譯+內(nèi)核鏡像掛載)

    【樹莓派Linux內(nèi)核開發(fā)】入門實操篇(虛擬機Ubuntu環(huán)境搭建+內(nèi)核源碼獲取與配置+內(nèi)核交叉編譯+內(nèi)核鏡像掛載)

    1.ubuntu18.04鏡像下載 打開ubuntu18.04鏡像傳送門,進入到主頁 往下滑,找到相應鏡像并下載 等待鏡像下載完畢即可 2.VMware軟件安裝 VMware是一款 運行在windows系統(tǒng)上的虛擬機軟件 ,可以虛擬出一臺計算機硬件,方便安裝各類操作系統(tǒng) 進入VMware官網(wǎng)傳送門,來到主頁,往下滑,選

    2024年04月29日
    瀏覽(28)
  • Linux驅動實踐:帶你一步一步編譯內(nèi)核驅動程序

    記得以前我在開始學習驅動開發(fā)的時候,找來很多文章、資料來學習,但是總是覺得缺少了點全局視角。 就好像:我想看清一座山的全貌,但總是被困在一個、又一個山谷中一樣。 主要的困惑有?3?點: 每一篇文章的介紹都是正確的,但是如果把很多文章放在一起看,就會

    2023年04月24日
    瀏覽(22)
  • 【Xilinx】開發(fā)環(huán)境(五)- 基于Petalinux配置,單獨編譯uboot,Linux內(nèi)核

    【Xilinx】開發(fā)環(huán)境(五)- 基于Petalinux配置,單獨編譯uboot,Linux內(nèi)核

    此系列博客,僅對Xilinx平臺PS端(ARM部分)開發(fā)做介紹,不對PL(FPGA)做過多介紹。 目錄 一. 單獨編譯UBoot 2.1.拷貝源碼 2.拷貝配置文件 3.編譯 二. 單獨編譯內(nèi)核源碼 2.1 復制內(nèi)核源碼 2.2 復制配置文件( 根據(jù)芯片,32位復制到arch/arm/configs, 64位到arch/arm64/configs) 2.3 復制.its文件,用

    2024年02月10日
    瀏覽(20)
  • 【嵌入式Linux】編譯應用和ko內(nèi)核模塊Makefile使用記錄

    【嵌入式Linux】編譯應用和ko內(nèi)核模塊Makefile使用記錄

    在Makefile中,變量的賦值可以使用以下幾種方式: = :最基本的賦值符號,表示簡單的延遲展開(lazy expansion)方式。變量的值將會在使用變量的時候進行展開。 := :立即展開(immediate expansion)的賦值方式。變量的值在賦值的時候立即展開,并且在后續(xù)的使用中不再改變。

    2024年02月08日
    瀏覽(24)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包