[리눅스마스터 1급] 이기적 이론서 8회차 정리 - 주변장치 관리
🏁 이기적 이론서 학습 범위
- PART 01 리눅스 시스템 관리
- CHAPTER 02 장치 관리 (SECTION 02 주변장치 관리)
주변장치 관리
☑️ 디스크 확장
디스크 확장
- 리눅스 시스템 운영 시 하드디스크의 잔여 용량이 남지 않거나 저장소 용량을 증설하기 위해 새로운 하드디스크를 추가 장착할 수 있다.
하드디스크 추가하기
- 하드디스크 시스템에 부착하기
- 시스템을 끄고 새로운 하드디스크를 시스템에 장착하고 시스템을 켠다.
fdisk
의-l
옵션을 통해 하드디스크가 장착되었는지 확인한다.$ sudo fdisk -l # /dev/sdb 장치가 추가됨 Disk /dev/sda: 16.1GB. 16106127360 bytes ...
- 확장 파티션 생성하기
디스크가 시스템에 인식되었으므로 포맷을 하기 전 파티션을 생성한다.
$ sudo fdisk /dev/sdb # 파티션 설정에 대한 기본 설명 확인 $ Command (m for help): m # 어떤 명령어를 사용해야 할 지 모를 때는 m 사용 $ Command (m for help): n # 새로운 파티션을 만들기 위해 n 사용
- 파티션은 부팅 가능 여부에 따라 주 파티션과 확장 파티션으로 구분한다.
- 여기서는
e
명령을 사용하여 확장 파티션을 생성한다.
Command action e extended p primary partition(1-4)
- 여기서는
- 파티션 번호와 첫 번째 실린더 번호, 마지막 실린더 번호값을 입력해야 한다.
- 여기서는 기본값으로 선택한다.
Parition number (1-4): 1 First cylinder (1-1044, default 1): Last cylinder, + cylinders or + size{K,M,G}(1-1044, default 1044):
- 아직까지는 실제 디스크에 반영되지 않은 상태이다.
- 지금까지의 파티션 설정을 디스크에 직접 적용하기 위해
w
를 사용한다.
Command (m for help): w
- 지금까지의 파티션 설정을 디스크에 직접 적용하기 위해
다시
fdisk -l
를 사용하면 이전에는 보이지 않던 확장 파티션이 생성되었다.$ sudo fdisk -l Disk /dev/sdb: 8589 MB, 8589934592 bytes
- 논리적 파티션 생성하기
- 파티션은 논리적으로 여러 개의 파티션으로 나눌 수 있다.
논리적 파티션 생성을 위해
fdisk
명령을 사용한다.$ sudo fdisk /dev/sdb
- 논리적 파티션을 만들려면
n
명령을 사용한다.- 논리적 파티션과 주 파티션 중 고를 수 있다.
- 여기서는 논리적 파티션 생성을 위해
l
을 사용한다.
Command (m for help): n Command action l logical (5 or over) p primary partition (1-4) l
- 여러 개의 논리적 파티션을 염두하면 첫 번째 실린더와 마지막 실린더의 값을 지정해야 한다.
- 여기서는 하나의 논리적 파티션 생성을 위해 기본값을 사용하고 엔터를 누른다.
- 마지막에는
w
를 사용하여 디스크에 적용한다.
First cylinder (1-1044, default 1): Using default value 1 Last cylinder, + cylinders or + size{K,M,G} (1-1044. default 1044): Using default value 1044 Command (m for help): w
다시
fdisk -l
를 사용하여 논리적 파티션이 생성되었는지 확인한다.$ sudo fdisk -l
- [TIP] 파티션 확인하기
/proc/partitions
파일을 통해 시스템의 파티션 정보를 확인할 수 있따.
$ cat /proc/partitions
- 파티션 포맷하기
ext4
파일 시스템으로 방금 생성한 논리적 파티션/dev/sdb5
를 포맷한다.$ sudo mkfs.ext4 /dev/sdb5
- 마운트하기
- 포맷을 마친
/dev/sdb5
를/home/francis/tmp
경로로 마운트한다.- 마운트 대상이 되는 디렉터리는 미리 생성되어 있어야 한다.
- 마운트할 때
-t
옵션을 사용하여 마운트 대상의 파일 시스템이 무엇인지 지정해야 한다.
$ sudo mount -t ext4 /dev/sdb5 /home/francis/tmp
- 포맷을 마친
- 확인하기
df
를 통해 하드디스크가 제대로 마운트되었고, 하드디스크의 크기와 사용 가능한 용량을 확인할 수 있다.$ df -h
/etc/fstab
파일 등록하기시스템 리부팅 후 자동 마운트 될 수 있도록 /etc/fstab 파일 끝에 다음 정보를 입력한다.
$ sudo vi /etc/fstab (중간 생략) /dev/sdb5 /home/francis/tmp ext4 defaults 1 1
☑️ 프린터
리눅스 프린팅 시스템
- 초기 프린터는 고정 크기, 단일 폰트를 갖는 텍스트 형식으로 한 줄씩 출력하는 라인 프린터를 사용하였다.
- 속도가 느려 시스템 성능 향상을 위해 스풀링 방식이 소개 되었고, 지금도 적용되고 있다.
- 초기 리눅스 프린팅 시스템은 BSD(Berkely Software Distribution) 프린팅 시스템을 이용하였다.
- BSD는 서버에서 동작하는 라인 프린터 데몬(LPD)과 프린트 요청을 위한
lpr
명령어를 포함하는 클라이언트가 구성한다.
- BSD는 서버에서 동작하는 라인 프린터 데몬(LPD)과 프린트 요청을 위한
- System V도 BSD 프린팅 시스템과 기능적으로 동일하지만 명령어 사용법이 달랐던 별도의 프린팅 시스템을 가지고 있었다.
- ex. BSD 계열의
lpr
명령어가 System V에서는lp
명령어로 구현되었다.
- ex. BSD 계열의
- 그 후 다양한 폰트 지원, 이미지 출력, 가변폭 글자 지원뿐 아니라 커닝(kerning), 리가처리(ligature) 등 프린터 출력 기술이 개선되었다.
- 기존
lpd
,lpr
의 BSD 프린팅 시스템을 호환하며 LPRng (LPR next generation)과 CUPS(Common Unix Printing System)와 같은 새로운 프린팅 시스템이 개발되었다.
- 기존
- LPRng를 포함해 기존 프린팅 시스템이 가지고 있었던 프린터 제조사마다 형태가 달라 상호호환을 맞추기 어려웠던 문제점을 극복하기 위해 모듈 방식으로 CUPS를 개발하였다.
- 현재 리눅스 및 유닉스 호환 시스템의 표준 프린팅 시스템이다.
CUPS(Common Unix Printing System)
- CUPS
- 다양한 프린터를 지원하기 위해 프린터 인쇄를 요청하는 클라이언트와 인쇄를 처리하기 위한 프린터 서버로 구성되어 있다.
- 리눅스를 포함한 유닉스 호환체제를 위한 모듈러 프린팅 시스템
- 1997년 개발 시작 후 베타 버전이 1999년에 선보였으나 LPD의 빈약한 기능과 프린터 제조사 간 호환성 이슈로 IPP(Internet Printing Protocol)가 자리를 대체했다.
- 2002년 애플이 Mac OS X 10.2에 프린팅 시스템으로 CUPS를 채용 후 급속히 발전하여 리눅스의 기본 프린팅 시스템이 되었다.
- 다양한 프린터를 지원하기 위해 프린터 인쇄를 요청하는 클라이언트와 인쇄를 처리하기 위한 프린터 서버로 구성되어 있다.
- CUPS의 특징
- 프린터마다 독자적으로 사용했던 장치 드라이버의 작성을 용이하게 했다.
- 라인 프린터, 포스트스크립트 프린터, 매킨토시, 윈도우에서 제공하던 프린터 형식을 유닉스 계열 운영체제에서도 사용할 수 있도록 지원한다.
- HTTP 기반 IPP 프로토콜을 사용하고 SMB 프로토콜도 지원한다.
- BSD와 System V 계열 명령어를 모두 지원한다.
- 웹 서버의 Common Log Format 형태의 로그 파일을 제공하며, 웹상에서도
lpadmin
명령을 통해 관리자 기능 수행이 가능하다.
CUPS의 구성
구성요소 설명 스케줄러 - IPP(Internet Printing Protocol) POST 요청을 통해 들어온 인쇄 요청을 처리하기 위한 HTTP/1.1 서버 데몬이다.
- 인쇄 처리, 프린터 상태 모니터, 관리도구 등의 역할을 한다.
- 네트워크 상의 사용가능한 프린터를 찾을 수 있고, 인쇄를 위해 적절한 필터와 백엔드를 찾아 인쇄 요청을 전달한다.
- LPD 프로토콜 지원을 위한cupsd-lpd
데몬도 실행한다.환경설정 파일 (Config Files) - 아파치의 http.conf
와 유사한 형식으로 CUPS 프린터 데몬 환경설정 파일이 존재한다.
- 사용 가능한 프린터와 대기열 목록을 설정하고 출력을 위한 형식 변환 규칙을 정의한다.
- 프린터의 기능을 설정하는 PPD(PostScript Printer Description) 파일을 정의한다.
- cupsd.conf: cupsd 데몬 환경설정 파일
- printers.conf: 각 프린터의 정보 설정
- classes.conf: 각 프린터의 클래스에 대한 정보 설정CUPS API - 인쇄 작업의 대기열 추가, 프린터 정보 획득, HTTP와 IPP를 통한 리소스 접근, PPD 파일 조작 등 CUPS 관련 API를 제공한다.
- 라이선스는 GNU LGPL을 따른다.BSD 및 System V 명령어 기존 프린팅 시스템과 호환성 확보를 위해 BSD 명령어인 lpr
,lpq
,lprm
,lpc
등과 System V 명령어인lp
,lpstat
,cancel
등을 제공한다.필터(Filters) - 인쇄물을 프린터가 이해할 수 있는 형식으로 변환한다.
- 다양한 파일과 이미지 형식을 지원하고 여러 개의 필터를 조합하여 출력 포맷을 만들 수 있다.CUPS 이미징 (CUPS Imaging) 큰 이미지, 색 변환, 색 관리, 이미지 크기 변경 등 이미지와 관련된 라이브러리 백엔드 - 장치나 네트워크 상의 컴퓨터로 프린트 데이터를 보내는 특별한 필터이다.
- 병렬포트, 직렬포트, USB, LPD, IPP, AppSockt(JetDirect) 등 다양한 디바이스를 지원한다.
- Samba 프로토콜도 지원하여 윈도우로 인쇄 출력이 가능하다.
프린터 추가하기
- 프린트 설정 방법
- 웹을 통해 관리자 도구로 실행할 수 있다. (
http://localhost:631
orhttp://127.0.0.1:631
) - 배포판마다 프린터 관리용 프로그램을 제공한다.
- 레드햇 계열 초기 버전은
printtool
,printconf
를 제공하다가redhat-config-printer
를 거쳐 현재는system-config-printer
를 통해 프린터를 추가할 수 있다.
- 레드햇 계열 초기 버전은
- 웹을 통해 관리자 도구로 실행할 수 있다. (
- 로컬 프린터 추가하기
- 프린터를 시스템에 직접 연결시 하드웨어 추상화 계층 (HAL: Hardware Abstraction Layer) 과
hal-cups-utils
유틸리티에 의해 핫 플러그 이벤트를 인식하여 자동 설정이 된다. - 프린터를 병렬포트에 연결하면
/dev/lp0
장치 파일을 통해 접근 가능하고, USB 포트에 연결하면/dev/usb/lp0
장치 파일로 접근 가능하다.
- 프린터를 시스템에 직접 연결시 하드웨어 추상화 계층 (HAL: Hardware Abstraction Layer) 과
- 네트워크 프린터 추가하기
system-config-printer
설정 화면에서 메뉴의Server → New → Printer
로 이동하거나Ctrl + N
단축키를 통해 아래와 같은 다양한 네트워크 프린터를 추가할 수 있다.
프린터 출력하기
- lpr(BSD)
- 프린터에게 작업 요청 후 프린트할 파일을 읽어 출력 가능한 데이터를 LPD(Linux Printing Daemon) 에게 전달한다.
- 파일을 지정하면 해당 파일을 작업요청하고, 지정되어 있지 않으면 표준 입력으로부터 데이터를 받아 LPD에 전달한다.
형식
lpr [option][filename]
옵션
옵션 설명 -# 인쇄 매수를 지정한다.(1~100장) -m 작업이 완료되면 이메일로 알림을 준다. -P 지정한 프린터로 출력한다. -C, -T, -J 작업 이름과 제목을 설정한다. -r - 출력할 파일을 지정한다.
- 출력 완료 후 파일은 삭제된다.-l - 이미 프린터에 맞게 형식이 맞춰진 출력 파일을 지정한다. 즉, 필터를 거치지 않고 출력한다.
- 이 옵션은-o raw
옵션과 동일하다.예제
$ lpr myfile.txt # myfile.txt 출력 # 리다이렉션을 통해 myfile.txt 출력 $ cat myfile.txt | lpr OR $ cat text.txt > /dev/lp0 # HL -2280DW 프린터에 작업명을 francis's text fil이라 지정하고 printexample.txt를 2장 출력한다. # 출력이 완료되면 파일은 삭제되고 이메일로 완료 메일이 발송된다. $ lpr -P HL-2280DW -J "francis's text file" -#2 -m -r printexample.txt
- lp(System V)
lpr
과 유사하게 문서를 프린터로 출력한다.형식
lp [option][filename]
옵션
옵션 설명 -d - 출력할 프린터를 지정한다.
- 개별 프린터 및 프린터의 클래스를 지정할 수 있다.
- 클래스 지정의 경우 사용할 수 있는 프린터 중 첫 번째 프린터부터 프린트를 시도한다.-n 인쇄 매수를 지정한다(1~100매) 예제
$ lp myfile.txt # myfile.txt 출력 $ lp -n 3 myfile.txt # myfile.txt를 3장 출력
프린트 취소하기
- lprm(BSD)
- 프린터 대기열에 있는 작업 번호로 인쇄작업을 취소한다.
- 작업 번호를 지정하지 않으면 현재 작업이 취소된다.
- 여러 개의 작업 번호를 지정할 수 있고,
-
를 사용하여 모든 작업을 취소할 수 있다. 형식
# lprm [option
옵션
옵션 설명 - 프린터 대기열에 있는 모든 작업 취소 -U 특정 사용자의 작업 취소 -P 작업을 취소할 프린터 지정 -h server[:port] 작업을 취소할 프린터 서버 지정 예제
$ lprm 5 # 작업 번호 5 취소 $ lprm - # 모든 인쇄 작업 취소 $ lprm -P mydest 10 # mydest 프린터의 10번 작업 취소
- cancel(System V)
- 인쇄 작업을 취소한다.
- 취소할 작업 id 미지정시 기본 프린터에 출력 중인 작업을 취소한다.
형식
cancle [option][job-id]
옵션
옵션 설명 -a 모든 인쇄 작업 취소 -U 서버에 연결할 때 사용할 사용자 지정 -h hostname[:port] 인쇄를 취소할 서버 지정 -u 특정 사용자가 소유한 인쇄 작업 취소 예제
$ cnacel -a # 모든 프린터의 모든 작업 취소 $ cancel printer-7 # 작업 id가 printer-7인 작업 취소
프린트 작업 및 큐 관리
- lpc(BSD)
- 프린터와 CUPS 프린팅 시스템에서 제공하는 프린터 클래스 대기열을 제어한다.
- 프린트 대기열의 상태를 얻을 수 있다.
옵션
명령 설명 status 모든 프린터나 클래스 대기열 상태 출력 help, ? 도움말 출력 quit, exit lpc 대화모드에서 빠져 나온다. 예제
$ /usr/sbin/lpc status HL -2280DW # 특정 프린터 상태 출력
- lpq(BSD)
- 프린터 대기열의 상태를 출력한다.
- 프린터나 클래스 미지정시 기본 프린터 정보를 출력한다.
형식
lpq [option]
옵션
옵션 설명 -a 모든 프린터의 인쇄 작업 정보 출력 -l 프린터 대기열의 상태를 자세하게 출력 -P 상태를 출력한 프린터 지정 +interval +10이라고 지정하면 10초마다 대기열이 비워질 때까지 상태 출력 예제
$ lpq # 프린터 대기열 정보 출력 $ lpq -P xp-610 # xp-610 프린트 대기열 정보 출력
- lpstat(System V)
- 현재 설정된 프린터와 클래스, 인쇄 작업에 대한 상태 정보를 출력한다.
- 아무 것도 설정하지 않으면 현재 사용자가 대기열에 추가한 활성화된 작업에 대한 정보를 출력한다.
형식
lpstat [option]
옵션
옵션 설명 -d 기본 프린터가 무엇인지 보여준다. -p - 설정된 모든 프린터를 출력
- 출력 가능한 프린터가 무엇인지 알려준다.-t -r, -d, -c, -v, -a, -p, -o 옵션을 모두 사용한 것과 동일하며 모든 상태 정보를 출력한다. -a 프린터 대기열이 요청을 받을 수 있는 상태인지 출력한다. -c 모든 클래스와 클래스에 속한 멤버 프린터가 무엇인지 출력한다. -s 자세한 정보가 아닌 요약 정보를 출력한다. 예제
$ lpstat -d # 기본 프린터 정보 출력 $ lpstat -s # 프린터 요약 정보 출력 $ lpstat -a XP-610 # 지정한 프린터가 요청을 받을 수 있는 상태인지 출력
☑️ 사운드 카드
리눅스 사운드
- 리눅스 사운드를 구현하기 위해 2가지 오픈소스가 있다.
- 오픈 사운드 시스템(OSS: Open Sound System)
- 고급 리눅스 사운드 아키텍처(ALSA: Advanced Linux Sound Architecture)
- OSS는 유닉스 및 유닉스 호환 시스템에서 지원하지만, ALSA는 리눅스에서만 지원한다.
- 리눅스 커널 2.4까지는 OSS의 오디오 API를 포함했으나, 리눅스 커널 2.5부터는 기능을 제거하고 ALSA를 추가했다.
오픈 사운드 시스템(OSS: Open Sound System)
- 유닉스와 유닉스 호환 운영체제를 위한 사운드 생성 및 캡처 인터페이스이자, 인터페이스를 구현하기 위한 디바이스 드라이버와 사운드 컨트롤러 자체이다.
- 목표: 사운드 응용 프로그램을 구현할 수 있는 기반 또는 시스템을 제공하는 것
- OSS API
- POSIX의 read, write, ioctl과 같은 표준 시스템 호출을 기반으로 API가 구성된다.
사운드 입출력의 기본 장치는
/dev/dsp
이다.$ cat /dev/random > /dev/dsp # /dev/dsp 사운드 장치로 랜덤 값(소음)을 쓰는 명령어
- 라이선스
- 초기에는 자유 소프트웨어였으나 프로젝트 성공으로 개발 리더인 Savolainen은 4Front Technologies과 계약하고 신기능과 개선된 내용은 4Fornt Technologies의 소유가 되었다.
- 그래서 리눅스 커뮤니티에서는 OSS 대신 ALSA로 교체하였다.
- 2007년 7월, 4Fornt Technologies는 오픈솔라리스를 위한 CDDL 라이선스와 리눅스를 위한 GPL 라이선스를 갖는 소스코드를 공개하였다.
- 2008년 1월, 4Fornt Technologies는 FreeBSD를 위한 BSD 라이선스로 잇따라 소스코드를 공개했다.
고급 리눅스 사운드 아키텍처(ALSA: Advanced Linux Sound Architecture)
- 사운드 카드 디바이스 드라이버를 위한 API를 제공하는 리눅스에 포함된 소프트웨어 프레임워크
- 목표: 사운드 카드 하드웨어에 대한 자동 설정 기능과 시스템상 복수 개의 사운드 장치 지원
- 특징
- 하드웨어 기반 MIDI 합성 기능 제공
- 다중 채널 하드웨어 믹싱 기능 제공
- 전이중 입출력 제공
- 멀티 프로세서 및 스레드 안전 디바이스 드라이버 제공
- 라이선스
- GPL(General Public Licensse)과 LGPL(Lesser General Public License) 라이선스를 바탕으로 개발되고 있다.
사운드 명령어
- alsactl
- ALSA 기반 사운드 카드 드라이버에 대한 고급설정을 할 수 있다.
- 다수의 사운드 카드를 제어한다.
형식
alsactl [options][store|restore|init]
옵션
옵션 내용 -d 디버그 모드로 좀 더 로그가 풍부하다. -f - 환경 설정 파일을 지정할 수 있다.
- 지정하지 않으면 기본파일은/etc/asound.state
이다.명령
명령 내용 store 사운드 카드에 대한 현재 정보를 환경설정 파일에 저장한다. restore 환경설정 파일의 설정에 따라 선택된 사운드 카드에 반영한다. init - 사운드 장치를 기본값으로 초기화한다.
- 디바이스가 알려진 장치가 아니면 에러코드 99를 반환한다.예제
$ sudo alsactl init # 사운드 카드 초기화 $ sudo alsactl restore -f asound.state # 사운드 카드 설정을 지정한 환경설정 파일의 설정으로 되돌림
- alsamixer
- 사운드 설정을 변경하고 볼륨을 조절하기 위한 ALSA 프로젝트의 그래픽 믹서 프로그램
- 커서 형태이고, X 윈도우 시스템이 필요하지 않다.
- 다수의 사운드 카드를 지원한다.
- 텍스트 기반 그래픽 화면을 통해 사운드 카드를 제어한다.
그래픽 프로그램이지만 터미널에서 옵션을 사용해 조절할 수 있다.
옵션 설명 -c, —card 사운드 카드가 여러 개면 제어할 사운드 카드를 선택한다. -D, —device 제어할 믹서 장치를 선택한다. -V, —view - 재생 모드(playback), 녹음모드(capture)를 선택하여 시작한다.
- 둘다 사용할 경우 모두(all) 옵션을 사용한다.
- 사운드 설정을 변경하고 볼륨을 조절하기 위한 ALSA 프로젝트의 그래픽 믹서 프로그램
- cdparanoia
- 오디오 CD를 읽어서 CD의 재생정보와 음악파일을 추출하는 유틸리티
형식
cdparanoia [option]
옵션
옵션 내용 -w, —output-wave 마이크로소프트 RFF WAV 형식으로 추출한다. -a, —output-aiff 압축되지 않은 Apple AIFF-C 형식으로 추출한다. -B, —batch - 모든 트랙 음악을 Cdda2wav 스타일로 추출한다.
- 추출된 파일은 “track#.” 파일 형식을 갖는다.예제
$ cdparanoia -B # 오디오 CD를 읽어서 트랙당 WAV 형식의 파일로 추출 $ cdparanoia -B -- -5 # 5번 트랙부터 추출 $ cdparanoia -B -- -1-2 # 1, 2번 트랙 추출 $ cdparanoia -B "1[:13.13]-1[1:13]" # 1번 트랙의 0:13.13부터 1:13.00 사이를 추출
☑️ 스캐너
SANE(Scanner Access Now Easy)
- 이미지 스캐너 및 카메라 하드웨어에 대한 표준화된 액세스를 제공하기 위해 누구나 자유롭게 사용할 수 있는 API
- 아키텍처
- 시스템 A의
libsane.so
동적 라이브러리는 pnm 파일과 mustek 스캐너, 네트워크 스캐너를 사용하도록 환경설정이 되어 있다.libsane.so
동적 라이브러리는 각 장치를 구동할 수 있는libsane-dll.do
라 불리는 드라이버를 링크하고 있다.
- 시스템 A의 네트워크를 경유하여 시스템 B의 장치 이용 시 시스템 B의 saned 데몬이 시스템 A의 처리를 대리하여 마찬가지로
libsane.so
의 도움을 받아 스캐너를 제어한다. sane
패키지는 다양한 스캐너 및 카메라 장치에 대한 드라이버가 포함된 SANE 백엔드와 사용자가 사용할 수 있는 응용 프로그램인 SANE 프론트엔드로 구성된다.
- 시스템 A의
- 지원 OS
- 리눅스, 유닉스, OS/2, 윈도우, macOS
- 오픈소스 라이선스
- GPL 라이선스
XSANE(X based interface for the SANE)
- Oliver Rauch가 개발한 SANE의 프론트엔드 기능을 수행하는 GTK+로 개발된 그래픽 기반 응용 프로그램이다.
- 윈도우, 리눅스, 유닉스, OS2, macOS 운영체제를 지원한다.
- 윈도우의 경우, 네트워크의 다른 운영체제의 스캐너를 사용하는 것만 가능하고, 로컬의 스캐너를 지원하지 않는다.
- 기능
- 독립적으로 실행하거나 GIMP 이미지 조작 프로그램으로서 실행할 수 있다.
- 스캐너나 카메라의 다양한 형식의 이미지를 파일로 저장 가능하다.
- Fax나 프린터로 이미지를 보낸다.
설치 및 실행
$ sudo yum install xsane # yum을 사용해 xsane 설치 $ xsane # 스캐너를 찾고 프로그램이 실행됨
스캐너 관련 명령어
- sane-find-scanner
- SANE 백엔드를 지원하는 SANE USB 및 SCSI 스캐너를 검색한다.
/dev/sg0
,/dev/scanner
와 같은 기본 SCSI 장치 파일을 검사하여 SCSI 스캐너를 찾는다./dev/usb/scanner
,/dev/usbscanner
와 같은 USB 커널 스캐너 장치 파일을 스캔하여 USB 스캐너를 찾는다.- 병렬 포트로 연결된 대부분의 스캐너는 찾지 못한다.
-p
를 통해 일부 스캐너가 검색될 수 있다.
옵션
옵션 내용 -q 별도의 설명없이 스캐너 장치만 출력한다. -v - 옵션을 한 번 주면 장치 이름과 테스트 결과를 포함한 자세한 정보를 출력한다.
- 옵션을 두 번 주면 SCSI INQUEIRY 정보와 USB 디바이스 디스크립터 정보를 보여준다.-p 병렬 포트에 스캐너가 연결됐는지 체크한다. 예제
$ sane-find-scanner -v # 사용 가능한 스캐너가 있는지 체크하고 검색된 각각의 장치 파일을 줄 단위로 자세히 출력 $ sane-find-scanner /dev/scanner # /dev/scanner 장치 파일에 연결된 SCSI 스캐너만 검색 $ sane-find-scanner -p # 병렬 포트에 연결된 스캐너가 지원가능한지 체크
- scanimage
- 평면 스캐너나 카메라와 같은 장치의 이미지 스캔을 제어한다.
- 스캔된 이미지 데이터는 PNM이나 TIFF 형식이다.
- SANE 인터페이스를 통해 스캔을 수행해서 sane 백엔드가 지원하는 디바이스면 사용할 수 있다.
형식
Scanimage [option]
옵션
옵션 의미 -d, —device-name - 장치 이름을 설정한다.
- 장치 이름은 epson:/dev/sg0 이나 hp:/dev/usbscanner0과 같은 형식이다.—format - 이미지 형식을 지정한다.
- pnm이나 tiff를 지정할 수 있고 지정하지 않으면 pnm이 기본값이다.-L, —list-devices 사용 가능한 스캐너 장치 목록을 출력한다. 예제
$ scanimage -L # 스캐너 장치 목록 출력 $ scanimage >image.pnm # 기본 설정으로 스캔을 수행하여 image.pnm을 생성 # 100X100mm 크기ㅗ로 스캔하고 tiff형식으로 image.tiff를 생성 $ scanimage -x 100 -y 100 --format=tiff >image.tiff
- 평면 스캐너나 카메라와 같은 장치의 이미지 스캔을 제어한다.
- scanadf
- 자동용지급지장치(ADF: Automatic Document Feeder) 기능이 있는 스캐너에서 여러 장의 이미지를 스캔한다.
- 장치에 스캔을 요청하고 장치가
SANE_STATUS_NO_DOCS
상태 코드를 반환할 때까지 스캔을 수행한다.
- 장치에 스캔을 요청하고 장치가
형식
scanadf [option]
옵션
옵션 의미 -d, —device-name SANE의 장치 파일명을 적는다. -L, —list-devices 사용가능한 스캐너 장치 목록을 출력한다. -o, —output-file - 스캔 결과물 파일명을 지정한다.
- 파일명에 %를 사용하면 페이지 번호로 대체된다.예제
# epson 스캐너를 사용해 300dpi 해상도로 캡쳐한 후 image_0000, image_0001, ... 형식으로 이미지 파일 생성 $ scanadf -d epson:/dev/sg0 --resolution 300 -o image_%04d
- 자동용지급지장치(ADF: Automatic Document Feeder) 기능이 있는 스캐너에서 여러 장의 이미지를 스캔한다.