1. 从“装完系统第一件事”说起为什么必须学会看硬件信息刚装好 Ubuntu或者从 Windows 双系统切换过来很多人第一件想做的就是确认“我的电脑到底被系统认出了多少”。我遇到过不少朋友装完系统发现无线网卡连不上、显卡驱动装不上第一反应是“Ubuntu 是不是有问题”其实多数时候只是没先看清硬件型号和内核加载状态。这件事本身不复杂但命令散落在系统各个角落不专门整理一遍每次都要现查效率很低。这篇内容就是用来解决“Ubuntu 查看硬件详细信息”这件事的。不管你用的是 22.04 LTS 还是 24.04 LTS不管你是桌面版用户、服务器运维还是搞嵌入式开发经常要确认开发板交叉编译环境的参数只要是 Ubuntu 系系统下面的命令和排查思路基本都适用。我会从最基础的几条命令讲起逐步深入到显卡、磁盘阵列、USB 设备和系统日志级别的问题定位每个命令都会说清楚它的适用场景和输出里哪些字段值得看。适合看这篇内容的人大概有这么几类刚接触 Ubuntu、需要确认驱动是否匹配的新手折腾过虚拟机、双系统、外接设备但总在硬件层面卡壳的用户以及日常维护 Linux 服务器、需要快速核对 CPU 型号、内存条和磁盘组的运维人员。我会尽量把每条命令的输出字段讲明白而不是丢一堆看起来很高深、实际不知道拿来干嘛的选项。2. 工具选型与整体思路先分清楚“系统认识到的”和“物理上存在的”2.1 查看硬件信息前先搞清楚两种信息来源我在实际排查问题的时候习惯把硬件信息分为两大类一类是物理设备本身的信息另一类是操作系统识别到的信息。这两者在正常情况下应该一致但一旦有驱动问题、固件 Bug 或者硬件损坏就会出现“明明插着设备但系统看不到”或者“系统看到了型号但驱动加载失败”的情况。大多数命令行工具的工作方式偏向“读取内核提供的设备树和驱动绑定关系”也就是说它们展示的是系统“眼中”的硬件。如果你需要确认 BIOS/UEFI 固件层面记录的型号、序列号、内存插槽信息那就得靠 dmidecode 这类直接读取 DMI/SMBIOS 数据的工具。这两类工具的差异决定了你在不同场景下应该选哪条命令这个思路先建立起来后面用起来就不会乱。2.2 常用工具一览系统自带的、需要额外安装的怎么选Ubuntu 默认预装的工具里lscpu、lsblk、free、df、lspci、lsusb 这几条命令已经能覆盖八成常见需求。它们来自 util-linux、pciutils、usbutils 这些基础软件包一般不需要额外安装。如果系统是精简版或者容器环境才需要考虑用 apt 手动装一下。需要额外安装的工具有 lshw、dmidecode、inxi、hwinfo、smartmontools 等。其中 lshw 和 inxi 适合生成“一眼看完”的整体报告dmidecode 适合看固件层面的内存和主板信息smartmontools 专门看硬盘健康度。我从经验上建议新手只需要装 inxi 和 smartmontools 就够了lshw 和 hwinfo 输出太啰嗦反而不利于快速定位问题。注意不要一次把所有硬件检测工具都装上。工具越多命令越多反而容易养成“乱试命令”的坏习惯。先掌握系统自带的几条再按需扩展这才是正路。3. 一条一条来系统自带命令的实战详解3.1 用 lscpu 看懂 CPU 型号、架构与虚拟化支持lscpu 是查看 CPU 信息最直接的命令它会从 /proc/cpuinfo 和 sysfs 里汇总数据输出格式比直接看 /proc/cpuinfo 友好太多。在终端里输入 lscpu重点看 Architecture、Model name、CPU(s)、Thread(s) per core、Virtualization 这几行。Architecture 显示 x86_64 说明是 64 位 x86 架构aarch64 说明是 ARM 64 位例如树莓派或者很多开发板跑 Ubuntu 时就是 aarch64。Model name 会显示完整的 CPU 型号例如 Intel(R) Core(TM) i7-10750H CPU 2.60GHz。CPU(s) 是逻辑核总数注意它等于物理核数乘以每核线程数判断物理核要看 Core(s) per socket 和 Socket(s) 这两项的乘积。Virtualization 如果显示 VT-x 或 AMD-V说明硬件虚拟化已开启这个参数对用 KVM、VirtualBox 开虚拟机很重要。我遇到过有人拿 lscpu 的 CPU(s) 数量直接当成核心数结果发现比任务管理器里看到的更多其实这是超线程导致的。你要是装了虚拟机比如 VMware 或 VirtualBox会发现 CPU 信息带有“QEMU Virtual CPU”或者“Common KVM processor”字样这是正常的因为虚拟机看到的是虚拟 CPU。3.2 用 lsblk 和 df 看清磁盘分区与挂载状态磁盘和分区这块我最常用的命令是 lsblk 和 df。lsblk 会以树状结构列出块设备第一列 NAME 显示设备名sda、sdb 这种是物理磁盘nvme0n1 是 NVMe SSDmmcblk0 是 SD 卡或 eMMC。树状层级能直观看出哪个分区属于哪块盘。配合 -f 参数可以看到文件系统类型和 UUID配合 -o 参数可以自定义显示列比如 lsblk -o NAME,SIZE,MODEL,SERIAL 就能看到磁盘型号和序列号。要判断是否是 SSD 还是机械硬盘看 NAME 里是否带 nvme或者配合 /sys/block/设备名/queue/rotational值为 1 表示机械盘值为 0 表示 SSD 或虚拟磁盘。df 则用于查看文件系统占用情况df -h 会用人类可读的单位显示。注意 df 看到的“/dev/sda1”和 lsblk 看到的分区是同一个但 df 还包括 tmpfs、overlay 这类内存文件系统和容器层别把 tmpfs 的占用当成磁盘空间耗尽。热词里有人提到“ubuntu server 24.04 lts 软raid1”如果你用 mdadm 做了软 RAIDlsblk 的输出里会多出 md0、md1 这样的设备它们是多个物理磁盘组成的虚拟块设备。可以用 cat /proc/mdstat 查看阵列状态比如 [UU] 表示两块盘都正常[U_] 表示有一块盘掉线了这是排查 RAID 健康状态的基本命令。3.3 用 free 和 dmidecode 看内存逻辑视图 vs 物理视图free -h 可以快速看内存总量和当前占用这是大多数人的第一反应。但 free 看到的是系统可用内存很多内存被内核和缓存占用了所以显示的总量会低于内存条的标称容量这在有核显的机器上尤其明显。核显会共享一部分系统内存作为显存这部分内存不会被 free 统计到。如果你想确认物理内存条的实际规格、插槽占用情况就需要用到 dmidecode。sudo dmidecode -t memory 会列出每个内存槽的信息重点看 Type、Speed、Size 和 Locator。比如输出里能看到 DDR4、3200 MT/s、16 GB还有 Bank Locator 和 Device Locator 告诉你插在哪个槽里。如果某个槽位显示 No Module Installed说明这个插槽是空的。需要注意dmidecode 读取的是主板固件记录的信息如果内存条是山寨的或者固件信息不完整Speed 和 Manufacturer 可能显示 Unknown这种情况不用太慌能开机运行就没大问题。3.4 用 lspci 和 lsusb 查看 PCIe/USB 设备确认系统到底认出了哪些外设lspci 用来列所有 PCI 总线上的设备包括显卡、网卡、声卡、NVMe 控制器、USB 控制器等。直接运行 lspci 输出会比较长一般建议 lspci -nn 把厂商和设备 ID 也显示出来方便用 ID 查兼容性。要确定哪个设备对应哪个驱动可以用 lspci -k它会把内核驱动也列入输出。举个例子你要查 NVIDIA 显卡可以运行 lspci | grep -i nvidia看到类似 01:00.0 VGA compatible controller: NVIDIA Corporation GA106 [GeForce RTX 3060 Lite Hash Rate] 这样的输出。如果 Kernel driver in use 显示 nvidia说明 NVIDIA 闭源驱动已经正常加载如果显示 nouveau说明现在用的是开源驱动如果没有这行说明没有任何驱动绑定到这个设备这通常是驱动安装失败的信号。lsusb 则用来列 USB 总线上的设备显示 VID:PID 和厂商信息。如果某个 USB 设备没被驱动识别lsusb 里可能还是能看到它但系统日志里会出现一大堆错误。这时候可以加 -t 参数查看 USB 设备拓扑或者用 lsusb -v 查看设备的详细描述符。对于 CH340 这类国产 USB 转串口芯片热词里也有人提到。如果你插上开发板后 /dev/ttyUSB0 没出现先 lsusb 确认是否有 1a86:7523 这个设备这是 CH340 的典型 VID:PID。如果有但没生成 ttyUSB0大概率是内核模块 ch341 没加载可以用 sudo modprobe ch341 手动加载试试。4. 进阶工具与整体报告一条命令看清全局4.1 inxi最推荐的整体信息汇总工具如果你不想一条一条命令敲inxi 是强烈推荐的工具。安装只需 sudo apt install inxi。运行 inxi -Fxz 可以显示 CPU、内存、主板、显卡、磁盘、网络等全部关键信息-x 参数会显示更多细节-z 参数会自动过滤 MAC 地址和序列号等敏感信息这是贴到论坛求助时的标准格式。inxi 的输出结构很清晰比如 CPU 行会直接写 dual core Intel Core i5-8250U (-MT-MCP-) 这样的格式speed/min/max 都会列出来。Graphics 行会显示显卡型号和当前使用的驱动这对快速判断“我到底用的是不是 N 卡闭源驱动”特别有用。Machine 行会显示主板厂商和型号对于需要用 DSDT 或者 BIOS 定制的机器来说很关键。我第一次用 inxi 是在一个求助帖里看到的人家要求贴 inxi -Fxxxrz 的输出当时还觉得这命令有点复杂实际用过一次就回不去了。它的输出可以说是“新手友好、老手够用”的典范。4.2 lshw想输出完整硬件树用它就对了lshw 是另一个整体查看工具全称 list hardware。运行 sudo lshw -short 可以输出一个精简的硬件列表sudo lshw -html 可以生成 HTML 格式的报告。它的特点是把整个设备的父子关系表达得很清楚比如 CPU、内存、主板、PCI 桥、USB 控制器之间的层级关系一目了然。不过 lshw 的输出里包含的字段非常多比如 Firmware、Capacity、Clock 这些直接看会有点晕。我一般只在需要给客户或者文章配图时用 lshw -short 加上-class processor、-class memory、-class disk这样的分类参数来缩小范围。你也可以组合多个 -class比如 sudo lshw -short -class processor -class memory -class disk。4.3 hwinfo 和 hardinfo什么时候用它们更合适hwinfo 是另一个汇总工具但它默认输出更啰嗦甚至会把每个设备的 sysfs 路径、udev 规则、驱动模块全部列出来。在我个人的使用习惯里hwinfo 更适合用来排查“某个设备为什么没被正确识别”因为它的输出里包含了很多内核与 udev 层面的状态信息对驱动调试很有帮助。如果你只是想知道“这台机器什么配置”hwinfo 确实有点杀鸡用牛刀。hardinfo 是带图形界面的工具安装后叫 hardinfo 或者 GNOME System Monitor 里的“系统概览”能看到一部分。它的图形界面里可以逐项查看硬件信息还可以生成基准测试报告。桌面用户如果不想敲命令可以装一个 hardinfo 看看。提示图形工具适合“看得爽”命令行工具适合“查得准”。真到了排查问题的时候我基本都是用终端因为最终要落到驱动和内核的状态上图形界面很少帮你显示出错原因。5. 显卡与驱动检测专项别再被“装不上驱动”折磨5.1 NVIDIA 显卡从 lspci 到 nvidia-smi 的全链路确认热词里“ubuntu查看显卡驱动”出现频率很高说明这是新手重灾区。我按顺序说下排查思路。第一步先用 lspci | grep -i vga 或者 lspci | grep -i 3d 确认显卡型号。3D controller 通常对应 NVIDIA 的独显也就是笔记本上的 “Optimus” 方案中那块独立 GPU。VGA compatible controller 则可能是核显也可能是独显结合设备 ID 可以判断。第二步看当前使用的是哪个驱动。lspci -k 里看 Kernel driver in use 是 nvidia 还是 nouveau。如果你希望使用 NVIDIA 官方闭源驱动但输出的还是 nouveau说明驱动没切换成功。第三步如果 nvidia 驱动已经安装直接运行 nvidia-smi。这条命令会显示驱动版本、CUDA 版本、GPU 温度、显存占用和当前进程。如果你的输出是类似“NVIDIA-SMI has failed because it couldnt communicate with the NVIDIA driver”的报错说明驱动并没有真正加载或者内核模块与当前内核版本不匹配。考虑到 24.04 默认使用内核 6.8如果你是用 apt 安装的 nvidia-driver-535 或更高版本一般没问题。但从 Ubuntu 22.04 升级到 24.04 后老版本驱动比如 470、510经常因为内核接口变更而编译失败这时候最简单的解决办法是用官方提供的ubuntu-drivers install命令自动安装推荐版本而不是手写 apt install 指定版本。5.2 Intel 和 AMD 核显/独显的识别方式Intel 核显在 Ubuntu 下通常无需额外安装闭源驱动系统自带的 i915 内核模块会直接加载。确认方式同样用 lspci -k看到 Kernel driver in use: i915 就说明工作正常。如果要确认当前桌面合成器是否在用硬件加速可以运行 glxinfo | grep renderer输出里有 llvmpipe 说明还在用软件渲染输出里有 Mesa Intel(R) UHD Graphics 之类的字样就说明硬件加速已经启用。AMD 显卡在 Ubuntu 下的情况也类似开源驱动 amdgpu 在 22.04 之后已经很成熟。lspci -k 看到 amdgpu 就说明驱动加载正常。如果你用 Glitch 或者图形花屏先查日志journalctl -k | grep amdgpu看有没有 firmware 加载失败的记录。对于同时有核显和独显的笔记本需要确认当前使用的是哪个 GPU 渲染桌面可以运行 glxinfo | grep OpenGL renderer。如果是 NVIDIA 的“On-Demand”模式应用可以通过 __NV_PRIME_RENDER_OFFLOAD1 环境变量强制调用独显而不是全局切换这个模式会省电很多。5.3 驱动加载失败时怎么从日志里找线索驱动加载失败的典型表现是“设备存在但功能异常”。这时 dmesg 和 journalctl -k 是核心排查工具。dmesg | grep -i -E error|fail|firmware 可以快速过滤错误信息journalctl -k -b 则能查看本次开机以来内核日志的完整内容。无线网卡驱动常见的问题是缺少固件文件日志里会出现类似 iwlwifi 0000:00:14.3: Direct firmware load for iwlwifi-cc-a0-77.ucode failed with error -2 这样的信息意思是内核去加载固件文件却找不到。解决办法是安装 linux-firmware 包sudo apt install linux-firmware重启后一般能解决。声卡推流问题则更多和 PulseAudio/PipeWire 相关虽然不完全是内核驱动范畴但如果日志里看到 sof-audio-pci 报错多半是音频协处理器固件有问题。先更新固件再查用户态服务不要一上来就动 pipewire 配置。6. 实操扩展与常见问题排查实录6.1 笔记本双系统和虚拟机里的“怪现象”在 VMware 或 VirtualBox 里打开 lscpu、lspci会看到 QEMU 或者 VMware 的虚拟设备信息这是正常的不是系统识别错了。云服务器上看到的是 KVM 虚拟 CPU也不是问题。真正的坑是你拿“虚拟机的硬件信息”去对比“宿主机的硬件信息”这就完全不对了虚拟机里的 lscpu 永远只能显示虚拟 CPU 型号而不是宿主机真正的 CPU。双系统用户有时会遇到一种情况在 Ubuntu 里看到电池信息不准确或者亮度调节无效。这多半与 ACPI 表有关可以用 sudo dmidecode -t bios 查看 BIOS 版本再查主板厂商是否有新固件更新。很多“功能缺失”其实都靠升级 BIOS 而不是装驱动解决。有做嵌入式开发的朋友会碰到的场景是开发板挂载 Ubuntu比如通过 USB 网络共享或串口连接。这种情况下lsusb、dmesg 是主要工具。开发板的 USB 设备频繁断开多半是 USB 线材质量或供电不足先在 dmesg 里看有没有“device descriptor read/64, error -71”这类提示再考虑换线换口。6.2 常见问题速查表报错信息与解决方向现象/报错可能的根本原因优先排查方向nvidia-smi 提示无法与驱动通信NVIDIA 内核模块未加载或与当前内核不匹配nvidia-smi、dkms status、journalctl -k无线网卡找不到 WiFi缺少固件或驱动模块未加载lspci -k、dmesg | grep iwlwifilsusb 能看到设备但没有 /dev/ttyUSB0内核模块未加载或 udev 规则缺失lsmod | grep ch341、dmesg | grep usblsblk 里 RAID 阵列显示不正常有盘掉线或重建中cat /proc/mdstat、smartctl -a /dev/sdX内存总量比标称少 1-2 GB核显共享内存或系统保留free -h、dmidecode -t memory图形界面卡顿glxinfo 显示 llvmpipe显卡驱动没启用硬件加速lspci -k、glxinfo、journalctl -k | grep drm声卡不出声sof-audio 报错音频协处理器固件故障dmesg | grep sof、sudo apt install linux-firmware外接显示器不识别显卡驱动对特定输出接口支持不全lspci -k、xrandr、journalctl -k | grep drm这张表能解决大部分日常问题。我个人的习惯是遇到任何硬件异常先跑一遍 dmesg 过滤关键词再结合 lspci/lsusb 看设备有没有被内核发现最后才考虑重装驱动。省时省力而且不会因为乱装驱动把系统搞崩。6.3 一个完整排查案例从“显卡驱动装不上”到“确定问题根因”朋友一台 22.04 系统NVIDIA RTX 3060 显卡一直用开源驱动 nouveau跑机器学习时性能稀烂他想换闭源驱动却总是失败。我到现场后先运行 nvidia-smi提示无法通信再运行 lspci -k发现 Kernel driver in use 还是 nouveau说明闭源驱动模块确实没加载。然后查 dkms status发现 nvidia 驱动模块根本没被注册到任何内核版本下。继续看 journalctl -k | grep -i nvidia发现一堆“Unknown symbol”的编译错误原因是他之前手动编译内核模块时编译器版本和当前 GCC 不一致。解决办法是先 sudo apt install dkms build-essential然后 sudo ubuntu-drivers autoinstall自动安装推荐驱动并注册到 dkms重启后 nvidia-smi 正常显示。整个排查过程只用了几分钟但如果从“盲目卸载重装驱动”开始估计要折腾一下午。这个案例想说明的是Ubuntu 查看硬件详细信息不是目的目的是通过这些信息快速定位配置和驱动问题。先看设备是否被识别再看驱动是否绑定再看模块是否编译成功最后看运行时错误这个顺序永远有效。6.4 关于硬件信息的实用“再加工”监控、验证与自动化除了查看之外硬件信息还能用来做监控和验证。比如通过 sensors 命令可以查看 CPU 和主板温度但它依赖 lm-sensors 包第一次运行 sudo sensors-detect 会生成配置文件。用 watch -n 1 sensors 可以实时刷新温度这对跑长时间编译任务或深度学习任务时很有用。硬盘健康度用 smartctl 查看sudo apt install smartmontools 后执行 sudo smartctl -a /dev/sda重点看 Reallocated_Sector_Ct 和 Current_Pending_Sector。这两个值如果有黄色或者红色数值说明硬盘已经出现坏道建议尽快备份数据。我见过太多人等系统彻底跑不动才想起查硬盘那时候数据已经丢了。如果你想写脚本自动收集硬件信息可以用sudo lshw -json导出 JSON 格式或者解析 lscpu -J、lsblk -J 的 JSON 输出非常适合自动化运维。inxi -Fxz 也可以直接保存为文本文件作为装机记录。7. 我自己在实际操作中的心得用 Ubuntu 看硬件信息这件事说难不难但想用得顺手关键在于建立起“分层排查”的思维先看设备在不在再看系统认不认接着看驱动装没装最后看运行时报不报错。系统自带的 lscpu、lsblk、lspci、lsusb 足够覆盖大部分场景inxi 适合做整体快照dmidecode 适合看固件层信息dmesg 是终极排错神器学会在这几个工具之间切换很多问题都能自己解决。最后分享一个我自己的小习惯每次给新机器装完 Ubuntu我都会顺手执行一条sudo lshw -short ~/hardware-info.txt sudo dmidecode -t memory ~/hardware-info.txt把硬件信息留个底。系统出莫名其妙的问题时这份文件能帮你快速排除“硬件到底正不正常”这个变量少走很多弯路。