NetBSD

NetBSD는 BSD에서 파생된 자유·오픈 소스 유닉스 계열 운영체제이다. 커널뿐만 아니라 시스템 라이브러리, 명령줄 도구, 네트워크 서비스, 장치 관리 도구, 개발 도구와 설명서를 하나의 베이스 시스템으로 함께 개발하며, 서버와 워크스테이션부터 임베디드 장치와 과거의 컴퓨터 시스템까지...

분류BSD, 유닉스 계열 운영체제, 자유 소프트웨어, 오픈 소스 소프트웨어
개발 주체NetBSD 프로젝트
관리 법인The NetBSD Foundation, Inc.
창시자크리스 디미트리우, 테오 드 라트, 애덤 글래스, 찰스 M. 해넘
최초 공개NetBSD 0.8, 1993년 4월 20일
기반4.3BSD Net/2, 386BSD, 4.4BSD-Lite
커널 구조모놀리식 커널, 적재 가능 커널 모듈
핵심 구현 언어C, 어셈블리어
사용자 공간NetBSD 베이스 시스템
패키지 시스템pkgsrc
초기화 시스템BSD init, rc.d
주요 파일 시스템FFS, LFS, tmpfs, ZFS
지원 플랫폼amd64, i386, ARM, AArch64, MIPS, PowerPC, SPARC, m68k, Alpha, VAX, SH3 등
릴리스 계열정식 릴리스, 안정 브랜치, NetBSD-current
현재 정식 릴리스NetBSD 10.1
차기 릴리스 후보NetBSD 11.0 RC7
주요 라이선스BSD 계열 라이선스
표어Of course it runs NetBSD
공식 사이트netbsd.org

NetBSDBSD에서 파생된 자유·오픈 소스 유닉스 계열 운영체제이다. 커널뿐만 아니라 시스템 라이브러리, 명령줄 도구, 네트워크 서비스, 장치 관리 도구, 개발 도구와 설명서를 하나의 베이스 시스템으로 함께 개발하며, 서버와 워크스테이션부터 임베디드 장치와 과거의 컴퓨터 시스템까지 다양한 환경에서 실행할 수 있도록 설계되었다.[1]

NetBSD 프로젝트는 4.3BSD Net/2와 386BSD를 기반으로 1993년에 시작되었다. 크리스 디미트리우, 테오 드 라트, 애덤 글래스와 찰스 M. 해넘은 당시 여러 경로로 배포되던 386BSD 패치의 품질과 통합 문제를 개선하고, 특정 하드웨어에 종속되지 않는 일관된 운영체제를 개발하기 위해 프로젝트를 창립했다. 초기부터 코드 품질과 아키텍처 독립성을 주요 목표로 삼았으며, 이후 4.4BSD-Lite의 변경 사항과 다른 BSD 및 자유 소프트웨어 프로젝트의 기술을 통합했다.[2]

NetBSD의 가장 대표적인 특징은 이식성이다. 프로젝트는 각각의 지원 하드웨어 계열을 포트라고 부르며, 여러 프로세서 아키텍처와 시스템 버스, 펌웨어 및 장치 구성을 하나의 소스 트리에서 관리한다. 커널과 장치 드라이버의 공통 부분을 머신 독립 계층으로 분리하고, 플랫폼별 차이는 머신 의존 계층에 한정하는 구조를 사용한다. 이러한 구조는 새로운 플랫폼으로 운영체제를 이식하거나 서로 다른 시스템 사이에서 장치 드라이버와 커널 기능을 공유하는 데 이용된다.[3]

소스 트리에 포함된 build.sh는 호스트 운영체제와 대상 아키텍처가 서로 다른 환경에서도 전체 베이스 시스템, 커널과 설치 이미지를 교차 컴파일할 수 있도록 구성되어 있다. 따라서 실제 대상 장치에서 직접 운영체제를 빌드하기 어려운 저성능 임베디드 시스템과 오래된 컴퓨터도 현대적인 개발 시스템에서 빌드할 수 있다.[4]

NetBSD의 기본 시스템 밖에서 제공되는 응용 소프트웨어는 주로 pkgsrc를 통해 설치한다. pkgsrc는 소스 패키지와 바이너리 패키지를 모두 지원하며 NetBSD뿐 아니라 Linux, macOS, illumos, FreeBSD와 다른 유닉스 계열 운영체제에서도 사용할 수 있다. 운영체제와 패키지 시스템을 분리한 구조는 하나의 패키지 정의를 여러 플랫폼에서 공유하고, 설치 경로와 라이선스 정책, 컴파일 옵션을 중앙 설정으로 관리할 수 있게 한다.[5]

NetBSD는 정기적인 정식 릴리스와 각 릴리스에서 파생된 안정 브랜치, 다음 주요 버전을 개발하는 NetBSD-current로 구분된다. 2026년 8월 2일을 기준으로 최신 정식 릴리스는 2024년 12월 16일 공개된 NetBSD 10.1이며, 다음 주요 버전인 NetBSD 11.0은 2026년 7월 21일 공개된 RC7 단계에 있다.[6][7]

역사

BSD와 386BSD

NetBSD 프로젝트의 창립

NetBSD 0.8과 초기 공개

NetBSD 1.x와 4.4BSD-Lite 통합

지원 플랫폼의 확장

멀티프로세서와 64비트 아키텍처 지원

NetBSD 2.x부터 5.x까지

NetBSD 6과 7

NetBSD 8과 9

NetBSD 10

NetBSD 11 개발

프로젝트의 분화와 변화

설계 목표와 특징

이식성

아키텍처 독립성

코드 품질과 일관성

통합된 베이스 시스템

소스 코드 중심의 개발

교차 컴파일

안정성과 호환성

보안

연구 환경과 실사용 환경

시스템 구성

베이스 시스템

커널

사용자 공간

시스템 라이브러리

명령줄 도구

시스템 서비스

개발 도구

매뉴얼과 문서

릴리스 세트

서드파티 소프트웨어와의 구분

커널 아키텍처

모놀리식 커널

적재 가능 커널 모듈

머신 독립 계층

머신 의존 계층

커널 객체와 내부 인터페이스

시스템 호출

인터럽트 처리

커널 동기화

시간 관리와 타이머

커널 설정

프로세스와 실행 관리

프로세스 모델

커널 스레드와 사용자 스레드

스케줄러

프로세스 생성과 종료

신호

프로세스 간 통신

실행 파일 형식

동적 링커

호환성 실행 환경

자원 제한과 회계

메모리 관리

가상 메모리

UVM

주소 공간

페이지 관리

물리 메모리 관리

메모리 매핑

공유 메모리

스왑

커널 메모리 할당

아키텍처별 메모리 관리

파일 시스템과 저장 장치

파일 시스템 계층

Fast File System

WAPBL 저널링

Log-structured File System

tmpfs

ZFS

CD와 광학 매체 파일 시스템

네트워크 파일 시스템

PUFFS

FUSE 호환 계층

가상 파일 시스템

디스크 장치

파티션과 디스크 레이블

논리 볼륨과 소프트웨어 RAID

암호화 저장 장치

파일 시스템 검사와 복구

장치와 드라이버

장치 모델

자동 구성

버스 계층

장치 드라이버의 머신 독립성

PCI와 PCI Express

USB

저장 장치 컨트롤러

네트워크 장치

그래픽 장치

입력 장치

오디오 장치

센서와 환경 모니터링

펌웨어 로딩

의사 장치

장치 드라이버 개발

네트워크

TCP/IP 스택

IPv4와 IPv6

소켓 인터페이스

네트워크 인터페이스

라우팅

브리지와 VLAN

터널링

무선 네트워크

블루투스

NPF

IPsec

네트워크 서비스

네트워크 성능과 확장성

보안

사용자와 그룹

파일 권한

인증

권한 분리

Kernel Authorization

Veriexec

PaX 기능

주소 공간 배치 난수화

실행 메모리 보호

암호화 기능

보안 감사

보안 권고와 수정 배포

기본 보안 정책

가상화와 커널 활용

Xen

Xen 호스트

Xen 게스트

NVMM

QEMU와 하드웨어 에뮬레이션

가상 네트워크

가상 저장 장치

rump 커널

Anykernel 아키텍처

사용자 공간에서의 커널 구성 요소 실행

테스트와 임베디드 환경에서의 활용

하드웨어 플랫폼과 포트

포트의 개념

포트의 지원 상태

amd64

i386

AArch64

ARM

MIPS

PowerPC

SPARC와 SPARC64

m68k

Alpha

VAX

SH3

그 밖의 아키텍처

개인용 컴퓨터

서버와 워크스테이션

임베디드 보드

휴대용 장치

게임기

과거의 컴퓨터 시스템

에뮬레이터와 가상 머신

플랫폼 이식

새로운 포트의 구성

부트로더 이식

머신 의존 코드

메모리 관리 장치 지원

인터럽트 컨트롤러

버스와 장치 열거

콘솔과 초기 입출력

장치 드라이버 재사용

교차 빌드 환경

설치 매체 생성

포트 유지보수

부팅과 초기화

펌웨어와 부트 환경

BIOS

UEFI

Open Firmware

플랫폼별 펌웨어

부트로더

커널 로딩

루트 파일 시스템

init

rc.d

다중 사용자 모드

단일 사용자 모드

종료와 재시작

시스템 관리

sysinst

기본 설치

시스템 구성 파일

사용자와 그룹 관리

서비스 관리

장치 관리

디스크 관리

네트워크 설정

시간과 로케일

시스템 로그

주기적 작업

백업과 복원

장애 진단

원격 관리

소프트웨어와 패키지 관리

pkgsrc

패키지 소스 트리

바이너리 패키지

pkg_add와 pkg_delete

pkgin

패키지 빌드

빌드 옵션

의존성 관리

패키지 라이선스 정책

보안 취약점 관리

분기별 pkgsrc 릴리스

다른 운영체제에서의 pkgsrc

소프트웨어 저장소

그래픽과 데스크톱 환경

wscons

X Window System

X.Org

그래픽 드라이버

윈도 관리자

데스크톱 환경

GTK와 Qt 응용 프로그램

글꼴과 국제화

오디오와 멀티미디어

프린터와 스캐너

노트북 지원

절전과 전원 관리

데스크톱 운영체제로서의 활용

개발 환경

소스 트리

CVS 저장소

Git 미러

build.sh

네이티브 빌드

교차 컴파일

커널 빌드

사용자 공간 빌드

컴파일러와 도구 체인

디버거

정적 분석

자동화된 시험

ATF와 Kyua

커널 디버깅

크래시 덤프

코딩 규칙

매뉴얼 페이지

릴리스와 유지보수

정식 릴리스

주요 릴리스

유지보수 릴리스

안정 브랜치

NetBSD-stable

NetBSD-current

자동 빌드

릴리스 엔지니어링

지원 수명

보안 업데이트

소스 기반 업데이트

바이너리 업그레이드

이전 버전과의 호환성

표준과 상호 운용성

POSIX

Single UNIX Specification

ISO C

BSD 인터페이스

네트워크 표준

파일 형식 호환성

외부 운영체제 바이너리 실행

Linux 바이너리 호환성

SunOS와 다른 UNIX 호환성

32비트와 64비트 호환성

소스 코드 이식성

활용 분야

서버

네트워크 장비

저장 장치와 어플라이언스

임베디드 시스템

산업용 장치

연구와 운영체제 개발

교육

보안 연구

레거시 하드웨어 보존

데스크톱과 워크스테이션

가상화 환경

프로젝트와 개발 공동체

NetBSD 프로젝트

The NetBSD Foundation

코어 팀

개발자와 커밋 권한

기술 책임자

릴리스 엔지니어링 팀

보안 팀

포트 유지관리자

기여 절차

메일링 리스트

개발자 회의와 행사

기부와 재정

프로젝트 인프라

라이선스

BSD 계열 라이선스

2조항 BSD 라이선스

소스 파일별 라이선스

외부 코드의 라이선스

재배포와 상용 이용

상표와 로고

다른 운영체제와의 관계

Research UNIX와 BSD

386BSD

FreeBSD

OpenBSD

DragonFly BSD

BSD/OS

Darwin과 macOS

Linux

Solaris와 illumos

MINIX

다른 유닉스 계열 운영체제

영향과 파생 기술

다른 운영체제에 제공된 코드

상용 제품에서의 활용

네트워크 장비와 임베디드 제품

pkgsrc의 확산

rump 커널의 영향

운영체제 이식성 연구

레거시 플랫폼 보존

BSD 생태계에서의 위치

장점과 한계

관련 문서

  1. The NetBSD Project
  2. The History of the NetBSD Project
  3. NetBSD: Portability and supported hardware platforms
  4. The NetBSD Guide: Crosscompiling NetBSD with build.sh
  5. The pkgsrc Guide: What is pkgsrc?
  6. NetBSD Releases
  7. Announcing NetBSD 11.0 RC7