18. 386BSD의 탄생

1989년 윌리암 졸리츠(William Jolitiz), 린 졸리츠(Lynne Jolitz) 커플은 인텔 386PC에 BSD유닉스를 포팅하기 시작한다.

“그 비싼 인텔386로 게임이나 하는거야?”
“응, 게임이 너무 빨라서 터보 스위치는 끄고 있어..”

참고로 인텔 80386 CPU를 채용한 컴퓨터는 컴팩에서 1986년에 처음 출시했다.

“게임은 그만하고 우리 인텔386 PC에 BSD유닉스를 포팅하면 어떨까?”
“도스나 돌리는 인텔칩에 유닉스를 돌릴 성능이 나올까?”

“인텔 80386는 32-bit CPU야, 그리고 MMU를 지원해서 가상 메모리 구현도 가능해. 그런데, 아직 포팅된 유닉스가 없어.”

80년대 말은 썬마이크로시스템스, IBM, 휴렛팩커드(HP), 실리콘 그래픽스, 넥스트 컴퓨터에서 워크스테이션이라는 고성능 컴퓨터를 만들고 있었다. 이는 개인용이 아니라 연구 개발용으로 사용되는 컴퓨터로 일반인이 구입하기에는 가격이 비쌌다. 대부분 RISC계열 32 비트 CPU와 주변기기 연결을 위해 SCSI 인터페이스를 사용했다. 이들 워크스테이션은 AT&T 유닉스 또는 BSD유닉스를 기반으로한 유닉스 계열 운영체제를 사용했다.

“BSD를 인텔 386 CPU에 포팅한다고 들었어. 그런데, 왜 DEC가 만든 알파칩에 안해?”
“내 생각 인텔의 X86 아키텍처가 앞으로 CPU 시장을 이끌 것 같아.”

“하하, X86은 그냥 DOS칩이잖아?”
“인텔80386이 DEC 메인 프레임보다 빠른거 알어?

“내가 인텔 엔지니어들과 이야기를 나눈적이 있는데, 앞으로 10년동안 18개월마다 성능을 두배로 올릴 수 있다는군[1].”

80년말에 인텔 CPU는 개인용 컴퓨터를 위한 CPU였고, 누구도 유닉스를 실행할 것이라고 생각하지 못했다. 하지만, 결론적으로 이들의 선택은 옳았다.

이들은 코드를 공개하기전에 포팅에 대한 기술적인 내용을 미리 Dr. Dobb’s Journal를 통해 1991년 1월 부터 18개의 기사를 연재했다.

“우리가 하는 포팅 작업을 먼저로 글을 써보자. Dr. Dobb에 연재해보는거야.”
“글쎄, 아직 릴리스도 안했는데, 먼저 쓸 필요가 있을까?”

“난 빨리 우리가 한 일을 널리 알리고 싶어”
“그래, 하지만.. 왠지 내키지가 않네..”

참고로, 기사 내용은 아래와 같이 윌리암 졸리츠가 운영하는 386bsd.org에 공개되어 있다.

  • Designing the Software Specification In this first installment of a multipart series, the design specification for 386BSD, Berkeley UNIX for the 80386, is discussed.
  • Three Initial PC Utilities Utilities to let you execute GCC- compiled programs in protected mode from MS-DOS and copy files to a shared portion of disk so MS-DOS and UNIX can exchange information.
  • The Standalone System Using the protected mode program loader, a minimal 80386 protected mode standalone C programming environment for operating systems kernel development is created.
  • Language Tools Cross Support Developing the initial cross-tool utilities to bootstrap 386BSD.
  • The Initial Root Filesystem The development of the initial root filesystem required for the 386BSD operating system kernel.
  • Research & The Commercial Sector A discussion of the various demands placed on research and commercial operating systems, and how they differ.
  • A Stripped-Down Kernel The 386BSD basic kernel, incorporating a unique ‘recursive’ paging feature that leverages resources and reduces complexity.
  • The Basic Kernel Initialization of the 386BSD kernel services and data structures
  • Multiprogramming and Multitasking I An overview of the multiprogramming paradigm in 386BSD. Conventions, definitions, and organization of multiprogramming.
  • Multiprogramming and Multitasking II How multiprogramming is achieved via multitasking. A discussion of the process. Alternative implementations and trade-offs. A reflection on why it has been so difficult to add multiprogramming to non-UNIX operating systems such as MS- DOS.
  • Device Autoconfiguration How 386BSD discovers hardware devices that are present and configures itself for operation with those devices.
  • Unix Device Drivers I The structure of 386BSD device drivers, interfaces to the operating system, and minimal device drivers for the console, disk drive and scheduling clock of the PC.
  • Unix Device Drivers II Interfaces to the operating system. Entering, exiting and masking processor interrupts.
  • Unix Device Drivers III Completion of basic 386BSD device drivers.
  • Missing Pieces I Finishing the NET/2 release of Berkeley UNIX to obtain a complete, unencumbered system for the 386 PC. Describes the methodology and implementation of the remaining facilities necessary to generate a working operating system for the PC.
  • Missing Pieces II Finishing the NET/2 release of Berkeley UNIX to obtain a complete, unencumbered system for the 386 PC. Describes the methodology and implementation of the remaining facilities necessary to generate a working operating system for the PC.
  • The Final Step Overview of the impact of Release 0.0 on the BSD community. Installation procedures for and highlights of Release 0.1. Final installment of series.

리누스 토발즈도 이 기사를 읽은 사람 중 하나였다.

“오.. 엄청난 기사네, 하지만 당장 코드를 구할 수 없으니 나도 386PC에 유닉스를 구현해야겠어.”

아이러니하게도 리누스 토발즈가 먼저 1991년 9월 리눅스 커널 0.01 버전을 공개한다[2].

두 커플도 오랜 작업 끝에 1992년 성 패트릭 날 386BSD 0.0버전을 공개한 후, 좀 더 보완해서 7월 14일 0.1버전을 공개한다. 30개의 플로피 디스크만 있으면 복사가 가능했다. 🙂

“지금까지 무려 250,000이나 다운로드 받았어.”
“수백명 정도 다운로드 받을 줄 알았는데..”

당연히 BSD 라이선스를 따랐기 때문에 저작권 속성이 그대로 유지되는 한 자유롭게 배포 및 수정할 수 있었다. 하지만, 두 사람은 너무 완벽을 추구한 나머지, 다음 릴리스가 길어지고 말았다.

“드디어 버그 잡았다. 코드 좀 봐줘.”
“음.. 이 방법 말고 더 좋은 방법이 있을 것 같아..”
“알았서. 다른 방법을 생각해 볼게”

“386BSD는 0.1릴리스 이후 1년이 넘었는데, 소식이 없네. 안되겠다 내가 프로젝트를 만들어야지.”

이렇게 386BSD 사용자는 분열했고, 이후, FreeBSD, NetBSD가 탄생했으며, 일부는 리눅스로 넘어갔다.

이후 1993년 12월에 386BSD 1.0이 공개되었는데, 안타깝게도 0.1 이후 18개월만에 릴리스된 것이라 그만 모멘텀을 잃고 말았다.

386BSD는 1994년 버전 1.0으로 끝으로 사실상 개발이 중지되었고, 다른 X86 BSD공동체는 FreeBSD와 NetBSD 등으로 분열된 상태였다. 반면, 리누스 토발즈는 외부 패치를 적극 받아들이고 다소 문제가 있어도 자주 릴리스했는데, 이런 개발 방식으로 많은 외부 기여를 이끌어내 X86용 오픈소스 운영체제 개발을 주도한다. 비록, 386BSD가 주류 OS진입에 실패했지만, 이들 부부는 FreeBSD, NetBSD, Linux 탄생에 기여한 공로를 인정받고 있다. 그리고, 얼마전 386BSD의 최근 코드를 GitHub에 올리기도 했다[3].

참고

  1. https://www.salon.com/2000/05/17/386bsd/
  2. https://en.wikipedia.org/wiki/Linux_kernel
  3. https://bsd.slashdot.org/story/16/10/09/0230203/after-22-years-386bsd-gets-an-update

참고로, 등장 인물 간 대화는 자료를 바탕으로 재구성되었습니다.

만화 중 잘못된 부분이나 추가할 내용이 있으면 만화 원고에 직접 의견을 남겨주시면 고맙겠습니다. 그 외 전반적인 만화 후기는 블로그에 바로 답글로 남겨주세요.

6 thoughts on “18. 386BSD의 탄생

    • Minix는 별도의 에피소스로 소개하거나 리눅스를 본격적으로 소개할 때 언급할 예정입니다.

  1. 만화에 있는 대사까지, 글로 넣으신 이유는 검색 목적인가요.. 텍스트를 중복으로 보게 되어서 불편합니다..

    • 대사를 텍스트 형태로 그림 위에 위치 시키는 것이 워드프레스에서는 불가능해서 그림 하단에 텍스트를 넣었습니다. 이렇게 한 이유는 모바일에서 손 글씨가 너무 작아서 안보이고 검색 엔진에서 인덱스가 안되기 때문입니다. 개선 방법을 고민해보겠습니다.

        • 편집기로 Google Doc을 사용해서 쉽지가 않습니다. 워드프레스 소스 코드를 고치면 가능할 수도 있을 것 같은데, 한번 알아보겠습니다.

댓글 남기기