lspci là lệnh dùng để liệt kê chi tiết các thiết bị phần cứng kết nối qua bus PCI/PCI Express trên hệ thống Linux như card mạng, card đồ họa, controller SATA/USB,… Với kinh nghiệm hơn 10 năm thực chiến trong việc tối ưu hóa và gỡ lỗi hạ tầng server, mình sẽ hướng dẫn chi tiết cách sử dụng lspci với các tùy chọn phổ biến trong bài viết này, giúp bạn nhanh chóng nắm bắt cấu trúc phần cứng để phục vụ công tác cấu hình hoặc xử lý sự cố một cách chính xác nhất.
Những điểm chính
- Quan điểm của mình: Trong quản trị hệ thống Linux, lspci sẽ là công cụ hữu ích giúp bạn kiểm chứng trực tiếp cách phần cứng PCI được kernel nhận diện và giao tiếp, từ đó xử lý hiệu quả các vấn đề driver và tối ưu hiệu suất hệ thống.
- Khái niệm lspci: Hiểu rõ khái niệm lệnh lspci và khả năng liệt kê chi tiết các thiết bị phần cứng kết nối qua bus PCI trên hệ thống Linux.
- Trường hợp cần sử dụng: Nắm bắt các trường hợp thực tế cần dùng lệnh để kiểm kê phần cứng, xác định chính xác driver hoặc cấu hình ảo hóa.
- Yêu cầu cài đặt: Biết cách cài đặt gói pciutils trên các bản phân phối Linux phổ biến như Ubuntu, Debian, CentOS và RHEL.
- Cách sử dụng chi tiết: Thành thạo các cú pháp từ xem danh sách cơ bản đến các tùy chọn hiển thị thông số kỹ thuật chuyên sâu và mã ID thiết bị.
- Xử lý lỗi phổ biến: Nắm được quy trình khắc phục khi lệnh không tồn tại, thiết bị không hiển thị hoặc lỗi nhận diện tên “Unknown device”.
- Lưu ý quan trọng: Ghi nhớ các quy tắc về quyền hạn root, cập nhật cơ sở dữ liệu định danh và tính an toàn khi thao tác trên hệ thống đang chạy.
- Câu hỏi thường gặp: Giải đáp các thắc mắc phổ biến liên quan đến lspci.
lspci là gì?
lspci là lệnh dùng để hiển thị thông tin về các bus PCI trong hệ thống và tất cả các thiết bị phần cứng được kết nối với chúng như card đồ họa, card mạng, USB controller,… Nói một cách đơn giản, đây là lệnh giúp bạn giao tiếp với phần cứng của máy tính để biết hệ thống đang nhận diện những thiết bị nào.

Đặc điểm hoạt động của lệnh lspci như sau:
- Chế độ hiển thị linh hoạt: Theo mặc định, lspci chỉ xuất ra một danh sách tóm tắt ngắn gọn về các thiết bị. Tuy nhiên, bạn có thể sử dụng các tùy chọn bổ sung để yêu cầu kết quả chi tiết hơn hoặc định dạng dữ liệu đầu ra nhằm phục vụ cho việc phân tích bởi các chương trình khác.
- Hỗ trợ gỡ lỗi: Đây là công cụ hữu ích giúp báo cáo lỗi liên quan đến trình điều khiển thiết bị hoặc lỗi của chính lspci. Quản trị viên thường sử dụng lệnh kèm tùy chọn mở rộng để trích xuất tối đa thông tin kỹ thuật.
- Yêu cầu về quyền hạn: Trên nhiều hệ điều hành, việc truy cập vào không gian cấu hình PCI bị giới hạn:
- Người dùng thường: Chỉ xem được các thông tin cơ bản, các phần bị hạn chế sẽ hiển thị thông báo <access denied>.
- Quyền Root: Để hiển thị đầy đủ mọi thông số kỹ thuật của thiết bị, bạn cần chạy lệnh với quyền quản trị cao nhất.
Khi nào cần sử dụng lệnh lspci Linux?
Việc sử dụng lệnh lspci trở nên cực kỳ hữu ích trong nhiều tình huống, giúp quản trị viên hệ thống và người dùng chẩn đoán và quản lý phần cứng hiệu quả. Cụ thể, bạn nên dùng lệnh này khi:
- Kiểm kê phần cứng máy chủ: Khi bạn tiếp nhận một máy chủ lạ hoặc quản lý từ xa, lspci giúp bạn liệt kê nhanh danh sách các thiết bị ngoại vi quan trọng như: Card đồ họa (GPU), card mạng (NIC), card âm thanh và các bộ điều khiển lưu trữ mà không cần mở vỏ máy.
- Xác định driver chính xác: Trong trường hợp hệ điều hành không tự nhận driver, lspci sẽ cung cấp mã định danh Vendor ID và Device ID (dạng 8086:1d02). Bạn dùng mã này để tìm kiếm và tải chính xác driver từ trang chủ nhà sản xuất.
- Kiểm tra trạng thái nhận diện thiết bị: Khi vừa lắp thêm phần cứng mới, lệnh này giúp xác nhận xem ở tầng thấp nhất, hệ thống đã nhìn thấy thiết bị đó hay chưa trước khi cài đặt phần mềm.
- Gỡ lỗi và xung đột phần cứng: Nếu một thiết bị phần cứng không hoạt động như mong đợi, lspci là công cụ đầu tiên giúp bạn kiểm tra xem thiết bị có được hệ thống nhận diện hay không và liệu driver tương ứng đã được tải đúng cách chưa.
- Cấu hình ảo hóa: Đối với các hệ thống ảo hóa, bạn cần dùng lspci để lấy địa chỉ Bus chính xác nhằm cấu hình kỹ thuật Passthrough – cho phép máy ảo truy cập trực tiếp vào phần cứng vật lý.

Cách cài đặt lspci trên Linux
Lệnh lspci thuộc gói phần mềm pciutils và trên đa số bản phân phối Linux hiện đại, gói này thường đã được cài sẵn cùng hệ thống. Nếu khi chạy lệnh bạn gặp thông báo command not found thì nguyên nhân có thể là do hệ thống chưa cài pciutils. Khi đó, bạn có thể cài đặt bằng các lệnh sau tùy theo hệ điều hành:
- Trên Debian/Ubuntu:
sudo apt install pciutils- Trên CentOS/RHEL:
sudo yum install pciutilsCách sử dụng lệnh lspci chi tiết
Xem nhanh danh sách thiết bị PCI
Để xem danh sách tổng quan các thiết bị PCI đã được hệ thống nhận diện, bạn thực hiện lệnh dưới đây:
lspciMột dòng kết quả thông thường sẽ có dạng: 00:02.0 VGA compatible controller: Intel Corporation Device 9bc4 (rev 05). Trong đó:
- 00:02.0: Địa chỉ bus của thiết bị.
- VGA compatible controller: Loại thiết bị (Card đồ họa).
- Intel Corporation: Tên nhà sản xuất.
- (rev 05): Phiên bản phần cứng.

Hiển thị thông tin ở định dạng dễ đọc
Để xem thông tin chi tiết về các thiết bị, bao gồm cả các driver kernel đang sử dụng, cổng I/O và ngắt (IRQ), bạn thêm tùy chọn -v với cú pháp lệnh sau:
lspci -v
Tùy chọn -v sẽ giúp bạn xem thêm các thông số kỹ thuật chi tiết về cấu hình của thiết bị.
Hiển thị thông tin chi tiết nhất
Nếu bạn cần sung cấp tất cả thông tin có thể trích xuất được, bao gồm cả các thông số chuyên sâu về không gian cấu hình PCI, hãy sử dụng tùy chọn -vv với cú pháp lệnh như sau:
lspci -vvTùy chọn -vv thường được dùng cho mục đích gỡ lỗi chuyên sâu hoặc khi cần phân tích chi tiết khả năng vận hành của thiết bị.

Mẹo từ chuyên gia: Bạn hãy sử dụng -vv khi bạn cần gỡ lỗi các vấn đề về băng thông PCIe. Thông tin về LnkSta (Link Status) sẽ cho bạn biết chính xác thiết bị đang chạy ở tốc độ Gen mấy và bao nhiêu lane, giúp phát hiện lỗi nghẽn cổ chai phần cứng.
Hiển thị ID nhà cung cấp và ID thiết bị
Nếu bạn muốn xem các mã ID như mã ID nhà cung cấp (Vendor ID) và ID thiết bị (Device ID), hãy dùng lệnh dưới đây:
lspci -nCác ID số này rất quan trọng để tìm kiếm driver chính xác trên mạng hoặc dùng để tham chiếu trong các tệp cấu hình hệ thống.

Lọc thông tin theo lớp thiết bị
Để chỉ hiển thị các thiết bị thuộc một loại cụ thể, ví dụ như chỉ xem card mạng, bạn có thể kết hợp lspci với lệnh để lọc kết quả:grep
lspci | grep -i networkViệc kết hợp với grep giúp bạn nhanh chóng lọc ra thông tin cần thiết. Bạn có thể thay từ khóa network bằng các từ khóa khác như VGA, SATA, USB tùy theo nhu cầu.

Mẹo từ chuyên gia: Thay vì dùng grep đơn thuần, bạn hãy tập thói quen kết hợp với lspci -nn để lấy thêm ID thiết bị, giúp việc tra cứu driver hoặc tìm kiếm giải pháp trên diễn đàn kỹ thuật trở nên chính xác hơn rất nhiều.
Hiển thị thông tin dưới dạng cây
Khi bạn muốn hiểu rõ mối quan hệ phân cấp giữa các bus, bridge và thiết bị, tùy chọn -t sẽ vô cùng hữu ích. Lệnh sau đây sẽ vẽ ra một sơ đồ dạng cây, cho thấy thiết bị nào được kết nối vào bus nào, giúp bạn hình dung cấu trúc vật lý của hệ thống một cách trực quan:
lspci -t
Xử lý lỗi phổ biến khi chạy lệnh lspci
Lỗi: “lspci: command not found”
Nguyên nhân: Lệnh lspci nằm trong gói công cụ phần cứng pciutils. Trên các bản phân phối Linux tối giản hoặc trong các Container, gói này thường bị lược bỏ để tối ưu dung lượng.
Giải pháp: Bạn cần cài đặt gói pciutils thông qua trình quản lý gói của hệ thống:
Trên Ubuntu/Debian:
sudo apt update && sudo apt install pciutilsTrên CentOS/RHEL/AlmaLinux:
sudo yum install pciutilsTrên Arch Linux:
sudo pacman -S pciutilsThiết bị PCI đã lắp nhưng không hiển thị trong danh sách
Nguyên nhân: Nếu bạn đã cắm GPU hoặc NIC vào máy chủ, đèn trên thiết bị sáng nhưng lspci không liệt kê ra dòng nào liên quan thì nguyên nhân có thể là do:
- Kết nối vật lý không ổn định.
- Nguồn điện cấp cho khe PCIe không đủ.
- Cấu hình BIOS/UEFI đang vô hiệu hóa khe cắm hoặc thiết lập sai tốc độ Link Speed.
Quy trình khắc phục:
- Kiểm tra vật lý: Bạn tắt máy, rút nguồn và thử cắm lại thiết bị thật chặt và đảm bảo các dây nguồn phụ đã được cắm đầy đủ.
- Kiểm tra BIOS: Tiếp theo, bạn truy cập BIOS, tìm đến mục PCIe Configuration và đảm bảo khe cắm đang ở trạng thái Enabled. Sau đó bạn thử chuyển chế độ PCIe Generation từ Auto sang Gen3 hoặc Gen4.
- Kiểm tra Log hệ thống: Bạn sử dụng lệnh
dmesg | grep -i pciđể xem nhân hệ điều hành có báo lỗi gì khi khởi tạo thiết bị hay không.

Quan điểm của mình: Khi phần cứng đã cấp điện nhưng lspci không thấy, bạn hãy tập trung vào BIOS/UEFI. Trong môi trường doanh nghiệp, các khe cắm PCIe thường bị vô hiệu hóa mặc định để bảo mật. Bạn hãy luôn kiểm tra dmesg | grep -i pci trước khi tháo lắp vật lý vì đôi khi hệ điều hành đã nhận diện nhưng thiết bị ở trạng thái treo và một lệnh reset bus có thể giải quyết được vấn đề mà không cần can thiệp thủ công.
Tên thiết bị hiển thị là “Unknown device”
Nguyên nhân: Cơ sở dữ liệu định danh thiết bị của Linux trên máy bạn đã quá cũ so với phần cứng mới lắp vào. Hệ thống nhận diện được thiết bị nhưng không biết tên gọi thương mại của nó.
Giải pháp:
- Yêu cầu máy chủ phải có kết nối Internet.
- Bạn chạy lệnh cập nhật cơ sở dữ liệu PCI ID mới nhất từ kho lưu trữ toàn cầu:
sudo update-pciids. - Sau khi cập nhật xong, hãy chạy lại
lspci, tên thiết bị sẽ hiển thị đầy đủ.
Lưu ý quan trọng khi sử dụng lệnh lspci
Dưới đây là những lưu ý quan trọng khi sử dụng lệnh lspci:
- Yêu cầu quyền hạn: Mặc dù người dùng thường có thể chạy
lspciđể xem thông tin cơ bản, nhưng để hiển thị đầy đủ các chi tiết kỹ thuật chuyên sâu, bạn bắt buộc phải chạy lệnh với quyền root hoặcsudo. - Cập nhật cơ sở dữ liệu định danh: Nếu kết quả trả về hiển thị nhiều mã số dạng Hex thay vì tên thiết bị rõ ràng, đó là do file
pci.idstrên máy đã cũ. Bạn hãy chạy lệnhupdate-pciidsđể hệ thống nhận diện đúng tên các phần cứng đời mới. - Lưu ý trong môi trường ảo hóa: Trên các máy chủ ảo, lệnh
lspcithường chỉ liệt kê các thiết bị ảo hóa do Hypervisor cấp phát chứ không phản ánh phần cứng vật lý thực tế của máy chủ, trừ trường hợp cấu hình PCI Passthrough. - Cẩn trọng với chế độ Hex dump (-xxx): Tùy chọn
-xxxsẽ đọc và trích xuất toàn bộ không gian cấu hình PCI. Mặc dù hiếm gặp, nhưng thao tác đọc sâu này có thể gây treo hệ thống trên một số phần cứng bị lỗi hoặc firmware kém ổn định. Do đó bạn chỉ sử dụng-xxxkhi thực sự cần gỡ lỗi. - Tính an toàn cao: Khác với lệnh
setpci,lspcilà công cụ chỉ đọc nên bạn có thể yên tâm sử dụng trên hệ thống đang vận hành mà không lo gây gián đoạn dịch vụ hay thay đổi cấu hình phần cứng.

Câu hỏi thường gặp
Các con số như 00:02.0 ở đầu mỗi dòng kết quả có ý nghĩa gì?
Đó là địa chỉ định danh vị trí của thiết bị trên bus PCI, được viết theo định dạng Bus:Device.Function.
– Bus: Số hiệu đường bus.
– Device: Số hiệu thiết bị trên bus đó.
– Function: Chức năng cụ thể của thiết bị (một thiết bị vật lý có thể có nhiều chức năng logic).
Con số này rất quan trọng khi bạn cần cấu hình passthrough cho máy ảo (VM).
Làm thế nào để kiểm tra driver nào đang điều khiển thiết bị bằng lspci?
Bạn có thể sử dụng tùy chọn -k (kernel). Đây là cách nhanh nhất để xem module kernel nào đang được nạp cho thiết bị đó. Cú pháp lệnh như sau:lspci -kKết quả: Bạn tìm dòng Kernel driver in use ngay dưới tên thiết bị.
Làm sao để biết lệnh đã truy cập thành công vào cơ sở dữ liệu PCI hay chưa?
Sau khi chạy lspci, bạn sẽ thấy danh sách các thiết bị hiện ra. Để xác nhận, hãy tìm các dòng chứa tên card mạng hoặc card đồ họa. Nếu kết quả trả về bằng lệnh lspci -n hiển thị các mã ID số, điều đó chứng tỏ lệnh đã truy cập thành công vào cơ sở dữ liệu PCI.
Bằng cách sử dụng lệnh lspci với các tùy chọn linh hoạt, bạn đã có thể dễ dàng kiểm tra và trích xuất thông tin chi tiết về các thiết bị phần cứng PCI trên máy chủ Linux. Việc này không chỉ hỗ trợ hiệu quả cho quá trình gỡ lỗi và cấu hình mà còn là bước quan trọng để bạn quản lý tài nguyên hệ thống một cách chủ động và chính xác.




