root는 메모리 모든 영역에 접근 가능한지?

whobc의 이미지

root는 메모리의 커널 영역을 포함한 모든 영역에 접근 가능한가요?

그리고 root는 리눅스 OS 소스코드를 수정하여 재컴파일도 할 수 있나요?

 의 이미지

1. 리눅스의 유저 권한 관리와 CPU의 Protection ring은 서로 다른 개념입니다.

물론 일반 유저는 소위 "Ring 0"에 맘대로 코드를 올릴 수 없죠. root는 그럴 수 있고요.
그런 의미에서 보면 root가 커널 영역 메모리에 접근 가능하다고 볼 수도 있겠네요.

2. 리눅스 OS 소스코드는 누구나 수정하고 재컴파일 할 수 있습니다. GPL에 따라 배포되거든요. :)

물론 그런 걸 묻지는 않으셨을 테고, 아무튼, root는 빌드된 커널을 grub 등의 부트로더가 로드할 수 있도록 설치할 수 있겠지요.

whobc의 이미지

리눅스에 대한 개념이 아직 확실치가 않아서 모호한 질문을 하게 되었습니다. 하지만 답변 감사드립니다.

아래 추가 질문에 대해서 한번 봐 주시면 감사하겠습니다.

1. 리눅스 OS는 일단 리눅스 소스코드로 컴파일된 하나의 커다란 실행 파일이고, 이 리눅스 소스코드들을 사용자들이 기호에 맞게 수정해서 컴파일하면 하나의 커스터마이징된 리눅스 계열 OS가 되는 건가요?

2. /usr/src 디렉터리에 보면 소스코드가 많이 있는데 이런 소스코드들은 일단 리눅스 커널의 베이스 모듈들이 실행되고 난 후에 사용자가 추가하고자 하는 커널 모듈들만을 위한 소스코드들인가요? 아니면 커널의 베이스 모듈을 포함한 모든 커널 모듈들을 위한 소스코드들인가요?

3. /usr/src 디렉터리에 있는 소스코드들을 수정하면 메모리 관리 방식이나 프로세스 관리 방식 등의 OS 정책을 제 기호에 맞게 만들어서 컴파일하여 실행할 수 있는 건가요?

익명_사용자의 이미지

>> 1. 리눅스 OS는 일단 리눅스 소스코드로 컴파일된 하나의 커다란 실행 파일이고, 이 리눅스 소스코드들을 사용자들이 기호에 맞게 수정해서 컴파일하면 하나의 커스터마이징된 리눅스 계열 OS가 되는 건가요?

아닙니다. 운영체제는 커널을 포함하여 시스템 운용에 필요한 많은수의 프로그램들을 포함하고 있습니다.
그리고 이 프로그램들의 대부분은 별개의 실행파일로 구성되어있습니다.

그리고 리눅스 코드라는건 존재하지 않습니다.
리눅스 코드를 수정한다는것이 리눅스 커널을 수정한다는 의미인가요?

리눅스 운영체제에 탑재된 수많은 프로그램중 어떠한 부분을 수정하더라도 커스터마이징된 리눅스 운영체제라고 부를수 있겠죠.
당연히 커널수정해도 수정된 운영체제라고 부를수있겠습니다만, 대부분의 경우 시스템프로그램이나 응용프로그램 수정없이 커널만 수정해서 배포하는경우는
그냥 커널 패치했다정도로 표현합니다.
굳이 커스터마이징된 운영체제라고 부를정도의 수정은 대부분 커널뿐만이 아니라 패키지/시스템 레벨에서의 많은 수정을 포함합니다.

>> 2, 3
운영체제를 처음 배우시는 분이면 소스를 들여다보기보다
운영체제 서적을 통해 배우시길 권장드립니다.
커널은 응용프로그램 배우듯이 그냥 소스코드보고 배우기에는 너무 어렵고 규모가 너무 큽니다.

전 개인적으로 이 책을 추천드립니다. 어려운 내용을 전혀 지루하지 않으며 쉽게 잘 설명합니다.
https://www.amazon.com/Linux-Kernel-Development-Robert-Love/dp/0672329468

whobc의 이미지

좋은 책 추천해 주셔서 정말 감사합니다.

모래 위에 성 쌓고 있는 느낌이 들었는데 말씀해 주신 것처럼 확실하게 책을 하나 잡고 봐야겠네요.

추천해 주신 책이 번역판은 틀린 번역이 많다고 비추천하는 후기가 좀 있어서 원서를 봐야 할 것 같은데 그렇게 되면 시간이 조금 많이 걸릴 것 같네요.

혹시 보신 책 중에 리눅스 커널에 대해서 위 책만큼 잘 설명하고 있는 한글 원서 책도 있을까요?

댓글 달기

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
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.