/dev 디렉터리
100%

장치 · 레슨 1

/dev 디렉터리

리눅스가 `/dev` 아래의 노드를 통해 장치 인터페이스와 의사 장치를 노출하는 방식을 알아봅니다.

리눅스는 여러 커널 장치 인터페이스를 장치 노드라는 특수 파일 시스템 객체로 노출합니다. 장치 노드는 보통 /dev 아래에 유용한 심볼릭 링크 및 통신 엔드포인트와 함께 나타납니다. 장치 노드를 열면 애플리케이션은 일반 파일에 저장된 바이트가 아니라 커널 드라이버에 연결됩니다.

`/dev` 살펴보기

장치를 역참조하거나 읽지 않고 디렉터리 목록을 표시합니다.

$ ls -l /dev

항목은 물리 저장 장치, 터미널, 입력 인터페이스, 논리 장치 또는 커널이 제공하는 의사 장치를 나타낼 수 있습니다. 모든 하드웨어 구성 요소에 사용자에게 보이는 노드가 필요한 것은 아니며, 장치 하나가 여러 링크나 인터페이스로 표현될 수도 있습니다.

긴 목록의 첫 번째 문자는 파일 시스템 객체 유형을 나타냅니다. 문자 장치 노드와 블록 장치 노드는 각각 cb로 표시됩니다. 이후 수업에서 이러한 유형과 주 번호 및 부 번호를 살펴봅니다.

프로그램이 /dev 아래의 장치 노드를 열면 어떻게 됩니까?

의사 장치

일부 노드는 물리 하드웨어에 대응하지 않으면서 커널 서비스를 제공합니다. /dev/null은 기록된 데이터를 받아 버립니다.

$ command > /dev/null

그 밖의 익숙한 예로는 0 바이트를 생성하는 /dev/zero와 커널 난수 하위 시스템을 통해 난수 바이트를 제공하는 /dev/urandom이 있습니다. 각 장치에는 고유한 의미가 있으므로 파일 이름만 보고 동작을 추정하지 마십시오.

/dev/null은 기록된 데이터를 어떻게 처리합니까?

동적 장치 관리

최신 리눅스 시스템에서는 커널이 지원하는 devtmpfs가 장치가 나타날 때 기본 장치 노드를 채울 수 있습니다. udev 같은 사용자 공간 장치 관리자는 이벤트를 처리하고, 권한과 소유권을 적용하며, 유용한 심볼릭 링크 또는 정책 기반 이름을 만듭니다. 정확한 역할 분담은 시스템마다 다릅니다.

/dev/disk/by-id/ 또는 /dev/disk/by-uuid/ 아래의 항목 같은 안정적인 링크는 하드웨어 구성이나 검색 순서가 바뀌면 달라질 수 있는 /dev/sda 같은 감지 순서 기반 이름보다 설정에서 더 안전할 수 있습니다.

관리자가 설정에서 /dev/sda보다 /dev/disk/by-id/...를 선호할 수 있는 이유는 무엇입니까?

안전하게 상호 작용하기

표준 도구로 장치 노드를 열 수 있다고 해서 임의의 읽기와 쓰기가 안전한 것은 아닙니다. 읽기는 민감한 입력이나 저장 내용을 노출할 수 있고, 디스크, 터미널 또는 펌웨어 인터페이스에 쓰면 데이터가 손상되거나 사용자가 방해받을 수 있습니다. 이런 이유로 장치 노드 권한, 그룹, ACL, 기능 및 서비스 중개가 접근을 제한합니다.

먼저 읽기 전용 검색 도구를 사용하고, 정확한 노드와 장치 식별자를 확인한 뒤, 장치별 문서를 따르십시오. 중요한 시스템에서 익숙하지 않은 /dev 항목으로 데이터를 리디렉션하는 실험은 절대 하지 마십시오.

익숙하지 않은 장치 노드에 임의의 데이터를 쓰지 말아야 하는 이유는 무엇입니까?

레슨 완료

/dev 디렉터리 완료

이제 /dev를 커널과 연결되는 실시간 인터페이스의 집합으로 설명할 수 있습니다.

  • 장치 노드와 일반 파일을 구분합니다.

  • /dev/null 같은 의사 장치를 식별합니다.

  • 동적 노드 및 영구 링크를 장치 관리와 연결합니다.

  • 직접 장치 접근을 인터페이스별이며 잠재적으로 파괴적인 작업으로 취급합니다.

학습 진행 상황 저장

무료 계정을 만들어 이 레슨을 저장하고 어떤 기기에서든 계속 학습하세요.

무료 계정 만들기
다음 수업
장치(으)로 돌아가기