Manjaro Linux kernel build with Clang/LLVM(linux-5.17)
Manjaro Linuxでkernel-5.17をclangでビルドしました。
まずビルド用のPKGBUILDファイルを取得する。
mkdir pkgbuild
cd pkgbuild
git clone --depth 1 https://gitlab.manjaro.org/packages/core/linux517
cd linux517
まだrc8(release candidate)用のPKGBUILDなので正式リリースされた5.17用に修正する。
また環境変数を設定することでgccではなく、clangでもビルドを行えるので、その指示もPKGBUILDに含めています。
自分でカーネルオプションを調整できるように、make menuconfigも加えています。
以下、PKGBUILDの差分。
diff --git a/PKGBUILD b/PKGBUILD
index 021239b..0700650 100644
--- a/PKGBUILD
+++ b/PKGBUILD
@@ -5,23 +5,24 @@
# Thomas Baechler <[email protected]>
_basekernel=5.17
-_rc=rc8
-_commit=09688c0166e76ce2fb85e86b9d99be8b0084cdf9
+#_rc=rc8
+#_commit=09688c0166e76ce2fb85e86b9d99be8b0084cdf9
pkgrel=1
_basever=${_basekernel//.}
_kernelname=-MANJARO
pkgbase=linux${_basever}
pkgname=("$pkgbase" "$pkgbase-headers")
-pkgver=5.17rc8.220315.g6c11cfe
+pkgver=5.17
arch=('x86_64')
url="https://www.kernel.org/"
license=('GPL2')
makedepends=(bc docbook-xsl libelf pahole git inetutils kmod xmlto cpio perl tar xz)
options=('!strip')
-source=("linux517-$_commit.zip::https://codeload.github.com/torvalds/linux/zip/$_commit"
- #"https://www.kernel.org/pub/linux/kernel/v5.x/linux-${_basekernel}.tar.xz"
- #"https://www.kernel.org/pub/linux/kernel/v5.x/patch-${pkgver}.xz"
+source=(
+#"linux517-$_commit.zip::https://codeload.github.com/torvalds/linux/zip/$_commit"
+ "https://www.kernel.org/pub/linux/kernel/v5.x/linux-${_basekernel}.tar.xz"
+ "https://www.kernel.org/pub/linux/kernel/v5.x/patch-${pkgver}.xz"
'config'
# ARCH Patches
@@ -44,8 +45,9 @@ source=("linux517-$_commit.zip::https://codeload.github.com/torvalds/linux/zip/$
'0411-bootsplash.patch'
'0412-bootsplash.patch'
'0413-bootsplash.gitpatch')
-sha256sums=('bb9e54042d47237f4d629a6da2dc0a13d85e579779d214b8d560d600223eaa02'
- '0bfccfe6be1e61cd418a84d5244858a03b5d15f5e59d4d4362d63c633e7146c5'
+sha256sums=('555fef61dddb591a83d62dd04e252792f9af4ba9ef14683f64840e46fa20b1b1'
+ 'e8725bd614fc6fd45f4102262adefdc2d5af778a68975fbeb27e66688f22fc9b'
+ 'SKIP'
'2b11905b63b05b25807dd64757c779da74dd4c37e36d3f7a46485b1ee5a9d326'
'94a8538251ad148f1025cc3de446ce64f73dc32b01815426fb159c722e8fa5bc'
'1f18c5c10a3c63e41ecd05ad34cd9f6653ba96e9f1049ce2b7bb6da2578ae710'
@@ -63,13 +65,17 @@ sha256sums=('bb9e54042d47237f4d629a6da2dc0a13d85e579779d214b8d560d600223eaa02'
'60e295601e4fb33d9bf65f198c54c7eb07c0d1e91e2ad1e0dd6cd6e142cb266d'
'035ea4b2a7621054f4560471f45336b981538a40172d8f17285910d4e0e0b3ef')
-pkgver() {
- printf %s%s.%s.g%s "$_basekernel" "$_rc" "$(date +%y%m%d)" "$(git rev-parse --short HEAD)"
-}
+export set LLVM=1
+export set LLVM_IAS=1
+export set CC='clang'
+export set CXX='clang++'
+export set HOSTCC='clang'
+export set HOSTCXX='clang++'
+export set LD=ld.lld
prepare() {
- cd linux-$_commit
-# cd "linux-${_basekernel}"
+# cd linux-$_commit
+ cd "linux-${_basekernel}"
# add upstream patch
# msg "add upstream patch"
@@ -108,13 +114,15 @@ prepare() {
msg "get kernel version"
make prepare
+ make menuconfig
+
msg "rewrite configuration"
yes "" | make config >/dev/null
}
build() {
- cd linux-$_commit
-# cd "linux-${_basekernel}"
+# cd linux-$_commit
+ cd "linux-${_basekernel}"
msg "build"
make ${MAKEFLAGS} LOCALVERSION= bzImage modules
@@ -126,8 +134,8 @@ package_linux517() {
optdepends=('crda: to set the correct wireless channels of your country')
provides=("linux=${pkgver}" VIRTUALBOX-GUEST-MODULES WIREGUARD-MODULE)
- cd linux-$_commit
-# cd "linux-${_basekernel}"
+# cd linux-$_commit
+ cd "linux-${_basekernel}"
# get kernel version
_kernver="$(make LOCALVERSION= kernelrelease)"
@@ -166,8 +174,8 @@ package_linux517-headers() {
depends=('gawk' 'python' 'libelf' 'pahole')
provides=("linux-headers=$pkgver")
- cd linux-$_commit
-# cd "linux-${_basekernel}"
+# cd linux-$_commit
+ cd "linux-${_basekernel}"
local _builddir="${pkgdir}/usr/lib/modules/${_kernver}/build"
install -Dt "${_builddir}" -m644 Makefile .config Module.symvers
コンソールコマンドで音声を流すためにsoxをインストール。
pamac install sox
カーネルのパッケージをビルドして、終わったら音を鳴らしています。
MAKEFLAGSでコンパイルの同時並列処理数を指定する。
makepkg -Cで既存のソースディレクトリを削除。
MAKEFLAGS='-j3' makepkg -C && play ~/Downloads/done.wav || play error.wav
ちなみにビルド途中でエラーが出た場合には、makepkg -eでビルドだけ続行できる。
MAKEFLAGS='-j3' makepkg -e && play ~/Downloads/done.wav || play error.wav
パッケージができたら、インストールして終わりです。
自分は独自リポジトリを用意しているので、そこに追加してリポジトリのdbファイルを更新して、pamac updateでインストールしています。
以上です。
Author And Source
この問題について(Manjaro Linux kernel build with Clang/LLVM(linux-5.17)), 我々は、より多くの情報をここで見つけました https://qiita.com/phoepsilonix/items/482cdf55c7f22776588f著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .