很多虛拟機的Ubuntu18.04的映像的核心版本都非常低,
一般用uname -a 檢視版本
Linux ubuntu-bionic 4.15.0-213-generic #224-Ubuntu SMP Mon Jun 19 13:30:12 UTC 2023 x86_64 x86_64 x86_64 GNU/Linux
也就是核心為4.15版本,而我插入常見飛控硬體使用usb模拟序列槽,并沒有出現/dev/ttyACM0這樣的裝置結點。而我在18.04的桌面機上插入而出現這個裝置結點。
用 uname -r 檢視成功的核心的版本就是
5.4.0-124-generic
比虛拟機自動建立的版本要高。
是以解決無法識别cdc-acm驅動的最好的辦法就是更新核心。
以下均是在低版本ubuntu 核心的操作。
apt-cache search linux | grep linux-image
能使用的image很多,我需要查找那一些generic結尾的image ,這是标準核心的字尾。
我這裡節選一下,其中能用最高版本是 linux-image-5.4.0-99-generic
linux-image-5.4.0-92-generic - Signed kernel image generic
linux-image-5.4.0-92-lowlatency - Signed kernel image lowlatency
linux-image-5.4.0-94-generic - Signed kernel image generic
linux-image-5.4.0-94-lowlatency - Signed kernel image lowlatency
linux-image-5.4.0-96-generic - Signed kernel image generic
linux-image-5.4.0-96-lowlatency - Signed kernel image lowlatency
linux-image-5.4.0-97-generic - Signed kernel image generic
linux-image-5.4.0-97-lowlatency - Signed kernel image lowlatency
linux-image-5.4.0-99-generic - Signed kernel image generic
linux-image-5.4.0-99-lowlatency - Signed kernel image lowlatency
是以在查找這個版本的相關包
apt-cache search linux | grep 5.4.0-99-generic
查找結果節選如下
linux-buildinfo-5.4.0-99-generic - Linux kernel buildinfo for version 5.4.0 on 64 bit x86 SMP
linux-cloud-tools-5.4.0-99-generic - Linux kernel version specific cloud tools for version 5.4.0-99
linux-headers-5.4.0-99-generic - Linux kernel headers for version 5.4.0 on 64 bit x86 SMP
linux-image-5.4.0-99-generic - Signed kernel image generic
linux-image-unsigned-5.4.0-99-generic - Linux kernel image for version 5.4.0 on 64 bit x86 SMP
linux-modules-5.4.0-99-generic - Linux kernel extra modules for version 5.4.0 on 64 bit x86 SMP
linux-modules-extra-5.4.0-99-generic - Linux kernel extra modules for version 5.4.0 on 64 bit x86 SMP
linux-tools-5.4.0-99-generic - Linux kernel version specific tools for version 5.4.0-99
linux-modules-nvidia-390-5.4.0-99-generic - Linux kernel nvidia modules for version 5.4.0-99
linux-modules-nvidia-418-server-5.4.0-99-generic - Linux kernel nvidia modules for version 5.4.0-99
linux-modules-nvidia-450-server-5.4.0-99-generic - Linux kernel nvidia modules for version 5.4.0-99
其中image是核心,modules 是核心動态子產品,headers是頭檔案,tools核心調試工具,我們全部安裝上
sudo apt install linux-image-5.4.0-99-generic linux-headers-5.4.0-99-generic linux-modules-5.4.0-99-generic linux-modules-extra-5.4.0-99-generic linux-tools-5.4.0-99-genericun
安裝後,因為是更新版本,它會自動修改 grub讓其優先引導高版的核心,是以我們隻需重新開機後,再用 uname -r 檢視,核心版本已經更新
$ uname -r
5.4.0-99-generic
解決acm驅動不識别問題
此時找到cdc-acm驅動,可以發現就在modules目錄裡,
/lib/modules$ find . -name cdc-acm*
./5.4.0-99-generic/kernel/drivers/usb/class/cdc-acm.ko
執行安裝指令
modprobe cdc-acm
插入usb就會在系統中出現/dev/ttyACM0結點