Linux の 5 ステップ ビルド カーネル ツリー

Linux の 5 ステップ ビルド カーネル ツリー

0. システムに付属するカーネルツリー

場合によっては、インストールされたシステムには、ドライバーをコンパイルするのに十分なLinux內核樹がすでに付属していることがあります。

組み込みカーネルツリーは通常、

/lib/modules/<システムカーネルバージョン>/build

そのうち、システムカーネルのバージョンはuname -rを使用して表示できます。

$ uname -r
5.11.0-41-ジェネリック

ただし、組み込みのカーネルツリーは不完全なようですので、次の方法に従って完全なカーネルツリーをコンパイルすることをお勧めします。

1. 環境設定

最初のステップ

カーネルツリーを初めて構成するには、いくつかの必要な環境をインストールする必要があります。

sudo apt-get build-dep linux linux-image-$(uname -r)

(エラー メッセージError :: You must put some 'source' URIs in your sources.list表示される場合は、こちらを参照してください)

ステップ2

上記の環境に加えて、以下もインストールする必要があります

sudo apt-get install libncurses-dev gawk flex bison openssl libssl-dev dkms libelf-dev libudev-dev libpci-dev libiberty-dev autoconf dwarves

2. ソースコードをダウンロードする

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

このステップの後には、さらに 3 つのファイルがあります。

linux-hwe-5.11_5.11.0-41.45~20.04.1.diff.gz
linux-hwe-5.11_5.11.0-41.45~20.04.1.dsc
linux-hwe-5.11_5.11.0.orig.tar.gz

カーネルソースコードが保存されているフォルダ

linux-hwe-5.11-5.11.0

(注: ファイル名はシステムバージョンによって異なる場合があります)

3. ビルドの準備

(注: コマンドの実行中にpermission deniedた場合は、コマンドの先頭にsudoを追加して再度実行してください)

linux-hwe-5.11-5.11.0フォルダに入り、

メニュー構成を作成する

少し読み込むとこのページが表示されます

ここに画像の説明を挿入

ここでは何も変更する必要はありません。インターフェイスを閉じるだけです (矢印キーを使用してExit ] を選択し、Enter キーを押すか、 Escを 2 回押して終了します)。その理由は、この章の最後にあります。

すると、このダイアログボックスが表示されます

ここに画像の説明を挿入

青いボックスでYesを選択した後、Enter キーを押して終了します。

これにより、現在のディレクトリに.configファイルが生成され ( ls -aと入力するとこのファイルが見つかります)、後続のmakeスムーズに実行されるようになります。

4. カーネルを構築する

ビルドを開始するには、次のコマンドを入力します ( permission denied場合は、コマンドの先頭にsudoを追加して再度実行してください)。

作る

ここでは通常 1 時間から数時間、長時間待たなければなりません。 -j <最大并發任務數>コマンドを使用すると、同時実行性を利用して速度を上げることができます。通常最大并發任務數CPU 数の 2 倍になります。

(注: make helpを使用すると、 makeと入力すると、次の 3 つのアクションが自動的に実行されることがわかります。1) make vmlinux (元のカーネルをビルド)、2) make bzImage (圧縮されたカーネルをビルド)、3) make modules (モジュラー ドライバーを個別にビルド))

5. モジュールをインストールする

最後に、モジュールを/lib/modules/$(uname -r)ディレクトリにインストールします。

sudo モジュールをインストールします 

要約する

これで、5 つのステップで Linux カーネル ツリーを構築する方法についての記事は終わりです。Linux カーネル ツリーに関するより詳しい内容については、123WORDPRESS.COM の過去の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • Linuxカーネルスケジューラソースコード初期化の分析
  • Linux システムの最適化 (カーネルの最適化) に関するいくつかの提案
  • Linuxカーネルをコンパイルする方法

<<:  ボタンに醜い灰色の枠線が付いています。これを削除するにはどうすればよいですか?

>>:  vue3.0 プロジェクトを素早く構築するための手順を完了する

推薦する

jQuery でダイナミックなパーティクル効果を実現

この記事では、動的なパーティクル効果を実現するためのjQueryの具体的なコードを参考までに紹介しま...

Linux環境にJDKとTomcatをインストールする詳細な手順

目次1. JDKをインストールする手動インストール2. トムキャット1. JDKをインストールする注...

MYSQL スロークエリとログ設定とテスト

1. はじめにスロークエリログを有効にすると、MySQL は指定された時間を超えるクエリステートメン...

カレンダーウィジェットのネイティブJS実装

この記事の例では、カレンダーウィジェットを実装するためのjsの具体的なコードを参考までに共有していま...

Alibaba Cloud ホストが IP を使用して Web サイトにアクセスできない問題の解決策 (セキュリティ グループ ルールを構成することで解決)

Alibaba Cloud ホストを購入したばかりで、その速度を試すのが待ちきれませんでした。しか...

HTML+CSS マージテーブル境界線サンプルコード

table タグと td タグに境界線を追加すると、デフォルトでは次のように二重境界線が使用されます...

CSS スタイルを HTML 外部スタイルシートにインポートする方法

リンクインスタイルとは、すべてのスタイルを 1 つ以上の外部スタイルシート ファイルに配置することで...

簡単な約束を段階的に実行する方法を教えます

目次ステップ1: フレームワークを構築するステップ2 構築されたPromiseフレームワークに入力す...

MySQL 8.0 の非表示インデックスの詳細な説明

言葉MySQL 8.0 は最初のバージョンから 4 年を経てリリースされました。バージョン 8.0 ...

フォーム送信時に追加のパラメータを渡すためのいくつかの一般的な方法

フォームを送信するときに、送信前に追加のパラメータが追加される状況が発生する場合があります。この問題...

一般的なCSS3アニメーションの実装方法

1. 何ですかCSS アニメーションは、CSS を使用して拡張マークアップ言語 (XML) 要素をア...

Vue でキープアライブを使用した後にキャッシュをクリアする方法

キープアライブとは何ですか?通常の開発では、コンポーネントによっては複数回初期化する必要のないものも...

MIME エンコーディングの概要 (オンライン情報と実際の経験から統合)

1. MIME: 多目的インターネットメール拡張インペリアル カレッジ オブ コンピュータ オンラ...

HTML入力ドロップダウンメニューを実装する方法

コードをコピーコードは次のとおりです。 <html> <ヘッド> <m...

Vue コンポーネント (Vuex を含む) 間の値の転送に関する簡単な説明

目次父から息子へ:息子から父へ: Vuex を使用せずにコンポーネント間で値を渡す方法は、親から子、...