新闻详情

新闻详情

首页 / 资讯中心 / 详情

Ubuntu根目录空间不足与无线网卡驱动安装:完整排查与解决链路

发布时间:2026/9/16 20:11:14来源:尧图网络
Ubuntu根目录空间不足与无线网卡驱动安装:完整排查与解决链路
装机这几年我经手过不少 Ubuntu 系统的“疑难杂症”但有两个问题出现频率最高也最容易被新用户和运维一起搞混一个是根目录莫名其妙被塞满另一个是无线网卡不出声不出图但就是连不上 WiFi。很多教程把它们当独立问题处理但实际上一旦你把两块内容放到同一个场景里看会发现它们经常是连环发生的——根目录空间不足 → 装不了驱动编译依赖 → 无线网卡驱动装不上 → 系统彻底没网。这篇文章我就把这条完整的排查链路写清楚从根目录空间的定位、释放、扩容到无线网卡的芯片识别、驱动选型、编译安装和 Secure Boot 排错一次讲完。写这篇的初衷是因为我在帮两台不同型号的笔记本装 Ubuntu 时都卡在了“装无线网卡驱动”这一步。第一台是根分区只有 20G装完系统后 update 一次就爆了apt install build-essential 直接报空间不足第二台是驱动源码编译好了insmod 也成功但重启后模块又没了折腾了一晚上才发现是 Secure Boot 在捣乱。这两个案例正好覆盖了标题里“系统根目录问题”和“无线网卡驱动安装”这两大主题我把完整过程整理出来希望能帮你少走几条弯路。1. 根目录写满的第一现场df、du 与“看不到的文件”很多人遇到系统异常的第一反应是“重启试试”但在 Ubuntu 上如果根分区满了重启后可能直接进不了图形界面甚至在启动阶段就卡在 systemd 的某个服务上。所以你首先要学会的不是怎么清理而是怎么快速判断到底是不是根目录空间的问题。1.1 df 与 du 不一致被删除但仍在占用空间的进程先别急着删文件先执行df -h看分区使用率。如果你看到/这一行显示 Use% 已经到了 100%那基本可以确定是根目录写满了。但这时候有个特别迷惑人的现象你用du -sh /home/*去统计发现所有目录加起来才几个 G跟 df 显示的已用空间完全对不上。这背后的原因通常是有进程正在写入某个文件你把文件删了但进程还握着这个文件描述符没有释放所以磁盘空间不会立刻返还给系统。这种文件在普通的目录扫描里是看不到的因为它已经从目录结构中删除了但在系统看来它“还活着”。排查命令是lsof | grep deleted记得加 sudo它会列出所有“已删除但仍在占用”的文件和进程。找到对应的进程后重启这个服务或者直接 kill 掉空间瞬间就回来了。我遇到过一次 MongoDB 长时间运行导致日志文件被删但空间不释放的情况排查了好几天最后就是靠这条命令定位的。1.2 journal 日志与 snap两个看不见的膨胀点排除掉被占用的删除文件后常见的根目录空间大头还有两个systemd 的 journal 日志和 snap 包。journal 日志默认存在/var/log/journal里你装的系统跑得越久日志越多。查看当前占用journalctl --disk-usage。如果发现有几百 M 甚至几个 G直接清理journalctl --vacuum-size100M这个命令会把日志裁剪到 100M 以内不影响系统当前运行只删除旧日志。更彻底一点的做法是编辑/etc/systemd/journald.conf把SystemMaxUse50M的注释去掉并设一个上限防止它以后再膨胀。snap 的问题更隐蔽。你用du -sh /var/lib/snapd看能占用好几个 G但你打开“软件中心”看装的软件也没几个。这是因为 snap 包会把旧版本全部保留在/var/lib/snapd/snaps里新版一发布系统自动更新后旧版不删除。清理命令是snap list --all看带disabled字样的版本然后逐个sudo snap remove 软件名 --revision 对应版本号。嫌手动麻烦的话也可以直接写个脚本定期清理不过我觉得手动处理更稳妥至少你能知道自己在删什么。注意/var/log固定是根目录的一部分/var不要单独挂载到独立分区的话。但如果你当初分区时把/var或/home独立出来了那“根目录满”的可能性和原因会完全不同先确认自己的分区方案再动手。2. 无线网卡驱动的识别与选型先搞清楚你的网卡是什么网上教 Ubuntu 装无线网卡驱动的教程很多但一多半都默认你的网卡是 Realtek 或者 Broadcom。实际碰到 Intel 的无线网卡大多数情况是开箱即用的你折腾半天驱动反而把系统搞挂。所以第一步永远是识别硬件而不是搜“Ubuntu 无线网卡安装通用教程”。2.1 两条命令识别硬件型号打开终端执行下面两条命令之一lspci -nn | grep -i network lspci -nn | grep -i wireless如果你的无线网卡是 USB 接口的外置网卡用lsusb看输出结果。比如Network controller [0280]: Intel Corporation Wireless 8265 / 8275 [8086:24fd]说明是 Intel 8265 无线网卡如果是Realtek Semiconductor Co., Ltd. RTL8821CE [10ec:c821]那多半就是要额外装驱动的型号了。把厂商、型号、芯片编号这三位信息记录下来后面找驱动全靠它们。这里有个容易踩坑的点有些 Intel 网卡在 lspci 里显示的是PROSet/Wireless或类似名字你以为是专用硬件其实它就是普通 Intel 无线网卡。别被名字唬住重点看前面的[8086:xxxx]8086 是 Intel 的 PCI vendor ID只要看到 8086直接试一下系统能否识别不需要急着装第三方驱动。2.2 驱动来源分类内核内置、闭源驱动、DKMS识别完型号接下来就是选型问题。Linux 下的网卡驱动来源分三类内核内置驱动大多数 Intel 网卡和部分 Atheros 网卡驱动代码已经编译进内核装完系统就能用。你不需要做任何事顶多是装一个linux-firmware补全固件文件。系统软件源里的闭源驱动Ubuntu 把一些常见的 Broadcom 和 Realtek 驱动做成了 deb 包比如bcmwl-kernel-source、rtl8821ce-dkms直接用 apt 安装即可。这类驱动本质上还是第三方写的但已经帮你打包好省去手动编译的麻烦。源码编译安装DKMS 方式厂商或者开源社区提供了驱动源码但官方仓库里没有现成包。你需要先装好编译工具链然后把源码克隆下来用make sudo make install编译安装。这里强烈建议用 DKMS 方式注册驱动而不是直接make install因为后者在升级内核后模块会丢失需要重新编译DKMS 会在每次内核升级时自动重建模块省心得多。2.3 驱动装不上有时不怪网卡怪“固件缺失”还有一个特别容易被忽略的情况驱动模块已经加载成功了但网卡还是没有工作查dmesg发现报firmware: failed to load iwlwifi-8265-36.ucode。这说明驱动在等一个固件文件但你系统里没有。解决办法是安装linux-firmware包sudo apt install linux-firmware这个包里收纳了几乎所有常见网卡的微码固件安装后重启就能解决大部分“驱动已加载但设备不工作”的问题。尤其是新内核版本配新网卡硬件时系统自带的固件版本可能比较老更新linux-firmware往往比装第三方驱动更有效。3. 编译环境与根目录空间装驱动前的一道隐形门槛现在讲回开头那个“连环套”你识别好网卡型号准备编译驱动了结果apt install dkms build-essential linux-headers-$(uname -r)这一行命令直接给你报E: You dont have enough free space in /var/cache/apt/archives/。这事我遇到过不止一次。之前在帮同事处理一台只分了 16G 根分区的电脑时装一个 dkms 需要把它以及依赖的 gcc、make、linux-headers 全下载下来大小在 800M 到 1G 左右。如果系统原来的空闲空间已经不足 1G等待你的就是这条报错。3.1 build-essential、dkms 与 linux-headers 的依赖链先解释一下这三个包分别是干什么的build-essential包含 gcc、g、make、dpkg-dev 等编译工具。几乎所有源码编译都依赖它。dkmsDynamic Kernel Module Support帮你管理内核模块的重建和安装。linux-headers-$(uname -r)内核头文件。编译内核模块时必须用到它提供了内核接口的声明。注意这里的$(uname -r)是变量会替换成当前运行的内核版本号比如6.8.0-38-generic。如果你装的是 HWE 内核Hardware Enablement Kernel那linux-headers的包名可能是linux-headers-generic-hwe-22.04不带具体版本号。这时候用uname -r指定的名字会提示找不到包改用下面这条来装sudo apt install --install-recommends linux-generic-hwe-22.04或者直接查询当前内核对应的 headers 包apt search linux-headers-$(uname -r)有输出说明能直接装没有输出就去查系统里已装的内核 image 包名dpkg -l | grep linux-image然后装对应版本的 headers 包。3.2 空间不够时 apt install 直接报错怎么办真出现空间不够不能硬着头皮继续。先释放空间再回来装依赖。释放空间的最快路径按优先级排序如下清 apt 缓存sudo apt clean这个命令会清空/var/cache/apt/archives里的所有 deb 包空间立刻释放出来。缺点就是以后再装软件需要重新下载但这正是你要的紧急情况处理手段。清理多余内核dpkg -l | grep linux-image查看已安装的内核然后uname -r看当前正在用哪个。把旧内核sudo apt purge linux-image-旧版本号删掉能释放出 200M~500M 空间而且一般不影响稳定性因为当前内核不受影响。journal 日志瘦身按前面说过的journalctl --vacuum-size100M处理。如果这些做完还是不够那就得考虑扩容或者把/home下的个人文件先移到其他分区了这个我在第六节详细说。反正不建议在根目录满的情况下强行编译驱动编译中途磁盘满导致半成品文件损坏反而更麻烦。经验之谈新装 Ubuntu 时如果打算使用第三方无线网卡驱动或 NVIDIA 驱动根分区至少留 15G 到 20G。很多官方安装教程建议 10G 就够了这是按最小化安装算的实际跑一段时间系统更新、日志增长、驱动编译10G 真的不够。4. 常见网卡芯片的驱动安装实录空间腾出来、依赖装好之后真正的驱动安装反而没什么玄学了。我按最常见的三种芯片方案分别介绍你照着对应自己的型号操作就行。4.1 Intel 网卡多数情况下什么都不用装先说实话目前绝大多数 ThinkPad、Dell、HP 笔记本原装的 Intel 无线网卡在 Ubuntu 上都是开箱即用的。你装完系统打开设置里的 Wi-Fi 列表直接就能看到附近的无线网络。如果你的 Intel 网卡没有工作先别急着编译驱动按顺序排查# 检查内核模块是否加载 lsmod | grep iwl # 检查设备是否被系统识别 lspci -nn | grep Network # 检查固件是否缺失 dmesg | grep -i firmware | grep iwlwifi如果lsmod里没有 iwlwifi尝试手动加载sudo modprobe iwlwifi如果dmesg报固件加载失败执行我上面说过的sudo apt install linux-firmware然后重启。Intel 网卡 90% 的问题都能靠更新固件解决不需要也不建议动驱动源码。4.2 Realtek 无线网卡以 rtl8821ce 为例走一遍 DKMS 流程Realtek 的网卡是 Linux 用户的老大难。常见型号包括 RTL8821CE、RTL8822CE、RTL8852BE、RTL8111/8168 有线网卡等。这些网卡很多驱动没有合入内核主线只能靠外部 DKMS 包或者编译源码。以rtl8821ce为例标准流程如下# 1. 安装编译依赖和 dkms sudo apt update sudo apt install -y dkms build-essential bc linux-headers-$(uname -r) # 2. 从 GitHub 克隆驱动源码各家维护版本大同小异认准带 DKMS 支持就行 git clone https://github.com/tomaspinho/rtl8821ce.git cd rtl8821ce # 3. 直接执行自带的安装脚本 chmod x dkms-install.sh sudo ./dkms-install.sh # 4. 加载模块 sudo modprobe 8821ce这里的dkms-install.sh会完成把源码注册进 DKMS、编译、安装三步。如果你不放心脚本也可以手动执行sudo dkms add . sudo dkms build -m rtl8821ce -v 1.0.5 sudo dkms install -m rtl8821ce -v 1.0.5注意版本号要和你克隆的源码对应可以先用dkms status查看。编译过程中最常碰到的报错是缺少某个头文件比如fatal error: generated/autoconf.h: No such file or directory。这就是 linux-headers 没装对或者当前运行的和你安装的 headers 版本不一致。重新执行一遍sudo apt install linux-headers-$(uname -r)就能解决。4.3 Broadcom 网卡bcmwl-kernel-source 与 Secure Boot 签名Broadcom 的无线网卡在 MacBook 和部分老款戴尔上很常见。Ubuntu 软件源里提供了bcmwl-kernel-source这个包安装很简单sudo apt install bcmwl-kernel-source sudo modprobe wl但这里有个非常典型的坑如果你的 BIOS 开启了 Secure Boot安装完这个包后内核模块wl.ko因为未被签名会在加载时被拒绝。你会看到dmesg报Lockdown: insmod: unsigned module loading is restricted; see man kernel_lockdown.7或者Secure Boot not enabled之类的提示。这时候有两个选择选择一推荐在 BIOS 里关闭 Secure Boot。这个方法最直接一了百了。注意不同品牌的 BIOS 入口不一样一般是开机按 F2/F10/Del 进入 Setup找到 Boot 或 Security 菜单里的 Secure Boot 选项设为 Disabled。选择二给模块做 MOK 签名让 Secure Boot 放行。适合你的设备有特殊要求不能关闭 Secure Boot 的情况步骤稍微复杂一些。如果你只是想尽快让 WiFi 能用我会明确告诉你先关 Secure Boot装完驱动、确认一切正常后再决定要不要重新开启并签名。不少电脑关闭 Secure Boot 后进 Ubuntu 完全无感开机速度也没有明显差异。5. Secure Boot 导致驱动模块加载失败排错链路上面提到 Secure Boot 这个问题值得单独写一节因为它是“模块装好了但系统不认”的第一大元凶。很多人卡在这一步一晚上就是因为没往签名方向想。5.1 “模块已安装但 iwconfig 看不到设备”的完整排查顺序你的网卡驱动编译成功、DKMS 注册成功但重启后ip a里看不到 wlan0无线网卡就是不出现。这时候按顺序执行下面几条命令排查# 1. 看内核模块是否被加载 lsmod | grep 模块名 # 2. 如果没加载手动加载看看报什么错 sudo modprobe 模块名 # 3. 如果 modprobe 报错,看详细日志 dmesg | tail -50我在 rtl8821ce 上遇到的报错是modprobe: ERROR: could not insert 8821ce: Required key not available这句话的潜台词是模块文件没问题但内核拒绝加载因为 Secure Boot 开启了而模块没有合法签名。解决办法就是我说的要么关 Secure Boot要么做 MOK 签名。5.2 MOK 签名与关闭 Secure Boot 的真正区别MOKMachine Owner Key签名的流程是你用 shim 签名的工具给模块文件加上自己的密钥然后把这个密钥注册到 UEFI 固件里Secure Boot 就会信任这个模块。具体步骤我简单演示一遍但说实话除非工作场景强制要求 Secure Boot 开启否则我不推荐为了装一个网卡驱动走这条路# 1. 安装签名工具 sudo apt install mokutil shim-signed # 2. 生成密钥如果还没有 openssl req -new -x509 -newkey rsa:2048 -keyout MOK.priv -outform DER -out MOK.der -nodes -days 36500 -subj /CNMy Custom Key/ # 3. 给模块签名 sudo /usr/src/linux-headers-$(uname -r)/scripts/sign-file sha256 MOK.priv MOK.der /usr/lib/modules/$(uname -r)/updates/dkms/模块名.ko # 4. 注册密钥到 MOK sudo mokutil --import MOK.der执行到最后一步后重启系统会进入一个蓝色界面MOK management按提示选择 Enroll key确认导入你生成的密钥完成后重启。这个流程每一步都有玄机比如密钥格式必须是 DER、模块路径要精确、签名后还要再depmod -a刷新模块依赖。如果哪步出错了很容易绕进更深的坑。所以我个人判断没有强需求的话直接在 BIOS 关掉 Secure Boot 最省事。提示如果你是在虚拟机上装的 UbuntuSecure Boot 不会阻断 insmod因为虚拟机的 UEFI 固件实现通常不严格。但虚拟机里的无线网卡根本就是虚拟出来的驱动大概率由虚拟化平台提供跟宿主机硬件驱动是两码事。别拿着虚拟机里的现象去套物理机。6. 根目录空间紧张时的扩容操作记录回到文章开头说的那个问题如果根分区只剩 2G 空间而你需要装的驱动依赖至少 1G这时候清理日志和缓存已经不能解决问题了留给你的选项只有扩容。6.1 扩容前必做的备份与分区确认先说明我这里的扩容方案针对的是物理机或虚拟机上根分区后面还有可用的未分配空间的情况。如果你当初分配磁盘时把整个磁盘都划分完了那扩容的逻辑就不一样需要缩容前面分区或者加新盘不在这篇文章的讨论范围内。扩容前的准备工作三件事备份重要数据扩容分区虽然标称“无损”但谁也不敢保证断电、意外中断不会出问题。关键数据先备份到外部存储或另一台机器。确认分区表类型执行lsblk -f看根分区的分区表格式。现在绝大多数新机器都是 GPT老机器可能是 MBR。GPT 和 MBR 的扩容细节略有不同工具通用。确认根分区是否 LVM执行lsblk看 Name 列有没有出现类似vg-root的 LVM 卷名。如果当初装系统时开启了 LVMUbuntu 桌面版安装器可以选“使用 LVM”那扩容底层结构和普通分区完全不同。Linux 下的 LVM、分区表、文件系统扩容是独立的三层概念很多人容易搞混。简单理解分区表告诉系统“磁盘上第几块区域分给谁”文件系统是在这个区域上“怎么组织文件”。扩容 先在分区表里把区域变大再让文件系统感知到并自动扩展到新边界。6.2 GParted Live 无损扩容实例我最常用的扩容工具是 GParted Live它是个独立的 Linux 系统可以从 U 盘启动。这样你在扩容时目标分区没有被挂载文件系统操作最安全。流程如下做好 GParted Live 启动 U 盘重启电脑从 U 盘引导。在图形界面里选中你要扩容的磁盘先卸载根分区右键 → Unmount。如果根分区后面有未分配空间直接右键根分区 → Resize/Move把 New size 拉大确认后点 Apply。等待进度条跑完关机拔出 U 盘重启进 Ubuntu。关键点在于第 3 步如果根分区后面紧跟着 swap 分区或者其他分区你需要先把它们挪走腾出空间。在 GParted 里操作其实是左键拖拽分区块先把后面的分区往右挪再把根分区的右边界往右拖。挪动 swap 分区要注意它可能正在使用在 GParted Live 里内存足够时 swap off 就行操作顺序别反了。等扩容完成回到 Ubuntu 里执行df -h确认根目录大小已经变化。如果没变可能是分区表已经变了但文件系统没有相应的 grow 命令自动执行这时候手动执行sudo resize2fs /dev/根分区设备名这条命令会在不损坏数据的前提下把文件系统扩展到分区的大小。6.3 一次扩容后重新引导的完整检查扩容完了不等于万事大吉我建议按这个清单检查一遍df -h确认根目录可用空间大幅增加mount | grep / 确认根分区仍以 rw 模式挂载而不是因为异常变成了 rosudo blkid | grep 根分区确认分区的 UUID 没变网络配置是否正常尤其是如果根分区曾经满到导致 NetworkManager 状态文件写入失败可能需要重启网络服务回忆一下曾经有个案例扩容完成后重启系统一直卡在 initrd 阶段后来发现是 grub 配置里的根分区 UUID 没变但因为我在 GParted 里移动过前面的分区导致内核找盘时按设备名/dev/sda2来找而 SATA 设备名在这次启动中变成了/dev/sdb2。所以如果你也动了分区顺序建议编辑/etc/fstab和 grub 配置把设备名改成 UUID 引用。7. 处理这两个问题的先后顺序建议如果你现在同时遇到根目录空间不足和无线网卡驱动装不上的问题我的建议永远是先解决空间再解决驱动。因为驱动编译这个过程非常吃磁盘资源你没有足够的临时空间即使勉强编译模块安装也可能一半成功一半失败最后留下的疑难杂症更难排查。具体执行顺序用df -h和du -sh /* 2/dev/null | sort -hr | head -20快速定位空间大头执行日志清理、apt 缓存清理、snap 旧版本清理这三板斧如果空间还是紧张做分区扩容空间充足后安装build-essential dkms linux-headers-$(uname -r)确认依赖完整识别网卡芯片型号按对应方案装驱动确认模块加载、WiFi 正常工作后再手动重启一遍系统验证 DKMS 是否真的在内核升级后也会自动重建经过这一套动作下来根目录不再告急无线网卡也能稳定连接了。其实这两个问题本身都不难难的是它们纠缠在一起时的判断和取舍。我遇到的大部分“折腾一晚上 Linux 没搞定网卡”的求助最后定位到根上全是空间不足导致的半路失败。希望这篇文章的排错链路能帮你省下这个晚上的时间也欢迎有类似经历的朋友在评论区交流你遇到过的奇葩问题点赞多的话我下篇写写 Ubuntu 双系统引导顺序和 GRUB 修复那点事。
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

深入 Chainlink 核心 Mailbox 模式与 EVM 数据流:从区块头到业务服务的事件通路 2026/9/16 20:53:23

深入 Chainlink 核心 Mailbox 模式与 EVM 数据流:从区块头到业务服务的事件通路

深入 Chainlink 核心 Mailbox 模式与 EVM 数据流:从区块头到业务服务的事件通路 【免费下载链接】chainlink node of the decentralized oracle network, bridging on and off-chain computation 项目地址: https://gitcode.com/GitHub_Trending/ch/chainlink …

阅读更多 →
WebCodecs实战:浏览器高清录屏并直接导出MP4的完整方案 2026/9/16 20:53:23

WebCodecs实战:浏览器高清录屏并直接导出MP4的完整方案

过去很长一段时间,想在浏览器里做“高清录屏”并且直接导出 MP4,几乎是一件让人头疼的事。主流的方案绕不开 MediaRecorder,但 MediaRecorder 在浏览器里通常只能封装成 WebM,想要 MP4 就得二次转封装,要么丢到服务端用…

阅读更多 →
OpenXCAP not yet configured?TaoToken 这样给 Codex 换通道再排查 2026/9/16 20:53:23

OpenXCAP not yet configured?TaoToken 这样给 Codex 换通道再排查

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →
mcp-agent OAuth 预授权实战:用 `workflows-store-credentials` 为异步工作流预置凭据 2026/9/16 20:53:23

mcp-agent OAuth 预授权实战:用 `workflows-store-credentials` 为异步工作流预置凭据

mcp-agent OAuth 预授权实战:用 workflows-store-credentials 为异步工作流预置凭据 【免费下载链接】mcp-agent Build effective agents using Model Context Protocol and simple workflow patterns 项目地址: https://gitcode.com/GitHub_Trending/mc/mcp-agen…

阅读更多 →
前端校验与后端校验的区别:为什么后端校验是安全底线? 2026/9/16 20:53:23

前端校验与后端校验的区别:为什么后端校验是安全底线?

1. 一次“改价支付”事故,让我重新审视校验问题前阵子一个做电商的朋友找我排查线上问题,说有人用一张满100减30的优惠券,买走了标价1200块钱的商品,最后实付金额是个诡异的小数。查了半天,突破口居然在一行只有前端校…

阅读更多 →
scrapy作业 2026/9/16 20:50:22

scrapy作业

一.安装anacondavscode开发环境 这里的anaconda我选择的是3.9.25版本(注:最新版本的anaconda需要用python3.10以上的版本),比较老旧的windows可以选择2020年以前的anaconda anaconda下载链接:Index of /archive vsco…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞