오늘:
1,631
어제:
2,104
전체:
3,219,407

오픈소스 이야기

조회 수 2104 추천 수 1 댓글 7
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄

출처 : http://joone.net/


“12월 25일, 마침내 디스크 페이징 기능이 완료되었고, 이는 내가 다른 사람 요청으로 리눅스에 추가한 첫번째 기능이였다.” – 그냥 재미로(2001) / 리누스 토발즈

인텔386 PC에서 터미널 구현을 마친 리누스는 본격적인 유닉스 표준(posix) API를 구현하기로 마음을 먹는다. 하지만, posix API를 구현하는 일은 생각만큼 쉬운 일이 아니였다.

“이렇게 많은 API를 언제 다 구현하나…”

참고로, OpenGroup 사이트에 posix API를 pdf 또는 html로 볼 수 있다.

“우선 을 구현해야해…” 그래야 로그온이 가능하지…

“우선 리눅스는 init 대신 쉘을 실행하고 25개 정도
시스템 콜을 구현하면 쉘을 만들 수 있을거야…”

“본쉘을(Borne Shell)을 본따서 바셀(BASH)을 만들자.
다시 태어난 본쉘(Borne Again Shell).”

“이건 프리웨어로 인터넷에 올리자.”

핀란드에도 여름이 왔다. 백야 현상으로 밤 늦도록 날이 밝지만, 리누스는 커튼으로 햇빛을 가린채 코딩에 몰두한다.

또 코딩.. 또 코딩..

“리누스야 여름인데, 친구들하고 어디 안나가니?”

“이제 대학생인데, 어디가서 아르바이트 좀 해라..
컴퓨터 대출금도 갚아야지”

“오빠.. 나 전화좀 하게 모뎀 좀 꺼줘..”

“이렇게 집에 있지말고 맥주 마시러 나가자”
“응, 마저 하던 작업만 끝내고”

여름 방학이 거의 끝나갈무렵.

“드디어 본셀이 내가 만든 커널에서 동작하네…”

리눅스 커널 개발에 한줄기 서광이 비치기 시작했다. 그리고 이 사실을 미닉스 메일링 리스트에 알린다.

몇몇 사람이 질문을 했다.

참고로, MMU(Memory Management Unit)은 인텔386 CPU에서 제공되는 기능으로 CPU에서 메모리에 접근할 때, 가상 메모리 주소를 실제 메모리 주소로 변환해준다. 메모리 보호, 페이징 구현에 반드시 필요하다.

“얼마나 많은 부분이 C언어로 되어 있나요? 포팅은 가능한가요? 제 아미가에 설치하고 싶어요.”

“아직은 인텔 386에서만 동작해요. 하지만 포팅이 어렵지는 않을겁니다”

그리고 91년 9월 17일에 0.01 버전을 ftp 사이트에 공개했다. 1만줄도 안되는 운영체제 커널 코드였다. 참고로, github에 소스코드가 있고 빌드도 가능하다.

다시 겨울 방학이다. 이제 리눅스를 개발한지도 1년이 되었구나.

그해 12월까지 리눅스 버전은 0.03까지 릴리스 되었지만, 아직까지는 리눅스를 빌드하는데, 미닉스가 필요했다. 그러던 어느날, 리눅스에서 하드 디스크 장치를 열어서 모뎀 명령어를 쓰는 바람에 미닉스 파티션이 깨지고 말았다.

“으악, 모뎀(/dev/tty1)에 전화를 건다는 것이…
하드(/dev/hda)에 전화를 걸다니….”

“미닉스가 더 이상 부팅이 안되네…
이제 리눅스에서 리눅스를 개발할 수 있도록해야겠어”

리누스는 리눅스 파일 시스템에서 gcc를 실행해서 리눅스 코드를 컴파일할 수 있도록하였다.

“드디어 리눅스에서 리눅스를 컴파일할 수 있다”

이에 고무된 리누스는 리눅스 버전을 0.10으로 올리고, 미닉스 메일링 리스트를 통해 0.11버전을 공개한다.

0.11 버전도 github에서 찾을 수 있다.

그리고, 어느날, 램 용량이 2메가인 컴퓨터를 사용하는 독일인 리눅스 사용자가 메모리 부족으로 gcc가 동작하지 않는다고 메모리가 덜 필요한 컴파일로러 빌드할 방법이 있는지 문의해왔다. 리누스는 그를 위해 페이징이라는 기능을 구현했다. 이는 디스크를 마치 메모리 처럼 사용하도록 하여 컴퓨터가 더 많은 메모리를 사용하도록 하는 기능이다.

“페이징을 구현하면 gcc가 2M 메모리에서 실행이 될텐데, 한번 시도해볼까?”

리누스는 크리스마스를 즐길 새도 없이 다시 코딩에 몰두한다.

12월 23일 페이징 기능 구현에 전력을 다했다.

12월 24일 아직 페이징 기능이 잘 동작하지 않았다.

“어.. 이제 동작하는가.. 아.. 커널 패닉이네.”

12월 25일 크리스마스 선물인 듯, 페이징 기능이 동작하기 시작했다.

페이징 기능은 리누스가 다른 사람 요청으로 리눅스에 추가한 첫번째 기능이였다.



더 읽을 글

참고로, 이번 만화는 “리눅스 그냥 재미로” 일부 내용을 만화로 재구성하였고, 등장 인물 간 대화도 자료를 바탕으로 만들어졌습니다.

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

  • profile
    행복한펭귄 2018.12.05 17:13

    리눅스의 역사를 봐도 그렇고 다른 분야도 그렇고 역사를 돌아보면 참으로 누군가의 수고로움때문에 새로운 문명의 유익을 경험하게 됩니다. 리눅스도 그런 것 중에 하나이고 큰 역사적인 물줄기를 이루고 있고 앞으로 더욱 그러할 것으로 보입니다. 참으로 의미있는 기사입니다.

  • ?
    Moordev 2018.12.08 11:13
    저 "리눅스 그냥 재미로" 저 책은 정말 재미있습니다. 시간 가는 줄 모르고 읽었는데 리누즈 토발즈의 열정을 알 수 있습니다. 도서관에서 한번쯤 보는 것을 추천합니다.
  • ?
    Ohnine 2018.12.08 14:02
    http://m.hanbit.co.kr/store/books/book_view.html?p_code=E5329835060

    쫌 다른 책 무료 pdf.
  • profile
    타기치 2019.09.25 12:17

    오. 책이 ...공개되어 있네요.

  • profile
    행복한펭귄 2018.12.13 14:36

    오픈 소스 : 오픈 소스 혁명의 목소리


    리눅스 철학에 관심이 있는 분들은 꼭 읽어봐야하지 않을까 생각합니다.

    좋은 책 소개해줘서 감사합니다.

  • ?
    krhamoni 2018.12.14 20:02

    케빈 님의 오픈소스를 향한 열정에 박수를 보냅니다.


    대단하십니다.


    덕분에 좋은 글을 많이 봅니다.

  • profile
    행복한펭귄 2018.12.16 10:11

    계속해서 기대합니다.



List of Articles
번호 제목 글쓴이 날짜 조회 수
공지 오픈소스 이야기 게시판 이용안내 3 file Kevin 2018.04.13 1779
42 깃허브 러닝랩 - 혼자서 아무것도 없이 깃허브 마스터 가능합니다. 2 file PEACH 2018.05.11 1945
41 ‘리눅스 아버지’처럼 성공하기 위한 11가지 조건 1 updatefile PEACH 2018.05.15 991
40 [TED2016] 리눅스의 기본 철학(한글 자막) 2 updatefile PEACH 2018.05.15 1099
39 오픈소스란 무엇인가요? 1 file Kevin 2018.06.01 11333
38 X-Window 탄생 2 update Kevin 2018.06.21 2007
37 X11의 탄생 4 Kevin 2018.07.25 1477
36 XFree86과 X.Org Kevin 2018.08.13 1201
35 김프 2.10.8 나왔습니다. 1 세벌 2018.11.14 1148
34 LibreOffice Korea 3 update 세벌 2018.11.27 1610
» 리눅스 이야기: 운영체제를 만들자! 7 Kevin 2018.12.03 2104
32 리눅스 이야기: 진정한 자유 운영체제 2 update Kevin 2018.12.27 1523
31 리눅스 이야기: 리눅스 vs. 미닉스 1부 1 update Kevin 2019.02.22 1698
30 리눅스 이야기: 리눅스 vs. 미닉스 2부 1 update Kevin 2019.05.27 1731
29 FreeCAD 한국어 번역 함께 해 보아요 8 세벌 2019.06.26 2960
28 리눅스 이야기: 네트워킹 Kevin 2019.07.19 2118
27 리눅스 배포본과 데비안 프로젝트 Kevin 2020.05.11 1104
26 오픈소스 GUI 툴킷 Qt와 KDE 프로젝트의 시작 1 Kevin 2020.05.21 4964
25 오픈소스 이미지 편집 프로그램 김프와 GTK+ 시작 2 Kevin 2020.06.08 1660
24 그놈(GNOME) 데스크탑의 시작 2 Kevin 2020.08.06 1212
23 월드와이드웹(WWW)의 시작 1 1 Kevin 2021.01.04 621
Board Pagination Prev 1 ... 2 3 4 ... 5 Next
/ 5
CLOSE