[RHEL6] 하드웨어 명령어 6탄(rdev, readom, sane-find-scanner, scanimage, setkeycodes)
본문 바로가기
IT 이야기/Linux 명령어

[RHEL6] 하드웨어 명령어 6탄(rdev, readom, sane-find-scanner, scanimage, setkeycodes)

by 찬찬이 아빠 2020. 5. 14.
반응형
  26. rdev(장치 조사)

 1) 경로 : /usr/sbin/rdev

 2) 요약 : root 장치, 스왑장치, RAM 디스크 크기, 비디오 모드 조사/설설정

 3) 사용 방법

 rdev [옵션] [ -o offset] [ image [ value [ offset ] ] ]

 rdev [ -o offset ] [ image [ root_device [ offset ] ] ]

 4) 옵션

 -r : rdev 명령어를 ramsize 명령어로 사용(ramsize 명령어와 동일)

 -R : rdev 명령어를 rootflags 명령어로 사용(rootflags 명령어와 동일)

 -v : rdev 명령어를 vidmode 명령어로 사용(vidmode 명령어와 동일)

 -h : 도움말 출력

 

 5) 추가 설명

rdev 명령어는 RAM 디스크 크기, root 플래그, 비디오 모드의 상태를 출력하거나 설정합니다. 시스템 부팅에 사용하는 부트 이미지에는 root 플래그, 비디오 모드, RAM 디스크 크기 등의 정보가 있습니다. 아래와 같이 rdev 명령어를 실행하면 /etc/mtab 파일에서 루트 파일 시스템을 찾아 출력합니다.

# rdev
/dev/sda1 /

 

-r 옵션은 RAM 디스크의 크기를 KB 단위로 확인합니다.

# rdev -r /boot/initrd.img-2.6.32-23-generic
Ramsize 16923

 

커널 부트 이미지 안에는 root 장치, 비디오 모드, RAM 디크스 크기, 스왑 장치를 지정하는 2바이트 값이 있습니다. 초기값으로 바이트들은 아래와 같이 커널 이미지 안의 504(십진수) 오프셋에서 시작합니다.

 

 498 루트 플래그

 (500과 502 예약된 값)

 504 RAM 디스크 크기

 506 VGA 모드

 508 Root 장치

 (510 부트 서명)

 

ramsize 명령어는 rdev 명령어에 심볼릭 링크되어 rdev -r과 같습니다.

# ls -al /usr/sbin/ramsize
lrwxrwxrwx	1	root	root	4	2010-07-01	01:45	/usr/sbin/ramsize -> rdev

 

아래와 같이 rdev -R 명령은 커널 이미지의 플래그 인자값을 확인합니다. 플래그 인자는 파일 시스템을 마운트 할 때 필요한 추가적인 정보를 담고 있습니다. 플래그 값이 0이 아니면 커널은 루트 파일시스템을 읽기 전용으로 마운트 합니다.

# rdev -R /boot/vmlinuz-2.6.32-23-generic
Root flags 1

 

rootflags 명령어는 rdev 명령어를 심볼릭 링크하므로 rdev -R과 같습니다.

# ls -al /usr/sbin/rootflags
lrwxrwxrwx	1	root	root	4	2010-07-01	01:45	/usr/sbin/rootflags -> rdev

 

-v 옵션은 비디오 모드를 확인합니다.

# rdev -v /boot/vmlinuz-2.6.32-23-generic
Video mode 65535

 

vidmode 명령어에서 사용하는 모드값은 아래의 비디오 모드 중에서 지정합니다. 값을 지정하지 않으면 현재의 설정을 출력합니다.

 -3 = 프롬프트

 -2 = 확장 VGA

 -1 = 보통의 VGA

 

vidmode 명령어는 rdev 명령어로 심볼링 링크되어 rdev -v와 같습니다.

# ls -al /usr/sbin/vidmode
lrwxrwxrwx	1	root	root	4	2010-07-01	01:45	/usr/sbin/vidmode -> rdev

 

 

 

  27. readom(컴팩트 디스크)

 1) 경로 : /usr/bin/readom

 2) 요약 : 컴팩트 디스크에 데이터를 읽거나 씀

 3) 사용 방법 : readom dev=device [옵션]

 4) 옵션

 dev=target : 디바이스(target) 지정

 timeout=# : 타임 아웃을 설정한 값(#)으로 지정

 debug=#, -d : debug=#으로 설정한 값(#)을 디버그 값으로 설정하거나 -d 옵션으로 디버그 레벨을 지정. 만일-dd로 지정하면 debug=2와 같음

 kdebug=#, kd=# : 커널 디버깅을 지정

 -silent, -s : 실패 시 에러 메시지를 출력하지 않음

 -v : 일반적인 상세 레벨로 출력

 -V : 명령어 전달에 대한 상세한 레벨로 출력

 f=file : 설정한 파일(file)에서 읽거나 씀

 -w : 쓰기 모드로 변경

 -c2scan : C2 에러 스캔을 사용

 -scanbus : 모든 SCSI 디바이스를 스캔하고 결과를 출력

 sectors=range : 설정한 범위(range)만큼 읽음

 speed=# : 설정한 속도(#)로 읽거나 씀

 ts=# : 설정한 값(#)을 최대값으로 함

 -notrunc : 읽기 모드에서 출력 파일을 생략하거나 이름을 줄이지 않음

 -fulltoc : 현재 디스크에서 전체 TOC를 검색

 -noerror : 에러가 있더라도 중단하지 않음

 -nocorr : 드라이버에 에러 데이터 수정을 적용하지 않음

 retries=# : 재시도 카운트(#)를 지정. 기본값은 128

 -overhead : SCSI 명령의 오버헤드 타임을 잼

 meshpoints=# : 설정한 위치(#)의 읽기 속도를 출력

 

 5) 추가 설명

readom 명령어는 컴팩트 디스크를 읽거나 쓸 때 유용합니다.

-scanbus 옵션은 사용 가능한 SCSI 장치를 스캔합니다.

아래는 1,0,0 버스에 CD-ROM 장치가 있습니다.

# readom -scanbus
scsibus1:
	1,0,0	100) 'TSSTcorp' 'CDDVDW TS-L633C' 'SC00' Removable CD-ROM
    1,1,0	101) *
    1,2,0	102) *
    1,3,0	103) *
    1,4,0	103) *
    1,5,0	103) *
.. 생략 ...

 

위의 예에서 출력한 장치를 지정합니다. 아래는 미디어가 없다고 에러바 발생합니다.

# readom dev=1,0,0
WARNING: the deprecated pseudo SCSI syntax found as device specification.
Support for that may case in the future versions of wdim. For new,
the device will be mapped to a block device file where possible.
Run "wodim --devices" for details.
Read speed: 2823 kB/s (CD 16x, DVD 2x).
Write speed: 0 kB/s (CD 0x, DVD 0x)/
Errno: 5 (Input/output error), test unit ready scsi sendcmd: no error
CDB: 00 00 00 00 00 00
status: 0x2 (CHECK CONDITION)
Sense Bytes: 70 00 02 00 00 00 00 0A 00 00 00 00 3A 01 00 00
Sense Key : 0x2 Not Ready, Segment 0
Sense Code : 0x3A Qual 0x01 (medium not present - tray closed) Fru 0x0
Sense flags: Blk 0 (not valid)
cmd finished after 0.001s timeout 40s

 

CD-ROM에 CD를 넣고 다시 시도합니다. 만일 자동 마운트되어 "device is busy" 에러를 출력하면 언 마운트 후에 다시 시도합니다.

$ umount /dev/sr0
$ sudo readom dev=1,0,0
WARNING: the deprecated pseudo SCSI syntax found as device specification.
Support for that may case in the future versions of wdim. For new,
the device will be mapped to a block device file where possible.
Run "wodim --devices" for details.
Read speed: 2823 kB/s (CD 16x, DVD 2x).
Write speed: 4234 kB/s (CD 0x, DVD 0x)/
0:read 1:veri 2:erase 3:read buffer 4:cache 5:ovtime 6:cap
7:wne 8:floppy 9:verify 10:checkcmds 11:read disk 12:write disk
13:scsireset 14:seektest 15:readda 16;reada 17:c2err
18:readom 19:lin 20: full toc
Enter selectioin: 0 (0 - 20)/<cr>:

 

0번부터 20까지의 옵션을 선택할 수 있습니다.

Enter selection: 0 (0 - 20)/<cr>:18
Capacity: 353266 Blocks = 7006532 KBytes = 689 MBytes = 723 prMB
Sectorsize: 2048 Bytes
Mode Sense Data 0F 11 00 00 01 0A 00 80 00 00 00 00 00 00 00 00
Mode page 1: 01 0A 00 80 00 00 00 00 00 00 00 00 00 00 00 00 00
Error handling? 0 ( 0 - 255)/<cr>:
Retry count? 128 ( 0 - 255)/<cr>:
Mode Select Data 00 11 00 00 01 0A 00 80 00 00 00 00 00 00 00
Ignore disk size?
Copy from SCSI (1,0,0) disk to file
Enter filename [disk.out]
Enter starting sector for copy: 0 ( 0 -353266)/<cr>:
Enter number of sectors to copy: 353266 ( - 3532265
Enter number of sectors per copy: 53 ( - 53)/<cr>:
end: 363266
addr: 353266 cnt : 21
Time total: 401.454 sec
Read 855526.53 KB at 2103.7 KB/sec
0:read 1:veri 2:erase 3:read buffer 4:cache 5:ovtime 6:cap
7:wne 8:floppy 9:verify 10:checkms 11:read disk 12:write disk
13:scsireset 14:seektest 15:readda 16:reada 17:c2err
18:readom, 19:lin 20: full toc
Enter selection: 18 ( 0 - 20 )/cr>:^C

 

CD-ROM에서 CD를 읽어 disk.out 파일로 생성합니다.

$ ls -alh disk.out
-rw-r--r--	1	root	root 825M	2010-03-09	18:58	disk.out

 

 

 

  28. sane-find-scanner(스캐너 디바이스)

 1) 경로 : /usr/bin/scan-find-scanner

 2) 요약 : SCSI와 USB 스캐너의 디바이스 파일을 찾음

 3) 사용 방법 : sane-find-scanner [옵션] [디바이스명]

 4) 옵션

 -h : 사용법 출력

 -v : 상세한정보를 출력

 -q : 경고 메시지 없이디바이스 정보만 출력

 -f : USB 장치를 강제로 SCSI 장치로 인식

 -p : 병렬 디바이스를 스캔할 수있도록 활성화

 -F finename : /proc/bus/usb/devices 파일 포맷으로 파일(filename)을 읽음

 

 5) 추가 설명

scan-find-scanner 명령어는 스캐너가 연결되어 있을 때 어떤 디바이스가 연결되어 있고 제대로 동작하고 있는지를 확인할 수 있습니다. 아래는 SCSI와 USB의 모든 포트에서 스캐너가 있는지 줄별로 출력합니다.

# scan-find-scanner -v
This is sane-find-scanner from sane-backends 1.0.20
# sane-find-scanner will now attempt to detect your scanner. If the
# result is different from what you expected, first make sure your
# result is different from what you expected, first make sure your
# scanner is powered up and properly connected to you computer.
searching for SCSI scanners:
checking /dev/scanner... faild to open (Invalid argument)
... 생략 ...

 

특정 디바이스를 지정하여 검사할 수 있습니다.

# sane-find-scanner /dev/scanner

 

-p 옵션을 사용하여 병렬 포트에서 사용 가능한지 확인합니다.

# sane-find-scanner -p

 

 

 

  29. scanimage(이미지 스캔)

 1) 경로 : /usr/bin/scanimage

 2) 요약 : 지정한 이미지를 스캔

 3) 사용 방법 : scanimage [옵션] ...

 4) 옵션

 공백은 하나의 문자만 오는 옵션(예를 들어 -d epson)이고, "="는 다중의 문자가 올 수 있는 옵션(예를 들어 --device-name=eposon)임

 

 -b,--batch[=FORMAT] : 배치 모드로 작업. 형태(FORMAT)는 'out%d.pnm' 또는  'out%d.tif' 등이 올 수 있는데 -format 옵션에 의존적임

 --batch-start=# : 설정한 숫자(#)로 파일의 이름 쪽 수를 시작

 --batch-count=# : 배치 모드에서 지정한 숫자(#) 만큼 쪽을 스캔

 --batch-increment=# : 설정한 숫자(#)만큼 쪽 수를 늘림

 --batch-double : 쪽수를 2배 늘림. --batch-increment=2 옵션과 같음

 --batch-prompt : 쪽을 스캔하지 전에 키를 눌러 확인

 --accept-md5-only : md5 인증을 요규

 -B, --buffer-size=# : 주어진 버퍼 크기(#)로 변경(기본값 32KB)

 -d, --device-name=DEVICE : 디바이스(DEVICE)를 지정

 --format=pnm|tiff : 출력 파일의 형태를 지정

 -f, --formatted-device-list=FORMAT : -L 옵션과 유사하지만 지정한 형태(FORMAT)로 목록을 출력. %d(디바이스 이름), %v(벤더), %m(모델), %t(타입), %i(인덱스 번호), %n (새로운 행)

 -h, --help : 사용법 출력

 -n, --dont-scan : 옵션을 설정할 뿐 실제 스캔은 하지 않음

 -L, --list-devices : 스캐너 디바이스 목록을 출력

 -p, --progress : 진행되는 과정을 출력

 -T, --test : 테스트만 진행

 -v, --verbose : 보다 상세한 메시지를 출력

 -V, --version : 버전 정보 출력

 

<v4l:/dev/video0' 디바이스의 특별 옵션>

 ㅇ1. 스캔 모드

 --mode Gray|Color [Gray] : 스캔 모드를 선택(예. lineart, monochrome, color)

 --channel Camera 1 [inactive] : v4l 디바이스의 채널을 선택(예. television, video-in)

 

 ㅇ2. 지오메트리

 -l 0..607pel (1스텝) [inactive] : 스캔 영역의 상단-왼쪽(Top-left)의 x 위치

 -t 0..391pel (1스텝) [inactive] : 스캔 영역의 상단-왼쪽의 y 위치

 -x 160..767pel (1스텝) [inactive] : 스캔 영역의 너비

 -y 120..511pel (1스텝) [inactive] : 스캔 영역의 높이

 

 ㅇ3. 확장

 --brightness 0..255 [179] : 스캔한 이미지의 밝기를 조절

 --hue 0..255 [0] : 스캔한 임ㅣ지의 블루 레벨을 조절

 --color 0..255 [153] : 이미지의 색상을 조절

 --contrast 0..255 [128] : 스캔한 이미지의 컨트라스트(contrast)를 조절

 --white-level 0..255 [0] : 화이트 레벨을 조절

 

 5) 추가 설명

scanimage 명령어는 스캐너나 카메라 등의 이미지 관련 디바이스를 제어할 수 있습니다. -L 옵션으로 디바이스 리스트를 출력합니다. 아래 예제에서는 웹캠 디바이스를 발견했습니다.

# scanimage -L
device 'v4l:/dev/video0' is a Noname WebCam SCB-1990N virtual device

 

--help -d DEVICE 옵션은 디바이스에서 사용할 수 있는 모든 옵션을 출력합니다.

# scanimage --help -d v4l:/dev/video0

 

옵션 없이 기본적인 설정을 스캔 후에 image.pnm 파일로 저장합니다.

# scanimage > image.pnm

 

화면 크기를 100mm x 100mm로 스캔 후 image.tiff 파일로 저장합니다.

# scanimage -x 100 -y 100 --fromat=tiff > image.tiff

 

 

 

 

  30. setkeycodes(키보드 코드 설정)

 1) 경로 : /usr/bin/setkeycodes

 2) 요약 : 커널 스캔코드를 키코드로 매핑

 3) 사용 방법 : setkeycodes scancode keycode...

 4) 추가 설명

setkeycodes 명령어는 키보드 드라이버에서 정의한 스캔코드(scancode)를 키코드(keycode)로 매핑할 수 있습니다.

setkeycodes 실행 중 에러가 있다면 dmesg 명령으로 메시지 로그를 확인해야 합니다. 아래 "atkbd.c:Use 'setkeycodes e003 <keycode>' to make it known" 메시지는 스캔코드를 정의하지 않았다는 의미입니다.

# dmesg
[ 5512.346163] atkbd.c: Unknown key pressed (translated set 2, code 0x83 on isa0060/serio0).
[ 5512.346170] attkbd.c: Use 'setkeycodes e003 <keycode>' to make it known.

 

showkey -s 명령은 키보드 드라이버의 스캔 코드 값을 확인할 수 있습니다. setkeycodes 명령어는 showkey로 확인된 스캔 코드 값 "e003"을 254"의 키코드로 정의합니다.

 

다만 키코드는 커널 2.6 기준으로 1~255의 범위에서 지정할 수 있습니다.

# setkeycodes e003 254

 

다시 로그를 살펴보면 위의 setkeycodes 에러는 출력되지 않습니다.

 

getkeycode 명령어는 할당된 키코드 값을 출력합니다. 위에서 지정한 "e000" 값이 "254" 값으로 매핑되어 있습니다.

# getkeycodes
Plain scancodes xx (hex) versus key codes (dec)
for 1-83 (0x01-0x53) scancode equals keycode
0x50: 80  81 82 83 99   0  86  87
0x58: 88 117  0  0 95 183 184 185
0x60;  0   0  0  0  0   0   0   0
0x68:  0   0  0  0  0   0   0   0
0x70: 93   0  0 89  0   0  85  91
0x78: 90  92  0 94  0 124 121   0

Escaped scancodes e0 xx (hex)
e0 00:   0   0   0 254   0  0   0 0
e0 08:   0   0   0   0   0  0   0 0
e0 10: 165   0   0   0   0  0   0 0
e0 18:   0 163   0   0  96 97   0 0
e0 20: 113 140 164   0 166  0   0 0
e0 28:   0   0 255   0   0  0 114 0
... 생략 ...

 

참고로 키코드 "254"에 대한 기능을 정의하려면 loadkeys 명령어를 사용합니다.

반응형

댓글