Ubuntu 12.04 でカーネルツリーを構築する実装プロセスの詳細な説明

Ubuntu 12.04 でカーネルツリーを構築する実装プロセスの詳細な説明

まず使用しているカーネルのバージョンを確認してください

lin@lin-仮想マシン:~$ uname -r
3.2.0-23-ジェネリック

システムのインストール時にソースコードが自動的にインストールされる場合。 /usr/src ディレクトリには対応するバージョン ディレクトリがあります。

lin@lin-virtual-machine:~$ cd /usr/src
lin@lin-仮想マシン:/usr/src$ ls
linux-headers-3.2.0-23 linux-headers-3.2.0-23-ジェネリック

ダウンロード可能なソースパッケージを確認してください

lin@lin-virtual-machine:/usr/src$ apt-cache linux-sourceを検索
linux-source - Ubuntu パッチを適用した Linux カーネル ソース
linux-source-3.2.0 - Ubuntu パッチを適用したバージョン 3.2.0 の Linux カーネル ソース

直接インストールするには、「linux-source-3.2.0 - Linuxカーネルソースバージョン3.2.0(Ubuntuパッチ付き)」を選択します。

lin@lin-virtual-machine:/usr/src$ sudo apt-get install linux-source-3.2.0

ダウンロードが完了すると、ファイル名は /usr/src の linux-source-3.2.0.tar.bz2 になります。これは圧縮されたパッケージです。これを解凍すると、カーネル全体のソース コードを取得できます。

pwdを使用して現在のパスを表示します

ls でフォルダ内のファイルを確認する

lin@lin-仮想マシン:/usr/src$ pwd
/usr/src
lin@lin-仮想マシン:/usr/src$ ls
linux-ヘッダー-3.2.0-23 linux-ソース-3.2.0
linux-headers-3.2.0-23-generic linux-source-3.2.0.tar.bz2

解凍

lin@lin-virtual-machine:/usr/src#sudo tar jxvf linux-source-3.2.0.tar.bz2

ディレクトリに入ります (cd linux-source-3.2.0)

lin@lin-virtual-machine:/usr/src$ cd linux-source-3.2.0/
lin@lin-virtual-machine:/usr/src/linux-source-3.2.0$ pwd
linux-source-3.2.0 のソース

カーネルの設定を開始し、最も速い元の設定(デフォルト)方法を選択します。

lin@lin-virtual-machine:/usr/src/linux-source-3.2.0$ sudo make oldconfig

1時間以上待つ必要があります。 。 。

lin@lin-virtual-machine:/usr/src/linux-source-3.2.0$ sudo make

数時間後

...システムは4826kBです
CR d5a51584
カーネル: arch/x86/boot/bzImage が準備完了 (#1)
 モジュールの構築、ステージ 2。
 MODPOST 3304 モジュール
エラー: "__modver_version_show" [drivers/staging/rts5139/rts5139.ko] 未定義です!
警告: modpost: セクションの不一致が 4 つ見つかりました。
詳細を確認するには、次のコマンドを使用してカーネルをビルドします。
'CONFIG_DEBUG_SECTION_MISMATCH=y にする'
make[1]: *** [__modpost] エラー1
make: *** [モジュール] エラー 2

解決策: http://ubuntuforums.org/showthread.php?t=1931029 より

lin@lin-virtual-machine:/usr/src/linux-source-3.2.0$ sudo gedit .config

おそらくRTS5139ドライバの問題でしょう。いずれにせよ、このドライバは使用されていないので、コンパイルに追加しないでください。.configを編集して変更します。

CONFIG_RTS5139=m

これを次の形式に変更します。

CONFIG_RTS5139=n

作り続ける

カーネルを圧縮形式でコンパイルする

bzImageを作成する

モジュールをコンパイルします。

モジュールを作る

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

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

実行が完了すると、/lib/modulesの下に新しいディレクトリが生成されます。

lin@lin-virtual-machine:/lib/modules$ ls
3.2.0-23-ジェネリック3.2.79

成功したら再起動してください。

以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。

以下もご興味があるかもしれません:
  • Ubuntu 16.04 カーネルのアップグレード手順
  • Ubuntuで余分なカーネルを削除する方法
  • Ubuntu Android ソースコードとカーネルのダウンロードとコンパイル
  • Ubuntu で Android 用の Linux カーネル ドライバーにアクセスするためのハードウェア抽象化レイヤー (HAL) モジュールの追加
  • Android 用 Linux カーネル ドライバーをテストするために Ubuntu に組み込みの C 実行可能プログラムを実装する
  • Ubuntu で Android システム用の Linux カーネル ドライバーを作成する方法
  • UbuntuにAndroidカーネルソースコードをダウンロード、コンパイル、インストールする

<<:  MySQL で単一のデータベースまたはテーブルを復元する方法と、起こりうる落とし穴

>>:  HiveメタデータをMySQLに設定するプロセス全体

推薦する

Vue3でアイコンを使用する2つの例

目次1. SVGを使用する2. fontAwesomeを使用する3 ソース4 結論テクノロジースタッ...

MySQL パフォーマンス最適化のための魔法のツール、Explain の基本的な使用分析

導入MySQL には、SELECT ステートメントを分析し、開発者が最適化できるように SELECT...

Kafka と Nginx の統合例

背景nginx-kafka-module は、Kafka を nginx に統合して、Web プロジ...

Linux で xargs コマンドを使用する詳細なチュートリアル

みなさんこんにちは。私は梁旭です。 Linux を使用しているときに、いくつかのコマンドを連結する必...

ウェブページ作成時に標準 HTML コードを使用する際のポイント

<br />多くのウェブサイト デザイナーが犯す最も一般的な間違いは、ウェブページが I...

クロスブラウザ開発体験のまとめ(I)HTMLタグ

ページにDOCTYPEを追加するブラウザによってタグやスタイルシートの解釈が異なるため、さまざまなブ...

Dockerコンテナ起動時に固定IPを設定する実装

Dockerインストール後のネットワークタイプ [root@insure updev]# docke...

Linux システムが VMware にインストールされているかどうかを確認する方法

現在の Linux システムが VMware にインストールされているかどうかを確認する方法を教えて...

Web ページのデザインを学ぶときに習得すべきコードは何ですか?

この記事では、Web ページ制作を学ぶ過程で習得すべきテクニックの一部を詳しく紹介します。これらの内...

MySQL サーバー IO 100% 分析および最適化ソリューション

序文ストレス テスト中に、リソース使用のボトルネックによって発生する最も直接的なパフォーマンスの問題...

JavaScript マウスイベントのケーススタディ

マウスイベントマウスが特定の操作を実行すると、イベント オブジェクトが生成され、イベントがトリガーさ...

Dockerfile に基づいて Tomcat イメージを構築する方法

Dockerfile は Docker イメージを構築するために使用されるファイルです。コマンドパラ...

前後の秒、分、時間、日数を取得するMySQLデータベース

現在の時刻を取得します: current_timestamp を選択します。出力: 2016-06-...

シンプルなCSSアニメーションのtransition属性の詳しい説明

1. 遷移属性の理解1. transition 属性は、次の 4 つの遷移プロパティを設定するために...

MySQL の日付と時刻の加算と減算のサンプル コード

目次1.MySQLは時間間隔を加算または減算します2. 日付を減算する最近、MySQL を見直してい...