カーネル 3.16 リリース - Debian GNU/Linux でのコンパイルとインストール
カーネルはオペレーティング システムの中核です。カーネルの主な機能は、アプリケーション - CPU、アプリケーション - メモリ、およびアプリケーション - デバイス (I/O) の間の仲介者として機能することです。メモリ マネージャー、デバイス マネージャーとして機能し、他のタスクの実行に加えてシステム コールに参加します。
Linux にとって、カーネルはその心臓部です。 Linux カーネルは、GNU General Public License に基づいてリリースされています。 Linus Torvalds は 1991 年に Linux カーネルを開発し、初期カーネル リリース バージョン 0.01 を提供しました。 2014 年 (今年) 8 月 3 日にカーネル 3.16 がリリースされました。この 22 年間で、Linux カーネルは多くの発展を遂げてきました。現在、数千の企業、数百万の独立系開発者が Linux カーネルに貢献しています。
大手ブランドの大まかな見積もりと、Linux Foundation のLinux カーネル開発レポートによると、1,700 万行のコードがあると予想される現在の Linux カーネルへの貢献。
- レッドハット – 10.2%
- インテル – 8.8%
- テキサス・インスツルメンツ – 4.1%
- リナロ – 4.1%
- SUSE – 3.5%
- IBM – 3.1%
- サムスン – 2.6%
- グーグル – 2.4%
- 画像彫刻システム – 2.3%
- ウォルフソン・マイクロエレクトロニクス – 1.6%
- オラクル – 1.3%
- ブロードコム – 1.3%
- エヌビディア – 1.3%
- フリースケール – 1.2%
- Ingics テクノロジー – 1.2%
- シスコ – 0.9%
- Linux財団 – 0.9%
- AMD – 0.9%
- 学者 – 0.9%
- ネットアップ – 0.8%
- 富士通 – 0.7%
- パラレル - 0.7%
- ARM – 0.7%
カーネル開発の 70% は企業で働いている開発者によって行われ、開発者はその対価を支払われています。
Linux カーネル 3.16 は、個人だけでなく、さまざまな理由でカーネルを更新する実稼働環境の企業向けにリリースされています。そのうちのいくつかは次のような理由です。
- セキュリティパッチ
- 安定性の向上
- ドライバーの更新 – デバイスのサポートの向上
- 処理速度の向上
- 最新機能など
この記事は、Debian カーネルを Debian の方法で更新することを目的としています。つまり、手作業が少なく、リスクが少なく、しかも完璧です。この記事の後半では、Ubuntu カーネルも更新する予定です。
ステップ 1: カーネル 3.16 のダウンロード
先に進む前に、インストールされている現在のカーネルについて知っておく必要があります。
avi@tecmint:~$ uname -mrns
Linux tecmint 3.14-1-amd64 x86_64
オプションについて:
- -s : オペレーティング システムを印刷します (ここでは「Linux」)。
- -n : システムのホスト名を出力します (ここでは「tecmint」)。
- -r : カーネル バージョンを表示します (ここでは「tecmint 3.14-1-amd64」)。
- -m : ハードウェア命令セットを印刷します (ここでは「x86_64」)。
以下のリンクから最新の安定したカーネルをダウンロードします。そこにあるパッチのダウンロード リンクに惑わされないでください。 「最新の安定したカーネル」と明記されているものをダウンロードします。
- https://www.kernel.org/
あるいは、wget を使用してカーネルをダウンロードすることもでき、より便利です。
avi@tecmint:~/Downloads$ wget https://www.kernel.org/pub/linux/kernel/v3.x/linux-3.16.tar.xz
ステップ 2: カーネル 3.16 署名を確認する
ダウンロードが完了したら、次に進む前に、カーネル署名を検証することを強くお勧めします。
avi@tecmint:~/Downloads$ wget https://www.kernel.org/pub/linux/kernel/v3.x/linux-3.16.tar.sign
署名検証は、非圧縮ファイルに対して行う必要があります。これは、さまざまな圧縮形式 (.gz、.bz2、.xz) に対して 1 つの署名を必要とするためです。
次に、Linux カーネル イメージを解凍します。
avi@tecmint:~/Downloads$ unxz linux-3.16.tar.xz
署名と照合して検証します。
avi@tecmint:~/Downloads$ gpg --verify linux-3.16.tar.sign
注: 上記のコマンドで「gpg: 署名を確認できません: 公開キーが見つかりません」というエラーがスローされた場合。つまり、PGP サーバーから公開キーを手動でダウンロードする必要があります。
avi@tecmint:~/Downloads$ gpg --recv-keys 00411886
キーをダウンロードした後、キーを再度確認します。
avi@tecmint:~/Downloads$ gpg --verify linux-3.16.tar.sign
GPG キーの検証に関して 2 つのことに気づきましたか。
- gpg: 「Linus Torvalds <[email >」による優れた署名。
- 主キーのフィンガープリント: ABAF 11C6 5A29 70B1 30AB E3C4 79BE 3E43 0041 1886 。
キーのフィンガープリントについて心配する必要はありません。アーカイブが正常で署名されていることが確認できました。先に進みましょう!
ステップ 3: 必要なパッケージのインストール
カーネルの構築を開始する前に、カーネルの構築とインストールのプロセスを容易にし、リスクのない Debian 方法で実行できるように、特定のパッケージをインストールする必要があります。
libcurse5-dev、fakeroot、および kernel-package をインストールします。
avi@tecmint:~/Downloads$ sudo apt-get install libncurses5-dev
avi@tecmint:~/Downloads$ sudo apt-get install fakeroot
avi@tecmint:~/Downloads$ sudo apt-get install kernel-package
ステップ 4: カーネル 3.16 の構築
上記のパッケージが正常にインストールされたら、カーネルを構築する準備が整います。抽出した Linux カーネル イメージに移動します (署名を検証しながら上記で抽出しました)。
avi@tecmint:~/Downloads$ cd linux-3.16/
ここで、現在のカーネル構成をコピーして、root ユーザーとして作業ディレクトリを表示することが重要です。
cp /boot/config-'uname -r' .config
/boot/config-'uname -r' を作業ディレクトリ「/home/avi/Downloads/linux-3.16 」にコピーし、「」として保存しています。 >.config」。
ここで、「uname -r」は現在インストールされているカーネル バージョンで自動的に置き換えられ、処理されます。
ドット ファイルは通常の方法では見ることができないため、現在の作業ディレクトリでこれを表示するには、オプション '-a' を ls とともに使用する必要があります。
ls -al
Linux カーネルを構築するには 3 つの方法があります。
- make oldconfig : カーネルが何をサポートすべきか、何がサポートすべきでないのかを 1 つずつ質問する対話型の方法です。これは非常に時間のかかるプロセスです。
- make menuconfig : これは、ユーザーがオプションを有効または無効にできるコマンドライン メニュー ベースのシステムです。 ncurses ライブラリが必要なので、上記でそれを Apt します。
- make qconfig/xconfig/gconfig : これは、ユーザーがオプションを有効または無効にできるグラフィカル メニュー ベースのシステムです。 QTライブラリが必要です。
明らかに、「make menuconfig」を使用します。
カーネルを構築するのが怖いですか?そうであってはなりません。楽しいので、学べることがたくさんあります。以下のことに留意する必要があります。
- ハードウェアのニーズと適切なドライバー。
- カーネルを自分で構築するときに、ハイメモリのサポートなどの新しい機能を選択します。
- カーネルを最適化します – 必要なドライバーのみを選択します。起動プロセスが高速化されます。ドライバーが不明な場合は、それを含めた方がよいでしょう。
次に、「make menuconfig」コマンドを実行します。
make menuconfig
重要: 「選択 – ロード可能なモジュールのサポートを有効にする」を選択する必要があります。これを忘れると、大変な目に遭うことになります。 。
注: 開いている設定ウィンドウでは、ネットワーク カード、Bluetooth、タッチパッド、グラフィック カード、NTFS などのファイル システム サポート、その他多くのオプションのさまざまなオプションを設定できます。
何を選択すべきか、何を選択すべきでないのかを説明するチュートリアルはありません。これは、リサーチしたり、Web 上で勉強したり、tecmint のチュートリアルから学習したり、その他あらゆる方法で学習したりすることによってのみわかります。
カーネル ハッキングのオプションがあることがわかります。ハッキング?うん!ここでは探検という意味です。カーネルハッキングでさまざまなオプションを追加し、多くの機能を利用できます。
次に、汎用ドライバー オプション を選択します。
ネットワークデバイスのサポート。
入力デバイスのサポート。
/boot/config-`uname –r`.config から保存した構成ファイル (.config) をロードします。
「OK」をクリックし、保存して終了します。次に、ソース ツリーをクリーンアップし、カーネル パッケージ パラメータをリセットします。
make-kpkg clean
ステップ 5: カーネル 3.16 のコンパイル
カーネルのコンパイルを開始する前に、CONCURRENCY_LEVEL をエクスポートする必要があります。 CONCURRENCY LEVEL には、カーネルのコアに数値 1 を追加するルールがあります。コアが 2 つある場合は、CONCURRENCY_LEVEL=3 をエクスポートします。コアが 4 つある場合は、CONCURRENCY_LEVEL=5 をエクスポートします。
プロセッサのコアを確認するには、以下に示すように cat コマンドを使用します。
cat /proc/cpuinfo
サンプル出力
Sample Output
processor : 0
vendor_id : GenuineIntel
cpu family : 6
model : 69
model name : Intel(R) Core(TM) i3-4005U CPU @ 1.70GHz
stepping : 1
microcode : 0x17
cpu MHz : 799.996
cache size : 3072 KB
physical id : 0
siblings : 4
core id : 0
cpu cores : 2
apicid : 0
initial apicid : 0
fpu : yes
fpu_exception : yes
cpuid level : 13
wp : yes
上の出力を見ると、コアが 2 つあるので、以下に示すように 3 つのコアをエクスポートします。
export CONCURRENCY_LEVEL=3
正しい CONCURRENCY_LEVEL を設定すると、カーネルのコンパイル時間が短縮されます。
fakeroot make-kpkg --append-to-version "-tecmintkernel" --revision "1" --initrd kernel_image kernel_headers
ここで、「tecminkernel」はカーネルのビルド名で、あなたの名前、ホスト名、ペットの名前など、何でも構いません。
カーネルのコンパイルには、コンパイルされるモジュールとマシンの処理能力に応じて、多くの時間がかかります。コンパイルが完了するまでは、カーネル コンパイルに関する FAQ をいくつか参照してください。
よくある質問
Q1.私のカーネルは長時間コンパイルされています。ノーマルですか?
Q2.コンパイル中にカーネルを中断した場合、最初からやり直す必要がありますか?
Q3.コンパイルされたファイルは、カーネルを更新するために別のシステムで使用できますか?
Q4.コンパイルしたファイルをホストしますか?
Q5.リポジトリに fakeroot や ncurses5-dev などのパッケージはありますか?
Q6.最新のカーネルをインストールした後、最後のカーネルで起動できますか?
Q7.カーネルの更新中に問題が発生しました。手伝ってくれませんか?有料ですか?
Q8.私の会社はカーネルのアップデートで問題に直面しています。あなたのチームが私たちをサポートしてくれますか?有料ですか?
FAQ はこれで終わりです。コンパイル プロセスに移りましょう。カーネルのコンパイルが成功すると、現在の作業ディレクトリの「上」に 1 つのディレクトリと、2 つのファイル (Debian パッケージ) が作成されます。
現在の作業ディレクトリは です。
/home/avi/Downloads/linux-3.16/
Debian パッケージは次の場所で作成されます。
/home/avi/Downloads
それを確認するには、次のコマンドを実行します。
cd ..
ls -l linux-*.deb
次に、作成した Linux イメージ ファイルを実行します。
dpkg -i linux-image-3.16.0-tecmintkernel_1_amd64.deb
作成した Linux ヘッダー ファイルを実行します。
dpkg -i linux-headers-3.16.0-tecmintkernel_1_amd64.deb
すべて完了!最新の Linux カーネル 3.16 を、他のすべての依存関係とともに正常にビルド、コンパイル、および Debian にインストールしました。さらに、Debian パッケージはブートローダー (GRUB/LILO) を自動的に更新しました。再起動して最新のカーネルをテストします。
起動中に表示される可能性のあるエラー メッセージに必ず注意してください。エラーがある場合は、それを理解して解決することが重要です。
reboot
Debian が再起動したらすぐに、[詳細オプション] をクリックして、利用可能なカーネルとインストールされているカーネルのリストを表示します。
インストールされているカーネルのリストを参照してください。
最新のコンパイル済みカーネル (つまり 3.16) を選択して起動します。
カーネルのバージョンを確認します。
uname -mrns
現在インストールされている最新のものは自動的に起動するように設定されているため、詳細な起動オプションから毎回選択する必要はありません。
ステップ 6: プリコンパイルされたカーネル 3.16 をインストールする
Debian (x86_64) 上で独自のカーネルをコンパイルしたくないが、このチュートリアルで構築するコンパイル済みのカーネルを使用したい場合は、以下のリンクからダウンロードできます。このカーネルは、使用している一部のハードウェアでは動作しない可能性があります。
- linux-image-3.16.0-linux-console.net_kernel_1_amd64.deb
- linux-headers-3.16.0-linux-console.net_kernel_1_amd64.deb
次に、次のコマンドを使用して、コンパイル済みのカーネルをインストールします。
dpkg -i linux-image-3.16.0-linux-console.net_kernel_amd64.deb
dpkg -i linux-headers-3.16.0-linux-console.net_kernel_amd64.deb
使用されていないカーネルは、コマンドを使用してシステムから削除できます。
apt-get remove linux-image-(unused_version_number)
注意: 最新のカーネルを徹底的にテストした後、古いカーネルを削除する必要があります。急いで決断しないでください。自分が何をしようとしているのかを理解している場合にのみ続行してください。
必要なカーネルを削除する際に何か間違ったことをした場合、または削除してはいけないカーネルを削除した場合、システムは作業できない段階になります。
未使用のカーネルをアンインストールした後、次のようなメッセージが表示される場合があります。
- リンク /vmlinuz は破損したリンクです。
- シンボリック リンク vmlinuz を削除します。
- ブートローダー[grub]を再実行する必要がある場合があります。
- リンク /initrd.img は破損したリンクです。
- シンボリック リンク initrd.img を削除します。
- ブートローダー[grub]を再実行する必要がある場合があります。
これは正常なことであり、心配する必要はありません。次のコマンドを使用して GRUB を更新するだけです。
/usr/sbin/update-grub
これらのメッセージを無効にするには、/etc/kernel-img.conf ファイルを更新し、「do_symlinks」を無効にする必要がある場合があります。再起動して再度ログインできれば問題ありません。
それは今のところすべてです。また別の興味深い記事をお届けします。それまでは引き続き Tecmint に接続してください。以下のコメントセクションに貴重なフィードバックをお寄せください。また、カーネルのコンパイルとインストールに遭遇したときの経験も教えてください。
こちらもお読みください :
- Ubuntuにカーネル3.16をインストールする
- Debian Linux でカーネル 3.12 をコンパイルしてインストールする