Ubuntu 22.04LTS kernel rebuild 中文

kernel

ubuntu 22.04 Linux 從原始碼建立核心的方法

使用舊知識無法正確地建置 Ubuntu 22.04 的核心原始碼。我會在這個部落格中記錄正確的建置步驟。

編譯和連結環境的設定

  • 所需的包
$ sudo apt-get install make gcc libssl-dev
$ sudo apt-get install libncurses-dev
$ sudo apt-get install git
$ sudo apt-get install dpkg-dev
$ sudo apt-get install flex bison
$ sudo apt-get install dwarves libelf-dev
  • 編輯 /etc/apt/source.list 以下載核心原始碼
#deb cdrom:[Ubuntu 22.04.2 LTS _Jammy Jellyfish_ - Release amd64 (20230223)]/ jammy main restricted

# See http://help.ubuntu.com/community/UpgradeNotes for how to upgrade to
# newer versions of the distribution.
deb http://jp.archive.ubuntu.com/ubuntu/ jammy main restricted
# deb-src http://jp.archive.ubuntu.com/ubuntu/ jammy main restricted
取消上面的#以啟用該語句。

## Major bug fix updates produced after the final release of the
## distribution.
deb http://jp.archive.ubuntu.com/ubuntu/ jammy-updates main restricted
# deb-src http://jp.archive.ubuntu.com/ubuntu/ jammy-updates main restricted
取消上面的#以啟用該語句。
  • 下載ubuntu內核原始碼

輸入以下命令列。在 ubuntu 22.04 上,原始碼放置在名為 linux-hwe-5.19-5.19.0 的資料夾中。

$ sudo apt-get update
$ sudo apt-get source linux-image-unsigned-$(uname -r)

內核建構前的準備工作

  • kernel configuration

改變之前 CONFIG_SYSTEM_TRUSTED_KEYS=”debian/canonical-certs.pem”
改變後 CONFIG_SYSTEM_TRUSTED_KEYS=””
在建置時必須將 CONFIG_SYSTEM_TRUSTED_KEYS 設置為 null。

CONFIG_LOCALVERSION=”custom”
配置以下設定以輕鬆檢查建置的核心。

  • 以 PEM 格式儲存簽名文件
    將包含以下內容的文字檔案儲存到 linux-hwe-5.19-5.19.0/certs。
[ req ]
default_bits = 4096
distinguished_name = req_distinguished_name
prompt = no
string_mask = utf8only
x509_extensions = myexts

[ req_distinguished_name ]
CN = Modules

[ myexts ]
basicConstraints=critical,CA:FALSE
keyUsage=digitalSignature
subjectKeyIdentifier=hash
authorityKeyIdentifier=keyid
  • 輸入 openssl 指令
    確認當前位置為 linux-hwe-5.19-5.19.0/certs 後,執行以下指令。
$ openssl req -new -nodes -utf8 -sha512 -days 36500 -batch -x509 \
-config x509.genkey -outform PEM -out signing_key.pem -keyout signing_key.priv

建立核心並建立簽名模組

  • 建構內核和模組
    這需要很長時間。根據您計算機的規格,可能需要一整夜的時間。
$ make bzImage modules
  • 對模組進行簽署
$ openssl req -new -nodes -utf8 -sha256 -days 36500 -batch -x509 \
-config x509.genkey -outform PEM -out signing_key.x509 -keyout signing_key.pem

安裝模組和內核

  • 已剝除除錯符號的模組安裝
$ sudo make modules_install INSTALL_MOD_STRIP=1
  • 安裝內核
$ sudo make install

Ubuntu 重新啟動及確認核心版本名稱

$ uname -r
5.19.17custom

宣傳

我哋開始日本直送銷售啦。

https://shopee.tw/inazuma.distribution