ウェブサイト検索

カーネル 3.16 がリリースされました - Debian GNU/Linux にコンパイルしてインストールする


カーネルは、いかなるオペレーティングシステムの中核です。カーネルの主な機能は、アプリケーションとCPU、アプリケーションとメモリ、アプリケーションとデバイス(I/O)の間の仲介役を果たすことです。それはメモリマネージャー、デバイスマネージャーとして機能し、他のタスクを実行する傍ら、システムコールにも対応します。

Linuxにおいて、カーネルはその中心です。LinuxカーネルはGNU一般公衆ライセンスの下でリリースされています。リーナス・トーバルズは1991年にLinuxカーネルを開発し、最初のカーネルリリースバージョン0.01を発表しました。2014年8月3日(今年)、カーネル3.16がリリースされました。この22年間で、Linuxカーネルは多くの進展を遂げました。現在、何千もの企業と何百万もの独立した開発者がLinuxカーネルに貢献しています。

現在のLinuxカーネルに対する大手ブランドとその貢献の大まかな推定は、Linux FoundationのLinuxカーネル開発報告書によると、1700万行のコードが期待されています。

  1. レッドハット - 10.2%
  2. インテル - 8.8%
  3. テキサス・インスツルメンツ - 4.1%
  4. Linaro - 4.1%
  5. SUSE – 3.5%
  6. IBM – 3.1%
  7. サムスン – 2.6%
  8. Google – 2.4%
  9. ビジョン彫刻システム - 2.3%
  10. ウルフソン・マイクロエレクトロニクス – 1.6%
  11. オラクル – 1.3%
  12. ブロードコム - 1.3%
  13. エヌビディア – 1.3%
  14. フリースケール – 1.2%
  15. Ingicsテクノロジー – 1.2%
  16. シスコ – 0.9%
  17. Linux財団 – 0.9%
  18. AMD – 0.9%
  19. 学術 – 0.9%
  20. ネットアップ - 0.8%
  21. 富士通 - 0.7%
  22. パラレル - 0.7%
  23. ARM – 0.7%

カーネル開発の70%は、企業で働いて報酬を受け取っている開発者によって行われています。面白いと思いませんか?

Linuxカーネル3.16は、個人および企業向けにリリースされました。生産環境で、カーネルをいくつかの理由で更新する予定の方々のために、いくつかの理由が含まれています。

  1. セキュリティパッチ
  2. 安定性向上
  3. 更新されたドライバー – より良いデバイスサポート
  4. 処理速度の向上
  5. 最新の機能など

この記事の目的は、Debianの方法でDebianカーネルを更新することであり、これは手作業を減らし、リスクを減らしながら完璧を追求することを意味します。また、この記事の後半ではUbuntuカーネルも更新します。

ステップ1: カーネル3.16のダウンロード

進む前に、私たちは現在インストールされているカーネルについて知っておく必要があります。

avi@tecmint:~$ uname -mrns 

Linux tecmint 3.14-1-amd64 x86_64

オプションについて:

  1. -s : オペレーティングシステムを表示する('Linux'、こちら)。
  2. -n : プリントシステムホスト名(‘tecmint’、ここに)。
  3. -r : カーネルバージョンを表示する(‘tecmint 3.14-1-amd64’、こちら)。
  4. -m : ハードウェア命令セットを印刷する (‘x86_64’, こちら)。

以下のリンクから最新の安定したカーネルをダウンロードしてください。そこにあるパッチのダウンロードリンクに混乱しないでください。「最新の安定したカーネル」と明確に記載されているものをダウンロードしてください。

  1. 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: Can’t check signature: public key not found エラーが発生した場合は、PGPサーバーから手動で公開鍵をダウンロードする必要があります。

avi@tecmint:~/Downloads$ gpg --recv-keys  00411886

キーをダウンロードした後、もう一度キーを確認してください。

avi@tecmint:~/Downloads$ gpg --verify linux-3.16.tar.sign

gpgキーの検証について2つのことに気づきましたか。

  1. gpg: リーナス・トーバルズ <[email > からの良い署名です。
  2. プライマリキーの指紋: 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/

現在、カーネルの設定をルートユーザーとして作業ディレクトリにコピーすることが重要です。

# cp /boot/config-'uname -r' .config

現在の作業ディレクトリ「/home/avi/Downloads/linux-3.16」に/boot/config-‘uname -r’をコピーして、'.config'として保存しています。

ここでuname -rは、現在インストールされているカーネルバージョンに自動的に置き換えられ、処理されます。

ドットファイルは通常の方法では見ることができないので、現在の作業ディレクトリでこれを見るには、lsに-aオプションを使用する必要があります。

$ ls -al

Linuxカーネルを構築する方法は3つあります。

  1. make oldconfig : これは、カーネルがサポートすべきことやそうでないことを一つずつ質問するインタラクティブな方法です。非常に時間がかかるプロセスです。
  2. make menuconfig : これはユーザーがオプションを有効または無効にできるコマンドラインメニューベースのシステムです。これはncursesライブラリを必要とするため、私たちはそれを上記のようにAptします。
  3. qconfig/xconfig/gconfigを作成する : これは、ユーザーがオプションを有効または無効にできるグラフィカルメニューベースのシステムです。QTライブラリが必要です。

明らかに私たちは「make menuconfig」を使用します。

カーネルのビルドが怖いですか?そんな必要はありません。楽しいですし、学べることがたくさんあります。以下のことを念頭に置いておくべきです。

  1. あなたのハードウェアのニーズと適切なドライバー。
  2. カーネルを自分で構築しているときに、高メモリサポートのような新しい機能を選択してください。
  3. カーネルを最適化してください – 必要なドライバーのみを選択します。これにより、起動プロセスが速くなります。どのドライバーが必要かわからない場合は、それを含めておく方が良いです。

次に、「make menuconfig」コマンドを実行します。

# make menuconfig

重要: 「モジュールサポートを有効にするを選択」を選択しなければなりません。これを忘れると、大変な目に遭うことになります。

注: 開いている設定ウィンドウでは、ネットワークカード、Bluetooth、タッチパッド、グラフィックカード、NTFSなどのファイルシステムサポートやその他多くのオプションを設定することができます。

何を選ぶべきか、何を選ぶべきでないかを教えてくれるチュートリアルはありません。これを知るには、リサーチをしたり、ウェブで情報を勉強したり、tecmintのチュートリアルから学んだり、あらゆる可能な方法で学ぶ必要があります。

カーネルハッキングのオプションがあるのがわかるかもしれません。ハッキング?そうです!ここでの意味は探索です。カーネルハッキングの下にさまざまなオプションを追加し、多くの機能を利用することができます。

次に、一般的なドライバーオプションを選択します。

ネットワークデバイスサポート。

入力デバイスのサポート。

構成ファイル(.config)をロードします。これは /boot/config-`uname -r`.config から保存したものです。

OKをクリックして保存し、終了します。次に、ソースツリーをクリーンにして、カーネルパッケージのパラメータをリセットします。

# make-kpkg clean

ステップ5: カーネル3.16のコンパイル

カーネルのコンパイルを始める前に、CONCURRENCY_LEVELをエクスポートする必要があります。サムの並行レベルには、カーネルのコア数に1を加えるというルールがあります。コアが2つある場合は、export CONCURRENCY_LEVEL=3を設定します。コアが4つある場合は、export 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

正しい同時実行レベルを設定することで、カーネルコンパイル時間が短縮されます。

# 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は終了です。次にコンパイルプロセスに進みましょう。カーネルのコンパイルが成功すると、2つのファイル(Debianパッケージ)が作成され、現在の作業ディレクトリの「上」に1つのディレクトリができる。

私たちの現在の作業ディレクトリは。

/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が再起動したら、利用可能なカーネルとインストールされたカーネルのリストを見るために「Advanced option」をクリックしてください。

インストールされたカーネルのリストを表示します。

起動するために最新のコンパイルされたカーネル(つまり3.16)を選択してください。

カーネルのバージョンを確認してください。

# uname -mrns

最新のものは今インストールされており、自動で起動するように設定されているので、毎回詳細ブートオプションから選択する必要はありません。

ステップ6: 事前コンパイル済みカーネル3.16をインストールする

Debian(x86_64)で自分でカーネルをコンパイルしたくない方、そしてこのチュートリアルで構築した事前コンパイルされたカーネルを使用したい方は、以下のリンクからダウンロードできます。このカーネルは、一部のハードウェアには対応していない場合があります。

  1. linux-image-3.16.0-linux-console.net_kernel_1_amd64.deb
  2. 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)

注意: 最新のカーネルを十分にテストした後は、古いカーネルを削除するべきです。急いで決断をしないでください。自分が何をしているのかわかっている場合のみ進めるべきです。

もしあなたが取り除きたいカーネルを誤って削除したり、削除するべきでないカーネルを削除した場合、あなたのシステムは作業できない状態になるでしょう。

未使用のカーネルをアンインストールした後、次のようなメッセージが表示されることがあります。

  1. /vmlinuzのリンクは壊れています。
  2. シンボリックリンク vmlinuz を削除しています。
  3. ブートローダー[grub]を再実行する必要があるかもしれません。
  4. /initrd.imgのリンクは壊れています。
  5. シンボリックリンク initrd.img を削除しています。
  6. ブートローダー[grub]を再実行する必要があるかもしれません。

これは正常ですので心配する必要はありません。次のコマンドを使用してGRUBを更新してください。

# /usr/sbin/update-grub

あなたは、これらのメッセージを無効にするために、/etc/kernel-img.conf ファイルを更新し、‘do_symlinks‘を無効にする必要があるかもしれません。再起動して再度ログインできる場合、問題はありません。

今のところそれだけです。また興味深い記事でここに戻ってきます。それまで、Tecmintに留まり、つながっていてください。下のコメント欄で貴重なフィードバックをお忘れなく。また、カーネルのコンパイルとインストールに遭遇した際の体験も教えてください。

関連記事 :

  1. Ubuntuにカーネル3.16をインストールする
  2. Debian Linuxにおけるカーネル3.12のコンパイルとインストール

関連記事: