⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 howto

📁 linux 内核源代码
💻
📖 第 1 页 / 共 3 页
字号:
NOTE:This is a version of Documentation/HOWTO translated into koreanThis document is maintained by minchan Kim <minchan.kim@gmail.com>If you find any difference between this document and the original file ora problem with the translation, please contact the maintainer of this file.Please also note that the purpose of this file is to be easier toread for non English (read: korean) speakers and is not intended asa fork. So if you have any comments or updates for this file pleasetry to update the original English file first.==================================이 문서는Documentation/HOWTO의 한글 번역입니다.역자: 김민찬 <minchan.kim@gmail.com>감수: 이제이미 <jamee.lee@samsung.com>==================================어떻게 리눅스 커널 개발을 하는가---------------------------------이 문서는 커널 개발에 있어 가장 중요한 문서이다. 이 문서는리눅스 커널 개발자가 되는 법과 리눅스 커널 개발 커뮤니티와 일하는법을 담고있다. 커널 프로그래밍의 기술적인 측면과 관련된 내용들은포함하지 않으려고 하였지만 올바른 길로 여러분을 안내하는 데는 도움이될 것이다.이 문서에서 오래된 것을 발견하면 문서의 아래쪽에 나열된 메인테이너에게패치를 보내달라.소개----자, 여러분은 리눅스 커널 개발자가 되는 법을 배우고 싶은가? 아니면상사로부터"이 장치를 위한 리눅스 드라이버를 작성하시오"라는 말을들었는가? 이 문서의 목적은 여러분이 겪게 될 과정과 커뮤니티와 협력하는법을 조언하여 여러분의 목적을 달성하기 위해 필요한 것 모두를 알려주기위함이다.커널은 대부분은 C로 작성되어 있고 몇몇 아키텍쳐의 의존적인 부분은어셈블리로 작성되어 있다. 커널 개발을 위해 C를 잘 이해하고 있어야 한다.여러분이 특정 아키텍쳐의 low-level 개발을 할 것이 아니라면어셈블리(특정 아키텍쳐)는 잘 알아야 할 필요는 없다.다음의 참고서적들은 기본에 충실한 C 교육이나 수년간의 경험에 견주지는못하지만 적어도 참고 용도로는 좋을 것이다 - "The C Programming Language" by Kernighan and Ritchie [Prentice Hall] - "Practical C Programming" by Steve Oualline [O'Reilly] - "C:  A Reference Manual" by Harbison and Steele [Prentice Hall]커널은 GNU C와 GNU 툴체인을 사용하여 작성되었다. 이 툴들은 ISO C89 표준을따르는 반면 표준에 있지 않은 많은 확장기능도 가지고 있다. 커널은 표준 C라이브러리와는 관계없이 freestanding C 환경이어서 C 표준의 일부는지원되지 않는다. 임의의 long long 나누기나 floating point는 지원되지 않는다.때론 이런 이유로 커널이 그런 확장 기능을 가진 툴체인을 가지고 만들어졌다는것이 이해하기 어려울 수도 있고 게다가 불행하게도 그런 것을 정확하게 설명하는어떤 참고문서도 있지 않다. 정보를 얻기 위해서는 gcc info (`info gcc`)페이지를살펴보라.여러분은 기존의 개발 커뮤니티와 협력하는 법을 배우려고 하고 있다는 것을기억하라. 코딩, 스타일, 함수에 관한 훌륭한 표준을 가진 사람들이 모인다양한 그룹이 있다. 이 표준들은 오랜동안 크고 지역적으로 분산된 팀들에의해 가장 좋은 방법으로 일하기 위하여 찾은 것을 기초로 만들어져 왔다.그 표준들은 문서화가 잘 되어있기 때문에 가능한한 미리 많은 표준들에관하여 배우려고 시도하라. 다른 사람들은 여러분이나 여러분의 회사가일하는 방식에 적응하는 것을 원하지는 않는다.법적 문제---------리눅스 커널 소스 코드는 GPL로 배포(release)되었다. 소스트리의 메인디렉토리에 있는 라이센스에 관하여 상세하게 쓰여 있는 COPYING이라는파일을 봐라. 여러분이 라이센스에 관한 더 깊은 문제를 가지고 있다면리눅스 커널 메일링 리스트에 묻지말고 변호사와 연락하라. 메일링리스트들에 있는 사람들은 변호사가 아니기 때문에 법적 문제에 관하여그들의 말에 의지해서는 안된다.GPL에 관한 잦은 질문들과 답변들은 다음을 참조하라.    http://www.gnu.org/licenses/gpl-faq.html문서----리눅스 커널 소스 트리는 커널 커뮤니티와 협력하는 법을 배우기위해 훌륭한다양한 문서들을 가지고 있다. 새로운 기능들이 커널에 들어가게 될 때,그 기능을 어떻게 사용하는지에 관한 설명을 위하여 새로운 문서 파일을추가하는 것을 권장한다. 커널이 유저스페이스로 노출하는 인터페이스를변경하게 되면 변경을 설명하는 메뉴얼 페이지들에 대한 패치나 정보를mtk.manpages@gmail.com의 메인테이너에게 보낼 것을 권장한다.다음은 커널 소스 트리에 있는 읽어야 할 파일들의 리스트이다.  README    이 파일은 리눅스 커널에 관하여 간단한 배경 설명과 커널을 설정하고    빌드하기 위해 필요한 것을 설명한다. 커널에 입문하는 사람들은 여기서    시작해야 한다.  Documentation/Changes    이 파일은 커널을 성공적으로 빌드하고 실행시키기 위해 필요한 다양한    소프트웨어 패키지들의 최소 버젼을 나열한다.  Documentation/CodingStyle    이 문서는 리눅스 커널 코딩 스타일과 그렇게 한 몇몇 이유를 설명한다.    모든 새로운 코드는 이 문서에 가이드라인들을 따라야 한다. 대부분의    메인테이너들은 이 규칙을 따르는 패치들만을 받아들일 것이고 많은 사람들이    그 패치가 올바른 스타일일 경우만 코드를 검토할 것이다.  Documentation/SubmittingPatches  Documentation/SubmittingDrivers    이 파일들은 성공적으로 패치를 만들고 보내는 법을 다음의 내용들로    굉장히 상세히 설명하고 있다(그러나 다음으로 한정되진 않는다).       - Email 내용들       - Email 양식       - 그것을 누구에게 보낼지    이러한 규칙들을 따르는 것이 성공(역자주: 패치가 받아들여 지는 것)을    보장하진 않는다(왜냐하면 모든 패치들은 내용과 스타일에 관하여    면밀히 검토되기 때문이다). 그러나 규칙을 따르지 않는다면 거의    성공하지도 못할 것이다.    올바른 패치들을 만드는 법에 관한 훌륭한 다른 문서들이 있다.    "The Perfect Patch"        http://www.zip.com.au/~akpm/linux/patches/stuff/tpp.txt    "Linux kernel patch submission format"        http://linux.yyz.us/patch-format.html   Documentation/stable_api_nonsense.txt    이 문서는 의도적으로 커널이 불변하는 API를 갖지 않도록 결정한    이유를 설명하며 다음과 같은 것들을 포함한다.       - 서브시스템 shim-layer(호환성을 위해?)       - 운영체제들간의 드라이버 이식성       - 커널 소스 트리내에 빠른 변화를 늦추는 것(또는 빠른 변화를 막는 것)    이 문서는 리눅스 개발 철학을 이해하는데 필수적이며 다른 운영체제에서    리눅스로 전향하는 사람들에게는 매우 중요하다.  Documentation/SecurityBugs    여러분들이 리눅스 커널의 보안 문제를 발견했다고 생각한다면 이 문서에    나온 단계에 따라서 커널 개발자들에게 알리고 그 문제를 해결할 수 있도록    도와 달라.  Documentation/ManagementStyle    이 문서는 리눅스 커널 메인테이너들이 그들의 방법론에 녹아 있는    정신을 어떻게 공유하고 운영하는지를 설명한다. 이것은 커널 개발에 입문하는    모든 사람들(또는 커널 개발에 작은 호기심이라도 있는 사람들)이    읽어야 할 중요한 문서이다. 왜냐하면 이 문서는 커널 메인테이너들의    독특한 행동에 관하여 흔히 있는 오해들과 혼란들을 해소하고 있기    때문이다.  Documentation/stable_kernel_rules.txt    이 문서는 안정적인 커널 배포가 이루어지는 규칙을 설명하고 있으며    여러분들이 이러한 배포들 중 하나에 변경을 하길 원한다면    무엇을 해야 하는지를 설명한다.  Documentation/kernel-docs.txt    커널 개발에 관계된 외부 문서의 리스트이다. 커널 내의 포함된 문서들    중에 여러분이 찾고 싶은 문서를 발견하지 못할 경우 이 리스트를    살펴보라.  Documentation/applying-patches.txt    패치가 무엇이며 그것을 커널의 다른 개발 브랜치들에 어떻게    적용하는지에 관하여 자세히 설명하고 있는 좋은 입문서이다.커널은 소스 코드 그 자체에서 자동적으로 만들어질 수 있는 많은 문서들을가지고 있다. 이것은 커널 내의 API에 대한 모든 설명, 그리고 락킹을올바르게 처리하는 법에 관한 규칙을 포함하고 있다. 이 문서는Documentation/DocBook/ 디렉토리 내에서 만들어지며 PDF, Postscript, HTML,그리고 man 페이지들로 다음과 같이 실행하여 만들어 진다.         make pdfdocs         make psdocs         make htmldocs         make mandocs각각의 명령을 메인 커널 소스 디렉토리로부터 실행한다.커널 개발자가 되는 것---------------------여러분이 리눅스 커널 개발에 관하여 아무것도 모른다면 Linux KernelNewbies프로젝트를 봐야 한다.    http://kernelnewbies.org그곳은 거의 모든 종류의 기본적인 커널 개발 질문들(질문하기 전에 먼저아카이브를 찾아봐라. 과거에 이미 답변되었을 수도 있다)을 할수있는 도움이될만한 메일링 리스트가 있다. 또한 실시간으로 질문 할수 있는 IRC 채널도가지고 있으며 리눅스 커널 개발을 배우는 데 유용한 문서들을 보유하고 있다.웹사이트는 코드구성, 서브시스템들, 그리고 현재 프로젝트들(트리 내, 외부에 존재하는)에 관한 기본적인 정보들을 가지고 있다. 또한그곳은 커널 컴파일이나 패치를 하는 법과 같은 기본적인 것들을  설명한다.여러분이 어디서 시작해야 할진 모르지만 커널 개발 커뮤니티에 참여할 수있는 일들을 찾길 원한다면 리눅스 커널 Janitor 프로젝트를 살펴봐라.         http://janitor.kernelnewbies.org/그곳은 시작하기에 훌륭한 장소이다. 그곳은 리눅스 커널 소스 트리내에간단히 정리되고 수정될 수 있는 문제들에 관하여 설명한다. 여러분은 이프로젝트를 대표하는 개발자들과 일하면서 자신의 패치를 리눅스 커널 트리에반영하기 위한 기본적인 것들을 배우게 될것이며 여러분이 아직 아이디어를가지고 있지 않다면 다음에 무엇을 해야할지에 관한 방향을 배울 수 있을것이다.여러분들이 이미 커널 트리에 반영하길 원하는 코드 묶음을 가지고 있지만올바른 포맷으로 포장하는데 도움이 필요하다면 그러한 문제를 돕기 위해만들어진 kernel-mentors 프로젝트가 있다. 그곳은 메일링 리스트이며다음에서 참조할 수 있다.         http://selenic.com/mailman/listinfo/kernel-mentors리눅스 커널 코드에 실제 변경을 하기 전에 반드시 그 코드가 어떻게

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -