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 |
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 프로젝트의 창립
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 생태계에서의 위치
장점과 한계
관련 문서