386BSD

386BSD는 William F. Jolitz와 Lynne Jolitz가 BSD를 Intel 80386 기반 IBM PC 호환 기종으로 이식하여 공개한 자유 재배포 유닉스 계열 운영체제이다. Jolix라고도 불리며, 특히 후기의 Release 1.0 계열을 가리키는 명칭으로 사용되었다.

분류유닉스 계열 운영체제, BSD, 자유 소프트웨어
개발자William F. Jolitz, Lynne Jolitz
기반BSD Net/2
최초 공개1992년 3월 17일
주요 공개판Release 0.0, Release 0.1, Release 1.0
후기 명칭Jolix
구현 언어C, 어셈블리어
커널 구조모놀리식 커널, 후기 공개판의 모듈형 구조
대상 플랫폼Intel 80386, IBM PC 호환 기종
라이선스BSD 계열 허가 라이선스
개발 상태역사적 프로젝트
주요 파생 운영체제NetBSD, FreeBSD

386BSD는 William F. Jolitz와 Lynne Jolitz가 BSDIntel 80386 기반 IBM PC 호환 기종으로 이식하여 공개한 자유 재배포 유닉스 계열 운영체제이다. Jolix라고도 불리며, 특히 후기의 Release 1.0 계열을 가리키는 명칭으로 사용되었다.

386BSD는 캘리포니아 대학교 버클리의 Computer Systems Research Group이 공개한 Net/2 소스에서 출발했다. Net/2는 AT&T의 독점 코드를 상당 부분 제거한 BSD 소스 배포판이었지만, 부팅 가능한 완전한 운영체제를 구성하는 데 필요한 커널 코드 일부가 빠져 있었다. William Jolitz는 누락된 부분을 구현하고 Intel 80386의 보호 모드, 페이징과 하드웨어 구조에 맞추어 BSD를 이식하였다.[1]

개발 과정은 1989년에 시작되었으며, 두 개발자는 1991년부터 《Dr. Dobb's Journal》에 연재한 Porting UNIX to the 386을 통해 프로세서 초기화, 가상 메모리, 프로세스 전환, 시스템 호출, 파일 시스템과 장치 입출력 등 이식 과정을 단계적으로 설명했다. 1992년 3월 17일 공개된 Release 0.0은 소스와 설치 파일을 여러 장의 플로피 디스크로 배포했으며, 뒤이어 나온 Release 0.1은 설치 가능성과 하드웨어 지원을 개선하여 더 널리 사용되었다.[2]

386BSD는 저렴한 개인용 컴퓨터에서 소스가 공개된 BSD 환경을 실행하고 운영체제 자체를 다시 빌드할 수 있게 했다는 점에서 의미가 있다. 당시 상용 워크스테이션이나 UNIX 라이선스 없이도 BSD 커널과 사용자 공간을 연구하고 수정할 수 있는 환경을 제공했으며, 인터넷을 통한 운영체제 소스 배포와 공동 개발이 확대되는 데 중요한 기반이 되었다.

Release 0.1 이후에는 여러 사용자가 오류 수정과 하드웨어 지원을 모은 비공식 386BSD Patchkit을 관리했다. 그러나 패치가 빠르게 증가한 데 비해 공식 소스에 변경 사항을 통합하는 과정은 원활하지 않았고, 프로젝트 운영과 개발 방향을 둘러싼 차이도 나타났다. 이러한 상황에서 1993년 NetBSDFreeBSD가 각각 별도의 프로젝트로 형성되었다. NetBSD는 코드 품질과 여러 하드웨어 아키텍처로의 이식성을 중심 목표로 삼았고, FreeBSD는 초기에는 Intel 80386 기반 PC에서의 완성도와 배포에 집중했다.[3][4]

386BSD 자체는 NetBSD나 FreeBSD처럼 장기간 지속되는 대규모 공동 개발 운영체제로 성장하지 않았지만, Net/2를 실제 PC에서 사용할 수 있는 운영체제로 연결하고 초기 자유 BSD 공동체가 형성되는 계기를 마련했다. 따라서 386BSD는 독립된 운영체제로서의 사용 기간보다 현대 오픈 소스 BSD 계통의 직접적인 출발점이자 1990년대 초 개인용 컴퓨터용 자유 유닉스 계열 운영체제의 발전을 촉진한 프로젝트로 평가된다.

명칭

386BSD

Jolix

BSD/386과의 구분

역사

BSD와 Intel 80386

Net/1과 Net/2

개발의 시작

Porting UNIX to the 386

Release 0.0

Release 0.1

비공식 386BSD Patchkit

NetBSD의 분화

FreeBSD의 분화

Release 1.0과 Jolix

Release 2.0과 후기 보존 활동

개발 목표

Intel 80386으로의 BSD 이식

저비용 개인용 컴퓨터 지원

자유로운 소스 배포

자가 호스팅 개발 환경

운영체제 설계 연구

시스템 구성

커널

사용자 공간

C 라이브러리

셸과 기본 명령어

개발 도구

시스템 설정

커널 구조

커널 초기화

프로세스와 스케줄링

시스템 호출

인터럽트와 예외 처리

장치 독립 계층

후기 공개판의 모듈형 구조

메모리 관리

Intel 80386 보호 모드

가상 주소 공간

페이징

페이지 폴트

프로세스 이미지

메모리 매핑

프로세스와 실행 환경

프로세스 생성

프로그램 실행

문맥 교환

신호

사용자 모드와 커널 모드

멀티태스킹

파일 시스템

Fast File System

가상 파일 시스템

vnode

버퍼 캐시

장치 파일

파일 시스템 검사와 복구

장치와 입출력

ISA 버스

디스크 컨트롤러

플로피 디스크

콘솔과 키보드

직렬 포트

네트워크 인터페이스

장치 드라이버의 한계

네트워크

BSD 소켓

TCP/IP

네트워크 인터페이스 계층

라우팅

네트워크 도구

인터넷을 통한 배포

지원 하드웨어

Intel 80386

IBM PC 호환 기종

메모리 요구 사항

저장 장치

디스플레이 어댑터

주변 장치

하드웨어 호환성의 한계

설치와 부팅

MS-DOS 기반 부트스트랩

설치 플로피

Tiny 386BSD

디스크 파티션 구성

파일 시스템 설치

초기 시스템 설정

현대 가상 머신에서의 실행

소프트웨어 개발 환경

C 컴파일러

어셈블러와 링커

make와 시스템 빌드

커널 재구성

자가 컴파일

응용 프로그램 이식

배포 방식

플로피 디스크 배포

FTP 배포

미러 사이트

패치킷 배포

386BSD Reference CD-ROM

소스 코드 보존

개발 체계와 공동체

Jolitz 중심의 개발

사용자와 기여자

비공식 패치 관리

패치 통합 문제

개발 방향의 차이

프로젝트 분화

라이선스

BSD 계열 라이선스

소스 코드 재배포

바이너리 배포

광고 조항

파생 저작물

법적 배경

Net/2의 코드 구성

UNIX System Laboratories와 BSDi의 소송

386BSD와 소송의 관계

4.4BSD-Lite로의 전환

초기 BSD 파생 운영체제에 미친 영향

다른 운영체제와의 관계

Research UNIX

Berkeley Software Distribution

4.3BSD Net/2

BSD/386과 BSD/OS

Linux

4.4BSD-Lite

파생 운영체제

NetBSD

FreeBSD

OpenBSD

DragonFly BSD

간접적인 BSD 계통

영향

개인용 컴퓨터용 BSD

자유 유닉스 계열 운영체제

인터넷 기반 소프트웨어 배포

오픈 소스 운영체제 개발

현대 BSD 프로젝트의 형성

운영체제 교육과 연구

역사적 평가

기술적 의의

배포와 접근성

개발 체계의 한계

Linux와의 경쟁 환경

BSD 계통에서의 위치

보존과 현대적 실행

원본 소스와 배포 이미지

386BSD.org

소스 저장소

QEMU

VirtualBox

실제 구형 하드웨어

장점과 한계

관련 문서

  1. FreeBSD Documentation Portal: Explaining BSD
  2. 386BSD: Running Light with 386BSD
  3. The NetBSD Project: The History of the NetBSD Project
  4. FreeBSD Documentation Archive: A Brief History of FreeBSD