问题描述
我最近遇到了一个问题,我的新 HP 15s-fq2001ni 笔记本电脑有一个 Realtek RTL8821CE-M wifi 网卡。 我想在笔记本电脑上安装 Ubuntu,所以我下载了最新的 ubuntu 20.10 iso 映像,并使用 Rufus 将 iso 映像写入运行 Windows 的旧戴尔笔记本电脑上的 USB 记忆棒。 我在惠普笔记本电脑上安装了新的 Ubuntu 操作系统后,发现网卡不工作。 经过一番谷歌搜索,我发现 RTL8821CE wifi NIC 是相当新的,并且发行版没有为该 NIC 内置驱动程序的内核。
我发现驱动是为网卡写的,可以在这里找到:https://github.com/tomaspinho/rtl8821ce
松了口气,我下载了驱动源,用U盘复制到惠普笔记本电脑上。 坏消息 - 我在 HP 笔记本电脑上提取源代码的目录中运行 make,但我看到没有安装 gcc。 apt-get install gcc 当然失败了,因为惠普笔记本电脑没有网卡就无法连接到互联网。 另外驱动需要DKMS来安装内核模块(同样不能用apt下载)。
更多的坏消息,只是通过 USB 复制 gcc 的相关 .deb 文件不起作用,因为有太多的依赖项,我会花几个小时迭代一个令人沮丧的过程,看到 HP 缺少一个库,下载它在戴尔笔记本电脑上,将其复制到 USB,然后将 USB 移动到 HP,并使用“dpkg -i”安装 .deb 文件,却发现它依赖于我没有的另一个库(这就是像 apt 这样的包管理器被发明的原因)
接下来我尝试使用 apt-mirror 将整个 ubuntu 存储库(下载 106 GB)镜像到外部硬盘驱动器上硬盘。然后我将外部硬盘安装在惠普笔记本电脑上并更改 /etc/apt/sources.list 以将外部硬盘上的包视为存储库..
deb 文件:/media/[user]/mirror
这不起作用,因为事实证明 apt-mirror 中存在错误,导致它无法下载构建完整镜像所需的所有文件。 我尝试修复 apt-mirror 代码,该代码在一定程度上有效,但错误太多,花了我太长时间,我想知道是否有更简单的方法......?
解决方法
这么多天下来,我终于找到了解决方案:
- 在 HP 笔记本电脑上安装 ubuntu
- 在启动 Ubuntu iso 映像时使用“Try Ubuntu”实时选项在另一台戴尔笔记本电脑上启动 ubuntu 的实时实例
- 在第二台戴尔笔记本电脑上的这个实时 Ubuntu 实例上安装外部硬盘
- 将驱动源代码下载到外置硬盘
- 在第二台戴尔笔记本电脑上的这个实时 Ubuntu 实例上安装 GCC 和 DKMS
sudo apt-get install gcc sudo apt-get install dkms
- 将
/usr
(包含编译的 GCC 和 dkms 二进制文件)从第二台戴尔笔记本电脑上的这个实时 Ubuntu 实例复制到外部硬盘 - 在启动 Ubuntu iso 映像时使用“Try Ubuntu”实时选项在新的 HP 笔记本电脑上启动 ubuntu 的实时实例
- 在 Ubuntu 实时实例上的 HP 笔记本电脑上安装外部硬盘
(即使笔记本电脑已经在其内部硬盘上安装了 Ubuntu -
您需要这样做,因为当安装的 Ubuntu 版本时,您无法覆盖
/usr
中的文件 正在运行,因为它们将被使用) - 在 Ubuntu 的实时实例上安装 HP 笔记本电脑的内置硬盘
- 将外部硬盘上
/usr
的内容复制到惠普内部硬盘 - 重新启动 HP 并启动到内部硬盘驱动器上已安装的 Ubuntu 实例(移除 USB 启动媒体后)
- 在 HP 上已安装的 Ubuntu 实例上安装外部硬盘
- 在外部硬盘上的网络驱动程序源代码目录中,使用“make”编译驱动程序源代码(使用步骤 10 中复制的 GCC 二进制文件)
- 使用“make install”(使用 dkms)安装内核驱动模块
- NIC 出现,您可以连接到 wifi