리눅스에 대한 개념이 아직 확실치가 않아서 모호한 질문을 하게 되었습니다. 하지만 답변 감사드립니다.
아래 추가 질문에 대해서 한번 봐 주시면 감사하겠습니다.
1. 리눅스 OS는 일단 리눅스 소스코드로 컴파일된 하나의 커다란 실행 파일이고, 이 리눅스 소스코드들을 사용자들이 기호에 맞게 수정해서 컴파일하면 하나의 커스터마이징된 리눅스 계열 OS가 되는 건가요?
2. /usr/src 디렉터리에 보면 소스코드가 많이 있는데 이런 소스코드들은 일단 리눅스 커널의 베이스 모듈들이 실행되고 난 후에 사용자가 추가하고자 하는 커널 모듈들만을 위한 소스코드들인가요? 아니면 커널의 베이스 모듈을 포함한 모든 커널 모듈들을 위한 소스코드들인가요?
3. /usr/src 디렉터리에 있는 소스코드들을 수정하면 메모리 관리 방식이나 프로세스 관리 방식 등의 OS 정책을 제 기호에 맞게 만들어서 컴파일하여 실행할 수 있는 건가요?
>> 1. 리눅스 OS는 일단 리눅스 소스코드로 컴파일된 하나의 커다란 실행 파일이고, 이 리눅스 소스코드들을 사용자들이 기호에 맞게 수정해서 컴파일하면 하나의 커스터마이징된 리눅스 계열 OS가 되는 건가요?
아닙니다. 운영체제는 커널을 포함하여 시스템 운용에 필요한 많은수의 프로그램들을 포함하고 있습니다.
그리고 이 프로그램들의 대부분은 별개의 실행파일로 구성되어있습니다.
그리고 리눅스 코드라는건 존재하지 않습니다.
리눅스 코드를 수정한다는것이 리눅스 커널을 수정한다는 의미인가요?
리눅스 운영체제에 탑재된 수많은 프로그램중 어떠한 부분을 수정하더라도 커스터마이징된 리눅스 운영체제라고 부를수 있겠죠.
당연히 커널수정해도 수정된 운영체제라고 부를수있겠습니다만, 대부분의 경우 시스템프로그램이나 응용프로그램 수정없이 커널만 수정해서 배포하는경우는
그냥 커널 패치했다정도로 표현합니다.
굳이 커스터마이징된 운영체제라고 부를정도의 수정은 대부분 커널뿐만이 아니라 패키지/시스템 레벨에서의 많은 수정을 포함합니다.
>> 2, 3
운영체제를 처음 배우시는 분이면 소스를 들여다보기보다
운영체제 서적을 통해 배우시길 권장드립니다.
커널은 응용프로그램 배우듯이 그냥 소스코드보고 배우기에는 너무 어렵고 규모가 너무 큽니다.
모호한 질문이로군요.
1. 리눅스의 유저 권한 관리와 CPU의 Protection ring은 서로 다른 개념입니다.
물론 일반 유저는 소위 "Ring 0"에 맘대로 코드를 올릴 수 없죠. root는 그럴 수 있고요.
그런 의미에서 보면 root가 커널 영역 메모리에 접근 가능하다고 볼 수도 있겠네요.
2. 리눅스 OS 소스코드는 누구나 수정하고 재컴파일 할 수 있습니다. GPL에 따라 배포되거든요. :)
물론 그런 걸 묻지는 않으셨을 테고, 아무튼, root는 빌드된 커널을 grub 등의 부트로더가 로드할 수 있도록 설치할 수 있겠지요.
OS 소스코드에 대해서 추가 질문 드리겠습니다.
리눅스에 대한 개념이 아직 확실치가 않아서 모호한 질문을 하게 되었습니다. 하지만 답변 감사드립니다.
아래 추가 질문에 대해서 한번 봐 주시면 감사하겠습니다.
1. 리눅스 OS는 일단 리눅스 소스코드로 컴파일된 하나의 커다란 실행 파일이고, 이 리눅스 소스코드들을 사용자들이 기호에 맞게 수정해서 컴파일하면 하나의 커스터마이징된 리눅스 계열 OS가 되는 건가요?
2. /usr/src 디렉터리에 보면 소스코드가 많이 있는데 이런 소스코드들은 일단 리눅스 커널의 베이스 모듈들이 실행되고 난 후에 사용자가 추가하고자 하는 커널 모듈들만을 위한 소스코드들인가요? 아니면 커널의 베이스 모듈을 포함한 모든 커널 모듈들을 위한 소스코드들인가요?
3. /usr/src 디렉터리에 있는 소스코드들을 수정하면 메모리 관리 방식이나 프로세스 관리 방식 등의 OS 정책을 제 기호에 맞게 만들어서 컴파일하여 실행할 수 있는 건가요?
>> 1. 리눅스 OS는 일단 리눅스 소스코드로
>> 1. 리눅스 OS는 일단 리눅스 소스코드로 컴파일된 하나의 커다란 실행 파일이고, 이 리눅스 소스코드들을 사용자들이 기호에 맞게 수정해서 컴파일하면 하나의 커스터마이징된 리눅스 계열 OS가 되는 건가요?
아닙니다. 운영체제는 커널을 포함하여 시스템 운용에 필요한 많은수의 프로그램들을 포함하고 있습니다.
그리고 이 프로그램들의 대부분은 별개의 실행파일로 구성되어있습니다.
그리고 리눅스 코드라는건 존재하지 않습니다.
리눅스 코드를 수정한다는것이 리눅스 커널을 수정한다는 의미인가요?
리눅스 운영체제에 탑재된 수많은 프로그램중 어떠한 부분을 수정하더라도 커스터마이징된 리눅스 운영체제라고 부를수 있겠죠.
당연히 커널수정해도 수정된 운영체제라고 부를수있겠습니다만, 대부분의 경우 시스템프로그램이나 응용프로그램 수정없이 커널만 수정해서 배포하는경우는
그냥 커널 패치했다정도로 표현합니다.
굳이 커스터마이징된 운영체제라고 부를정도의 수정은 대부분 커널뿐만이 아니라 패키지/시스템 레벨에서의 많은 수정을 포함합니다.
>> 2, 3
운영체제를 처음 배우시는 분이면 소스를 들여다보기보다
운영체제 서적을 통해 배우시길 권장드립니다.
커널은 응용프로그램 배우듯이 그냥 소스코드보고 배우기에는 너무 어렵고 규모가 너무 큽니다.
전 개인적으로 이 책을 추천드립니다. 어려운 내용을 전혀 지루하지 않으며 쉽게 잘 설명합니다.
https://www.amazon.com/Linux-Kernel-Development-Robert-Love/dp/0672329468
좋은 책 감사합니다.
좋은 책 추천해 주셔서 정말 감사합니다.
모래 위에 성 쌓고 있는 느낌이 들었는데 말씀해 주신 것처럼 확실하게 책을 하나 잡고 봐야겠네요.
추천해 주신 책이 번역판은 틀린 번역이 많다고 비추천하는 후기가 좀 있어서 원서를 봐야 할 것 같은데 그렇게 되면 시간이 조금 많이 걸릴 것 같네요.
혹시 보신 책 중에 리눅스 커널에 대해서 위 책만큼 잘 설명하고 있는 한글 원서 책도 있을까요?
댓글 달기