amd64 以外のアーキテクチャー用にkernel パッケージをdistccを使ってビルドしてみたのですが、思ったより処理が分散されず時間がかかりすぎていました。どうしたものかと思案したのですが、amd64機(20core 40threads)でのネィティブビルドでは3分ほどで済んだので、クロスコンパイルの方が早いかもとおもいやってみたところ、アーキテクチャによっては4分から10分ほどかかりましたが、distccをつかったネィティブビルドよりもずっと早く済んだのでメモ代わりに挙げてみることにしました。
以下、arm64, armhf, riscv64向けクロスビルドの作業内容です。
以下、arm64, armhf, riscv64向けクロスビルドの作業内容です。
## kernel bindeb-pkg cross compile memo sudo mkdir -p /usr/src/linux-build/linux-6.16 sudo chown -R user1000:user1000 /usr/src/linux-build cd /usr/src/linux-build/linux-6.16 git clone https://github.com/torvalds/linux -b v6.16 cp -a linux linux-6.16.bkup ## arm64 sudo dpkg --add-architecture arm64 sudo apt-get update sudo apt install crossbuild-essential-arm64 libssl-dev:arm64 export ARCH=arm64 export CROSS_COMPILE=aarch64-linux-gnu- cd /usr/src/linux-build/linux-6.16/linux time make distclean time make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- defconfig time make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- -j 40 bindeb-pkg -- real 10m53.514s user 325m48.438s sys 48m1.326s ## armhf sudo dpkg --add-architecture armhf sudo apt-get update sudo apt install crossbuild-essential-armhf libssl-dev:armhf export ARCH=arm export CROSS_COMPILE=arm-linux-gnueabihf- cd /usr/src/linux-build/linux-6.16/linux time make distclean time make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- defconfig time make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- -j 40 bindeb-pkg -- real 6m22.575s user 180m20.723s sys 22m1.152s ## riscv64 sudo dpkg --add-architecture riscv64 sudo apt-get update sudo apt install crossbuild-essential-riscv64 libssl-dev:riscv64 export ARCH=riscv export CROSS_COMPILE=riscv64-linux-gnu- cd /usr/src/linux-build/linux-6.16/linux time make distclean time make ARCH=riscv CROSS_COMPILE=riscv64-linux-gnu- defconfig time make ARCH=riscv CROSS_COMPILE=riscv64-linux-gnu- -j 40 bindeb-pkg -- real 4m6.797s user 115m31.895s sys 12m32.633s ## amd64 (native binary package only) sudo apt install build-essential libssl-dev unset ARCH unset CROSS_COMPILE cd /usr/src/linux-build/linux-6.16/linux time make distclean time make defconfig time make -j 40 bindeb-pkg -- real 3m18.878s user 77m50.721s sys 9m41.170sバイナリパッケージだけでなくソースパッケージもビルドする場合は、bindeb-pkgをdeb-pkgとします。
## amd64 (native binary and source packages) sudo apt install build-essential libssl-dev unset ARCH unset CROSS_COMPILE cd /usr/src/linux-build/linux-6.16/linux time make distclean time make defconfig time make -j 40 deb-pkg -- real 4m23.390s user 79m1.686s sys 9m54.881s今回は以上です。それでは。
コメント
コメントを投稿