◈ 지은이의 말 ◈
리눅스(Linux)는 지난 수년간 임베디드 컴퓨팅에서 중추적인 역할을 해왔다. 그럼에도 이 주제를 전반적으로 다루는 책은 지금껏 너무나 적었다. 이 책은 그 ‘결핍’을 해소하고자 만들어졌다. ‘임베디드 리눅스(embedded Linux)’라는 용어는 잘 정의돼 있지 않지만, 온도조절장치에서부터 Wi-Fi 라우터, 산업용 제어 장치에 이르기까지 광범위한 장치 안에 들어 있는 운영체제에 적용될 수 있다. 하지만 이들은 모두 동일한 기본적인 오픈소스 소프트웨어를 기반으로 만들어졌다. 이것이 내가 엔지니어로서 쌓았던 경험과 교육 과정을 개발하는 과정에서 축적해온 자료를 기반으로 이 책에서 설명하는 기술이다.
기술은 멈춰 있는 법이 없다. 임베디드 컴퓨팅에 기반을 둔 산업은 주류 컴퓨팅과 마찬가지로 무어의 법칙에 민감하다. 무어의 법칙이 암시하는 기하급수적인 성장은 이 책의 1판이 출간된 이래로 놀랍도록 많은 것이 바뀌었음을 뜻한다. 3판은 리눅스 5.4, Yocto 프로젝트 3.1(Dunfell), Buildroot 2020.02 LTS 등 주요 오픈소스 요소들의 최신 버전을 이용하도록 완전히 개정됐다. Autotools 외에도, 최근 들어 많이 채택되는 최신 빌드 시스템 CMake 역시 다룬다.
◈ 지은이 소개 ◈
프랭크 바스케즈(Frank Vasquez)
가전제품을 전문으로 하는 독립 소프트웨어 컨설턴트로, 임베디드 리눅스 시스템을 설계하고 구축한 10년 이상의 경험을 갖고 있다. 그 기간 동안 랙마운트 DSP 오디오 서버, 잠수용 수중 음파 탐지기 캠코더, 소비자 IoT 핫스팟을 비롯한 수많은 장치를 출하했으며, 임베디드 리눅스 엔지니어가 되기 전에는 IBM에서 DB2 데이터베이스 커널 개발자로 일했다. 현재 실리콘밸리에 살고 있다.
크리스 시먼즈(Chris Simmonds)
영국 남부에 거주하는 소프트웨어 컨설턴트이자 트레이너로, 근 20년 동안 오픈소스 임베디드 시스템을 설계하고 구축해왔다. 임베디드 리눅스, 리눅스 장치 드라이버, 안드로이드 플랫폼 개발에 대한 전문 교육 및 멘토링 서비스를 제공하는 2net Ltd의 설립자이자 수석 컨설턴트이며 ARM, 퀄컴(Qualcomm), 인텔(Intel), 에릭슨(Ericsson), 제너럴 다이내믹스(General Dynamics)를 비롯한 임베디드 업계의 여러 대기업에서 엔지니어를 교육했다. 또한 임베디드 리눅스 콘퍼런스와 임베디드 월드를 비롯한 여러 오픈소스 및 임베디드 관련 콘퍼런스에서도 다수의 강연을 진행하고 있다.
◈ 옮긴이의 말 ◈
2007년 안드로이드가 발표된 이후 리눅스 커널은 임베디드 장치에서, 어쩌면 PC를 포함한 모든 디지털 기기에서 가장 널리 쓰이는 운영체제 커널로 자리매김했다. 안드로이드 외에 삼성전자의 스마트 TV에 쓰이는 Tizen(https://www.tizen.org)과, 미국 팜(Palm)사가 개발한 후 HP를 거쳐 LG전자 스마트 TV에 탑재된 webOS(http://webostv.developer.lge.com)도 리눅스에 기반을 두고 있다. 또한 자동차 업계에서도 리눅스를 이용한 범용 플랫폼을 만들고자 계속 노력 중이다.
이런 흐름 속에서 이 책의 2판에 이어 3판을 번역하게 돼 기쁘다. 이 책은 임베디드 리눅스를 이용해 장치를 만들 때 고려해야 할 하드웨어 관련 사항, 툴체인과 부트로더 선택, 커널 구성과 루트 파일시스템 생성, 빌드 시스템 선택, 플래시 메모리, 장치 드라이버, 시스템 부트 과정뿐 아니라 만들어진 임베디드 리눅스 플랫폼 위에서 프로그래밍할 때 고려해야 할 프로세스와 스레드, 메모리 관리, 디버깅, 프로파일링, 실시간 프로그래밍 관련 내용 등도 다룬다. 3판에서는 리눅스와 Yocto 프로젝트 버전을 비롯해 전체적으로 최신 내용을 반영해 업데이트되고 상세한 설명이 추가됐으며, 모던 빌드 시스템인 CMake와 파이썬 관련 내용이 추가됐다.
임베디드 리눅스 플랫폼을 만들고 그 위에서 프로그래밍하기 위한 전반적인 내용을 다루고 있으므로, 기존에 RTOS를 사용하다가 리눅스로 전환하려는 사람들에게 도움이 될 것이다. 빌드 시스템의 경우 요즘 리눅스에 기반을 둔 플랫폼과 애플리케이션들을 한꺼번에 빌드하도록 도와주는 Yocto 프로젝트가 많이 쓰이고 있는데, 이 역시 다루고 있으므로 유용하다. 또한 스레드에 대해서도 일반 스케줄링 정책과 실시간 스케줄링 정책을 구별해 설명하고 있어 그 차이를 이해하는 데 도움을 줄 것이다.
리눅스는 임베디드 시스템뿐만 아니라 전통적으로 유닉스가 주로 쓰이던 서버에도 널리 사용된다. 메모리 크기만 다를 뿐 기본적인 작동 방식은 같으므로, 리눅스에 익숙하면 임베디드 시스템에서 서버에 이르기까지 쉽게 적용해 사용할 수 있다는 뜻이다.
2판을 번역한 세 역자가 다시 힘을 모았다. 바쁜 와중에도 애써주신 두 분께 감사드리며, 좋은 기회를 주신 에이콘출판사 여러분께 다시 한 번 감사드린다.
내가 처음으로 임베디드 시스템 소프트웨어를 개발하던 때에 비해 개발 환경이 많이 좋아졌고 임베디드 시스템의 성능도 획기적으로 향상돼 응용할 수 있는 영역이 매우 넓어졌으므로, 이 책을 통해 많은 분이 흥미로운 임베디드 시스템 소프트웨어를 개발할 수 있게 되길 바란다.
- 김기주
◈ 옮긴이 소개 ◈
김기주
포스텍 컴퓨터공학과와 동 대학원을 졸업한 뒤, 지금은 elastic.co에서 에듀케이션 아키텍트Education Architect로 전 세계에 일래스틱서치(Elasticsearch)를 알리고 있다. 공저로 『SecurityPLUS for UNIX』(영진닷컴, 2000), 역서로 에이콘출판사의 『임베디드 프로그래밍 입문』(2006), 『실시간 UML 제3판』(2008), 『리눅스 API의 모든 것』(2012), 『(개정3판) 리눅스 실전 가이드』(2014), 『한눈에 빠져드는 셸 스크립트 2/e』(2018), 『임베디드 리눅스 프로그래밍 완전정복 2/e』(2019), 『페도라로 실습하는 리눅스 시스템 관리 Vol.1』(2022)가 있다.
김병극
웹 개발자로 SW 개발 일을 시작했으며, 피처폰의 자바 관련 업무를 맡았던 것을 계기로 썬 마이크로시스템즈와 오라클에서 자바 VM 개발 업무를 수행했다. 현재는 SCA 도구인 블랙 덕Black Duck의 기술 지원 및 오픈소스 거버넌스, 컴플라이언스 컨설팅 업무를 맡고 있으며, 역서로는 에이콘출판사의 『한눈에 빠져드는 셸 스크립트 2/e』(2018), 『임베디드 리눅스 프로그래밍 완전정복 2/e』(2019), 『실습으로 배우는 하드웨어 보안』(2020)이 있다.
송지연
지엔텔, 노키아 지멘스 네트웍스에서 근무한 경험이 있는 WCDMA, LTE 분야의 통신 기술 엔지니어 출신으로, 취미로 팀을 만들어 개발에 한동안 푹 빠져 있기도 했다. 현재는 주 전공인 SW 개발 분야로 돌아온 후 오라클 개발 팀을 거쳐 로쿠Roku에서 PM으로 근무 중이며, 역서로는 『스프링 핵심 노트』(한빛미디어, 2015)와 에이콘출판사의 『(개정3판) 리눅스 실전 가이드』(2014), 『한눈에 빠져드는 셸 스크립트 2/e』(2018), 『임베디드 리눅스 프로그래밍 완전정복 2/e』(2019) 등이 있다.