리눅스와 다양한 BSD(Berkeley Software Distribution) 계열 운영체제는 모두 자유롭게 사용할 수 있는 오픈소스 프로젝트로, 차이점보다 공통점이 훨씬 많습니다. 그렇다면 이런 의문이 들 수 있습니다. “이렇게 비슷하다면 굳이 두 가지가 존재해야 할 이유가 있을까? 하나의 운영체제만 있는 편이 더 좋지 않을까?”
이 질문에 대한 답은 의외로 간단합니다. 두 시스템의 차이점 역시 상당히 크기 때문입니다. 모든 차이점을 다루자면 글 한 편으로는 부족하고 책 한 권 분량이 필요할 정도입니다. 따라서 이 글에서는 두 오픈소스 시스템의 기본적인 차이점에만 집중하여, 독자 여러분이 스스로 어떤 것이 더 나은 선택인지 판단할 수 있도록 도와드리고자 합니다.
리눅스 vs BSD
엄밀히 말하면 리눅스는 운영체제가 아닙니다. 실제로 리눅스는 ‘커널(kernel)’에 불과합니다. 커널은 모든 운영체제의 핵심 부분으로, 소프트웨어와 하드웨어 사이에 위치합니다. 이를 통해 커널은 사용자가 시스템 내 가용 자원을 활용할 수 있도록 돕는 역할을 하며, 우리가 흔히 아는 운영체제는 바로 이 커널 위에 구축된 것입니다.
커널과 운영체제의 차이
리눅스와 BSD는 모두 유닉스(Unix) 계열 운영체제입니다. 리눅스를 설치한다는 것은 리눅스 커널을 기반으로 만들어진 배포판(distribution)을 설치하는 것을 의미합니다. 우분투(Ubuntu), 데비안(Debian) 등 선택할 수 있는 배포판은 매우 다양하며, 이들 모두 동일한 리눅스 커널을 사용합니다. 배포판이 시장에 출시되기 전에 다양한 프로그램들이 커널 위에 탑재됩니다.
반면 BSD는 리눅스와 달리 완전한 형태의 운영체제입니다. BSD 역시 커널이며, 이 커널이 운영체제의 중심 역할을 합니다. BSD 개발자들은 이 커널에 다양한 프로그램을 추가하여 하나의 완성된 배포판 형태로 사용자에게 제공합니다. 즉, FreeBSD나 NetBSD 같은 BSD 운영체제는 커널에 여러 프로그램을 얹은 후 단일 다운로드 패키지로 배포되는 것입니다.
BSD는 ‘포트(ports) 시스템’이라는 방식을 사용합니다. 이 시스템을 통해 소프트웨어 패키지를 설치할 수 있으며, 소프트웨어는 소스 코드 형태로 보관됩니다. 즉, 소프트웨어가 실행되기 전에 컴퓨터가 매번 데이터를 컴파일해야 합니다.
다행인 점은, 패키지를 미리 컴파일된 바이너리 상태로 설치할 수 있어 사전 컴파일 과정을 생략할 수 있다는 것입니다.
두 시스템의 근본적인 차이는 다음과 같습니다. 리눅스 배포판은 서로 다른 프로그램 세트와 저장소(repository)를 제공하므로, 사용자는 해당 배포판의 요구 사항에 맞는 추가 프로그램을 자유롭게 다운로드할 수 있습니다.
반면 BSD 운영체제를 설치하면 BSD가 제공하는 프로그램만 받게 됩니다. 다만 소프트웨어 패키지 자체는 양쪽 모두에서 이용 가능하다는 점은 참고하시기 바랍니다.
라이선스의 차이
많은 사람이 크게 신경 쓰지 않을 수 있지만, 라이선스의 차이는 실제로 매우 중요합니다. 리눅스는 GNU 일반 공중 사용 허가서(GPL)를 사용합니다. 이는 개발자가 리눅스 커널을 자유롭게 수정하거나 새로운 기능을 추가할 수 있다는 의미지만, 단 하나의 조건이 있습니다. 개발자가 원하든 원하지 않든, 새로 개발된 모든 소스 코드를 반드시 공개해야 한다는 점입니다.
반면 BSD는 고유한 BSD 라이선스를 사용하며, 이 라이선스는 개발자가 소스 코드를 공개하지 않고도 BSD 커널이나 배포판을 수정하고 새로운 기능을 추가할 수 있도록 허용합니다. 즉, 개발자가 원한다면 오픈소스 BSD를 클로즈드소스로 전환할 수도 있습니다. 누구에게도 소스 코드를 공개할 의무가 없는 것입니다.
소프트웨어 가용성과 호환성
이 부분은 운영체제의 대중적 인기와 확산에 직접적인 영향을 미치는 요소입니다. 최신 소프트웨어와의 호환성은 대부분의 사용자에게 성패를 좌우하는 기능이 될 수 있습니다.
리눅스의 경우, 개발자가 작성한 코드를 미리 컴파일된 바이너리 패키지 형태로 사용자에게 제공하기가 상대적으로 쉽습니다. apt, yum 등 다양한 패키지 관리자를 통해 패키지를 설치할 수 있으며, 리눅스의 오픈소스 특성 덕분에 이러한 과정이 수월합니다.
BSD 사용자에게는 일이 그리 간단하지 않습니다. 수천 개의 포트에서 프로그램의 소스 코드를 직접 다운로드한 후, 시스템에서 직접 컴파일해야 합니다.
이는 BSD 사용자와 개발자 모두에게 골칫거리가 됩니다. 일반 사용자층에서 BSD의 인기가 부족한 이유 중 하나가 바로 소스 코드 컴파일이라는 추가 번거로움 때문입니다. 미리 컴파일된 바이너리 패키지가 이러한 불편함을 해소하는 유일한 대안이 될 수 있지만, 여전히 애플리케이션의 가용성 면에서는 부족함이 있습니다.
어떤 것을 선택해야 할까?
오픈소스 유닉스 기반 운영체제 중에서는 리눅스가 압도적으로 인기 있는 선택입니다. BSD보다 하드웨어 지원을 훨씬 빠르게 받는 경향이 있으며, 대부분의 일반적인 용도에서는 두 시스템이 너무 비슷해서 큰 차이를 느끼기 어렵습니다.
물론 두 시스템 모두 고유한 장점을 지니고 있습니다. FreeBSD를 예로 들면, 개발팀이 수많은 공통 도구의 자체 버전을 직접 관리합니다. 이를 통해 개발자들은 자신들의 시스템에 맞는 도구 변형을 만들 수 있습니다. 반면 리눅스 시스템 도구는 주로 GNU 스위트에서 제공되기 때문에 변형의 여지가 적습니다.
BSD는 애플리케이션이 심각하게 부족합니다. 이로 인해 개발자들은 리눅스 호환 패키지를 만들어 리눅스 애플리케이션을 BSD에서 실행할 수 있도록 하는 방식으로 상황을 타개하려 했습니다. 반면 리눅스 배포판은 공개된 애플리케이션이 풍부하기 때문에 애플리케이션 관련 문제가 거의 없습니다.
진짜 복잡한 문제는 바로 오픈소스 철학 논쟁입니다.
개발자·사용자 vs 제약 조건
리눅스의 GPL 라이선스는 개발자에게 더 엄격하여, 수정된 모든 소스 코드의 공개를 강제합니다. 반면 BSD 개발자는 이러한 제약이 없습니다. 여기서 중요하게 생각해야 할 점은, 개발에 참여하지 않는 일반 대중이 이 모든 것에서 무엇을 얻을 수 있는가입니다.
제조업체는 새로운 기기를 만들 때 리눅스 대신 BSD를 운영체제로 선택할 수 있습니다. 리눅스를 사용하면 소스 코드를 공개해야 하는 조건이 붙지만, BSD를 사용하면 코드 수정 사항을 자사만 알고 있을 수 있기 때문입니다.
반대로 리눅스 라이선스의 제약은 해당 시스템용 애플리케이션을 찾는 사람들에게 일종의 보증을 제공합니다. 애플리케이션이 한 번 만들어지면 반드시 접근할 수 있다는 확신을 줍니다. 반면 BSD 라이선스는 개발자가 커널 및 시스템 수정 사항에 대해 비밀을 유지할 자유를 허용합니다. 즉, 무언가가 만들어졌더라도 일반 대중은 그 존재 자체를 모를 수도 있습니다.
BSD 시스템은 리눅스보다 안정성 면에서 더 좋은 평판을 얻어왔습니다. 이 점에서 BSD에 득점을 올릴 수 있습니다. 또한 BSD는 리눅스 바이너리를 실행할 수 있으며 중앙 저장소를 제공한다고 주장합니다. 이 두 가지 모두 리눅스에는 없는 강점입니다.
결국 유닉스 기반 운영체제가 필요한 사람이라면 두 가지 모두 훌륭한 선택지입니다. 두 시스템이 너무 비슷하기 때문에 어느 한쪽을 우위에 놓기란 쉽지 않습니다. 진정한 선택 기준은 개발자 관점이냐 사용자 관점이냐, 그리고 오픈소스 운영체제에서 무엇을 중요하게 생각하느냐에 달려 있습니다.