자격증 정복/리눅스마스터

리눅스마스터 2급 필기 13 — 장치 설정 (프린터 CUPS·사운드 ALSA·스캐너 SANE·커널 모듈) 총정리

올드 IT직장인 2026. 10. 11. 18:23

리눅스마스터 2급 필기 13 — 장치 설정 (프린터 CUPS·사운드 ALSA·스캐너 SANE·커널 모듈) 총정리

출제기준: 2차 1과목 리눅스 운영 및 관리 > 장치 설정 (장치 연결 및 관리, 활용 개념)
기출 빈도: 2019~2023 기출 기준 약 4.8%.
1과목의 마지막 단원이고, 양은 많아 보여도 "옛 방식 → 현재 표준" 한 줄 구조와
System V ↔ BSD 1:1 대응표만 잡으면 끝납니다.

 

리눅스는 "모든 것은 파일이다" 원칙에 따라 장치도 /dev 아래의 파일로 다룹니다.

이 단원은 프린터·사운드카드·스캐너 세 가지를 과거 방식과 현재 표준으로 구분해서 묻습니다.

장치 옛 방식 현재 표준 관리 명령
프린터 LPD → LPRng CUPS lp·lpr 계열
사운드 OSS ALSA alsamixer·amixer·alsactl
스캐너 — SANE (+ XSANE) sane-find-scanner·scanimage

1. 프린터 시스템 ⭐⭐⭐⭐⭐

1-1. 발전 순서

LPD (Line Printer Daemon, 유닉스 초기 표준)
  → LPRng (LPR Next Generation, 보안 강화·하위 호환, /etc/printcap 사용)
    → CUPS (Common Unix Printing System, 현재 표준)

 

⚠️ 기출 포인트

  • 발전 순서는 LPD → LPRng → CUPS ("(가) LPRng → (나) CUPS" 빈칸 형태로 출제)
  • LPRng로 프린터를 설치할 때 설정하는 파일 = /etc/printcap (프린터 이름·장치 경로·설정 값 기록)
  • lpd 는 "프린터의 모든 작업을 삭제하는 명령"이 아니라 프린터 서버 데몬입니다.
  • 리눅스에서 프린터를 연결하는 방식: Local / Unix Printer(Remote lpd) / Samba Printer(SMB). Consol printer, NovellDirect는 정답이 아닌 보기로 나왔고, PostScript는 연결 방식이 아니라 페이지 기술 언어(PDL) 입니다.

1-2. CUPS 특징 ⭐⭐⭐⭐⭐

항목 내용
개발 오픈소스 (현재 Apple이 개발 주도) — 현재 리눅스 표준 인쇄 시스템
프로토콜 IPP (Internet Printing Protocol) — HTTP/HTTPS 기반
웹 관리 브라우저로 접속, 포트 631
드라이버 PPD (PostScript Printer Description)
— 프린터 기능을 설명하는 텍스트 기반 설정 파일 (이미지 파일이 아님!)
호환 System V 명령(lp 계열)과 BSD 명령(lpr 계열) 모두 지원
기본 설정 위치 /etc/cups/
네트워크 프린터 프로토콜 IPP, LPD, SMB, AppSocket (NDMP는 백업용이라 아님)

 

1-3. CUPS 설정 파일 (/etc/cups/) ⭐⭐⭐⭐

파일 역할
cupsd.conf 핵심 서버 설정 — 접근 제어(ACL)·포트·로그 레벨·웹 인터페이스 (cupsd 데몬 환경 설정)
cups-files.conf 로그 파일 위치·임시 디렉터리·SSL 인증서 경로
client.conf 클라이언트 측 설정 (접속할 서버 ServerName 등)
printers.conf 추가된 각 프린터의 이름·연결 포트(URI)·공유 여부·상태
classes.conf 여러 프린터를 하나의 논리 그룹(클래스)으로 묶은 설정

참고: cupsd.conf의 문법(<Location />, Order allow,deny 등)은 Apache와 비슷하고,
로그도 Apache의 Common Log Format을 따릅니다.
서버 관리자에게 친숙한 구조죠.

 

1-4. X 윈도의 프린터 설정 도구

system-config-printer — CUPS를 GUI로 제어(추가·삭제·설정).

명칭 순서가 중요해서 config-system-… 같은 보기는 오답입니다.


2. 프린터 명령어 — System V ↔ BSD 1:1 대응 ⭐⭐⭐⭐⭐

초기 유닉스의 System V(lp 방식)와 BSD(lpr 방식)가 CUPS에서 통합되었습니다. 아래 표를 통째로 외우세요.

기능 System V 계열 BSD 계열
인쇄 요청 lp lpr
대기열 상태 lpstat lpq
작업 취소 cancel lprm
기기 관리 lpadmin lpc

암기법: 이름이 짧은 쪽이 System V(lp, cancel…), "lp + r/q/rm/c"가 BSD입니다.

⚠️ 최다 출제 함정 — "BSD 계열 프린터 명령이 아닌 것 → lp" (lp는 System V)

 

2-1. lp / lpstat / cancel / lpadmin (System V)

lp — 인쇄 대기열에 등록 (파이프 입력도 가능)

옵션 설명 짝 (lpr)
옵션 설명 짝 (lpr)
-d 프린터 출력 대상 프린터 지정 lpr -P
-n 숫자 인쇄 매수 lpr -#
-t 제목 배너 제목 lpr -T
-o 옵션 프린터별 특수 옵션(양면·가로 등)  
-q 숫자 작업 우선순위 (1~39, 낮을수록 우선)  

 

lpstat — 인쇄 상태 확인

옵션 설명
옵션 설명
-d 시스템의 기본 프린터 확인
-a 프린터의 요청 수신 상태
-p 프린터의 가동 여부
-o 인쇄 대기열(Queue) 확인
-u 특정 사용자의 작업
-v 프린터의 장치 경로·네트워크 주소
-t 모든 상태 정보 요약
-r 인쇄 서버(Scheduler) 동작 여부

 

cancel — 작업 취소

사용 설명
cancel 작업ID 특정 작업 취소 (예: cancel HP_LaserJet-101)
cancel -a 프린터 해당 프린터의 모든 작업 취소
cancel -u 사용자 특정 사용자의 모든 작업 취소
cancel -x 작업ID 작업 삭제 및 데이터 완전 제거

 

lpadmin — 프린터 대기열 생성·수정·삭제 (CUPS 관리 명령)

옵션 설명
-p 이름 설정할 프린터 이름
-v URI 장치 경로/주소 (예: socket://192.168.1.50)
-m PPD 드라이버(모델)
-E 프린터 활성화 및 요청 수락
-x 이름 프린터 삭제
-d 이름 기본 프린터 설정
-c 클래스 클래스(그룹)에 추가

2-2. lpr / lpq / lprm / lpc (BSD)

lpr — 인쇄 요청

옵션 설명
-P 프린터명 출력할 프린터 지정
-# 숫자 인쇄 부수
-r 인쇄 후 원본 파일 삭제 (Remove) — lp에는 이 옵션이 없음
-m 인쇄 완료 후 메일로 알림
-J 이름 작업 이름
-T 제목 배너 페이지 제목

 

lpq — 스풀 큐 상태: -P 프린터명 특정 큐 / -l 상세 / -a 모든 프린터 / +초 주기적 자동 갱신 (lpq +5)

 

lprm — 작업 취소

사용 설명
lprm 가장 최근 작업 취소
lprm 15 작업번호 15 취소
lprm - 나의 모든 작업 일괄 취소
-P 프린터 특정 프린터 대기열 지정
-U 사용자 특정 사용자의 작업 취소

 

lpc — 관리자용 프린터 제어 (Line Printer Control)


서브명령: status, stop, start, restart, disable, enable. 예: lpc status, lpc stop HP_Printer

참고: 현대 CUPS의 lpc는 기능이 제한적(주로 lpc status)이고
실무에서는 cupsenable / cupsdisable / cupsaccept / cupsreject를 씁니다.

 

⚠️ 기출 함정

  • lpr는 큐에 있는 작업을 "다시 인쇄"하는 명령이 아니라 새 인쇄 작업을 요청하는 명령입니다.
  • 명령행에서 파일을 프린터로 출력할 때 cat ihd.txt | lpr, pr -l 5 ihd.txt | lpr, cat ihd.txt > /dev/lp0은 되지만, lpr > ihd.txt는 출력이 아니라 파일 저장(리다이렉션) 이라 틀립니다.
  • lpc(프린터 제어)와 lspci(PCI 장치 목록)는 이름은 비슷하지만 전혀 다릅니다.

3. 사운드카드 — OSS vs ALSA ⭐⭐⭐⭐

구분 OSS (Open Sound System) ALSA (Advanced Linux Sound Architecture)
위치 유닉스 계열 초기 표준 현재 리눅스 커널 표준
장치 파일 /dev/dsp, /dev/mixer, /dev/sequencer /dev/snd/ 디렉터리
기반 표준 유닉스 시스템 콜(POSIX) 기반, 초기엔 Free Software였으나 사유화되기도 함 다중 사운드 카드/장치 완벽 지원, 전이중(Full Duplex)(재생·녹음 동시), OSS 하위 호환, 하드웨어 기반 MIDI 합성
개발 — 1998년 Jaroslav Kysela 개발 시작

 

ALSA 라이선스

구분 라이선스
커널 드라이버 GPL
사용자 라이브러리 (alsa-lib) LGPL — 응용 프로그램 소스 공개 의무 없음
alsa-utils (alsamixer, aplay 등) GPL

기출 문제 흐름: "사운드카드 관련 프로그램 → ALSA(CUPS=프린터, SANE=스캐너, LPRng=프린터)"
/ "사운드 드라이버 유형에 포함되지 않는 것 → RUTA (OSS, OSS/Free, ALSA가 맞음)"

3-1. ALSA 유틸리티 (alsa-utils) ⭐⭐⭐⭐

명령어 용도 핵심
alsamixer 터미널 기반 TUI 볼륨 조절 -c 번호 카드 지정. 단축키 M 음소거/해제, Esc 종료, F3 재생 / F4 녹음 / F5 전체
amixer 그래픽 없이 명령행에서 볼륨 조절 amixer set Master 50%, amixer set Master unmute, scontrols/scontents
alsactl 사운드 설정 저장·복원·초기화 store(현재 설정을 /var/lib/alsa/asound.state에 저장) / restore / init(초기화)
aplay 사운드 파일 재생 -l 재생 장치 목록
arecord 마이크 입력을 파일로 녹음 -l 녹음 장치 목록, -d 초 지정 시간만 녹음

재부팅 후에도 볼륨을 유지하려면 alsactl store 로 저장해 둡니다. (교재 실전: 사운드카드 초기화 = alsactl)

 

참고로 리눅스용 재생기로는 MP3의 xmms, 동영상의 mplayer·xine·realplayer 가 기출에 나왔고,

winamp·media player·gravis는 리눅스 재생 프로그램이 아닌 보기였습니다.


4. 스캐너 — SANE과 XSANE ⭐⭐⭐⭐

4-1. SANE (Scanner Access Now Easy)

  • 스캐너·디지털카메라·비디오 캠코더 등 래스터 이미지 입력 장치에 표준화된 접근 방식을 제공하는 API
  • 백엔드(Backend): 하드웨어를 직접 제어하는 드라이버 (제조사·모델별)
  • 프런트엔드(Frontend): 사용자가 스캔을 실행하는 응용 프로그램 (scanimage=CLI, XSANE=GUI)
  • saned 데몬: 네트워크상 다른 호스트와 스캐너 공유
  • 설정 디렉터리: /etc/sane.d/
  • 패키지: sane-backends / sane-frontends 두 가지로 분리, GPL 배포

 

4-2. XSANE

  • SANE 기반, GTK+ 라이브러리로 개발된 X 윈도용 GUI 프런트엔드
  • 미리보기·영역 선택·색상 보정·해상도 설정을 마우스로 수행, GIMP 플러그인으로 동작
  • 실행 명령: xsane

 

⚠️ 기출 함정 — "SANE은 GTK+로 만들어졌다" → 틀림! GTK+로 만든 것은 SANE이 아니라 프런트엔드인 XSANE 입니다.

 

4-3. 스캐너 명령어와 장치 파일

명령어 용도 옵션
sane-find-scanner USB/SCSI로 연결된 스캐너 장치 검색 (첫 단계) -v 검색 과정 상세 / -q 장치명만 간결 /
-p
병렬 포트 스캐너도 검색
scanimage SANE 백엔드를 이용한 CLI 스캔 -L SANE이 인식한 스캐너 목록 / -T 테스트 스캔 /
-p
진행률(%) / -o 파일 파일로 저장 /
-n 옵션 확인만(실제 스캔 안 함)

흐름: sane-find-scanner(장치 검색) → scanimage -L(SANE 인식 목록) → scanimage -o(스캔) → GUI는 xsane

스캐너 장치 파일 설명
/dev/scanner 주로 실제 장치의 심볼릭 링크
/dev/usb/scanner USB 스캐너 표준 경로
/dev/sg0 SCSI 범용(Generic) 장치 파일

 

⚠️ 장치 파일은 모두 /dev 아래입니다. /scanner처럼 /dev가 빠진 보기는 오답입니다.


5. 장치 정보·디바이스 파일·커널 모듈 (기출 보강) ⭐⭐⭐⭐

교재 장치 설정 절에는 거의 안 나오지만, 기출에는 장치 파일 이름과 모듈 명령이 꾸준히 출제됩니다.

5-1. 장치 정보 확인

명령 설명
lspci 설치된 PCI 장치 목록 (그래픽카드·네트워크 카드·사운드카드 등)
lsusb 연결된 USB 장치 목록
lsmod 현재 적재된 커널 모듈 목록

 

5-2. 블록 장치 이름 규칙 ⭐⭐⭐⭐

이름 의미
hd(a~t) IDE 하드디스크
sd(a~z) SCSI(SATA/USB 포함) 하드디스크
fd(0~7) 표준 플로피 디스크
md(0~31) 소프트웨어 RAID (Multiple Device) — USB 아님!

알파벳은 디스크 순서, 숫자는 파티션 번호입니다.
그래서 /dev/sdb3 = 두 번째 SCSI 디스크의 세 번째 파티션 (b가 두 번째).

 

CD-ROM·플로피 같은 외부 장치의 전통적인 마운트 포인트 디렉터리는 /mnt 입니다.

마운트 형식은 mount -t 파일시스템 장치 마운트포인트 → mount -t iso9660 /dev/hdc /mnt/cdrom

 

5-3. 커널 모듈 명령 ⭐⭐⭐⭐

명령 설명
명령 설명
lsmod 적재된 모듈 리스트 출력
insmod 동작 중인 커널에 모듈 적재 (의존성 처리 안 함)
rmmod 모듈을 커널에서 제거
modprobe 의존성을 자동 분석해서 모듈을 적재도(기본) 제거(-r)도 하는 지능형 도구

 

⚠️ 기출 함정 — "modprobe : 의존성 있는 모듈을 커널에서 제거" → 틀린 설명으로 출제.

modprobe는 제거만이 아니라 적재와 제거를 모두 하는 도구입니다.

 

    • 모듈 파일 위치: /lib/modules/<커널버전>/kernel/drivers
    • 부팅 시 랜카드·사운드카드 모듈을 자동 적재하는 설정 파일: 기출 정답은 /etc/modprobe.conf

 

현대 배포판(RHEL 6 이후 등)에서는 /etc/modprobe.conf 대신 /etc/modprobe.d/*.conf 를 씁니다.

시험은 기출 보기 중 modprobe.conf가 정답으로 나왔으니 그대로 외우고, 실무는 modprobe.d로 이해해 두세요.


기출 문제 Q&A

Q. 다음 중 BSD 계열 유닉스의 프린터 명령으로 틀린 것은? (lp / lpr / lpq / lprm)
A. lp — System V 계열의 인쇄 명령입니다.

 

Q. 프린트 작업을 요청하는 명령은? (cancel / lpr / lpq / lpstat)
A. lpr (cancel=취소, lpq=큐 목록, lpstat=상태)

 

Q. 프린터 큐의 작업 정보를 확인하는 명령은? (lp / lpr / lprm / lpstat)
A. lpstat (lprm은 큐에서 삭제)

 

Q. LPRng로 프린터를 설치할 때 설정해야 하는 파일은?
A. /etc/printcap

 

Q. 사운드카드와 관련된 프로그램은? (ALSA / CUPS / SANE / LPRng)
A. ALSA — CUPS·LPRng는 프린터, SANE은 스캐너.

 

Q. 인쇄 후 원본 파일을 삭제하는 옵션은?
A. lpr -r (lp에는 -r 없음)

 

Q. SANE에 대한 설명으로 틀린 것은?
A. "SANE은 GTK+로 만들어졌다" — GTK+는 프런트엔드 XSANE의 것.

 

Q. PCI 장치 목록을 확인하는 명령은?
A. lspci

 

Q. /dev/sdb3에 대한 설명으로 알맞은 것은?
A. 두 번째 SCSI 하드디스크의 세 번째 파티션

 

Q. 리눅스 블록 디바이스 종류로 틀린 것은? (hd / sd / fd / md=USB)
A. md(0-31)=USB — md는 소프트웨어 RAID입니다.


💡 실무에서는?

서버에서 프린터·스캐너·사운드카드를 다룰 일은 거의 없지만, 인쇄 서버(CUPS)는 보안 점검 대상입니다.

631 포트가 외부로 열려 있으면 IPP 취약점이 노출되니, cupsd.conf의 Listen과 <Location> 접근 제어(Allow/Deny)로 사내 대역에서만 쓰도록 막아야 합니다. 쓰지 않는 서버라면 cups 서비스 자체를 꺼 두는 게 정답이고요.

 

장치 쪽은 서버 장애 때 lspci, lsusb, lsmod, dmesg로 "하드웨어가 인식됐는지, 드라이버가 올라왔는지" 를 순서대로 확인하는 게 기본 루틴입니다.

 

이 단원 내용 중 실무에서 가장 자주 쓰는 건 사실 lspci·lsmod·modprobe 쪽입니다.


핵심 정리

✅ 프린터: LPD → LPRng(/etc/printcap) → CUPS(현재 표준, IPP, 포트 631, PPD=텍스트 파일)
✅ CUPS 설정: /etc/cups/ — cupsd.conf(서버) / printers.conf / classes.conf / system-config-printer(GUI)
✅ System V ↔ BSD: lp↔lpr(요청) / lpstat↔lpq(상태) / cancel↔lprm(취소) / lpadmin↔lpc(관리)
✅ lp -d(프린터) -n(매수) / lpr -P(프린터) -#(부수) -r(원본 삭제) / lprm - (내 작업 전부)
✅ lpstat -d(기본 프린터) / lpadmin -E(활성화) -x(삭제) -d(기본 지정)
✅ 사운드: OSS(/dev/dsp) → ALSA(/dev/snd, 전이중, 커널 GPL·라이브러리 LGPL)
✅ alsamixer(TUI) / amixer(CLI) / alsactl(store·restore·init, asound.state) / aplay / arecord
✅ 스캐너: SANE(API, 백엔드·프런트엔드, /etc/sane.d, saned) / XSANE(GTK+, GIMP 플러그인, xsane)
✅ sane-find-scanner(검색) → scanimage -L(목록) → scanimage -o(스캔) / /dev/scanner·/dev/usb/scanner·/dev/sg0
✅ lspci(PCI) / lsmod·insmod·rmmod·modprobe(의존성 자동, 적재·제거 모두) / /lib/modules/<버전>/kernel/drivers
✅ hd=IDE, sd=SCSI, fd=플로피, md=소프트웨어 RAID / /dev/sdb3 = 두 번째 SCSI 디스크의 3번 파티션

다음 편 예고: 1과목이 모두 끝났습니다!

 

14편부터는 2차 2과목(리눅스 활용) 이 시작됩니다.

첫 주제는 X 윈도 — 구조(서버·클라이언트), 윈도 매니저, 디스플레이 매니저, 설정 파일까지 정리합니다.

 

궁금한 점은 댓글로 남겨주세요!

반응형