デフォルトの構成でカーネルをコンパイルする


8

仮定:

  • プラットフォーム:
    anisha@linux-dopx:~/> uname -a
    Linux linux-dopx 2.6.34-12-desktop #1 SMP PREEMPT 2010-06-29 02:39:08 +0200 x86_64 x86_64 x86_64 GNU/Linux

  • ダウンロードしたカーネルは、kernel.orgからの最新の安定版です。

  • のオプションはデフォルトのままにしておきます(変更しません)make menuconfig
  • 単純に入力しmakemake installgrub-update、および再起動します。

さて、これらの仮定に従って、エラーのない再起動を確実にするために、ファイルに追加の変更を加えるか、いくつかの追加のドライバーをコンパイルする必要がありますか?

はいの場合、それらの変更は何に依存していますか?

編集1:

anisha@linux-dopx:/> sudo /sbin/lspci -n
00:00.0 0600: 8086:29c0 (rev 10)
00:02.0 0300: 8086:29c2 (rev 10)
00:1b.0 0403: 8086:27d8 (rev 01)
00:1c.0 0604: 8086:27d0 (rev 01)
00:1c.1 0604: 8086:27d2 (rev 01)
00:1d.0 0c03: 8086:27c8 (rev 01)
00:1d.1 0c03: 8086:27c9 (rev 01)
00:1d.2 0c03: 8086:27ca (rev 01)
00:1d.3 0c03: 8086:27cb (rev 01)
00:1d.7 0c03: 8086:27cc (rev 01)
00:1e.0 0604: 8086:244e (rev e1)
00:1f.0 0601: 8086:27b8 (rev 01)
00:1f.1 0101: 8086:27df (rev 01)
00:1f.2 0101: 8086:27c0 (rev 01)
00:1f.3 0c05: 8086:27da (rev 01)
01:00.0 0200: 10ec:8136 (rev 01)

回答:


7

そのままではお勧めできませんmake menuconfig。必要な設定は次の3つに依存します。

 the hardware being used
 the features used by the OS/distribution
 the features by you (file-systems, raid, ..etc)

したがって、私の見解で推奨される「デフォルト」設定は次のとおりです。

cd your_kernel_src
cp /boot/your-distribution-config .config
make localmodconfig
make menuconfig

ディストリビューションのカーネル構成も参照してください。最初の段落:

カーネルの構成は、かつてはかなり単純なプロセスであり、サポートする必要のあるハードウェアの知識のみが必要でした。時間が経つにつれ、物事は一般的に複雑になってきていますが、ディストリビューションでは、特定のカーネル機能に対する独自の一連の依存関係が追加されています。そのため、Linus Torvaldsは、ディストリビューション固有のカーネル構成オプションを追加するRFC提案を発表しました。


1
より簡潔に言うと、「デフォルト」または「Linusが意図したもの」のカーネル構成は機能していません。何も設定せずにダウンロードしてコンパイルしただけの場合、カーネルが壊れたり、機能しなくなったりする可能性があります。
バハマート2012

デフォルトの構成はそれだけです。以前は、Linusが実行していたものでした。ディストリビューションの構成を取得し、それを出発点として使用します。
フォンブランド2013年

答えてくれてありがとう、私はwriting linux drivers2.6カーネルの本をフォローしようとしています。私のFedora 24構成には、2.6カーネルに対して多くの無効な値があります。2.6カーネルをインストールするために使用する構成に関する提案はありますか?
ギデオン2016

3

実際のハードウェア/ディストリビューションはdefconfigで正しく動作しない可能性があります

この回答で述べたよう、ディストリビューションやハードウェアベンダーから提供されていないものは、微妙な、またはそれほど微妙ではない方法で失敗する可能性が非常に高くなります。次に例を示します。

  • 一部の重要なハードウェアのドライバサポートを構築しない可能性があります
  • ディストリビューションのパッケージは、ビルドして失敗したカーネルの機能に依存している可能性があります

さらに、特定の構成に加えて、ベンダーがバニラカーネルの上に大きなパッチセットを適用するのは通常のことです。たとえば、Ubuntuでもこれを行います。

特にUbuntu / Debianの場合、サポートされているカーネルをソースからコンパイルする方法については、https//askubuntu.com/questions/281763/is-there-any-prebuilt-qemu-ubuntu-image32bit-online/1081171#で説明しています。 1081171その安定したカーネルベースを変更することは、その場合に実行できる最も健全なことです。

QEMUはdefconfigで動作します

一つdefconfigのカーネルv4.20、QEMU 2.12でテストQEMU上のブートに、しかしうまくそれをしません、。

Buildrootを使用し完全に自動化された例を次に示します。

そのリンクに記載されているように、ディスクから起動するには次のオプションが必要です。

CONFIG_VIRTIO_PCI=y
CONFIG_VIRTIO_BLK=y

initrdには必要ありませんが。

異なるアーチ、例えばaarch64へのクロスコンパイルには、以下が必要です:

make ARCH=arm64 defconfig

しかし、ここ説明されているように、arm64はQEMUで起動しますが、非常に肥大化したカーネルを生成するため、たとえばここで説明されているように、もっと最小限のものをロールアウトしたいと思うでしょう。

make defconfig正確には何ですか?

詳細なビルドで使用された構成ファイルを簡単に確認できます。

make V=1 defconfig

これはv4.19で出力します:

make -f ./scripts/Makefile.build obj=scripts/basic
rm -f .tmp_quiet_recordmcount
make -f ./scripts/Makefile.build obj=scripts/kconfig defconfig
scripts/kconfig/conf  --defconfig=arch/x86/configs/x86_64_defconfig Kconfig

使用したファイルはarch / x86 / configs / x86_64_defconfigである必要があると結論付けています。

参照:https : //stackoverflow.com/questions/41885015/what-exactly-does-linux-kernels-make-defconfig-do

make helpまた、のような他の興味深いデフォルト関連の目標を示しalldefconfigかつsavedefconfig有用であり得ます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.