# 본 게시글은 작성자 본인의 스터디한 내용을 바탕으로 작성된 글입니다.
# 본 게시글에는 일부 잘못된 정보가 포함되어있을 수 있습니다.
# 이 글을 열람하는 것은 위 사항에 동의하는 것으로 간주합니다.
# 잘못된 정보에 대한 예의바른 태클 및 지적질 적극 환영합니다.
안녕하세요. Mr. Rootable입니다.
주말은 편히 쉬셨는지요? 전 개인적으로 요 며칠 초여름처럼 덥다가 주말에는 시원하게 비도오고, 바람도 제법 불어서 야외 활동은 못했지만 나름 좋았습니다. 비오는 날 집에 있는 것만큼 편하고 좋은 것도 없죠. (무한긍정~ㅋㅋ)
오늘은 리눅스에서의 SATA나 SCSI 드라이버와 같은 장치 파일(Device File)에 대해 간단히 다뤄볼까 합니다.
왜 장치면 장치지 장치 파일일까요? 리눅스에서는 모든 것을 파일로 관리하게 되어있습니다.
어떤 장치를 리눅스에 마운트하면 리눅스에서는 해당 장치를 표현하는 장치 파일로 장치관리가 됩니다.
이 장치파일들을 사용할 수 있게 해주는 것이 바로 장치 드라이버(Device Driver)입니다.
디바이스의 종류는 블록 다바이스(Block Device)와 캐릭터 디바이스(Character Device)가 있습니다.
블록 디바이스(Block Device)
보통 하드디스크나 CD/DVD, 플로피디스크 등의 장치를 말하며, 블록이나 섹터 등의 정해진 단위로 데이터를 전송합니다. I/O 전송속도가 높은 것이 특징입니다.
캐릭터 디바이스(Character Device)
키보드, 마우스, 테이프, 모니터, 프린터 등의 장치가 있으며, byte 단위로 데이터를 전송합니다. I/O 전송속도가 다소 느릴 수도 있으나, 어플리케이션단에서 버퍼링을 제어하므로, 성능에 따라 차이가 있을 수 있습니다.
Step 1 : /dev 디렉토리 살펴보기
그럼 리눅스의 모든 장치를 관리하는 /dev 디렉토리로 한번 가볼까요?
/dev 디렉토리에는 장치드라이버와 터미널, 프린터 등등 각종 주변장치들을 나타내는 파일들이 있습니다.
# cd /dev
# ls -la
/dev 디렉토리안의 내용을 잘 보시면, 파일유형이 c나 b로 시작하는 파일을 볼 수 있습니다.
c로 시작하는 것은 캐릭터(Character) 디바이스를 뜻하고, b로 시작하는 것은 블록(Block) 디바이스를 뜻합니다.
/dev 하위에 보시면 block이라는 디렉토리가 있습니다.
이 디렉토리에는 모든 블록 디바이스가 있습니다.
# cd block
# ls -al
sr0, sda, sda1, sda2, sda5가 있네요.
아마도 현재 사용하고 있는 리눅스시스템의 블록 디바이스 목록이 보이므로 여러분들은 저와는 좀 다를 수도 있습니다.
이 장치파일들의 명명 규칙은 바로 알아보겠지만, sr0은 CD-ROM을 말하며, sda1은 SATA 드라이브의 첫번째 주파티션을, sda2는 두번째 주파티션을 말합니다.
Step 2 : 장치 명명 규칙
각 장치의 이름은 어떤 식으로 부여될까요?
신경써서 봐야할 부분은 하드드라이브 장치의 이름입니다.
하드드라이브 장치의 명명 규칙은 하드드라이브의 종류에 따라 다릅니다.
먼저, 하드드라이브와 종류에는 IDE방식과 SCSI방식이 있죠.
IDE방식은 저가형PC에서 주로 사용하려고 설계되었습니다.
또한, 마스터(Master)/슬레이브(Slave) 형태로 설정해야만 하며, 상대적으로 속도가 느립니다.
반면, SCSI방식은 속도가 빠르지만 가격이 좀 비쌉니다. 마스터/슬레이브 설정할 필요도 없죠.
그럼 각각 리눅스에서 장치파일 이름은 어떻게 되느냐?
IDE 하드드라이브는 hd로 시작하고, SCSI 하드드라이브는 sd로 시작합니다.
그리고선, 드라이브의 순서에 따라 a,b,c 등의 뒤에 붙게 되어있습니다.
그 외에 다른 장치들의 이름은 쉽습니다.
USB장치는 /dev/usb, 터미널은 /dev/tty, 플로피디스크는 /dev/fd 이죠.
플로피디스크는 이제 제주도의 넥슨 컴퓨터박물관 같은 곳에나 가야 있을 법한 유물이죠 ㅋㅋㅋㅋ
포렌식을 하려면 하드드라이브의 이미지도 뜨고 그래야 하는데 장치파일 다루는 기초는 알아야합니다.
더욱 더 합시다!! <끝>
'HOW TO HACK > Basics' 카테고리의 다른 글
해커라면 알아야 할 리눅스 기초-18 : 리눅스 아파치(Apache) 설정하기 (3) | 2016.05.20 |
---|---|
해커라면 알아야 할 리눅스 기초-16 : 파일 링크(하드링크, 심볼릭링크) 생성, 삭제 (ln) (1) | 2016.05.12 |
해커라면 알아야 할 리눅스 기초-15 : Client DNS (0) | 2016.05.04 |
해커라면 알아야 할 리눅스 기초-14 : MySQL에 SSH 터널링으로 연결하기 (0) | 2016.04.29 |
해커라면 알아야 할 리눅스 기초-13 : MySQL 다루기 (2) | 2016.04.27 |