因為 Funuv TV1520 DTV-T USB dongle使用 rtl28xxu kernel module,
但是 vendor ID 和 product ID 都沒有在module 資料內,
所以修改程式碼加上去。
之前用 AUR 中的 v4l-dvb package 修改編譯,
但是原始碼來源因為向前修改越來越複雜,
所以已將沒有繼續針對新 kernel 更新。
1.先建立一個工作目錄
#mkdir ~/build#cd ~/build
2.下載原始碼
#pkgctl repo clone --protocol=https linux3.加入要修改的程式碼到 PKGBUILD 的 prepare()
#cd linux
#vim PKGBUILE
prepare() {
cd $_srcname
sed -e 's.\/\* Vendor IDs \*\/.\/\* Vendor IDs \*\/\n#define
USB_VID_FUNUV_TV_TV1520 0x282d.g' -e 's.\/\* Product IDs
\*\/.\/\* Product IDs \*\/\n#define USB_PID_FUNUV_TV_TV1520
0x0608.g' -i include/media/dvb-usb-ids.h
sed
's.RTL2832U devices: \*\/.RTL2832U devices: \*\/\n {
DVB_USB_DEVICE(USB_VID_FUNUV_TV_TV1520,
USB_PID_FUNUV_TV_TV1520,\&rtl28xxu_props, "Funuv TV TV1520", NULL)
},.g' -i drivers/media/usb/dvb-usb-v2/rtl28xxu.c
….}
設定編譯用的CPU核心數
找到 make all 改成
make all -j[CPU核心數]
例如:
make all -j8
借用 archlinux 打包系統
#makepkg -C
如果要在指定地點編譯
#BUILDDIR=/dev/shm makepkg -C
執行直到卡住
4.準備編譯 module 設定
#cd src/linux-6.5.5
#make mrproper
避免錯誤 Skipping BTF generation xxx. due to unavailability of vmlinux
#cp /sys/kernel/btf/vmlinux ./
#zcat /proc/config.gz > .config
#make EXTRAVERSION=-arch1 modules_prepare
#cp /usr/lib/modules/6.5.5-arch1-2/build/Module.symvers ./
檢查 localversion.10-pkgrel
#uname -a
如果是6.5.5-arch-2 但是localversion.10-pkgrel 內容是 -1
把localversion.10-pkgrel內容改成-2
才不會載入module時 dmesg 中出現 version magic error
5. 編譯 module 和 壓縮
#make -j8 M=drivers/media/usb/dvb-usb-v2
壓縮 kernel module
#zstd drivers/media/usb/dvb-usb-v2/dvb-usb-rtl28xxu.ko
7.複製並更新 module 相依列表
#sudo cp drivers/media/usb/dvb-usb-v2/dvb-usb-rtl28xxu.ko.zst /lib/modules/6.5.5-arch1-2/updates/
#sudo depmod
檢查module資料
#modinfo dvb-usb-rtl28xxu
或是插入裝置後以 dmesg 檢查
參考資料:
https://wiki.archlinux.org/title/Compile_kernel_module
https://wiki.archlinux.org/title/Kernel/Arch_build_system
Build modules
--- 2.1 Command Syntax
https://www.kernel.org/doc/Documentation/kbuild/modules.txt
bbswitch 的 PKGBUILD 檔案
https://gitlab.archlinux.org/archlinux/packaging/packages/bbswitch/-/blob/main/PKGBUILD?ref_type=heads
cuda package 的 cuda.installhttps://gitlab.archlinux.org/archlinux/packaging/packages/cuda
沒有留言:
張貼留言