지금 여기 나온 책은 kernel 2.2에서의 디바이스 드라이버에 대한 내용을 담고 있는데
원서의 2nd에서는 kernel 2.4에서의 내용을 담고 있습니다..
참고하세요...
임베디드쪽 디바이스 모듈 제작법을 공부하려고 하는데 업체쪽 사람이 이 책을 권유하더군요..
상당히 잘 쓰여진 책이고 국내에 이정도의 책은 구하기 힘들다고 하던데...
읽어보구 많은 도움 되었네요...
최근엔 원서도 구입했습니다... 소장하고 싶더라구요...^^;
굳이 커널 구조를 공부하고 싶지 않더라도 시야가 넓은 프로그래머가 되고 싶다면 한번쯤 봐야될 책이지 않을 까 싶네요...
의자에 앉아 책과 음악을 들으면서 컴퓨터로 커피메이트를
조절해서 커피를 끌이고, TV체널을 바꾸며, 컴퓨터로 욕실의
보일러 온도를 조절하고, 거실의 조명과 어항에 금붕어 밥을
주고... 정말 환상이 아닐수 없다.
그러나 이책을 보면서 그런 환상을 어떻게 이끌어 가야 하나
기본을 배운듯 싶다.
기계 장치를 리눅스에서 어떻게 제어를 하는지
또한 기계 장치를 이용하여 내가 하고자 하는 일을 하기위한
기반의 토대가 무엇이며, 리눅스에서 어떻게 컨트롤해야
하는지 그 기틀과 토대를 마련해 주는 책이다.
많은 사람들이 이런 기초 서적과 심도있는 부분을 연구하여
환상이 아닌 실현으로 이끌어 갔으면 하는 바램이다.
1. 대상 독자층
"리눅스 디바이스 드라이버"는 리눅스에서 동작하는 주변기기를 위한 디바이스 드라이버를 작성하는 개발자, 리눅스를 사용하여 임베디드 장치를 만드는 개발자, 리눅스 커널에 관심이 많은 호사가에게 적합한 개발서이다.
이 책은 심심풀이나 재미로 보기에는 너무 많은 사항을 알고 있어야 하므로 초보자에게는 결코 적합하지 않다. 최소한 x86 하드웨어와 커널과 관련한 기본 지식으로 무장한 상태에서 읽어야 함에 유의하기 바란다. 또한 책 자체만으로 모든 문제를 해결할 수 없는 경우도 있으므로 필요할 때마다 커널 소스 트리를 뒤질 수 있도록 준비해야 한다. 한마디로 중/고급 사용자에게 어울리는 책이다.
2. 주요 내용
"리눅스 디바이스" 드라이버는 제목이 암시하는 바와 같이 리눅스 환경에서 어떻게 디바이스 드라이버를 작성할 수 있는지에 관한 각종 내용을 담고 있다. 하지만 리눅스 커널 컴파일 방법부터 차근차근 나온다고 생각하면 큰 오산이다. 목차를 보면 알겠지만 리눅스 커널을 잠깐 소개하는 듯 하다가 바로 구체적인 디바이스 드라이버 작성법으로 들어가버리므로, 이 책 한 권으로 커널 컴파일에서 세부적인 커널 내부 구조 설명과 디바이스 드라이버 작성에 이르기까지 모든 사항을 해결하려는 욕심은 버려야 한다. 다행히도 커널 내부 구조 설명은 이번에 한빛미디어에서 새로 나온 "리눅스 커널의 이해(Understainding the Linux Kernel 번역판)"을 참조하면 큰 도움을 얻을 수 있을 것이다. 이 책을 읽기 위해 꼭 필요한 리눅스 커널 컴파일 방법은 LDP나 KLDP등에 나와있는 온라인 문서를 참조하기 바란다.
1장. 리눅스 커널 소개
2장. 모듈의 빌드와 실행
3장. 문자 드라이버
4장. 디버깅 기법
5장. 향상된 문자 드라이버 연산
6장. 시간의 흐름
7장. 메모리 획득
8장. 하드웨어 관리
9장. 인터럽트 처리
10장. 데이터 타입의 현명한 사용
11장. Kerneld와 고급 모듈화
12장. 블록 드라이버 적재
13장. Mmap과 DMA
14장. 네트워크 드라이버
15장. 주변 장치 버스의 개요
16장. 커널 소스의 실제 배치
또한 "리눅스 디바이스 드라이버"는 커널 2.2를 다루고 있다는 사실에 주목해야 한다. 하지만 최근 2.4 계열이 급속도로 퍼지기 시작하면서, 2.4와 어울리는 방식으로 디바이스 드라이버를 만들어야 할 필요성이 생기는데, 이럴 경우 유용하게 적용할 수 있는 힌트를 제시하겠다. 바로 오라일리에서 제공하는 온라인 Linux Device Drivers 2nd Edition 페이지(http://www.xml.com/ldd/chapter/book/index.html)를 활용하는 방법이다. 목차를 읽어보고 필요한 부분만 추출해서 참고하는 방식으로 책을 읽으면 별도 돈을 들이지 않고 2.4와 관련한 디바이스 드라이버 작성 기법을 익힐 수 있다. 영어라는 사실에 실망하는 독자들도 많겠지만, 최신의 지식을 익히려면 어쩔 수 없는 상황이라 생각하기 바란다.
3. 내용 평가
이 책의 특징을 한 가지만 제시하라고 하면 "뭔가 자기 힘으로 만들어보려는 성향이 있는 사람만이 재미있게 읽을 수 있다"는 점을 들고 싶다. 일반 리눅스 배포판으로 설치한 환경에서는 심지어 이 책 37페이지네 나오는 예제인 "Hello, world"를 컴파일할 수 조차 없는 자신을 발견할 수 있기 때문이다. 용케 커널을 다시 컴파일해서 버전 체크를 피하는 방법으로 "Hello, world"를 컴파일한 다음에는 출력 결과를 어디서 찾아야할지 막막해진다. 책을 읽어보신 독자들은 동의하겠지만 처음부터 끝까지 이런 황당한 방식으로 내용이 이어진다.
우리나라 사람들은 성질이 너무 급하다. 이러한 추세를 맞추려고 시중에 나와있는 책은 대부분 머리에 생각할 기회를 주는 대신 손이 끊임없이 타이핑하고 마우스를 누르면서 필요한 작업만 열심히 하도록 유도하는 내용으로 가득 차 있다. 결과로 글자 한자도 안 틀리고 어떤 작업을 수행해서 결과를 보면 지식을 습득했다고 착각을 하게 된다. 하지만 디바이스 드라이버 종류가 천차만별이며 새롭게 생겨나는 복잡한 상황에서 과연 이러한 "xyz 따라하기" 입문서 시리이즈가 개발자에게 도움을 줄 수 있을까?
이 책을 지은 필자는 커널 컴파일도 제대로 할 수 없고, /var/log/messages를 살펴서 디바이스 드라이버가 출력한 printk 메시지를 읽을 줄 모르는 개발자들에 초점을 맞추는 대신 진짜로 디바이스 드라이버를 만들고자 하거나 아니면 커널 내부 구조를 파악하기를 원하는 독자를 대상으로 집필한 흔적이 곳곳에 베여있다. 심지어 예제 코드 자체도 모두 조각이 나있어서, 오라일리 ftp 사이트(http://examples.oreilly.com/linuxdrive2/)에서 직접 받아와서 풀어보지 않는 이상 실체를 파악하기 어렵다. 그 대신 이렇게 아낀 지면을 각종 생각할 거리와 경험에서 우러나오는 팁들로 채워놓았다. 이 책을 읽으면 읽을수록 노력하는 자만이 얻을 수 있다는 사실을 깨닫게 된다. 정말 "리눅스 디바이스 드라이버"를 개발하고 싶은가? 그렇다면 이 책과 "리눅스 커널의 이해" 책을 읽고 난 다음 차근차근 리눅스 소스 코드 트리 내부에 존재하는 각종 디바이스 드라이버를 실제로 분석해보기 바란다.
4. 번역 상태
"리눅스 디바이스 드라이버"가 어렵다는 이야기를 주변에서 하도 많이 들어왔기에 도대체 무슨 이유인지를 파악할 필요가 있었다. 크게 두 가지로 나누어서 생각할 수 있다. 하나는 매끈하지 못한 번역이고 나머지 하나는 내용 평가에서 이미 언급했듯이 성질 급한 한국인의 정서에 맞지 않는다는 사실이다. 한글판을 읽을 때 무슨 소리인지 모르는 부분이 여기저기 속출해서 읽는 작업이 아주 괴로웠다고 솔직히 고백하겠다. 불행 중 다행으로 온라인 영문판이 구세주였다고 할까?
지면 낭비할 필요 없이 단도직입적으로 말해서 "Linux Device Drivers 2nd Edition" 영문판을 추천하고 싶다. 책을 구입하거나 앞서 알려준 온라인 책을 인쇄(PDF 포맷도 있으므로)해서 읽기 바란다.
5. 기술적 정확성, 가독성, 편집 상태
솔직히 번역상에 문제가 있어 전반적인 정확성, 가독성이 많이 떨어진다. 똑 같은 문장을 여러 번 읽어서 추측해야 하므로 읽는 독자를 괴롭힐 가능성이 높다. 그나마 편집 상태는 양호하다고 평가한다.
6. 최종 검토 의견
"리눅스 디바이스 드라이버"는 리눅스 상에서 실제로 디바이스 드라이버를 작성하는 진짜 개발자에게 적합한 책이다. 번역상에 문제가 있고, 커널 2.2를 다룬다는 점이 마음에 걸리기는 하지만, 원서 자체만 놓고서는 아주 훌륭하다는 평가를 내리고 싶다. 자매서인 "리눅스 커널의 이해"와 함께 손이 잘 닫는 위치에 놓아두면 개발 시 큰 위안이 될 것이다.
지금 다른 데 적는 것이 없는 듯 해서요.
oreilly.com website에는 2nd 가 나왔는데
혹시 해서 여기 왔더니
전혀 이야기되어 있지 않네요.
현재 kernel 2.4 가 나왔고
지금 여기 나온 책은 kernel 2.2입니다.
뭐 달라진 점만 체크한다면 그냥 봐도 상관없을듯.
책 내용은 아주 좋은 듯하군요. 그러나 번역서를 읽었는데 실망이 무진장 큽니다. 번역판으로 처음 접해서 원서를 구하기가 힘들 것 같았는데, 참 지금 심정이라면 돈 아까운걸 떠나서 원서를 다시 구해 읽고자 하는 마음이 듭니다. 번역 자체가 잘못되었다기 보다는 어구선정에 더 신경을 써 주셔야 할 것 같아서요. 예를 들면 "메쏘드", "폴트"같은 용어들이요. 책을 읽는데 있어서 혼란이 줍니다. 차라리 영어로 적든지 아님 완벽히 한글로 쓰던지, 하여간 책을 번역하신 분을 원서를 보면서 하셨으니 발음만 한글로 옮겨도 그 뜻을 정확히 이해하시겠지만 원서없이 번역본만 보는 사람에게 있어서는 치명적인 오류가 될 수 있다는 것을 알아 주셨음 하네요. 개인적으로 오렐리책을 무척 좋아하는데 앞으로는 번역판은 절대 보지 말아야 할 것 같은 생각을 가지게 됐습니다.
원서가 비싸고, 온라인으로 주문해야 하는 점이 있지만 그래도 원서 볼랍니다. 이 책 내용은 대단히 잘 된것 같은데.. 그리 느낌이 팍팍 오지는 않은 것 같군요. 그럼 앞으로도 좋은 원서를 많이많이 소개해 주세요.