TECH 으로 돌아가기
TECH HACKER NEWS 7분 읽기 34 READS

vi와 소켓의 고향, BSD 유닉스는 어떻게 시작됐을까

vi와 소켓의 고향, BSD 유닉스는 어떻게 시작됐을까
SOURCE IMAGE · HACKER NEWS
vi와 소켓의 고향, BSD 유닉스는 어떻게 시작됐을까

만화로 보는 오픈소스 역사

F/OSS Comics는 자유/오픈소스 소프트웨어의 역사를 만화로 풀어내는 시리즈예요. 13화는 BSD 유닉스 연재의 세 번째 편으로, 'BSD 유닉스의 시작'을 다뤄요. BSD라는 이름이 낯설 수도 있지만, 사실 우리는 매일 BSD의 후손을 쓰고 있어요. macOS 밑바닥에 BSD 코드가 깔려 있고, 서버 개발자가 매일 쓰는 소켓 API와 많은 분이 아끼는 vi 계열 에디터도 모두 버클리에서 시작됐거든요.

이번 글에서는 만화가 다루는 시기를 정리해볼게요. 버클리 대학원생들이 유닉스를 고쳐 쓰다가 운영체제의 한 계보를 만들어낸 이야기예요.

1970년대, 유닉스가 버클리에 도착하다

유닉스는 원래 AT&T 벨 연구소에서 켄 톰슨과 데니스 리치가 만든 운영체제예요. 1973년 학회에서 유닉스가 발표되자 UC 버클리의 밥 페이브리(Bob Fabry) 교수가 관심을 갖고 유닉스 사본을 받아와요. 당시 AT&T는 독점 규제 때문에 컴퓨터 사업을 제대로 할 수 없었어요. 그래서 대학에 유닉스를 아주 싼값에, 소스 코드까지 포함해서 라이선스해줬어요. 이게 이 이야기의 출발점이에요.

소스 코드가 있다는 건 직접 고쳐볼 수 있다는 뜻이거든요. 요즘으로 치면 대학 연구실이 오픈소스 저장소를 클론받은 것과 비슷한 상황이었어요.

1975년에는 켄 톰슨이 직접 버클리에 객원 교수로 1년 동안 머물면서 유닉스 6판 설치를 돕고 파스칼 시스템 작업도 시작해요. 같은 해 가을, 한 대학원생이 버클리에 들어오는데요, 그 사람이 빌 조이(Bill Joy)예요. 나중에 썬 마이크로시스템즈를 공동 창업한 바로 그 사람이에요.

빌 조이와 첫 번째 BSD

빌 조이와 동료 척 헤일리(Chuck Haley)는 톰슨이 남긴 파스칼 인터프리터를 다듬고, 기존 라인 에디터 ed를 바탕으로 ex라는 에디터를 만들어요. 그리고 ex에 화면 전체를 보면서 편집하는 '비주얼 모드'를 붙인 게 바로 vi예요. 당시 에디터는 명령어를 입력해서 한 줄씩 고치는 방식이었어요. vi는 터미널 화면 전체를 쓰면서 커서를 움직여 편집할 수 있게 해줬죠. 지금 우리가 쓰는 Vim과 Neovim의 직계 조상이에요.

다른 대학들에서 '버클리에서 쓰는 파스칼이랑 에디터 우리도 받을 수 있을까요?'라는 요청이 들어오자, 빌 조이는 이것들을 테이프에 담아 보내주기 시작해요. 이게 1978년 초에 나온 1BSD(Berkeley Software Distribution)예요. 이름 그대로 '버클리 소프트웨어 배포판'이었고, 독립된 운영체제라기보다는 유닉스 6판 위에 얹어 쓰는 추가 소프트웨어 묶음에 가까웠어요. 요즘으로 치면 리눅스 배포판보다는 쓸 만한 도구들을 모은 패키지 같은 느낌이죠.

1979년 2BSD에는 vi와 C 셸(csh)이 들어갔어요. 같은 해 말 나온 3BSD는 DEC의 VAX 컴퓨터에서 가상 메모리를 지원하면서 제대로 된 운영체제의 모습을 갖추기 시작해요.

그 뒤로 BSD가 남긴 것들

BSD가 진짜 존재감을 보여준 건 그다음이에요. 미국 국방고등연구계획국(DARPA)의 지원으로 버클리에 CSRG라는 연구 그룹이 생기고, 1983년 4.2BSD에 TCP/IP 네트워킹과 소켓 API가 들어가요. 서버 코드에서 쓰는 socket(), bind(), listen(), accept() 같은 함수가 여기서 처음 나왔어요. 대학과 연구소에 널리 깔린 BSD에 네트워킹이 기본으로 들어 있었던 게 인터넷 확산에도 큰 역할을 했어요.

이후 AT&T 코드를 걷어내는 작업과 소송을 거쳐 FreeBSD, NetBSD, OpenBSD가 갈라져 나왔어요. 지금은 애플 macOS와 iOS 커널의 일부, 넷플릭스의 콘텐츠 전송 서버, 플레이스테이션 운영체제까지 BSD 계보가 이어지고 있어요.

리눅스와는 뭐가 다를까요?

자주 나오는 질문이에요. 리눅스는 커널만 만들고, 나머지 도구는 GNU 등에서 가져와 배포판이 조립하는 구조예요. BSD는 커널과 기본 명령어 도구(유저랜드)를 한 팀이 하나의 운영체제로 관리해요. 라이선스도 달라요. 리눅스는 GPL이라 수정한 코드를 배포하면 소스도 공개해야 해요. BSD 라이선스는 훨씬 너그러워서 기업이 가져다 써도 소스를 공개할 의무가 거의 없어요. 애플과 소니가 BSD를 고른 이유도 여기에 있죠.

한국 개발자에게 주는 의미

역사 이야기라 실무와 멀어 보이지만 의외로 쓸모가 많아요. 맥에서 잘 돌던 sed나 grep 스크립트가 리눅스 서버에서는 옵션이 달라서 깨진 적 있으시죠? macOS는 BSD 계열 도구를, 리눅스는 GNU 도구를 쓰기 때문이에요. 이런 계보를 알면 '왜 이렇게 동작하지?' 싶을 때 원인을 훨씬 빨리 찾을 수 있어요. 오픈소스 라이선스를 고를 때 MIT, BSD, GPL이 왜 다른지 이해하는 데도 도움이 되고요.

마무리

한 줄 정리: 대학원생들이 쓸 만한 도구를 테이프에 담아 나눠준 일이 오늘날 맥과 인터넷의 뿌리가 됐어요.

처음 vi나 Vim을 열었을 때 :q를 몰라서 못 빠져나온 기억 있으신가요? BSD 계열을 실무에서 써보신 분이 있다면 리눅스와 비교한 경험도 들려주세요.


🔗 출처: Hacker News

SOURCE · HACKER NEWS
원문 전체 보기 → https://fosscomics.com/posts/13.%20BSD%20Unix%20Part%203%20-...
SHARE
NEXT · CHOOSE

변화를 읽었다면,
내가 만들 수익 구조를 고릅니다.

정보를 더 모으는 데서 멈추지 않고, 광고·외주·판매·중개·구독 중 내 상황에 맞는 출발점을 정해보세요.

21가지 수익 구조 살펴보기 →
처리 중...