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

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

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

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

Linux愛好者 ? 來源:博客園 ? 作者: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語言和gcc基本使用。

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

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

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

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

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

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

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

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

經(jīng)過反復(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),不過它配套的工具如GCC,make等,即使用來編繹最新版的內(nèi)核也已經(jīng)夠用了。

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

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

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

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

另外還需要一臺(tái)真實(shí)電腦上安裝linux系統(tǒng),因?yàn)樵趘mware里的客戶系統(tǒng)無法訪問主機(jī)中一些硬件,如pci設(shè)備等,當(dāng)開發(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)樵?a target="_blank">公司限制上網(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即可,硬盤20G足夠了。vmware虛擬機(jī)可以直接將iso文件作為客戶機(jī)的光盤使用,因此安裝起來非常方便。

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

3.2 x86-64機(jī)器

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

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

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

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

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

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

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

4 安裝系統(tǒng)

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

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

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

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

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

選項(xiàng)列表的前面是安裝語言和鍵盤設(shè)置,這些可以跳過,就用默認(rèn)的English就行了,反正在文本模式下也顯示不了中文。首先要執(zhí)行的是" Load installer components from cd",這一步會(huì)加載ISO(或U盤)中的安裝組件,全部選擇默認(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)建自己的用戶名和密碼,按提示操作即可。

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

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

接下來可以"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)大。

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

5 安裝開發(fā)工具

現(xiàn)在我們有了一個(gè)基本的debian系統(tǒng),但是還沒有g(shù)cc等開發(fā)工具,無法進(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)作光盤使用,實(shí)在是太方便了。因此,在vmware中我們?cè)O(shè)置以CD作為安裝源,實(shí)際上在安裝系統(tǒng)時(shí),系統(tǒng)的包管理器就已經(jīng)把DVD安裝盤加入安裝源了,可以查看/etc/apt/sources.list文件。

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

將ISO加入虛擬機(jī)

掛載光盤:sudo mount /dev/cdrom /media/cdrom

將光盤加入安裝源:sudo apt-cdrom add

打開/etc/apt/sources.list查看是否添加成功

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

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

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

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

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

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

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

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

5.2 安裝開發(fā)工具

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

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

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

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

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

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

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

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

syntax on (打開語法高亮功能)

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

build-essential包含了常用的gcc,g++,make等開發(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)核配置腳本依賴于該工具,如果沒有安裝的話,配置內(nèi)核里會(huì)出錯(cuò)。

5.2.5 安裝git:sudo apt-get install git

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


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

git config --global user.name "xxxxxx"

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

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

可以正式開始我們的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)核開發(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開始,內(nèi)核版本命名采用的策略跟以前不一樣,命名格式為3.A.B,其中A為內(nèi)核的版本,B為補(bǔ)丁的版本。即3.A.B與3.A.C的內(nèi)核是相同的版本,具有相同的功能,如果C>B,只是說明3.A.C相比3.A.B修補(bǔ)了一些BUG而已。

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

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

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

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

我覺得盡量選擇與發(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)核重編譯并替換原來的內(nèi)核,可以最大程度上減少與系統(tǒng)其他部分的兼容性問題,這樣我們可以將主要精力集中在內(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)上編譯的方法也是類似的。

2 安裝vmware-tools

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

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


啟動(dòng)debian系統(tǒng)后,點(diǎn)擊菜單欄的"虛擬機(jī)"-->"安裝VMWare Tools"。稍等片刻后,虛擬機(jī)的CD光驅(qū)動(dòng)應(yīng)該已經(jīng)有了vmware-tools的安裝盤。在debian系統(tǒng)按以下步驟進(jì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(安裝過程中所有選項(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目錄下是專門存放內(nèi)核源代碼的。

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

我們的debian系統(tǒng)是64位版本(正式名稱是x86_64),為了避免出現(xiàn)問題,我們的內(nèi)核也將編譯成x86_64版本,故修改下源代碼目錄名稱: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"。


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

4 配置內(nèi)核

配置內(nèi)核就是告訴編譯器,源代碼中的哪些功能要編譯進(jìn)內(nèi)核,哪些編譯成模塊,哪些不需要編譯。源碼中包含了幾千個(gè)選擇,因此配置內(nèi)核是個(gè)很復(fù)雜很吃力的工作,為了簡化這個(gè)工作,內(nèi)核開發(fā)者為各個(gè)平臺(tái)編寫了默認(rè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)核開發(fā)者提供的配置文件編譯出來的內(nèi)核無法引導(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),用它編譯出來的內(nèi)核應(yīng)該不會(huì)有什么大問題,復(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)過修改,使用的.config也可能會(huì)有差異,執(zhí)行一下sudo make menuconfig,它會(huì)重新分析.config文件,設(shè)置文件中描述的配置信息,退出后再保存成新內(nèi)核適用的.config文件(退出時(shí),配置工具會(huì)詢問你是否保存修改,需要選擇"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è)編譯過程比較耗時(shí),估計(jì)長達(dá)1.5~2個(gè)小時(shí),在編譯時(shí)可能出現(xià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)核。

不過,在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愛好者】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

責(zé)任編輯:haq

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

    關(guān)注

    3

    文章

    1372

    瀏覽量

    40290
  • Linux
    +關(guān)注

    關(guān)注

    87

    文章

    11304

    瀏覽量

    209520

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

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

收藏 人收藏

    評(píng)論

    相關(guān)推薦

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

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

    飛凌嵌入式ElfBoard ELF 1板卡-內(nè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)核簡介

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

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

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

    詳解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 ?692次閱讀

    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)程序的編寫 驅(qū)動(dòng)程序的編寫是Linux驅(qū)動(dòng)開發(fā)的基礎(chǔ)。在編
    的頭像 發(fā)表于 08-30 15:02 ?474次閱讀

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

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

    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 ?685次閱讀

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

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

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

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

    歡創(chuàng)播報(bào) 華為宣布鴻蒙內(nèi)核已超越Linux內(nèi)核

    1 華為宣布鴻蒙內(nèi)核已超越Linux內(nèi)核 ? 6月21日,在華為開發(fā)者大會(huì)上, HarmonyOS NEXT(鴻蒙NEXT)——真正獨(dú)立于安卓和iOS的鴻蒙操作系統(tǒng),正式登場。這是HarmonyOS
    的頭像 發(fā)表于 06-27 11:30 ?843次閱讀

    使用 PREEMPT_RT 在 Ubuntu 中構(gòu)建實(shí)時(shí) Linux 內(nèi)核

    盟通技術(shù)干貨構(gòu)建實(shí)時(shí)Linux內(nèi)核簡介盟通技術(shù)干貨Motrotech如果需要在Linux中實(shí)現(xiàn)實(shí)時(shí)計(jì)算性能,進(jìn)而有效地將Linux轉(zhuǎn)變?yōu)镽TOS,那么大多數(shù)發(fā)行版都可以打上名為PREE
    的頭像 發(fā)表于 04-12 08:36 ?2472次閱讀
    使用 PREEMPT_RT 在 Ubuntu 中構(gòu)建實(shí)時(shí) <b class='flag-5'>Linux</b> <b class='flag-5'>內(nèi)核</b>

    Ubuntu 24.04 LTS選用Linux 6.8為默認(rèn)內(nèi)核

    關(guān)于Ubuntu 24.04 LTS使用何種內(nèi)核版本,一直備受關(guān)注。Canonical工程師Andrea Righi昨日宣布,Ubuntu 24.04將默認(rèn)搭載Linux 6.8內(nèi)核。
    的頭像 發(fā)表于 01-29 11:27 ?1118次閱讀

    【全志T113-i】OK113i-S開發(fā)板開發(fā)環(huán)境準(zhǔn)備和搭建

    ,至少能順利搭建也成了一大關(guān)鍵。而我也算是作為初入門的Linux開發(fā)者,本次也難免要經(jīng)歷這個(gè)過程。 Linux的開發(fā)環(huán)境一般使用Linux機(jī)
    發(fā)表于 01-19 09:45

    rk3399移植Linux內(nèi)核

    RK3399是一款由中國廠商瑞芯微推出的高性能處理器芯片,被廣泛用于嵌入式系統(tǒng)開發(fā)。在進(jìn)行應(yīng)用程序開發(fā)之前,我們需要將Linux內(nèi)核移植到RK3399上,以支持硬件的驅(qū)動(dòng)和功能。本文將詳細(xì)介紹如何將
    的頭像 發(fā)表于 01-08 09:56 ?1149次閱讀