回答:
apt-get source
して、カーネルのUbuntuバージョンをダウンロードしますapt-get source linux-image-$(uname -r)
以下を含むフォルダーを提供します。
linux-3.2.0 linux_3.2.0-26.41.dsc linux_3.2.0-26.41.diff.gz linux_3.2.0.orig.tar.gz
太字の差分には、すべてのUbuntu / Debianカスタマイズが含まれています。
.config
使用してストックカーネルを構築するには、「昔ながらの」Debian make-kpkg
メソッドを使用しますこれは、wikiで説明されている別の昔ながらの方法です。
sudo apt-get install kernel-package
初めてカーネルをコンパイルする場合:
sudo apt-get build-dep linux-image-$(uname -r)
次にcd
ソースディレクトリ(ここlinux-3.2.0
)に移動し、実行中のカーネルの構成でファイルmake oldconfig
を作成するか、このディレクトリに.config
サードパーティをコピーします.config
。
テキスト設定とグラフィカル設定のどちらを使用するかに応じて、次をインストールします。
(テキスト)
sudo apt-get install libncurses5 libncurses5-dev
(グラフィカル)
sudo apt-get install qt3-dev-tools libqt3-mt-dev
そして、実行します:
(テキスト)
make menuconfig
(グラフィカル)
make xconfig
完了したら、次を実行します。
fakeroot make-kpkg -j N --initrd --append-to-version=my-very-own-kernel kernel-image kernel-headers
ここでN
、並行して実行するジョブの数(通常、使用しているCPUの数)my-very-own-kernel
は、このビルドを識別するカスタム文字列です。
完了すると、カーネルイメージとヘッダーファイルは、親ディレクトリのdebsとして準備が整います。あなたがそれらをインストールすることができsudo dpkg -i
、またなど、GRUBエントリを追加するの世話をするであろう、
linux-3.2.0
ディレクトリに移動して実行する必要がありますpatch -p1 <../patch.diff
か?
apt-get source ...
すでにあなたのためにそれをしました!
fakeroot debian/rules editconfigs
、fakeroot debian/rules clean
、fakeroot debian/rules binary
正しい、問題のない方法です。
手順は次のとおりです。この手順は、nixCraftのHow to:Compile Linux kernel 2.6に基づいていますが、かなり近代化されています。
kernel.orgでアップストリームカーネルソースコードを入手できます。ここでは、バージョン3.16.1(この記事の執筆時点での最新の安定したカーネル)が使用されます。そのため、異なるバージョンを使用している場合は、これらのコマンドを変更する必要があります。
カーネルソースコードは現在、で提供されています。タール。xzアーカイブは、任意のバージョンで「tar.xz」リンクをクリックします。
cd
アーカイブをダウンロードしたディレクトリに移動した後、次のコマンドで展開できますtar
。
tar xf linux-3.16.1.tar.xz
Ubuntuのツールチェーン(gcc
、make
など)を取得するには、ビルドに不可欠なメタパッケージをインストールします。
sudo apt-get update
sudo apt-get install build-essential
カーネルに入る内容を構成する合理的にユーザーフレンドリーな2つの方法が、make
ターゲットxconfig
とによって提供されますmenuconfig
。
xconfig
グラフィカル構成ユーティリティを実行しますが、menuconfig
テキストベースです(つまり、そのインターフェイスは端末内に完全に表示されます)。それぞれにbuild-essentialで提供されていない追加のソフトウェアが必要です。
グラフィカルに設定するには、 libqt4-devと pkg-configをインストールして実行しますmake xconfig
:
sudo apt-get install libqt4-dev pkg-config
make xconfig
ターミナルで設定するには、インストールしてlibncurses5-dev
(この情報について Hannuに感謝します)、実行しますmake menuconfig
:
sudo apt-get install libncurses5-dev
make menuconfig
最初にこれを実行してカーネルをコンパイルし、作成しますvmlinuz
:
make
vmlinuz
「カーネル」です。具体的には、GRUBまたは使用する他のブートローダーによって圧縮解除され、メモリにロードされるのはカーネルイメージです。
次に、ロード可能なカーネルモジュールをビルドします。
make modules
これらのmake
コマンドが正常に完了したと仮定して、新しいカーネルをインストールします。最初にモジュールをインストールします。
sudo make modules_install
次に、カーネル自体をインストールします。
sudo make install
これにより、vmlinuz-3.16.1
(のコピーvmlinuz
)、config-3.16.1
(カーネル構成パラメーターを格納するテキストファイル)、およびSystem.map-3.16.1
(カーネルシンボルルックアップテーブル)がに格納され/boot
ます。詳細については、Hadronおよびによるcomp.os.linux.miscの投稿を参照してくださいman installkernel
。
このセクションは、Kernel / Compileの情報に一部基づいています。
カーネルが必要な場所になったら、次のものが必要です。
ブートローダーの構成のエントリ。これにより、そこから選択して起動できます。
初期RAMファイルシステム、環境からカーネルをロードするドライバとマウントは/
、ファイルシステム。
(古いカーネルをインストールしている場合、または新しいudevの代わりにdevfsを使用するようにカーネルを設定している場合は、代わりに初期ramdiskをセットアップする必要がありますman initrd
。
以下を使用してinitramfsを生成しますmkinitramfs
。
cd /boot
sudo mkinitramfs -ko initrd.img-3.16.1 3.16.1
GRUB2ブートローダーの構成を更新すると(9.10 以降Ubuntuのデフォルトになっています)、新しいカーネルが自動的に検出され、そこからブートするオプションが追加されます。
sudo update-grub
これで、再起動して新しいカーネルをテストできます。GRUBブートメニューを表示するには、起動中に長Shift押しするか押す必要がありEscます。GRUBブートメニューでは、インストールされているさまざまなカーネルから選択できます。
カーネル(または別のカーネル)をデフォルトにするには、GRUBのブート順序を変更するにはどうすればよいですかを参照してください。
make menuconfig
必要apt get install libncurses5-dev
(バニラではなく)Ubuntuカーネルを構築するための簡単な手順は、https://wiki.ubuntu.com/Kernel/BuildYourOwnKernelにあります。
wiki全体をコピーするわけではありませんが、現在インストールしているUbuntuカーネルのバージョンをコンパイルするための最小限の手順をリストします。(最新バージョンを取得するには、次のUbuntuリリースのカーネルgitリポジトリのクローンを作成します。)Ubuntu 16.04でテスト済み。
# Get source code
apt-get source linux-image-$(uname -r)
# Install dependencies
sudo apt-get build-dep linux-image-$(uname -r)
# Compile
cd linux-4.4.0
fakeroot debian/rules clean
fakeroot debian/rules binary
# Install (obviously the versions will be different)
cd ..
sudo dpkg -i linux-image-4.4.0-38-generic_4.4.0-38.57_amd64.deb linux-headers-4.4.0-38_4.4.0-38.57_all.deb linux-headers-4.4.0-38-generic_4.4.0-38.57_amd64.deb