http://www.zdnet.co.kr/builder/platform/nix/0,39031679,39141605,00.htm
리눅스는 윈도우가 아니며, 몇 가지 유사성을 띠고 있다 해도 리눅스를 좀 편하게 쓸 수 있으려면 그 전에 "뭔가 새로운 방법"을 배워야 한다는 걸 깨달아야 한다. 리눅스는 유닉스의 오픈소스 복제품으로, 유닉스란 도스(DOS)와 윈도우 이전부터 있던 운영체제이며 다중 사용자용으로 설계된 안전한 운영체제(OS)이다.
다음에 기술할 내용은 리눅스와 다양한 BSD류의 유닉스 기반 *nix 시스템에 일반적으로 적용된다. 이 글에서는 모두 리눅스에서 사용한다고 가정한다.
반드시 알아야 할 10가지를 다음에 나열했다.
1. 파일 계층
각 드라이브 당 파일 트리를 하나씩 갖고 있는 여타 OS와는 달리 리눅스 파일 시스템은 하나의 거대한 트리 구조이다. 맨 꼭대기에 / (루트)가 있고 모든 폴더, 파일, 드라이브는 이 루트에서 가지가 뻗어나간다.
예를 들어, 여러분이 하드 드라이브 2개(a와 b), 플로피 드라이브 1개, CD롬 1개가 있다고 하자. 첫 번째 하드 드라이브는 파티션이 둘로 나누어져 있다고 하자(a1과 a2). 윈도우에서는 다음과 같이 표시된다.:
+ hard drive a, partition one (hda1): C Drive
+ hda2: D Drive
+ hdb1: E Drive
+ floppy: A drive
+ CD-ROM: F Drive
리눅스에서는 하나의 파일 시스템으로 나타날 뿐 윈도우의 예처럼 5개가 아니다. 각 드라이브는 트리에 마운트(mount)되고 마치 폴더처럼 동작한다. 드라이브는 다음과 같이 위치시킬 수 있다.:
+ hda1: / (our Root)
+ hda2: /home
+ hdb1: /home/user/music
+ floppy: /mnt/floppy
+ CD-ROM: /mnt/cdrom
D 드라이브와 E 드라이브는 C 드라이브 안에 붙어있으며 드라이브를 옮겨가기 위해 최상위까지 갈 필요는 없다. 그저 한 폴더에서 다른 폴더로 이동하는 걸로 간단하게 이동이 끝난다. 플로피와 시디롬도 마찬가지여서 하나의 파일 시스템의 일부분으로 /mnt 하에 붙어있다. 설치 프로그램이나 사용자가 컴퓨터에게 뭐가 어디에 붙어있고 어떻게 조작해야 하는지 알려주는 /etc/fstab 파일을 어떻게 설정하느냐에 따라 실제로 이 드라이브들은 리눅스 시스템 어디에든 붙일 수 있다. 그림 A를 보라.
2. 모듈식 시스템
윈도우 XP, 윈2k, 윈98, 윈95, 애플 OS X의 속이 어떤지 생각해 보라. 각기 내부에 서로 다른 컴포넌트를 지니고 있고 서로 다른 그래픽 환경을 갖고 있을 것이다. XP에서 동작하는 미디어 플레이어에, 98의 파일 관리자에, 윈2k의 안정성에, OS X의 외관을 한데 합치고 싶다면 어떻게 할 수 있을까?
리눅스에서 시스템의 각 부분은 서로 독립적이어서 이것저것 섞어서 여러분의 OS를 흡사 프랑켄슈타인 OS로 만들 수도 있다. 방화벽으로 돌릴 프로그램은 이것, 미디어를 재생할 프로그램은 저것, 파일 관리자로 돌릴 건 또다른 어떤 것 등 다양한 프로그램 중에서 선택해서 쓸 수 있다.
MS의 운영체제는 모든 것이 상호 연결돼 시스템의 각 부분이 서로 의존하고 있기 때문에 ‘탑’에 비유할 수 있는 것과는 달리, 리눅스 OS는 마치 시장처럼 여기저기 펼쳐져 있다. 시장에서는 모두들 공익을 위해 함께 움직이지만 시장 상인(리눅스의 독립적 부분)들은 시장에서 빠질 수 있고, 그래도 시장(운영체제)은 돌아갈 것이다. 미디어 플레이어나 파일 관리자를 원치 않는다고? 빼버려라! 여러분 OS는 금이 간 탑처럼 쓰러져 버리지 않을 것이다.
이런 모듈화가 돼 있기 때문에 리눅스 배포판(distributions. 영어로 보통 distros라고 불린다)은 종류가 꽤 많다. 어떤 개인이든 회사든 자신들이 가장 유용하다고 생각되는 걸 찾아내서 모은 후에 거기다가 이름을 갖다 붙인다. 레드햇(RedHat), 잔드로스(Xandros), 심플리멤피스(SimplyMEPIS), 수세(Suse)가 그런 배포판의 예이다.
일부 배포판은 대형 배포판을 흉내내서 만들어내곤 하지만 포함된 프로그램은 바뀐다. 이는 리눅스의 방식인 믹스앤매치(mix-and-match) 접근 방식으로서 결국에는 사용자들에게 더 많은 선택권을 부여해준다. 디스트로워치닷컴(DistroWatch.com)에서는 현재 리눅스에 350개가 넘는 배포판이 있는 것으로 집계하고 있다. 목록에 나와있는 많은 배포판들은 특정 사용자 집단을 위해 특화돼 있긴 있지만, 모든 배포판은 똑같은 프로그램을 돌리도록 수정될 수 있다.
프로그램이 상호 교환될 수 있기 때문에 GUI(Graphical User Interface)도 예외는 아니다. GUI를 바꿀 수 있어 마우스, 프로그램 아이콘, 메뉴 등에서 현대적인 OS의 룩앤필(look and feel)을 가질 수 있다. 어떤 리눅스 시스템이라도(휴대폰에서 돌아가는 리눅스 말고 실제 컴퓨터에 돌아가는 리눅스) 여러 가지 서로 다른 GUI 중 하나를 택해 이용할 수 있고, 여러 웹 서버나 서로 다른 이메일 클라이언트 프로그램을 돌릴 수도 있다.
시스템을 윈도우처럼 보이게 하고 싶은가? FVWM에서 XP 테마를 사용하면 된다. 속도가 좀 빨랐으면 좋겠나? IceWM을 써보라. 좀더 "기능이 풍부한" 걸 원하는가? GNOME이나 KDE를 써보기 바란다.
이런 GUI들 모두 장단점이 있지만, 모두다 마우스를 이용이 가능한 인터페이스를 제공한다. 이런 다양한 GUI들을 쓸 수 있기에 사람들이 사용하는 리눅스 화면이 서로 제각기 달라보일지 모르겠지만 모든 GUI의 이면에서는 똑같은 작업이 이뤄지고 있다. 직접 눈으로 확인해 보라. 어려운 일은 아니다.
3. 하드웨어, 소프트웨어, 그리고 그 중간에 위치한 것
리눅스는 짧은 기간동안 큰 발전을 했다. 리눅스는 MS 윈도우 나이의 절반도 안 되지만 레드몬드의 OS(MS 윈도우)가 비싸고 버그도 많은 반면 리눅스는 더 강력하고, 더 안정적이며, 리소스도 덜 잡아먹고, 그래픽 측면에서는 (리눅스가 더 우월하지 않다해도) 동등한 수준을 보인다.
리눅스가 아직 MS 윈도우를 쫓아가지 못하는 건 벤더들의 지원이다. 예를 들어, 만약에 여러분이 인튜잇(Intuit)의 퀵북(QuickBooks)없인 못산다해도 리눅스에서 그대로 구동시킬 순 없다. 리눅스에서 윈도우 프로그램을 동작시키려는 프로젝트들이 있다. 크로스오버 오피스(CrossOver Office)와 와인(Wine)같은 것들이 있는데, 윈도우 프로그램이 뭐냐에 따라 돌릴 수 있을 수도 있고 없을 수도 있다. 소프트웨어 업체들이 리눅스로 프로그램을 이식하겠다고 결정할 때까지는 윈도우 프로그램을 리눅스 자체에서 있는 그대로 돌릴 수는 없을 것이다.
그렇다 해도 몽땅 다 못하는 건 아니다. 오픈소스 소프트웨어 형태로 된 리눅스용 프로그램은 1만 5000개가 넘는다. 이런 프로그램들은 보통 무료로 쓸 수 있어서 품질도 천차만별이지만, 프로그램 대다수는 잘 만들어졌고 지속적으로 개선되고 있다. 이런 프로그램들은 전용 파일 형식이 아닌 것들을 가져오기(import)하거나 내보내기(export)할 수 있다. GNUCash는 퀵북 파일을 제대로 읽어 들일 수 있고, 오픈오피스는 MS워드의 *.doc 파일을 읽어 들일 수 있다.
GNUCash를 안 좋아한다면 낙심하지 말기 바란다. 무료로 제공되는 유사한 프로그램들이 더 있으며, 점점더 많은 소프트웨어 업체들이 자사의 소프트웨어를 리눅스 버전으로 출시하고 있다.
동일한 현상이 하드웨어에도 적용된다. 컴퓨터 상점에서 구매한 보통 하드웨어가 애플 컴퓨터와 동작하는 걸 기대할 수 없는 것처럼, 동일한 문제가 리눅스 머신에서도 있다고 할 수 있다. 대부분의 표준 하드웨어는 완벽하게 동작한다. 하드 드라이브, 램, 플래시 드라이브, 마더보드, 네트워크 카드(NIC), 디지털 카메라는 보통 리눅스에서 거의 문제를 일으키지 않는다.
하지만 새로 나온 최신 하드웨어는 이야기가 좀 다르다. 하드웨어 벤더가 리눅스를 지원하기로 할 때까지는 리눅스 공동체에 참여하는 사람들이 여가 시간을 할애해서 무료 배포용으로 이런 하드웨어를 이용하기 위해 필요한 드라이버를 만들어줘야 한다.
하드웨어 회사들은 호환성을 해결하고자 직접 MS와 함께 작업하는 일이 많지만, 리눅스 측에 대해서는 자발적 참여자들이 알아서 리눅스 하드웨어 지원을 해결하도록 내버려두는 경향이 있어 윈도우가 지원하는 것보다는 뒤처질 수밖에 없다. 랩톱은 비표준 하드웨어로 악명이 높다. 랩톱에서 사용하는 특수키를 매핑하는 것 때문에 리눅스에서 고역이 될 수 있다. 그래도 좋은 소식이 있다면, 더 많은 회사들이 리눅스에서 미래를 보고 있기 때문에 소프트웨어처럼 리눅스 하드웨어에 대한 벤더 지원도 더 나은 쪽으로 변화하고 있다는 것이다.
리눅스 머신에서 하드웨어와 소프트웨어 사이에 있는 건 커널이다. 커널은 하드웨어와 소프트웨어를 연결해주는 역할을 하며, 업데이트된 커널은 매 몇 주마다 인터넷을 통해 얻을 수 있도록 만들어진다. 현재 가장 최신 버전은 2.6.14이다. 현재 지원되지 않는 하드웨어를 보유하고 있다면 좀더 새로운 커널에서는 구원을 받을 수도 있다. 하지만 커널을 직접 설치한다는 게 항상 쉬운 일은 아니다. 대신 그런 일을 해주는 패키지 관리자가 존재한다.
4. 패키지 관리자 - 프로그램 설치를 쉽게 해주는 소프트웨어
리눅스에서 프로그램을 설치하는 데에는 여러 가지 방법이 있지만 가장 쉬운 방법은 배포판의 패키지 관리자(PM; Package manager)를 이용하는 것이다. PM을 이용하면 어떤 빠진 파일이라도 의존성을 이용해 설치해주기 때문에 프로그램이 문제없이 동작하게 된다. 배포판 선택은 여러분이 어떤 PM을 좋아하느냐로 귀착되곤 하지만, 무엇이든 간에 대응되는 패키지만 찾아낼 수 있다면 다른 배포판에서도 어떤 리눅스 소프트웨어든 설치될 수 있다.
보통 이런 PM들은 프로그램을 담아두는 온라인 저장소를 갖고 있다. 프로그램 저장소를 검색해서 설치를 클릭하는 것만 하면 될 정도로 애플리케이션 설치는 쉽다. 여러분의 패키지 관리자에서 IceWM이나 Mplayer를 찾을 수 없는가? 찾고 있는 패키지를 담고 있는 온라인 저장소를 새롭게 추가하는 방법을 쓸 수도 있다.
몇 가지 패키지 관리자의 예를 들어보면, 데비안(Debian)과 그 변종들에서 사용되는 dpkg 및 Apt에 기반한 시냅틱(Synaptic), 레드햇과 변종들에서 이용되는 윰(Yum), 수세와 변종들에서 사용되는 YaST2, 젠투(Gentoo)에서 이용하는 이머즈(Emerge)가 있다.
5. 권한
리눅스는 다중 사용자를 지원하도록 설계됐고, 사용자는 그룹으로 나눠진다. 모든 사용자들은 자신이 소유한 파일에 대해 읽기, 쓰기, 실행(R/W/X) 권한을 가지며 해당 권한을 변경할 권한도 갖는다. 리눅스는 다중 사용자용으로 설계됐기 때문에 사용자들은 각자 암호를 가지며 자기 소유 파일에 대한 접근을 제한할 수도 있다. 이를 사용자 권한(User Permission)이라 부른다.
각 사용자는 하나 이상의 그룹에 소속되고, 사용자는 자신의 파일/폴더 권한을 설정할 수 있어 그룹 내 다른 사용자들이 파일을 읽을 수는 있지만 쓸 수는 없게 하거나 R/W/X를 서로 서로 조합해서 설정할 수도 있다. 이런 걸 그룹 권한이라고 한다. 예를 들어 조와 수잔은 회계 부서에 근무한다고 하자. 이들은 회계 부서(Accounting) 사람들이 서로 파일에 접근할 수 있도록 허가할 수 있지만, 영업 쪽 사람들의 접근은 제한할 수도 있다.
이외의 사용자에 대한 권한으로서, 그룹에 속하지 않은 사람들에게 해당 파일에 대한 접근을 허용하거나 거부할 수 있다. 이 권한은 시스템 전반의 안전을 위한 것일뿐 아니라 각 사용자의 데이터의 안전을 위해서도 존재한다. 집에서 리눅스를 쓰는 대부분의 사용자들은 파일에 기본 권한을 써도 무방하다. (그림 B 참조)
루트(root. 파일 시스템의 루트(/)와 혼동하지 말라) 사용자는 윈도우의 관리자 계정(Administrator)과 비교할 수 있고, 모든 파일에 대해 권한을 가지며 시스템 전체에 미치는 설정을 수정할 수 있는 유일한 사용자이다. 루트 사용자는 시스템 관리를 위해 사용되는 자체 암호를 갖는다. 이러한 차이점으로 일반 사용자들이 시스템에 유해한 스파이웨어를 설치하거나 중요 파일을 삭제할 수 없도록 한다.
6. 홈 디렉토리
윈도우에는 '내 문서(My documents)'라는 데가 있지만, 문서가 아닌 파일은 어디에 두겠는가? 보통은 윈도우 바탕 화면에 둔다! 리눅스에서도 데스크톱을 난잡하게 만들 수 있는 건 마찬가지지만, 사용자들은 각자 홈 디렉토리를 갖게 되며 보통 /home/user에 위치한다(user는 사용자 계정 이름). 이런 홈 디렉토리 내에서 문서를 놔둘 수도 있고(/home/user/documents), 프로그램 링크를 둘 수도 있으며, 음악(/home/user/Music) 등 원하는 건 뭐든지 놔둘 수 있다.
홈 디렉토리에는 파일과 폴더를 생성할 수 있고, 원하는 만큼 정리하고 다시 또 어질러놓을 수도 있다. 마치 우리가 집안에서 하는 것처럼 말이다. 권한이 어떻게 설정되었는지에 따라 홈 디렉토리에 있는 파일에 대해 다른 사용자가 접근할 수 있게 허락할 수도 혹은 금지할 수도 있다. (루트 사용자만은 예외다).
7. 기본 설치 차이점
리눅스 배포판 간에는 차이점이 약간씩 있어서, 파일들이 위치하는 곳이라든가 기본 프로그램들의 이름이 다른 경우가 있다. 레드햇과 수세는 파일 시스템이 약간 다르다는 걸 알아두고 시작하는 게 좋겠다. 대부분 사용자들은 그런 차이점이 뭔지 알 필요는 없지만, 내부 파일 시스템이 약간 다를 수 있다는 것 정도는 알아둬야 한다. 누군가에게 도움을 요청할 때 여러분이 사용하는 배포판이 뭔지 확실히 알려줄 수 있도록 해라. 시스템에 문제가 없거나 눈에 보이지 않는 복잡한 작업을 설정하는 것에 관심이 없다면 이에 대해 지나치게 신경쓰지 않아도 된다.
8. CLI
윈도우의 ‘시작(Start)/ 버튼과 유사한 리눅스 GUI 상의 버튼을 누르면 메뉴가 나타나는데, 이 메뉴에서 xterm 프로그램(보통 콘솔(Console)이라 부른다)을 실행시키면 터미널(Terminal)이라는 게 나타난다. 도스창과 약간 닮았지만 사실 도스보다 오래되었고 도스의 기능을 능가한다. 이는 명령줄 인터페이스(CLI; Command Line Interface)이며, 우리가 좋아하는 OS의 기원으로서 모든 리눅스 배포판에 존재한다. 책 한 권 쓸 정도의 분량이어서 자세히 들어가진 않겠지만, CLI는 컴퓨터의 문제점을 해결하곤 할 때 필요한 강력한 도구이다. 인터넷에서 누군가에게 도움을 요청했을 때 lspci를 실행시켜 보라고 했다면 xterm을 시작해서 lspci라고 입력하고 엔터키를 눌러야 한다. 그러면 화면에 뭔가 나타날 것이다.
xterm을 시작하면 제한된 권한을 갖고 있는 일반 사용자 상태이다. xterm에서 루트 사용자 모드(앞서 이야기한 권한을 보라)로 가려면 su [엔터]를 입력하고, 그리고 나서 루트 암호 [엔터]를 입력한다. 그러면 막강한 권한을 가진 루트가 된다. 루트 사용자는 리눅스가 돌아가는 데 필요한 시스템 파일을 포함해서 어떤 사용자의 데이터도 파괴할 수 있다. xterm을 끝내거나 su 모드에서 떠나려면 exit [엔터]를 입력한다.
9. 컨트롤(ctrl)-알트(alt)-이스케이프(escape)
컨트롤-알트-이스케이프키를 함께 누르면 마우스가 해골과 두 개의 뼈를 교차시킨 불길한 형상을 한 X 모양으로 바뀐다. 이 모드에서 오동작하거나 먹통인 애플리케이션 위에 놓고 클릭하면 해당 프로그램을 종료시킬 수 있다. 윈도우 작업 관리자(Task Manager)에서 프로세스 종료(End Process)와 유사하지만 조심해서 쓰기 바란다. 만약 키를 누르긴 했는데 아무 것도 종료시키고 싶지 않다면, 되돌아가기 위해 Esc 키를 사용하기 바란다. 엉뚱한 프로그램에다가 클릭하면(데스크톱 GUI 포함) 꽤나 골치 아픈 일이 벌어질 수 있다.
10. 인터넷은 여러분의 친구!
많은 배포판들은 질문, 답변, 팁을 주고받는 사용자 포럼이 있다. 리눅스퀘스천(LinuxQuestions.org)이 전반적인 리눅스 지식과 도움을 얻을 수 있는 좋은 사이트이다. 기억할 것은, 어떤 포럼에서라도 질문을 올리기 전에 이미 해결되었을지도 모르는 문제에 대해 또 묻는 일이 없도록 질문할 내용을 검색해 보기 바란다(LQ와 구글 모두에서).
또한 찾은 해결책이 언제 나온 것인지 체크해보기 바란다. 답변이 올라온지 너무 오래됐다면 이처럼 빠르게 바뀌는 오픈소스 소프트웨어 세계에서는 더 이상 써먹을 수 없는 해결책일지도 모르기 때문이다. 질문할 때 여러분 시스템에 관해 할 수 있는 한 많은 정보를 포함시켜 올리기 바란다. 이를테면 다음과 같은 정보들을 포함하는 것이 좋겠다.:
* 프로세서 타입 (인텔, AMD, 아니면 애플 PPC?)
* 배포판 (수세? 데비안?)
* 어려움을 겪고 있는 프로그램
* 기타 관련 정보
반드시 명심해야 할 것
리눅스와 오픈소스 소프트웨어는 지난 몇 년동안 쑥쑥 커왔지만, 윈도우라는 닫힌 세계에서 리눅스로 온 사용자들에겐 리눅스의 내부 동작은 낯설기만 할지도 모른다. 마음을 열고 지식을 기꺼이 공유하고자 한다면 리눅스 공동체가 성장하는 데 도움이 될 것이다. 우리는 여러분들을 환영한다.@
'System > Linux' 카테고리의 다른 글
windows XP and AnNyung 멀티부팅 (0) | 2007.03.07 |
---|---|
리눅스강좌】리눅스 기본 명령어 [ find , cat , ps ] (0) | 2007.03.07 |
[펌] Linux 기본 명령어 + SecureCRT 이미지보기 (0) | 2005.11.08 |
[펌] 임베디드 프로그래머와 부트로더 - 1 (0) | 2005.11.07 |
[펌] 임베디드 프로그래머와 부트로더 - 5 (0) | 2005.11.07 |