강좌
클라우드/리눅스에 관한 강좌입니다.
리눅스 분류

[연재잡담-01] NAZU가 사용하는 LINUX [UML?] (GPL)

작성자 정보

  • 웹관리자 작성
  • 작성일

컨텐츠 정보

본문



독자 여러분, 안녕하십니까^^?
현재, 연재잡담을 진행중인 NAZU입니다.

금일의 잡담에 앞서..

[연재잡담-00]을 쓰고 난 후,
선배님으로부터의 격려 및 궁금(제가 누군지..)증에 대한 질문도 왔었고..
앞으로는 어떤 형식으로 나갈지 고민을 많이했습니다.

1. 그냥 잡담으로 끝날것인가?
2. 미지의 세계에 대한 소개로 연재할 것인가?
3. 강좌형식으로 쓸것인가?

NAZU의 연재잡담은 약간의 커리큘럼적인 요소들을 가지고 있기에..
강좌형식을 채택하려다가, 3~4일정도 고민해봤습니다.
여러분들께 리눅스를 공부할수 있는 방법을 소개하는 것으로써,
역시 커리큘럼 제시 및 즐길거리 제시 형태가 나은 듯 싶습니다.

본, 연재잡담은 강좌가 아닙니다.
여러분께 커리큘럼을 소개해 드리는 것일 뿐...
요지는, "공부하세요~" 입니다.
단, 따분한 공부가 아닌
리눅스를 위한 즐기기 위한 스스로학습..^^?

자, 그러면 연재잡담을 진행하도록 하겠습니다.

======================================================================
1. 잡담에 들어가기 전에 여러분께 드리는 질문
======================================================================

우선 질문을 드리겠습니다.

질문 1. 여러분은 무슨 리눅스를 쓰십니까? (배포판이라든지..)
질문 2. NAZU는 무슨 리눅스를 쓸까요?

1)
여러분이 쓰시는 리눅스는..(제 예상입니다만,)
여러가지 95% 이상이 배포판 이실듯 싶고 4.9% 정도가 플렛폼 전용
나머지 0.1%가 LFS가 아닐까 합니다. 물론 추측입니다. ^^;;

2)
NAZU가 이제껏 써본 리눅스는
Redhat, SlackWare, Debian, Rescue CD류, Knoppix Live CD
그리고 nazu표 허접제작 CD들이 되겠습니다. (기억나는것들만 대략..)
그리고 필요에 따라서 UML을 씁니다.

리눅스를 설치하는 이유는??
당연히 리눅스를 사용하기 위해서 입니다.
허나, 사용자들의 리눅스 사용용도는 천차만별이겠지요?
(한번쯤 여러분이 왜 리눅스를 쓸까? 라고도 생각해 봐주시는 쎈스~)

그래서, 이번 잡담에서는 UML이라는 주재를 다뤄 보도록 하겠습니다

======================================================================
2. UML 소개전에 여러분께 하소연하는 입아픈 사연..
======================================================================

(생각만해도 입아픈 사연이 있어서 올리도록 하겠습니다.)

NAZU가 한 프로젝트의 담당 팀장으로써 날밤을 설칠 때,
잦은 kernel fault(패닉이라고도 하죠)로 인하여..
OS 재설치 작업이 주가되던 시기라 고민에 빠졌었습니다.

<프로젝트 담당 팀장으로써 이 문제를 어떻게 해결할 것인가?>

그리고 하나의 빛줄기를 찾아냈습니다. 그것이 바로 UML

결국 주간 업무보고가 시작되고, 어느 순간 적막이 흐르기 시작했습니다.
이때를 기회삼아 NAZU가 뜬금없이 용감무쌍한 한마디 던졌습니다.

"UML을 도입해 보는것이 어떠시겠습니까?"
그 순간 모두들 조용해져 버리고, NAZU 혼자서 신나게 떠들었습니다.
모두들 고개를 끄덕이며... NAZU는 아주 만족스럽다고 생각을 했었습니다.

회의가 끝이 날 무렵, 좌장(학회에서의 감독을 이르는말)께서 물으시길..
"그런데 UML이 뭐냐? 왜 그걸 쓰지?"
신나게 떠들었는데 결국은 입아픈 사연이 되어버렸습니다.

보통 프로그램을 손대셨다는 분들은 UML을 이렇게 알고 계십니다.
"Unified Modeling Language"

물론 저도 압니다. 그러나.. 잘 생각해보시면
K.H,W.라는 이니셜을 사용하는 사람들이 허벌나게 많습니다.
그러나, K.H.W가 모두 똑같은 이름은 아니지요?

제가 말한 UML은 User Mode Linux라는 것이지요..

======================================================================
3. 커널 레벨(모드)과 사용자 레벨(모드)
======================================================================

UML의 뜻을 풀이해보면, 사용자 모드 리눅스 입니다.
즉, 말 그대로 사용자가 띄우는 리눅스 입니다.

이때, 사용자가 띄우는 리눅스라는 말은,
전원을 켜서 부팅과정을 거쳐서 띄워지는 리눅스를 말하는 것이 아니라
사용자가 명령어를 실행시켜 리눅스라는 프로그램을 띄우는 것을 말합니다.

이해를 돕기 위해서 좀더 자세히 설명 드리겠습니다.
사전지식으로 필요한 것이, 커널레벨, 사용자레벨 이렇게 두가지입니다.
이를 비유법을 들어서 설명한다면 다음과 같습니다.

1) 커널이라는 용어를 아시는 분들을 위한 설명

아래와 같은 그림을 많이 보셨을 거라고 생각됩니다.
------------------
사용자 (user)
------------------
쉘 (shell)
------------------
커널 (kernel) 
------------------

a) 사용자가 명령어를 입력하면
b) 쉘이 명령어를 번역하여 커널에 필요한 요청을 하고
c) 커널은 쉘로부터 받은 요청을 수행하여 그 결과를 표시함

이때, "c" 만이 수행할수 있는 것을 커널레벨이라 하며,
a,b에서 오는 요청이 사용자레벨이라고 볼수 있습니다.

a,b에서의 내용인 사용자레벨에서 요청된 명령어(함수)들중 일부가
소위 System Call이라고 불리우는 Kernel API를 호출하여 동작했을 때

- 사용자가 호출한 명령어(함수)의 수행을 사용자 레벨 수행
- System Call을 통해 호출된 Kernel API의 수행을 커널 레벨 수행
이라고 한다고 보시면 쉬울것입니다.

2) 커널이라는 용어를 모르시는 분들을 위한 설명

현재 여러분들은 일반 사용자 계정으로 로그인해 있습니다.
이때, root 만이 사용할 수 있는 어떠한 명령어가 있을 경우
여러분들은 그 명령어를 어떻게해서 사용하시는지요?
아마도 다음과 같은 방법으로 권한을 획득하여 사용하실겁니다.

a) su
b) sudo

- 일반 사용자 일 경우 : 사용자 레벨
- root 권한을 획득했을 경우 : 커널 레벨
이라고 보시면 이해하기 쉬우실 것입니다.
단지, 이를 사용자의 입장이 아니라 프로세스의 입장에서 보시면 됩니다.

======================================================================
4. UML(User Mode Linux)이란 무엇인가?
======================================================================

세상의 여성분들이 3분류로 나뉘듯,
(나의 여자, 남의 여자, 그리고... 아줌마)
(여성 분들도 마찬가지 이실듯.. 아저씨.. 겠죠^^?)
세상의 리눅스를 크게 나누면, 3분류로 나뉩니다.

1) Linux
2) Kernel Mode Linux
3) User Mode Linux

이것들도 내부 개념은 조금씩 다르지만, 쉽게 설명하도록 하겠습니다.
(Kernel Mode Linux나 User Mode Linux가 전부 아래의 형태는 아닙니다.)
(단지, 개념상으로 저런 형태입니다.)
(비유 : 꼬리곰탕이 한국에서는 음식이지만, 외국에서는 버리는 부분임)

Linux
 일반적인 리눅스를 말합니다.
 배포판(혹은 개량되지 않은 커널)등의 설치를 통해 설치되는 리눅스를..

Kernel Mode Linux
 시스템콜을 사용하지 않도록 개량된 커널을 말합니다.
 즉, 사용자가 실행시킨 명령을 커널에 의지(부탁)하여 처리하지 않고
 사용자 단에서 바로 처리한다는 뜻입니다.

User Mode Linux
 System Call을 가상으로 사용자모드에 만든 것입니다.
 User Mode Linux의 실행 후, 어떤 System Call을 호출 하는 경우,
 실제로 System Call을 호출하는 것이 아니라,
 사용자 레벨에서 정의된 특정 함수를 호출하여
 마치 System Call이 동작하는 것 처럼 보여준다라는 뜻입니다.

개념이 어렵나요? 그럼 좀더 쉽게 비유를 들어서 말씀드리지요..
Windows 98 시절의 command / XP 시절의 cmd라는 명령어를 기억하시죠?
이는 DOS라는 운영체제를 가상으로 띄워버립니다.
이렇게 가상으로 띄워진 것을 UMD(User Mode Dos)라고 비유한다면,
UML을 이해하시는데, 상당히 도움이 될거라고 생각됩니다.

주) 비유법은 사용할 경우 사용자에게 연상효과를 주기에 이해를 돕습니다.
    허나, 잘못 이해하여 역효과를 불러 일으킬수 있습니다.
    역효과가 나신 분들은 전문인의 진료(검색)를 받으시기 바랍니다.

======================================================================
5. UML의 설치
======================================================================

경고1 : 컴퓨터에 문제가 생기더라도 책임은 못집니다.
        설치가 실패한적은 전혀 없었습니다.
        하드디스크 용량만 충분하시다면 그냥 설치하셔도 상관없습니다.
        (그렇게 많은 용량은 차지 안했습니다.)
경고2 : 버전에 따라서 설치가 다를 수도 있습니다.

1. CygWin (Windows Platform)

2007년 현재 가장 높은 주가를 달리고 있는 네x버라는 곳의 검색창에
cyg를 치면(엔터치지말고) 검색어 자동완성 기능 콤보박스에,
ajax에 의해 검색된 3가지 단어가 나올것입니다.

cygwin (저희가 설치할 UML입니다.)
cygnet (관심이 있으신분들은 한번 보시죠^^)
cygnus (제가 항상 강조하던 말이죠^^?)

자세한 내용은 cygwin.org에서 확인해 보시기 바랍니다.
설치하기 위해서는 다음의 스킬에 대한 질문은 다음과 같습니다.

a. 게임 설치하실때 어떻게 하시는지?
  다운로드 받아서 거의 무조건, 동의 아니면 다음이 보통이지요..
b. 베틀넷 접속하실때 어떻게하시는지?
  어떤 서버를 선택할지 클릭하시지요?

- 제가 사용해 본바로는..
redhat사의 프로젝트의 일환으로 점점 퇴보하는 듯한 느낌이 듭니다.
물론, 안정화는 되어가고 있지만, 점차 Show Me The Money의 개념인듯..
판매라는 개념에 입각한 후, 변질되는 redhat을 느낄 수 있었습니다.
(제가 redhat계열에서 떠난 이유도, 그 때문인지도 모릅니다.)
실제 Linux와는 차이가 꽤 있습니다만,
간단한 shell이나 , gcc등은 가지고 노시는데 사용하시면 됩니다.
exe로 컴파일되니, 관련 dll파일만 잘 복사하면
다른 pc에서도 실행파일을 사용가능합니다.
(이는 무엇을 뜻하는지, 프로그래머에게도 중요한? 것일듯 싶네요 ^^?)
(눈치 빠르신 분이라면, 이해하셨으리라 밑습니다.)
그리고, 서버군도 동작을 시킬수는 있습니다.(시킬수는!!)

가지고 놀기위해 사용하는 것이라고 보시면 됩니다.

2. User-Mode-Linux (Linux Platform)
유명 배포판은 패키지가 있으므로, 설명없이도 설치 가능하실 듯합니다.
패키지가 없는 경우라 하더라도,
커널 패치와 컴파일에 대해 아신다면, 줏어와서 사용하실 수 있습니다.

- 제가 사용해 본바로는..
제가 처음 사용한 것이 이것으로, 입아픈 사연에서도 말씀드렸듯이
Linux Platform 상에서 커널 수정 작업시 사용했었습니다.
Hardware와 밀접히 관련된 Device Driver Control은 제어가 불가능하고,
(물론, 하려면 할수 있으나, base OS에 악영향이 나타납니다.)
시스템이 오동작으로 다운될 경우, UML전용 파일 시스템이 깨져버립니다.

일반적인 작업이나 Linux의 기능만을 맛보기하시는 분들께는 비추합니다.

======================================================================
6. 잡담 후기
======================================================================

4시간 동안 글을 쓰고, 5일동안 고민한 끝에
수정작업을 거쳐서 이 글을 올리게 되었습니다.

4~5년전쯤, 했었던 것으로 기억나네요. ^^
지금도 거의 소수만 알고 있는 것들이긴 하지만,
이제는 그나마 많은 분들이 알고 계신듯 합니다.

이글에서 제가 여러분께 제시한 공부할 부분은 10가지입니다.
3가지는 눈에 보이도록 바로, 표시해 두었으며,
나머지 7가지를 찾는 부분이 바로 여러분의 몫입니다.
제가 바랬던 나머지 7가지 이외에도 어떤 것들을 찾아내신다면..
이미 여러분은 리눅서가 되기위한 충분한 자질을 가지셨다 판단됩니다.^^

잡담은 이만 줄이도록 하겠습니다. 열심히 즐겨주세요 ^^


관련자료

댓글 0
등록된 댓글이 없습니다.

공지사항


뉴스광장


  • 현재 회원수 :  60,037 명
  • 현재 강좌수 :  35,810 개
  • 현재 접속자 :  91 명