lspci는 Linux 운영 체제에서 시스템 내 PCI(Peripheral Component Interconnect) 버스와 연결된 장치들의 정보를 표시하는 명령어이다. PCI Utilities(pciutils) 패키지에 포함된 유틸리티로, 하드웨어 인벤토리 파악, 장치 문제 해결, 드라이버 구성 등 시스템 관리 작업에 사용된다.
개요
lspci 명령은 시스템에 존재하는 각 PCI 버스와 해당 버스에 연결된 장치의 목록을 출력한다. 기본 실행 시 각 장치에 대한 간략한 정보가 표시되며, 다양한 옵션을 통해 상세 정보나 프로그램이 파싱하기 쉬운 형식의 출력을 얻을 수 있다.
이 도구는 마틴 마레스(Martin Mares)가 유지 관리하는 pciutils 프로젝트의 일부로, 대부분의 Linux 배포판에 기본 포함되어 있다. 설치되지 않은 경우 배포판의 패키지 관리자를 통해 설치할 수 있다.
기본 출력 형식
lspci를 옵션 없이 실행하면 다음과 같은 형태의 출력이 나타난다.
00:00.0 Host bridge: Intel Corporation 440FX - 82441FX PMC [Natoma] (rev 02)
각 필드는 다음을 의미한다.
- 슬롯 번호(00:00.0): 버스 번호, 장치 번호, 기능 번호를 순서대로 표시
- 장치 클래스: 예를 들어 Host bridge(호스트 브리지), VGA compatible controller 등
- 제조업체: 장치를 제조한 회사명
- 장치 이름: 장치의 모델명
- 개정 번호: 장치의 하드웨어 리비전
주요 옵션
lspci는 다음과 같은 주요 옵션을 제공한다.
- -v, -vv, -vvv: 상세 정보 표시. 옵션 개수에 따라 출력 수준이 증가한다.
- -k: 각 장치를 처리하는 커널 드라이버 및 관련 커널 모듈 표시(Linux 2.6 이상 커널에서 지원)
- -n, -nn: PCI 제조업체 및 장치 코드를 숫자로 표시하거나 숫자와 이름을 함께 표시
- -m, -mm: 스크립트에서 파싱하기 쉬운 기계 가독 형식으로 출력
- -t: 모든 버스, 브리지, 장치 및 연결 관계를 트리 형태로 표시
- -s: 특정 도메인, 버스, 장치, 기능만 선택하여 표시
- -d: 특정 제조업체, 장치, 클래스 ID를 가진 장치만 선택하여 표시
- -x, -xxx, -xxxx: PCI 구성 공간(configuration space)을 16진수 덤프로 표시
- -b: 버스 중심 관점으로 IRQ 번호와 주소 표시
- -D: PCI 도메인 번호를 항상 표시
- -F: 실제 하드웨어 대신 파일에 저장된 장치 목록을 읽어 표시
기계 가독 출력
자동 처리 목적으로 lspci의 출력을 프로그램에서 사용할 경우, -m, -vm, -vmm 옵션의 기계 가독 형식 사용이 권장된다. 그 외의 출력 형식은 버전 간 변경될 수 있기 때문이다. -vmm 옵션은 각 장치에 대해 "태그: 값" 형태의 레코드를 줄바꿈으로 구분하여 출력한다.
관련 파일
- /usr/local/share/pci.ids: 알려진 모든 PCI ID(제조업체, 장치, 클래스 및 하위 클래스) 목록. https://pci-ids.ucw.cz/ 에서 관리되며, update-pciids 유틸리티로 최신 버전을 다운로드할 수 있다.
- $XDG_CACHE_HOME/pci-ids: DNS 조회 모드(-q 옵션)에서 얻은 ID 정보가 캐시되는 파일
권한 및 제약
PCI 구성 공간의 일부 영역은 많은 운영 체제에서 루트(root) 권한이 있어야만 접근할 수 있다. 따라서 일반 사용자가 사용할 수 있는 lspci 기능은 제한적이며, 접근이 불가능한 정보는 <access denied> 텍스트로 표시된다.
관련 명령어
lspci와 함께 사용되는 관련 명령어로는 setpci(PCI 장치의 구성 레지스터 읽기/쓰기), update-pciids(PCI ID 목록 갱신) 등이 있으며, pcilib 라이브러리를 통해 PCI 하드웨어에 접근한다.
출처
- lspci(8) Linux 매뉴얼 페이지(man7.org)
- pciutils 프로젝트 공식 문서