config: add eBPF kernel features #104
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: VisionFive 2 kernel build | |
on: [workflow_dispatch, push] | |
concurrency: | |
group: ${{ github.workflow }}-${{ github.ref }} | |
cancel-in-progress: true | |
permissions: {} | |
jobs: | |
build: | |
# https://github.com/actions/virtual-environments | |
runs-on: ubuntu-22.04 | |
defaults: | |
run: | |
shell: sh | |
env: | |
CROSS_COMPILE: 'riscv64-linux-gnu-' | |
ARCH: 'riscv' | |
steps: | |
- name: Setup tmpfs | |
run: sudo mount -t tmpfs -o "noatime,lazytime,uid=$(id -u),size=3G" tmpfs "$GITHUB_WORKSPACE" | |
- uses: actions/checkout@v3 | |
- name: Build init | |
run: | | |
sudo apt-get -q update | |
sudo DEBIAN_FRONTEND=noninteractive apt-get --no-install-recommends -qq dist-upgrade | |
sudo DEBIAN_FRONTEND=noninteractive apt-get --no-install-recommends -qq install make gcc libc6-dev flex bison gcc-riscv64-linux-gnu bc libssl-dev | |
rm -Rf linux-image-visionfive2 | |
mkdir -p linux-image-visionfive2/DEBIAN linux-image-visionfive2/boot/extlinux | |
- name: Build Linux | |
run: | | |
> .scmversion # Avoid Git commit version suffix | |
mv dietpi_visionfive2_defconfig arch/riscv/configs/ | |
make dietpi_visionfive2_defconfig | |
make -j$(nproc) | |
make install INSTALL_PATH='linux-image-visionfive2/boot' | |
make dtbs_install INSTALL_DTBS_PATH='linux-image-visionfive2/usr/lib/linux-image-visionfive2' | |
find linux-image-visionfive2/usr/lib/linux-image-visionfive2 -mindepth 1 -regextype egrep \( ! -regex '.*/(starfive|vf2-overlay.*|jh7110-starfive-visionfive-2-.*\.dtb)' -o -regex '.*/jh7110-starfive-visionfive-2-A1[01].dtb' \) -exec rm -Rf {} + | |
make modules_install INSTALL_MOD_PATH='linux-image-visionfive2' | |
rm linux-image-visionfive2/lib/modules/*/build linux-image-visionfive2/lib/modules/*/source | |
# WiFi/BT firmware: https://github.com/starfive-tech/buildroot/blob/JH7110_VisionFive2_devel/package/starfive/starfive-firmware/starfive-firmware.mk | |
mkdir -p linux-image-visionfive2/lib/firmware | |
curl -fLO https://github.com/starfive-tech/buildroot/archive/JH7110_VisionFive2_devel.tar.gz | |
tar xf JH7110_VisionFive2_devel.tar.gz | |
rm JH7110_VisionFive2_devel.tar.gz | |
cp -Rv buildroot-JH7110_VisionFive2_devel/package/starfive/starfive-firmware/*/* linux-image-visionfive2/lib/firmware/ | |
rm -R buildroot-JH7110_VisionFive2_devel | |
# StarFive DRI library | |
curl -sSfO 'https://raw.githubusercontent.com/starfive-tech/Debian/20221225T084846Z/gpu/DDK1.19-binary-xorg/IMG_GPU-xorg.tar.gz' | |
tar xf IMG_GPU-xorg.tar.gz | |
rm IMG_GPU-xorg.tar.gz | |
mkdir -p linux-image-visionfive2/usr/lib/riscv64-linux-gnu/dri | |
cp IMG_GPU-xorg/usr/local/lib/dri/starfive_dri.so linux-image-visionfive2/usr/lib/riscv64-linux-gnu/dri/ | |
rm -R IMG_GPU-xorg | |
# Permissions | |
find linux-image-visionfive2 -type f -exec chmod 0644 {} + | |
find linux-image-visionfive2 -type d -exec chmod 0755 {} + | |
- name: Build package | |
run: | | |
kernelversion=$(make kernelversion) | |
#curl -fO 'https://dietpi.com/downloads/binaries/linux-image-visionfive2.deb' | |
#cur_version=$(dpkg-deb -f linux-image-visionfive2.deb Version) | |
#rm linux-image-visionfive2.deb | |
#cur_suffix=${cur_version#*-dietpi} | |
#echo "Current package version is: $cur_version" | |
echo "New kernel version is: $kernelversion" | |
#[ "$kernelversion-dietpi$cur_suffix" = "$cur_version" ] && version="$kernelversion-dietpi$((cur_suffix+1))" || version="$kernelversion-dietpi1" | |
version="$kernelversion-dietpi1" | |
echo "New package version will be: $version" | |
cat << _EOF_ > linux-image-visionfive2/boot/extlinux/extlinux.conf | |
label DietPi | |
linux /boot/vmlinuz-$kernelversion | |
fdt /usr/lib/linux-image-visionfive2/starfive/jh7110-starfive-visionfive-2-v1.3b.dtb | |
append root=/dev/mmcblk1p1 rootfstype=ext4 rootwait earlycon=sbi console=ttyS0,115200 console=tty1 consoleblank=0 net.ifnames=0 | |
_EOF_ | |
echo '/boot/extlinux/extlinux.conf' > linux-image-visionfive2/DEBIAN/conffiles | |
cat << _EOF_ > linux-image-visionfive2/DEBIAN/postinst | |
#!/bin/dash | |
set -e | |
export DEB_MAINT_PARAMS=\$* INITRD=Yes | |
[ -d '/etc/kernel/postinst.d' ] && run-parts --arg='$kernelversion' --arg='/boot/vmlinuz-$kernelversion' /etc/kernel/postinst.d | |
sed -Ei '/^[[:blank:]]*(linux|kernel)/c\linux /boot/vmlinuz-$kernelversion' /boot/extlinux/extlinux.conf | |
# Post-5.15.158-dietpi1 extlinux.conf migration, due to changed device tree names: https://github.com/starfive-tech/linux/commit/daba99e | |
dpkg --compare-versions "$2" gt '5.15.158-dietpi1' || sed -i -e 's/jh7110-visionfive-v2/jh7110-starfive-visionfive-2/g' -e 's/jh7110-starfive-visionfive-2\.dtb/jh7110-starfive-visionfive-2-v1.3b\.dtb/g' /boot/extlinux/extlinux.conf | |
exit 0 | |
_EOF_ | |
cp linux-image-visionfive2/DEBIAN/postinst linux-image-visionfive2/DEBIAN/preinst | |
sed -i -e '/extlinux/d' -e 's/postinst/preinst/g' linux-image-visionfive2/DEBIAN/preinst | |
cp linux-image-visionfive2/DEBIAN/postinst linux-image-visionfive2/DEBIAN/postrm | |
sed -i -e '/extlinux/d' -e 's/postinst/postrm/g' linux-image-visionfive2/DEBIAN/postrm | |
cp linux-image-visionfive2/DEBIAN/postinst linux-image-visionfive2/DEBIAN/prerm | |
sed -i -e '/extlinux/d' -e 's/postinst/prerm/g' linux-image-visionfive2/DEBIAN/prerm | |
chmod +x linux-image-visionfive2/DEBIAN/p* | |
find linux-image-visionfive2 ! \( -path linux-image-visionfive2/DEBIAN -prune \) -type f -exec md5sum {} + | sed 's|linux-image-visionfive2/||' > linux-image-visionfive2/DEBIAN/md5sums | |
cat << _EOF_ > linux-image-visionfive2/DEBIAN/control | |
Package: linux-image-visionfive2 | |
Version: $version | |
Architecture: riscv64 | |
Maintainer: MichaIng <[email protected]> | |
Date: $(date -u '+%a, %d %b %Y %T %z') | |
Standards-Version: 4.6.2.0 | |
Installed-Size: $(du -sk 'linux-image-visionfive2' | mawk '{print $1}') | |
Section: kernel | |
Priority: optional | |
Homepage: https://github.com/MichaIng/linux | |
Vcs-Git: https://github.com/MichaIng/linux.git | |
Vcs-Browser: https://github.com/MichaIng/linux | |
Description: Linux kernel for RISC-V StarFive VisionFive 2 | |
_EOF_ | |
sed -i "/^Installed-Size:/c\Installed-Size: $(du -sk 'linux-image-visionfive2' | mawk '{print $1}')" linux-image-visionfive2/DEBIAN/control | |
sudo chown -R 0:0 linux-image-visionfive2 | |
dpkg-deb -b -Zxz -z9 -Sextreme linux-image-visionfive2 | |
sudo rm -R linux-image-visionfive2 | |
# - name: Upload | |
# run: | | |
# [ -d ~/.ssh ] || mkdir ~/.ssh | |
# umask 377 | |
# echo '${{ secrets.KNOWN_HOSTS }}' > ~/.ssh/known_hosts | |
# echo '${{ secrets.SSH_KEY }}' > ~/.ssh/id_ed25519 | |
# curl -T 'linux-image-visionfive2.deb' --key ~/.ssh/id_ed25519 '${{ secrets.UPLOAD_URL }}all/' | |
# curl 'https://api.cloudflare.com/client/v4/zones/${{ secrets.CF_ZONE }}/purge_cache' -H 'Authorization: Bearer ${{ secrets.CF_TOKEN }}' -H 'Content-Type: application/json' \ | |
# --data '{"files":["https://dietpi.com/downloads/binaries/testing/","https://dietpi.com/downloads/binaries/testing/linux-image-visionfive2.deb"]}' |