🍂 BeOS, HaikuOS, Vitruvian [0.574695]

딱히 결론은 없는 추억모음

애플의 90년대말, 지금과는 사뭇다른

90년대말, 애플은 고전하고 있었다.1

“Sad Mac”

“Sad Mac”

MacOS Classic은 안정적일리가 없는 구조의 멀티태스킹 방식이었다고 한다. 처음 MacOS이 나올 당시, 1984년 당시엔 멀티태스킹이나 가상메모리 같은걸 고려할 여유는 없었을거 같다. 그리고 그 이후에 계속해서 특정한 트릭들을 사용하여 멀티태스킹이 정말 되는것처럼 만들기 위해 고군분투를 계속 이어만 갔던거 같다. 2

IBM와 손을 잡기도 하고3, 자체개발도 하며 어떻게든 하위호환을 유지하며 OS의 안정성을 고치고 싶었었지만 모두 실패했다4.

물론, time-to-market의 관점에서는 맞았었지만 그 이후에 어떻게 대응했는가가 관건이었던것 같다. Microsoft의 Windows에서도 거의 유사한 패턴이 반복된다. 불안정한 DOS기반의 Windows 3.1, Windows 95을 계속해서 그대로 유지하며 안정적인 상태로 조금씩 뜯어고쳐 가지만 한계가 있었었고, 더 제대로 설계된, 그리고 하위호환성을 가상화 등을 활용해 유지한 Windows NT, Windows XP 이후의 흐름이 유사하다. 그러니 MacOS Classic만이 유난히 더 나빴다고 하기는 어려울거 같기도 하다.

BSOD: Blue Screen Of Death

BSOD: Blue Screen Of Death

🥽 MacBook Neo와 iBook/iMac G3 포스팅에서 이런 얘기들을 좀 더 했었는데, 이 포스팅에서는 이 실패에 대한 이야기를 더 하려는것은 아니다.

Be Inc.

MacOS클래식의 고전을 기회로 새롭게 바닥부터 개발한 OS을 판매하려는 회사가 있었었다. 👉 Wikipedia: Be Inc.

결과적으로는, 애플에 이들이 만든 “BeOS”을 팔지도 못했고, BeOS을 탑재한 자체 컴퓨터인 “BeBox” 또한 거의 팔지 못했다.

1999년에 IPO을 했지만 결국엔 역사속으로 사라졌다.

하지만, 당시 HW을 기준으로도, 많은 영역에서 큰 영향을 남긴 OS으로 남았다.

부팅은 거의 순식간에 완료됐고, 멀티태스킹, 가상메모리도 빠르고 안정적이었다. 함께 탑재된 소프트웨어를 사용하면서 안정성 문제를 전혀 겪지 않아도 됐었다.

자체적으로 커널부터 제작했고, POSIX계층도 갖고 있어서 기존의 오픈소스 프로그램들을 거의 그대로 컴파일하고 사용할 수 있었다. (예: GNU Bash)

Be File System 은 빠르고 안정적인 저널링 파일시스템이었었다. 이 파일시스템 설계에 관한 책이 아예 따로 출간되었었다. 글쎄, 그 이후에야 SGI Irix의 xfs이나 IBM의 jfs, 우리가 아는 ext3/4 등이 리눅스에 도입되기 시작한다.

내 추억중 하나는, 2000년대 초반에 IDC에 있는 물리 리눅스 MySQL 서버의 커널오류가 있어서 강제로 재시작된 이후로 ext2 파일시스템이 깨지고, MyISAM DB파일들을 직접 짜맞추며 복구했던거 같다. 물론 개인컴퓨터의 리눅스에서 ext2 파일시스템이 깨지는건 흔했다. 그리고 심지어 저널링파일시스템이던 xfs 등도 그렇게 안정적이지는 못해서 fsck지옥에 빠지고는 했었었다. 🥹

이런 시대에 안정적이고 빠른 BeFS은 충격적일 정도였다. 물론 비싼 NT의 NTFS이나, Solaris, SGI Irix, IBM AIX등을 사용했더라면 안정적이었겠지만, 리눅스를 주로 쓰던 내겐 신선했다. (물론 FreeBSD을 설치하고는 했었지만, 메인드라이버로 사용하진 않았었다)

또 BeOS 애플리케이션, 드라이버 등을 작성하기 위한 API등을 친절하게 정리해준 The Be Book 도 신선했다. 당시의 C++, 그러니까 우리가 모던C++이라고 부르기 이전의 C++으로 설계된 API였었는데, 충분히 사용하기 즐겁게 만들어져 있었었다. 기본적인 문자열, 리스트 등의 컬렉션 라이브러리부터 운영체제의 기능들을 잘 활용하기 수월했었다.

오픈소스으로 BeOS 다시 만들기: HaikuOS

Be Inc은 완전히 사라졌고, BeOS도 널리 퍼지지도 못했지만, 그때에 느낀 성능과 안정성과 가능성을 느낀 사람들은 오픈소스로 다시 구현하기 시작했다. 2002년부터라고 하니까 벌써 24년째.

👉 https://en.wikipedia.org/wiki/Haiku_(operating_system)

지금은 예전에 유행하던 저사양의 Atom프로세서 등을 활용한 ‘넷북’ 같은 환경에서도 가볍게 동작하는 HaikuOS이 되었다.

어째서 이름이 ‘Haiku’이냐하면, 내장된 웹브라우저였던 NetPositive의 에러메시지가 하이쿠-였기 때문이다: https://gist.github.com/benjaminoakes/e58a9ddb0ead8eefbbae40476d87cdf0

Firefox, VLC 같은 꽤 많은 오픈소스 애플리케이션들도 포팅되어 있고, 패키지관리자, 중앙패키지저장소에서 다운로드까지 가능한, pkgman도 있다.

전혀 만족스럽지 못하고, 예전 BeOS 시절에 작성된거 같은 한국어입력기도 있기는 하다.

정말 흥미로운건, 아예 커널부터 원래의 BeOS처럼 처음부터 작성해왔다는점 같다. 커널이외에도 리눅스와 달리 자체적인 GUI, Display Server을 사용하는데 이런것들도 모두 새로 작성했다.

Vitruvian: 커널은 리눅스 + Be API 모듈

오늘 뉴스에서, HaikuOS와 유사하게 BeOS을 다시 만들려는 시도가 있다고 하더라. 접근법은 조금 다르지만.

커널부터 다시 만드는것이 아니라, 커널은 리눅스 커널을 사용하고, BeOS API와 호환성을 갖도록 하는 리눅스 커널모듈을 추가하는 방식인 것 같았다. BeOS와 HaikuOS이 비-유닉스/리눅스 커널을 만들고, 거기에 POSIX-layer을 더해서 마치 유닉스/리눅스인것처럼 해주는것과 완전히 반대의 접근이라 흥미롭다.

BeOS 특유의 빠른 체감성능, Latency 등을 확보하기 위해 Real-time 패치를 적용했다고 하는거 같다.

👉 https://v-os.dev/about/

앞으로 어떻게 될지 기대가 된다.

부록: AtheOS

비슷한 시대에 취미로, 오픈소스 OS이 또 있었었다.

👉 https://atheos.metaproject.frl/

완전히 리눅스를 사용하지 않고, 리눅스의 X11 대신 자체적은 GUI 스택을 구현했다. 거기에 BeOS을 재구현하려는 시도도 아니었었다.

지금은 거의 활동하고 있는거 같진 않다.

Footnotes