一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

Linux內(nèi)核學(xué)習(xí)的環(huán)境搭建和內(nèi)核編譯

Linux愛(ài)好者 ? 來(lái)源:博客園 ? 作者:xiongyuanxiong ? 2021-01-02 18:01 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

一、linux內(nèi)核學(xué)習(xí)之一:環(huán)境搭建--安裝Debian7.3

本系列文章假設(shè)讀者已對(duì)linux有一定的了解,其實(shí)學(xué)習(xí)linux內(nèi)核不需要有很深的關(guān)于linux的知識(shí),只需要了解以下內(nèi)容:linux基礎(chǔ)知識(shí)及基本shell命令;現(xiàn)代操作系統(tǒng)的基本概念;C語(yǔ)言和gcc基本使用。

在開(kāi)始我們的linux內(nèi)核學(xué)習(xí)之前。首先需要搭建我們的工作學(xué)習(xí)環(huán)境,即安裝linux系統(tǒng)。關(guān)于linux系統(tǒng)構(gòu)建本身的學(xué)問(wèn)已經(jīng)復(fù)雜到可以成為一個(gè)獨(dú)立的學(xué)科了,畢竟這不是我們學(xué)習(xí)的內(nèi)容,所以我選擇最簡(jiǎn)單的方法:選擇一個(gè)linux發(fā)行版進(jìn)行安裝。

1、選擇linux發(fā)行版

即使使用最簡(jiǎn)單的構(gòu)建工作環(huán)境的方法,也耗費(fèi)了我許多時(shí)間。

"選擇"之所以這樣困難,正是因?yàn)榭晒┻x擇的太多了!

linux發(fā)行版有成百上千種,每個(gè)發(fā)行版都有不同的特點(diǎn),確實(shí)讓人難于取舍。我先后試裝過(guò)Gentoo,Arch,debian,fedora。發(fā)行版的選擇見(jiàn)仁見(jiàn)智,我不敢說(shuō)哪個(gè)發(fā)行版好,哪個(gè)不好,每個(gè)發(fā)行版都有它的擁躉。這里 建議在選擇時(shí)考慮幾個(gè)問(wèn)題:設(shè)計(jì)哲學(xué),社區(qū)支持和包管理器。

實(shí)際上,選擇哪種發(fā)行版都關(guān)系不大,發(fā)行版之間的差別基本上都是外圍組件,對(duì)linux的內(nèi)核的修改都不會(huì)很多。

況且我們?cè)趯W(xué)習(xí)linux內(nèi)核,或者開(kāi)發(fā)linux驅(qū)動(dòng)時(shí),一般都是以官方內(nèi)核(即Linus維護(hù)的主線內(nèi)核)為基準(zhǔn).所以我們搭建好環(huán)境后幾乎都是要選擇一個(gè)版本的官方內(nèi)核來(lái)重新編繹以備用的。

現(xiàn)階段有時(shí)間可以多試試不同的發(fā)行版,選擇自己最喜歡,用起來(lái)最順手的,一旦選擇好了,就不要再改了,一直堅(jiān)持用它,把它用得滾瓜爛熟.人們會(huì)關(guān)注你在linux環(huán)境中是否得心應(yīng)手,一般不會(huì)關(guān)心你懂得用多少種linux發(fā)行版。

經(jīng)過(guò)反復(fù)的試用,比較,我最終選擇了Debian,吸引我的是它的崇尚自由的設(shè)計(jì)哲學(xué);強(qiáng)大的社區(qū)支持;數(shù)量龐大的軟件包. 相對(duì)而言debian還是比較保守的,我用的當(dāng)前的最新穩(wěn)定版Debian7.3,在2013年12月發(fā)布,它使用的內(nèi)核還是3.2的(現(xiàn)在官方最新的穩(wěn)定版內(nèi)核為3.12.8),不過(guò)它配套的工具如GCC,make等,即使用來(lái)編繹最新版的內(nèi)核也已經(jīng)夠用了。

2 、選擇主機(jī)環(huán)境

網(wǎng)上很多有經(jīng)驗(yàn)的linux專(zhuān)家級(jí)人物都建議直接在自己的工作機(jī)或家庭機(jī)上安裝linux系統(tǒng),所有日常工作,生活都在linux系統(tǒng)里完成。

不過(guò)對(duì)于大多數(shù)人來(lái)說(shuō),這太不現(xiàn)實(shí)了了。作為桌面系統(tǒng),當(dāng)對(duì)于windows而言,linux還是有許多不方便的,即使是最近幾年非常火的ubuntu,號(hào)稱(chēng)可以替換windows的發(fā)行版,在日常使用的軟件方面,還是有不小的差距;

再者,我們?cè)诠ぷ髦谐3_€是需要開(kāi)發(fā)windows程序,而家里更不合適了,家里人基本上都用慣了windows,總不能強(qiáng)迫他們?nèi)ビ貌欢膌inux系統(tǒng)吧。因此,windows+vmware作為主機(jī)環(huán)境對(duì)于許多人來(lái)說(shuō),還是第一選擇。

另外還需要一臺(tái)真實(shí)電腦上安裝linux系統(tǒng),因?yàn)樵趘mware里的客戶系統(tǒng)無(wú)法訪問(wèn)主機(jī)中一些硬件,如pci設(shè)備等,當(dāng)開(kāi)發(fā)這些設(shè)備的驅(qū)動(dòng)時(shí)必須在真實(shí)機(jī)器上調(diào)試。

我使用的主機(jī)環(huán)境有兩個(gè):windows 7+vmware10.0.1環(huán)境中安裝debian以及x86-64位機(jī)器上的windows 7+debian雙系統(tǒng)。

3 安裝準(zhǔn)備

安裝準(zhǔn)備工作的第一步當(dāng)然是下載安裝鏡像了。Debian的下載地址:www.debian.org/CD/http-ftp。

因?yàn)樵诠鞠拗粕暇W(wǎng),另外也不喜歡老是在線安裝軟件,就直接下載了一個(gè)用于amd64平臺(tái)的DVD安裝鏡像.有3G多,常用的軟件都有了,需要時(shí)直接從DVD里安裝就行了,一勞永逸。

3.1 vmware
首先使用vmware創(chuàng)建vmware虛擬機(jī),創(chuàng)建時(shí)候,"Guest operation system"選擇"Debian 7 64位"這一項(xiàng)。

內(nèi)核分配512M即可,硬盤(pán)20G足夠了。vmware虛擬機(jī)可以直接將iso文件作為客戶機(jī)的光盤(pán)使用,因此安裝起來(lái)非常方便。

只需要在虛擬設(shè)置中的DVD光驅(qū)的連接選項(xiàng)設(shè)置為"使用ISO映象文件",并指定DVD安裝ISO鏡像的路徑即可(后面為了簡(jiǎn)潔起見(jiàn),將這一操作稱(chēng)為"ISO鏡像加入虛擬機(jī)"),接下來(lái)開(kāi)機(jī)即可用光盤(pán)引導(dǎo)(如果虛擬機(jī)磁盤(pán)已安裝有系統(tǒng),則需要在虛擬機(jī)的BIOS里設(shè)置光盤(pán)啟動(dòng),這跟普通電腦設(shè)置方法是相同的)。

3.2 x86-64機(jī)器

在真實(shí)的機(jī)器上,使用U盤(pán)安裝更加方便。我們將在已裝windwos7的x86-64機(jī)器上用U盤(pán)安裝,確保你的電腦能用U盤(pán)啟動(dòng),如果不行只能選擇燒寫(xiě)ISO到DVD光盤(pán)中用光盤(pán)安盤(pán)了。其次要確保硬盤(pán)有足夠的空間,如果沒(méi)有的話,可以調(diào)整windows使用的磁盤(pán)空間大小(如果不懂設(shè)置方法,可以自己百度一下),我的硬盤(pán)預(yù)留了20G的空間。

接下來(lái)制作U盤(pán)安裝盤(pán),這里需要用到Universal-USB-Installer工具(我用的是1.9.5.1版本)。步驟如下:

在windows系統(tǒng)下插入U(xiǎn)盤(pán);打開(kāi)Universal-USB-Installer程序;

在step1中選擇"try unlisted linux ISO";

step2中選擇DVD安裝ISO的路徑;step3選擇要安裝的U盤(pán)(推薦勾選"Format");

開(kāi)始寫(xiě)入U(xiǎn)盤(pán),經(jīng)過(guò)幾十分鐘的等待,U盤(pán)安裝完畢,可以使用該U盤(pán)啟動(dòng)了。

(用U盤(pán)啟動(dòng)的方法與主板的類(lèi)型相關(guān),可在網(wǎng)上搜索相關(guān)的內(nèi)容)

4 安裝系統(tǒng)

為了使用方便,兩個(gè)系統(tǒng)將采用相同的安裝配置,另外我只安裝基本的shell環(huán)境和必要的工具軟件。

使用GUI模式雖然美觀,看起來(lái)爽,但是對(duì)我們這些硬件資源貧乏的窮人來(lái)說(shuō),運(yùn)行GUI就是種浪費(fèi);其次,與windows不同,linux的X Window完全運(yùn)行在用戶態(tài),與內(nèi)核關(guān)系不大;再者,在漂亮的桌面環(huán)境上放一個(gè)終端窗口,總覺(jué)得很怪異。

我覺(jué)得內(nèi)核和驅(qū)動(dòng)開(kāi)發(fā)者都應(yīng)該用shell環(huán)境,只在需要進(jìn)行UI相關(guān)的測(cè)試或編寫(xiě)UI程序時(shí)才使用GUI環(huán)境。

言歸正傳,繼續(xù)進(jìn)行我們的系統(tǒng)安裝吧。經(jīng)過(guò)上面的步驟,不管是vmware還是x86-64機(jī)器,debian安裝界面總算是出現(xiàn)了。

選擇"advanced option"-->"expert install"進(jìn)入專(zhuān)家安裝模式(現(xiàn)在專(zhuān)家那么多,咱也來(lái)冒充一回吧??!)。彈出了一列選項(xiàng),其實(shí)里面有很多選項(xiàng)都沒(méi)必要使用的,大部分都可以在系統(tǒng)安裝完成后進(jìn)行設(shè)置。

選項(xiàng)列表的前面是安裝語(yǔ)言和鍵盤(pán)設(shè)置,這些可以跳過(guò),就用默認(rèn)的English就行了,反正在文本模式下也顯示不了中文。首先要執(zhí)行的是" Load installer components from cd",這一步會(huì)加載ISO(或U盤(pán))中的安裝組件,全部選擇默認(rèn)則可。

加載完后,安裝選項(xiàng)又多了不少。下一步可以"setup user and passwords",在配置選擇中,最好選擇“不使用root帳號(hào)”,root帳戶權(quán)限太大,現(xiàn)在的linux界普遍認(rèn)為不用為妙,可以使用sudo工具執(zhí)行特權(quán)操作,創(chuàng)建自己的用戶名和密碼,按提示操作即可。

接著就要配置磁盤(pán)分區(qū)了,首先要"detect disks",讓安裝程序先檢測(cè)磁盤(pán),然后進(jìn)行"partition disks",怕安裝程序弄壞我的磁盤(pán),我喜歡選擇了"Manual"模式。懶得去設(shè)計(jì)分區(qū),將剩余空間全部劃成了一個(gè)"/"分區(qū),分區(qū)的屬性分別是:"ext4"類(lèi)型,"primary","bootable"選項(xiàng)。完成分成,忽略關(guān)于沒(méi)有交換分區(qū)的警告,寫(xiě)入磁盤(pán)就完了。

現(xiàn)在可以開(kāi)始"install the base system"。安裝過(guò)程中有個(gè)提示,問(wèn)你要選擇哪個(gè)內(nèi)核,我選了"linux-image-3.2.0-4-amd64",沒(méi)去研究供選擇的兩個(gè)內(nèi)核有何不同;接下來(lái)又提示initrd的選擇,為了節(jié)省空間,選擇了"targeted:only ....."。

接下來(lái)可以"configure the package manager",因?yàn)槲也幌胱屜到y(tǒng)連網(wǎng),所以就在"use a network mirror"選擇了"no",另外其他的"service"也全部不選,當(dāng)然這些選項(xiàng)都可以在系統(tǒng)安裝好以后進(jìn)行修改。

最后選擇安裝軟件:"select and install software",在軟件列表中,我只選擇了安裝"standard system utilities",其他全部不裝。

到這里,實(shí)質(zhì)上的系統(tǒng)已經(jīng)安裝完了,就差引導(dǎo)部分了。有g(shù)rub和lilo可選,我更喜歡grub,因此選擇:"install the grub boot loader"。debian7.3用的是grub2,功能非常強(qiáng)大。

在安裝過(guò)程中g(shù)rub會(huì)自動(dòng)檢測(cè)當(dāng)前磁盤(pán)中安裝的其他的系統(tǒng),可以放心將grub安裝到MBR中,不必?fù)?dān)心你的windows會(huì)無(wú)法啟動(dòng)。安裝完畢,選擇"finish the install",重啟系統(tǒng)吧!

5 安裝開(kāi)發(fā)工具

現(xiàn)在我們有了一個(gè)基本的debian系統(tǒng),但是還沒(méi)有g(shù)cc等開(kāi)發(fā)工具,無(wú)法進(jìn)行日常工作,需要安裝這些工具。

5.1 設(shè)置安裝源

debian的包管理器非常完善,我們現(xiàn)在安裝軟件就用debian強(qiáng)大的apt-get命令。但是在使用前要先配置安裝源,以告訴apt-get命令去哪里找我們的軟件。

安裝軟件盡量都從下載的ISO安裝,既然下載了那么大的一個(gè)ISO鏡像,就別浪費(fèi)了。debian可以設(shè)置幾種安裝源,如CD安裝源,網(wǎng)絡(luò)安裝源,本地安裝源。

5.1.1 設(shè)置CD安裝源

在vmware中,可以將ISO文件當(dāng)作光盤(pán)使用,實(shí)在是太方便了。因此,在vmware中我們?cè)O(shè)置以CD作為安裝源,實(shí)際上在安裝系統(tǒng)時(shí),系統(tǒng)的包管理器就已經(jīng)把DVD安裝盤(pán)加入安裝源了,可以查看/etc/apt/sources.list文件。

如果沒(méi)有加入,或者想加入別的CD安裝源也非常簡(jiǎn)單,只需執(zhí)行以下操作:

將ISO加入虛擬機(jī)

掛載光盤(pán):sudo mount /dev/cdrom /media/cdrom

將光盤(pán)加入安裝源:sudo apt-cdrom add

打開(kāi)/etc/apt/sources.list查看是否添加成功

更新軟件件表:sudo apt-get update

5.1.2 設(shè)置本地安裝源

在真實(shí)的x86-64機(jī)器上,系統(tǒng)無(wú)法把安裝U盤(pán)識(shí)別為光盤(pán),不能將安裝U盤(pán)作為CD安裝源加入。

不過(guò)我們可以將ISO文件掛載到某個(gè)目錄,再將該目錄作為本地安裝源加入包管理器,步驟如下:

創(chuàng)建本地安裝源目錄:sudo mkdir /mnt/iso_1

掛載ISO文件到該目錄:sudo mount /.../debian-*.iso /mnt/iso_1

添加本地安裝源:打開(kāi)/etc/apt/sources.list,添加一行,內(nèi)容為:deb file:///mnt/iso_1 wheezy main

更新軟件列表:sudo apt-get update

5.2 安裝開(kāi)發(fā)工具

5.2.1 安裝VIM,執(zhí)行命令:sudo apt-get install vim

安裝系統(tǒng)時(shí)安裝的是精簡(jiǎn)版的VIM:vim.tiny,功能不齊全,因此安裝完整的VIM,喜歡其他代碼編輯工具的網(wǎng)絡(luò)可以安裝其他工具。

VIM安裝完后進(jìn)行配置,在/etc/vim/vimrc文件最后加上以下幾行(不包括括號(hào)內(nèi)容):

set nobackup (打開(kāi)時(shí)不創(chuàng)建備份文件)

set ts=4 (設(shè)置tab鍵寬度為4個(gè)字符寬)

set atuoindent (啟用自動(dòng)縮進(jìn)功能)

set cindent (啟用C語(yǔ)言縮進(jìn)功能)

set shiftwidth=4 (縮進(jìn)寬度為4個(gè)字符寬)

syntax on (打開(kāi)語(yǔ)法高亮功能)

5.2.2 安裝開(kāi)發(fā)工具包:sudo apt-get install build-essential

build-essential包含了常用的gcc,g++,make等開(kāi)發(fā)工具.

5.2.3 安裝linux-headers:sudo apt-get install linux-headers-3.2.0-4-amd6

需要編繹系統(tǒng)自帶內(nèi)核相關(guān)的模塊時(shí),必須安裝該內(nèi)核對(duì)應(yīng)的linux-headers,里面包含內(nèi)核配置信息,內(nèi)核頭文件等。

5.2.4 安裝ncurses-dev:sudo apt-get install libncurses5-dev

內(nèi)核配置腳本依賴(lài)于該工具,如果沒(méi)有安裝的話,配置內(nèi)核里會(huì)出錯(cuò)。

5.2.5 安裝git:sudo apt-get install git

著名的流行的分布式版本管理工具,由Linus開(kāi)發(fā),官方內(nèi)核開(kāi)發(fā)用的版本管理工具也是git。Linus的作品,不能不用??!


git需要先配置用戶名和email:

git config --global user.name "xxxxxx"

git config --global user.email "xxxxxx@xxx.com"

6 環(huán)境搭建完成

可以正式開(kāi)始我們的linux內(nèi)核學(xué)習(xí)之旅了。

二、linux內(nèi)核學(xué)習(xí)之二:編譯內(nèi)核

環(huán)境搭好后,馬上就進(jìn)入到下一環(huán)節(jié)--編譯內(nèi)核。linux的內(nèi)核是整個(gè)系統(tǒng)最核心的部分,內(nèi)核的功能基本上決定了系統(tǒng)的能力。

linux的內(nèi)核代碼使用的是GPL授權(quán),允許自由下載,修改并重新發(fā)布內(nèi)核,只要求發(fā)布修改后的內(nèi)核的同時(shí)提供源代碼。

各種各樣的內(nèi)核版本眾多,幾乎所有的linux發(fā)行版都會(huì)對(duì)內(nèi)核進(jìn)行或多或少的修改,debian也不例外。這些內(nèi)核都有個(gè)源頭,即Linus維護(hù)的官方內(nèi)核,其他的內(nèi)核幾乎都是建立在官方內(nèi)核的基礎(chǔ)上的。我們的內(nèi)核學(xué)習(xí),也是以官方內(nèi)核為準(zhǔn)。

linux官方內(nèi)核的網(wǎng)站是:www.kernel.org。從里面可以了解到內(nèi)核開(kāi)發(fā)的最新動(dòng)態(tài),現(xiàn)在就把該網(wǎng)址加入收藏夾吧。

(另外有個(gè)網(wǎng)站:www.lwn.net里面有許多l(xiāng)inux大牛發(fā)表的觀點(diǎn),也值得收藏)。

從linux內(nèi)核3.0開(kāi)始,內(nèi)核版本命名采用的策略跟以前不一樣,命名格式為3.A.B,其中A為內(nèi)核的版本,B為補(bǔ)丁的版本。即3.A.B與3.A.C的內(nèi)核是相同的版本,具有相同的功能,如果C>B,只是說(shuō)明3.A.C相比3.A.B修補(bǔ)了一些BUG而已。

進(jìn)入內(nèi)核3.0時(shí)代后,內(nèi)核的開(kāi)發(fā)工作發(fā)展迅速,版本更新得很快,第一個(gè)3.0版本是在2011年7月,而現(xiàn)在,最新的穩(wěn)定版已是3.12.8,而新的3.13版內(nèi)核開(kāi)發(fā)工作也已接近尾聲,即將發(fā)布穩(wěn)定版了。("zh.wikipedia.org/wiki/linux"內(nèi)核"介紹了部分版本的特性)。

1 選擇內(nèi)核版本

首先我們需要從www.kernel.org選擇一個(gè)版本。實(shí)際上從2.6版本開(kāi)始,內(nèi)核的架構(gòu)沒(méi)有特別大的變動(dòng),基本上是添加新的功能,添加新的驅(qū)動(dòng)的支持,內(nèi)核接口有一些變動(dòng)。

另外,除非不得已,不要再使用2.4及更低版本,因?yàn)?.6內(nèi)核的整個(gè)架構(gòu)經(jīng)過(guò)全面重新設(shè)計(jì),效率更高,功能更完善,也更安全。

我覺(jué)得盡量選擇與發(fā)行版使用的內(nèi)核版本差不多的話會(huì)比較好點(diǎn),內(nèi)核跟其他組件相對(duì)會(huì)配合得好些,不知是不是這樣。debian7.3使用的內(nèi)核是3.2的,而現(xiàn)在該內(nèi)核版本的最新版為3.2.54,使用相同內(nèi)核版本的帶有最新補(bǔ)丁的內(nèi)核重編譯并替換原來(lái)的內(nèi)核,可以最大程度上減少與系統(tǒng)其他部分的兼容性問(wèn)題,這樣我們可以將主要精力集中在內(nèi)核的學(xué)習(xí)上。

下載得到的內(nèi)核名為linux-3.2.54.tar.xz。

下面將描述在上一課中搭建的“windows7+vmware10.0.1+debian7.3”的系統(tǒng)中編譯內(nèi)核linux-3.2.54的步驟,在真實(shí)機(jī)器上安裝的debian7.3系統(tǒng)上編譯的方法也是類(lèi)似的。

2 安裝vmware-tools

內(nèi)核文件下載好后,需復(fù)制到vmware客戶系統(tǒng)(即debian系統(tǒng))。

最好的方法是使用vmware提供的文件共享功能,這個(gè)功能由vmware-tools軟件包提供,需要先安裝該軟件包。首先設(shè)置共享目錄,在VMware菜單欄上點(diǎn)擊"虛擬機(jī)"-->"設(shè)置",打開(kāi)設(shè)置頁(yè)面,點(diǎn)擊"選項(xiàng)"屬性頁(yè),點(diǎn)擊"共享文件夾",在右端選擇"總是啟用",再點(diǎn)擊"添加",按提示設(shè)置主機(jī)中用于共享的目錄路徑和共享名稱(chēng)(我用的是workspace)。


啟動(dòng)debian系統(tǒng)后,點(diǎn)擊菜單欄的"虛擬機(jī)"-->"安裝VMWare Tools"。稍等片刻后,虛擬機(jī)的CD光驅(qū)動(dòng)應(yīng)該已經(jīng)有了vmware-tools的安裝盤(pán)。在debian系統(tǒng)按以下步驟進(jìn)行:
掛載光盤(pán):sudo mount /dev/cdrom /media/cdrom
復(fù)制安裝包: cp /media/cdrom/VM*.tar.gz ./
解壓安裝包:tar -xvf ./VM*.tar.gz
cd ./vmware-tools-distrib
安裝:sudo ./vmware-install.pl(安裝過(guò)程中所有選項(xiàng)都使用默認(rèn)即可)


安裝完成了,檢查發(fā)現(xiàn)/mnt目錄下多了一項(xiàng)hgfs目錄,里面是主機(jī)共享目錄,即/mnt/hgfs/workspace。

3 準(zhǔn)備新的內(nèi)核源代碼

將下載的內(nèi)核源代碼放在上一步中設(shè)置的主機(jī)共享目錄中,然后解壓到默認(rèn)的內(nèi)核源代碼目錄:sudo tar -xvf /mnt/hgfs/workspace/linux-*.tar.gz -C /usr/src

/usr/src目錄下是專(zhuān)門(mén)存放內(nèi)核源代碼的。

放在其他目錄也可以編譯的,不過(guò)我們還是遵循通用的規(guī)則吧。

我們的debian系統(tǒng)是64位版本(正式名稱(chēng)是x86_64),為了避免出現(xiàn)問(wèn)題,我們的內(nèi)核也將編譯成x86_64版本,故修改下源代碼目錄名稱(chēng):sudo mv /usr/src/linux-3.2.54 /usr/src/linux-3.2.54.x86_64.同時(shí)把源代碼目錄下的Makefile文件內(nèi)容也改一下:
sudo vim /usr/src/linux-3.2.54.x86_64/Makefile
搜索字符串"EXTRAVERSION =",在"="后面加上".x86_64"。


這樣,編譯出來(lái)的內(nèi)核鏡像,模塊目錄等都會(huì)自動(dòng)加上".x86_64"后綴。

4 配置內(nèi)核

配置內(nèi)核就是告訴編譯器,源代碼中的哪些功能要編譯進(jìn)內(nèi)核,哪些編譯成模塊,哪些不需要編譯。源碼中包含了幾千個(gè)選擇,因此配置內(nèi)核是個(gè)很復(fù)雜很吃力的工作,為了簡(jiǎn)化這個(gè)工作,內(nèi)核開(kāi)發(fā)者為各個(gè)平臺(tái)編寫(xiě)了默認(rèn)的簡(jiǎn)單配置文件。以x86平臺(tái)為例,配置文件放在"arch/x86/configs"目錄下,可將這些配置文件作為配置工作的起點(diǎn),選擇其中一個(gè)文件復(fù)制到源碼目錄下,并命令名為".config"(注意前面有個(gè)".",它是隱藏文件),這是內(nèi)核編譯時(shí)使用的配置文件,也是內(nèi)核配置工具啟動(dòng)時(shí)加載的文件,當(dāng)然內(nèi)核配置修改后的配置信息也保存在這個(gè)文件里。


由于VMWare的硬件與普通的硬件不同,用內(nèi)核開(kāi)發(fā)者提供的配置文件編譯出來(lái)的內(nèi)核無(wú)法引導(dǎo)系統(tǒng),我們先暫時(shí)忽略有關(guān)內(nèi)核配置的復(fù)雜細(xì)節(jié),走條捷徑,以debian系統(tǒng)安裝時(shí)產(chǎn)生的配置文件作為我們配置內(nèi)核的起點(diǎn)。

既然debian能引導(dǎo),用它編譯出來(lái)的內(nèi)核應(yīng)該不會(huì)有什么大問(wèn)題,復(fù)制debian的配置文件到源代碼目錄,并配置:
sudo cp /boot/config-3.2.0-4-amd64 /usr/src/linux-3.2.54.x86_64/.config
cd /usr/src/linux-3.2.54.x86_64/
sudo make menuconfig

即使不修改內(nèi)核的配置還是需要執(zhí)行sudo make menuconfig,因?yàn)榘l(fā)行版的內(nèi)核可能經(jīng)過(guò)修改,使用的.config也可能會(huì)有差異,執(zhí)行一下sudo make menuconfig,它會(huì)重新分析.config文件,設(shè)置文件中描述的配置信息,退出后再保存成新內(nèi)核適用的.config文件(退出時(shí),配置工具會(huì)詢(xún)問(wèn)你是否保存修改,需要選擇"yes")。

5 編譯,安裝新內(nèi)核

內(nèi)核配置完成了,可以編譯內(nèi)核了,分別執(zhí)行以下命令,進(jìn)行編譯并安裝內(nèi)核:

sudo makesudo make modules_installsudo make install

make命令根據(jù)配置信息進(jìn)行編譯,包括模塊。debian系統(tǒng)默認(rèn)加入了許多驅(qū)動(dòng)模塊,整個(gè)編譯過(guò)程比較耗時(shí),估計(jì)長(zhǎng)達(dá)1.5~2個(gè)小時(shí),在編譯時(shí)可能出現(xiàn)各種問(wèn)題,需要根據(jù)錯(cuò)誤提示進(jìn)行修改。

本次編譯模塊時(shí)就提示“drivers/staging/rts5139”這個(gè)模塊編譯出錯(cuò),這是一個(gè)USB讀卡器的驅(qū)動(dòng),不是什么必需的驅(qū)動(dòng),直接在內(nèi)核配置中去掉該模塊吧。

因此,重新執(zhí)行sudo make menuconfig,找到該模塊:“Device Drivers”-->"Staging drivers"-->"Realtek RTS5139 USB card reader support"。去掉該模塊支持,退出保存,重新執(zhí)行sudo make。

make modules_install命令用于安裝可裝載模塊,這些模塊會(huì)自動(dòng)安裝到/lib/modules/3.2.54.x86_64下。

make install命令執(zhí)行三個(gè)操作:復(fù)制內(nèi)核鏡像到/boot目錄下;生成initrd-img;更新grub。命令成功執(zhí)行成功后,新的內(nèi)核已可以使用,并且列在引導(dǎo)菜單中。

6 重啟系統(tǒng)

重啟系統(tǒng),grub引導(dǎo)選項(xiàng)中多了我們新編譯的內(nèi)核選擇,選擇新內(nèi)核引導(dǎo)。進(jìn)入系統(tǒng)后執(zhí)行命令uname -r 查看當(dāng)前的內(nèi)核版本,顯示為“3.2.54.x86_64”,確實(shí)是我們新編譯的內(nèi)核。

不過(guò),在VMWare中重編譯內(nèi)核后,vmware-tools的文件共享功能不起作用了,這是因?yàn)関mware-tools中包含了內(nèi)核模塊,重編譯后,這些模塊不能再正常加載了。

只需執(zhí)行命令:sudo vmware-config-tools.pl(全部使用默認(rèn)選項(xiàng)),重新配置vmware-tools即可讓共享功能正常使用。

任務(wù)完成,可以收工!

原文標(biāo)題:Linux 內(nèi)核學(xué)習(xí):環(huán)境搭建和內(nèi)核編譯

文章出處:【微信公眾號(hào):Linux愛(ài)好者】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

責(zé)任編輯:haq

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 內(nèi)核
    +關(guān)注

    關(guān)注

    3

    文章

    1416

    瀏覽量

    41451
  • Linux
    +關(guān)注

    關(guān)注

    87

    文章

    11511

    瀏覽量

    213881

原文標(biāo)題:Linux 內(nèi)核學(xué)習(xí):環(huán)境搭建和內(nèi)核編譯

文章出處:【微信號(hào):LinuxHub,微信公眾號(hào):Linux愛(ài)好者】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    如何單獨(dú)編譯linux內(nèi)核?

    那套sdk?純linux sdk編譯方法見(jiàn)readmehttps://github.com/kendryte/k230_linux_sdk/ make linux
    發(fā)表于 07-11 08:06

    迅為RK3576開(kāi)發(fā)板NPUrknn-toolkit2環(huán)境搭建和使用docker環(huán)境安裝

    迅為RK3576開(kāi)發(fā)板NPUrknn-toolkit2環(huán)境搭建和使用docker環(huán)境安裝
    的頭像 發(fā)表于 06-18 15:22 ?521次閱讀
    迅為RK3576開(kāi)發(fā)板NPUrknn-toolkit2<b class='flag-5'>環(huán)境</b><b class='flag-5'>搭建和</b>使用docker<b class='flag-5'>環(huán)境</b>安裝

    不借助Linux系統(tǒng),在Windows下如何搭建ZMC900E交叉編譯環(huán)境

    不需要依賴(lài)笨重的虛擬機(jī),也不需要安裝雙系統(tǒng)。拋開(kāi)繁瑣的環(huán)境準(zhǔn)備,在Windows上輕松搭建交叉編譯環(huán)境。本文將介紹如何在Windows上搭建
    的頭像 發(fā)表于 05-21 11:34 ?252次閱讀
    不借助<b class='flag-5'>Linux</b>系統(tǒng),在Windows下如何<b class='flag-5'>搭建</b>ZMC900E交叉<b class='flag-5'>編譯</b><b class='flag-5'>環(huán)境</b>

    Linux內(nèi)核編譯失?。恳苿?dòng)硬盤(pán)和虛擬機(jī)的那些事兒

    Linux開(kāi)發(fā)中,編譯內(nèi)核是一項(xiàng)常見(jiàn)任務(wù),但不少開(kāi)發(fā)者在移動(dòng)硬盤(pán)或虛擬機(jī)環(huán)境下嘗試時(shí)會(huì)遭遇失敗。本文將簡(jiǎn)要探討這些問(wèn)題的成因,并介紹一些虛擬機(jī)使用技巧,幫助大家更好地應(yīng)對(duì)相關(guān)問(wèn)題。在移
    的頭像 發(fā)表于 04-11 11:36 ?349次閱讀
    <b class='flag-5'>Linux</b><b class='flag-5'>內(nèi)核</b><b class='flag-5'>編譯</b>失敗?移動(dòng)硬盤(pán)和虛擬機(jī)的那些事兒

    求助,關(guān)于STM32MP257編譯內(nèi)核問(wèn)題求解

    the Linux? kernel這篇文章里面的步驟來(lái)來(lái)編譯內(nèi)核時(shí),編譯會(huì)報(bào)錯(cuò)。不知道是否是文檔還未更新,還是這個(gè)內(nèi)核沒(méi)有更新,或者是其他
    發(fā)表于 03-13 06:24

    嵌入式學(xué)習(xí)-飛凌嵌入式ElfBoard ELF 1板卡-內(nèi)核編譯之初次編譯

    接下來(lái)我們就進(jìn)行內(nèi)核代碼的初次編譯,直接使用我們適配好的Linux內(nèi)核源碼進(jìn)行編譯。為了使編譯
    發(fā)表于 12-18 08:55

    飛凌嵌入式ElfBoard ELF 1板卡-內(nèi)核編譯之初次編譯

    接下來(lái)我們就進(jìn)行內(nèi)核代碼的初次編譯,直接使用我們適配好的Linux內(nèi)核源碼進(jìn)行編譯。為了使編譯
    發(fā)表于 12-17 09:34

    嵌入式學(xué)習(xí)-飛凌嵌入式ElfBoard ELF 1板卡-Linux內(nèi)核移植之內(nèi)核簡(jiǎn)介

    學(xué)到本章節(jié),大家應(yīng)該對(duì)Linux操作系統(tǒng)都有了一定的了解,但可能還不知道我們拿到手的內(nèi)核源碼都經(jīng)歷了什么。linux有一個(gè)龐大的開(kāi)源社區(qū),每個(gè)人都可以向開(kāi)源社區(qū)提交代碼。由于linux
    發(fā)表于 12-16 13:08

    deepin社區(qū)亮相第19屆中國(guó)Linux內(nèi)核開(kāi)發(fā)者大會(huì)

    中國(guó) Linux 內(nèi)核開(kāi)發(fā)者大會(huì),作為中國(guó) Linux 內(nèi)核領(lǐng)域最具影響力的峰會(huì)之一,一直以來(lái)都備受矚目。
    的頭像 發(fā)表于 10-29 16:35 ?933次閱讀

    詳解linux內(nèi)核的uevent機(jī)制

    linux內(nèi)核中,uevent機(jī)制是一種內(nèi)核和用戶空間通信的機(jī)制,用于通知用戶空間應(yīng)用程序各種硬件更改或其他事件,比如插入或移除硬件設(shè)備(如USB驅(qū)動(dòng)器或網(wǎng)絡(luò)接口)。uevent表示“用戶空間
    的頭像 發(fā)表于 09-29 17:01 ?1916次閱讀

    linux驅(qū)動(dòng)程序如何加載進(jìn)內(nèi)核

    Linux系統(tǒng)中,驅(qū)動(dòng)程序是內(nèi)核與硬件設(shè)備之間的橋梁。它們?cè)试S內(nèi)核與硬件設(shè)備進(jìn)行通信,從而實(shí)現(xiàn)對(duì)硬件設(shè)備的控制和管理。 驅(qū)動(dòng)程序的編寫(xiě) 驅(qū)動(dòng)程序的編寫(xiě)是Linux驅(qū)動(dòng)開(kāi)發(fā)的基礎(chǔ)。在編
    的頭像 發(fā)表于 08-30 15:02 ?1110次閱讀

    linux驅(qū)動(dòng)程序的編譯方法是什么

    Linux驅(qū)動(dòng)程序的編譯方法主要包括兩種: 與內(nèi)核一起編譯編譯成獨(dú)立的內(nèi)核模塊 。以下是對(duì)
    的頭像 發(fā)表于 08-30 14:46 ?1264次閱讀

    linux驅(qū)動(dòng)程序的編譯方法有哪兩種

    Linux驅(qū)動(dòng)程序的編譯方法主要可以歸納為兩種: 手動(dòng)編譯 和 使用內(nèi)核構(gòu)建系統(tǒng)(Makefile)自動(dòng)編譯 。 1. 手動(dòng)
    的頭像 發(fā)表于 08-30 14:39 ?1541次閱讀

    Linux內(nèi)核測(cè)試技術(shù)

    Linux 內(nèi)核Linux操作系統(tǒng)的核心部分,負(fù)責(zé)管理硬件資源和提供系統(tǒng)調(diào)用接口。隨著 Linux 內(nèi)核的不斷發(fā)展和更新,其復(fù)雜性和代碼規(guī)
    的頭像 發(fā)表于 08-13 13:42 ?1330次閱讀
    <b class='flag-5'>Linux</b><b class='flag-5'>內(nèi)核</b>測(cè)試技術(shù)

    Linux內(nèi)核中的頁(yè)面分配機(jī)制

    Linux內(nèi)核中是如何分配出頁(yè)面的,如果我們站在CPU的角度去看這個(gè)問(wèn)題,CPU能分配出來(lái)的頁(yè)面是以物理頁(yè)面為單位的。也就是我們計(jì)算機(jī)中常講的分頁(yè)機(jī)制。本文就看下Linux內(nèi)核是如何管
    的頭像 發(fā)表于 08-07 15:51 ?646次閱讀
    <b class='flag-5'>Linux</b><b class='flag-5'>內(nèi)核</b>中的頁(yè)面分配機(jī)制