web-dev-qa-db-ja.com

カスタムメインラインカーネルをコンパイルおよびインストールする方法

新しいラップトップでUbuntu 15.10を実行していますが、このハードウェアを適切に完全にサポートするには、4.4カーネル+カスタムパッチが必要なようです。詳細に興味がある場合は here をご覧ください。

メインラインカーネルPPAについては知っていますが、私の理解では、ソースには付属していません。この場合、パッチを当てることができないため、メインラインカーネルPPAを使用する可能性を排除するようです。だから私はgitソースをチェックアウトしてビルドしようとしましたが、最新の関連する指示を見つけることができません。

誰かが15.10で4.4カーネルを構築するための指示を手伝ってくれますか?

7
Marplesoft

メインラインカーネルのgitメソッドを取得してコンパイルします。

参照: https://wiki.ubuntu.com/KernelTeam/GitKernelBuild 私は少し違うことをします(他に何が新しくなりましたか?)。

前提条件(必須):

ステップ1は、apt-get updateおよびapt-get dist-upgradeです(つまり、すべてが最新であることを確認します)
ステップ2

Sudo apt-get install fakeroot build-essential crash kexec-tools makedumpfile kernel-wedge

ステップ3

Sudo apt-get build-dep linux

ステップ4

Sudo apt-get install git-core libncurses5 libncurses5-dev libelf-dev asciidoc binutils-dev

カーネル4.3以降の前提条件:

Sudo apt-get install libssl-dev

前提条件(オプション):

Sudo apt-get install git-email git-doc

Git部分:

mkdir temp-k-git
cd temp-k-git
git clone   git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
cd linux

デフォルトのmasterブランチでは何もしないでください。常に作業領域を作成します。

git checkout -b k44rc8_stock v4.4-rc8

Ubuntuカーネル構成ファイルを盗みます(インストール済み):

ls -l /boot
cp /boot/config-4.4.0-040400rc8-generic .config

Ubuntuの構成ファイルには完全なデバッグ機能があります。巨大なカーネルを作成し、コンパイルに2倍の時間がかかります

scripts/config --disable DEBUG_INFO

カーネル4.4の時点で、Ubuntu 14.04を使用してコンパイルする場合(15.10については知りません)、古いバージョンのcコンパイラーを使用する場合:CONFIG_CC_STACKPROTECTOR_STRONGでコンパイルできません。

scripts/config --disable CC_STACKPROTECTOR_STRONG

カーネルをコンパイルします。

time make -j9 bindeb-pkg       <<< Suggest use number of CPUs + 1. Use less for some responsiveness to be left for other uses
                               <<< I always time the kernel build.

または

time make -j9 bindeb-pkg LOCALVERSION=-stock    <<< For a localized verion name append

または

time make -j9 olddefconfig bindeb-pkg LOCALVERSION=-stock   <<< To automatically use defaults for any new config stuff (particuarly useful when bisecting the kernel).

ビルドが完了したら、インストールします。

Sudo dpkg -i ../linux-headers-4.4.0-rc8-stock_4.4.0-rc8-stock-144_AMD64.deb
Sudo dpkg -i ../linux-image-4.4.0-rc8-stock_4.4.0-rc8-stock-144_AMD64.deb

そのため、この時点でメインラインカーネルがO.K.をコンパイルすることがわかっているので、カスタムカーネルに移動します。新しいブランチを作成し、パッチを適用してコンパイルします。

$ git checkout -b k44rc8_custom v4.4-rc8
Switched to a new branch 'k44rc8_custom'

$ git am plv6_1_3.patch
Applying: cpufreq: intel_pstate: configurable algorithm to get target pstate
$ git am plv6_2_3.patch
Applying: cpufreq: intel_pstate: account for non C0 time
$ git am plv6_3_3.patch
Applying: cpufreq: intel_pstate: Account for IO wait time

$ time make -j9 olddefconfig bindeb-pkg LOCALVERSION=-custom

インクリメンタルビルドを行うことで多くの時間を節約することが望ましいので、make cleanを実行しないことが目的であることに注意してください。最初のコンパイルには21分26秒かかりましたが、次のカスタムコンパイルには4分43秒しかかかりませんでした。

9
Doug Smythies

ページにアクセスすると http://kernel.ubuntu.com/~kernel-ppa/mainline/v4.4-rc8-wily が表示されますREADME 4.4rc8のソースファイルを取得するには

ビルドの手順 は少しわかりにくいです。私はカーネルを構築するためのいくつかのレシピを見てきましたが、すべてが少し異なります。いくつかの前提条件があります:4.4カーネルに必要な他のいくつかがあるかもしれません

Sudo apt-get build-dep linux-image-$(uname -r)
Sudo apt-get install libncurses5-dev

次に、成功ビルド用に発行したコマンドは次のとおりです。

chmod a+x debian/scripts/*
chmod a+x debian/scripts/misc/*
nano debian.master/changelog
fakeroot debian/rules clean
fakeroot debian/rules editconfigs
fakeroot debian/rules binary-headers binary-generic skipabis=true

表示される最初のバージョン番号の末尾に何かを追加することにより、変更ログファイルを変更して、独自のカーネルを作成していることを示します。

1
Charles Green