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 |
| 데스크톱 환경 | CLI |
NetBSD는 BSD에서 파생된 자유·오픈 소스 유닉스 계열 운영체제이다. 커널뿐만 아니라 시스템 라이브러리, 명령줄 도구, 네트워크 서비스, 장치 관리 도구, 개발 도구와 설명서를 하나의 베이스 시스템으로 함께 개발하며, 서버와 워크스테이션부터 임베디드 장치와 과거의 컴퓨터 시스템까지 다양한 환경에서 실행할 수 있도록 설계되었다.
NetBSD 프로젝트는 4.3BSD Net/2와 386BSD를 기반으로 1993년에 시작되었다. 크리스 디미트리우, 테오 드 라트, 애덤 글래스와 찰스 M. 해넘은 당시 여러 경로로 배포되던 386BSD 패치의 품질과 통합 문제를 개선하고, 특정 하드웨어에 종속되지 않는 일관된 운영체제를 개발하기 위해 프로젝트를 창립했다. 초기부터 코드 품질과 아키텍처 독립성을 주요 목표로 삼았으며, 이후 4.4BSD-Lite의 변경 사항과 다른 BSD 및 자유 소프트웨어 프로젝트의 기술을 통합했다.
NetBSD의 가장 대표적인 특징은 이식성이다. 프로젝트는 각각의 지원 하드웨어 계열을 포트라고 부르며, 여러 프로세서 아키텍처와 시스템 버스, 펌웨어 및 장치 구성을 하나의 소스 트리에서 관리한다. 커널과 장치 드라이버의 공통 부분을 머신 독립 계층으로 분리하고, 플랫폼별 차이는 머신 의존 계층에 한정하는 구조를 사용한다. 이러한 구조는 새로운 플랫폼으로 운영체제를 이식하거나 서로 다른 시스템 사이에서 장치 드라이버와 커널 기능을 공유하는 데 이용된다.
소스 트리에 포함된 build.sh는 호스트 운영체제와 대상 아키텍처가 서로 다른 환경에서도 전체 베이스 시스템, 커널과 설치 이미지를 교차 컴파일할 수 있도록 구성되어 있다. 따라서 실제 대상 장치에서 직접 운영체제를 빌드하기 어려운 저성능 임베디드 시스템과 오래된 컴퓨터도 현대적인 개발 시스템에서 빌드할 수 있다.
NetBSD의 기본 시스템 밖에서 제공되는 응용 소프트웨어는 주로 pkgsrc를 통해 설치한다. pkgsrc는 소스 패키지와 바이너리 패키지를 모두 지원하며 NetBSD뿐 아니라 Linux, macOS, illumos, FreeBSD와 다른 유닉스 계열 운영체제에서도 사용할 수 있다. 운영체제와 패키지 시스템을 분리한 구조는 하나의 패키지 정의를 여러 플랫폼에서 공유하고, 설치 경로와 라이선스 정책, 컴파일 옵션을 중앙 설정으로 관리할 수 있게 한다.
NetBSD는 정기적인 정식 릴리스와 각 릴리스에서 파생된 안정 브랜치, 다음 주요 버전을 개발하는 NetBSD-current로 구분된다. 2026년 8월 2일을 기준으로 최신 정식 릴리스는 2024년 12월 16일 공개된 NetBSD 10.1이며, 다음 주요 버전인 NetBSD 11.0은 2026년 7월 21일 공개된 RC7 단계에 있다.
역사
BSD와 386BSD
NetBSD는 386BSD와 버클리의 Net/2 코드에서 출발한 BSD 계열 운영체제다. 당시 386BSD의 비공식 패치가 늘어나자 개발자들은 변경 사항을 통합하고 다양한 하드웨어에서 실행할 수 있는 BSD를 독립적으로 관리하기로 했다. 이렇게 시작된 1993년 NetBSD의 역사는 개인용 PC에서 출발한 자유 BSD를 다수의 CPU 아키텍처로 확대하는 과정과 밀접하게 연결된다.
NetBSD 프로젝트의 창립
NetBSD는 Chris Demetriou, Theo de Raadt, Adam Glass와 Charles Hannum 등이 1993년에 창립했다. 프로젝트의 목표는 공개 소스의 일관된 통합과 이식성, 코드 품질에 있었다. 초기 386BSD 계보와 버클리 BSD의 변경 사항을 수용하면서 별도의 개발 공동체와 릴리스 체계를 형성했다.
NetBSD 0.8과 초기 공개
1993년 4월 20일 발표된 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 개발
프로젝트의 분화와 변화
설계 목표와 특징
이식성
NetBSD의 이식성은 단순한 다중 CPU 목록이 아니라 코드 조직과 빌드 시스템의 기본 원칙이다. 여러 시스템이 동일한 커널·사용자 공간 소스 코드를 공유하도록 설계하고, CPU·버스·펌웨어에 따른 차이는 기계 의존적인 구현으로 한정한다. 새로운 하드웨어로 포트할 때 공통 모듈을 재사용할 수 있다는 점이 특징이다.
아키텍처 독립성
코드 품질과 일관성
통합된 베이스 시스템
소스 코드 중심의 개발
교차 컴파일
NetBSD는 호스트와 대상 아키텍처가 서로 달라도 전체 커널과 베이스 시스템을 빌드할 수 있도록 build.sh 기반의 교차 빌드 도구를 제공한다. 타깃 장치가 느리거나 저장 공간이 작을 때 현대 개발 컴퓨터에서 운영체제를 컴파일하고 설치 이미지를 생성할 수 있다. 이러한 방식은 임베디드 시스템과 역사적 플랫폼의 유지보수에도 유용하다.
안정성과 호환성
보안
연구 환경과 실사용 환경
시스템 구성
베이스 시스템
커널
사용자 공간
시스템 라이브러리
명령줄 도구
시스템 서비스
개발 도구
매뉴얼과 문서
릴리스 세트
서드파티 소프트웨어와의 구분
커널 아키텍처
모놀리식 커널
적재 가능 커널 모듈
머신 독립 계층
커널의 파일 시스템, 네트워크와 상당수 장치 드라이버에는 특정 CPU 명령어 집합과 직접 연결되지 않는 공통 코드가 사용된다. 인터럽트 컨트롤러, 메모리 관리 장치, 부팅 프로토콜과 예외 처리처럼 플랫폼별로 다른 기능은 머신 의존 계층에 구현한다. 이 구분은 코드 중복을 줄이고 여러 컴퓨터에서 같은 시스템 동작을 유지하는 기반이다.
머신 의존 계층
커널 객체와 내부 인터페이스
시스템 호출
인터럽트 처리
커널 동기화
시간 관리와 타이머
커널 설정
프로세스와 실행 관리
프로세스 모델
커널 스레드와 사용자 스레드
스케줄러
프로세스 생성과 종료
신호
프로세스 간 통신
실행 파일 형식
동적 링커
호환성 실행 환경
자원 제한과 회계
메모리 관리
가상 메모리
UVM
UVM은 NetBSD의 가상 메모리 시스템으로, 가상 주소 공간, 페이지 할당과 회수, 파일 매핑, 공유 메모리 및 스왑을 처리한다. CPU별 메모리 관리 장치 코드와 결합해 사용자 공간 프로세스의 주소 변환과 보호를 구현한다. 대규모 시스템뿐 아니라 제한된 메모리를 가진 장치에서도 중요한 커널 구성 요소다.
주소 공간
페이지 관리
물리 메모리 관리
메모리 매핑
공유 메모리
스왑
커널 메모리 할당
아키텍처별 메모리 관리
파일 시스템과 저장 장치
파일 시스템 계층
Fast File System
NetBSD는 버클리 BSD에서 유래한 Fast File System 계열의 디스크 저장 기능을 제공한다. inode와 블록 할당 구조를 사용하며 파일·디렉터리와 메타데이터를 관리한다. 파일 시스템 보호와 충돌 후 복구를 위한 WAPBL 등의 기능은 파일 시스템 버전과 설정에 따라 함께 사용된다.
WAPBL 저널링
Log-structured File System
tmpfs
ZFS
CD와 광학 매체 파일 시스템
네트워크 파일 시스템
PUFFS
PUFFS는 사용자 공간에서 파일 시스템 처리를 구현할 수 있게 하는 NetBSD의 프레임워크다. 커널에서 발생한 파일 연산을 사용자 공간 서버로 전달하여 개발자가 파일 시스템을 시험하거나 특수한 데이터 원천에 연결할 수 있도록 한다. 전통적인 커널 내부 파일 시스템과 비교하여 개발·디버깅의 유연성을 제공한다.
FUSE 호환 계층
가상 파일 시스템
디스크 장치
파티션과 디스크 레이블
논리 볼륨과 소프트웨어 RAID
암호화 저장 장치
파일 시스템 검사와 복구
장치와 드라이버
장치 모델
자동 구성
버스 계층
장치 드라이버의 머신 독립성
PCI와 PCI Express
USB
저장 장치 컨트롤러
네트워크 장치
그래픽 장치
입력 장치
오디오 장치
센서와 환경 모니터링
펌웨어 로딩
의사 장치
장치 드라이버 개발
네트워크
TCP/IP 스택
IPv4와 IPv6
소켓 인터페이스
네트워크 인터페이스
라우팅
브리지와 VLAN
터널링
무선 네트워크
블루투스
NPF
NetBSD Packet Filter(NPF)는 방화벽 규칙과 연결 상태 검사에 사용하는 네트워크 패킷 필터링 프레임워크다. 관리자 도구로 주소, 인터페이스, 프로토콜과 포트에 따른 네트워크 정책을 적용할 수 있다. 커널 네트워크 처리와 사용자 공간 관리 기능이 함께 동작한다.
IPsec
네트워크 서비스
네트워크 성능과 확장성
보안
사용자와 그룹
파일 권한
인증
권한 분리
Kernel Authorization
Veriexec
PaX 기능
주소 공간 배치 난수화
실행 메모리 보호
암호화 기능
보안 감사
보안 권고와 수정 배포
기본 보안 정책
가상화와 커널 활용
Xen
Xen 호스트
Xen 게스트
NVMM
NVMM은 NetBSD의 하드웨어 지원 가상화 인터페이스다. 가상 머신 모니터가 CPU 가상화 기능을 활용하여 게스트 시스템의 실행을 관리하도록 지원한다. QEMU 등 사용자 공간 가상화 구성 요소와 결합될 수 있으며, 호스트 및 CPU별 기능 지원을 확인해야 한다.
QEMU와 하드웨어 에뮬레이션
가상 네트워크
가상 저장 장치
rump 커널
rump 커널은 NetBSD의 커널 구성 요소를 일반 커널 이외의 실행 환경에서 재사용하도록 하는 기술이다. 파일 시스템과 네트워크 등의 코드를 사용자 공간에서 실행하거나 테스트할 수 있으며, 커널 기능의 독립적인 검증과 응용 연구에 활용된다. NetBSD의 코드 이식성이 운영체제 밖의 실행 모델로 확장되는 사례다.
Anykernel 아키텍처
사용자 공간에서의 커널 구성 요소 실행
테스트와 임베디드 환경에서의 활용
하드웨어 플랫폼과 포트
포트의 개념
포트의 지원 상태
amd64
i386
AArch64
ARM
MIPS
PowerPC
SPARC와 SPARC64
m68k
Alpha
VAX
SH3
그 밖의 아키텍처
개인용 컴퓨터
서버와 워크스테이션
임베디드 보드
휴대용 장치
게임기
과거의 컴퓨터 시스템
에뮬레이터와 가상 머신
플랫폼 이식
새로운 포트의 구성
부트로더 이식
머신 의존 코드
메모리 관리 장치 지원
인터럽트 컨트롤러
버스와 장치 열거
콘솔과 초기 입출력
장치 드라이버 재사용
교차 빌드 환경
설치 매체 생성
포트 유지보수
부팅과 초기화
펌웨어와 부트 환경
BIOS
UEFI
Open Firmware
플랫폼별 펌웨어
부트로더
커널 로딩
루트 파일 시스템
init
rc.d
다중 사용자 모드
단일 사용자 모드
종료와 재시작
시스템 관리
sysinst
기본 설치
시스템 구성 파일
사용자와 그룹 관리
서비스 관리
장치 관리
디스크 관리
네트워크 설정
시간과 로케일
시스템 로그
주기적 작업
백업과 복원
장애 진단
원격 관리
소프트웨어와 패키지 관리
pkgsrc
pkgsrc는 NetBSD의 외부 소프트웨어 포트·패키지 프레임워크이며, NetBSD 외에도 여러 UNIX 계열 시스템을 지원한다. 원본 소스 다운로드, 패치, 컴파일 옵션과 의존성 처리를 표준화해 같은 소프트웨어를 여러 플랫폼에 배포할 수 있게 한다. 바이너리 패키지의 설치와 소스 기반 빌드는 별개의 작업 흐름이지만 공통된 패키지 메타데이터를 활용한다.
패키지 소스 트리
바이너리 패키지
pkg_add와 pkg_delete
pkgin
패키지 빌드
빌드 옵션
의존성 관리
패키지 라이선스 정책
보안 취약점 관리
분기별 pkgsrc 릴리스
다른 운영체제에서의 pkgsrc
소프트웨어 저장소
그래픽과 데스크톱 환경
wscons
X Window System
X.Org
그래픽 드라이버
윈도 관리자
데스크톱 환경
GTK와 Qt 응용 프로그램
글꼴과 국제화
오디오와 멀티미디어
프린터와 스캐너
노트북 지원
절전과 전원 관리
데스크톱 운영체제로서의 활용
NetBSD에서는 X Window System과 지원되는 윈도 관리자, 데스크톱 환경을 설치하여 그래픽 워크스테이션을 구성할 수 있다. 실제 지원되는 드라이버와 응용 프로그램은 CPU 아키텍처별로 다르며, 특히 과거의 컴퓨터에서는 현대 그래픽 스택과 성능 요건을 고려해야 한다. NetBSD의 통합된 사용자 공간은 CLI와 GUI 환경 모두에서 공통 기반을 제공한다.
개발 환경
소스 트리
CVS 저장소
Git 미러
build.sh
build.sh는 NetBSD 소스 트리의 표준화된 빌드 진입점으로, 도구 체인·커널·사용자 공간과 설치 매체를 순서에 맞게 생성한다. 빌드의 목적지와 대상 플랫폼을 명시해 네이티브 빌드와 교차 빌드를 같은 구조로 처리할 수 있다. 개발자는 포트별 커널 구성 파일과 함께 사용해 다양한 하드웨어용 출력을 생성한다.
네이티브 빌드
교차 컴파일
커널 빌드
사용자 공간 빌드
컴파일러와 도구 체인
디버거
정적 분석
자동화된 시험
ATF와 Kyua
커널 디버깅
크래시 덤프
코딩 규칙
매뉴얼 페이지
릴리스와 유지보수
정식 릴리스
주요 릴리스
유지보수 릴리스
안정 브랜치
NetBSD-stable
NetBSD-current
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 생태계에서의 위치