본문 바로가기
임베디드 리눅스 시스템 구축하기

준비!!!

by 상레알 2009. 3. 10.

리눅스는 1991년에 공식적으로 배포된 이후 현재 폭넓게 이용되고 있다. 처음엔 소수의 개발자 그룹이나 인터넷에 익술한 매니아만 사용하는 정도였으나, 최근에는 유닉스처럼 워크스테이션, 서버, 클러스터에 사용할 수 있는 견고한 운영체제가 되었다.
리눅스의 성장과 인기는 자유 소프트웨어 재단 (FSF)이 시작해 밑거름을 제공한 오픈소스 운동을 촉진시켰다. 그리고 언론이나 업체의 관심을 끌면서 합리적이고 실용적인 운영체제로 자리잡게 되었다.

왜 리눅스로 임베디드 시스템을 작동시키려고 할까?  리눅스 개발자 모임, 리눅스를 지원한는 많은 회사 에서 리눅스를 탑재한 임베디드 시스템을 만들기로 결정하는 데에는 리눅스의 유연성(flexibility)이나 견고함(robustness), 저렴한 가격 등 많은 이유가 있을 것이며, 리눅스를 사용하여 임ㅂ디드 시스템을 만드는 방법또한 다양하다.

리눅스는 리눅스 커널, 리눅스 시스템, 리눅스 배포판과 바꾸어 쓸 수 있는 말이다.엄밀하게 말하면 리눅스는 리누스 토발즈(linus Torvalds)가 관리하는 커널을 의미하며, 이는 메인 저장소(repository)와 여러 미러 사이트를 통해 리눅스라는 이름으로 배포된다. 이 코드에는 시스템의 핵심 기능을 제공하는 커널만 포함되어 있으며, 유틸리티는 포함되어 있지 않다. 부트로더가 커널보다 먼저 실행되므로 커널이 시스템에서 가장 먼저 실행되는 소프트웨어는 아니지만, 커널은 일단 실행되면 시스템을 종료할 떄까지 절대로 스왑당하거나 제어권을 잃지 않는다. 사실상 커널은 모든 하드웨어를 제어 하며, 시스템의 다른 소프트웨어에 프로세스, 소켓, 파일과 같은 상위 레벨의 추상성을 제공한다.


커널은 계속 업데이트되기 때문에 각 릴리즈(release)를 식별하기 위해 번호를 매긴다. 이때 숫자 세개를 사용하며, 각 숫자는 점으로 구분한다. 앞의 두 숫자는 버전을 의미하며, 세번째 숫자는 릴리즈를 나타낸다.  예를 들어, 리눅스 2.4.20은  버전 넘버 2.4에 릴리즈 번호 20을 뜻한다. 그리고 2.5와 같은 홀수 버전은 개발 버전의 커널을 말하느고 , 2.4와 같은 짝수 버전은 안정 버전의 커널을 의미한다.임베디드 시스템에 사용할 커널을 선택할 떄는 일반적으로 안정 버전의 커널 중 가장 최신 버전을 선택하면 된다.


임베디드 리눅스

임베디드 리눅스를 정의하는 것은 앞에서 설명한 리눅스의 의미, 즉 커널, 시스템, 배포판으로 시작할 수 있다. 하지만 리누스가 배포한 커널은 임베디드 버전이 따로 없기 때문에 여기에서 커널은 일단 제외해도 된다. 이는 커널을 임베디드 버전으로 만들 수 없다는 뜻이 아니라 임베디드 시스템을 위해 특별한 커널을 따로 구할 필요가 없다는것이다.

임베디드 리눅스 시스템은 단순히 리눅스 커널을 기반으로 한 임베디드 시스템을 지칭하며, 이 커널과 함께 어떤 특정 라이브러리나 사용자용 툴을 사용한다는 뜻은 아니다.

임베디드 리눅스 배포판은 임베디드 리눅스 시스템을 위한 개발 프레임워크나 임베디드 시스템에서 사용하기 위해 변경된 여러 소프트웨어 으용 프로그램 혹은 이 둘을 모두 의미한다.

개발용 프레임워크 배포판은 임베디드 시스템 개발을 돕는 여러 툴을 포함한다. 이는 특별한 소스 코드 탐색기, 크로스 컴파일러 , 디버거, 프로젝트 관리 소프트웨어, 부트 이미지 빌더 등을 포함할 수 있다. 이런 배포판은 주로 개발용 호스트에 설치한다.

임베디드 배포판은 타겟 임베디드 시스템에서 사용할 응용 프로그램을 제공한다. 여기에는 타겟 시스템에서 사용할 특별한 라이브러리, 실행 파일, 설정 파일과 같은 내역을 포함할 수 있다. 또한 타겟 시스템에서 루트 파일시스템 생성을 쉽게 하기 위한 방법도 제공한다.

실시간 리눅스란?

실시간 리눅스는 원래 1996년 빅터 요다이켄이 감독하고, 마이클 바라바노프가 릴리즈한 RTLinux 프로젝트를 지칭하였다. 이 프로젝트의 목표는 리눅스 환경에서 정해진 시간 내에 응답하게 만드는 것이었다.

이 외에도 오늘 여러 형태의 실시간 응답을 제공하고자 하는 다른 많은 프로젝트가 있다. RTAI, Kurt, Linux/RK는 모두 리눅스에 실시간 성능을 제공한다. 몇몇 프로젝트는 기존 커널에 보조적인(secondary)커널을 삽입하여 실시간 성능을 얻었다. 이외의 다른 몇몇 프로젝트에서는 패치 형태로 리눅스 커널의 응답 시간을 개선하기도 하였다.

'실시간'이라는 말을 리눅스와 함께 사용하면 여러 가지를 지칭할 수 있다. 대부분 고정 응답 시간을 갖는 시스템이나 시스템의 컴포넌트를 의미한다. 하지만 '실시간'의 정확한 정의를 사용한다면, 제공되는 기능이 꼭 '실시간'일 필요는 없다는 사실을 알게 될 것이다. '실시간'문제와 이 말의 더 자세한 의미는 '시간 제약성' 이라는 주제를 다룰때 더 자세히 배울것이다.