메뉴 바로가기 검색 및 카테고리 바로가기 본문 바로가기

한빛출판네트워크

IT/모바일

이 두 권의 책으로 임베디드 리눅스 세계로의 여행을…

한빛미디어

|

2003-07-16

|

by HANBIT

13,223

저자: 박재호(jrogue at netian.com)

누구를 위한 책인가?

하드웨어와 리눅스는 조금 알고 있지만 임베디드 리눅스 세계가 어떤지 궁금한 개발자를 위한 책으로 특히 다음과 같은 사람들에게 적합하다.
  • 임베디드 시스템 프로젝트 관리자: 프로젝트에 임베디드 리눅스에 대한 전반적인 내용을 적용할지 말지를 결정하기 위해 특성을 파악할 경우 이 책이 도움을 줄 수 있다.
  • 임베디드 시스템 하드웨어 관련 개발자: 리눅스라는 운영체제가 기존 임베디드 운영체제와 어떤 점이 다르고 어떤 특성이 있는지 알 수 있으며, CPU를 비롯한 각종 주변 장치에 이르기까지 리눅스가 지원하는 하드웨어 범위를 파악할 수 있다.
  • 임베디드 시스템 소프트웨어 관련 개발자: 타겟 보드에 부트 스트랩 로더, 임베디드 리눅스 커널, 루트 파일 시스템을 설치하는 절차와 방법뿐만 아니라 개발 환경과 네트워크 환경을 꾸미는 방법을 전반적으로 파악할 수 있다.
그렇지만 임베디드 리눅스 커널을 해킹하거나, 디바이스 드라이버를 작성하거나, 하드웨어를 꾸미거나, 윈도우 시스템 위에서 그래픽 응용 프로그램을 작성하거나, 실시간 프로그램을 작성하길 원하는 개발자에게는 이 책이 전혀 어울리지 않는다는 사실을 미리 경고해둔다.

책 속으로…

목차를 보면 알겠지만, 이 책은 리눅스 기초부터 개발 환경 구축, 커널 컴파일, 루트 파일 시스템 구축, 패키징, 부트 스트랩 로더 설정, 네트워크 설정, 디버깅 방법에 이르기까지 전반적인 내용을 아우른다. 이 책에 나온 내용만 이해하고 있으면, 타겟 보드에 임베디드 리눅스를 탑재해서 동작시키는 과정을 어렵지 않게 성취할 수 있을 것이다( 주의: 이 책은 대상 타겟 보드를 위한 부트 스트랩 로더와 리눅스 커널을 이미 다른 누군가가 이식해놓은 상황을 가정한다).

기존 오라일리 스타일과 다른 점이 있다면 실전에 적용할 수 있도록 소프트웨어를 구하는 방법과 컴파일 하는 방법, 설치하는 방법에 대해 구체적으로 기술하고 있는 것이다. 하지만 전반적인 임베디드 리눅스 시스템을 운영할 수 있는 기본적인 분야만 다루고 있다. 다시 말해, 조금 고급 주제인 윈도우 시스템 컴파일 방법이나 실시간 커널 컴파일 방법은 다루지 않는다. 물론 구체적인 디바이스 드라이버나 구축한 임베디드 리눅스 환경 위에서 응용 프로그램을 개발하는 방법에 대해서도 전혀 언급하고 있지 않다는 점에 주목해야 한다.

구체적인 목차는 다음과 같다.


Building Embedded Linux Systems

참고 도서

Building Embedded Linux Systems
Karim Yaghmour


목차

Preface
1. Introduction
2. Basic Concepts
3. Hardware Support
4. Development Tools
5. Kernel Considerations
6. Root Filesystem Content
7. Storage Device Manipulation
8. Root Filesystem Setup
9. Setting Up the Bootloader
10. Setting Up Networking Services
11. Debugging Tools
A. Worksheet
B. Resources
C. Important Licenses and Notices



자세하게 살펴보기1 ─ 책 Vs. 책

『Building Embedded Linux Systems』와 필자의 책 『IT EXPERT, 임베디드 리눅스』는 여러모로 같은 주제를 다룬다는 점에서 비교하고 싶어지는 맘이 든다. 양쪽 책의 특징을 아래와 같이 표로 간단하게 정리해보았다.

특징 IT EXPERT, 임베디드 리눅스 Building Embedded Linux Systems
리눅스 지원 하드웨어 소개 아쉽게도 개괄적으로 소개하는 수준에서 끝나버린다. 꼼꼼하게 각 하드웨어 소개와 리눅스 지원범위와 해당 패키지를 제시한다.
네트워크 환경설정 NFS/TFTP/DHCP(모두 클라이언트 관점) 정도만 설명하고 넘어간다. 서버쪽 설명이 없다는 점이 단점으로 남는다. NFS/TFTP/DHCP(클라이언트 관점)를 비롯하여 SNMP, SSH, DHCP, telnet, 웹 서버(서버 관점)까지 다양한 내용을 소개한다.
설명대상 타겟 보드 한국에서 구할 수 있는 실습 가능한 타겟 보드를 대상으로 설명한다. 설명 대상 타겟 보드를 특별히 정해 놓지 않았으므로 두리뭉실하다. 본문에서는 MPC 위주로 설명한다.
교차 개발 환경 구축 x86 호스트에서 ARM, MPC를 위한 교차 개발 환경에 대해 세부적으로 다룬다. 실전에 사용할 수 있도록 패치를 제공한다. uclibc나 newlib에 대해서는 전혀 취급하지 않는다. PPC 호스트에서 x86을 위한 교차 개발 환경을 다룬다. 따라서, 현실적으로 활용 범위가 떨어지는 문제점이 있다(누가 파워북에서 x86용 교차 gcc를 컴파일하겠는가?), 하지만 uclibc와 newlib에 대해 다룬다는 장점이 있다.
리눅스 커널 설명 2.4.18을 기준으로 환경 설정과 컴파일 방법을 설명한다. MMU없는 uclinux는 다루지 않는다. 2.4.18을 기준으로 환경 설정과 컴파일 방법을 설명한다. MMU없는 uclinux는 다루지 않는다.
루트 파일 시스템 tinylogin, busybox, sysvinit, bash에 대해 다룬다. 컴파일에 필요한 별도 패치를 제공하므로 쉽게 컴파일을 진행할 수 있다. tinylogin, busybox를 중심으로 필요한 부분을 설명한다. 각 구성요소 마다 uclibc와 링크시키는 경우도 설명하고 있으므로 용량에 신경을 쓰는 개발자에게 도움이 된다. 대신 별도 패치를 제공하지 않으므로 시행착오가 우려된다.
패키징 NFS 부팅, 램디스크, EXT3(저널링 파일 시스템), initrd, MTD, JFFS2, CRAMFS를 다룬다. 미디어로 일반 플래시와 CF(Compact Flash)를 주로 다루고 있다. NFS 부팅, 램디스크, initrd, MTD, JFFS2, CRAMFS를 다룬다. 미디어로 일반 플래시와 M-Systems사에서 나온 DoC(Disk On Chip)을 주로 다루고 있다. NFTL 역시 다룬다.
부트 스트랩 로더 주요 부트 스트랩 로더인LILO/GRUB/PPCBOOT/Redboot는 물론이고, 타겟 보드별 전용 부트 스트랩 로더까지 다룬다. 주요 부트 스트랩 로더인 LILO/GRUB/U-Boot를 다룬다. 부팅방법과 모니터 사용법 설명이 빈약하다.
디버깅과 개발 gdb/gdbserver, 컴파일러 최적화 프로파일러 등을 다룬다. gdb/gdbserver, 커버리지 테스트, 프로파일러, 커널 추적 도구, 시스템 성능 검증 도구 등을 다룬다.
윈도우 시스템 Tiny-X와 마이크로윈도우를 위한 커널 설정과 윈도우 시스템 컴파일 방법을 다룬다. 해당 사항 없음
실시간 시스템 RTAI, RT-Linux 환경 설정과 컴파일 방법을 다룬다. 해당 사항 없음


표를 보면 알겠지만, 두 도서의 접근 방식에는 물론 차이가 보인다. 하지만 실제 교차 개발 환경, 부트 스트랩 로더, 커널, 루트 파일 시스템을 구축하고 패키징까지 하는 방법을 다룬다는 점에서 거의 비슷한 주제를 놓고 집필한 이란성 쌍둥이 책으로 보아도 될 것이다. 특정 회사에 얽매이지 않고 최대한 공개 소스만을 다루고 있다는 점도 공통적인 특징이다.

이와 같은 맥락에서 볼 때, 두 책은 같은 분야를 다룬다는 점에서 상호 경쟁적이면서도 상호 보완적이다. 즉 『Building Embedded Linux Systems』『IT EXPERT, 임베디드 리눅스』보다 이론적으로 더 튼튼하고 정교한 토대를 제공한다. 반면 『IT EXPERT, 임베디드 리눅스』『Building Embedded Linux Systems』보다 실전에서 필요한 패치 방법과 대응 방안에 대해 훨씬 더 구체적으로 설명하고 있다. 하지만 서로 유사한 점이 많기 때문에 일반 독자들이 상기 책 두 권을 모두 갖추고 있어야 할 필요는 없어 보인다.

비록 중간중간 실제 명령 예제가 나오므로 느낌은 조금 다르겠지만, 『Building Embedded Linux Systems』는 간결하면서도 명쾌한 설명을 앞세운 전형적인 오라일리 스타일대로 쓰여진 책이다. 따라서 단기간에 임베디드 리눅스에 대한 지식을 습득하고 싶은 개발자에게 추천할만 하다. 하지만 윈도우 시스템과 실시간 커널 쪽을 다루지 않으며 국내에서 많이 사용하는 타겟 보드를 다루지 않는다(본문 중 일부 장에서 독일에서 많이 사용하는 TQM 시리즈에 해당하는 내용을 다루고 있다). 또한 다양한 플랫폼에 따른 구체적인 패치 방법을 명확하게 제시하고 있지 않다는 점에서 국내 독자에게 소개하기가 조금 어렵지는 않을까…하는 걱정이 들기도 한다.

자세하게 살펴보기2 ─ 기타 사항

오탈자는 그렇게 많지는 않았다. 기술적으로도 실제 필자가 작업한 내용을 토대로 내용을 정리해서 집필했기 때문에 상당히 정확하다. 하지만 응용 프로그램에 대한 패치 방법을 보기 좋게 정리하거나 플랫폼별로 파일 형식으로 만들어 놓으면 더욱 좋지 않았을까…하는 생각이 든다. 물론 임베디드 환경 특성상 100% 따라하기 식으로 집필하는 작업은 불가능에 가깝지만, 실제 응용 프로그램이나 교차 개발 환경을 컴파일하다 보면 “아” 다르고 “어” 다른 상황을 너무나 많이 만나기 때문에 그냥 ‘문서참조’ 정도로 설명해서는 필요한 응용 프로그램과 교차 개발 환경을 실전에서 환경설정/컴파일하고 구축하기가 무척 힘들 수도 있다.

가독성 측면에서 예제 입력과 본문 설명이 중간 중간에 섞여 있기 때문에 필요한 사항을 찾으려면 고생 좀 해야 할지도 모르겠다. 하지만 그나마 다행으로 본문에서 예제를 구분해서 알아보기는 쉽다.

편집 상태는 전형적인 오라일리 방식을 따르고 있으므로, 기존 오라일리 스타일을 좋아하는 독자라면 충분히 만족할 것이다.



최종의견

이 책은 임베디드 리눅스 시스템과 관련된 전반적인 사항을 쉽게 풀어서 설명하는 길잡이 구실을 하는 책으로 볼 수 있다. 이 책을 읽고 나면 임베디드 리눅스 시스템이 어떻게 생겼고 실제로 현장에 적용하기 위해서는 무엇을 해야 할지 어느 정도 감을 잡으리라 확신한다.
TAG :
댓글 입력
자료실

최근 본 책0