웹사이트 검색

Linux 사용자를 위한 FreeBSD 비교 소개


소개

FreeBSD는 유닉스 계열의 무료 오픈 소스 운영 체제이자 널리 사용되는 서버 플랫폼입니다. FreeBSD 및 기타 BSD 기반 시스템은 Linux와 같은 시스템과 많은 공통점을 공유하지만 이 두 계열이 중요한 방식으로 갈라지는 지점이 있습니다.

이 가이드에서는 FreeBSD와 Linux 간의 중요한 차이점에 대한 보다 자세한 논의로 이동하기 전에 간략하게 FreeBSD와 Linux 간의 몇 가지 공통점에 대해 논의할 것입니다. 아래의 많은 사항은 BSD 파생 시스템의 더 큰 제품군에 정확하게 적용될 수 있지만 초점을 맞춘 결과 주로 FreeBSD를 제품군의 대표자로 언급할 것입니다.

참고: 2022년 7월 1일부터 DigitalOcean은 제어판 또는 API를 통한 새로운 FreeBSD Droplet 생성을 더 이상 지원하지 않습니다. 그러나 여전히 사용자 지정 이미지를 사용하여 FreeBSD Droplets를 스핀업할 수 있습니다. 제품 설명서에 따라 사용자 지정 이미지를 DigitalOcean으로 가져오는 방법을 알아보세요.

FreeBSD와 Linux가 공유하는 특성

FreeBSD와 Linux가 다른 영역을 검토하기 전에 이러한 시스템의 공통점에 대해 광범위한 용어로 논의해 보겠습니다.

각 제품군이 사용하는 특정 라이선스는 다르지만(나중에 논의할 예정임) 이 시스템 제품군은 모두 무료이며 오픈 소스입니다. 사용자가 원하는 대로 소스를 보고 수정할 수 있으며 공개된 상태에서 개발이 이루어집니다.

FreeBSD와 Linux 기반 배포판은 본질적으로 Unix와 유사합니다. FreeBSD는 과거의 Unix 시스템에 가까운 뿌리를 가지고 있는 반면 Linux는 처음부터 개방형 Unix와 유사한 대안으로 만들어졌습니다. 이 연결은 시스템 설계, 구성 요소 상호 운용 방법, 시스템의 모양과 수행에 대한 일반적인 기대치에 대한 결정을 알려줍니다.

일반적인 Unix와 유사한 동작은 주로 두 제품군이 대부분 POSIX와 호환되기 때문에 발생합니다. 시스템의 전반적인 느낌과 디자인은 다소 표준화되어 있으며 유사한 패턴을 사용합니다. 파일 시스템 계층 구조는 유사하게 구분되며, 셸 환경은 두 시스템의 기본 상호 작용 방법이며 프로그래밍 API는 유사한 기능을 공유합니다.

이러한 고려 사항으로 인해 FreeBSD 및 Linux 배포판은 많은 동일한 도구 및 응용 프로그램을 공유할 수 있습니다. 경우에 따라 이러한 프로그램의 버전이나 특성이 시스템 간에 다를 수 있지만 응용 프로그램은 유닉스 계열이 아닌 시스템보다 더 쉽게 포팅할 수 있습니다.

이러한 점을 염두에 두고 이제 이 두 가지 운영 체제 제품군이 서로 다른 영역에 대해 논의할 것입니다. 이러한 공통점이 차이점에 대한 정보를 보다 정확하게 소화하는 데 도움이 되기를 바랍니다.

라이선스 차이

FreeBSD와 Linux 시스템의 가장 근본적인 차이점 중 하나는 라이선스 문제입니다.

Linux 커널, GNU 기반 응용 프로그램 및 Linux 세계에서 시작된 많은 소프트웨어는 GPL 또는 GNU General Public License의 일부 형식에 따라 라이선스가 부여됩니다. 이 라이선스는 종종 \카피레프트\ 라이선스로 설명되며, 소스 코드를 자유롭게 보고, 배포하고, 수정할 수 있도록 허용하는 동시에 모든 파생물이 해당 라이선스를 유지하도록 요구하는 라이선스의 한 형태입니다.

반면에 FreeBSD는 커널과 FreeBSD 기여자가 만든 모든 도구를 포함하여 BSD 라이선스에 따라 소프트웨어 라이선스를 부여합니다. 이 라이선스 유형은 라이선스 조건을 유지하기 위해 파생물을 요구하지 않는다는 점에서 GPL보다 더 관대합니다. 이것이 의미하는 바는 모든 개인이나 조직이 변경 사항을 다시 기여하거나 자신이 생성하는 작업의 소스를 공개할 필요 없이 프로그램을 사용, 배포 또는 수정할 수 있다는 것입니다. 유일한 요구 사항은 원본 저작권 및 BSD 라이선스 사본이 파생 작업의 소스 코드 또는 문서(출시 방법에 따라 다름)에 포함되고 책임을 제한하는 면책 조항이 포함되어 있다는 것입니다. 기본 라이센스는 매우 짧으며 여기에서 찾을 수 있습니다.

이러한 라이선스 유형 각각의 매력은 거의 전적으로 사용자의 철학과 요구에 달려 있습니다. GPL 라이센스는 다른 모든 고려 사항보다 공유 및 개방형 생태계를 촉진합니다. 독점 소프트웨어는 GPL 기반 소프트웨어에 의존하지 않도록 매우 주의해야 합니다. 반면에 BSD 라이선스 소프트웨어는 독점 폐쇄 소스 응용 프로그램에 자유롭게 통합될 수 있습니다. 이것은 소프트웨어를 직접 판매하고 소스를 유지할 수 있기 때문에 소프트웨어로 수익을 창출하려는 많은 기업과 개인에게 더욱 매력적입니다.

개발자는 하나의 라이선스 철학을 다른 라이선스 철학보다 선호하는 경향이 있지만 각각에는 장점이 있습니다. 이러한 시스템의 라이센싱을 이해하면 시스템 개발에 적용되는 몇 가지 선택 사항과 철학을 이해하는 데 도움이 될 수 있습니다.

FreeBSD 계보와 그 의미

FreeBSD와 Linux 시스템의 또 다른 중요한 차이점은 각 시스템의 계보와 역사입니다. 위에서 논의한 라이센스 차이와 함께 이것은 아마도 각 진영이 고수하는 철학의 가장 큰 영향 요인일 것입니다.

Linux는 Linus Torvalds가 헬싱키 대학에서 사용하던 교육 지향적이지만 제한적인 MINIX 시스템을 대체하는 수단으로 개발한 커널입니다. Linux 커널에 구축된 운영 체제는 GNU 제품군에서 온 다른 구성 요소와 결합하여 이전 Unix OS에서 직접 파생되지 않았음에도 불구하고 많은 Unix와 유사한 속성을 가지고 있습니다. Linux는 일부 상속된 디자인 선택 및 레거시 고려 사항 없이 처음부터 시작되었기 때문에 Unix에 더 밀접하게 연결된 시스템과 크게 다를 수 있습니다.

FreeBSD는 Unix 유산과 많은 직접적인 관련이 있습니다. BSD(Berkeley Software Distribution)는 버클리 캘리포니아 대학교에서 만든 Unix 배포판으로, AT&T의 Unix 운영 체제의 기능 집합을 확장하고 라이선스 조건이 만족스러웠습니다. 나중에 사용자가 BSD를 사용하기 위해 AT&T 라이선스를 취득할 필요가 없도록 가능한 한 원래 AT&T 운영 체제를 오픈 소스 대안으로 교체하기로 결정했습니다. 결국 원래 AT&T Unix의 모든 구성 요소는 BSD 라이선스로 다시 작성되었으며 i386 아키텍처에 386BSD로 포팅되었습니다. FreeBSD는 이미 존재했던 작업을 유지, 개선 및 현대화하기 위한 노력의 일환으로 이 기반에서 분기되었으며, 결국 라이센스 문제를 위해 BSD-Lite라는 불완전한 릴리스를 기반으로 리베이스되었습니다.

길고 다단계 파생 프로세스를 통해 FreeBSD는 라이센스 측면에서 자유로워졌지만 과거와 긴밀한 관계를 유지했습니다. 시스템을 만들기 위해 노력하는 개발자들은 아마도 FreeBSD가 항상 공개 라이센스를 받은 Unix 복제본으로 작동하도록 의도되었기 때문에 작업을 수행하는 Unix 방식에 계속 투자했습니다. 이러한 뿌리는 추가 개발 방향에 영향을 미쳤으며 우리가 논의할 일부 선택의 이유입니다.

추가 소프트웨어에서 핵심 운영 체제의 분리

FreeBSD와 Linux 배포 사이의 개발 노력과 시스템 설계 측면에서 주요 차이점은 시스템의 범위입니다. FreeBSD 팀은 커널과 기본 운영 체제를 응집력 있는 단위로 개발하는 반면, Linux는 기술적으로 다양한 소스에서 제공되는 다른 구성 요소와 함께 커널만 참조합니다.

이것은 작은 차이처럼 보일 수 있지만 실제로 각 시스템과 상호 작용하고 관리하는 방법에 영향을 미칩니다. Linux에서 배포판은 선택한 패키지 그룹을 함께 번들로 묶어 함께 원활하게 상호 운용되도록 할 수 있습니다. 그러나 대부분의 구성 요소는 다양한 소스에서 제공되며 배포판 개발자와 유지 관리자는 구성 요소를 올바르게 작동하는 시스템으로 만드는 작업을 담당합니다.

이러한 의미에서 필수 구성 요소는 배포판 저장소를 통해 사용할 수 있는 선택적 패키지와 크게 다르지 않습니다. 배포판의 패키지 관리 도구는 이러한 구성 요소를 정확히 동일한 방식으로 추적하고 관리하는 데 사용됩니다. 핵심 개발 팀이 사용 가능한 소프트웨어의 하위 집합에 대해서만 걱정해야 하도록 특정 패키지를 담당하는 팀에 따라 배포판에서 다른 리포지토리를 유지할 수 있지만 이는 조직 및 초점 차이이며 일반적으로 소프트웨어의 차이로 이어지지 않습니다. 사용자 관점에서 관리합니다.

반대로 FreeBSD는 전체 핵심 운영 체제를 유지합니다. FreeBSD 개발자가 직접 만든 커널과 소프트웨어 모음은 하나의 단위로 유지 관리됩니다. 이 핵심 컬렉션의 일부인 구성 요소를 교체하는 것은 어떤 의미에서 모놀리식 소프트웨어 세트이기 때문에 간단하지 않습니다. 이를 통해 FreeBSD 팀은 기본 운영 체제를 매우 밀접하게 관리하여 긴밀한 통합과 더 많은 예측 가능성을 보장할 수 있습니다.

핵심 운영 체제에 포함된 소프트웨어는 선택적 추가로 제공되는 구성 요소와 완전히 분리된 것으로 간주됩니다. FreeBSD는 Linux 배포판과 마찬가지로 다양한 선택적 소프트웨어 모음을 제공하지만 이는 별도로 관리됩니다. 핵심 시스템은 독립적으로 단일 장치로 업데이트되며 옵션 소프트웨어는 개별적으로 업데이트할 수 있습니다.

릴리스가 형성되는 방법

대부분의 Linux 릴리스는 다양한 소스에서 소프트웨어를 수집하고 필요에 따라 수정한 결과입니다. 배포 관리자는 설치 미디어에 포함할 구성 요소, 배포 유지 저장소에 포함할 구성 요소 등을 결정합니다. 구성 요소를 함께 테스트한 후 테스트된 소프트웨어를 포함하는 릴리스가 생성됩니다.

지난 섹션에서 우리는 다음을 배웠습니다.

  • FreeBSD 운영 체제의 상당 부분은 FreeBSD 팀에서 개발했습니다.
  • 기본 운영 체제는 생산되는 주요 출력입니다.
  • 기본 소프트웨어는 응집력 있는 전체로 간주됩니다.

이러한 특성은 대부분의 Linux 배포판과는 다른 소프트웨어 릴리스 접근 방식으로 이어집니다. FreeBSD는 운영 체제 수준에서 구성하기 때문에 모든 기본 구성 요소는 단일 소스 코드 저장소 내에서 유지 관리됩니다. 여기에는 몇 가지 중요한 의미가 있습니다.

우선, 이러한 도구는 모두 단일 리포지토리에서 함께 개발되기 때문에 리포지토리 분기 중 하나의 개정판을 선택하기만 하면 릴리스가 구성됩니다. 이것은 정리된 코드 베이스에서 안정적인 지점을 선택한다는 점에서 대부분의 소프트웨어가 출시되는 방식과 유사합니다.

기본 운영 체제는 모두 활성 버전 제어를 받고 있기 때문에 이는 사용자가 원하는 시스템 구성 요소의 테스트 수준에 따라 다양한 분기 또는 안정성 수준을 "추적\할 수 있음을 의미합니다. 사용자는 개발자를 기다릴 필요가 없습니다. 변경 사항을 승인하여 시스템에 적용합니다.

이는 특정 Linux 배포판에서 안정성에 따라 구성된 다양한 리포지토리를 추적하는 사용자와 다소 유사합니다. Linux에서는 패키지 리포지토리를 추적하는 반면 FreeBSD에서는 중앙 집중식 소스 리포지토리의 분기를 추적할 수 있습니다.

소프트웨어 차이점 및 시스템 설계

우리가 논의할 나머지 차이점은 소프트웨어 자체 및 시스템의 일반적인 품질과 관련됩니다.

지원되는 패키지 및 소스 설치

사용자 관점에서 FreeBSD와 대부분의 Linux 배포판 간의 주요 차이점 중 하나는 패키지 소프트웨어와 소스 설치 소프트웨어 모두의 가용성과 지원입니다.

대부분의 Linux 배포판은 배포 지원 소프트웨어의 사전 컴파일된 바이너리 패키지만 제공하지만 FreeBSD에는 사전 빌드된 패키지와 소스에서 컴파일하고 설치하기 위한 빌드 시스템이 모두 포함되어 있습니다. 대부분의 소프트웨어의 경우 이를 통해 합리적인 기본값으로 빌드된 미리 컴파일된 패키지와 컴파일 프로세스 중에 소프트웨어를 직접 빌드하여 사용자 정의할 수 있는 기능 중에서 선택할 수 있습니다. FreeBSD는 "ports\라고 부르는 시스템을 통해 이를 수행합니다.

FreeBSD 포트 시스템은 FreeBSD가 빌드 방법을 알고 있는 소프트웨어 모음입니다. 이 소프트웨어를 나타내는 조직화된 계층은 /usr/ports 디렉토리 내에서 사용할 수 있으며 여기에서 사용자는 각 애플리케이션의 디렉토리로 드릴다운할 수 있습니다. 이 디렉토리에는 소스 파일을 얻을 수 있는 위치를 지정하는 몇 개의 파일과 FreeBSD에서 올바르게 작동하도록 소스를 적절하게 패치하는 방법에 대한 컴파일러 지침이 포함되어 있습니다.

패키지 버전의 소프트웨어는 실제로 포트 시스템에서 생성되므로 FreeBSD는 편의를 위해 패키지를 사용할 수 있는 소스 우선 배포판입니다. 시스템은 소스 빌드 및 사전 패키지 소프트웨어로 구성될 수 있으며 소프트웨어 관리 시스템은 이 두 가지 설치 방법의 조합을 적절하게 처리할 수 있습니다.

바닐라 vs 맞춤형 소프트웨어

대중적인 Linux 배포판에 익숙한 사용자에게 약간 이상하게 보일 수 있는 한 가지 결정은 FreeBSD가 일반적으로 가능한 경우 수정되지 않은 업스트림 소프트웨어를 제공하기로 선택한다는 것입니다.

많은 Linux 배포판은 다른 구성 요소와 더 쉽게 연결하고 관리를 더 쉽게 하기 위해 소프트웨어를 수정합니다. 이러한 경향의 좋은 예는 서버 구성을 보다 모듈화하기 위해 공통 웹 서버 구성 계층 구조를 재구성하는 것입니다.

많은 사용자가 이러한 변경 사항이 유용하다고 생각하지만 이 접근 방식에는 단점도 있습니다. 수정과 관련된 한 가지 문제는 사용자에게 가장 적합한 접근 방식을 알고 있다고 가정한다는 것입니다. 또한 업스트림 규칙과 다르기 때문에 다른 플랫폼에서 오는 사용자가 소프트웨어를 더 예측할 수 없게 만듭니다.

FreeBSD 관리자는 종종 패치로 소프트웨어를 수정 하지만, 이는 일반적으로 일부 Linux 배포판의 패키지 선택보다 더 보수적인 변경입니다. 일반적으로 FreeBSD 생태계의 소프트웨어에 대한 수정은 소프트웨어를 FreeBSD 환경에서 올바르게 빌드하고 실행하는 데 필요한 수정과 합리적인 기본값을 정의하는 데 필요한 수정입니다. 파일 시스템에 배치된 구성 파일은 일반적으로 많이 수정되지 않으므로 구성 요소가 서로 통신하도록 하려면 몇 가지 추가 작업이 필요할 수 있습니다.

공통 도구의 FreeBSD 특징

Linux 사용자에게 혼동을 줄 수 있는 FreeBSD 시스템의 또 다른 측면은 Linux 시스템에서와 약간 다르게 작동하는 친숙한 도구를 사용할 수 있다는 것입니다.

FreeBSD 팀은 많은 공통 도구의 자체 버전을 유지 관리합니다. Linux 시스템에서 찾을 수 있는 많은 도구가 GNU 제품군에서 제공되는 반면 FreeBSD는 종종 운영 체제에 대한 자체 변형을 제공합니다.

이 결정에는 몇 가지 이유가 있습니다. FreeBSD는 핵심 운영 체제의 개발 및 유지 관리를 담당하므로 이러한 응용 프로그램의 개발을 제어하고 BSD 라이선스에 따라 배치하는 것은 필수적이거나 유용합니다. 이러한 도구 중 일부는 일반적으로 이전 버전과의 호환성이 떨어지는 경향이 있는 GNU 제품군과 달리 파생된 BSD 및 Unix 도구와 기능적으로 밀접한 관련이 있습니다.

이러한 차이점은 명령의 옵션과 구문에서 종종 나타납니다. Linux 시스템에서 특정 방식으로 명령을 실행하는 데 익숙할 수 있지만 FreeBSD 서버에서는 동일하게 작동하지 않을 수 있습니다. FreeBSD 변형 옵션에 익숙해지려면 명령의 man 페이지를 항상 확인하는 것이 중요합니다.

스탠다드 쉘

혼동을 일으킬 수 있는 관련 포인트는 FreeBSD의 기본 셸이 bash가 아니라는 것입니다. 대신 FreeBSD는 tcsh를 기본 쉘로 사용합니다.

이 셸은 BSD용으로 개발된 C 셸인 csh의 개선된 버전입니다. bash 셸은 GNU 구성 요소이므로 FreeBSD의 기본값으로 적합하지 않습니다. 두 셸은 일반적으로 명령줄에서 유사한 방식으로 작동하지만 tcsh에서 스크립팅을 수행해서는 안 됩니다. 기본 Bourne 셸 sh를 사용하는 것이 더 안정적이며 tcshcsh 스크립팅과 관련하여 잘 설명된 몇 가지 함정을 피할 수 있습니다.

해당 환경에 더 익숙한 경우 셸을 bash로 변경하는 것이 매우 간단하다는 점도 주목할 가치가 있습니다.

보다 계층화된 파일 시스템

FreeBSD는 기본 운영 체제와 해당 계층 위에 설치할 수 있는 선택적 구성 요소 또는 포트를 구분한다고 위에서 여러 번 언급했습니다.

이것은 FreeBSD가 파일 구조에서 구성 요소를 구성하는 방법에 영향을 미칩니다. Linux에서 실행 파일은 일반적으로 /bin, /sbin, /usr/sbin 또는 /usr/bin 에 있습니다. 디렉토리는 목적과 핵심 기능에 얼마나 필수적인지에 따라 다릅니다. FreeBSD는 이러한 차이점을 인식하지만 기본 시스템의 일부로 설치된 구성 요소와 포트로 설치된 구성 요소 사이에 또 다른 수준의 분리를 부과합니다. 기본 시스템 소프트웨어는 위의 디렉토리 중 하나에 있습니다. 포트 또는 패키지로 설치된 모든 프로그램은 /usr/local/bin 또는 /usr/local/sbin 내에 배치됩니다.

/usr/local 디렉토리에는 / 또는 /usr 디렉토리에 있는 구조를 거의 미러링하는 디렉토리 구조가 포함되어 있습니다. 이는 포트 시스템을 통해 설치된 소프트웨어의 기본 루트 디렉토리입니다. 거의 모든 포트 구성은 /usr/local/etc에 있는 파일을 통해 수행되며 기본 시스템 구성은 평소와 같이 /etc에 보관됩니다. 이를 통해 애플리케이션이 기본 시스템 포트의 일부인지 여부를 쉽게 인식하고 파일 시스템을 깨끗하게 유지하는 데 도움이 됩니다.

마지막 생각들

FreeBSD와 Linux는 공통점이 많지만 Linux 배경을 가지고 있다면 서로 다른 점을 인식하고 이해하는 것이 중요합니다. 경로가 갈라지면 두 시스템 모두 장점이 있으며 두 진영의 지지자들은 선택한 이유를 지적할 수 있습니다.

FreeBSD를 Linux 렌즈를 통해 보도록 주장하는 대신 자체 운영 체제로 취급하면 OS와의 싸움을 피하고 일반적으로 더 나은 경험을 얻을 수 있습니다. 이제 앞으로 나아갈 때 주의해야 할 차이점을 상당히 잘 이해하셨기를 바랍니다.

FreeBSD 서버를 처음 실행하는 경우 다음 단계는 FreeBSD 시작에 대한 가이드가 될 수 있습니다.