本系列文章假設讀者已對linux有一定的了解,其實學習linux內核不需要有很深的關于linux的知識,只需要了解以下內容:linux基礎知識及基本shell命令;現代操作系統的基本概念;C語言和gcc基本使用。
在開始我們的linux內核學習之前。首先需要搭建我們的工作學習環境,即安裝linux系統。關于linux系統構建本身的學問已經復雜到可以成為一個獨立的學科了,畢竟這不是我們學習的內容,所以我選擇最簡單的方法:選擇一個linux發行版進行安裝。
1 選擇linux發行版
即使使用最簡單的構建工作環境的方法,也耗費了我許多時間。"選擇"之所以這樣困難,正是因為可供選擇的太多了!linux發行版有成百上千種,每個發行版都有不同的特點,確實讓人難于取舍。我先后試裝過Gentoo,Arch,debian,fedora。發行版的選擇見仁見智,我不敢說哪個發行版好,哪個不好,每個發行版都有它的擁躉。這里 建議在選擇時考慮幾個問題:設計哲學,社區支持和包管理器。
實際上,選擇哪種發行版都關系不大,發行版之間的差別基本上都是外圍組件,對linux的內核的修改都不會很多。況且我們在學習linux內核,或者開發linux驅動時,一般都是以官方內核(即Linus維護的主線內核)為基準.所以我們搭建好環境后幾乎都是要選擇一個版本的官方內核來重新編繹以備用的。現階段有時間可以多試試不同的發行版,選擇自己最喜歡,用起來最順手的,一旦選擇好了,就不要再改了,一直堅持用它,把它用得滾瓜爛熟.人們會關注你在linux環境中是否得心應手,一般不會關心你懂得用多少種linux發行版。
經過反復的試用,比較,我最終選擇了Debian,吸引我的是它的崇尚自由的設計哲學;強大的社區支持;數量寵大的軟件包. 相對而言debian還是比較保守的,我用的當前的最新穩定版Debian7.3,在2013年12月發布,它使用的內核還是3.2的(現在官方最新的穩定版內核為3.12.8),不過它配套的工具如GCC,make等,即使用來編繹最新版的內核也已經夠用了。
2 選擇主機環境
網上很多有經驗的linux專家級人物都建議直接在自己的工作機或家庭機上安裝linux系統,所有日常工作,生活都在linux系統里完成。不過對于大多數人來說,這太不現實了了。作為桌面系統,當對于windows而言,linux還是有許多不方便的,即使是最近幾年非常火的Ubuntu,號稱可以替換windows的發行版,在日常使用的軟件方面,還是有不小的差距;再者,我們在工作中常常還是需要開發windows程序,而家里更不合適了,家里人基本上都用慣了windows,總不能強迫他們去用不懂的linux系統吧。因此,windows+vmware作為主機環境對于許多人來說,還是第一選擇。另外還需要一臺真實電腦上安裝linux系統,因為在vmware里的客戶系統無法訪問主機中一些硬件,如pci設備等,當開發這些設備的驅動時必須在真實機器上調試。 我使用的主機環境有兩個:Windows 7+vmware10.0.1環境中安裝debian以及x86-64位機器上的windows 7+debian雙系統。
3 安裝準備
安裝準備工作的第一步當然是下載安裝鏡像了。Debian的下載地址:www.debian.org/CD/http-ftp。因為在公司限制上網,另外也不喜歡老是在線安裝軟件,就直接下載了一個用于amd64平臺的DVD安裝鏡像.有3G多,常用的軟件都有了,需要時直接從DVD里安裝就行了,一勞永逸。
3.1 vmware 首先使用vmware創建vmware虛擬機,創建時候,"Guest Operation system"選擇"Debian 7 64位"這一項.內核分配512M即可,硬盤20G足夠了。vmware虛擬機可以直接將iso文件作為客戶機的光盤使用,因此安裝起來非常方便.只需要在虛擬設置中的DVD光驅的連接選項設置為"使用ISO映象文件",并指定DVD安裝ISO鏡像的路徑即可(后面為了簡潔起見,將這一操作稱為"ISO鏡像加入虛擬機"),接下來開機即可用光盤引導(如果虛擬機磁盤已安裝有系統,則需要在虛擬機的BIOS里設置光盤啟動,這跟普通電腦設置方法是相同的)。
3.2 x86-64機器
在真實的機器上,使用U盤安裝更加方便。我們將在已裝windwos7的x86-64機器上用U盤安裝,確保你的電腦能用U盤啟動,如果不行只能選擇燒寫ISO到DVD光盤中用光盤安盤了。其次要確保硬盤有足夠的空間,如果沒有的話,可以調整windows使用的磁盤空間大小(如果不懂設置方法,可以自己百度一下),我的硬盤預留了20G的空間。
接下來制作U盤安裝盤,這里需要用到Universal-USB-Installer工具(我用的是1.9.5.1版本)。步驟如下:在windows系統下插入U盤;打開Universal-USB-Installer程序;在step1中選擇"try unlisted linux ISO";step2中選擇DVD安裝ISO的路徑;step3選擇要安裝的U盤(推薦勾選"Format"); 開始寫入U盤,經過幾十分鐘的等待,U盤安裝完畢,可以使用該U盤啟動了。(用U盤啟動的方法與主板的類型相關,可在網上搜索相關的內容)
4 安裝系統
為了使用方便,兩個系統將采用相同的安裝配置,另外我只安裝基本的shell環境和必要的工具軟件。使用GUI模式雖然美觀,看起來爽,但是對我們這些硬件資源貧乏的窮人來說,運行GUI就是種浪費;其次,與windows不同,linux的X Window完全運行在用戶態,與內核關系不大;再者,在漂亮的桌面環境上放一個終端窗口,總覺得很怪異。我覺得內核和驅動開發者都應該用shell環境,只在需要進行UI相關的測試或編寫UI程序時才使用GUI環境。
言歸正傳,繼續進行我們的系統安裝吧。經過上面的步驟,不管是vmware還是x86-64機器,debian安裝界面總算是出現了。選擇"advanced option"-->"expert install"進入專家安裝模式(現在專家那么多,咱也來冒充一回吧!!)。彈出了一列選項,其實里面有很多選項都沒必要使用的,大部分都可以在系統安裝完成后進行設置。
選項列表的前面是安裝語言和鍵盤設置,這些可以跳過,就用默認的English就行了,反正在文本模式下也顯示不了中文。首先要執行的是" Load installer components from cd",這一步會加載ISO(或U盤)中的安裝組件,全部選擇默認則可。加載完后,安裝選項又多了不少。下一步可以"setup user and passWords",在配置選擇中,最好選擇“不使用root帳號”,root帳戶權限太大,現在的linux界普遍認為不用為妙,可以使用sudo工具執行特權操作,創建自己的用戶名和密碼,按提示操作即可。
接著就要配置磁盤分區了,首先要"detect disks",讓安裝程序先檢測磁盤,然后進行"partition disks",怕安裝程序弄壞我的磁盤,我喜歡選擇了"Manual"模式。懶得去設計分區,將剩余空間全部劃成了一個"/"分區,分區的屬性分別是:"ext4"類型,"PRimary","bootable"選項。完成分成,忽略關于沒有交換分區的警告,寫入磁盤就完了。
現在可以開始"install the base system"。 安裝過程中有個提示,問你要選擇哪個內核,我選了"linux-image-3.2.0-4-amd64",沒去研究供選擇的兩個內核有何不同;接下來又提示initrd的選擇,為了節省空間,選擇了"targeted:only ....."。接下來可以"configure the package manager",因為我不想讓系統連網,所以就在"use a network mirror"選擇了"no",另外其他的"service"也全部不選,當然這些選項都可以在系統安裝好以后進行修改。最后選擇安裝軟件:"select and install software",在軟件列表中,我只選擇了安裝"standard system utilities",其他全部不裝。
到這里,實質上的系統已經安裝完了,就差引導部分了。有grub和lilo可選,我更喜歡grub,因此選擇:"install the grub boot loader"。debian7.3用的是grub2,功能非常強大。在安裝過程中grub會自動檢測當前磁盤中安裝的其他的系統,可以放心將grub安裝到MBR中,不必擔心你的windows會無法啟動。安裝完畢,選擇"finish the install",重啟系統吧!
5 安裝開發工具
現在我們有了一個基本的debian系統,但是還沒有gcc等開發工具,無法進行日常工作,需要安裝這些工具。
5.1 設置安裝源
debian的包管理器非常完善,我們現在安裝軟件就用debian強大的apt-get命令。但是在使用前要先配置安裝源,以告訴apt-get命令去哪里找我們的軟件。安裝軟件盡量都從下載的ISO安裝,既然下載了那么大的一個ISO鏡像,就別浪費了。debian可以設置幾種安裝源,如CD安裝源,網絡安裝源,本地安裝源。
5.1.1 設置CD安裝源
在vmware中,可以將ISO文件當作光盤使用,實在是太方便了。因此,在vmware中我們設置以CD作為安裝源,實際上在安裝系統時,系統的包管理器就已經把DVD安裝盤加入安裝源了,可以查看/etc/apt/sources.list文件。如果沒有加入,或者想加入別的CD安裝源也非常簡單,只需執行以下操作:
5.1.2 設置本地安裝源
在真實的x86-64機器上,系統無法把安裝U盤識別為光盤,不能將安裝U盤作為CD安裝源加入。不過我們可以將ISO文件掛載到某個目錄,再將該目錄作為本地安裝源加入包管理器,步驟如下:
5.2 安裝開發工具
5.2.1 安裝VIM,執行命令:sudo apt-get install vim
安裝系統時安裝的是精簡版的VIM:vim.tiny,功能不齊全,因此安裝完整的VIM,喜歡其他代碼編輯工具的網絡可以安裝其他工具。
VIM安裝完后進行配置,在/etc/vim/vimrc文件最后加上以下幾行(不包括括號內容):
5.2.2 安裝開發工具包:sudo apt-get install build-essential
build-essential包含了常用的gcc,g++,make等開發工具.
5.2.3 安裝linux-headers:sudo apt-get install linux-headers-3.2.0-4-amd6
需要編繹系統自帶內核相關的模塊時,必須安裝該內核對應的linux-headers,里面包含內核配置信息,內核頭文件等。
5.2.4 安裝ncurses-dev:sudo apt-get install libncurses5-dev
內核配置腳本依賴于該工具,如果沒有安裝的話,配置內核里會出錯。
5.2.5 安裝git:sudo apt-get install git
著名的流行的分布式版本管理工具,由Linus開發,官方內核開發用的版本管理工具也是git。Linus的作品,不能不用啊!git需要先配置用戶名和email:
6 環境搭建完成
可以正式開始我們的linux內核學習之旅了。
新聞熱點
疑難解答