Lshw是一个Linux命令行工具,用于查找计算机/服务器已安装硬件的信息。Lshw可以报告主板/主板、CPU、内存、磁盘、PCIE、USB等硬件信息。
Lshw在所有Linux发行版上都可用。因此,您可以使用相同的工具查找每个Linux发行版所需的硬件信息。
在本文中,我们将向您展示如何在流行的Linux发行版上安装lshw,并使用它来查找硬件信息。
内容主题:
- 在Ubuntu/Debian/Linux Mint/Kali Linux上安装Lshw
- 在Fedora/RHEL/AlmaLinux/Rocky Linux/CentOS Stream上安装Lshw
- 使用Lshw列出可用硬件
- 使用硬件类过滤Lshw输出
- 使用Lshw查找详细的硬件信息
- 从Lshw输出隐藏敏感信息
- 显示PCIe和USB设备的数字ID
- 从Lshw输出中删除易失性时间戳
- 使用Lshw导出硬件信息
- 示例1:使用Lshw查找计算机/服务器安装的GPU
- 示例2:使用Lshw查找网络设备/接口的前缀
- 结论
- 参考文献
在Ubuntu/Debian/Linux Mint/Kali Linux上安装Lshw
Lshw可以在Ubuntu/Debian/Linux Mint/Kali Linux的官方软件包存储库中找到。因此,您可以在您的计算机/服务器上轻松安装它。
首先,使用以下命令更新APT包存储库缓存:
$sudo apt更新
要安装lshw,请运行以下命令:
$sudo apt安装-y lshw
Lshw应该安装在您的Ubuntu/Debian/Linux Mint/Kali Linux系统上。
在Fedora/RHEL/AlmaLinux/Rocky Linux/CentOS Stream上安装Lshw
Lshw可以在Fedora/RHEL/AlmaLinux/Rocky Linux/CentOS Stream的官方软件包仓库中找到。因此,您可以在您的计算机/服务器上轻松安装它。
首先,使用以下命令更新DNF包存储库缓存:
$sudo dnf makecache
要安装lshw,请运行以下命令:
$sudo dnf install lshw
要确认安装,请按"Y",然后按。
Lshw应该安装在Fedora/RHEL/AlmaLinux/Rocky Linux/CentOS流系统上。
使用Lshw列出可用硬件
您可以使用lshw列出计算机/服务器的所有可用硬件,如下所示:
$sudo lshw—短
您的计算机/服务器的所有可用硬件应以良好的格式列出。
您可以在这里找到以下信息:
- H/W路径:这是安装在计算机/服务器上的硬件的物理路径。这里,/0是主板,/0/100是处理器(连接到主板),/0/100/是连接到处理器通道的硬件,依此类推。
- 设备:这是内核分配的硬件名称/标识符。最常见的例子是网络设备的设备名称/标识符,如enp38s0、enp39s0等。
- 类:计算机/服务器的所有硬件都属于某个组/类。例如,网络设备分组在网络类中,存储设备分组在存储类中,等等,硬件类可以用来过滤lshw的输出。
- 描述:这是对各自硬件的简短描述。
如果您想查看硬件的总线信息,而不是硬件路径(硬件路径),请运行lshw命令,如下所示:
$sudo lshw—businfo
如您所见,第一列现在显示硬件的总线信息,而不是硬件路径。
不同硬件的总线信息会以不同的格式显示信息:
- CPU:CPU的总线ID将在CPU @中,例如CPU cpu@0(在我的情况下是AMD Ryzen 9 3900X处理器)的ID为0。在大多数台式计算机和笔记本电脑上,您将只有一个处理器和一个CPU条目,即“cpu@0”。
- PCIe设备:PCIe设备的总线ID将位于pci@::中。这个号码也叫号码。例如,PCIe设备pci@0000:26:00.0(在我们的示例中为I211千兆网络设备)具有域0000、总线26、插槽/设备00和功能0。ID号是十六进制的,并用零填充。
- SCSI设备:SCSI存储设备的总线ID将在scsi @:..中,例如,scsi@1:0.0.0是一个SCSI/SATA存储设备,它有控制器1、目标0、id 0、lun 0,并且没有分区。如果SCSI/SATA存储设备有分区,总线ID将是scsi@1:0.0.0,1用于第一个分区,scsi@1:0.0.0,2用于第二个分区,scsi@1:0.0.0,3用于第三个分区,以此类推。
- USB设备:USB存储设备的总线ID将在usb @:中。例如,usb@3:6.3是一个具有控制器3、插槽6和id 3的USB设备。usb@3:1是一个具有控制器3和插槽1的USB设备。
使用硬件类过滤Lshw输出
lshw为每个硬件设备分配一个类。您可以过滤"lshw"命令的输出,以仅包含使用这些类名的特定类型的硬件。
可用的lshw硬件类别包括:
- 系统:系统的主板和即插即用设备。
- 网桥:内部总线设备,如PCIE、主桥等。
- 内存:BIOS、RAM、ROM、CPU缓存、固件等存储设备。
- 处理器:计算机和SCSI RAID控制器的处理器。
- 地址:扩展ROM和视频的存储地址。
- 存储:SCSI和IDE控制器。
- 硬盘:硬盘、固态硬盘、NVMe固态硬盘、CD-ROM、DVD等随机存取存储设备。
- 卷:磁盘/存储设备的分区。
- 磁带:顺序存取存储设备,如DAT、DDS等。
- 总线:连接USB、SCSI、火线等总线的设备。
- 网络:以太网、WiFi等网络接口。
- 显示:像您的GPU一样的显示设备。
- 输入:输入设备,如键盘,鼠标,HDMI/DP端口,高清音频端口,电源按钮,PC扬声器等。
- 打印机:打印设备,即打印机。
- 多媒体:视频卡(GPU)、声卡、电视输出卡等音视频设备。
- 通信:蓝牙等通信设备。
- 电源:电源(PSU)、内置电池等能源。
- 通用:无法分类的设备。
并不是所有的计算机/服务器都安装了所有类型的硬件。因此,要查找您的计算机/服务器拥有的硬件类别,我们建议您使用"—short"或"—businfo"选项运行"lshw"命令。
$sudo lshw—短
$sudo lshw—businfo
要过滤"lshw"命令的输出,以仅显示特定类型的硬件(即存储设备),请使用"—class"选项如下:
$sudo lshw-bus info类磁盘
或
$sudo lshw-短类磁盘
如您所见,lshw只列出了我们计算机上安装的存储设备(2个500 GB Samsung 860 EVO SATA固态硬盘)。
您可以多次使用"—class"选项,使用"lshw"命令同时显示多种类型的硬件。
例如,要使用"lshw"命令显示存储设备和磁盘分区,请使用"—class"选项两次,如下所示:
$sudo lshw—businfo—class磁盘—class卷
或
$sudo lshw—短类磁盘类卷类
如您所见,lshw列出了存储设备以及这些存储设备的分区。
使用Lshw查找详细的硬件信息
要查找特定类型硬件(即网络)的详细信息,请使用"—class"选项运行lshw,如下所示:
$sudo lshw级网络
正如您所看到的,我们的计算机上安装的所有网络设备的非常详细的信息被打印出来。
从Lshw输出隐藏敏感信息
默认情况下,“lshw”命令打印敏感信息(即网络设备的MAC地址),同时显示详细的硬件信息。例如,如果您需要与互联网上的其他人共享硬件信息以获得安装驱动程序的帮助,您可能希望在lshw输出中隐藏这些敏感信息。
要从详细的硬件信息中隐藏敏感信息,可以使用"lshw"命令的"—sanitize"选项,如下所示:
$sudo lshw—消毒类网络
如您所见,MAC地址和IP地址已从网络设备中删除。
显示PCIe和USB设备的数字ID
默认情况下,在"lshw"命令的输出中不显示PCIe和USB设备的数字ID。
要在"lshw"命令的输出中显示PCIe和USB设备的数字ID,请使用"—numeric"选项如下:
$sudo lshw-数字类网络
或
$sudo lshw—数字类总线
如您所见,USB设备的数字ID显示在"lshw"命令的输出中。
从Lshw输出中删除易失性时间戳
默认情况下,lshw打印磁盘卷和其他设备的易失性时间戳(更改时间数据)。如果您不想看到这些时间戳,请运行带有“-notime”选项的“lshw”命令,如下所示:
$sudo lshw—无时级卷
如您所见,挂载的时间戳数据将从使用“-notime”选项的lshw输出中删除。
使用Lshw导出硬件信息
您可以以不同的格式导出lshw硬件信息。在撰写本文时,lshw可以以下格式导出硬件信息:
- sqlite数据库
- HTML
- XML
- JSON
要将lshw硬件信息导出到SQLite数据库文件,请运行以下命令:
$sudo lshw—dump gum/data/lshw.db &>/dev/null
如您所见,创建了"lshw.db"SQLite数据库文件。
$ls—lh~/data
您可以使用SQLite读取"lshw.db"数据库文件并打印所有数据库表,如下所示:
$sudo sqlite3/data/lshw.db——line '. tables'
您可以使用以下SQLite命令从“lshw.db”文件打印有关网络设备的信息:
$sudo sqlite3/data/lshw.db——line "SELECT * 从节点where class Like 'network'"
要将lshw硬件信息导出到HTML文件,请运行以下命令:
$sudo lshw—html> ju/data/lshw.html
如果您还想清理/隐藏敏感信息,请按如下方式运行lshw HTMLEXPORT命令:
$sudo lshw—sanitize—html> sanitize/data/lshw.html
如您所见,lshw硬件信息被导出到一个“lshw.html”HTML文件。
$ls—lh~/data
您可以使用您最喜欢的Web浏览器打开“lshw.html”文件。
$firefox/data/lshw.html
我们使用Mozilla Firefox Web浏览器打开了“lshw.html”文件,并显示了硬件信息,如以下屏幕截图所示:
要将lshw硬件信息导出到一个XML文件,请运行以下命令:
$sudo lshw-xml>~/data/lshw.xml
如果你也想清理/隐藏敏感信息,请按如下方式运行lshw XML export命令:
$sudo lshw—sanitize—xml> sanitize/data/lshw.xml
如您所见,lshw硬件信息被导出到一个"lshw.xml"XML文件中。
$ls—lh~/data
我们用Vim文本编辑器打开"lshw.xml"文件,lshw硬件信息以XML格式显示,如以下截图所示:
$vim~/data/lshw.xml
要将lshw硬件信息导出到JSON文件,请运行以下命令:
$sudo lshw—json> json> json
如果您还想清理/隐藏敏感信息,请运行lshw JSON EXPORT命令,如下所示:
$sudo lshw-sanitize-json>~/data/lshw.json
如您所见,lshw硬件信息被导出到一个"lshw.json"JSON文件。
$ls—lh~/data
我们用Vim文本编辑器打开"lshw.json"文件,lshw硬件信息以JSON格式显示,如以下截图所示:
$vim/data/lshw.json
注意:lshw-sanitize、-number和-notime选项将适用于lshw HTML、XML和JSON导出,而不适用于SQLite导出。有关这些选项的更多信息,请阅读本文前面的部分。
示例1:使用Lshw查找计算机/服务器安装的GPU
在您的计算机/服务器上安装新的操作系统后,最重要的事情之一是找到您在计算机/服务器上安装的GPU(图形卡/处理器),并为其安装适当的驱动程序。
您可以使用以下"lshw"命令找到您在计算机/服务器上安装的GPU:
$sudo lshw—class display
如您所见,我们的计算机上安装了NVIDIA GeForce RTX 4070[1]。它使用的是官方的NVIDIA驱动程序(我们安装时)[2]。如果您的计算机/服务器上安装了NVIDIA图形处理器,但没有安装正式的NVIDIA驱动程序,您将看到“Driver=nouveau”。在这种情况下,您必须在您的计算机/服务器上安装正式的NVIDIA驱动程序,才能使用所有功能并从您的GPU获得最佳性能。
示例2:使用Lshw查找网络设备/接口的前缀
安装正确的网络驱动程序也是新Linux安装的重要组成部分。除非安装了正确的网络驱动程序,否则您的网络设备可能无法正常工作,或者功能有限(可能导致网络性能非常差)。为了能够安装正确的网络驱动程序,您需要知道网络设备的芯片组。
要查找安装在计算机/服务器上的网络设备的芯片组和其他信息,请按以下步骤运行"lshw"命令:
$sudo lshw级网络
如您所见,我们的计算机上安装了两个以太网设备。
其中之一是英特尔I211千兆网络接口[1]。Linux内核给它起了一个逻辑名称enp38s0[2]。如您所见,它使用英特尔IGB芯片组(驱动程序=IGB)[3]。因此,要使此网络接口正常工作,您必须在计算机/服务器上安装英特尔IGB驱动程序/固件(如果尚未安装)。
另一个是Realtek RTL8125 2.5GbE网络接口[4]。Linux内核给它一个逻辑名称为enp39s0 [5]。如你所见,它使用Realtek r8169芯片组(driver = r8169)[6]。因此,要让这个网络接口工作,您必须在您的计算机/服务器上安装Realtek r8169驱动程序/固件(如果尚未安装)。
我们也有一个USB以太网设备和一个WiFi适配器连接到我们的电脑。
USB 10/100 mbps LAN网络接口[1]的逻辑名称为enp42s0f3u6u3 [2]。如你所见,它使用Realtek r8152芯片组(driver = r8152)[6]。因此,要让这个网络接口工作,您必须在您的计算机/服务器上安装Realtek r8152驱动程序/固件(如果尚未安装)。
WiFi 802.11n网络接口[4]的逻辑名称为wlp42s0f3u1 [5]。如你所见,它使用的是联发科mt7601u芯片组(driver = mt7601u)[6]。因此,要让这个网络接口工作,你必须在你的计算机/服务器上安装联发科mt7601u驱动程序/固件(如果它还没有安装)。
结论
这是一个关于lshw的广泛指南。在这篇文章中,我们向您展示了如何在流行的Linux发行版(即Ubuntu、Debian、Linux Mint、Kali Linux、Fedora、RHEL、AlmaLinux、Rocky Linux、CentOS Stream)上安装lshw。我们还向您展示了如何列出计算机的硬件,如何过滤lshw的输出以显示特定类型的硬件,以及如何从lshw输出中隐藏敏感的硬件信息。我们向您展示了如何显示PCIE和USB设备的数字ID,以及如何从lshw输出中移除易失性时间戳。我们还向您展示了如何在SQLite数据库(HTML、XML和JSON格式)中导出lshw硬件信息并读取它们。最后,我们向您展示了如何查找您在计算机上安装的GPU和网络设备,以及网络设备使用lshw的芯片组,以帮助您正确安装驱动程序/固件。
参考资料:
- 硬件LiSter—ezIX
- Ubuntu Manpage:lshw—列表硬件
- Bus:Device.Function(BDF)符号-Xen