본문 바로가기

학위공부/IT 자격증

2026 리눅스마스터 2급 ⑨ 장치 설정|/dev·저장장치·주변장치 정리

리눅스마스터 2급 장치 설정의 dev 저장장치 udev 커널 모듈 학습지도

리눅스 장치 설정은 하드웨어 발견 → 커널 드라이버 연결 → sysfs 정보 공개 → udev가 /dev 이름·권한·링크 구성 → 사용자가 파일시스템이나 응용 프로그램에서 사용하는 흐름으로 이해하면 됩니다. 시험에서는 장치 이름만 외우기보다 각 계층이 무엇을 담당하는지 구분하는 것이 먼저입니다.

/dev는 장치에 접근하는 장치 노드, /sys는 커널 장치 모델의 속성, udev는 장치 이벤트를 받아 이름과 권한·심볼릭 링크를 관리합니다. 저장장치는 lsblk로 구조와 파일시스템을 확인하고, 드라이버는 lsmodmodinfo로 조회한 뒤 변경 여부를 판단하세요.

12개 전체 학습 순서는 2026 리눅스마스터 2급 전체 학습지도에서 확인할 수 있습니다.

장치가 보이기까지의 핵심 구조

구성요소 핵심 역할 대표 확인 위치·명령 주의점
커널·드라이버 하드웨어를 제어하고 장치 기능을 운영체제에 제공 dmesg, lsmod, modinfo 모듈 이름과 장치 파일 이름은 같지 않을 수 있음
sysfs 커널 장치·드라이버·버스 관계와 속성을 계층으로 공개 /sys/class, /sys/block, /sys/bus 일반 설정 파일 저장소가 아님
udev 커널 장치 이벤트를 처리해 이름·권한·추가 링크 구성 udevadm info, /dev/disk/by-id 발견 순서 기반 이름보다 영속 링크가 안정적일 수 있음
/dev 사용자 공간 프로그램이 장치에 접근하는 특수 파일 제공 /dev/sda, /dev/nvme0n1, /dev/tty* 평범한 데이터 파일과 동일한 대상이 아님

Linux 커널 문서는 /dev 노드와 장치 번호의 공식 목록을 제공하며, 오늘날에는 동적 번호 할당과 sysfs·udev를 함께 사용한다고 설명합니다. 즉 장치 노드를 무조건 수동으로 만드는 방식보다 커널이 알린 장치 정보를 udev가 정책에 따라 정리하는 구조를 먼저 이해해야 합니다.

1. 블록 장치와 문자 장치

구분 접근 방식 대표 예 학습 포인트
블록 장치 블록 단위 임의 접근, 파일시스템을 올릴 수 있음 HDD·SSD·NVMe·가상 디스크 디스크 전체와 파티션 이름을 구분
문자 장치 문자·바이트 흐름 중심의 순차 입출력 터미널, 직렬 포트, /dev/null 저장장치처럼 파티션·마운트하지 않음

장치 파일의 major 번호는 어떤 드라이버 계열이 요청을 처리하는지, minor 번호는 그 드라이버가 다루는 개별 장치나 기능을 구분하는 데 사용됩니다. 시험에서는 숫자 전체를 외우기보다 ls -l /dev/null처럼 장치 파일 표시의 첫 글자와 major·minor 위치를 읽을 수 있으면 됩니다.

# 장치 파일 유형과 major/minor 번호 확인
ls -l /dev/null /dev/zero

# 블록 장치의 계층·크기·파일시스템·마운트 위치 확인
lsblk -o NAME,TYPE,SIZE,FSTYPE,MOUNTPOINTS,MODEL

2. 저장장치 이름 읽기

이름 예 파티션 예
/dev/sda SCSI 계열 인터페이스로 보이는 첫 번째 디스크 /dev/sda1
/dev/nvme0n1 첫 번째 NVMe 컨트롤러의 첫 번째 네임스페이스 /dev/nvme0n1p1
/dev/mmcblk0 첫 번째 MMC·SD 계열 블록 장치 /dev/mmcblk0p1
/dev/loop0 파일을 블록 장치처럼 연결하는 루프 장치 구성에 따라 파티션 없음

여기서 중요한 점은 장치 이름이 항상 물리적 연결 순서를 영구 보장하지는 않는다는 것입니다. 백업이나 자동 마운트처럼 장치를 안정적으로 식별해야 할 때는 UUID, 파일시스템 LABEL, /dev/disk/by-id 같은 영속 식별자를 함께 확인합니다.

# 실제 장치 이름과 UUID·LABEL 확인
lsblk -f

# 현재 마운트 관계를 트리로 확인
findmnt

# udev가 만든 영속 링크 일부 확인
ls -l /dev/disk/by-id/ | sed -n '1,12p'

3. sysfs와 udev의 관계

sysfs는 커널 객체와 장치 속성을 파일 계층으로 내보냅니다. udev는 장치가 추가·제거·변경될 때 커널의 uevent를 받고 규칙과 속성을 대조해 장치 노드 권한, 심볼릭 링크, 네트워크 인터페이스 이름 등을 구성합니다.

  1. 하드웨어가 연결되거나 부팅 과정에서 발견됩니다.
  2. 커널이 적절한 드라이버와 장치를 연결하고 sysfs에 정보를 제공합니다.
  3. udev가 이벤트와 속성을 읽어 /dev 노드와 추가 링크를 관리합니다.
  4. 사용자는 장치 노드·파일시스템·응용 프로그램을 통해 장치를 사용합니다.
# 현재 시스템의 블록 장치 중 하나를 먼저 찾습니다.
lsblk

# 아래 /dev/sda는 반드시 자신의 실제 장치 이름으로 바꿉니다.
udevadm info --query=property --name=/dev/sda

# sysfs의 블록 장치 계층 확인
ls -l /sys/class/block/

조회 명령은 안전하지만 장치 이름을 추측하면 안 됩니다. 특히 mkfs, 파티션 편집, 원시 장치 대상 dd는 데이터를 즉시 훼손할 수 있어 이 글의 실습에서 제외합니다.

4. 커널 모듈과 장치 드라이버 확인

드라이버는 커널에 내장되거나 로드 가능한 모듈로 제공될 수 있습니다. lsmod는 현재 로드된 모듈을, modinfo는 모듈 파일의 설명·의존성·매개변수를 보여 줍니다. modprobe는 의존성을 고려해 모듈을 추가·제거하는 도구이지만, 학습 단계에서는 먼저 조회부터 합니다.

# 로드된 모듈 일부 확인
lsmod | sed -n '1,15p'

# 실제 목록에서 고른 모듈의 정보 확인: 예시는 loop 모듈
modinfo loop 2>/dev/null | sed -n '1,15p'

# 최근 커널 경고·오류 확인(권한 정책에 따라 제한될 수 있음)
dmesg --level=err,warn | tail -n 20

모듈이 lsmod에 없다고 기능이 없는 것은 아닙니다. 해당 드라이버가 커널에 내장됐을 수 있습니다. 반대로 모듈이 로드됐다는 사실만으로 실제 장치가 연결됐다고 단정할 수도 없습니다.

5. 장치 문제를 확인하는 순서

  1. 물리·가상 연결 확인: 전원, 케이블, 가상머신 장치 연결 상태를 봅니다.
  2. 커널 인식 확인: dmesg, /sys, 버스별 조회 도구로 발견 여부를 봅니다.
  3. 드라이버 확인: 연결된 드라이버와 모듈 정보를 확인합니다.
  4. 장치 노드 확인: /dev와 udev 속성·영속 링크를 확인합니다.
  5. 사용 계층 확인: 블록 장치라면 파일시스템과 마운트, 프린터·사운드라면 해당 사용자 공간 서비스를 확인합니다.

자주 틀리는 5가지

  1. “/dev에는 장치 데이터가 저장된다” → 장치 노드는 커널 드라이버로 요청을 전달하는 인터페이스입니다.
  2. “/sys와 /proc은 일반 설정 파일 디렉터리다” → 둘 다 커널 정보를 보여 주는 가상 파일시스템이며 목적과 구조가 다릅니다.
  3. “sda는 언제나 내장 첫 번째 SSD다” → 발견 순서와 버스·가상화 환경에 따라 이름이 달라질 수 있습니다.
  4. “모듈이 없으면 드라이버도 없다” → 커널에 정적으로 내장된 드라이버는 lsmod에 나타나지 않을 수 있습니다.
  5. “장치가 보이면 바로 포맷해야 한다” → 먼저 장치·파일시스템·마운트 상태를 읽기 전용 명령으로 확인해야 합니다.

셀프체크 5문항

  1. /dev, /sys, udev의 역할을 각각 한 문장으로 쓰세요.
  2. 블록 장치와 문자 장치의 접근 방식 차이는 무엇인가요?
  3. /dev/nvme0n1p2에서 디스크 부분과 파티션 번호를 구분하세요.
  4. 장치를 영구적으로 식별할 때 단순한 /dev/sdX 이름만 믿으면 안 되는 이유는?
  5. lsmod에 드라이버 이름이 없을 때 기능 부재를 단정할 수 없는 이유는?
정답 확인
  1. /dev는 장치 접근 노드, /sys는 커널 장치 속성 계층, udev는 이벤트 기반 장치 이름·권한·링크 관리자입니다.
  2. 블록 장치는 블록 단위 임의 접근, 문자 장치는 바이트 흐름 중심의 순차 접근을 제공합니다.
  3. nvme0n1이 네임스페이스 장치이고 p2가 두 번째 파티션입니다.
  4. 발견 순서와 환경에 따라 이름이 바뀔 수 있으므로 UUID·LABEL·by-id 링크가 더 안정적일 수 있습니다.
  5. 드라이버가 로드형 모듈이 아니라 커널에 정적으로 포함됐을 수 있기 때문입니다.

전체 연재로 돌아가려면 리눅스마스터 2급 전체 학습지도를 확인하세요.

공식 자료

이 글은 2026년 7월 11일 기준 KAIT 공식 범위와 Linux 커널·udev·man7의 1차 문서를 확인해 작성했습니다. 배포판과 커널 버전에 따라 장치 이름·도구 출력·권한이 달라질 수 있으므로 실제 시스템에서는 먼저 조회 명령으로 현재 상태를 확인하세요. 예제와 문제는 기출문제가 아닌 자체 제작 학습자료입니다.