[리눅스마스터 1급] 이기적 이론서 8회차 정리 - 주변장치 관리

🏁 이기적 이론서 학습 범위

  • PART 01 리눅스 시스템 관리
    • CHAPTER 02 장치 관리 (SECTION 02 주변장치 관리)

주변장치 관리

☑️ 디스크 확장

디스크 확장

  • 리눅스 시스템 운영 시 하드디스크의 잔여 용량이 남지 않거나 저장소 용량을 증설하기 위해 새로운 하드디스크를 추가 장착할 수 있다.

하드디스크 추가하기

  1. 하드디스크 시스템에 부착하기
    • 시스템을 끄고 새로운 하드디스크를 시스템에 장착하고 시스템을 켠다.
    • fdisk-l 옵션을 통해 하드디스크가 장착되었는지 확인한다.

        $ sudo fdisk -l # /dev/sdb 장치가 추가됨
              
        Disk /dev/sda: 16.1GB. 16106127360 bytes
        ...
      
  2. 확장 파티션 생성하기
    • 디스크가 시스템에 인식되었으므로 포맷을 하기 전 파티션을 생성한다.

        $ 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
      
  3. 논리적 파티션 생성하기
    • 파티션은 논리적으로 여러 개의 파티션으로 나눌 수 있다.
    • 논리적 파티션 생성을 위해 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
      
  4. 파티션 포맷하기
    • ext4 파일 시스템으로 방금 생성한 논리적 파티션 /dev/sdb5 를 포맷한다.

        $ sudo mkfs.ext4 /dev/sdb5
      
  5. 마운트하기
    • 포맷을 마친 /dev/sdb5/home/francis/tmp 경로로 마운트한다.
      • 마운트 대상이 되는 디렉터리는 미리 생성되어 있어야 한다.
      • 마운트할 때 -t 옵션을 사용하여 마운트 대상의 파일 시스템이 무엇인지 지정해야 한다.
        $ sudo mount -t ext4 /dev/sdb5 /home/francis/tmp
      
  6. 확인하기
    • df 를 통해 하드디스크가 제대로 마운트되었고, 하드디스크의 크기와 사용 가능한 용량을 확인할 수 있다.

        $ df -h
      
  7. /etc/fstab 파일 등록하기
    • 시스템 리부팅 후 자동 마운트 될 수 있도록 /etc/fstab 파일 끝에 다음 정보를 입력한다.

        $ sudo vi /etc/fstab
        (중간 생략)
        /dev/sdb5      /home/francis/tmp     ext4     defaults     1 1
      

☑️ 프린터

리눅스 프린팅 시스템

  • 초기 프린터는 고정 크기, 단일 폰트를 갖는 텍스트 형식으로 한 줄씩 출력하는 라인 프린터를 사용하였다.
    • 속도가 느려 시스템 성능 향상을 위해 스풀링 방식이 소개 되었고, 지금도 적용되고 있다.
  • 초기 리눅스 프린팅 시스템은 BSD(Berkely Software Distribution) 프린팅 시스템을 이용하였다.
    • BSD는 서버에서 동작하는 라인 프린터 데몬(LPD)과 프린트 요청을 위한 lpr 명령어를 포함하는 클라이언트가 구성한다.
  • System VBSD 프린팅 시스템과 기능적으로 동일하지만 명령어 사용법이 달랐던 별도의 프린팅 시스템을 가지고 있었다.
    • ex. BSD 계열의 lpr 명령어가 System V에서는 lp 명령어로 구현되었다.
  • 그 후 다양한 폰트 지원, 이미지 출력, 가변폭 글자 지원뿐 아니라 커닝(kerning), 리가처리(ligature) 등 프린터 출력 기술이 개선되었다.
    • 기존 lpd, lprBSD 프린팅 시스템을 호환하며 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 프로토콜도 지원한다.
    • BSDSystem 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 or http://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 장치 파일로 접근 가능하다.
  • 네트워크 프린터 추가하기
    • 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, exitlpc 대화모드에서 빠져 나온다.
    • 예제

        $ /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) 옵션을 사용한다.
  • 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 프론트엔드로 구성된다.

    Image

  • 지원 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-nameSANE의 장치 파일명을 적는다.
      -L, —list-devices사용가능한 스캐너 장치 목록을 출력한다.
      -o, —output-file- 스캔 결과물 파일명을 지정한다.
      - 파일명에 %를 사용하면 페이지 번호로 대체된다.
    • 예제

        # epson 스캐너를 사용해 300dpi 해상도로 캡쳐한 후 image_0000, image_0001, ... 형식으로 이미지 파일 생성
        $ scanadf -d epson:/dev/sg0 --resolution 300 -o image_%04d
      

© 2021. All rights reserved.

yaejinkong의 블로그