UNIX 라는 운영체제는 1969년 벨 연구소에 저 분들에 의해서 만들어 졌습니다.
이 운영체제는 많은 변종들을 가지고 있으며, 수십년이 흐른 지금도 수천만 시간을 서비스
하면서 잘 돌아가고 있습니다. 매우 견고한 운영체제 이죠.
C언어 창시자인 Dennis Ritchie 분도있고, Unix pipe 창시자인 Douglas McIlroy 분도 있군요!
이분들중에 어떤분은 세상에 안 계시고, 어떤분은 대학에서 운영체제를 강의 하고 계십니다.
1974년 데니스 리치와 켄톰슨의 "The UNIX Time-Sharing System" 이라는 논문에는
유닉스에 대해서 이렇게 이야기 하고 있습니다.
Unix is a general-purpose, multi-user, interactive operation system for the larger Digital Equipment Corporation PDP-11 and the Interdata 8/32 computers.
- 1974, D.M Ritchie and K. Thompson,The UNIX Time-Sharing System
논문에서 보면 "for the larger ~~~" 라는 말이 나오죠. 겁내 큰 컴퓨터에서 동작 하나봅니다.
사진에 보이는 컴퓨터가 PDP-11 입니다. 당시에 모니터는 커녕, 자판으로 명령어를
탁탁 쳐 넣으면 프린터에서 드륵드륵 결과가 나오는 정도 였죠. 암튼 당시의 UNIX 는 저런
대용량 컴퓨터에서 작동했고, Server 나 Workstation 등에서 동작을 해 왔어요.
이번엔 Free software 라는 것에대해 살펴 볼까요.
Free software 에서 Free 라는 말은, "공짜" 라는 말이 아니고, 그 소프트웨어 자체에 대한
자유를 말합니다. 그 소프트웨어를 사용하는 자유, 복사하는 자유, 그리고 그 소프트웨어를
연구하고 수정하고 또한 그 수정한 결과를 배포하는 자유를 말하죠
1950~1970 년대쯤에는 프로그래머들이 작성한 소프트웨어와 그 소스코드를
서로 공유하고 필요하면 기능을 추가하거나 수정해서 사용하기도 했지요.
1970년대 즈음해서 소프트웨어에 대한 지적 재산권에 대한 개념이 등장하기 시작했고
이러한 흐름에 많은 소프트웨어 들이 자신의 소스코드는 숨기고 컴파일된 바이너리만
판매하기 시작했죠. 그래서 이런 소프트웨어는(Non-free software) 그 내부를 알 수가 없었고
엄격한 법에 따라 그 사용(넓은 의미의 사용, 수정, 배포 등등..)은 제한 되었습니다.
이러한 개념에 대한 선두에는 MS의 Bill gates 가 큰 역할을 했지요.
어떤 프로그래머들은 예전처럼 그들이 소유한 소프트웨어 대해서 자유를 갖길 원했고
1983년 즈음에 Free software movement(자유 소프트웨어 운동)이 일어나기 시작했습니다.
예전처럼 소프트웨어 자체에 대한 자유를 가지고 싶었던 거죠.
그런 Free software movement 중 어떤 인물이 있었습니다.
바로 Richard Stallman 이죠.
그는 자유 소프트웨어 운동에 대한 일환으로 GNU Project 라는 것을 시작 했습니다.
GNU 는 GNU's Not Unix 의 재귀적인 약자입니다.
GNU project 목표는 완전한 Unix-like(유닉스와 같은, 호환되는) 운영체제를
free software로 작성 하는 것 이었습니다. Unix 는 매우 휼륭했지만 free software 가 아니었죠.
프로그래머들은 그들이 필요한 소스를 가져다 쓰고, 그 결과물을
다시 공개하므로써 어떠한 소프트웨어를 작성할때 바닥부터 다시 짜는것이 아니라 필요한
부분만 기존의 소스에 추가하면 되었기 때문에, 엄청난 힘을 얻는것을 느꼈고,
그 결과 수많은 프로그래머들이 이 프로젝트에 참여하게 되었죠.
GNU project에는 세계의 수많은 개발자들이 서로 참여하고 공유 했고
많은 free software 들이 작성되고 있었습니다.
그런데 뭔가 부족했습니다.
GNU operating system 을 구성하는데 있어서 필요한 software 는 거의다 작성이 되었지만
가장 중요한 운영체제의 커널이 아직 없었습니다.
Hurd kernel 이라고 해서, 개발중이기도 했지만 그 디자인은 진보된 디자인 이었고
디버깅이 매우 어려워서 진척이 잘 안되고 있었다고 합니다.
그런데 필란드에서 리누스 토르발즈 라는 한 학생이 있었습니다.
리누스는 당시에 끝내주는 운영체제인 Unix 를 자신의 PC 에서 사용하면 좋겠다고 생각을 했죠.
그래서 찾던 도중 탄넨바움 교수가 Minix 라는 운영체제를 교육용으로 작성 해 두었던것을
써 봤습니다. 그러나 뭔가 기능이 부족했고, 그 Minix는 공개되지 않았기 때문에 어떠한 기능도
추가할 수가 없었던 거죠.
그러다가 새로운 운영체제의 개발을 시작하게 됩니다.
리누스는 GNU project 로부터 어느정도 도움을 받았고 또한 그 정신에도 동의 했습니다.
그래서 자신이 만든 운영체제를 공개하기로 마음 먹었죠.
리누스가 공개한 커널이 GNU 프로젝트의 일부가 되었고, GNU 소프트웨어와 프로그래머들에 의해
급속히 그 기능들이 추가됐고 완전한 OS 의 모습을 갖추게 되었습니다.
그래서 리눅스는 이제 GNU/Linux 가 된거죠.
Linux 와 GNU 라는 역사적인 만남이후
Linux는 GNU 라는 파워를 얻어 GNU/Linux 가 되었고, 세계적으로 수많은 사용자들이
이를 사용하고 개발하게 됩니다.
그래서 이제 GNU 는 완전한 Operating system 이 되었습니다.
그런데 왜? 리눅스를 쓸까요? 여기에 몇가지 이유가 있습니다.
리눅스는 매우 작을 수 있고 사용자의 입맛에 맞게 커스터마이징 될 수 있습니다.
따라서 리눅스는 아주 오래된 컴퓨터 부터 작은 모바일 기기 까지(Embedded system)
어디에든 탑재될 수 있지요.
심지어 제가 가지고 있는 손바닥 만한 무선 공유기 안에도
리눅스가 들어있어서 여기에 콘솔로 접속을해서 리눅스를 쓸 수가 있습니다.
Unix 의 설계철학을 그대로 닮았고, 수많은 프로그래머들이 쓰고 피드백을 제공하고
문제된 부분을 수정 함으로써, 리눅스는 매우 안정적 입니다.
또다른 이유는 Free software 라는 점 입니다. 여러분이 원하는 대로 얼만든지
커스터마이징 할 수 있고, 수정도 가능하죠. 또한 리눅스와 함께 오는 GNU의 훌륭한
Free software 들을 쓸 수 있습니다.
또한 끝내주는 이 운영체제를 당장 인터넷에서 다운로드 해서 설치할 수 있지요
제일 중요한 이유 입니다. 어쩌면 이 이유 때문에 이 세미나를 준비 했는지도 모르죠.
리눅스에서 쓰이는 수많은 프로그램들이 어떤 식으로 상호작고
어떻게 일을 처리하는지 보다 보면, 그 지혜로움에 놀랄때가 많이 있습니다.
MS Windows 에서는 상상도 못 할 일이죠. 이런 프로그램들을 자연스럽게 이용하다 보면
프로그램의 설계에 대해 생각하게 되고, 습관이 되고 그 결과 우리는 훌륭한 프로그래머가
될 수 있다는것이 제 주장입니다.
Linux 를 쓰고 배우다 보면, Unix 철학에 대해서 배울 수 있습니다.
Unix(Linux) 의 수많은 소프트웨어에는 그 설계에 Unix 철학 이라고 불리울 수 있는
철학이 담겨 있습니다. (참고 : The Art Of Unix Programming )
Unix 는 컴퓨터 역사로 봤을때 매우 오랜시간동안 살아 남았습니다.
바로 그 저반에는 Unix 철학이 있었죠. Unix는 그 철학을 기반으로 수많은 변화들을
모두 수용해 왔습니다. 그 살아있는 역사를 우리는 리눅스를 통해 배울 수 있습니다.
어떻게 지혜롭게 그 변화들을 수용해 내고 생존 했는지를 앎으로 해서
우리 프로그래머들 역시 앞으로 쓰여질 컴퓨터의 역사속에서 지혜롭게 변화를 수용하고
생존 할 것인가를 배울 수 있습니다.
이 또한 매우 중요한 이유죠.
리눅스를 가지고 무언가 하는 일은 너무나도 재미 있습니다. 너무나 자유롭고요.
우리가 원하는 무엇인가를 할 수 있습니다. 그냥 할 수 있는것이 아니라 아주 잘 할수 있어요
리눅스는 계속 변화해 왔고, 많이 성장해 왔습니다.
많은사람들은 리눅스에 대한 오해를 가지고 있는데 이는 사실이 아니거나
이제는 오래된 이야기 일 뿐이죠.
맞아요. 저도 고등학교때 처음 깔았을때는, 여러가지 배포본을 가지고 한달에 100번도넘게
설치하고 지우고를 반복 했었습니다.
그러나 이제는 옛날 이야기이죠. ubuntu 배포본을 예로 든다면, 시디를 넣는 순간
바로 window 환경이 짜잔! 등장합니다. 그 상태로 바로 그냥 쓸 수도 있어요.
그리고 설치는 마우스 클릭 몇번이면.. 끝이 납니다.
정말 쉬워요.
아주 오래전 이야기 입니다. 리눅스는 현존하는 운영체제 중에 가장 많은 하드웨어를 지원합니다.
이젠 안쓸법한 아주 오래된 하드웨어부터 최근 하드웨어 까지 말이죠.
간혹 어떤 하드웨어가 지원이 안될 경우가 있습니다. 예를들면 어떠한 그래픽 카드의 경우죠
그런데 이는 하드웨어 벤더의 문제일 경우가 많습니다. 리눅스 드라이버를 지원하지 않으면서
그 하드웨어 스펙을 공개하지도 않죠. 공개하면 알아서 제작해서 쓸텐데 말입니다.
최근에는 아주 많은 하드웨어 벤더들이 기본으로 리눅스 드라이버를 제공 하고 있습니다.
대세를 따르는 것 이지요 :)
이것은 전에는 맞을지도 모르겠지만, 이제는 그리고 앞으로는 더더욱 아니라고 장담합니다.
제가 2학년 겨울방학때 인턴했던 그 회사에서 제일 처음 한것은 putty 로 작업 서버에 접속하고
제가 쓸 프로그램들을 컴파일 한 일이었죠. 그리고 인턴이 끝나는 그 순간까지 모든 작업은
linux 에서 이루어 졌습니다. 물론 그 회사의 주력 상품또한 리눅스에서 작성 되고 있었죠.
그리고 자람 선배분의 말씀으로는 최근에 갔던 회사에서는 100% 우분투 리눅스를 쓰고 있다는 군요.
그래요 리눅스가 그렇게 좋다면.... 이제 어떻게 할까요? 간단 합니다.
당장 가서 다운로드 자신의 컴퓨터에 깔면 됩니다. 쉽죠?
리눅스 배포본은 엄청 많아요. 골라서 쓰면 됩니다. 그런데 그나마 최근에 등장한
Ubuntu 를 눈여겨볼 필요가 있습니다. 지원이 엄청 빵빵하거든요.
정말 놀라울 정도에요. 그래서 우분투를 추천합니다.
리눅스를 본격적으로 시작 했다면, 기본적으로 갖추어야할 자세가 있습니다.
Do It Yourself. 리눅스는 여러분이 어떤 문제를 만났을때 스스로 해결하고자 하면
친절하게 도와줄 것이고, 불평만 한다면 굳게 닫혀서 아무런 말도 하지 않아요.
잘 모르겠으면 Google 을 이용하면 됩니다. 모든것이 있지요 :)
리눅스에 관련된 많은 자료들은 대부분 영어로 작성되어 있습니다.
한글로 번역된것도 몇가지 있지만, 그 수가 매우 적고 오래된 글에대한 번역일 경우도 많아요
tldp.org 라고해서 The Linux Documentation Project 라는것이 있습니다. 리눅스 관련해서
양질의 문서들을 읽을 수가 있는데요, 물론 영어죠. 리눅스를 배우려면 영어를 어느정도
읽을 수 있어야 합니다. 대부분의 문서는 쉬운 문체로 쓰여져 있어서 읽는데 지장이 없는 정도고요.
그리고 저 밑에 Read the fuc*ing manual 이라는게 있죠. 가끔 어떤 질문을 하면 사람들이
R.T.F.M 이라고 말합니다. 빌어먹을 메뉴얼을 읽어봐!! 정도로 이해하면 되겠네요.
Manual 을 읽어보세요. 딱딱할 수도 있지만, 익숙해지면 그것을 통해 많은것을 얻을 수 있습니다.
리눅스에서 프로그램을 짜는 방법을 배우세요.
기본적으로 맘에 드는 text editor 를 한가지 배우고, 직접 컴파일 해보세요.
그리고 리눅스 환경에서 사람들이 어떻게 지혜롭게 프로그램을 작성하고 자동화 하는지
배울것을 권장합니다. 얻는것이 많아요
그리고 다언어 주의자가 되어라... 리눅스 환경에서 살다보면, 처음에 조금 당황스러울 정도로
많은 프로그래밍 언어들이 사용되고 존재함을 알 수 있습니다. Domain Specific Language 라고해서
리눅스에서는 mini language 라고 불리우는 작은 언어에서 부터, 에디터 내장 언어, 쉘스크립 등등
이런것들을 배우는 것을 두려워 하지 마세요, 생각만큼 오래 걸리지 않고 배운다면
새로운 세상을 만나게 될 것입니다.
리눅스는 절대 죽지 않습니다. 왜 일까요? 리눅스는 끝내주는 killer application 을 가지고 있습니다.
그 대표적인 예가 Apache 웹서버 입니다.
Apache 웹 서버는 서버시장에서 거의 50%의 점유율을 보이고, 이 녀석은 리눅스와 궁합이 아주 잘 맞거든요.
리눅스는 GNU 와 함께죠. GNU project 에 참여하는 훌륭한 프로그래머들이 있는한 리눅스는 죽지 않습니다.
그리고 플랫폼에 대한 이야기 인데요, 이제는 "윈도우용 프로그램" 이런게 없어 질 것입니다
이제 프로그램은 서비스 형태로 제공 됩니다. 구글을 보면 좋은 예가 되죠. 누구든 웹브라우져만
가지고 있으면 접속해서 그 프로그램을(서비스를) 이용할 수 있는거죠. 그 운영체제가 윈도우 이던
모바일 기기이던 리눅스 이던 상관 없다는 이야기 입니다.
이제는 윈도우 플랫폼이 아니라, 웹 플랫폼이 된거죠.
그렇다면 이 프로그램을 제공하는 서버는 윈도우이건 리눅스이건 상관이 없다는 이야기 입니다.
누군가 새로운 서비스를 위해, 작은 회사를 하나 시작했다고 생각해 봅시다.
100만원에 가까운 윈도우 운영체제를 사람들 머릿수 만큼 산다고 생각을 하고,
몇백만원하는 개발자를 위한 개발툴(VS)을 프로그래머의 머릿수 만큼 산다고 생각을 해보죠
그런데 리눅스를 이용한다면 인터넷에서 시디를 무료로 주문하거나 그냥 다운로드 하면 됩니다.
그게 끝이에요.
경영자라면 어떻게 생각을 할까요? 기술적인 것을 하나도 모른다고 하더라도 말이죠.
제가 만약에 경영자라면, 끝내주는 리눅스의 개발환경 때문에라도 리눅스를 선택할껍니다.
Redhat 같은 리눅스 회사에서, 사원들 교육 및 환경 유지보수 서비스를 받는다고 할지라도
훨씬 싸게 먹힐 것 같군요.
최근 리눅스는 기업의 지원을 받아서, 그 힘이 더 강해지고 있습니다. Ubuntu 를 써보시면 알게되요 :)
그리고 가장 중요한 철학 입니다. 거의 컴퓨터의 역사와 함께 건재해온 그 철학이 있는한
이제껏 그래왔듯 리눅스는 쉽게 무너지지 않습니다.
뭔가 비주얼한것을 보여줘야 사람들이 좀더 리눅스를 쓰려는 마음이 들지 않을까 하는 생각에
제것을 포함한 스크린 샷을 몇가지 준비 해 봤습니다. :)
질문 : 지금껏 좋은점만 이야기 했는데, 단점은 없는가?
답 : 리눅스는 다소 기술적인 사용자를 위한 환경 이라는 점 입니다. 오늘의 세미나 역시
컴퓨터 전공인 학회원들에 조금은 포커스를 뒀습니다. 그러나 최근에 끝내주는 배포본이
많이 나왔기 때문에, 이도 앞으로는 계속 바뀔듯 합니다. 현재의 Ubuntu 만 보더라도 말이죠..
마지막으로 한편의 작은 시와 함께 마무리 하려 합니다.
Master 를 번역 한다면, 스승, 달인, 선승 정도 되겠군요.
스승을 눈여겨 보고
스승을 따르고
스승과 같은길을 가고
스승을 꿰뚫어 보고
스승이 되어라. (마스터가 되어라)
언젠가 여러분도 Master 가 되기를 바라면서
오늘 이 세미나를 마치겠습니다. 감사합니다.