配置编译环境 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 sudo apt install dpkg-dev build-essential bc flex bison python-is-python3 libncurses-dev libelf-dev libssl-dev gcc-aarch64-linux-gnusudo vi /etc/wsl.conf[interop] appendWindowsPath = false export all_proxy="http://172.23.240.1:7890"
开始编译内核 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 git clone --depth=1 -b rk-5.10-rkr8 https://github.com/armbian/linux-rockchip cd linux-rockchip/wget -O .config https://github.com/armbian/build/raw/main/config/kernel/linux-rk35xx-legacy.config make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- menuconfig make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- -j$(nproc ) KERNEL_PATH=/home/leux/kernel sudo mkdir -p ${KERNEL_PATH} /boot/ sudo make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- install INSTALL_PATH=${KERNEL_PATH} /bootsudo make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- modules_install INSTALL_MOD_PATH=${KERNEL_PATH} sudo make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- headers_install INSTALL_HDR_PATH=${KERNEL_PATH} /usrsudo make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- dtbs_install INSTALL_DTBS_PATH=${KERNEL_PATH} /boot/dtb-5.10.160sudo make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- INSTALL_MOD_STRIP=1 modules_install INSTALL_MOD_PATH=${KERNEL_PATH} leux@h88k:~$ du -h -d 1 /lib/modules/ 97M /lib/modules/6.1.99 1.8G /lib/modules/6.1.84 138M /lib/modules/6.1.99-vendor-rk35xx
制作uInitrd 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 sudo apt install binfmt-support qemu-user-staticsudo /usr/sbin/update-binfmts --enable KERNEL_PATH=/home/leux/kernel ROOTFS_PATH=/home/leux/root sudo qemu-debootstrap --arch =arm64 stable ${ROOTFS_PATH} / http://mirrors.ustc.edu.cn/debian/sudo cp ${KERNEL_PATH} /boot/config-5.10.160 ${ROOTFS_PATH} /boot/sudo cp -r ${KERNEL_PATH} /lib/modules/ ${ROOTFS_PATH} /lib/sudo chroot ${ROOTFS_PATH} /apt install initramfs-tools u-boot-tools xz-utils wireless-regdb mkinitramfs -c xz -o /boot/initrd.img-5.10.160 5.10.160 mkimage -A arm64 -T ramdisk -C none -n uInitrd -d /boot/initrd.img-5.10.160 /boot/uInitrd-5.10.160 exit load ${devtype} ${devnum} :${distro_bootpart} ${ramdisk_addr_r} ${prefix} uInitrd load ${devtype} ${devnum} :${distro_bootpart} ${kernel_addr_r} ${prefix} Image load ${devtype} ${devnum} :${distro_bootpart} ${fdt_addr_r} ${prefix} dtb/${fdtfile} sudo cp ${ROOTFS_PATH} /boot/initrd.img-5.10.160 ${KERNEL_PATH} /boot/sudo cp ${ROOTFS_PATH} /boot/uInitrd-5.10.160 ${KERNEL_PATH} /boot/KERNEL_VERSION=5.10.160 cd ${KERNEL_PATH} /boot/sudo ln -sf uInitrd-${KERNEL_VERSION} uInitrdsudo ln -sf vmlinuz-${KERNEL_VERSION} Imagesudo ln -sf dtb-${KERNEL_VERSION} dtb
编译错误解决
可能是GCC版本较新的原因导致下面的一系列问题,注释掉 linux-rockchip/scripts/gcc-wrapper.py
第105行来禁用 interpret_warning
即可解决
1 2 3 4 5 6 7 8 proc = subprocess.Popen(args, stderr=subprocess.PIPE, env=env) for line in proc.stderr: print (line.decode("utf-8"), end="") - interpret_warning(line.decode("utf-8")) + #interpret_warning(line.decode("utf-8")) if do_exit: sys.exit(1)
由于当前内核版本不支持MT7916,所以可以通过backport来支持它
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 wget https://github.com/amazingfate/armbian-h68k-images/raw/master/backport-v6.1.39.patch cd linux-rockchip/ && patch -p1 < backport-v6.1.39.patch> Device Drivers > [*] Network device support > [ ] Wireless LAN > Networking support > [*] Wireless > < > cfg80211 - wireless configuration API > Backport Linux > <*> cfg80211 - wireless configuration API > Backport Linux > <M> Generic IEEE 802.11 Networking Stack (mac80211) > Backport Linux > [*] Wireless LAN > [*] MediaTek devices > <M> MediaTek MT7915E (PCIe) support
也可用如下最傻瓜的方式一刀切:去掉出错模块
fs/xfs/libxfs/xfs_attr_remote.c: In function '__xfs_attr3_rmt_read_verify':
File systems > < > XFS filesystem support
drivers/acpi/thermal.c: In function 'acpi_thermal_resume':
ACPI (Advanced Configuration and Power Interface) Support > < > Thermal Zone
6. drivers/net/ethernet/huawei/hinic/hinic_rx.c: In function 'rx_add_napi':
Device Drivers > Network device support > Ethernet driver support > [ ] Huawei devices
drivers/net/ethernet/stmicro/stmmac/stmmac_main.c: In function 'stmmac_napi_add':
Device Drivers > Network device support > Ethernet driver support > [ ] STMicroelectronics devices
drivers/net/wireless/ath/ath11k/qmi.c:626:35: warning: initialization discards 'const' qualifier from pointer target type [-Wdiscarded-qualifiers]
Device Drivers > Network device support > Wireless LAN > < > Qualcomm Technologies 802.11ax chipset support
drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd/wl_android.c: In function 'wl_handle_private_cmd':
Device Drivers > Network device support > Wireless LAN > < > Rockchip Wireless LAN support —-
drivers/staging/rtl8192u/r8180_93cx6.c: In function 'eprom_w':
Device Drivers > Staging drivers > < > RealTek RTL8192U Wireless LAN NIC driver
drivers/net/wireless/intel/iwlwifi/fw/pnvm.c:174:12:
Device Drivers > Network device support > Wireless LAN > [ ] Intel devices