OS : RedHat Enterprise Linux 8.4
==
하드웨어 정보 확인 명령어
lspci
-> 시스템의 PCI 버스에 연결된 장치들의 정보를 출력하는 유틸리티이다.
-> PCI Bus는 하드웨어 간의 통신을 위한 표준 인터페이스이다.
-> 즉, 컴퓨터 시스템에서 하드웨어 장치들이 데이터를 주고 받는 데 사용되는 표준 버스.
주로 컴퓨터의 메인보드에 포함된 버스이며, 다양한 하드웨어 장치(그래픽 카드, 네트워크 카드, 사운드 카드 등)가 연결 될 수 있다.
-> 또한 PCI버스는 plug and play 기능을 지원하여 새로운 장치를 추가하거나 교체할 때 시스템에 필요한 설정을 자동으로 감지하고 구성한다.
확인 가능한 정보
-> 장치의 이름 : 제조업체, 모델명, 버전 등의 정보
-> 장치의 클래스 : 네트워크 인터페이스, 비디오 카드, USB 컨트롤러 등의 정보
-> 장치의 상태 : 사용 가능, 사용 중지 등의 상태 정보
-> 또한 HAB와 같은 저장 장치 컨트롤러의 정보를 확인 가능
저장장치 컨트롤러란 ? - 데이터를 저장하고 검색하기 위해 하드디스크나 SSD와 같은 저장장치를 관리하는 장치 / SCSI, SAS, SATA, NVMe 등 다양한 인터페이스를 지원하므로 lspci 명령어를 사용하여 이러한 인터페이스의 정보들을 확인할 수 있다.
주요 용도로는 다음이 있습니다:
하드웨어 인식: lspci를 사용하면 시스템에 연결된 PCI 장치를 인식하고 식별할 수 있습니다. 이는 특히 시스템에 새로운 하드웨어를 추가했을 때 해당 장치가 올바르게 감지되었는지 확인하는 데 유용합니다.
드라이버 정보 확인: lspci를 사용하여 시스템에 연결된 장치의 제조사, 모델, 버전 등의 정보를 확인할 수 있습니다. 이 정보는 적절한 드라이버를 설치하거나 문제 해결에 도움이 될 수 있습니다.
시스템 구성 확인: lspci를 사용하여 시스템의 PCI 슬롯에 어떤 장치가 연결되어 있는지 확인할 수 있습니다. 이를 통해 시스템의 전체적인 구성을 파악할 수 있습니다.
디버깅: lspci를 사용하여 PCI 버스와 관련된 문제를 식별하고 디버깅하는 데 도움을 줄 수 있습니다. 예를 들어, 잘못된 하드웨어가 연결되었거나 드라이버가 올바르게 작동하지 않는 경우 lspci를 사용하여 문제의 근본 원인을 찾을 수 있습니다.
명령어 및 옵션
-> lspci -nn : 장치의 번호와 ID 정보를 함께 출력
-> lscpi -v : 자세한 정보 표시 및 장치에 할당된 리소스 및 드라이버 정보 확인
-> lspci -t : pci 장치간의 계층 구조를 트리 형태로 볼 수 있다.
-> lspci -k : 각 장치에 할당된 커널 드라이브를 확인하여 각 장치가 어떤 드라이버를 사용하는지 확인할 수 있다.
-> lspci -vv : 좀 더 자세한 정보 확인 가능 (장치가 할당한 메모리 영역의 정보, 장치가 사용하는 I/O 포트의 정보, 장치의 기능과 관련된 추가 정보 등)
NIC에서 장치ID를 찾는 방법 -> lspci 커맨드를 사용해서 NIC 또는 기타 pci 장치의 ID를 확인할 수있다.
네트워크 인터페이스의 ID를 확인하기 위해서는 lspci -nvv를 사용할 수 있다.
# 설치
yum list pci*
yum install pciutils -y
# lspci // 장치 정의 요약본
시스템에 장착된 pci 디바이스들을 모두 나열해서 보여준다.
lspci -nn
시스템의 PCI 버스를 나열하고 PCI 장치의 제조업체와 장치ID를 숫자로 출력
ex) 호스트 브리지 장치의 장치 클래스를 식별하는 PCI 클래스 코드 [0600]과 Intel사를 나타내는 8086, 그리고 2020은 해당 장치의 ID 이다.
* 장치는 Sky Lake-E DMI registers 라는 호스트 브리지
* rev 07은 장치의 revision 번호
문제1)
RAID CONTROLLER 모델을 확인하는 방법
-> lspci | grep -i raid ; lspci -s <bus no>:<device no> -vv
문제2)
NIC Model 및 drive, connector type 확인 방법
-> lspci | grep -i "ethernet" ; lspci -s <bus no>:<device no> -vv
문제3)GPU 칩셋 및 드라이버 정보 확인
-> lspci | grep -i -e "vga" -e "graphic" | lspci -s <bus no>:<device no> -vv
lshw (list hardware)
-> 하드웨어 정보를 자세히 출력하는 커맨드
-> 시스템의 CPU, Memory, 하드웨어, 네트워크 인터페이스, USB 컨트롤러 등 모든 하드웨어 정보를 제공한다.
-C 또는 -c 옵션을 사용하여 원하는 하드웨어 정보만을 출력할 수 있다.
network를 사용하여 이더넷 인터페이스에 대한 정보를 출력하여 확인이 가능하다.
ldd
-> 실행 파일이 의존하는 공유 라이브러리들을 출력할 때 사용하는 커맨드
-> 실행 파일이 실행될 때 필요한 라이브러리 파일들을 확인하는 데 도움이 된다.
-> 주로 실행 파일이 어떤 라이브러리에 의존하는지 파악하고, 해당 라이브러리가 시스템에 적절히 설치되어있는지 확인하는 데 사용된다.
ldd [option] [실행 파일 경로]
1. python3.8 실행 파일이 의존하고 있는 라이브러리를 출력
2. -v 옵션을 추가하면 verbose 모드로 보여준다
3. -d 옵션 또는 --data-relocs
-> 실행 파일이 메모리에 로드될 때 사용하는 데이터 영역이 다른 곳에 위치해야하는 경우.
예) 실행 파일이 사용하는 전역변수나 정적데이터가 메모리의 다른 위치에 있어야 할 경우 데이터 리로케이션이 필요하다.
이런 경우에 데이터 리로케이션 정보는 실행파일과 관련된 공유 라이브러리들에 대해 어떤 데이터가 어느 주소로 이동해야되는지를 나타내준다.
4. -r 옵션 또는 --function-relocs
-> 실행파일이 사용하는 공유 라이브러리들에 대한 함수 리로케이션 정보를 출력한다. 함수 리로케이션은 실행 파일에서 호출하는 함수가 위치한 메모리 주소를 변경해야 하는 경우에 발생한다.
예) 실행파일이 호출하는 함수가 공유 라이브러리의 다른 버전에 있거나, 라이브러리가 다른 곳에 로드되어 있을 경우 함수 리로케이션이 필요하다. 함수 리로케이션 정보는 실행파일과 관련된 공유 라이브러리들에 대해 어떤 함수가 어느 주소로 이동해야되는지 나타내줌
ldd 명령어 사용으로 라이브러리 의존성 문제 판단
라이브러리 의존성을 나타내기 때문에, 라이브러리 의존성의 문제가 있을 경우 각각의 라이브러리의 의존성이 정확히 판단은 안되지만
잘 작동하는 소스와 잘 작동하지 않는 소스의 라이브러리 의존성을 비교해가면서 정확성 여부를 판단해 나갈 수 있다.
즉, 서로 다른 2개의 라이브러리들을 확인하여 정상적으로 작동하는 라이브러리를 백업하고 다시 컴파일을 해본다.
의존성 문제를 해결하기 위해 역추적할 수 있는 커맨드라고 생각한다.
'OS > Linux&Unix' 카테고리의 다른 글
[Debian Linux 11 Bullseye] Debian Linux iso 다운로드 링크 및 설치 (0) | 2024.07.01 |
---|---|
[Linux] /, /bin, /lib, /boot, /dev, /etc, /proc (0) | 2024.03.21 |
[Linux] tcpdump 명령어 (0) | 2024.03.21 |
[Linux] tracepath 커맨드 (0) | 2024.03.20 |
[Linux] ethtool 커맨드 (0) | 2024.03.20 |