FreeBSD

개요

FreeBSD는 BSD 유닉스로 알려진 캘리포니아 대학교 버클리 CSRG(Computer Systems Research Group)의 4.4BSD-Lite를 이어받아 개발된 오픈 소스 운영 체제이다. 리눅스와 달리 전통적인 유닉스 방식에 따라 온전한 운영 체제의 개발을 목표로 하여, 커널을 비롯한 기본적인 운영 체제 구성 요소는 하나의 CVS 트리로 관리되어 통합적으로 개발되며 그밖에 외부 개발 요소를 포함하여 단일한 배포본으로 구성된다.
기본적으로 32비트 x86 프로세서(IA-32) 기반 i386 플랫폼을 중심으로 개발되고 있으며 현재 64비트 확장판 AMD64(x86-64)을 비롯하여 NEC PC-98, 64비트 프로세서 인텔 아이테니엄(IA-64), SPARC, 파워PC, DEC 알파 아키텍처를 지원하며(단, FreeBSD 7부터 DEC Alpha 프로세서 제외), 아울러 ARM, MIPS 프로세서와 MS Xbox 기종에 대한 개발이 진행되고 있다.
FreeBSD 자체는 상용화되지는 않았으나, 안정적이고 튼튼한 운영 체제로 인정받으며 Walnut Creek CDROM(cdrom.com), 야후!, 핫메일(Hotmail) 등의 대형 인터넷 서비스에 사용되어 왔으며, 대한민국에서도 포털사이트 드림위즈(www.dreamwiz.com), 세이클럽(www.sayclub.com) 등에 채용되었다. 또한, 상용 제품인 애플 Mac OS X의 코어 Darwin의 토대이며, 마이크로소프트의 C# 및 CLI 소스공유(Shared Source Initiative) 대상이다.

역사

FreeBSD는 당시 약 20년의 개발 역사를 가진 BSD를 바탕으로 개발되었다. 이후 BSD의 원래 개발자들이 설립한 BSDi의 BSD/OS와도 교류하며 꾸준히 개발되어 왔으며, 현재 BSD 계열의 가장 대표적인 운영 체제이다.

BSD 역사

처음 BSD 개발은 유닉스 제6판의 추가 기능(add-on)이라는 개념으로 시작되었다. 1977년 캘리포니아 대학교 버클리의 대학원생이었던 빌 조이(Bill Joy)는 미니컴퓨터 PDP-11에 설치된 유닉스에 사용할 파스칼(Pascal) 컴파일러와 라인에디터 Ex를 작성하고, 이것을 중심으로 패키지를 만들어 “Berkeley Software Distribution”이라는 이름으로 배포하였다. 그 이듬해 1978년에는 vi 에디터와 C 셸을 작성하고 이것을 포함한 두 번째 배포본 “Second Berkeley Software Distribution”을 만들었는데, 이것이 2BSD라는 약칭으로 불렸다. 이후 개량이 지속되어 1983년에는 유닉스 버전 7을 기반으로 한 온전한 운영 체제 배포본으로서 2.9BSD로 완성되었다.
한편, 1979년 말에는 새로 도입된 VAX 기종에서 3BSD가 탄생한다. 3BSD는 VAX용 유닉스인 UNIX/32V를 개량하여 가상메모리를 구현한 새로운 커널을 만들고 2BSD를 흡수하여 새로운 운영 체제로 만들어졌다. 이어 1980년에는 3BSD를 개량하여 4BSD가 만들어지고 그 성능을 개선한 4.1BSD가 1981년에 나왔으며, 1983년에는 TCP/IP 구현과 새로운 파일시스템 FFS를 포함한 4.2BSD가 개발되었다. 1986년에 발표된 4.3BSD는 기능 개선보다는 4.2BSD의 성능 향상이 주요 목표였는데, 4.3BSD 배포 후에 기존 VAX 시스템으로부터 Power 6/32로 이전하여 1988년 4.3BSD-Tahoe가 나오면서 코드를 시스템 의존적인 부분과 비의존적인 부분으로 나누는 한편, AT&T의 원본 유닉스 코드와 완전히 결합된 형태가 되었다. 이에 따라, BSD의 사용에서도 AT&T의 라이선스가 필요하게 되는데, AT&T 코드와 분리된 배포 요구에 따라 1989년 AT&T의 유닉스 코드를 제외한 “Networking Release 1 (Net/1)”이 만들어지고 자유롭게 재배포할 수 있는 BSD 라이선스를 적용하였다. 1990년 초에는 4.3BSD-Reno가 나오며 CMU 마크(Mach)의 가상메모리 시스템과 Sun의 NFS이 구현되었다.
마침내 1991년에는 대부분의 AT&T 코드를 BSD 코드로 대체한 “Networking Release 2 (Net/2)”가 나왔는데, 이것은 PC로 옮겨져 386BSD와 BSD/386의 기반이 되었다. 1992년에 발생한 저작권 및 상표권을 둘러싼 USL과 BSD의 법정 공방 끝에, 1994년 4.3BSD-Net/2는 AT&T 라이선스가 필요한 4.4BSD-Encumbered와 완전히 자유로운 4.4BSD-Lite로 나뉘어 다시 배포되었다. 1995년에는 BSD의 최종판인 4.4BSD-Lite Release 2가 나오며, CSRG는 그동안의 모든 연구와 개발을 마무리하고 해산하였다. 이즈음 386BSD는 FreeBSD와 NetBSD로 이어졌고 BSD/386은 BSD/OS이 되어 4.4BSD를 계승한다.

FreeBSD의 태동과 변천

FreeBSD의 개발은 1993년부터 4.3BSD Net/2에 기반한 386BSD의 소스 코드를 이용하여 시작되었다. 처음은 1992년 Jordan K. Hubbard, Nate Williams, Rod Grimes 세 사람이 시작한 “Unofficial 386BSD Patchkit”로 원래는 386BSD를 보완하는 개념이었으나 386BSD의 개발이 줄곧 늦어지고 작업 결과가 반영되지 않으면서, 이 작업은 결국 별도의 BSD 운영 체제 개발로 전환되어 David Greenman의 명명에 따라 ‘FreeBSD’라는 이름으로 독자적인 작업이 되었고, 1993년 11월 FreeBSD 1.0이 발표되었다. Walnut Creek사의 후원으로 CD-ROM으로 배포된 최초의 FreeBSD는 4.3BSD를 바탕으로 386BSD의 작업과 GNU 결과물을 포함하여 구성되었는데, 곧이어 1994년 5월에 버전 1.1이 발표되었고 1994년 7월 버전 1.1.5.1로 완료된다. 그런데 이 무렵 4.3BSD Net/2를 둘러싸고 AT&T Unix의 소유자였던 USL과 BSD Unix의 개발자 캘리포니아 대학교 버클리 사이에 발생한 저작권 분쟁의 여파로 4.3BSD Net/2에 기반한 기존의 386BSD 소스 코드는 사용을 중단해야 했고, 이에 따라 FreeBSD 2.0은 자유로운 배포를 보장받은 4.4BSD-Lite를 바탕으로 다시 작성되었다.
1995년 1월에 발표된 FreeBSD 2.0은 4.4BSD를 기반으로 전면 재작성되어 1995년 6월 버전 2.0.5을 거쳐 1998년 11월 버전 2.1.7.1과 버전 2.2.8로 완료되었다. 가장 큰 향상은 CMU의 Mach 가상 메모리 시스템을 개선하여 과부하 상태에서도 안정적인 성능을 유지하도록 최적화되었고, 포트(port) 시스템이 도입되어 서드파티 소프트웨어의 설치 및 관리의 편의를 제공한다.
FreeBSD 3.0은 1998년 10월에 발표되어 2000년 7월 버전 3.5.1로 마무리되었는데, ELF 바이너리 포맷으로 전환, 대칭형 다중 프로세서(SMP) 시스템 지원, 새로운 64비트 플랫폼 DEC Alpha 지원 등의 변화가 있었다. 비록 확실한 기능상의 이점도 성능 향상도 가져오지 못했다는 비판도 있었으나, 1995년 6월에 완성된 BSD Unix의 최종 결과물 4.4BSD-Lite2까지 흡수하며 이전의 여러 개발 성과들을 총괄하여, 향후 FreeBSD 4에서의 도약을 위한 토대가 되었다.
2000년 3월에는 FreeBSD를 후원하던 Walnut Creek CDROM과 BSD/OS의 개발사 BSDi가 합병하였다. 이 결과, 원래 CSRG의 BSD 개발자들이었던 BSDi의 개발진이 FreeBSD에 합류하여 BSD/OS와 FreeBSD의 코드를 통합한 오픈 소스 FreeBSD 개발을 지속하고, BSD/OS는 이를 바탕으로 비공개 드라이버 등 상업용 구성 요소를 추가하고 상업적 기술 지원을 제공하는 상용 제품으로 추진하는 방안이 모색되었다.

안정판(stable)과 개발판(current)

FreeBSD는 실용을 위한 안정판(stable)과 함께 개발 과정을 반영한 개발판(current)를 병렬적으로 운용하고 있다. 안정판은 현재의 배포본을 바탕으로 업데이트가 진행되고 있는 것이며, 어느 정도 개선 작업이 축적되면 소규모 업그레이드가 적용된 새로운 배포본을 만든다. 개발판은 이와 별도로 보다 근본적인 설계 변경 등의 대규모 작업이 장기적으로 진행되고 있는 것으로 이 결과는 대규모 업그레이드가 된 차기판으로 나오게 된다.

특징

FreeBSD는 UC 버클리 CSRG의 4.4BSD를 계승하여 개발되어 왔으며, BSD 전통에 따라 어떠한 제약 조건없이 누구든지 어느 목적으로도 사용할 수 있는 소프트웨어를 만드는 것을 목표로 한다. 기본적으로 널리 보급되어 있는 x86 PC 기종에서 동작하는 고성능 운영 체제를 추구하고 있으며, 수많은 자원 봉사자의 노력과 여러 공헌자의 협조로 개발되고 있다. FreeBSD는 다른 운영 체제와 직접 경쟁하거나 또는 대체하는 것을 목표로 하지 않으며, 다만 가장 널리 사용되어 보다 많은 경우에 폭넓은 유용성을 제공하는 것을 추구한다.

IA-64 아키텍처

FreeBSD/ia64는 인텔 아이태니엄(Itanium) IA-64을 지원한다. FreeBSD 5에서 지원이 시작되었다. 인텔 Itanium, Itanium 2 CPU와 HP zx1, Intel 460GX, Intel E8870 칩셋이 지원된다.

DEC 알파 아키텍처

FreeBSD/alpah는 DEC 알파 프로세서 기반 시스템을 지원한다. FreeBSD 3.3 및 FreeBSD 4.1부터 지원되었으나 알파 기종의 단종에 따라 FreeBSD 7부터는 개발이 중단되었다.

PowerPC 아키텍처

FreeBSD/powerpc는 PowerPC 기반 시스템을 지원한다. FreeBSD 6부터 지원된다.

포트 및 패키지

기본 시스템 소프트웨어 이외에 응용 프로그램들은 운영 체제 설치와 별도로 설치 작업이 필요한데, FreeBSD는 이 과정에 대하여 포트(port) 및 패키지(package)라는 관리 방법을 사용한다.
시스템에 설치된 응용 프로그램은 각각 패키지라는 개념으로 관리된다. 하나의 응용 프로그램이라도 여러 가지 요소로 구성되며 또한 여러 응용 프로그램에서 공통적으로 사용되는 요소도 존재하는데, 각각 개별 단위로 구분될 수 있는 구성 요소가 “패키지”가 된다. 이때 프로그램의 올바른 설치 및 동작을 위해 필요한 패키지 상호간의 관계를 “의존성”이라고 하는데, FreeBSD의 패키지 관리에서는 이러한 의존성까지 점검하고 있다.
한편, 패키지는 바이너리 파일로 직접 설치될 수도 있지만 프로그램 소스를 직접 컴파일하여 설치할 수도 있는데, 이 경우에는 우선 배포되는 프로그램 소스를 수집하고, 운영 체제 및 하드웨어에 적합하도록 소스 코드의 일부 수정이 필요하게 된다. 이때 FreeBSD는 “포트”를 사용하여 소스 코드의 수집, 수정과 컴파일 및 설치 과정 모두를 자동화한다. 즉, “포트”는 소스 코드를 통한 응용 프로그램 설치를 위하여, 소스 코드의 배포 위치, 수정해야 할 부분, 컴파일 작업, 설치 과정 등 모든 단계의 정보를 담아 놓은 자동화 파일의 집합이다. 이것을 통하여 FreeBSD는 직접 관리·배포하는 기본 시스템 소프트웨어 이외에도 사용 가능한 모든 오픈 소스 프로그램에 대하여 일관된 유지 보수가 가능하게 된다.

호환성

FreeBSD는 다른 유닉스 계열 및 리눅스 운영 체제와 바이너리 호환성을 제공하고 있는데, FreeBSD 7에서는 리눅스 커널 2.6과 바이너리 호환성이 제공된다.
이처럼 호환 계층을 이용하여 바이너리만 배포되는 리눅스 전용 프로그램도 FreeBSD에서 실행할 수 있는데, 그 대표적인 것으로는 오라클, VMware, 매스매티카(Mathematica), 매트랩(Matlab), Sun 스타오피스(StarSuite), 워드퍼펙트, 모질라 파이어폭스, 어도비 아크로뱃, 리얼플레이어, 스카이프(Skype), 둠 3, 퀘이크 4 등이 있다. 리눅스용 프로그램을 실행할 때에도 FreeBSD용 프로그램에 비해 두드러진 성능 저하는 없으며, 심지어 같은 프로그램을 리눅스에서 실행시키는 것보다 더 빠른 경우도 있다고 한다. 다만, 일부 프로그램은 리눅스 호환 계층에서 실행에 문제가 있을 수 있다.

FreeBSD 재단

FreeBSD 프로젝트를 후원하기 위한 비영리 단체로 FreeBSD 재단(The FreeBSD Foundation)이 설립되어 있다. 2000년 말에 설립된 이 단체는 FreeBSD를 위한 각종 모금 활동 등 후원 조직인 동시에 법률 관계, 라이선스, 계약 체결 등에서 FreeBSD 프로젝트의 법적 실체로 활동한다. 재단 설립 이전에는 프로젝트의 초기 멤버인 조다단 허버드와 데이비드 그린맨이 1995년 초에 설립한 ‘FreeBSD, Inc.’가 이러한 역할을 대행하였다.

라이선스

FreeBSD는 다른 BSD계열 운영 체제와 마찬가지로 기본적으로 BSD 라이선스를 따르고 있으나, 최종 배포본 구성에서는 외부 개발 코드도 사용되므로 전체적으로는 다양한 라이선스가 적용되어 있다.
거의 대부분을 차지하는 비교적 새로 짜인 기본 코드는 FreeBSD 라이선스가 적용되는데, 이것은 두 조항으로 구성된 BSD 사용 허가서로서 저작권 명시와 보증 부인 및 면책 선언을 유지하는 조건으로 자유로운 수정 및 재배포가 허락된다.
그 밖에 외부 코드는 대부분 BSD 계열 라이선스나 GPL 또는 LGPL을 따르고 있다.

로고와 마스코트

초기 FreeBSD 로고는 ‘Beastie’라는 애칭의 BSD 데몬(BSD Daemon)을 그대로 사용했다. 4.2BSD부터 사용된 BSD의 로고 BSD 데몬은 다른 이름은 갖지 않는다. 현재 BSD 데몬의 저작권은 4.4BSD의 개발자였던 마셜 커크(Marshall Kirk McKusick)가 소유하고 있다. 여기에는 여러 가지 도안이 존재하는데 가장 널리 알려진 것은 애니메이션 “토이 스토리(Toy Story)”의 작가 존 라세터(John Alan Lasseter)의 작품이다. FreeBSD에 특화된 도안으로는 호소카와 타츠미의 도안이 사용되다가, 2005년에 새로운 로고를 공모하여 2005년 10월 8일 Anton K. Gural의 디자인이 채택되었고, 예전의 BSD 데몬은 FreeBSD의 마스코트로 남게 되었다.
FreeBSD의 슬로건은 ‘The Power to Serve’이다.