我有一个5.10.0-11-cloud-amd64
内核和 debian 11.2
。
内核已被定制为云服务器,其中一项定制是删除usbip默认安装的驱动程序。
我尝试从以下位置安装驱动程序源锻造,linux 存储库 torvalds和vhci-hcd但每次都会出现与 Makefile 相关的错误。
如何安装usbip这种情况下的司机?会复制.ko文件工作吗?
答案1
包括/boot/config-5.10.0-cloud-amd64
这一行:
# CONFIG_USB_SUPPORT is not set
Debian 11.x 内核的变-cloud-amd64
体有其整个 USB 子系统被禁用,而不仅仅是它的 usbip 部分,因此仅编译vhci-hcd.ko
和usbip-core.ko
内核模块是不够的。您必须将整个 USB 子系统重建为第三方模块,这将非常棘手。
您的问题的答案将取决于您的云提供商:如果他们仅强制使用特定的内核版本,并且可用内核列表不包括支持 USB 的内核(可能是出于安全原因?),那么您将被淘汰运气。
如果您的云提供商不限制您对内核的选择,并且在为您的云 VM 选择内核时不需要特定于提供商的特殊步骤,则选择 Debian 内核的标准非云 amd64 风格的一般方法是:
apt install linux-image-amd64
这将自动安装最新的非云 Debian 11.x amd64 内核映像(linux-image-5.10.0-12-amd64
撰写本文时)。然后,您应该grub-set-default
将其设置为引导的默认内核(您可能需要参考/boot/grub/grub.cfg
以查找新内核的引导条目号或菜单项标题/标识符)。然后您应该重新启动云虚拟机以激活新内核。
当新内核成功运行时,您可能应该删除导致自动安装云内核的元包,因为云内核不适合您的用例:
apt purge linux-image-cloud-amd64
Amazon EC2 似乎可以使用自定义内核无需特殊步骤。
这意味着您可以使用包管理器安装常规(非云)版本的 Debian 11.x 内核包,将其设置为引导加载程序的默认值(很可能通过使用grub-set-default
),然后重新启动您的云虚拟机以使用它。这将使得usbip
无需构建任何模块即可使用。
天青也似乎允许以正常方式更新 Linux 云虚拟机的内核。这些说明适用于 CentOS/RHEL,但其中缺乏任何特定于云的内容表明应该可以像往常一样为 Debian 切换内核,与上面的 Amazon EC2 基本相同。
谷歌云记录其云环境所需和推荐的最小内核选项集因此切换到非默认内核显然是可能的。更新现有云虚拟机的内核似乎不需要任何特殊步骤(只要它启用了所需的内核选项,我很确定所有 Debian 默认非云内核包都会这样做),所以所需的步骤似乎与常规物理 Debian 主机或上述 Amazon EC2 VM 没有什么不同。
对于 DigitalOcean“droplet”VM,您首先必须确保虚拟机使用“内部管理”内核,并在必要时切换到该内核。之后,选择内核的标准 Debian 程序应该可以正常工作。
答案2
你可以建立usbip
从源头。启用源存储库,/etc/apt/sources.list
然后运行以下命令。
sudo apt install apt-src
sudo apt-src update
sudo apt-src install usbip
sudo apt-src --build install usbip