본문 바로가기
[개취] 초보 리눅스 이야기

리눅스 udev 규칙 마스터하기_장치 자동 인식과 설정의 핵심!

by 동동이y 2025. 6. 22.
728x90
반응형

리눅스에서 USB 장치, 시리얼 포트 등을 자동 인식하고 원하는 이름으로 설정하려면? udev 규칙을 마스터하세요!

udev란 무엇인가요?

**udev (userspace /dev)**는 리눅스 커널에서 장치가 연결될 때마다 동적으로 /dev 디렉토리에 장치를 생성하고, 설정된 규칙에 따라 권한, 소유자, 심볼릭 링크 등을 자동 적용해주는 시스템입니다.

핵심 키워드: udev 규칙, udev 설정, udev 장치 자동화


udev 규칙이 필요한 이유?

  • USB 장치를 항상 고정된 경로(/dev/usbX → /dev/usb_camera)로 사용하고 싶을 때
  • 권한(Mode) 변경을 자동화하고 싶을 때
  • 시리얼 포트 장치명 고정이 필요할 때 (/dev/ttyUSB0 → /dev/serial_gps)
  • 자동 마운트 또는 사용자 스크립트 실행이 필요할 때

udev 규칙 파일 구조 이해하기

udev 규칙 파일은 보통 /etc/udev/rules.d/ 또는 /lib/udev/rules.d/ 디렉토리에 위치하며, 다음과 같은 형식을 따릅니다:

bash
 
SUBSYSTEM=="usb", ATTR{idVendor}=="1234", ATTR{idProduct}=="5678", MODE="0666", SYMLINK+="usb_camera"
항목                                                                설명
SUBSYSTEM 어떤 장치 범주인지 (usb, block 등)
ATTR{idVendor} 장치의 공급업체 ID
ATTR{idProduct} 장치의 제품 ID
MODE 파일 권한 설정 (ex: 0666)
SYMLINK 생성할 심볼릭 링크 이름
 

udev 규칙 작성 및 테스트 단계별 가이드

🔍 1단계: 장치 정보 확인

bash
 
lsusb udevadm info -a -n /dev/sdX

또는

bash
 
udevadm info --query=all --name=/dev/ttyUSB0

여기서 idVendor, idProduct, serial, product, manufacturer 등의 정보를 확인하세요.

🛠️ 2단계: 규칙 파일 작성

bash
 
sudo nano /etc/udev/rules.d/99-custom.rules

예시:

bash
 
SUBSYSTEM=="usb", ATTR{idVendor}=="04b3", ATTR{idProduct}=="310c", MODE="0666", SYMLINK+="usb_scanner"

🔄 3단계: udev 재로드 및 테스트

bash
 
sudo udevadm control --reload sudo udevadm trigger

정상 작동하는지 확인하려면 장치를 뺐다가 다시 연결해보세요. /dev/usb_scanner가 생성된다면 성공입니다.


실전 예제 3가지

📷 예제 1: 웹캠 장치 고정

bash
복사편집
SUBSYSTEM=="video4linux", ATTRS{product}=="HD Webcam", SYMLINK+="webcam_hd", MODE="0666"

🧭 예제 2: GPS 수신기 시리얼 포트 고정

bash
복사편집
SUBSYSTEM=="tty", ATTRS{idVendor}=="067b", ATTRS{idProduct}=="2303", SYMLINK+="serial_gps"

💾 예제 3: USB 저장장치 연결 시 자동 스크립트 실행

bash
복사편집
ACTION=="add", KERNEL=="sd[a-z][0-9]", RUN+="/usr/local/bin/mount_usb.sh"

udev 규칙 작성 시 주의사항

  • 파일 이름 앞 숫자가 우선 순위를 의미합니다 (예: 10-, 99-)
  • /lib/udev/rules.d/보다 /etc/udev/rules.d/의 규칙이 우선합니다
  • RUN+= 명령은 udev 내부에서 실행되므로 GUI 응용 프로그램은 동작하지 않을 수 있습니다

udev 규칙 디버깅 팁

bash
 
udevadm monitor

실시간으로 udev 이벤트 로그를 확인할 수 있는 명령어입니다.

bash
 
udevadm test /sys/class/usb_device/usbdevX.X

특정 장치에 규칙이 어떻게 적용되는지 확인할 수 있습니다.


자주 묻는 질문 (FAQ)

Q1. udev 규칙이 적용되지 않습니다.

A: 파일 이름, 권한, 속성 값 오타 여부 확인 후 udevadm control --reload 실행하세요.

Q2. 어떤 속성을 기준으로 규칙을 작성해야 할까요?

A: udevadm info -a 명령어를 통해 제품, 제조사, Vendor ID, Product ID 중 가장 고유한 값을 사용하는 것이 좋습니다.

Q3. 규칙은 언제 적용되나요?

A: 장치 연결 시 자동 적용되며, 기존 장치는 udevadm trigger로 수동 적용할 수 있습니다.

Q4. 장치가 여러 개 연결될 경우 이름 충돌은?

A: SYMLINK+="장치명%n" 형식으로 인덱스를 추가하거나 ENV{ID_SERIAL} 등 고유값을 활용하세요.

Q5. USB 장치마다 다른 스크립트를 실행하려면?

A: RUN+=에 조건별 스크립트를 지정하거나, 공통 스크립트 내 분기처리 로직을 넣어주세요.


📎 내부 링크 추천 (연계 포스팅)

  1. 리눅스 USB 장치 인식 문제 해결 방법
  2. 리눅스에서 프린터 설정 CUPS 완벽 가이드
  3. ALSA로 사운드카드 문제 해결하기
  4. SANE으로 스캐너 설정 마스터하기
  5. udevadm을 이용한 디버깅 기법

✍️ 마무리하며...

udev는 리눅스에서 장치 설정을 자동화하고 시스템을 더 유연하게 사용할 수 있도록 해주는 매우 강력한 도구입니다. 이 글을 통해 udev 규칙 작성법, 적용법, 디버깅 팁까지 완벽하게 익히셨기를 바랍니다.

✅ 지금 여러분의 리눅스 시스템에서 자주 쓰는 USB 장치의 udev 규칙을 직접 작성해보세요!

💬 도움이 되셨다면 댓글과 공유 부탁드립니다!

🔔 다음 포스팅에서는 "udev와 systemd 연동 자동화 스크립트 작성법"을 다룰 예정입니다.

728x90
반응형

댓글