Fedora 31でカーネルソースコードを用意する
ディストリビューションのカーネルソースを使いたいと思うと、RPMパッケージで入手するらしく、展開方法などお作法が分かりずらかったので備忘録に残しておく。
まずは必要なパッケージをインストールする。
# dnf install fedpkg fedora-packager rpmdevtools ncurses-devel pesign # #dnf builddep -y kernel
稼働中のカーネルバージョンを確認して、src.rpmパッケージをダウンロードする。
# uname -r 5.3.7-301.fc31.x86_64 # dnf download --source kernel-5.3.7-301.fc31 # # ls anaconda-ks.cfg kernel-5.3.7-301.fc31.src.rpm
RPMパッケージをインストールする。警告がたくさんでるが問題はないらしい。インストールが終わるとrpmbuildというフォルダが生成されてSOURCESとSPECSというサブフォルダが生成される。
# rpm -i kernel-5.3.7-301.fc31.src.rpm warning: user mockbuild does not exist - using root warning: group mock does not exist - using root ... # # ls anaconda-ks.cfg kernel-5.3.7-301.fc31.src.rpm rpmbuild # # cd rpmbuild/ # # ls SOURCES SPECS
続いて下記のコマンドを実行すると展開される。
# rpmbuild -bp SPECS/kernel.spec ... # ls BUILD BUILDROOT RPMS SOURCES SPECS SRPMS # # cd BUILD/kernel-5.3.fc31/linux-5.3.7-301.fc31.x86_64/ # # ls arch COPYING-5.3.7 drivers ipc lib mm scripts usr block CREDITS fs Kbuild LICENSES net security virt certs crypto include Kconfig MAINTAINERS README sound configs Documentation init kernel Makefile samples tools
この段階ではまだ.configファイルがないらしいので、make oldconfigでファイルを作成する。
# make menucofnig *** *** Configuration file ".config" not found! *** *** Please run some configurator (e.g. "make oldconfig" or *** "make menuconfig" or "make xconfig"). *** make: *** [Makefile:669: .config] Error 1 # # make oldconfig scripts/kconfig/conf --oldconfig Kconfig # # using defaults found in /boot/config-5.3.7-301.fc31.x86_64 # # # configuration written to .config # # make menucofnig
無事make menuconfigが実行できた。めでたし。