このページについて
- 1予備的注意
- 2カーネル.debパッケージの構築
- 2.1カーネルコンパイルに必要なパッケージをインストールする
- 2.2カーネルソースのダウンロード
- 2.3カーネルソースへのパッチの適用(オプション)
- 2.4カーネルの構成
- 2.5カーネルの構築
- 2.6新しいカーネルをインストールする
- 3.1カーネルコンパイルに必要なパッケージをインストールする
- 3.2カーネルソースのダウンロード
- 3.3カーネルソースへのパッチの適用(オプション)
- 3.4カーネルの構成
- 3.5カーネルの構築とインストール
- 3.6インストール後の手順
各ディストリビューションには、ソースからカスタムカーネルを構築するための特定のツールがいくつかあります。この記事は、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-essential3.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 / linux3.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 |パッチ-p13.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.3DebianEtchではGRUB設定は非常に簡単です。私たちがしなければならないのは実行することだけです
update-grubこれにより、新しいカーネルとramdiskが検出され、/ boot / grub/menu.lstが更新されます。
次に、システムを再起動します。
shutdown -r now起動プロンプトで、新しいカーネルを選択します(デフォルトで選択されているはずです)。すべてがうまくいけば、新しいカーネルが思い浮かぶはずです。を実行すると、新しいカーネルが実際に使用されているかどうかを確認できます
uname -rこれは次のように表示されます
2.6.21.3システムが起動しない場合は、システムを再起動し、起動プロンプトで古いカーネルを選択します。これで、動作中のカーネルのコンパイルを再試行できます。動作していないカーネルのスタンザを/boot/grub/menu.lstから削除することを忘れないでください。
4つのリンク
- Debian:http://www.debian.org
- Linuxカーネルアーカイブ:http://www.kernel.org