bonnet OS, OS 만들기

sjpark의 이미지

아래의 글을 읽고 bonnet OS 개발 페이지에가서 둘러보다가 질답을 보게 되었습니다.

Quote:

음, OS를 밑바닥부터 만드는 것은 많은 무리가 뒤따를것 같군요. Nachos같은 것을 고치는 것에서 시작하는 것이 어떠실런지.. 대학교 OS과목 홈페이지에 가면 프로젝트 소개와 참고자료들이 잘 나와 있을 겁니다.

누구나 남 코드 참조 안한 상태에서 자신만의 것을 만들고 싶어하긴 합니다만, OS같은 큰 프로그램은 그런식으로 하다간 정말 대책 없죠.

그리고 왜 파일 시스템부터 만드셨는지 이해가 안가네요. 보통 OS를 만드는 순서를 생각하자면,
부팅 -> 디버그 용 문자출력 루틴 -> 프로세스 관리
-> 인터럽트 -> 콘솔 디바이스 드라이버
-> C library
이정도 까지 하면 HelloWorld같은 간단한 C프로그램을 커널이랑 같이 링킹해서 돌려볼 수 있게 되겠고요..

이 다음부터 파일 시스템이니, 가상 메모리, 네트웍, 동적 로더 등을 추가하는게 훨씬 효율적이라 보여집니다.

열심히 하시길!!!


어떤분의 글을 읽게 되었는데요, 직접 물어보고 싶었지만, Anonymous로 되어 있어 알 길이 없었습니다.

제가 궁금한건

Quote:

부팅 -> 디버그 용 문자출력 루틴 -> 프로세스 관리
-> 인터럽트 -> 콘솔 디바이스 드라이버
-> C library

이 순서 입니다.

저도 OS를 만들고 있었는데요, 순서가 어떻게 저렇게 될 수 있는지 궁금합니다.

부팅을 하고 나서 커널을 로드해야 하는데, 커널을 넣기위해서는 파일 시스템이 필요했거든요,

부팅을 한 후, 파일 시스템에서 커널의 위치를 찾아내고, 찾은 커널을 올려서 부팅을 완료하여 OS로써 기능을 할 수 있게 나아가야 하는것이 아닌가요?

제가 아직 생각을 정리하지를 못해서 그렇습니다.

혹시, 커널을 만들기 위해서, 다른 부분을 뒤로 미루고, 디스크 임의의 위치에 아무 규칙없이 커널을 써둔후에, 부팅을 하여 바로 그것을 읽어 나가도록 만드는 것인가요?

음.. 저렇게 하면 파일 시스템 고민을 하지 않아도 될것 같네요..
그런데 제 생각이 맞는 것인가요?

조언을 구합니다.

ps. 사실 파일 시스템 구현으로 고민을 했었는데, 꽤 많은 시간이 투자되어야 하는 것 같더군요, 주 목적이 부팅되는 커널 개발인데 파일 시스템 개발로 긴 시간 투자가 필요하여 주객이 전도된듯 하여.. 계속.. 쭈욱 고민하고 있었습니다.

vacancy의 이미지

grub 같은 부트로더를 쓰시면 어떨까요 ?
grub은 파일 시스템까지 인식을 하니까요.
커널 올려주는 데까지는 해줄 것 같습니다만.
( 단, grub과 같이 있는 multi-boot standard를 지켜야 합니다. )

advanced의 이미지

저는 잘은 모르지만

이전에 이미 완성된 파일시스템을 사용하면 어떨까요?

잘 아시다시피 hurd 도 아직 실험 단계인데 ext2 를 파일 시스템으로

사용하더군요.

그래서 인지 설치도 debian linux 를 통해서 만 가능하게 되어있더군요

feanor의 이미지

GNU/Hurd는 데비안 리눅스 없이도 설치할 수 있습니다. 물론 데비안 판으로 설치하면 바로 사용할 수 있는 소프트웨어가 많다는 장점이 있긴 하죠...

Bee GNU/Hurd
http://bee.es.gnu.org/
이것은 pkgsrc를 쓰는 것 같습니다.

--feanor

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.