FreeBSD 한글판 2.2.1-RELEASE CD-ROM 기사 - 제 1장 머릿말 PC의 성능의 발전에 따라 많은 유닉스 운영체제들이 인텔의 80386이상의 운영체제에 포팅되기 시작했다. 물론 그 이전에도 Minix와 같은 8086이나 80286에서 실행할 수 있는 것들도 있지만, 80386의 훌륭하고 진보적인 멀티태스킹과 보호모드는 워크스테이션에서나 보던 운영체제들을 PC에서 실행할 수 있도록 하였다. 지금의 펜티엄 프로와 같은 CPU도 결국 80386때의 멀티프로그램/멀티태스킹 구조를 쓰는 것을 보면 이 프로세서가 상당히 훌륭한 구조를 가졌다고도 말할 수 있는 것이다. PC에서 사용할 수 있는 유닉스들은 어떤 것이 있을까. 일단 사람들이 많이 아는 리눅스가 있다. 리눅스가 어떻게 만들어졌나는 말할 필요까지는 없더라도, 이는 PC에서 많은 사람들이 고성능이고 안정적인 운영체제를 쓰도록 해 주었고, 나아가 GNU와 같은 프리 소프트웨어 개발자들에게, 그리고 프로그래밍을 좋아하는 많은 해커들에게 좋은 장난감(?)이 되어 주기도 했다. 또한 시스템을 스스로 고쳐 가면서, 시스템을 구성하는 운영체제의 소스를 보아가면서 자신의 입맛에 맞도록 시스템을 바꿀 수 있다는 것은, 자신이 시스템의 운영자가 되었다는 자부심과 함께 학교 전산원이나 다른 워크스테이션급 시스템의 일반 사용자의 입장으로 '자기것 말고는 아무것도 할 수 없는' 그런 것과는 완전히 틀린 것이었다. 마치 80년대에 8비트 컴퓨터 해커들이 베이직 BIOS를 POKE명령을 사용하여 제어하던 때와 비슷한 희열을 안겨주기도 하는 것이다. 리눅스는 그 인기와 편리성, 그리고 다양한 배포본으로 많은 관심을 끌었고, 수많은 사람들이 전세계에서 지금도 많은 프로그램을 개발하고 있다. 우리나라에서도 리눅스는 많은 사용자들이 있고, 출판물에서도 다양한 종류의 책들이 나와 있다. 이전에는 리눅스를 구하는 방법이 인터넷에 접속해서 FTP사이트에서 들고오지 않으면 안되었던 때를 생각해 보면(필자도 그때 약 70여장에 달하는 3.5인치 디스켓에 SLS와 슬랙웨어 배포판을 넣고, 3.5인치로 부팅하기 위해 케이블을 사고 하던 기억이 있다), 지금은 CD-ROM의 보급과 더불어 책과 함께 CD를 사는 것만으로 집에서 편안하게 리눅스를 설치할 수 있게 되었다. 필자가 CD-ROM을 사용한 지는 얼마 되지 않았지만, 그런 CD-ROM의 보급이 전체 리눅스 보급에 상당한 기여를 했다고 본다. 그때로 그런 것들이 있었다면 얼마나 좋았을까. 이제 필자는 PC용 유닉스 중 리눅스와 비슷하면서도 다르고, 그러나 그 기본 이념은 상당히 비슷한, 우리니라 사람들에게는 좀 생소한 UNIX인 FreeBSD를 소개하고자 한다. 이미 잡지 기사나 여러 매체를 통해 접해본 적은 있겠지만, 리눅스와 달리 FreeBSD를 CD로 주는 곳은 별로 없어서 인터넷을 통해 설치하지 않는 한 실제로 써본 경험이 그리 많지는 않을 것이다. 게다가 한글관련 프로그램 바이너리들이 통신망에서 널리 돌아다니는, 그리고 알짜웨어같은 잘 만든 리눅스 배포본의 존재는, 비록 그 모체는 기존의 배포본을 기반으로 하고 있다 할지라도 사용자들에게는 많은 편리성 때문에 설치의 어려움을 많이 줄여주게 되었다. 하지만 지금까지 FreeBSD에는 그런 것들이 없었다. 이유는 간단하다고 생각하는데, 사용자가 많이 없기 때문이다. 개인적으로 FreeBSD를 좋아하고, 많이 사용하고 있는 사람으로, FreeBSD 시스템의 일부인 래드햇 리눅스의 rpm와 비슷한 패키징 시스템의 훌륭함과 편리성 때문에, 그리고 표준 FreeBSD배포본에 포함되어 있는 일본을 비롯한 다른 나라의 패키지들을 볼 때 우리나라의 많은 프로그램도 같이 배포본 내에 들어가면 좋지 않을까 하는 생각을 했고, 마침 기회도 되어 이 CD를 제작하게 되었다. 지금부터 필자는 최신판의 FreeBSD정식 배포본인 2.2.1-RELEASE와 그에 부속된 추가된 한글관련 패키지들을 소개하고, 설치 방법에 대해 소개하고자 한다. 만약 여러분들이 리눅스를 한번이라도 설치해 보았고, 유닉스에 기초적인 지식을 가지고 있다면 FreeBSD의 설치는 리눅스보다도 더 쉽다. 그러나 유닉스를 처음 접하는 사람에게도 FreeBSD는 워크스테이션급의 OS를 설치하는 것과 비슷한 설치방식과 환경을 제공하기 때문에, 초보자들에게도 많은 도움이 되리라 생각한다. 하지만 여기서 PC와 PC에서 운영하는 유닉스들에 대한 기초지식을 모두 제공할 수는 없다. 따라서 여기서 부족한 내용이 있다고 생각하면 뒤에 나오는 참고자료등이나, 시중에 나와있는 유닉스와 리눅스 관련 서적을 참고하기 바란다. FreeBSD홈페이지의 선전문구는 'Turning PCs into Workstations'이다. 과연 내 PC가 FreeBSD를 설치해서 워크스테이션으로 바뀔 수 있을까? 1. FreeBSD 1.1 소개 FreeBSD란 무엇인가요? 내지는 리눅스와는 뭐가 달라요? 라는 질문을 종종 들을 때가 있는데, 필자는 참 곤란하다. 같은 점도 아주 많지만, 다른 점도 아주 많다. 하지만 가장 공통적인 점은 '인텔 80386계열 CPU를 가진 PC(지금은 PC라고 하면 IBM-PC호환기종을 말한다. 사실 맥은 PC라고 하지 않고 그냥 맥이라고 부르고 있고, 그 외에는 별다른 PC라고 말할 게 없으니 그냥 PC라고 하면 위 말을 가리키는 것으로 하자)에서 운영할 수 있는 Unix'인 것이다. 단지 필자는 그렇게 부르기만을 좋아하지만, 많은 사람들을 무엇이 구체적으로 다른지 알고 싶어하고, 그래야만 이해하기가 쉬운 습성이 있는 듯 하다. 이 단원에서는 좀 구체적으로 리눅스와 FreeBSD가 다른점을 보겠지만, 이런 것으로 논쟁을 삼으려면 끝도한도 없다. 유즈넷이나 메일링 리스트등에서 이루어지는 토론에서는, FreeBSD와 리눅스간의 논쟁이 심심치않게 일어나기도 한다. 하지만 대부분은 건설적인 대화가 되기 보다는 단순한 '불꽃처럼 솟아올라 많은 사람의 관심을 끌지만 꺼져버리면 아무것도 아닌 논쟁'(간단히 flame이라 한다)에 불과한 것이다. 따라서 이 문제에 대해 불필요한 논쟁은 하지 말자. '아무것도 아니네'내지는 '그런건 리눅스에서는 기본이야'라고 한다면 그냥 잘 쓰고 있는 리눅스를 그냥 쓰기 바란다. 그렇게 말하자면 대칭인 모양과 같아서 어느쪽에서 말하건 같은 일이 되어 버린다. 우리의 바이블인 'FreeBSD Handbook'(여러분이 FreeBSD를 사용하게 된다면 어떤 형태로건 이 문서를 닳도록 봐야 한다)에서는 리눅스와의 차이점에 대한 것은 언급하지도 않는다. 1.1.1 FreeBSD의 특징 위장에서 리눅스등의 PC용 유닉스와의 논쟁은 무의미한것이라 했지만, 여기서는 잠시 FreeBSD의 특징이라 하는 것들에 대해 잠시 짚고 넘어가기로 하자. 핸드북(FreeBSD Handbook을 지칭한다)에서 FreeBSD를 정의하는 부분을 보면, FreeBSD is a state of the art operating system for personal computers based on the Intel CPU architecture, which includes the 386, 486 and Pentium processors (both SX and DX versions). 그냥 이렇다. 물론 AMD나 Cyrix등의 CPU도 지원한다. 이외의 주요 특징을 살펴보면(앞으로 전산학 비전공자들에게는 조금 생소한 말들이 오갈지도 모르겠는데, 몰라도 그리 걱정하지는 말기 바란다. 전공자라도 다 아는것도 아니고, 전산학이라는 학문의 특성상 비전공자가 전공자를 상회하는 지식을 갖추는 일도 드문 일이 아니다) 다음과 같다. 눈에 띄는것만을 언급해 보면.. - 선점형 멀티태스킹과 멀티유저 - TCP/IP네트워킹 - X윈도우 시스템 - SCO, BSDI, 386BSD, NetBSD, Linux와의 바이너리 호환성 - 수많은 유닉스용 어플리케이션의 제공(port와 package) - C/C++/Fortran개발환경 제공 - 소스코드의 완전한 공개 등을 들 수 있다. X윈도우는 리눅스에서 사용하는 것과 같은 MIT의 XFree86시스템을 사용하므로, 나중에 나오게 될 X셋업은 리눅스에서와 완전히 같다는 것을 알아두기 바란다. 그리고 리눅스의 a.out과 ELF바이너리를 수정 없이 실행할 수 있으며, 많은 유닉스용 프로그램을 포팅해 오기 위해 port와 package라는 조금은 독특한 패키징 시스템을 사용한다. FreeBSD라고 하면 네트워킹 기능이 뛰어나다고 생각하는 사람이 많다. 사실 TCP/IP네트워킹 프로그램의 기본이 되어버린 BSD소켓과 같은 것이 애초에 BSD를 위해 만들어 져서 그런 건지, 내지는 웹이나 FTP서버를 만들기가 쉬워서 그런지는 잘 모르겠지만, 네트워킹 부분에서 많이 사용하고 있는 것은 맞는 이야기라 할 수 있다. 예를 들어 FreeBSD의 FTP메인 서버인 ftp.freebsd.org(사실 이것은 ftp.cdrom.com의 다른 이름이다)에서는 펜티엄 프로에 FreeBSD를 서버로 사용하고 있으며, 1600명의 동시접속을 허용하고 있다. 이외에 FreeBSD의 특징이라고 하면, 리눅스가 System V에 기반하고 있는 것과는 달리 4.4BSD에 기반하고 있다는 것이다. 필자는 이것이 FreeBSD와 리눅스의 경계를 나누는 가장 큰 것이라 생각한다. 이때문에 유닉스의 역사적 이유에서 발생하는 많은 부분들에서 리눅스와 FreeBSD가 차이가 난다. 예를 들면 시스템 관리나, 프로그래밍 라이브러리와 같은 부분이 그렇다. 사실 리눅스가 순수 System V가 아닌 것은 잘 알려진 사실이지만, 적어도 FreeBSD는 소스 레벨에서 4.4BSD-Lite의 소스에 기반하고 있기 때문에, 그부분에서는 선명하다. 예를 들어 어떤 프로그램을 FreeBSD에서 돌리고자 할 때는, 4.4BSD에 대한 배려가 되어 있다면 주저없이 그 방향을 선택하면 거의 모든 경우에 프로그램이 돌아갈 수 있는 것이다. 1.2 역사 앞에서 FreeBSD는 4.4BSD에 기반하고 있다고 말했다. 그러면 4.4BSD는 과연 어떤 것을 말하는지 먼저 알아볼 필요가 있을 것이다. 여기에서는 4.4BSD와 관련 유닉스에 대해 짤막하게 다루도록 하겠다. 이미 유닉스의 역사에 대해 잘 알고 있는 사람은 그냥 넘어가도 좋다. 다음 내용은 The Design and Implementation of the 4.4BSD Operation System이라는 책의 제 1장에서 발췌한 것임을 밝힌다. 1.2.1 4.4BSD의 역사 벨 연구소에서 유닉스가 처음 개발된 이래, 유닉스는 많은 발전을 거듭해 왔다. 그 가장 큰 축은 V6유닉스 이후 벨 연구소가 속한 AT&T의 System III와 System V시리즈이고, 또 다른 하나는 BSD(Berkeley Software Distributions)이다. VAX기종에서 돌아가는 3BSD이래, 4BSD의 가장 큰 목적은 DARPA의 인터넷 프로토콜인 TCP/IP를 구현하는 것이었다. 4BSD에도 여러가지 판이 있어서, 4.0BSD, 4.1BSD, 4.2BSD, 4.3BSD, 4.3BSD Tahoe, 그리고 4.3BSD Reno가 있으며, 최종적으로 4.4BSD가 나오게 되었다. VAX라는 지금은 거의 쓰이지 않는 컴퓨터를 기반으로 개발되었던 4BSD는, 4.4BSD에 와서는 VAX가 그 생명을 다함에 따라 VAX를 기반으로 하지 않고, 대신 새로운 플랫폼들인 68000, SPARC, MIPS, 그리고 인텔의 PC아키텍처에 포팅하게 되었다. 4.3BSD Reno와 4.4BSD사이에는 두개의 네트워킹 코드에 대한 발표가 있었는데, 4.3BSD Net1와 Net2이다. 이들 코드는 4.3BSD에서 소유권 없는 코드들만이 들어 있었고, 따라서 유닉스 라이센스를 가지지 않는 곳에서도 자유롭게 이용할 수 있었다(리눅스를 비롯한 대부분의 TCP/IP네트워킹 코드는 이 두 판에 의존하는 점이 많다). 이들을 만들던 버클리 내의 CSRG(Computer Systems Research Group)은 마지막으로 두개 버전의 4.4BSD를 내게 된다. 하나는 소스코드와 바이너리를 모두 포함하지만, 유닉스 소스코드 라이센스를 필요로 하는 4.4BSD-Encumbered와, 저작권 있는 소스코드를 포함하지 않지만 자유로이 배포할 수 있는 4.4BSD-Lite가 그것이다. 이 둘의 발표후 CSRG는 해산할 것이었다. 그러나 4.4BSD-Encumbered는 제때(1993년 6월) 발표되었지만, 당시 유닉스에 대한 저작권을 가지고 있던 USL(UNIX System Laboratories, 1993년에 AT&T에서 노벨사로 매각되었다)가 저작권의 문제를 들어 4.4BSD-Lite의 배포를 막았다. 이 법정 공방은 1년 후인 1994년 4월에 해결이 되어 4.4BSD-Lite가 발표되었고, CSRG에 남아있던 나머지 기금을 모아 4.4BSD-Lite의 버그수정판인 4.4BSD-Lite, Release 2가 1995년에 발표되었다. 이것이 CSRG의 최후의 작품이 되었고, CSRG는 해산했다. CSRG이후에도 4.4BSD시스템은 계속 발전하고 있다. 프리소프트웨어 세계에서는 FreeBSD와 NetBSD그룹이 4.4BSD에 기반한 유닉스 시스템을 만들고 있다. FreeBSD 프로젝트는 주로 PC플랫폼을 기반한 배포본을 개발에 주력하고 있고, NetBSD는 4.4BSD를 가능한한 많은 플랫폼(4.4BSD의 플랫폼이었던 SPARC, MIPS등)에서 가동할 수 있도록 하는 일에 주력하고 있다. 이들은 처음 버전을 4.3BSD Net2판에 기반하고 있었지만, 나중에 4.4BSD-Lite가 나오고 난 후 이들 버전으로 바꾸었다. 상업적인 4.4BSD를 들라면 Berkeley Software Design Inc.(BSDI)사의 BSD/OS를 들 수 있다. BSDI사의 초기 버전도 FreeBSD나 NetBSD와 마찬가지로 Net2에 기반하고 있었지만, 현재의 BSDI도 4.4BSD-Lite에 기반하고 있다. 1.2.2 FreeBSD의 역사 지금까지 우리는 FreeBSD의 근간이 되는 BSD의 역사에 대하 잠깐 알아보았다. 이제는 FreeBSD에 중점을 맞추어 보자. 다음 내용은 Handbook의 1장에서 발췌함을 밝힌다. FreeBSD프로젝트는 1993년의 Unofficial BSD Toolkit에서부터 시작한다. 이는 Bill Jolitz의 386BSD운영체제가 가지고 있던 문제를(당시 386BSD는 개발이 지연되고 있었다) 해결하기 위한 것이었다. 하지만 처음 386BSD의 일부분이거나 버그수정판에 불과했던 것이 곧 이를 Bill교수와는 따로 새로운 배포본을 만들게 했고, 이를 FreeBSD라 부르게 되었다. 최초의 FreeBSD CD-ROM배포본은(이는 Walnut Creek사의 많은 협력으로 이루어졌다) 93년 12월의 FreeBSD-1.0이었다. 이는 앞에서 말한 것과 같이 버클리의 4.3BSD Net/2에 기반하고, 386BSD와 FSF(Free Software Foundation)에서 많은 부분을 채용한 것이었다. 이후 곧 94년 5월에 1.1이 발표되었다. 그러나 노벨(USL, 'UNIX'의 소유주이다)와 버클리간의 Net/2판에 대한 오랜 동안의 법정 공방은 FreeBSD에도 영향을 미치기 시작했다. 결국 판결은 버클리의 일부 코드가 노벨이 AT&T에서 받은 저작권 있는 코드에 위반한다는 것이었고, 노벨의 양보는 4.4BSD-Lite의 저작권 없는 배포를 허락한다는 것이었다. 이것은 Net/2코드에 기반하고 있던 많은 사용자들은 저작권이 없는 경우에 Net/2를 포기해야 한다는 것이었고, FreeBSD도 또한 Net/2에 기반하고 있던 94년 7월의 마지막 1.1.5.1판으로 이를 끝내게 되었다. 결국, FreeBSD는 4.4BSD-Lite에 기반한 새 판을 만들기로 했다. 하지만 저작권 문제로 Lite에서 빠지게 된 많은 코드들(4.4BSD-Lite는 몇몇 중요 코드가 빠진 덕으로 그것만으로는 부팅할 수 있는 시스템을 만들 수 없었다)을 다시 만들기 시작했다. 이 성과는 95년 1월에 FreeBSD 2.0을 내게 된다. 이후 많은 성공을 거둔 2.0.5판(95년 6월)이 발표된다. 이후 96년 8월에 2.1.5판이 발표되고, 이후 2.1.6, 2.1.7, 최종적으로는 현재 2.1의 마지막 판인 2.1.7.1과, 그와는 별도로 개발중에 있던 2.2가 새롭게 97년 봄에 발표되었다. 2.2는 약간의 버그를 수정하여 곧 2.2.1로 바뀌었으며, 새로이 3.0의 개발이 시작되고 있다. 3.0은 SMP(Symmetric MultiProcessing)과 DEC Alpha기종의 지원을 그 큰 목적으로 하고 있다. 1.3 개발과정 FreeBSD는 지금도 활발해 개발중인 OS이다. 하지만 리눅스과 같이 여러사람이 모여 제각각의 코드를 개발하고(커널은 아니라고 생각한다), 상업적이든 비상업적이든 자기 나름의 배포본(슬렉웨어, 래드햇, 데비안 등)을 개발하는 리눅스와는 달리 FreeBSD의 개발은 비교적 중앙집중식이라 말할 수 있다. 그 이유는 FreeBSD가 4.4BSD의 하나의 배포본이라고 생각하면 이해가 쉬울 것이다. 다른 배포본이라 하면 NetBSD나 OpenBSD를 찾기 바란다. 하지만 개발팀이 아닌 다른 사람들의 개발도 얼마든지 허용하고 있으니, 말하고 싶은 것이 있다거나 자기가 잡은 버그는 얼마든지 공식 경로를 통해 제출할 수 있다. 여기서는 그 개발과정의 근간에 대해 알아보자. 1.3.1 CVS Repository FreeBSD의 소스가 공개되어 있음은 이미 말한 바 있다. 이는 CVS(Concurrent Version System)에 의해 관리된다. 이는 RCS(Revision Control System)나 SCCS(Source Code Control System)와 같은 버전 콘트롤 시스템에 대해 알고 있는 사람이라면 이해가 쉬울 테지만, 간단히 말하면 소스 전체를 관리하는 서버가 있고, 각 소스를 만드는 사람들은 이에 등록해야 하고, 자신의 만든 부분을 제출하면 곳 그 부분이 다른 개발자의 소스 트리에도 반영되는 시스템이다. RCS나 SCCS의 네트웍 판이라 생각하면 된다. 여기에는 현재 개발중인 트리(-current라 부른다. 리눅스의 홀수판 커널 정도에 비유할 수 있지만 그정도가 아니고 소스 전체가 그렇다는 것이다)와 안정판 트리(-stable. 리눅스의 짝수판 커널로 생각하면 이해가 쉬울 것이다)가 있다. 1.3.1 The committers list committer란 CVS시스템의 소스트리를 바꿀 수 있는 사람을 뜻한다. 이들은 FreeBSD의 개발과정에 직접 참여할 수 있는 사람들이다. 1.3.2 FreeBSD Coreteam 이들은 FreeBSD를 하나의 회사로 생각할 때 관리자들과 같은 것이다. 이들이 주로 하는 일은 프로젝트의 개발방향을 정립하고 올바로 개발되도록 유도하는 것이다. 1.3.3 그외 공헌자들 이들은 크게 보면 현재의 소스에 대해 의견을 교환하고 버그를 고치는 많은 개발자 이외의 사람들을 뜻한다. 개발자가 아니더라고 필요한 의견 교환은 메일링 리스트들을 통해 할 수 있고, 자기가 발견해낸 버그등에 대해서는 공식 경로를 통해 제출할 수 있으며(물론 자신이 생각해낸 고치는 방법이나 자세한 상황이 포함된다), 이는 개발자 그룹에 의해 검토되고 고쳐지게 된다. 1.4 BSD한가족 4.4BSD의 역사에서, 이들에 기반한 다른 4.4BSD기반 유닉스에 대해 말한적이 있다. 결국 이들도 BSD한가족이기 때문이다. 위에서 말한 386BSD(지금은 386BSD를 더 이상 만들지 않는다)와 NetBSD, 상업용 OS인 BSDI이외에도 OpenBSD라는 것이 있다. OpenBSD는 NetBSD에서 갈라져 나간 것이다. OpenBSD도 NetBSD와 마찬가지로 여러 플랫폼의 개발을 목표로 하고 있고, 지금은 NetBSD와 많이 달라져 완전히 새로운 하나의 OS로 자리잡고 있다. FreeBSD, OpenBSD, NetBSD는 서로의 발전에 상당히 영향을 받고 있고, 서로의 좋은 점들을 채용하기도 한다. FreeBSD의 port시스템등은 OpenBSD와 NetBSD로 채용된 것이 그 좋은 예이다. 1.5 BSD Copyright GNU는 GPL(General Public License)라는 독특한 라이센스가 있지만, BSD시스템은 BSD Copyright라는 것이 있다. 이것은 GPL보다는 약한 것으로, 상업적인 공개라든가 하는 것에도 그리 민감하지는 않다. 이것도 물론 소스코드의 공개와 수정을 허용하고 있다. 1.6 BSD Daemon 필자는 BSD라고 하면 BSD의 그 귀여운 Daemon이 먼저 생각난다. 이 귀여운 악마의 이미지는 유닉스 시스템의 daemon그대로이다. John Lasseter라는 사람이 가장 먼저 디자인한 이 대몬은(John은 월트디즈니/픽사에서 토이스토리를 만든 사람이다), 현재 Marshall Kirk McKusick이라는 사람에게 저작권이 소속되어 있다. 그는 이 이미지의 개인적 사용(홈페이지에 넣는다든가)는 허가하지만, CD-ROM과 같은 공중 매체에 대한 게재는 자신에게 로열티를 지불할 것을 요구하고 있다. 이 CD도 그의 허락을 받고 만들어진 것이다. 이 대몬은 가끔 척(Chuck)이라고도 불리는데, McKusick씨는 이를 무척 싫어한다. 개인적인 바램으로는 McKusick씨가 이 저작권을 포기해 주었으면 하는데, 사실 그가 대몬 이미지로 돈 벌 생각은 아니지 않을까? McKusick씨는 4.2BSD의 Fast File System을 구현하고, CSRG에서 4.3BSD와 4.4BSD개발에 참여한 , 유닉스와 BSD에 관련된 작업에 깊이 관여한 전산학자이다.