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 プロジェクトを素早く構築するための手順を完了する

推薦する

Ubuntu の Python で C/C++ メソッドを呼び出すダイナミック リンク ライブラリの詳細な説明

ブーストをインストールPython から C/C++ を呼び出す方法はたくさんあります。この記事では...

VMware Workstation に Windows Server 2019 をインストールする (グラフィック チュートリアル)

キーの入力を求められた場合は、[キーがありません]を選択します。デスクトップエクスペリエンスを選択す...

Linuxの相対パスと絶対パスの使用

01. 概要絶対パスと相対パスはシェル環境でよく使用され、それぞれに独自の用途があります。相対パスの...

HTML で 2 つの div タグの間に垂直線を描く方法

最近、インターフェースを描画しているときに、インターフェースに垂直線を描画し、この垂直線の高さが親 ...

マウスオーバーボタンアニメーションを実現する純粋な CSS3 パート 2

前の 2 つの章を終えて、ボタンのフローティング アニメーションについて新たな理解が得られましたか?...

HTMLの基本構造を包括的に理解する

HTML入門ハイパーテキスト マークアップ言語: ハイパーテキスト マークアップ言語ハイパーテキスト...

MySQL でよく使用される SQL 文を表示する (詳細な説明)

#mysql -uroot -pパスワードを入力してくださいmysql> show full...

1 つの記事で Apache Avro データを解析する

概要: この記事では、Avro データをシリアル化して生成し、FlinkSQL を使用して解析する方...

ブラウザ間の hr 区切り文字の違い

Webページを作るときに、区切り線hrを使うことがありますが、IE6やIE7で表示するのは非常に苦痛...

Linux プロセス管理ツール スーパーバイザーのインストールと設定のチュートリアル

環境: CentOS 7公式ドキュメント: http://supervisord.org/インストー...

Windows で Mysql を起動したときに 1067 が表示される場合の解決策

数日前に仕事を始めて、Mysql をインストールしたところ、開くことができました。今日、会社に行った...

JavaScript における変数と関数の昇格の詳細な例

js 実行字句解析フェーズ: 形式パラメータ解析、変数宣言解析、関数宣言解析の 3 つの部分が含まれ...

Webpack コンポーネントの使用状況統計を実装するための 50 行のコード

背景最近、リーダーからコンポーネント ライブラリを構築するように依頼があり、プロジェクトで現在使用さ...

MySQL DATEDIFF 関数を使用して 2 つの日付間の時間間隔を取得する方法

説明する2 つの日付間の時間間隔を返します。文法DateDiff(間隔、日付1、日付2 [、週の最初...

VMware 仮想マシンでの CentOS7 ネットワーク構成 (ホストのワイヤレス インターネット アクセス)

CentOS7 システムを使用するのは今回が初めてで、ネットワーク構成を行う際に多くの問題が発生し...