BootVis를 이용한 부팅 최적화

BootVis는 MS에서 제공하는 부팅최적화프로그램이다. 자료실에서 다운로드
하여 BootVis.exe를 실행한다.

1. Trace – Next Boot + Driver Delays를 선택합니다.
2. OK 버튼을 누르면 자동으로 재부팅이 이루어 집니다. (재부팅후 기다리
시면 BootVis 가 자동으로 실행됨)
그래프를 통해 부팅소요시간에 대한 자세한 설명이 나옵니다. 그냥 참고
하시면 됩니다.
3. 이번엔 최적화를 위해서 Optimize System을 선택합니다. 지시에 따라
하시고 재부팅후 BootVis 최적화를 마칠 때 까지 기다리셔야 합니다. 시스
템에 따라서 반응 및 작업시간이 길어 질 수 있습니다.

초보자도 알아야 할 리눅스 역사(하) 핀란드에는 자일리톨만 있는 것이 아니다

핀란드에는 자일리톨만 있는 것이 아니다

이야기는 여기서 갑자기 핀란드로 넘어간다. 수진과 미지의 눈이 휘둥그레졌다.

“핀란드요?”

“후바후바~~~~ 하는 그……”

“전부터 궁금했는데, 거기 사람들 정말 자기전에……”

그렇다, 광고가 사람을 망치는 극단적인 경우로 이런 경우도 있는 법. 그러나 술취한 익수의 귀에 그런 말이 들어올 리 없다. 익수는 그런 수진과 미지의 말을 무시하고 말을 이었다.

“핀란드에, 골방에다가 컴퓨터와 말린 파스타만 넣어주면 혼자서도 밤새도록 잘 놀았다는 총각이 하나 있었다.”

“폐인이다!”

“무슨 소리야.”

“주침야활하고 면식을 주로하니 폐인이죠.”

“우리 오빠네, 우리 오빠 리누진 씨도 골방에 컴하고 컵라면만 넣어놓으면 잘 지내는데.”

“이효리 스페셜 동영상이랑 #양 누드 같은 거 보면서.”

“맞아맞아!!!!”

“이것들이!!!!!!!!”

익수는 헛기침을 하며 미지와 수진을 진정시켰다.

“하여간, 같은 주침야활에 면식을 해도 누진이 놈은 야동이나 보는 반면에, 그 핀란드의 리누스 토발즈는 운영체제를 만들었다, 이거다. 대단하지 않냐?”

학 문적인 성과는 당연히 다른 사람과 나누어야 한다고 생각하는 통계학 교수 외조부의 영향으로 어린 시절부터 컴퓨터를 접할 수 있었던 리누스는 외모에 콤플렉스를 지니고 있으면서도 수학과 과학에 재능을 보이는, 어찌 보면 괴짜다우면서도 나름대로 조용한 청소년기를 보냈다. 헬싱키 대학교 컴퓨터 공학과에 진학하여 조교가 된 그는 미닉스를 사용하다가, 미닉스를 만든 앤드류 타넨바움의 “운영체제, 디자인 및 실행”을 참고하여 자기가 사용하는 386 컴퓨터를 위한 새로운 운영체제를 만들기 시작하였다. 이것이 최초의 리눅스 커널이 되어 수많은 개발자를 매료시키는 데에는 그리 오랜 시간이 걸리지는 않았다. 리누스가 최초로 만들어 낸 것은 이전에 유닉스 시스템을 간단히 만들어 학생들이 사용하기 편하도록 앤드루 타넨바움 교수가 만들어낸 ‘미닉스(MINIX)’를 바탕으로 하는, 모놀리식(Monolithic) 방식의 새로운 운영체제 커널이었다. 이것은 일반 사용자를 고려하는 것이 아닌, 개발자가 만들어낸 커널 그 자체였기 때문에 기본적인 기능에, 리누스가 리눅스 커널의 인터페이스로 본 셸을 대신하여 만든 배쉬(BASH: Bone Again SHell)만이 있는 불완전한 운영체제였다. 아마도 처음에는 리누스 자신도 이런 마이너한 물건이 이렇게 널리 사용될 것이라고는 꿈에도 생각하지 못했을 것이다.

리누스는 1991년 여름, comp.os.minix 뉴스그룹에 포직스 표준을 요청하는 글을 올려 새로운 운영체제를 개발하고 있다는 암시를 풍겼고, 뒤이어 1991년 8월 25일 새로운 운영체제의 개발을 알리는 짧은 글을 남겼다. 이 글을 읽은 많은 개발자들은 이 최초의 커널에 관심을 보였다. 그리고 뉴스그룹을 통해 리눅스에 대한 많은 의견과 버그 리포트가 올라오며, 리눅스 커널은 빠르게 안정적인 모습이 되어 갔다. 다시 말해 마치 공각기동대에 나오는 “인형사”가 스스로 “나는 정보의 바다에서 태어난 생명체.”라고 말하기 이전에, 리눅스는 훗날 정보의 바다가 될 인터넷에서 태동하여 성장하는 첫 번째 운영체제가 되었다. 어떤 의미에서 인형사는 리눅스를 형님으로 모셔야 할 지도 모를 일이다.

1994년, 개발자의 이름을 따서 리눅스라는 이름이 붙은 이 커널의 1.0 버전이 발표된다. 이때 FSF(free software foundation:자유 소프트웨어 재단)이 리눅스의 발전에 합세하며 리눅스의 발전에도 가속이 붙기 시작하였다.

리처드 스톨만(Richard Stallman)이 이끄는 FSF는 1984년 이래 “유닉스와 비슷하면서도 강력한, 그리고 누구의 지배도 받지 않는” 운영체제에서 GPL을 따르는 자신의 소프트웨어를 사용하고자 하였다. 그 계획의 일환으로 먼저 소프트웨어가 개발되고, 뒤이어 GNU 커널이 계획되던 중 1991년 리눅스 커널이 먼저 공개되어 여러 개발자의 노력으로 발전해 나가자, FSF는 리눅스를 적극 지원하며 GNU 프로젝트를 도입한다. 리누스가 80386용 리눅스 커널을 개발하자 곧이어 GCC라고 불리는 C/C++ 컴파일러와 에디터인 Emacs는 물론, 여러 가지 유닉스 유틸리티의 GNU 버전이 리눅스에 포함되었다. 또한 소스가 공개된 기존의 프로그램을 리눅스에서 GCC를 사용하여 컴파일 하여, 리눅스에서 사용할 수 있게 되었다. 리눅스 커널은 GNU 시스템과 결합하여 비로소 하나의 완성된 시스템의 모습을 갖추게 되었다. 이를 계기로 리눅스는 오픈 소스 진영의 대표적인 운영체제가 되었으며, 인터페이스와 다양한 유틸리티 등 사용자를 위한 환경이 만들어지며 일반 대중에게 모습을 드러냈다.

리눅스에 게도 경쟁자가 없지는 않았다. 거의 같은 시기에 윌리엄과 라인 졸리츠(William & Lynne Jolitz)는 실험적으로 386에 BSD를 이식했다. BSD 기술과 리누스의 미숙한 초기 노력을 비교하던 대부분의 관찰자들은 BSD 포트(port)가 PC의 가장 중요한 공개 유닉스가 될 것이라 예측했다. 하지만 진화의 방향은 알 수가 없다는 특징이 있다. 예상을 깨고 리눅스가 큰 성공을 거둔 것이다. 물론 리눅스의 성공은 기술적인 면 뿐 아니라 사회적인 측면도 강하게 지니고 있었으며, 유명한 에릭 레이몬드는 리눅스의 발전을 인터넷 시대의 요구를 반영하는 소프트웨어 공학의 새로운 유형으로 정의하기도 했다.

리눅스는 다른 유닉스들과는 완전히 다른 방식으로 발달했다. 맨 처음부터 인터넷에 의해 조정되는 수많은 자원자에 의해 ‘우연히’ 해킹됐다. 품질은 엄격한 표준이나 독재에 의해 이뤄지지 않았으며, 릴리즈되면 며칠 내에 수백 명의 사용자로부터 피드백을 받고, 개발자들이 지속적으로 변화를 소개하는, 다윈주의적인 적자생존의 선택을 할 수 있게 하는 그런 단순한 전략에 의해 관리됐다. 1993년 후반 리눅스는 안정성과 신뢰성에서 상용 유닉스와 경쟁할 수 있었으며 많은 소프트웨어를 운영했다. 이러한 인기는 1994년과 그 이후에도 계속된다.

최초의 리눅스 커널은 1991년 발표한 0.01 버전이었다. 여러 해의 개발 기간을 거쳐 1994년 3월 1.0 커널이 완성됐다. 이후 1.1, 1.2, 1.3을 거쳐 1996년 7월 2.0, 1999년 1월 2.2를 거쳐 리눅스의 중흥기를 이루는 커널 2.4가 발표되었다. 리눅스는 점점 대형화하고며 엔터프라이즈 서버로 새로운 자리 잡기를 시도하고 있다. 불과 10년 전 386에서 간신히 돌아가던 유닉스 비슷한 그 무엇이 이제는 주류가 되어가는 것이다. 그러면서 다른 운영체제의 거대화에 수반됐던 많은 문제가 반복되고 있다. 리눅스 역시 코드가 수만 줄에서 수백만 줄로 증식하며 복잡한 미래에 부딪히고 있다. 현재 나와 있는 2.6은, 버그의 바다라는 말도 듣고 있기는 하지만 많은 리눅서들에게는 최고의 크리스마스 선물이 되었다. (어딘가 엄청 비참한 이야기가 될 수도 있다. 넘어가자.)

리 눅스 토발즈는 리눅스의 소스코드를 GNU의 GPL(General Public License)에 따라 인터넷에 공개하여, 모든 사람이 자유롭게 사용할 수 있을 뿐 아니라 개선에도 참여 할 수 있는 길을 제시하였다. 이는 리눅스 개발의 역사적인 특징인 인터넷을 통한 자발적인 협력 모델의 시작을 의미하는 기념비적인 일이었다. 다시 말해, 리눅스를 만들었다고는 하지만, 레드햇 사 등의 지분은 갖고 있을 지언정 커널 자체를 상업화하여 떼돈을 벌지는 않았다는 것이다.

“그러면 그 레드햇 주식으로 먹고 사는 건가요?”

“아니. 얼마 전까지는 트랜스메타라는 회사에서 일했고, 얼마전에 그만두었다고 하던걸.”

“그러면 요즘은요?”

“OSDL이라고, 오픈소스 관련 모임에서 일하는 것 같더라. 리눅스가 이제야 자신의 취미가 아니라 본업이 될 것 같다고 코멘트를 남겼더라구. 물론 영어로.”

물 론 그의 자서전을 보면 그는 돈의 중요성을 잘 알고 있으며, 레드햇 사의 주식값이 오르는 것에 가슴을 졸이며 집을 사는 문제로 고민하는 평범한 사람이지만, 이 커널을 완전히 공개할 수 있는 “용기”를 낸 것은 어느 정도 그의 환경에 기인하는 일이라 생각할 수 있을 것이다. 그의 외할아버지는 학문적인 성과를 다른 사람과 나누어야 한다고 생각하는 학자였으며, 그의 아버지는 공산주의자였다. 또한 뛰어난 복지정책으로 금전적인 탐욕을 부리는 사람이 적은데다 그런 탐욕을 부리는 사람은 경멸의 대상이 되는 핀란드라는 나라에서 태어났기 때문에, 지식의 결과물을 물질적인 탐욕의 도구로 사용하는 것을 꺼리게되었다는 점도 있을 것이다. 역사상의 수많은 과학적 업적이 그러했듯, 리누스의 성과는 원하는 모든 사람과 공유되어 유용하게 사용되고 발전하였다. 처음에는 서버, 그 이후에는 데스크탑, 최근에는 임베디드 시스템에서 리눅스는 상당히 각광받으며 다양한 환경에 최적화되어 사용되고 있다.

리 누스 토발즈는 2002년 12월 한국에 방문하였다. 정말 순식간에 일이 진행되어 홍보기간도 없이 신청 다음날 바로 신라호텔에서 세미나가 열릴 정도였지만, 약 1600명 이상의 리눅서가 신청하고 최소 1000명 이상이 세미나에 방문하였다고 한다. 여러 사정으로 하룻밤 사이에 소문이 퍼지고 그 다음날 하루동안 등록신청을 받아 그 이튿날 열린 세미나였기에 리눅스 유저들의 열정이 얼마나 대단한지 실감할 수 있는 자리라 할 수 있었다.

리누스는 먼저 오픈 소스에 대한 전반적인 이야기를 하고, 아마도 운 좋으면 올해 안에 릴리즈될 커널 2.6을 소개하였다. 사실 기술적인 오역이 많을 것 같아 동시통역기를 사용하지 않는 사람이 많았으나, 중간에 통역기를 사용해 보니 상당히 매끄럽게 잘 해 주셨다. 통역하신 분께서 고충이 많으셨을 것 같았지만. 나름대로 리눅서들에게는 상당한 기쁨이 아닐 수 없는 일이었다.

“조교님도 다녀왔어요?”

“그럼, 이 녀석이랑 같이 갔었지. 꿀꿀하게도.”

“아, 그러지 말아요. 난 정말 감동했다고요.”

“통역기도 안 썼으면서 무슨 소리 하는지 네가 알아 듣기는 했어?”

“두 가지로 요약할 수 있었다니까요. 목마른 놈이 우물을 파라는 것하고, 재미있는 것을 하라는 것. 그 이상 무슨 말이 필요해요?”

“몰라, 그래도 몸매는 영 아니더만.”

“MS 이야기나 그런거 할 때도 당당하니까 그런거 하나도 눈에 안 들어오던데요 뭐. 솔직히 말해서 형보다 낫지.”

“시끄러, 리누진. 너야말로 군대도 안 간 놈이 임신 4개월이면서 뭐냐?”

“내가 뭘요!”

두 남자의 어이없는 뱃살논쟁에 미지와 수진은 다시 술잔을 기울일 뿐이었다.

“그런데 오빠. 리눅스는 집에 쓰는 한컴도 있고, 학교에 있는 레드햇도 있고, 그렇잖아요.”

“그게 배포판이지. 기본적인 커널은 같은데 회사마다 다르게 패키징해서, 이것저것 유틸리티랑 함께 한방에 깔아 쓸 수 있게 만든 거잖아. 왜?”

“그러면 그런 건 회사에서 프로그래머들이 만드는 거지? 그러면 그 커널이라는 건 리누스 혼자 만드는 거야?”

리눅스 커널을 만드는 사람들

리 눅스에서는 유난히 커널에 대한 언급이 많다. 때문에 잘 모르는 사람은 윈도우나 다른 운영체제에도 커널이 있다고 말하면 놀라기도 하지만, 어차피 커널이라는 것 자체가 운영체제의 핵심적인 부분을 뜻하는 말이니 리눅스에만 커널이 있다고 생각하는 것은 금물이다. 커널은 하드웨어를 관리하며 시스템에서 일어날 수 있는 이벤트를 처리한다. 또한 프로그램이 실제 실행되는 형태인 프로세스를 원활하게 관리하여 우리가 프로그램을 사용할 수 있게 하며, 프로세스들의 순서를 나누어 동시에 여러 프로그램을 실행할 수 있게 한다. 또한 파일 시스템을 관리하기도 한다.

리눅스 커널이 유명한 것은 그 커널이 공개되어 있으며 누구나 그 커널 소스를 직접 수정하거나 컴파일 할 때 옵션을 주어 자신의 환경에 최적화 할 수 있기 때문이다. kernel.org에서는 최신의 커널을 다운로드 할 수 있으며 옛 버전의 커널을 구할 수도 있어 새로운 커널을 컴파일하여 시스템의 성능을 높이려는 사람은 물론 옛 버전의 단순한 커널을 이용하여 운영체제에 대해 알아보고자 하는 사람들에게도 현실적으로 큰 도움이 된다. 그나저나 이런 커널은 매우 빠르게 업데이트되며, 각 버전의 패치가 많이 나와 있다. 이런 것들은 전 세계의 리눅서들이 보내오는 요구사항과 다양한 패치를 반영하고 테스트하여 취합한 것이다.

물론 리누스 혼자서 그 많은 작업을 하고 있는 것은 아니다. 이전에는 앨런 콕스가 이 작업을 도왔으며, 최근에는 마르첼로 토사티가 앨런 콕스를 대신하여 커널 메인테이너로서 활동하고 있다.

“그러면 오빠도 뭔가 원하는 기능이 있으면 보낼 수 있는거예요?”

“있기야 있지만.”

누진은 웃었다.

“아직은 그런데 올릴 수 있을 만큼 능력이 좋질 않아서.”

“공부해, 임마. 그러지 말고.”

“형보다 열심히 하니까 걱정 놓으세요.”

MT의 밤이 깊어가고 있었다.

초보자도 알아야 할 리눅스 역사(상) 모든 것은 쫄딱 망한 프로젝트에서 시작하였느니라

모든 것은 쫄딱 망한 프로젝트에서 시작하였느니라

술과 함께 거나하게 취해 가는 MT의 밤이 깊어가고 있었다. 물론 새내기인 수진과 미지도 MT에 따라오는 것은 인지상정이라 할 수 있겠지만, 이럴 때는 특히 별로 쓸 데가 없는 소위 성실한 오빠라는 존재는 술 한잔 마음 놓고 마시지 못하게 하는 MT의 주요 방해 요소나 다름 없는 것이었다.

“이 기집애가 말이야. 또 마셔? 그만 좀 마셔!”

“오빠는 벌써 두 병이나 마시고는 왜 그래! 미지 너도 그만 마셔! 네 오빠한테 다 일러 버릴거다!”

특 히 수진에다가 덤으로 미지에게까지 꼬여드는 복학생 선배들의 공격을 막아내느라 술도 못 마시는 주제에 애인도 하나 없이 전산실에서만 심심한 인생을 보내던 오빠는 날 새는 줄 모를 뿐이다. 그렇게 누진이 처절하게 두 아가씨들을 말리고 있을때, 이 과에서 명실공히 전산실의 최강자이며 필자의 설정상 최강 캐릭터인 우리의 윤 조교, 윤익수가 나타난 것은 실로 운명과 같은 일이었다.

“아가씨들이랑 뭐 하냐?”

“익수 형.”

“그거, 피부에 안 좋아. 적당히 마시고 오빠랑 밤새 재미있는 이야기나 할까?”

“누가 오빠라는 겁니까! 얘네들에 비하면 익수 형은 아저씨도 상 아저씨라고요!”

“리누진.”

“…..네, 형님.”

자고로, 헤게모니를 누가 쥐느냐가 문제라고 했다. 익수와 누진의 관계에서는 당연히 출석부와 실습 성적표를 들고 있는 익수가 헤게모니를 쥐고 있는 것이다.

“2학기에 실습 성적이 두렵지 않은 모양이지……”

“시, 시정하겠습니다!”

그리하여, 술과 노래와 즐거움이 꽃피는 강촌의 밤은 깊어만가고…… 그 와중에도 컴퓨터만 없었지 전산실을 재현한듯한 살벌 삭막한 분위기는 민박집 한 구석에서 되살아나고 있었다.

“유닉스가 말이야, 어떻게 생겨났는지 혹시 아냐?”

그래도 술이 한 잔 들어갔다고 발음이 약간 꼬이는 익수를 놀리느라 누진은 짐짓 잘못 들은 척 대꾸했다.

“그거야 형의 부모님께서 실수로…… 으악!!!!!”

그 리고 선배를 놀리면 응징당하는 것도 인지상정이다. 어차피 누진은 신경도 쓰지 않았다는 듯이, 익수는 누진의 뒤통수를 한번 세게 후려갈기고는 미지와 수진을 바라보며 미소를 지었다. 그래도 오빠 덕에 뭔가 주워 들은 게 있는 수진이 더듬거리며 입을 열었다.

“저기, 벨 연구소에서.”

“그렇지. 그 벨 연구소라는 데가, 원래 뭐였는지 알아?”

“혹시 전화 만든 그레이엄 벨인가요?”

“딩동댕! 야, 누진아. 네 동생 똑똑하네.”

“오빠가 이모양이니 그러죠…..”

“그래, 내 타입이라 이거야.”

“……이야기나 계속하세요. 이상한 소리 말고.”

물 론 그 이야기를 다 들으면 좋겠으나, 술 취한 익수와 뒤통수를 얻어맞고 입이 댓발은 나온 누진이 벌이는 만담을 그대로 받아적어도 좋겠지만 그런 식으로 이번 원고를 때웠다가는 필자가 방법당할 수도 있는 관계로, 일단은 익수의 기나긴 설명을 기사용으로 풀어서 적도록 하겠다.

1960년대, 벨 연구소에서는 본래 멀틱스(Multics : Multiplexed Information and Computing Service)라 불리던 운영체제를 개발하느라 정신이 없었다. 멀틱스는 대형 기종을 대상으로 하는 차세대 운영체제로서, 당시로서는 구현하는 것이 불가능할 정도로 많은 이상적인 목표를 포함하고 있었다. 실제로 이때 목표로 삼았던 것들 중에는 최근에야 유닉스에서 겨우 구현된 것들까지 있을 정도로, 당시로서는 놀라울 정도로 상당히 상상력이 가미된 기획이었다고 생각된다.

1960년대라고 하면, 시분할 처리 같은 것이 겨우 물 위로 올라올까 말까 하는, 소위 호랑이가 컴퓨터의 느려터진 속도에 지겨워서 담배 피우러 나가던 시절이라 할 수 있다. 그 시절에 멀틱스는 세그먼트 메모리와 가상 메모리, 공유 메모리, 다중 언어 지원, 고수준의 언어 지원과 관계형 데이터베이스, 소프트웨어 공학, 심지어는 보안에 이르기까지 다양한 개념을 실제로 구현하려 했다. 굳이 비유하자면 그 시대에 우주소년 아톰을 상상한 것 이상의 상상력을 발휘한 것이라 할 수 있다. 어쨌거나 이때의 개념들은 멀틱스 프로젝트가 망한 뒤 이 프로젝트에 동원된 인력들이 유닉스를 발전시키면서 하나씩 구현되어 왔다.

예나 지금이나 돈 안되는 프로젝트는 떨려나는 법이다. 멀틱스는 여러 팬들의 노력에도 불구하고 별로 팔리지 않았고, 프로젝트는 중단되었다. 프로젝트가 중단된 뒤에도 멀틱스 서버는 계속 돌고 있었지만 결국 마지막 멀틱스 서버가 서기 2000년에 가동을 중지했다. 한 세기를 풍미할 수도 있었지만 너무 빠른 시도였던 멀틱스는 그렇게 끝났다.

컴퓨터의 역사를 발전시키는 것은 언제나 게임?

사 실은, 걸작 게임이 나온다고 해도 워낙 인터넷이 발달한 대한민국에서 패키지 게임을 팔아먹는 것은 쉬운 일이 아니다. 초회 한정판에 레어로 엄청나게 상품을 끼워 준다고 해도 살까말까 하는 것이 대부분 한국의 게이머들이어서, 걸작이라고 반드시 팔린다는 보장은 없는 것이다. 그렇다고 해도 걸작 게임이 한번 나오는 것만으로도 확실하게 한몫 잡을 수 있는 사람들은 분명히 있을 것이다. 어쩌면 그 중에는 용산의 상인들도 포함될지 모른다. 이유는 간단하다. 새로 발매된 게임을 제대로 플레이하기 위해 수많은 게임방과 가정용 컴퓨터들이 업그레이드를 단행하기 때문이다. 최근 용산에 가보면 패키지 게임 뿐만이 아니라 “리니지 2를 위한 최강의 PC”라는 이름으로 팔리는 조립품들도 많은 것을 보면, 게임이 발전하지 않았다면 이 정도로 가정용 PC가 발전했을 가능성은 극히 적다고 하겠다.

여담이 길었지만, 게임 때문에 컴퓨터의 역사는 다시 한 번 꼬여들기 시작했으니, 그것은 바로 멀틱스의 실패 이후 새로운 프로젝트를 찾던 켄 톰슨이 하필이면 우주여행 게임을 개발할 마음을 품은 것에서 시작한다. 벨 연구소의 켄 톰슨은 이 게임을 개발하기 위해 DEC에서 개발한 PDP-7을 이용하려 했으나, PDP-7에는 쓸만한 개발 환경이 없었다. 이 시대는 정보의 바다에서 무엇이라도 찾을 수 있는 지금과 달리 필요한 것이 있으면 직접 만드는 수 밖에 없어서, 켄 톰슨은 결국 데니스 리치를 끌어들여 PDP-7에서 사용할 수 있는 파일 시스템과 원시적인 셸을 개발하고 만다. 떡 본 김에 굿을 한다고, 결국 이들은 셸과 파일 시스템에서 시작하여 다양한 유틸리티를 만들기 시작한다. 물론 게임을 만들겠다는 생각에서 시작되었다고는 하지만, 이 프로젝트에 꼬여들기 시작한 개발자들은 다중 사용자 시스템이 지닌 상업적 가치를 잘 알고 있었다. 결국 1969년에 시작된 이 프로젝트는 멀틱스의 이름을 비꼬아 만든 유닉스라는 이름이 붙은 채 미니컴퓨터인 PDP-11에 이식되었다. 물론 이 시대의 강력한 컴퓨터라고 해도 한계가 있는 것이어서, 16비트 시스템이었던 PDP-11은 불과 지금의 아이콘 하나 정도의 용량(32KB)인 운영체제로 동작하였고, 시스템 운영에 16KB, 사용자에게 8KB를 제공할 뿐이었지만 당시로서는 획기적인 물건이었다.

어쨌거나 데니스 리치는 이후 모든 전산인들의 기본이며 원흉이 되는 중대한 물건을 개발하게 된다. 원래 멀틱스에서는 켄 톰슨이 개발한 B를 사용하였지만, 데니스 리치가 C를 개발한 이후 유닉스에서 C언어를 광범위하게 사용하게 되었다. 1973년 이후 유닉스에는 C가 기본으로 장착되었고, 이 언어에 의해 유닉스와 관련 유틸리티들이 컴파일되었다.

C언어를 사용하게 된 것은 중요한 의미를 지닌다. 어셈블리로 작성된 운영체제나 프로그램이었다면 시스템에 따라 새로 작성해야 하는 부분이 많았겠지만, C언어를 사용하면 약간의 수정과 실행할 환경에서 정상적으로 실행되는 컴파일러를 사용하여 쉽게 포팅할 수 있다. 이는 다양한 환경에서 더 많은 사람들이 유닉스를 사용하는 기반이 되었다.

유닉스는 1973년 10월 ACM의 SOSP(System Operating System Principles) 컨퍼런스에서 공개적으로 발표되었다. 이후 1974년에 리치와 톰슨에 의해 “The UNIX Time Sharing System”이라는 제목으로 이 운영체제를 ACM에 발표한다. 같은 해 1월, SOSP에 참석한 버클리(Berkeley) 대학에서는 버전 4의 유닉스 테이프를 얻어 시스템을 설치했다. 바로 이 시스템에서 BSD 유닉스가 시작되었다.

벨 연구소를 포함하고 있던 AT&T는 이미 전신 사업으로 거대 기업이 되어 있었으나, 반독점법 소송의 결과 전신전화 사업과 대중 통신 서비스를 제외한 어떠한 사업에도 참여할 수 없는 상황이 되었다. SOSP의 발표 이후 유닉스를 요청하는 대학의 숫자가 늘어나자 AT&T는 유닉스 판매를 포기하는 대신 간단한 라이선스 조항에 동의하는 조건으로 연구 교육용 유닉스를 공급했다. 물론 광고나 판매는 없었으며 별다른 기술 지원도 없었다. 유닉스는 이렇게 각 대학에 번져나갔고, 대학에서 유닉스를 사용하던 사람들은 사회에 나가서도 유닉스를 사용하게 되었다. 이 과정에서 유닉스가 널리 알려지게 되었다.

유닉스는 1979년에 나온 릴리즈 버전 7부터 다른 기종에 쉽게 이식할 수 있도록 설계되었으며, 이 버전으로부터 수많은 변종이 탄생했다. 대표적인 예가 XENIX이다. 상당히 널리 사용되던 이 버전은 놀랍게도 마이크로소프트가 팔아먹던 것으로, 여담이지만 웬만큼 이 XENIX를 팔아먹고 난 뒤 마이크로소프트는 이 사업을 SCO로 넘긴다. 어쨌거나 이 버전은 꽤 성능이 안정적이었으며 피드백도 활발했지만 상업화되면서 많은 반발을 산 버전이기도 했다. GPL이나 BSD 라이센스는 이 시대 이후 만들어졌으며, 이런 오픈된 라이센스를 기반으로 오픈 소스가 발전하게 되었다. 이런 라이센스는 몇몇 개발자 그룹이 첨예하게 대립하는 계기가 되기도 하였지만 대개 큰 문제 없이 독자적으로 잘 발달하고 있다.

BSD의 탄생 이야기

“버클리 대학교 하면 뭐가 떠오르냐?”

“버클리 음대!”

” 그렇지….. 근데 서울대에 법대만 있고 연세대에 의대만 있으며 인하대에 공대만 있냐? 아니란 말이다. 버클리에는 음대만 있는 것이 아니라 컴퓨터과가 있었는데, 이 과가 또 유닉스의 역사에서 빼놓을 수 없는 곳이다, 이거다.”

[여기서 잠깐]

(버 클리 음대 혹은 버클리 음악원은 명문 버클리 캘리포니아 주립대(University of California, Berkeley)를 말하는 게 아니라 미국 보스턴에 있는 사립대학 버클리 음악대학(Berklee College of Music)입니다. 오해 없으시길. ^^)

앞서 유닉스가 거의 공짜로 배포되었을 때 버클리대학교는 이를 활발히 도입했다고 설명했다. 이후 버클리대는 유닉스 버전 5를 수행하기 위해 새로운 서버를 구입했다. 1975년 서버가 더욱 충원되었을 때, 유닉스를 만든 켄 톰슨이 방문 교수로 버클리에 돌아와 안식년을 보내게 되었다.

이 사람이, 유닉스가 굴러다니는 학교에 방문 교수로 와서, 완전히 차려놓은 밥상과 같은 이 학교에서 무슨 짓을 하고 다녔을지는 안 봐도 비디오다. 켄 톰슨은 버전 6 유닉스를 설치하고, 마침 대학원생으로 입학한 빌 조이와 척 핼리를 끌어들여 파스칼 시스템을 개발했다. 이후 1976년경부터 빌 조이는 커널을 이해하고 개선하는 작업에 뛰어들었다. 이렇게 파스칼 환경이 성공하자 다른 사람들의 요청대로 시스템을 쉽게 복사해주기 위해 빌 조이는 1977년 BSD(Berkeley Software Distribution)라는 이름의 배포판을 만들었다. 물론 이것은 아직 유틸리티 수준으로, 커널 자체는 유닉스의 것을 쓰고 있었다.

같은 해에 빌 조이는 터미널에서 화면 커서의 위치를 조정해 작업을 쉽게 할 수 있도록 그 이전에 만든 ex를 개조해 vi 편집기를 만들었다. 그리고 터미널 간의 상이한 동작을 보정하기 위해 만든 것은 termcap이 되었다. 간단히 말해 자기 불편한 것 해결하려고 이 사람이 했던 일이 현재의 유닉스 모습을 만드는데 엄청난 기여를 했다는 뜻이다. 또한 빌 조이는 C셸을 구현하기도 했다.

이 시점 이후 유닉스의 역사는 매우 복잡해진다. 버클리 대학을 중심으로 이후 BSD 계열이라 불리게 되는 유닉스가 계속 개발된 반면, AT&T는 시스템 III, 시스템 IV 등을 개발한다. 여담이지만 이 계열의 최신 시스템을 대개 시스템 V라고 하는데, 시스템 브이가 아니라 시스템 5라는 사실을 기억해 두자. 어쨌거나 이들은 본질적으로 유닉스에 속하지만 서로 표준이 조금씩 달라지며 다른 형태로 발전해갔다. 물론 이들은 대부분의 표준은 시스템 V를 중심으로, 그리고 개혁적인 부분은 BSD를 중심으로 발전하며 서로 상생하며 춘추전국시대를 이루게 되었다.

여러가지 유닉스

유닉스는 그 이름과는 달리 수많은 변종이 만들어졌으며, 현존하는 대부분의 운영체제에 영향을 끼쳤다. 리눅스 역시 이 계파에서 쉽게 벗어날 수 없다. 이번에는 여러가지 유닉스 중 대표적인 것 몇가지를 살펴보겠다.

전대물이 아닙니다 – 골라먹는 3가지 BSD!!!

먼 저 살펴볼 것은 앞서 설명한 BSD이다. 이야기가 엉뚱하게 새는 것 같지만, 동양에서는 예로부터 3이나 5 등의 홀수를 귀히 여겼으며, 서양에서도 7을 신성한 수로 생각하였다. 그래서인지는 모르겠으나 대개의 로봇 만화에서는 3대나 5대의 머신이 합체하여 하나의 강력한 로봇이 된다. 예를 들어 메칸더 브이는 3대, 인간형 로봇이라 보기는 힘들지만 독수리 5형제는 다섯 명이 각각 메카닉을 한 대씩 끌고와 합체하였으며 심지어 84태권브이는 최후에 조박사가 만든 인조인간 현이와 싸울 때 조종사가 2명뿐임에도 불구하고 굳이 한 대를 인공지능 조종이라는 설정까지 써먹어가며 탱크형, 비행기형, 지상과 공중전에 두루 능한 가운데 토막 등으로 분리, 합체하기도 하였다. 로봇물뿐이 아니다 전대물에서도 이 법칙은 그대로여서 세일러문은 내행성 5명에 외행성까지 합이 무려 9명이었으며, 후뢰시맨, 바이오맨, 마스크맨은 5명, 한국이 만들어 일본에 자랑하는 지구용사 벡터맨은 3명인 것이다.

……여담이 길었다. 하여간 우연인지는 몰라도 BSD 하면 우리는 대표적으로 다음 세 가지를 떠올리는데, 바로 FreeBSD, NetBSD, OpenBSD이다.

1990 년에 윌리엄 졸리츠는 BSD를 386으로 포팅했고, Dr.Dobb’s Journal(ddj.com)에 이 과정을 기고했다. 386/BSD라는 이 배포판에서 다른 BSD 시리즈가 탄생하기 시작한다. 우리가 사용하는 BSD 계열의 공개 유닉스는 모두 이 386/BSD에서 비롯된 것이다.

조용한 자부심이라는 말로 표현되는 FreeBSD는 우리 나라에도 생각보다 사용자가 많다. 리눅스 사용자 중에서도 FreeBSD를 함께 사용하는 사람이 꽤 되는 것으로 알고 있다. 이 품종은 강력한 성능과 안정성을 추구하며, 본격 유닉스이면서도 일반적인 시스템에서 편리하게 사용할 수 있다. FreeBSD 관리와 개발 모델은 매우 안정되고 사용하기에 편한 시스템을 지향한다. x86 플랫폼으로 가장 믿을만한 운영시스템 중 하나로서 FreeBSD의 특징은 간결함과 안정성이다. 몇 개의 중요한 사이트가 FreeBSD로 운영된다. FreeBSD의 강력한 애플리케이션 설치 도구인 포트 컬렉션은 다른 BSD 계열 운영체제인 NetBSD와 OpenBSD의 모델이 되기도 했다.

FreeBSD 는 언제든지 공식적인 코드 베이스를 수정할 수 있는 수많은 커미터가 개발에 참여하며, 이들 커미터의 선출이나 수없이 많은 논쟁의 결과 판정은 별도의 코어팀이 담당한다. 최근 이들 커미터와 코어팀의 일부는 유닉스 기반으로 만들어진 맥 OS X의 개발에도 참여하고 있다.

FreeBSD와는 별도로 386BSD 이외의 작업에 중점을 둔 다른 사람들은 BSD를 매킨토시로 포팅하였으며, 다시 아미가 등으로 확장하였다. NetBSD는 이런 확장성과 이식성에 기반하였으며, 최근의 버전은 거의 모든 플랫폼에 자유롭게 이식할 수 있다. NetBSD의 이식성은 그 어떤 운영체제에도 뒤지지 않을 만큼 뛰어나며, 최신 서버 장비뿐만 아니라 DEC의 VAX 등의 구식 하드웨어도 지원한다. 또한 이식성과 보편성을 위주로 제작되었기 때문에 코드가 매우 간결하고 깔끔하다. 이런 특성으로 인해 중요한 임베디드 시스템 중 하나로 인식되고 있다.

한 편, NetBSD 1.1 개발 중 논쟁이 벌어져 결국 개발에서 손을 뗀 떼오 드 라뜨는 직접 OpenBSD를 개발하기 시작했다. 이 운영체제는 가장 안전한 운영체제를 만드는 데 주력하였고, 현재 오버플로우가 일어나지 않는 안전성을 자랑하고 있다. 떼오는 그가 캐나다에 산다는 점을 이용하여 미 국방 수출법의 방해를 받지 않고, RSA, BlowFish와 여러 보안 관련 알고리즘을 탑재하기 시작하였으며, 이에 참여한 개발자들은 안전한 통신을 위해 널리 사용되는 프로토콜인 OpenSSH의 개발에도 기여하였다. 또한 제작 과정에서 보안상 문제가 될 수도 있는 모든 코드를 철저히 감사하여 FreeBSD, NetBSD, 시스템 Ⅴ에서 파생된 것을 포함하여 다른 운영체제와 관련된 수많은 보안 관련 버그와 코딩 실수를 잡아내어 안전한 운영체제를 만들기 위한 노력을 게을리하지 않았다.

이런 BSD 계열은 서로 경쟁하고 보완하며 여러 방면으로 발전하였으며, 우리가 지금 사용하는 리눅스 역시 이런 BSD 계열에 포함된다.

유닉스의 쌍벽, 시스템 V

지 금까지 BSD 계열에 대해서만 설명하였지만, 사실 시스템 V는 유닉스 계의 또 다른 한 축을 이루고 있다. 시스템 V는 좀 더 표준화되었으며, 새로운 기능과 BSD 계열과는 다른 여러 특징을 지니고 있었다. 예를 들어 가상 메모리 구조에 차이가 있었으며 별도의 IPC와 공유 라이브러리, 네트워크 프로토콜, 스트림 구조 등을 갖추고 있었다.

모든 상용 유닉스 중 가장 널리 퍼진 것은 시스템 Ⅴ이며, 대학과 오픈 소스 계를 중심으로 발전해 온 BSD와는 달리 대부분의 상업적 벤더에서 채택하고 있다.

새로운 태양, 솔라리스

SUN 은 스탠포드 대학 네트워크의 약자로, 이름에서 알 수 있듯이 스탠포드 공대에서 출발한다. 스탠포드의 대학원생이던 앤디 백톨샤임이 주축이 되어 비노드 코슬러, 스콜 맥닐리와 함께 썬을 개발하였으며, 이후 BSD 계에서 많은 업적을 남긴 빌 조이가 가담하여 본격적으로 발전하였다. 많은 실리콘밸리의 기업들이 그렇듯 차고에서 시작한 이 회사는 최초의 여러 시스템을 손으로 조립하여 출시하였지만 상당한 성공을 거두었고, 이 성공을 바탕으로 하여 여러 우수한 인력을 채용할 수 있게 되었다.

빌 조이는 BSD에서 이룩한 혁신을 썬에서도 계속 이어갔으며, 썬 사는 1984년 기존 BSD를 대체할 수 있는 SunOS를 개발하였다. 이 과정에서 유닉스의 역사에 여러 혁신적인 변화가 추가되었으며, 이런 변화 사항은 SVR4로 통합되었다.