編譯自己的Ubuntu核心

2021-09-25 21:31:38 字數 4476 閱讀 2857

很多時候我們在使用ubuntu的時候,想修改一下核心配置,然後編譯,安裝到ubuntu中。這也是進行ubuntu核心開發的前提。

有很多方法可以獲得ubuntu核心**,但是下面兩種非常方便。

uname -r顯示當前核心的版本號,apt-get source則用來獲取package的source code:

git clone git:
其中release codename通過lsb_release -a獲取,比如ubuntu 16.04的codename為xenial。

distributor id: ubuntu

description: ubuntu 16.04.3 lts

release: 16.04

codename: xenial

ps:從實際使用來看,apt-get source的方式更方便,也不容易出錯,獲取的核心**和當前使用的是同乙個版本。

如果需要編譯核心,還需要安裝乙個package。可以使用如下命令:

sudo apt-get build-dep linux-image-$(uname -r)
整個編譯過程使用的配置檔案分布在若干子配置檔案中,使用如下命令可以將這些配置檔案集中,呼叫menuconfig進行修改。

使用chmod解決部分指令碼可執行許可權問題,

chmod a+x debian/rules

chmod a+x debian/scripts/*

chmod a+x debian/scripts/misc/*

fakeroot debian/rules clean

fakeroot debian/rules editconfigs # you need to go through each (y, exit, y, exit..) or get a complaint about config later

進入核心**的根目錄,執行如下命令:

fakeroot debian/rules clean

# quicker build:

fakeroot debian/rules binary-headers binary-generic binary-perarch

# if you need linux-tools or lowlatency kernel, run instead:

fakeroot debian/rules binary

如果編譯成功,在根目錄下會生成若干.deb包。

如下是4.4.0-57-generic核心在amd64系統上生成的.deb包:

使用dpkg -i安裝若干.deb檔案到系統中,然後重啟:

sudo dpkg -i linux*4.4.0-57*.deb

sudo reboot

有時進行debug需要符號表,這就需要在編譯的時候進行配置。首先需要安裝pkg-config-dgbsym,然後在執行編譯binary-*的時候增加』skildbg=false』:

sudo apt-get install pkg-create-dbgsym

fakeroot debian/rules clean

fakeroot debian/rules binary-headers binary-generic binary-perarch skipdbg=false

如果部分核心不需要,可以選擇刪除。需要先檢視當前使用的核心版本:

uname -a可以獲取當前核心版本號。

在ubuntu核心映象包含了以下的包。

首先檢查系統中安裝的核心映象:

dpkg --list|greplinux-image

dpkg --list|greplinux-headers

輸出如下結果:

al@al:~/data/ubuntu-kernel$ dpkg --list|grep linux-image

ii  linux-image-3.13.0-105-generic                       3.13.0-105.152                                amd64        linux kernel image for version 3.13.0 on 64 bit x86 smp

rc  linux-image-3.13.0-32-generic                        3.13.0-32.57                                  amd64        linux kernel image for version 3.13.0 on 64 bit x86 smp

ii  linux-image-4.4.0-57-generic                         4.4.0-57.78                                   amd64        linux kernel image for version 4.4.0 on 64 bit x86 smp

ii  linux-image-extra-3.13.0-105-generic                 3.13.0-105.152                                amd64        linux kernel extra modules for version 3.13.0 on 64 bit x86 smp

rc  linux-image-extra-3.13.0-32-generic                  3.13.0-32.57                                  amd64        linux kernel extra modules for version 3.13.0 on 64 bit x86 smp

ii  linux-image-extra-4.4.0-57-generic                   4.4.0-57.78                                   amd64        linux kernel extra modules for version 4.4.0 on 64 bit x86 smp

ii  linux-image-generic                                  4.4.0.57.60                                   amd64        generic linux kernel image

al@al:~/data/ubuntu-kernel$ dpkg --list|grep linux-headers

ii  linux-headers-4.4.0-57                               4.4.0-57.78                                   all          header files related to linux kernel version 4.4.0

ii  linux-headers-4.4.0-57-generic                       4.4.0-57.78                                   amd64        linux kernel headers for version 4.4.0 on 64 bit x86 smp

ii  linux-headers-generic                                4.4.0.57.60                                   amd64        generic linux kernel headers

在列出的核心映象中,你可以移除乙個特定的版本(比如3.13.0-105和3.13.0-32)。

sudo apt-getpurge linux-image-3.19.0-15

dpkg --list|greplinux-headers

還可以通過sudo update-grub2來更新grub列表。

編譯自己的Ubuntu核心

很多時候我們在使用ubuntu的時候,想修改一下核心配置,然後編譯,安裝到ubuntu中。這也是進行ubuntu核心開發的前提。有很多方法可以獲得ubuntu核心 但是下面兩種非常方便。uname r顯示當前核心的版本號,apt get source則用來獲取package的source code ...

ubuntu 編譯核心

第一步 安裝必要的工具 首先要安裝必要的包。包有 libncurses5 dev menuconfig 需要的 和 essential sudo apt get install build essential kernel package 核心打包deb的可以不用裝手動安裝 sudo apt get...

編譯ubuntu核心

看了 奔跑吧 linux 核心 的書,感覺記憶體管理這一部分後面的例子不錯,就想手敲一遍體驗一下例子 自己對這方面感覺一直雲裡霧裡 nasri ubuntu usr local apt cache search linux source linux source linux kernel sourc...