GNU/Linux >> Linux の 問題 >  >> Debian

カーネルをコンパイルする方法-Debianの方法

このページについて

  1. 1予備的注意
  2. 2カーネル.debパッケージの構築
    1. 2.1カーネルコンパイルに必要なパッケージをインストールする
    2. 2.2カーネルソースのダウンロード
    3. 2.3カーネルソースへのパッチの適用(オプション)
    4. 2.4カーネルの構成
    5. 2.5カーネルの構築
    6. 2.6新しいカーネルをインストールする
  • 3カーネルの構築従来の方法
    1. 3.1カーネルコンパイルに必要なパッケージをインストールする
    2. 3.2カーネルソースのダウンロード
    3. 3.3カーネルソースへのパッチの適用(オプション)
    4. 3.4カーネルの構成
    5. 3.5カーネルの構築とインストール
    6. 3.6インストール後の手順
  • 4つのリンク
  • 各ディストリビューションには、ソースからカスタムカーネルを構築するための特定のツールがいくつかあります。この記事は、Debian(Etch)システムでのカーネルのコンパイルについてです。 www.kernel.org(バニラカーネル)の最新の変更されていないカーネルソースを使用してカスタムカーネルを構築し、ディストリビューションで提供されているカーネルから独立する方法について説明します。また、そこにない機能が必要な場合にカーネルソースにパッチを適用する方法も示しています。

    これがあなたのために働くという保証はありません!

    1予備メモ

    新しいカーネルをコンパイルする2つの方法について説明します。最初の方法を使用すると、システムにインストールでき、他の人と共有して他のDebianEtchシステムにインストールできるカーネル.debパッケージができあがります。

    2番目の方法は、カーネルを「従来の」方法でコンパイルすることです。この方法はどのLinuxディストリビューションでも機能しますが、もちろん、カーネルの.debパッケージになってしまうことはありません。

    2カーネル.debパッケージの構築

    この章では、カーネルを構築して、インストールして他のユーザーと共有できる.debパッケージを作成する方法を示します。

    2.1カーネルコンパイルに必要なパッケージをインストールする

    まず、パッケージデータベースを更新します:

     apt-get update 

    次に、次のように必要なすべてのパッケージをインストールします。

     apt-get install kernel-package ncurses-dev fakeroot wget bzip2 build-essential 

    2.2カーネルソースのダウンロード

    次に、目的のカーネルを/ usr/srcにダウンロードします。 www.kernel.orgにアクセスして、インストールするカーネルを選択します。 linux-2.6.21.3.tar.bz2(2.6カーネルはすべてここにあります:http://www.kernel.org/pub/linux/kernel/v2.6/)。次に、次のように/ usr/srcにダウンロードできます。

     cd / usr / src 
    wget http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.21.3.tar.bz2

    次に、カーネルソースを解凍し、カーネルソースディレクトリへのシンボリックリンクLinuxを作成します。

     tar xjf linux-2.6.21.3.tar.bz2 
    ln -s linux-2.6.21.3 linux
    cd / usr / src / linux

    2.3カーネルソースへのパッチの適用(オプション)

    デフォルトで新しいカーネルでサポートされていないハードウェアのドライバーが必要な場合や、仮想化技術や、まだカーネルに組み込まれていないその他の最先端テクノロジーのサポートが必要な場合があります。これらすべての場合において、カーネルソースにパッチを適用する必要があります(利用可能なパッチがある場合...)。

    ここで、必要なパッチ(この例ではpatch.bz2と呼びます)を/ usr/srcにダウンロードしたと仮定します。これは、カーネルソースに適用する方法です(まだ/ usr / src / linuxディレクトリにいる必要があります):

     bzip2 -dc /usr/src/patch.bz2 | patch -p1 --dry-run 
    bzip2 -dc /usr/src/patch.bz2 |パッチ-p1

    最初のコマンドは単なるテストであり、ソースには何もしません。エラーが表示されない場合は、実際にパッチを適用する2番目のコマンドを実行できます。最初のコマンドでエラーが表示された場合は、それを行わないでください!

    カーネルプリパッチをカーネルソースに適用することもできます。たとえば、カーネル2.6.22-rc3でのみ使用可能な機能が必要であるが、このカーネルの完全なソースがまだリリースされていない場合です。代わりに、パッチ-2.6.22-rc3.bz2が利用可能です。そのパッチは2.6.21カーネルソースに適用できますが、カーネル2.6.21.1や2.6.21.2などには適用できません。これはhttp://kernel.org/patchtypes/pre.htmlで説明されています:

    プレパッチはLinuxのアルファリリースと同等です。それらはアーカイブのテストディレクトリにあります。これらは、patch(1)ユーティリティを使用して、3つの部分からなるバージョン番号を持つ以前のフルリリースのソースコードに適用する必要があります(たとえば、2.6.12-rc4プレパッチは2.6.11カーネルソースに適用する必要があります。 、たとえば、2.6.11.10。)

    したがって、2.6.22-rc3カーネルをコンパイルする場合は、2.6.21カーネルソース(http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.21)をダウンロードする必要があります。 tar.bz2)カーネル2.6.21.3の代わりにステップ3で!

    これは、2.6.22-rc3パッチをカーネル2.6.21に適用する方法です。

     cd / usr / src 
    wget http://www.kernel.org/pub/linux/kernel/v2.6/testing/patch-2.6.22-rc3.bz2
    cd / usr / src / linux
    bzip2 -dc /usr/src/patch-2.6.22-rc3.bz2 | patch -p1 --dry-run
    bzip2 -dc /usr/src/patch-2.6.22-rc3.bz2 |パッチ-p1

    2.4カーネルの構成

    新しいカーネルの基礎として、現在動作しているカーネルの構成を使用することをお勧めします。したがって、既存の構成を/ usr / src/linuxにコピーします。

     make clean &&make mrproper 
    cp / boot / config-`uname -r`./.config

    次に実行します

     make menuconfig 

    カーネル設定メニューが表示されます。 [代替構成ファイルのロード]に移動し、構成ファイルとして.config(現在動作しているカーネルの構成を含む)を選択します。

    次に、カーネル構成メニューを参照して選択します。終了して[終了]を選択したら、次の質問(新しいカーネル構成を保存しますか?)に[はい]で答えます。

    2.5カーネルの構築

    カーネルを構築するには、次の2つのコマンドを実行します。

     make-kpkg clean 
    fakeroot make-kpkg --initrd --append-to-version =-custom kernel_image kernel_headers

    --append-to-version =の後に、カーネルの識別に役立つ任意の文字列を記述できますが、マイナス(-)で始まり、空白を含めることはできません。

    しばらくお待ちください。カーネルの構成とプロセッサの速度によっては、カーネルのコンパイルに数時間かかる場合があります。

    2.6新しいカーネルをインストールする

    カーネルのビルドが成功すると、/ usr/srcディレクトリに2つの.debパッケージが見つかります。

     cd / usr / src 
    ls -l <​​/ pre>

    私のテストシステムでは、それらはlinux-image-2.6.21.3-custom_2.6.21.3-custom-10.00.Custom_i386.deb(実際のカーネルを含む)およびlinux-headers-2.6.21.3-custom_2.6.21.3-と呼ばれていました。 custom-10.00.Custom_i386.deb(後で追加のカーネルモジュールをコンパイルする場合に必要なファイルが含まれています)。次のようにインストールします:

     dpkg -i linux-image-2.6.21.3-custom_2.6.21.3-custom-10.00.Custom_i386.deb 
    dpkg -i linux-headers-2.6.21.3-custom_2.6.21.3-custom- 10.00.Custom_i386.deb

    (2つの.debファイルを他のDebian Etchシステムに転送して、まったく同じ方法でインストールできるようになりました。つまり、カーネルを再度コンパイルする必要はありません。)

    それでおしまい。 GRUBブートローダー構成ファイル/boot/grub/menu.lstが自動的に変更され、新しいカーネルのRAMディスクが/bootに作成されました。

    次に、システムを再起動します。

     shutdown -r now 

    起動プロンプトで、新しいカーネルを選択します(デフォルトで選択されているはずです):

    すべてがうまくいけば、新しいカーネルが思い浮かぶはずです。を実行すると、新しいカーネルが実際に使用されているかどうかを確認できます

     uname -r 

    これは次のように表示されます

    2.6.21.3-カスタム

    システムが起動しない場合は、システムを再起動し、起動プロンプトで古いカーネルを選択します。これで、動作中のカーネルのコンパイルを再試行できます。動作していないカーネルのスタンザを/boot/grub/menu.lstから削除することを忘れないでください。

    3カーネルの構築従来の方法

    この章では、任意のLinuxシステムで使用できるさまざまなアプローチについて説明します(RAMディスクの作成やブートローダーの更新などの詳細は別として)。もちろん、カーネルの.debパッケージになってしまうことはありません。

    3.1カーネルコンパイルに必要なパッケージをインストールする

    まず、パッケージデータベースを更新します:

     apt-get update 

    次に、次のように必要なすべてのパッケージをインストールします。

     apt-get install kernel-package libncurses5-dev fakeroot wget bzip2 build-essential 

    3.2カーネルソースのダウンロード

    次に、目的のカーネルを/ usr/srcにダウンロードします。 www.kernel.orgにアクセスして、インストールするカーネルを選択します。 linux-2.6.21.3.tar.bz2(2.6カーネルはすべてここにあります:http://www.kernel.org/pub/linux/kernel/v2.6/)。次に、次のように/ usr/srcにダウンロードできます。

     cd / usr / src 
    wget http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.21.3.tar.bz2

    次に、カーネルソースを解凍し、カーネルソースディレクトリへのシンボリックリンクLinuxを作成します。

     tar xjf linux-2.6.21.3.tar.bz2 
    ln -s linux-2.6.21.3 linux
    cd / usr / src / linux

    3.3カーネルソースへのパッチの適用(オプション)

    デフォルトで新しいカーネルでサポートされていないハードウェアのドライバーが必要な場合や、仮想化技術や、まだカーネルに組み込まれていないその他の最先端テクノロジーのサポートが必要な場合があります。これらすべての場合において、カーネルソースにパッチを適用する必要があります(利用可能なパッチがある場合...)。

    ここで、必要なパッチ(この例ではpatch.bz2と呼びます)を/ usr/srcにダウンロードしたと仮定します。これは、カーネルソースに適用する方法です(まだ/ usr / src / linuxディレクトリにいる必要があります):

     bzip2 -dc /usr/src/patch.bz2 | patch -p1 --dry-run 
    bzip2 -dc /usr/src/patch.bz2 |パッチ-p1

    最初のコマンドは単なるテストであり、ソースには何もしません。エラーが表示されない場合は、実際にパッチを適用する2番目のコマンドを実行できます。最初のコマンドでエラーが表示された場合は、それを行わないでください!

    カーネルプリパッチをカーネルソースに適用することもできます。たとえば、カーネル2.6.22-rc3でのみ使用可能な機能が必要であるが、このカーネルの完全なソースがまだリリースされていない場合です。代わりに、パッチ-2.6.22-rc3.bz2が利用可能です。そのパッチは2.6.21カーネルソースに適用できますが、カーネル2.6.21.1や2.6.21.2などには適用できません。これはhttp://kernel.org/patchtypes/pre.htmlで説明されています:

    プレパッチはLinuxのアルファリリースと同等です。それらはアーカイブのテストディレクトリにあります。これらは、patch(1)ユーティリティを使用して、3つの部分からなるバージョン番号を持つ以前のフルリリースのソースコードに適用する必要があります(たとえば、2.6.12-rc4プレパッチは2.6.11カーネルソースに適用する必要があります。 、たとえば、2.6.11.10。)

    したがって、2.6.22-rc3カーネルをコンパイルする場合は、2.6.21カーネルソース(http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.21)をダウンロードする必要があります。 tar.bz2)カーネル2.6.21.3の代わりにステップ3で!

    これは、2.6.22-rc3パッチをカーネル2.6.21に適用する方法です。

     cd / usr / src 
    wget http://www.kernel.org/pub/linux/kernel/v2.6/testing/patch-2.6.22-rc3.bz2
    cd / usr / src / linux
    bzip2 -dc /usr/src/patch-2.6.22-rc3.bz2 | patch -p1 --dry-run
    bzip2 -dc /usr/src/patch-2.6.22-rc3.bz2 |パッチ-p1

    3.4カーネルの構成

    新しいカーネルの基礎として、現在動作しているカーネルの構成を使用することをお勧めします。したがって、既存の構成を/ usr / src/linuxにコピーします。

     make clean &&make mrproper 
    cp / boot / config-`uname -r`./.config

    次に実行します

     make menuconfig 

    カーネル設定メニューが表示されます。 [代替構成ファイルのロード]に移動し、構成ファイルとして.config(現在動作しているカーネルの構成を含む)を選択します。

    次に、カーネル構成メニューを参照して選択します。終了して[終了]を選択したら、次の質問(新しいカーネル構成を保存しますか?)に[はい]で答えます。

    3.5カーネルのビルドとインストール

    カーネルを構築するには、次のコマンドを実行します。

     make all 
    make modules_install
    make install

    しばらくお待ちください。カーネルの構成とプロセッサの速度によっては、カーネルのコンパイルに数時間かかる場合があります。

    3.6インストール後の手順

    これで新しいカーネルがインストールされましたが、新しいカーネル用のRAMディスクが必要です(そうしないと、システムが起動しない可能性があります)。GRUBブートローダーに新しいカーネルについて通知する必要があります。

    まず、これを行います:

     depmod 2.6.21.3 
    apt-get install yaird

    次に、次のコマンドを使用してRAMディスクを作成します。

     mkinitrd.yaird -o /boot/initrd.img-2.6.21.3 2.6.21.3 

    DebianEtchではGRUB設定は非常に簡単です。私たちがしなければならないのは実行することだけです

     update-grub 

    これにより、新しいカーネルとramdiskが検出され、/ boot / grub/menu.lstが更新されます。

    次に、システムを再起動します。

     shutdown -r now 

    起動プロンプトで、新しいカーネルを選択します(デフォルトで選択されているはずです)。すべてがうまくいけば、新しいカーネルが思い浮かぶはずです。を実行すると、新しいカーネルが実際に使用されているかどうかを確認できます

     uname -r 

    これは次のように表示されます

     2.6.21.3 

    システムが起動しない場合は、システムを再起動し、起動プロンプトで古いカーネルを選択します。これで、動作中のカーネルのコンパイルを再試行できます。動作していないカーネルのスタンザを/boot/grub/menu.lstから削除することを忘れないでください。

    • Debian:http://www.debian.org
    • Linuxカーネルアーカイブ:http://www.kernel.org

    Debian
    1. LinuxカーネルをDebianの方法で構築する

    2. Debian10でプロフィール写真を変更する方法

    3. I7プロセッサー用にカーネルをコンパイルする最良の方法は?

    1. 21世紀のLinuxカーネルをコンパイルする方法

    2. DebianにBudgieデスクトップをインストールする方法

    3. ターミナルでHZを確認するには?

    1. PantheonデスクトップをDebianにインストールする方法

    2. Debianにカーネルヘッダーをインストールする方法

    3. Debian10に最新のMySQLをインストールする方法