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

推薦する

td セルを結合した場合の td 幅の問題

以下の例では、名前が入っている td の幅が 60px のとき、2 行目の文字数が少ない場合は正常に...

MySQL データベースの操作とデータ型

目次1. データベース操作1.1 データベースの表示1.2 データベースを作成する1.3 データベー...

ウェブデザイナーが注意すべき 43 のウェブデザインの間違い

これはウェブサイトのユーザビリティに関する記事です。著者は自身の経験に基づいて、ウェブサイトのデザイ...

MySQL と Golan 間の従来の分散トランザクションのための 7 つのソリューション

目次1. 基本理論1.1 取引1.2 分散トランザクション2. 分散トランザクションソリューション2...

Nginx転送マッチングルールの実装

1. 正規表現マッチング大文字と小文字を区別するマッチングの場合 ~ ~*は大文字と小文字を区別しな...

Vue-Routerのルート設定の詳しい説明

目次導入ルート内のオブジェクト属性パス: 文字列コンポーネント: コンポーネント | () =>...

2つのNode.jsプロセスがどのように通信するかの詳細な説明

目次序文異なるコンピュータ上の 2 つの Node.js プロセス間の通信TCPソケットの使用HTT...

MySQLセグメンテーション関数substring()の具体的な使用法

MySQL には、主に left()、right()、substring()、substring_i...

企業サイトとコラム辞典 中国語と英語の比較 中国語と英語のバイリンガル企業サイトを作る仲間は

名前キャラクター名前キャラクター情報ニューステクノロジー技術スキンケアスキンケア補う補う香水香水化粧...

Linux カーネルプログラミングにおけるコンテナの of() 関数の紹介

序文Linux カーネルプログラミングでは、マクロ関数 container_of(ptr, type...

MySQL データの集約とグループ化

多くの場合、データを実際に取得せずに要約する必要があり、 MySQLこの目的のために特別な関数を提供...

Linux gzipコマンドの使用

1. コマンドの紹介gzip (GNU zip) コマンドは、ファイルの圧縮と解凍に使用されます。こ...

CSS 共通スタイルで二重矢印を描画するサンプルコード

1. 単一の矢印への複数の呼び出し単一の矢印を実装したら、二重矢印を実装するのは簡単です。上では、単...

Linuxの一般ユーザー向けスケジュールタスクの詳細な説明

序文通常のユーザーはcrontabスケジュールタスクを定義します。たとえば、Oracleユーザーはス...

React 構成 px 変換 rem メソッド

関連する依存関係をインストールするnpm i lib-flexible --save npm i p...