在安裝Gentoo的同時,編譯自己的Linux內核也是被認為非常古怪和技術性的事情之一。我們已經討論了一些您可能希望這樣做的原因。在我們引導您完成這些步驟之前,下面是一些重要概念的簡要概述。
簡而言之,它是操作系統的重要組成部分,如果不是最重要的話。操作系統負責讓你的程序運行,允許它們訪問你的硬件。然而,它實際上是執行所有這些任務的內核。
Linux內核的特殊之處在於它可以根據您自己的硬件進行定製。這與windowsnt內核相比,它在每臺計算機上都是相同的。為此,內核必須經歷一個稱為編譯的過程。
有關更多信息,請查看我們對Linux內核的介紹。
通常,程序是以人類可讀的格式編寫的。這使得人們更容易創建軟件。例如,Linux內核主要是用一種叫做C的編程語言編寫的,但是計算機不能理解這一點。他們只識別一種叫做機器代碼的複雜語言。要做到這一點,需要使用一種叫做編譯器的特殊軟件來翻譯文本行。
不同的編譯器用於轉換不同的編程語言。例如,GCC是一個編譯器,它將C代碼轉換成機器代碼(除其他外)。但這並不是他們所做的全部——編譯器也可以優化特定機器的翻譯代碼。同時,它們還可以在執行此操作時從程序中刪除不需要的功能。
通常,很多軟件都已經完成了這個過程。相反,人們下載轉換後的二進制指令,這些指令是現成的。例如,您現在運行的web瀏覽器已經編譯。這是因為編譯一些東西可能有點複雜和耗時。把它想象成把一本大書翻譯成外語。
簡而言之,編譯內核意味著將其代碼轉換為實際在計算機上運行的代碼。
沒有燃料你不能生火。同樣,如果您沒有代碼,那麼您就不能編譯程序。對於大多數Linux操作系統,通常都是相同的,但有一些例外。其中許多人提供自己的自定義內核源。如果可以的話,你應該試著用它。例如,如果您使用的是基於Debian的操作系統,如Ubuntu,則應使用以下命令安裝源:
sudo apt-get updatesudo apt-get install linux-source如果願意,還可以安裝此軟件包的不同版本(例如linux-source-4.8.0)。您將在/usr/src/目錄中找到已安裝的文件,因此請在那裡導航並查看內容:
cd /usr/src/ls您將看到一個以結尾的文件。焦油bz2. 這是您將使用的源。使用以下命令提取:
sudo tar xjvf linux-source-4.4.0.tar.bz2當然,請確保用正確的名稱替換文件。文件將相當大,所以過程將需要一點時間!
如果您願意,您可以從官方的Linux內核網站上獲得您的源代碼。我建議只有在Linux操作系統沒有提供的情況下才這樣做。選擇所需的版本並下載。如果你通過這個途徑,你應該下載到一個空文件夾。這樣,如果你想在將來編譯更多的內核,你會有一個很好的文件夾來組織它們。
完成此操作後,使用以下命令提取文件:
tar xJvf linux-4.9.11.tar.xz確保使用的文件名與下載的版本匹配!
在這一步中,您可以選擇要除去內核的哪些部分。例如,內核為各種設備提供了許多不同的驅動程序。如果您不需要這種支持,去掉它們可以帶來一些速度上的好處,同時還可以獲得更小的內核。
在繼續之前,您必須安裝一些程序,讓您自定義和編譯它。
在基於Debian的系統上,您需要構建基本包,除其他外:
sudo apt-get install build-essential gcc libncurses5-dev libssl-devlibncurses5 dev包將使配置內核更容易,因此請確保安裝它。其他Linux操作系統也會有一個類似的程序,但可能會使用不同的名稱。例如,如果您使用的是軟呢帽,則稱為ncurses。
如果尚未安裝,還需要GNU編譯器集合(GCC)。這是負責將原始源代碼翻譯成計算機可以理解的東西的工具。也就是說,編譯。
安裝了這些程序後,打開終端,以便您在提取的Linux源文件夾中。例如,如果使用linux源方法,您將執行以下操作:
cd /usr/src/linux-source-4.4.0在編譯內核之前,您需要告訴GCC您希望如何完成它。您可以使用名為make的命令行工具來執行此操作。鍵入以下命令:
sudo make localmodconfig這將創建一個名為.config的文件,它告訴GCC從內核源代碼編譯什麼。makelocalmodconfig命令檢測當前正在運行的內核組件,並將它們標記為編譯。如果內核位於您自己的文件夾中,則不需要sudo就可以工作。
你可能會遇到下面這樣的信息。只要按回車鍵就可以跳過它們——它們通常只是新的內核特性。
然而,localmodconfig並不完美!如果您當前沒有使用計算機的某些部分,它可能無法檢測到它支持的所有內容。因此,您需要手動啟用它們。或者,您可以完全跳過此步驟,改用下一個命令。這將使用與當前使用的選項相同的選項編譯新內核。
如果您希望這樣做,但之前使用過localmodconifg命令,請執行以下操作:
sudo make clean這將給你一個乾淨的建設。如果以前用這些源代碼編譯過內核,也應該使用這個命令。
在內核源文件夾中,有一個名為.config的文件。這就是GCC用來選擇編譯內容的方法。代替手動編輯(不推薦),您將使用一些終端工具。這將使選擇編譯選項更加容易。
完成此操作後,請進一步微調:
sudo make nconfig你會看到一個彩色菜單彈出。這是內核配置菜單。要四處導航,請使用箭頭鍵。您可以按向右箭頭鍵展開旁邊帶有--->;號的條目。按向左箭頭鍵,從這些子菜單中導航出來。
通過按空格鍵,可以切換旁邊帶有<;gt;或[]符號的菜單項。這將在不同的菜單選項之間循環。如果您在內部看到*或M,那麼將編譯特定的內核組件。它們之間唯一的區別是M選項將在需要時加載。如果您正在編譯一個不經常使用的驅動程序,這可能很有用。
如果您想了解有關特定開關的更多功能,請按F2鍵。您將看到對所編譯內容的有用描述。
完成後,按F9按鈕保存並退出。
現在您已經創建了一個定製的make文件,您需要編譯內核。鍵入以下命令:
sudo make -j$(nproc --all)如果您從web上下載內核源,則不需要sudo。命令的第二部分利用所有CPU內核,幫助加快內核編譯時間。如果您想在不發生太多打嗝的情況下將計算機用於其他任務,可以消除此問題,或者將數字更改為其他的(例如,-j2)。但是,這也會使編譯速度減慢!
這一過程可能而且將需要很長時間。你選擇編譯的越少,它就越短。即便如此,你還是需要耐心。
然後,輸入此命令以完成編譯內核的其餘部分:
sudo make modules_install要實際使用此內核,您需要輸入以下命令:
sudo make install這將自動將內核複製到/boot文件夾並生成適當的文件以使其正常工作。
如果在安裝新內核後重新啟動,系統可能無法工作!這通常是由於編譯不正確的內核(也就是說,沒有很好地支持您的計算機)。舉個例子,我自己的筆記本電腦。為了防止這種情況發生,我建議編輯GRUB以便它可以切換回舊的內核。為此,請使用以下命令:
sudo nano /etc/default/grub在GRUB#U HIDDENŠU TIMEOUT和GRUBŠU HIDDENŠTIMEOUTŠ安靜線前放置一個Š標誌。之後,通過運行以下命令保存這些更改:
sudo grub-mkconfig -o /boot/grub/grub.cfg現在,如果你重新啟動你的電腦,你可以切換到一箇舊的內核,如果你的新內核不工作。只需轉到高級選項菜單項並選擇要引導的內核。如果一切順利,恭喜你!您將使用自己編譯的內核。
你有興趣編譯更多的內核嗎?其他程序?你覺得值得嗎?
圖片來源:chombosan/Shutterstock
...他事情也是如此。許多人將面臨的一個很大的不同點是,如何將這樣一個系統安裝到計算機上。 ...
...inux作業系統。在Linux發行版(“發行版”)中,它的本地編譯原始碼是獨一無二的。與傳統作業系統相比,Linux發行版提供了更大的靈活性,而Gentoo則充分利用了自己動手的心態。 ...
...桌面依賴的很酷的工具。80年代建立的關鍵工具包括GCC(編譯C的工具)、Emacs(文字編輯器)、Bash和各種仍在使用的命令列實用程式。 ...
...在很大程度上,Linux提供了一種很好的體驗,不管您決定如何執行它。不管它是一個拱形系統,還是一個基本的作業系統,這其實並不重要。所以自豪地使用任何Linux作業系統。 ...
...都使用GRUB引導載入程式,預設情況下,它會詢問您希望如何引導作業系統,並給您10秒鐘的時間來做出決定。 ...
...。檔案裡有一大堆馬廄,可以幫你分析。我們將向您展示如何使用這些工具。 識別檔案型別 檔案通常具有一些特性,允許軟體包識別它是哪種型別的檔案,以及其中的資料表示什麼。嘗試在MP3音樂播放器中開啟PNG檔案是沒有...