Linux 관련 커뮤니티에 올라오는 글들을 보면 가끔씩 임베디드 보드나 미니 ITX 보드등에 CF 카드나 메모리 기반 저장장치를 이용해서 리눅스 박스를 꾸미는 분들이 글을 올리시곤 합니다. 재밌어 보이기도 하지만 막상 시도해보려면 장애물이 많죠. 하드웨어 구매에서 리눅스 설치까지 난관이 많습니다. 10월 28일에 한국IBM DeveloperWorks에 임베디드 리눅스 배포판을 설치하는 튜토리얼이 올라와있어서 소개합니다.

원문 : 바닥부터 만들어보는 임베디드 리눅스 배포판


임베디드 환경에서 쓸 수 있는 리눅스(Linux®) 배포판을 어떻게 만들 수 있을지 배워보겠습니다. 이 내용에서는 TS-7800 싱글 보드 컴퓨터를 동작시키는 경우를 예로 들었습니다. 이 튜토리얼에서는 크로스 컴파일링(cross-compiling), 부트 로더(boot loader), 파일 시스템, 루트 파일 시스템, 디스크 이미지, 부트 프로세스 등 시스템을 만들고 배포판을 생성하는 데 결정해야 할 모든 측면에 대해 배울 것입니다.

시작하기 전에

목표

이 튜토리얼에서는 대상 시스템에 리눅스를 어떻게 설치할지 보인다. 미리 만들어진 리눅스 배포판을 쓰는 게 아니라 처음부터 독자들 스스로 만들어내는 것이다. 당연히 대상에 따라 상세 과정은 다르지만 일반적인 주제는 똑같이 적용된다.

이 튜토리얼을 끝내고 나면(적절한 대상 시스템을 갖고 있다면) 셸 프롬프트가 깜빡거리는 제대로 동작하는 리눅스 시스템이다.

이 튜토리얼에 관해

튜토리얼은 크로스 컴파일에 관한 이슈 토론으로 시작한다. 그러고 나서 리눅스 시스템의 컴포넌트가 무엇인지 그리고 이것들을 어떻게 한데 넣을 것인지 논의한다. 빌드와 설치 그리고 대상 시스템의 설정에 대해서도 다룬다.

여 기서 논의할 구체적인 대상 시스템인 Technologic Systems의 TS-7800은 기본적으로 스스로 부트할 수 있는 기능을 갖고 있다. 다른 시스템은 다른 메커니즘을 갖고 있을 것이다. 그리고 이 튜토리얼에서는 이외 모든 가능한 부트 로더에 대해 그다지 자세하게 다루지는 않을 것이다.

먼저 준비해야 할 것들 그리고 시스템 요구 사항

대상으로 삼을 임베디드 시스템에 관심을 갖고 있는 개발자들이든, 꼭 그렇지 않더라도 그저 리눅스 시스템이 어떻게 생겼는지 들여다보고 싶은 개발자들이든 이 튜토리얼에서 많은 걸 얻을 것이다.

사용할 호스트 환경은 우분투(Ubuntu)이지만 다른 시스템도 동작한다. 기본적으로 유닉스(UNIX®)나 리눅스 시스템 관리를 할 수 있다고 가정한다. 이 튜토리얼에서는 호스트 시스템에 루트(root) 접근을 갖고 있다고 가정한다.

이 튜토리얼에서는 여러분이 사용할 셸이 본(Bourne)셸 종류라고 가정한다. C셸을 사용한다면 아마도 프롬프트가 다르게 나타날 텐데 환경 변수 설정할 때 다른 명령어를 사용해야 할 필요가 있을 것이다.

크로스 컴파일링을 위해 필자는 2008년 5월에 발표된 crosstool-ng 버전 1.1.0을 사용했다. 배포 사이트(참고자료 참조)에서 다운로드할 수 있을 것이다. 설치와 설정에 대해서는 상세 내용을 참조하기 바란다.


 기존에 AIX 서버에서 Oracle DB를 운영중이었는데, 여기에 개발용으로 Instance를 하나 추가하는 작업을했습니다. 여러가지 작업이 필요하지만 CREATE DATABASE 명령을 실행하기 전에 해야하는 작업 내용을 정리해보려합니다. 사전 작업 때문에 사실 고생을 좀 했거든요.

1. Parameter file 생성
 $ORACLE_HOME/dbs 디렉토리에 보면 기존 DB에서 사용하는 Parameter file이 있다. 이 파일을 수정해서 init[SID].ora라는 이름으로 파일을 생성한다. 이 작업은 oracle 계정(UNIX 계정)에서 수행해야한다.
 파일 내용중에서 SID, DBNAME, Control file의 위치 및 이름 그리고 디렉토리 이름등을 수정해야한다.
예를 들어 새로 만들 개발DB의 SID를 NEWDEV라고 하면.
수정해줘야 할 부분은 아래와 같다. 음... 그외에도 손볼곳을 손본뒤에 저장한다.
###########################################
# Database Identification
###########################################
db_domain=""
db_name=NEWDEV

###########################################
# Diagnostics and Statistics
###########################################
background_dump_dest=/oracle/dbms/admin/NEWDEV/bdump
core_dump_dest=/oracle/dbms/admin/NEWDEV/cdump
timed_statistics=TRUE
user_dump_dest=/oracle/dbms/admin/NEWDEV/udump

###########################################
# File Configuration
###########################################
control_files=("/db1/NEWDEV/control01.ctl","/db2/NEWDEV/control02.ctl")

###########################################
# Instance Identification
###########################################
instance_name=NEWDEV

###########################################
# MTS
###########################################
dispatchers="(PROTOCOL=TCP) (SERVICE=NEWDEVXDB)"

###########################################
# System Managed Undo and Rollback Segments
###########################################
undo_management=AUTO
undo_retention=3600
undo_tablespace=UNDOTBS1   <= 이 부분은 CREATE DATABASE 명령을 실행할때와 이름을 맞춰줘야한다.


2. Password file을 생성한다.
 Parameter file과 마찬가지로 $ORACLE_HOME/dbs 디렉토리에서 아래 명령을 실행한다.
# orapwd file=orapwNEWDEV password=비밀번호

그리고 중요한거... 기존의 oracle이라는 UNIX 계정이 아닌 다른 계정에서 oracle이 실행되므로 password file은 oracle 계정(UNIX 계정)에서 생성하고, chmod 명령을 이용하여 권한을 777로 만들어 줘야한다. 근데 instance를 추가하고 난뒤에 DB를 생성하면 이게 원상태로 돌아가버리던데... 이건 뭐가 문제인지...

 다리를 다친뒤로 찾아온 첫번째 행운이라고 할까요? 이번주엔 후이즈에서 이벤트 경품으로 GS25 상품 교환권(기프티콘)과 던킨 도넛츠에서 컵 모양 휴지통을 받았습니다. 하루에 두가지 경품을 받은거죠.
너무 기분이 좋아서리... 로또까지 샀습니다. 과연 당첨될까요? ^^;;
 Java에서 Ajax로 웹개발할때 사용할 수 있는 웹 개발 프레임워크, 라이브러리, 툴킷에 대한 문서를 소개합니다. IBM DeveloperWorks에 공개된 문서중 "전문가다운 Ajax 애플리케이션 개발, Part 3: DWR, 자바, Dojo 툴킷을 사용하여 자바와 자바스크립트 통합하기"라는 문서입니다.
 Michael Garpin이라는 eBay의 개발자가 작성한 글로서 장동수님께서 번역하셧습니다.

지금 바로 이름이 떠오르는 자바(Java™) 웹 개발 프레임워크, 라이브러리, 툴킷만 해도 엄청나게 많습니다. 뭐가 뭔지, 어떤 것이 문제 해결에 도움이 될지 알아내는 것만 해도 버거운 일이죠. 그러나 Ajax 개발을 하고 있다면 반드시 알아두어야 할 라이브러리가 바로 DWR(Direct Web Remoting)입니다. 이 라이브러리는 자바 언어와 자바의 웹 기술을 사용하여 Ajax 개발을 더 쉽게 해줍니다. 이 라이브러리는 Ajax와 자바 웹 애플리케이션을 긴밀하게 통합하는 방법에 있어 기준을 제시합니다. DWR은 Ajax 기술들의 광범위한 연합인 Dojo 재단에 합류했습니다. 이 기사에서는 DWR을 사용하면 Ajax가 얼마나 간단해지는지 알아보겠습니다.

이 글은 Ajax 애플리케이션 제작에 사용할 수 있는 인기있는 자바스크립트 라이브러리들에 대해 알아보는 연재의 세 번째이자 마지막 기사다. Part 1에서는 Prototype 라이브러리를 사용하여 노래를 관리하는 웹 애플리케이션을 만들어 보았다. Part 2에서는 script.aculo.us를 사용하여 사진을 관리하는 웹 애플리케이션을 만들어 보았다. 이번에는 DWR을 사용하면 Ajax가 얼마나 간단해지는지 알아보자.

이 기사에서는 DWR 2.0을 사용한다. 예제 코드는 제네릭스(generics)와 어노테이션(annotation)을 사용하므로 자바 5 이상이 필요하다. 예제에서는 MySQL 5.12와 톰캣(Tomcat) 6.0.14를 사용하고 있지만, 쉽게 교체할 수 있을 것이다. 데이터베이스 접근을 위해 JPA(Java Persistence API)를 사용하며, JPA 구현체는 OpenJPA 1.0을 사용한다. 하이버네이트(Hibernate)나 Kodo 등의 다른 JPA 구현체로 바꿔도 된다. 이 기사에서는 Ajax 디버깅을 위한 멋진 도구인 파이어버그(Firebug: 파이어폭스용 플러그인)를 사용한다. 이 도구들에 대한 링크는 참고자료에 나와 있다.

DWR 소개

Ajax 애플리케이션이 처음 등장했을 때는 마법처럼 보였지만, 다행히도 개발하는 과정은 직관적이다. 모든 Ajax 상호작용은 서버 측 엔드포인트(endpoint: 웹 서비스에서 빌려온 용어)와 그 엔드포인트를 호출하는 클라이언트 측 코드가 필요하다. 또한 클라이언트와 서버가 주고받는 데이터를 직렬화(serialize)하는 코드도 필요하다. 서버 측 엔드포인트는 일반적인 서비스(RESTful이든 아니든)면 되지만, 클라이언트 측에는 종종 요구에 부합하는 좀 더 구체적인 코드가 필요하다. 강한 결합(tight coupling)을 피해야 할 때도 있지만, 필요할 때도 있다. 후자라면 DWR이 준비된 해결책이다. DWR은 선언적인 방법으로(declaratively) 서버 측 코드를 Ajax 엔드포인트로 만들 수 있고, 모든 부가적인 설비도 자동으로 만들어 준다. 지금부터 구체적인 예제를 통해 DWR이 어떻게 동작하는지 알아보자.


  네이버와 함께 대한민국 인터넷 포털 서비스의 강자중 한곳인 다음에서 공개한 다음체를 소개하려합니다. 다음에서는 다음체의 공개와 함께 한글관련 공모전과 전시회 등을 진행했으며 다음체는 Zip 압축 파일로 배포됩니다. 상업적인 목적으로는 사용할 수 없다고합니다.

다음체 홈페이지

 홍대 입구역 5번출구 상상마당에서 다음체가 담긴 CD를 배포하는 이벤트도 했었네요. 아깝네요. 다리만 다치지 않았어도 한번 가보는건데...
 2006년에 SUN Tech Day 2006 Seoul 행사에 참석했을때의 감동을 다시 느껴보고자 SUN Tech Day 2008 Seoul 행사에 다시 등록을 했었습니다.


 10월 15, 16 양일간 진행되는 행사에 이번에도 JAVA, Solaris를 두개의 축으로해서 세미나가 준비되었더군요.
2006년도에는 JSP로 웹 개발을 했던 시기라 JAVA쪽 주제를 주로 들었지만, 이번엔 DBA로 이직을 한터라 운영체제쪽, 즉 Solaris쪽 주제를 대부분 선택해서 등록을 했었습니다.
 이게 음... 9월의 이야기입니다. 그런데 예상치 못한 복병이 나타났습니다. 10월 11일(토) 새벽에 설악산 대청봉 가는길에서 제가 발목을 다쳐서는 목발을 짚고 다니게 되었습니다. 불과 삼일간의 치료로는 행사장에 원활하게 다닐수가 없더군요. 그래도 SUN Tech Day 2008 Seoul 행사에 참석하고자 15일(수) 아침 7시30분에 등록을 하러 잠실 롯데 호텔에 갔습니다. 등록하는것부터가 난관이더군요. 길게 늘어선 등록 대기줄에 서서 겨우 등록을 마치고는 다시 사무실로 향했습니다.
 15일(수)부터 휴가를 신청했으나, 16(목)부터 휴가가 허락되어서 15일(수)은 오후에 조금 일찍 퇴근해서 오후 부분만 세미나를 들으려고 했었습니다. 근데, 에휴~ 갑자기... 늦게 일이 생겨서 그날은 6시가 지나서야 퇴근을 할 수 있었고, 첫째날은 아무것도 세미나를 들을수가 없었죠. 슬픈 일입니다. SUN 메신져백을 받지못한것도 많이 아쉽네요. ^^;
 
여기에 첫날 제가 들으려고 했던 세션들을 적어봅니다.

1. 리눅스의 미래 : 오픈솔라리스
   평소에 리눅스에 대한 관심이 많았기에 오픈솔라리스의 행보에도 눈길이 가더군요. 꼭 듣고 싶었는데 아쉽네요.
2. MySQL : Web 2.0을 위한 데이터베이스
   PostgresQL과 함께 공개 데이터베이스 시장의 거목인 MySQL 관련 세션입니다. 현재 DBA로 근무를 하고 있기에 더욱 신경이 쓰이는 세션이었습니다.
3. 오픈솔라리스와 리눅스를 위한 애플리케이션 성능 최적화 기술
4. 오픈솔라리스 시작과 쿨 피쳐
5. Porting open source package to OpenSolaris
6. 오픈솔라리스에서 개발부터 배포까지

 16일(목)은 발목 통증때문에 하루종일 집에만 있었기에 더욱 우울한 하루였습니다. 병원에 나간 두시간 가량을 빼면 쇼파에 누워 냉찜질을 하며 TV를 본 기억밖에 없습니다. 세미나를 못 들은 아쉬움과, 휴가 첫날을 통증과 함께한다는 우울함...

 아래는 둘째날 제가 들으려고 했던 세션들입니다.

1. 데스크탑 및 기업을 위한 가상화 기술
2. What are we doing to optimize Solaris on Intel Architecture
3, 오픈솔라리스와 리눅스를 위한 병렬 애플리케이션 개발
4, 고가용성과 업무 연속성을 위한 아키텍쳐
5. 안전한 개발부터 배포까지


 꼭 위의 경품들을 못 받아서라기보단 평소에 접하기힘든 솔라리스 관련 강의 세션들을 못 들은게 많이 아쉽네요..... 사실 메신저백이 탐이 났었습니다. ^^;;
암튼 다양한 주제의 강의 세션과 실습 세션들을 준비하신 한국썬마이크로시스템에 감사드리며 다음에 이런 기회가 생긴다면 꼭 참석하고싶습니다.
 루비 개발을 위한 IDE로 이클립스의 RDT 플러그인이 발전한 Apatana Radrails가 유명하죠. 저도 Apatana Radrails를 설치해보고 이것저것 플러그인을 설치하는데 시간을 보내곤 했었습니다. 이번에 IBM DW에 올라온 문서는 이클립스에서 루비 개발을 위한 RDT 플러그인에 대한 문서입니다. 간단하게 RDT를 설치했을때 루비 개발에 사용하는 뷰들에 대한 설명이 정리되어 있으며, 추가로 소개된 관련 문서들을 참고하면 루비 개발을 시작하는 분들에게 도움이 될 것입니다.

원문 : 이클립스를 이용한 쉬운 루비 개발


3년 전 developerWorks의 "이클립스용 Ruby Development Tools(RDT)" 라는 기사에서 RDT의 몇 가지 특징에 대해 소개했습니다. 당시 버전이 0.5였던 RDT는 Aptana RadRails로 불리며 Aptana Studio나 이클립스를 통해 사용할 수 있습니다. 이번 기사에서는 RDT 플러그인에 추가된 새로운 몇 가지 특징에 대해 소개하고자 합니다.

RDT 플러그인의 이름과 일부 코드는 변경되었지만 기본적인 기능과 사용조건(licensing terms)은 그대로다. 이클립스에서 루비 개발을 처음 시작한다면 'Neal Ford'의 "이클립스용 Ruby Development Tools(RDT)"에 루비 파일을 생성하고 편집기를 커스터마이징하는 방법, 실행하고 디버깅하는 방법에 대해 나와 있으니 참고하길 바란다. 이 기사는 Ford의 기사를 바탕으로 썼으며 아래와 같은 항목을 살펴볼 것이다.

  • 코드 폴딩 — 클래스와 메서드 들을 코드 폴딩할 수 있다.
  • 아웃라인 뷰 — 아웃라인 뷰를 통해 좀 더 자세하게 볼 수 있다.
  • RI(Ruby Interactive) 뷰 — RDT를 통해 RI 문서를 사용할 수 있다.
  • 작업 태그 — TODO와 FIXME 같은 주석 키워드를 통해 작업을 생성할 수 있다.
  • 루비 브라우저 — 프로젝트 내에서 사용 가능한 루비 리소스를 손쉽게 볼 수 있으며 이를 브라우징할 수 있다.
  • 편집기 기능 향상 — 자동완성(중괄호, 괄호, 큰따옴표, 작은따옴표), 코드 어시스트 기능

시작하기

현재 RDT는 Aptana RadRails V1.0.3으로 불리며 Aptana.com에서 받을 수 있다. 새 버전을 받거나 이클립스 플러그인을 갱신하려면 Aptana's RadRails instructions를 참고하면 된다. Aptana 플러그인을 설치해본 적이 없다면 Plugging Aptana into an existing Eclipse configuration을 참고하자. 또한 Aptana에서는 RadRails 문서를 통해 특정 운영체제에서 생기는 문제 해결방법도 제공한다.


 에휴... 저는 같은 팀 사람들과 떨어져서 따로 파견을 나와있는터라 다 같이 설악산에 간다는 얘기에 가벼운 마음으로 따라나섰는데... 새벽에 발목을 다쳐서는 119 구조대원분들께 구조되서 내려왔습니다. 전치 4주라고 하더군요. ㅜㅜ
 결혼 준비로 바쁠때인데... 그냥 한숨만 납니다...

이젠 무리하게 단체로 어디에 간다고하면 따라나서지 않아야 되겠습니다. 괜히 무리했다가 큰일 치를뻔했습니다. 근데 설악산이 경치는 좋더군요.

 요즘 한글 글꼴이 많이 공개되고 있죠. 신문사, 공공기관, 일반 기업, 인터넷 포탈 서비스 등등 많은 곳에서 공개를 하고 있습니다. 그래서 쓸만한 공개 글꼴들을 모아서 정리해보려합니다. 우선 대한민국 인터넷 포탈 서비스의 최강자 네이버에서 공개된 "네이버 나눔글꼴"과 "네이버사전체"입니다.

 네이버에서 나눔고딕과 나눔명조의 두 가지 글꼴을 나눔글꼴이라는 이름으로 공개했습니다. 윈도우용의 TTF 글꼴과 맥용의 OTF 글꼴이 공개되었으며 각각 설치 프로그램과 압축 파일 형태로 다운로드 받을 수 있게 되어있습니다.
 네이버 나눔글꼴 받으러 가기

 왼쪽에 보이는 부드러운 느낌의 글꼴이 나눔고딕체입니다. 보기 좋죠.














 나눔고딕체에 이어서 나눔명조체입니다. 명조체는 다른 글씨체와 좀 비슷한 느낌입니다. 흠... 보기엔 좋네요.














 그리고 네이버사전체입니다.
네이버에서 중국어사전 서비스와 국어사전 서비스를 이용할때 한글 고어나 중국어가 깨지거나 보이지 않는 현상을 해결하기위해서 배포하는 글꼴입니다. 이 글꼴은 리눅스용 압축 파일까지 배포를 하는군요. 네이버 사전체는 제가 네이버 중국어사전이나 국어사전을 거의 사용하지 않는 관계로 글꼬 모양을 보여드릴 수는 없겠네요. 아쉽지만 다음에 스크린샷을 뜨면 보여드리겠습니다.
 네이버 사전체 받으러 가기
윈도우용 설치 프로그램과 리눅스용 압축 파일을 다운로드 받으실 수 있습니다.
 요즘엔 Oracle 11g가 출시되고 RAC, GRID 등의 다양한 기능을 제공하지만 아직까지 Oracle 9i를 고집하는 시스템도 있다. 특히나 지금 근무중인 곳은 대형 시스템이다보니 한꺼번에 10g나 11g로 옮겨가는 것을 꺼려하고 있다. 이곳만해도 "만약 작업 소요 시간이 지금보다 느리게 나오면 어떻할거냐"는 문제와 함께 "여러대의 DB를 동시에 옮기는데 따른 서비스 중지 시간" 등의 문제로 인해서 쉽게 결정을 못하는 상태이다. 이런저런 문제가 있긴하지만 예산과 인력만 투입된다면 처리될 문제이다. 적어도 내가 보기엔...

물론 DataStage나 기타 관제 소프트웨어, 백업 구성 등등 신경쓸 문제가 너무 많다는것도 맘에 걸리긴 한다. 이런 문제를 한방에 해결하려면 도데체 몇군데 업체가 회의에 참가해야 할런지... 막막하기만 하다. 그래서 일단 Oracle 9i와 9i RAC 설치 연습을 하려고한다.

 운영체제로는 Linux를 선택했다. 앞으로 Linux를 사용하는 곳이 점점 늘어날거라 생각하고 있고(지난번에 소개한 HP Oracle ExaData라는 제품이 Linux 기반이다. 앞으로 이런 제품이 더 많아질거라 생각한다.), 고가의 UNIX 장비를 소유하지 못한 중소기업체에서도 Oracle에 대한 수요가 늘어날거라 생각하기에 Linux에 Oracle 9i를 설치하려고 마음먹었다.

 DB를 선택했고 Linux라는 운영체제를 선택했으니 이제 Linux 배포판을 선택해야겠다. Oracle에서 배포하는 Oracle Unbreakable Linux(다운로드 링크에는 Oracle Enterprise Linux라는 이름으로 되어있다.)를 사용할까 했으나 업데이트에 문제가 있어서 CentOS 4.7을 선택했다. 현재 CentOS는 5.x 버전이 있으나 Oracle 9i 관련 설치 문서는 RedHat Enterprise Linux 4 기반의 문서가 많기에 CentOS도 4.x 버전대를 선택했다. (CentOS는 RedHat Enterprise Linux의 클론이다.)



다른 UNIX 장비에 Oracle을 설치할때와 순서는 비슷하다.

1. 필수 Software 설치 및 OS 환경 설정하기
2. oracle user 환경 설정하기
3. Oracle 9.2.0.4 설치하기
4. Oracle 9.2.0.8 Patch 설치하기
5. Oracle DB 생성하기


+ Recent posts