diff --git a/Documentation/HOWTO b/Documentation/HOWTO index f8cc3f8ed152742542e06cd14df7c99aae40f9cd..c64e969dc33bb6e511f78984c007052e9b6cbc54 100644 --- a/Documentation/HOWTO +++ b/Documentation/HOWTO @@ -208,7 +208,7 @@ tools. One such tool that is particularly recommended is the Linux Cross-Reference project, which is able to present source code in a self-referential, indexed webpage format. An excellent up-to-date repository of the kernel code may be found at: - http://sosdg.org/~coywolf/lxr/ + http://users.sosdg.org/~qiyong/lxr/ The development process @@ -384,7 +384,7 @@ One of the best ways to put into practice your hacking skills is by fixing bugs reported by other people. Not only you will help to make the kernel more stable, you'll learn to fix real world problems and you will improve your skills, and other developers will be aware of your presence. Fixing -bugs is one of the best ways to earn merit amongst the developers, because +bugs is one of the best ways to get merits among other developers, because not many people like wasting time fixing other people's bugs. To work in the already reported bug reports, go to http://bugzilla.kernel.org. diff --git a/Documentation/SubmittingPatches b/Documentation/SubmittingPatches index d6b45a9b29b4f6377e23a4415cdaea09e88d1845..397575880dc402d4e3330184b7d55277a94adb8e 100644 --- a/Documentation/SubmittingPatches +++ b/Documentation/SubmittingPatches @@ -560,7 +560,7 @@ NO!!!! No more huge patch bombs to linux-kernel@vger.kernel.org people! <http://marc.theaimsgroup.com/?l=linux-kernel&m=112112749912944&w=2> Kernel Documentation/CodingStyle: - <http://sosdg.org/~coywolf/lxr/source/Documentation/CodingStyle> + <http://users.sosdg.org/~qiyong/lxr/source/Documentation/CodingStyle> Linus Torvalds's mail on the canonical patch format: <http://lkml.org/lkml/2005/4/7/183> diff --git a/Documentation/ko_KR/HOWTO b/Documentation/ko_KR/HOWTO new file mode 100644 index 0000000000000000000000000000000000000000..b51d7ca842ba7c21bd76be21fd0e5ca4dd2253a9 --- /dev/null +++ b/Documentation/ko_KR/HOWTO @@ -0,0 +1,623 @@ +NOTE: +This is a version of Documentation/HOWTO translated into korean +This document is maintained by minchan Kim < minchan.kim@gmail.com> +If you find any difference between this document and the original file or +a problem with the translation, please contact the maintainer of this file. + +Please also note that the purpose of this file is to be easier to +read for non English (read: korean) speakers and is not intended as +a fork. So if you have any comments or updates for this file please +try 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@gmx.netì˜ ë©”ì¸íŠ¸ë„ˆì—게 보낼 ê²ƒì„ ê¶Œìž¥í•œë‹¤. + +다ìŒì€ ì»¤ë„ ì†ŒìŠ¤ íŠ¸ë¦¬ì— ìžˆëŠ” ì½ì–´ì•¼ í• íŒŒì¼ë“¤ì˜ 리스트ì´ë‹¤. + 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 + +리눅스 ì»¤ë„ ì½”ë“œì— ì‹¤ì œ ë³€ê²½ì„ í•˜ê¸° ì „ì— ë°˜ë“œì‹œ ê·¸ 코드가 어떻게 +ë™ìž‘하는지 ì´í•´í•˜ê³ 있어야 한다. 코드를 분ì„하기 위하여 íŠ¹ì •í•œ íˆ´ì˜ +ë„ì›€ì„ ë¹Œë ¤ì„œë¼ë„ 코드를 ì§ì ‘ ì½ëŠ” 것보다 ì¢‹ì€ ê²ƒì€ ì—†ë‹¤(ëŒ€ë¶€ë¶„ì˜ +ìžìž˜í•œ ë¶€ë¶„ë“¤ì€ ìž˜ 코멘트ë˜ì–´ 있다). 그런 툴들 ì¤‘ì— íŠ¹ížˆ ì¶”ì²œí• ë§Œí•œ +ê²ƒì€ Linux Cross-Reference projectì´ë©° ê·¸ê²ƒì€ ìžê¸° 참조 ë°©ì‹ì´ë©° +소스코드를 ì¸ë±ìŠ¤ëœ 웹 페ì´ì§€ë“¤ì˜ 형태로 보여준다. ìµœì‹ ì˜ ë©‹ì§„ ì»¤ë„ +코드 ì €ìž¥ì†ŒëŠ” 다ìŒì„ 통하여 ì°¸ì¡°í• ìˆ˜ 있다. + http://sosdg.org/~coywolf/lxr/ + + +개발 프로세스 +------------- + +리눅스 ì»¤ë„ ê°œë°œ 프로세스는 현재 몇몇 다른 ë©”ì¸ ì»¤ë„ "브랜치들"ê³¼ +ì„œë¸Œì‹œìŠ¤í…œì— íŠ¹í™”ëœ ì»¤ë„ ë¸Œëžœì¹˜ë“¤ë¡œ 구성ëœë‹¤. 몇몇 다른 ë©”ì¸ +ë¸Œëžœì¹˜ë“¤ì€ ë‹¤ìŒê³¼ 같다. + - main 2.6.x ì»¤ë„ íŠ¸ë¦¬ + - 2.6.x.y - ì•ˆì •ëœ ì»¤ë„ íŠ¸ë¦¬ + - 2.6.x -git ì»¤ë„ íŒ¨ì¹˜ë“¤ + - 2.6.x -mm ì»¤ë„ íŒ¨ì¹˜ë“¤ + - ì„œë¸Œì‹œìŠ¤í…œì„ ìœ„í•œ ì»¤ë„ íŠ¸ë¦¬ë“¤ê³¼ 패치들 + +2.6.x ì»¤ë„ íŠ¸ë¦¬ +--------------- + +2.6.x 커ë„ë“¤ì€ Linux Torvaldsê°€ 관리하며 kernel.orgì˜ pub/linux/kernel/v2.6/ +ë””ë ‰í† ë¦¬ì—ì„œ 참조ë 수 있다.개발 프로세스는 다ìŒê³¼ 같다. + - 새로운 커ë„ì´ ë°°í¬ë˜ìžë§ˆìž 2ì£¼ì˜ ì‹œê°„ì´ ì£¼ì–´ì§„ë‹¤. ì´ ê¸°ê°„ë™ì€ + ë©”ì¸íŠ¸ë„ˆë“¤ì€ í° diffë“¤ì„ Linusì—게 ì œì¶œí• ìˆ˜ 있다. 대개 ì´ íŒ¨ì¹˜ë“¤ì€ + 몇 주 ë™ì•ˆ -mm 커ë„ë‚´ì— ì´ë¯¸ ìžˆì—ˆë˜ ê²ƒë“¤ì´ë‹¤. í° ë³€ê²½ë“¤ì„ ì œì¶œí•˜ëŠ” ë° + ì„ í˜¸ë˜ëŠ” ë°©ë²•ì€ git(커ë„ì˜ ì†ŒìŠ¤ 관리 툴, ë” ë§Žì€ ì •ë³´ë“¤ì€ http://git.or.cz/ + ì—ì„œ ì°¸ì¡°í• ìˆ˜ 있다)를 사용하는 것ì´ì§€ë§Œ 순수한 패치파ì¼ì˜ 형ì‹ìœ¼ë¡œ ë³´ë‚´ë„ + ê²ƒë„ ë¬´ê´€í•˜ë‹¤. + - 2주 í›„ì— -rc1 커ë„ì´ ë°°í¬ë˜ë©° 지금부터는 ì „ì²´ 커ë„ì˜ ì•ˆì •ì„±ì— ì˜í–¥ì„ + ë¯¸ì¹ ìˆ˜ 있는 새로운 ê¸°ëŠ¥ë“¤ì„ í¬í•¨í•˜ì§€ 않는 íŒ¨ì¹˜ë“¤ë§Œì„ ì¶”ê°€ë 수 있다. + ì™„ì „ížˆ 새로운 ë“œë¼ì´ë²„(í˜¹ì€ íŒŒì¼ì‹œìŠ¤í…œ)는 -rc1 ì´í›„ì—만 받아들여진다는 + ê²ƒì„ ê¸°ì–µí•´ë¼. 왜ëƒí•˜ë©´ ë³€ê²½ì´ ìžì²´ë‚´ì—서만 ë°œìƒí•˜ê³ ì¶”ê°€ëœ ì½”ë“œê°€ + ë“œë¼ì´ë²„ ì™¸ë¶€ì˜ ë‹¤ë¥¸ 부분ì—는 ì˜í–¥ì„ 주지 않으므로 그런 ë³€ê²½ì€ + 퇴보(regression)를 ì¼ìœ¼í‚¬ 만한 ìœ„í—˜ì„ ê°€ì§€ê³ ìžˆì§€ 않기 때문ì´ë‹¤. -rc1ì´ + ë°°í¬ëœ ì´í›„ì— git를 사용하여 íŒ¨ì¹˜ë“¤ì„ Linusì—게 보낼수 있지만 íŒ¨ì¹˜ë“¤ì€ + ê³µì‹ì ì¸ ë©”ì¼ë§ 리스트로 ë³´ë‚´ì„œ ê²€í† ë¥¼ ë°›ì„ í•„ìš”ê°€ 있다. + - 새로운 -rc는 Linus는 현재 git treeê°€ 테스트 í•˜ê¸°ì— ì¶©ë¶„ížˆ ì•ˆì •ëœ ìƒíƒœì— + ìžˆë‹¤ê³ íŒë‹¨ë 때마다 ë°°í¬ëœë‹¤. 목표는 새로운 -rc 커ë„ì„ ë§¤ì£¼ ë°°í¬í•˜ëŠ” + 것ì´ë‹¤. + - ì´ëŸ¬í•œ 프로세스는 커ë„ì´ "준비"ë˜ì—ˆë‹¤ê³ 여겨질때까지 계ì†ëœë‹¤. + 프로세스는 대체로 6주간 지ì†ëœë‹¤. + - ê° -rc ë°°í¬ì— 있는 ì•Œë ¤ì§„ í‡´ë³´ì˜ ëª©ë¡ë“¤ì€ ë‹¤ìŒ URIì— ë‚¨ê²¨ì§„ë‹¤. + http://kernelnewbies.org/known_regressions + +ì»¤ë„ ë°°í¬ì— 있어서 ì–¸ê¸‰í• ë§Œí•œ 가치가 있는 리눅스 ì»¤ë„ ë©”ì¼ë§ ë¦¬ìŠ¤íŠ¸ì˜ +Andrew Mortonì˜ ê¸€ì´ ìžˆë‹¤. + "커ë„ì´ ì–¸ì œ ë°°í¬ë 지는 아무로 모른다. 왜ëƒí•˜ë©´ ë°°í¬ëŠ” ì•Œë ¤ì§„ + ë²„ê·¸ì˜ ìƒí™©ì— ë”°ë¼ ë°°í¬ë˜ëŠ” 것ì´ì§€ ë¯¸ë¦¬ì •í•´ ë†“ì€ ì‹œê°„ì— ë”°ë¼ + ë°°í¬ë˜ëŠ” ê²ƒì€ ì•„ë‹ˆê¸° 때문ì´ë‹¤." + +2.6.x.y - ì•ˆì • ì»¤ë„ íŠ¸ë¦¬ +------------------------ + +4 ìžë¦¬ 숫ìžë¡œ ì´ë£¨ì–´ì§„ ë²„ì ¼ì˜ ì»¤ë„ë“¤ì€ -stable 커ë„들ì´ë‹¤. ê·¸ê²ƒë“¤ì€ 2.6.x +커ë„ì—ì„œ ë°œê²¬ëœ í° í‡´ë³´ë“¤ì´ë‚˜ 보안 ë¬¸ì œë“¤ 중 비êµì ìž‘ê³ ì¤‘ìš”í•œ ìˆ˜ì •ë“¤ì„ +í¬í•¨í•œë‹¤. + +ì´ê²ƒì€ 가장 ìµœê·¼ì˜ ì•ˆì •ì ì¸ ì»¤ë„ì„ ì›í•˜ëŠ” 사용ìžì—게 추천ë˜ëŠ” 브랜치ì´ë©°, +개발/실험ì ë²„ì ¼ì„ í…ŒìŠ¤íŠ¸í•˜ëŠ” ê²ƒì„ ë•ëŠ”ë°ëŠ” 별로 ê´€ì‹¬ì´ ì—†ë‹¤. + +ì–´ë–¤ 2.6.x.y 커ë„ë„ ì‚¬ìš©ê°€ëŠ¥í•˜ì§€ 않다면 그때는 가장 ë†’ì€ ìˆ«ìžì˜ 2.6.x +커ë„ì´ í˜„ìž¬ì˜ ì•ˆì • 커ë„ì´ë‹¤. + +2.6.x.y는 "stable" 팀<stable@kernel.org>ì— ì˜í•´ 관리ë˜ë©° ê±°ì˜ ë§¤ë²ˆ 격주로 +ë°°í¬ëœë‹¤. + +ì»¤ë„ íŠ¸ë¦¬ 문서들 ë‚´ì— Documentation/stable_kernel_rules.txt 파ì¼ì€ ì–´ë–¤ +ì¢…ë¥˜ì˜ ë³€ê²½ë“¤ì´ -stable 트리로 들어왔는지와 ë°°í¬ í”„ë¡œì„¸ìŠ¤ê°€ 어떻게 +진행ë˜ëŠ”지를 설명한다. + + +2.6.x -git 패치들 +------------------ +git ì €ìž¥ì†Œ(그러므로 -gitì´ë¼ëŠ” ì´ë¦„ì´ ë¶™ìŒ)ì—는 ë‚ ë§ˆë‹¤ 관리ë˜ëŠ” Linusì˜ +ì»¤ë„ íŠ¸ë¦¬ì˜ snapshot ë“¤ì´ ìžˆë‹¤. ì´ íŒ¨ì¹˜ë“¤ì€ ì¼ë°˜ì 으로 ë‚ ë§ˆë‹¤ ë°°í¬ë˜ë©° +Linusì˜ íŠ¸ë¦¬ì˜ í˜„ìž¬ ìƒíƒœë¥¼ 나타낸다. ì´ íŒ¨ì¹˜ë“¤ì€ ì •ìƒì ì¸ì§€ ì¡°ê¸ˆë„ +살펴보지 ì•Šê³ ìžë™ì 으로 ìƒì„±ëœ 것ì´ë¯€ë¡œ -rc 커ë„들 ë³´ë‹¤ë„ ë” ì‹¤í—˜ì ì´ë‹¤. + +2.6.x -mm ì»¤ë„ íŒ¨ì¹˜ë“¤ +--------------------- +Andrew Mortonì— ì˜í•´ ë°°í¬ëœ 실험ì ì¸ ì»¤ë„ íŒ¨ì¹˜ë“¤ì´ë‹¤. Andrew는 ëª¨ë“ ë‹¤ë¥¸ +서브시스템 ì»¤ë„ íŠ¸ë¦¬ì™€ íŒ¨ì¹˜ë“¤ì„ ê°€ì ¸ì™€ì„œ 리눅스 ì»¤ë„ ë©”ì¼ë§ 리스트로 +온 ë§Žì€ íŒ¨ì¹˜ë“¤ê³¼ í•œë° ë¬¶ëŠ”ë‹¤. ì´ íŠ¸ë¦¬ëŠ” 새로운 기능들과 íŒ¨ì¹˜ë“¤ì„ ìœ„í•œ +장소를 ì œê³µí•˜ëŠ” ì—í• ì„ í•œë‹¤. í•˜ë‚˜ì˜ íŒ¨ì¹˜ê°€ -mmì— í•œë™ì•ˆ 있으면서 ê·¸ 가치가 +ì¦ëª…ë˜ê²Œ ë˜ë©´ Andrew나 서브시스템 ë©”ì¸íŠ¸ë„ˆëŠ” ê·¸ê²ƒì„ ë©”ì¸ë¼ì¸ì— í¬í•¨ì‹œí‚¤ê¸° +위하여 Linusì—게 보낸다. + +ì»¤ë„ íŠ¸ë¦¬ì— í¬í•¨í•˜ê³ ì‹¶ì€ ëª¨ë“ ìƒˆë¡œìš´ íŒ¨ì¹˜ë“¤ì€ Linusì—게 보내지기 ì „ì— +-mm 트리ì—ì„œ 테스트를 하는 ê²ƒì„ ì ê·¹ 추천한다. + +ì´ ì»¤ë„ë“¤ì€ ì•ˆì •ë˜ê²Œ ì‚¬ìš©í• ì‹œìŠ¤í…œì—ì„œì— ì‹¤í–‰í•˜ëŠ” ê²ƒì€ ì 합하지 않으며 +다른 ë¸Œëžœì¹˜ë“¤ì˜ ì–´ë–¤ 것들보다 위험하다. + +ì—¬ëŸ¬ë¶„ì´ ì»¤ë„ ê°œë°œ 프로세스를 ë•ê¸¸ ì›í•œë‹¤ë©´ ì´ ì»¤ë„ ë°°í¬ë“¤ì„ ì‚¬ìš©í•˜ê³ +테스트한 후 ì–´ë–¤ ë¬¸ì œë¥¼ 발견하거나 ë˜ëŠ” ëª¨ë“ ê²ƒì´ ìž˜ ë™ìž‘한다면 리눅스 +ì»¤ë„ ë©”ì¼ë§ 리스트로 í”¼ë“œë°±ì„ í•´ë‹¬ë¼. + +ì´ ì»¤ë„ë“¤ì€ ì¼ë°˜ì 으로 ëª¨ë“ ë‹¤ë¥¸ 실험ì ì¸ íŒ¨ì¹˜ë“¤ê³¼ ë°°í¬ë ë‹¹ì‹œì˜ +사용가능한 ë©”ì¸ë¼ì¸ -git 커ë„ë“¤ì˜ ëª‡ëª‡ ë³€ê²½ì„ í¬í•¨í•œë‹¤. + +-mm 커ë„ë“¤ì€ ì •í•´ì§„ ì¼ì •ëŒ€ë¡œ ë°°í¬ë˜ì§€ 않는다. 하지만 대개 몇몇 -mm 커ë„ë“¤ì€ +ê° -rc 커ë„(1부터 3ì´ í”함) 사ì´ì—ì„œ ë°°í¬ëœë‹¤. + +서브시스템 ì»¤ë„ íŠ¸ë¦¬ë“¤ê³¼ 패치들 +------------------------------- +ë§Žì€ ë‹¤ë¥¸ ì»¤ë„ ì„œë¸Œì‹œìŠ¤í…œ 개발ìžë“¤ì€ 커ë„ì˜ ë‹¤ë¥¸ 부분들ì—ì„œ 무슨 ì¼ì´ +ì¼ì–´ë‚˜ê³ 있는지를 볼수 있ë„ë¡ ê·¸ë“¤ì˜ ê°œë°œ 트리를 공개한다. ì´ íŠ¸ë¦¬ë“¤ì€ +위ì—ì„œ ì„¤ëª…í•˜ì˜€ë˜ ê²ƒ 처럼 -mm ì»¤ë„ ë°°í¬ë“¤ë¡œ í•©ì³ì§„다. + +다ìŒì€ 활용가능한 ì»¤ë„ íŠ¸ë¦¬ë“¤ì„ ë‚˜ì—´í•œë‹¤. + git trees: + - Kbuild development tree, Sam Ravnborg < sam@ravnborg.org> + git.kernel.org:/pub/scm/linux/kernel/git/sam/kbuild.git + + - ACPI development tree, Len Brown <len.brown@intel.com > + git.kernel.org:/pub/scm/linux/kernel/git/lenb/linux-acpi-2.6.git + + - Block development tree, Jens Axboe <axboe@suse.de> + git.kernel.org:/pub/scm/linux/kernel/git/axboe/linux-2.6-block.git + + - DRM development tree, Dave Airlie <airlied@linux.ie> + git.kernel.org:/pub/scm/linux/kernel/git/airlied/drm-2.6.git + + - ia64 development tree, Tony Luck < tony.luck@intel.com> + git.kernel.org:/pub/scm/linux/kernel/git/aegl/linux-2.6.git + + - infiniband, Roland Dreier <rolandd@cisco.com > + git.kernel.org:/pub/scm/linux/kernel/git/roland/infiniband.git + + - libata, Jeff Garzik <jgarzik@pobox.com> + git.kernel.org:/pub/scm/linux/kernel/git/jgarzik/libata-dev.git + + - network drivers, Jeff Garzik <jgarzik@pobox.com> + git.kernel.org:/pub/scm/linux/kernel/git/jgarzik/netdev-2.6.git + + - pcmcia, Dominik Brodowski < linux@dominikbrodowski.net> + git.kernel.org:/pub/scm/linux/kernel/git/brodo/pcmcia-2.6.git + + - SCSI, James Bottomley < James.Bottomley@SteelEye.com> + git.kernel.org:/pub/scm/linux/kernel/git/jejb/scsi-misc-2.6.git + + quilt trees: + - USB, PCI, Driver Core, and I2C, Greg Kroah-Hartman < gregkh@suse.de> + kernel.org/pub/linux/kernel/people/gregkh/gregkh-2.6/ + - x86-64, partly i386, Andi Kleen < ak@suse.de> + ftp.firstfloor.org:/pub/ak/x86_64/quilt/ + + 다른 ì»¤ë„ íŠ¸ë¦¬ë“¤ì€ http://kernel.org/git와 MAINTAINERS 파ì¼ì—ì„œ ì°¸ì¡°í• ìˆ˜ + 있다. + +버그 ë³´ê³ +--------- +bugzilla.kernel.org는 리눅스 ì»¤ë„ ê°œë°œìžë“¤ì´ 커ë„ì˜ ë²„ê·¸ë¥¼ 추ì 하는 ê³³ì´ë‹¤. +사용ìžë“¤ì€ 발견한 ëª¨ë“ ë²„ê·¸ë“¤ì„ ë³´ê³ í•˜ê¸° 위하여 ì´ íˆ´ì„ ì‚¬ìš©í• ê²ƒì„ ê¶Œìž¥í•œë‹¤. +kernel bugzilla를 사용하는 ìžì„¸í•œ ë°©ë²•ì€ ë‹¤ìŒì„ 참조하ë¼. + http://test.kernel.org/bugzilla/faq.html + +ë©”ì¸ ì»¤ë„ ì†ŒìŠ¤ ë””ë ‰í† ë¦¬ì— ìžˆëŠ” REPORTING-BUGS 파ì¼ì€ ì»¤ë„ ë²„ê·¸ì¼ ê²ƒ ê°™ì€ +ê²ƒì„ ë³´ê³ í•˜ëŠ”ëŠ” ë²•ì— ê´€í•œ ì¢‹ì€ í…œí”Œë¦¿ì´ê³ ë¬¸ì œë¥¼ 추ì 하기 위해서 ì»¤ë„ +개발ìžë“¤ì´ 필요로 하는 ì •ë³´ê°€ 무엇들ì¸ì§€ë¥¼ ìƒì„¸ížˆ ì„¤ëª…í•˜ê³ ìžˆë‹¤. + + +버그 리í¬íŠ¸ë“¤ì˜ 관리 +-------------------- + +ì—¬ëŸ¬ë¶„ì˜ í•´í‚¹ ê¸°ìˆ ì„ ì—°ìŠµí•˜ëŠ” 가장 ì¢‹ì€ ë°©ë²• ì¤‘ì˜ í•˜ëŠ” 다른 ì‚¬ëžŒë“¤ì´ +ë³´ê³ í•œ ë²„ê·¸ë“¤ì„ ìˆ˜ì •í•˜ëŠ” 것ì´ë‹¤. ì—¬ëŸ¬ë¶„ì€ ì»¤ë„ì„ ë”ìš± ì•ˆì •í™”ì‹œí‚¤ëŠ”ë° +ë„ì›€ì„ ì¤„ ë¿ë§Œì´ ì•„ë‹ˆë¼ ì‹¤ì œìžˆëŠ” ë¬¸ì œë“¤ì„ ìˆ˜ì •í•˜ëŠ” ë²•ì„ ë°°ìš°ê²Œ ë˜ê³ +그와 함께 ì—¬ëŸ¬ë¶„ë“¤ì˜ ê¸°ìˆ ì€ í–¥ìƒë 것ì´ë©° 다른 개발ìžë“¤ì´ ì—¬ëŸ¬ë¶„ì˜ +ì¡´ìž¬ì— ëŒ€í•´ 알게 ë 것ì´ë‹¤. 버그를 ìˆ˜ì •í•˜ëŠ” ê²ƒì€ ê°œë°œìžë“¤ 사ì´ì—ì„œ +ì 수를 ì–»ì„ ìˆ˜ 있는 가장 ì¢‹ì€ ë°©ë²•ì¤‘ì˜ í•˜ë‚˜ì´ë‹¤. 왜ëƒí•˜ë©´ ë§Žì€ ì‚¬ëžŒë“¤ì€ +다른 ì‚¬ëžŒë“¤ì˜ ë²„ê·¸ë“¤ì„ ìˆ˜ì •í•˜ê¸° 위하여 ì‹œê°„ì„ ë‚비하지 않기 때문ì´ë‹¤. + +ì´ë¯¸ ë³´ê³ ëœ ë²„ê·¸ 리í¬íŠ¸ë“¤ì„ ê°€ì§€ê³ ìž‘ì—…í•˜ê¸° 위해서 http://bugzilla.kernelorg를 +참조하ë¼. ì—¬ëŸ¬ë¶„ì´ ì•žìœ¼ë¡œ ìƒê²¨ë‚ 버그 리í¬íŠ¸ë“¤ì˜ ì¡°ì–¸ìžê°€ ë˜ê¸¸ ì›í•œë‹¤ë©´ +bugme-new ë©”ì¼ë§ 리스트나(새로운 버그 리í¬íŠ¸ë“¤ë§Œì´ ì´ê³³ì—ì„œ ë©”ì¼ë¡œ ì „í•´ì§„ë‹¤) +bugme-janitor ë©”ì¼ë§ 리스트(bugzillaì— ëª¨ë“ ë³€í™”ë“¤ì´ ì—¬ê¸°ì„œ ë©”ì¼ë¡œ ì „í•´ì§„ë‹¤) +ì— ë“±ë¡í•˜ë©´ ëœë‹¤. + + http://lists.osdl.org/mailman/listinfo/bugme-new + http://lists.osdl.org/mailman/listinfo/bugme-janitors + + + +ë©”ì¼ë§ 리스트들 +--------------- + +ìœ„ì˜ ëª‡ëª‡ ë¬¸ì„œë“¤ì´ ì„¤ëª…í•˜ì˜€ì§€ë§Œ 핵심 ì»¤ë„ ê°œë°œìžë“¤ì˜ 대다수는 +리눅스 ì»¤ë„ ë©”ì¼ë§ ë¦¬ìŠ¤íŠ¸ì— ì°¸ì—¬í•˜ê³ ìžˆë‹¤. ë¦¬ìŠ¤íŠ¸ì— ë“±ë¡í•˜ê³ 해지하는 +ë°©ë²•ì— ê´€í•œ ìžì„¸í•œ 사í•ì€ 다ìŒì—ì„œ ì°¸ì¡°í• ìˆ˜ 있다. + http://vger.kernel.org/vger-lists.html#linux-kernel +웹ìƒì˜ ë§Žì€ ë‹¤ë¥¸ ê³³ì—ë„ ë©”ì¼ë§ ë¦¬ìŠ¤íŠ¸ì˜ ì•„ì¹´ì´ë¸Œë“¤ì´ 있다. +ì´ëŸ¬í•œ ì•„ì¹´ì´ë¸Œë“¤ì„ ì°¾ìœ¼ë ¤ë©´ 검색 ì—”ì§„ì„ ì‚¬ìš©í•˜ë¼. 예를 들어: + http://dir.gmane.org/gmane.linux.kernel +ì—¬ëŸ¬ë¶„ì´ ìƒˆë¡œìš´ ë¬¸ì œì— ê´€í•´ ë¦¬ìŠ¤íŠ¸ì— ì˜¬ë¦¬ê¸° ì „ì— ë§í•˜ê³ ì‹¶ì€ ì£¼ì œì— ëŒ€í•œ +ê²ƒì„ ì•„ì¹´ì´ë¸Œì—ì„œ ë¨¼ì € 찾기를 ê°•ë ¥ížˆ 권장한다. ì´ë¯¸ ìƒì„¸í•˜ê²Œ í† ë¡ ëœ ë§Žì€ +ê²ƒë“¤ì´ ë©”ì¼ë§ ë¦¬ìŠ¤íŠ¸ì˜ ì•„ì¹´ì´ë¸Œì— 기ë¡ë˜ì–´ 있다. + +ê°ê°ì˜ ì»¤ë„ ì„œë¸Œì‹œìŠ¤í…œë“¤ì˜ ëŒ€ë¶€ë¶„ì€ ìžì‹ ë“¤ì˜ ê°œë°œì— ê´€í•œ ë…¸ë ¥ë“¤ë¡œ ì´ë£¨ì–´ì§„ +ë¶„ë¦¬ëœ ë©”ì¼ë§ 리스트를 ë”°ë¡œ ê°€ì§€ê³ ìžˆë‹¤. 다른 ê·¸ë£¹ë“¤ì´ ë¬´ìŠ¨ 리스트를 ê°€ì§€ê³ +있는지는 MAINTAINERS 파ì¼ì„ 참조하ë¼. + +ë§Žì€ ë¦¬ìŠ¤íŠ¸ë“¤ì€ kernel.orgì—ì„œ 호스트ë˜ê³ 있다. ê·¸ ì •ë³´ë“¤ì€ ë‹¤ìŒì—ì„œ 참조ë 수 있다. + http://vger.kernel.org/vger-lists.html + +ë¦¬ìŠ¤íŠ¸ë“¤ì„ ì‚¬ìš©í• ë•ŒëŠ” 올바른 ì˜ˆì ˆì„ ë”°ë¥¼ ê²ƒì„ ìœ ë…í•´ë¼. +대단하진 않지만 ë‹¤ìŒ URLì€ ë¦¬ìŠ¤íŠ¸(í˜¹ì€ ëª¨ë“ ë¦¬ìŠ¤íŠ¸)와 대화하는 몇몇 간단한 +ê°€ì´ë“œë¼ì¸ì„ ê°€ì§€ê³ ìžˆë‹¤. + http://www.albion.com/netiquette/ + +여러 ì‚¬ëžŒë“¤ì´ ì—¬ëŸ¬ë¶„ì˜ ë©”ì¼ì— ì‘답한다면 CC: 즉 ìˆ˜ì‹ ë¦¬ìŠ¤íŠ¸ëŠ” 꽤 커지게 +ë 것ì´ë‹¤. 아무 ì´ìœ ì—†ì´ CCì—ì„œ ì–´ë–¤ ì‚¬ëžŒë„ ì œê±°í•˜ê±°ë‚˜ 리스트 주소로만 +íšŒì‹ í•˜ì§€ 마ë¼. ë©”ì¼ì„ 보낸 사람으로서 하나를 ë°›ê³ ë¦¬ìŠ¤íŠ¸ë¡œë¶€í„° ë˜ +하나를 받아 ë‘번 받는 ê²ƒì— ìµìˆ™í•˜ì—¬ 있으니 mail-header를 ì¡°ìž‘í•˜ë ¤ê³ í•˜ì§€ +ë§ì•„ë¼. ì‚¬ëžŒë“¤ì€ ê·¸ëŸ° ê²ƒì„ ì¢‹ì•„í•˜ì§€ ì•Šì„ ê²ƒì´ë‹¤. + +ì—¬ëŸ¬ë¶„ì˜ íšŒì‹ ì˜ ë¬¸ë§¥ì„ ì›ëž˜ëŒ€ë¡œ ìœ ì§€í•´ì•¼ 한다. ì—¬ëŸ¬ë¶„ë“¤ì˜ íšŒì‹ ì˜ ìœ—ë¶€ë¶„ì— +"John 커ë„해커는 작성했다...."를 ìœ ì§€í•˜ë©° ì—¬ëŸ¬ë¶„ë“¤ì˜ ì˜ê²¬ì„ ê·¸ ë©”ì¼ì˜ ìœ—ë¶€ë¶„ì— +작성하지 ë§ê³ ê° ì¸ìš©í•œ 단ë½ë“¤ 사ì´ì— 넣어ë¼. + +ì—¬ëŸ¬ë¶„ë“¤ì´ íŒ¨ì¹˜ë“¤ì„ ë©”ì¼ì— 넣는다면 ê·¸ê²ƒë“¤ì€ Documentation/SubmittingPatchesì— +나와있는ë°ë¡œ 명백히(plain) ì½ì„ 수 있는 í…스트여야 한다. ì»¤ë„ ê°œë°œìžë“¤ì€ +첨부파ì¼ì´ë‚˜ ì••ì¶•ëœ íŒ¨ì¹˜ë“¤ì„ ì›í•˜ì§€ 않는다. ê·¸ë“¤ì€ ì—¬ëŸ¬ë¶„ë“¤ì˜ íŒ¨ì¹˜ì˜ +ê° ë¼ì¸ 단위로 코멘트를 하길 ì›í•˜ë©° 압축하거나 첨부하지 ì•Šê³ ë³´ë‚´ëŠ” ê²ƒì´ +ê·¸ë ‡ê²Œ í• ìˆ˜ 있는 ìœ ì¼í•œ 방법ì´ë‹¤. ì—¬ëŸ¬ë¶„ë“¤ì´ ì‚¬ìš©í•˜ëŠ” ë©”ì¼ í”„ë¡œê·¸ëž¨ì´ +스페ì´ìŠ¤ë‚˜ íƒ ë¬¸ìžë“¤ì„ 조작하지 않는지 확ì¸í•˜ë¼. 가장 ì¢‹ì€ ì²« 테스트는 +ë©”ì¼ì„ ìžì‹ ì—게 ë³´ë‚´ë³´ê³ ìŠ¤ìŠ¤ë¡œ ê·¸ 패치를 ì ìš©í•´ë³´ë¼. ê·¸ê²ƒì´ ë™ìž‘하지 +않는다면 ì—¬ëŸ¬ë¶„ì˜ ë©”ì¼ í”„ë¡œê·¸ëž¨ì„ ê³ ì¹˜ë˜ê°€ ì œëŒ€ë¡œ ë™ìž‘하는 프로그램으로 +바꾸어ë¼. + +ë¬´ì—‡ë³´ë‹¤ë„ ë©”ì¼ë§ ë¦¬ìŠ¤íŠ¸ì˜ ë‹¤ë¥¸ 구ë…ìžë“¤ì—게 ë³´ì—¬ì£¼ë ¤ 한다는 ê²ƒì„ ê¸°ì–µí•˜ë¼. + + +커뮤니티와 ì¼í•˜ëŠ” 법 +-------------------- + +ì»¤ë„ ì»¤ë®¤ë‹ˆí‹°ì˜ ëª©ì ì€ ê°€ëŠ¥í•œí•œ 가장 ì¢‹ì€ ì»¤ë„ì„ ì œê³µí•˜ëŠ” 것ì´ë‹¤. ì—¬ëŸ¬ë¶„ì´ +받아들여질 패치를 ì œì¶œí•˜ê²Œ ë˜ë©´ ê·¸ íŒ¨ì¹˜ì˜ ê¸°ìˆ ì ì¸ ì´ì 으로 ê²€í† ë 것ì´ë‹¤. +그럼 ì—¬ëŸ¬ë¶„ë“¤ì€ ë¬´ì—‡ì„ ê¸°ëŒ€í•˜ê³ ìžˆì–´ì•¼ 하는가? + - ë¹„íŒ + - ì˜ê²¬ + - ë³€ê²½ì„ ìœ„í•œ 요구 + - ë‹¹ìœ„ì„±ì„ ìœ„í•œ 요구 + - ê³ ìš” + +기억하ë¼. ì´ê²ƒë“¤ì€ ì—¬ëŸ¬ë¶„ì˜ íŒ¨ì¹˜ê°€ 커ë„ë¡œ 들어가기 위한 ê³¼ì •ì´ë‹¤. ì—¬ëŸ¬ë¶„ì˜ +íŒ¨ì¹˜ë“¤ì€ ë¹„íŒê³¼ 다른 ì˜ê²¬ì„ ë°›ì„ ìˆ˜ ìžˆê³ ê·¸ê²ƒë“¤ì„ ê¸°ìˆ ì ì¸ ë ˆë²¨ë¡œ í‰ê°€í•˜ê³ +재작업하거나 ë˜ëŠ” 왜 ìˆ˜ì •í•˜ë©´ 안ë˜ëŠ”ì§€ì— ê´€í•˜ì—¬ ëª…ë£Œí•˜ê³ ê°„ê²°í•œ ì´ìœ 를 +ë§í• 수 있어야 한다. ì—¬ëŸ¬ë¶„ì´ ì œì¶œí•œ ê²ƒì— ì–´ë–¤ ì‘ë‹µë„ ìžˆì§€ 않다면 몇 ì¼ì„ +ê¸°ë‹¤ë ¤ë³´ê³ ë‹¤ì‹œ ì‹œë„í•´ë¼. ë•Œë¡ ë„ˆë¬´ ë§Žì€ ë©”ì¼ë“¤ ì†ì— ë¬»í˜€ë²„ë¦¬ê¸°ë„ í•œë‹¤. + +ì—¬ëŸ¬ë¶„ì€ ë¬´ì—‡ì„ í•´ì„œëŠ” 안ë˜ëŠ”ê°€? + - ì—¬ëŸ¬ë¶„ì˜ íŒ¨ì¹˜ê°€ 아무 질문 ì—†ì´ ë°›ì•„ë“¤ì—¬ì§€ê¸°ë¥¼ 기대하는 것 + - ë°©ì–´ì ì´ ë˜ëŠ” 것 + - ì˜ê²¬ì„ 무시하는 것 + - ìš”ì²ëœ ë³€ê²½ì„ í•˜ì§€ ì•Šê³ íŒ¨ì¹˜ë¥¼ 다시 ì œì¶œí•˜ëŠ” 것 + +가능한한 가장 ì¢‹ì€ ê¸°ìˆ ì ì¸ í•´ë‹µì„ ì°¾ê³ ìžˆëŠ” 커뮤니티ì—서는 í•ìƒ +ì–´ë–¤ 패치가 얼마나 좋ì€ì§€ì— 관하여 다른 ì˜ê²¬ë“¤ì´ ìžˆì„ ìˆ˜ 있다. ì—¬ëŸ¬ë¶„ì€ +협조ì ì´ì–´ì•¼ í•˜ê³ ê¸°êº¼ì´ ì—¬ëŸ¬ë¶„ì˜ ìƒê°ì„ ì»¤ë„ ë‚´ì— ë§žì¶”ì–´ì•¼ 한다. 아니면 +ì ì–´ë„ ì—¬ëŸ¬ë¶„ì˜ ê²ƒì´ ê°€ì¹˜ìžˆë‹¤ëŠ” ê²ƒì„ ì¤‘ëª…í•˜ì—¬ì•¼ 한다. ìž˜ëª»ëœ ê²ƒë„ ì—¬ëŸ¬ë¶„ì´ +올바른 ë°©í–¥ì˜ í•´ê²°ì±…ìœ¼ë¡œ ì´ëŒì–´ê°ˆ ì˜ì§€ê°€ 있다면 받아들여질 것ì´ë¼ëŠ” ì ì„ +기억하ë¼. + +ì—¬ëŸ¬ë¶„ì˜ ì²« íŒ¨ì¹˜ì— ì—¬ëŸ¬ë¶„ì´ ìˆ˜ì •í•´ì•¼í•˜ëŠ” ì‹ì—¬ê°œ ì •ë„ì˜ íšŒì‹ ì´ ì˜¤ëŠ” +ê²½ìš°ë„ í”하다. ì´ê²ƒì€ ì—¬ëŸ¬ë¶„ì˜ íŒ¨ì¹˜ê°€ 받아들여지지 ì•Šì„ ê²ƒì´ë¼ëŠ” ê²ƒì„ +ì˜ë¯¸í•˜ëŠ” ê²ƒì´ ì•„ë‹ˆê³ ê°œì¸ì 으로 여러분ì—게 ê°ì •ì´ 있어서 그러는 ê²ƒë„ +아니다. 간단히 ì—¬ëŸ¬ë¶„ì˜ íŒ¨ì¹˜ì— ì œê¸°ëœ ë¬¸ì œë“¤ì„ ìˆ˜ì •í•˜ê³ ê·¸ê²ƒì„ ë‹¤ì‹œ +ë³´ë‚´ë¼. + + +ì»¤ë„ ì»¤ë®¤ë‹ˆí‹°ì™€ 기업 ì¡°ì§ê°„ì˜ ì°¨ì´ì +----------------------------------------------------------------- +ì»¤ë„ ì»¤ë®¤ë‹ˆí‹°ëŠ” 가장 ì „í†µì ì¸ íšŒì‚¬ì˜ ê°œë°œ 환경과는 다르다. ì—¬ê¸°ì— ì—¬ëŸ¬ë¶„ë“¤ì˜ +ë¬¸ì œë¥¼ 피하기 위한 목ë¡ì´ 있다. + ì—¬ëŸ¬ë¶„ë“¤ì´ ì œì•ˆí•œ ë³€ê²½ë“¤ì— ê´€í•˜ì—¬ ë§í• ë•Œ ì¢‹ì€ ê²ƒë“¤ : + - " ì´ê²ƒì€ 여러 ë¬¸ì œë“¤ì„ í•´ê²¹í•©ë‹ˆë‹¤." + - "ì´ê²ƒì€ 2000 ë¼ì¸ì˜ 코드를 ì œê±°í•©ë‹ˆë‹¤." + - "ì´ê²ƒì€ ë‚´ê°€ ë§í•˜ë ¤ëŠ” ê²ƒì— ê´€í•´ 설명하는 패치입니다." + - "나는 5ê°œì˜ ë‹¤ë¥¸ 아키í…ì³ì—ì„œ ê·¸ê²ƒì„ í…ŒìŠ¤íŠ¸í–ˆìŠ´ìœ¼ë¡œ..." + - "ì—¬ê¸°ì— ì¼ë ¨ì˜ ìž‘ì€ íŒ¨ì¹˜ë“¤ì´ ìžˆìŠµìŒë¡œ..." + - "ì´ê²ƒì€ ì¼ë°˜ì ì¸ ë¨¸ì‹ ì—ì„œ ì„±ëŠ¥ì„ í–¥ìƒì‹œí‚¤ë¯€ë¡œ..." + + ì—¬ëŸ¬ë¶„ë“¤ì´ ë§í• ë•Œ 피해야 í• ì¢‹ì§€ ì•Šì€ ê²ƒë“¤ : + - "우리를 ê·¸ê²ƒì„ AIT/ptx/Solarisì—ì„œ ì´ëŸ¬í•œ 방법으로 했다. 그러므로 ê·¸ê²ƒì€ ì¢‹ì€ ê²ƒìž„ì— í‹€ë¦½ì—†ë‹¤..." + - "나는 20ë…„ë™ì•ˆ ì´ê²ƒì„ 해왔다. 그러므로..." + - "ì´ê²ƒì€ ëˆì„ 벌기위해 ë‚˜ì˜ íšŒì‚¬ê°€ 필요로 하는 것ì´ë‹¤." + - "ì´ê²ƒì€ ìš°ë¦¬ì˜ ì—”í„°í”„ë¼ì´ì¦ˆ ìƒí’ˆ ë¼ì¸ì„ 위한 것ì´ë‹¤." + - "ì—¬ê¸°ì— ë‚˜ì˜ ìƒê°ì„ ë§í•˜ê³ 있는 1000 페ì´ì§€ 설계 문서가 있다." + - "나는 6달ë™ì•ˆ ì´ê²ƒì„ 했으니..." + - "여기세 5000ë¼ì¸ 짜리 패치가 있으니..." + - "나는 현재 ë’¤ì£½ë°•ì£½ì¸ ê²ƒì„ ìž¬ìž‘ì„±í–ˆë‹¤. ê·¸ë¦¬ê³ ì—¬ê¸°ì—..." + - "나는 마ê°ì‹œí•œì„ ê°€ì§€ê³ ìžˆìœ¼ë¯€ë¡œ ì´ íŒ¨ì¹˜ëŠ” 지금 ì ìš©ë 필요가 있다." + +ì»¤ë„ ì»¤ë®¤ë‹ˆí‹°ê°€ ì „í†µì ì¸ ì†Œí”„íŠ¸ì›¨ì–´ ì—”ì§€ë‹ˆì–´ë§ ê°œë°œ 환경들과 +ë˜ ë‹¤ë¥¸ ì ì€ ì–¼êµ´ì„ ë³´ì§€ ì•Šê³ ì¼í•œë‹¤ëŠ” ì ì´ë‹¤. ì´ë©”ì¼ê³¼ irc를 ëŒ€í™”ì˜ +주요수단으로 사용하는 ê²ƒì˜ í•œê°€ì§€ 장ì ì€ ì„±ë³„ì´ë‚˜ ì¸ì¢…ì˜ ì°¨ë³„ì´ +없다는 것ì´ë‹¤. 리눅스 커ë„ì˜ ìž‘ì—… 환경ì—서는 단지 ì´ë©”ì¼ ì£¼ì†Œë§Œ +알수 있기 ë•Œë¬¸ì— ì—¬ì„±ê³¼ 소수 ë¯¼ì¡±ë“¤ë„ ëª¨ë‘ ë°›ì•„ë“¤ì—¬ì§„ë‹¤. êµì œì 으로 +ì¼í•˜ê²Œ ë˜ëŠ” ì¸¡ë©´ì€ ì‚¬ëžŒì˜ ì´ë¦„ì— ê·¼ê±°í•˜ì—¬ ì„±ë³„ì„ ì¶”ì¸¡í• ìˆ˜ 없게 +í•˜ê¸°ë•Œë¬¸ì— ì°¨ë³„ì„ ì—†ì• ëŠ” ë° ë„ì›€ì„ ì¤€ë‹¤. Andreaë¼ëŠ” ì´ë¦„ì„ ê°€ì§„ 남ìžì™€ +Patì´ë¼ëŠ” ì´ë¦„ì„ ê°€ì§„ ì—¬ìžê°€ ìžˆì„ ìˆ˜ë„ ìžˆëŠ” 것ì´ë‹¤. 리눅스 커ë„ì—ì„œ +작업하며 ìƒê°ì„ í‘œí˜„í•´ì™”ë˜ ëŒ€ë¶€ë¶„ì˜ ì—¬ì„±ë“¤ì€ ê¸ì •ì ì¸ ê²½í—˜ì„ ê°€ì§€ê³ +있다. + +언어 ìž¥ë²½ì€ ì˜ì–´ì— ìµìˆ™í•˜ì§€ ì•Šì€ ëª‡ëª‡ 사람들ì—게 ë¬¸ì œê°€ ë ìˆ˜ë„ ìžˆë‹¤. + ì–¸ì–´ì˜ í›Œë¥í•œ 구사는 ë©”ì¼ë§ 리스트ì—ì„œ 올바르게 ìžì‹ ì˜ ìƒê°ì„ +표현하기 위하여 필요하다. 그래서 ì—¬ëŸ¬ë¶„ì€ ì´ë©”ì¼ì„ 보내기 ì „ì— +ì˜ì–´ë¥¼ 올바르게 ì‚¬ìš©í•˜ê³ ìžˆëŠ”ì§€ë¥¼ ì²´í¬í•˜ëŠ” ê²ƒì´ ë°”ëžŒì§í•˜ë‹¤. + + +ì—¬ëŸ¬ë¶„ì˜ ë³€ê²½ì„ ë‚˜ëˆ„ì–´ë¼ +------------------------ + +리눅스 ì»¤ë„ ì»¤ë®¤ë‹ˆí‹°ëŠ” í•œêº¼ë²ˆì— êµ‰ìž¥ížˆ í° ì½”ë“œì˜ ë¬¶ìŒì„ 쉽게 +받아들ì´ì§€ 않는다. ë³€ê²½ì€ ì ì ˆí•˜ê²Œ 소개ë˜ê³ , ê²€í† ë˜ê³ , ê°ê°ì˜ +부분으로 작게 ë‚˜ëˆ„ì–´ì ¸ì•¼ 한다. ì´ê²ƒì€ 회사ì—ì„œ 하는 것과는 ì •í™•ížˆ +반대ë˜ëŠ” 것ì´ë‹¤. ì—¬ëŸ¬ë¶„ë“¤ì˜ ì œì•ˆì€ ê°œë°œ ì´ˆê¸°ì— ì¼ì°ì´ 소개ë˜ì•¼ 한다. +그래서 ì—¬ëŸ¬ë¶„ë“¤ì€ ìžì‹ ì´ í•˜ê³ ìžˆëŠ” ê²ƒì— ê´€í•˜ì—¬ í”¼ë“œë°±ì„ ë°›ì„ ìˆ˜ 있게 +ëœë‹¤. 커뮤니티가 ì—¬ëŸ¬ë¶„ë“¤ì´ ì»¤ë®¤ë‹ˆí‹°ì™€ 함께 ì¼í•˜ê³ 있다는 ê²ƒì„ +ëŠë¼ë„ë¡ ë§Œë“¤ê³ ì»¤ë®¤ë‹ˆí‹°ê°€ ì—¬ëŸ¬ë¶„ì˜ ê¸°ëŠ¥ì„ ìœ„í•œ ì“°ë ˆê¸° 장으로서 +사용ë˜ì§€ ì•Šê³ ìžˆë‹¤ëŠ” ê²ƒì„ ëŠë¼ê²Œ 하ìž. 그러나 ë©”ì¼ë§ ë¦¬ìŠ¤íŠ¸ì— í•œë²ˆì— +50ê°œì˜ ì´ë©”ì¼ì„ 보내지는 ë§ì•„ë¼. ì—¬ëŸ¬ë¶„ë“¤ì˜ ì¼ë ¨ì˜ íŒ¨ì¹˜ë“¤ì€ í•ìƒ +ë” ìž‘ì•„ì•¼ 한다. + +패치를 나누는 ì´ìœ 는 다ìŒê³¼ 같다. + +1) ìž‘ì€ íŒ¨ì¹˜ë“¤ì€ ì—¬ëŸ¬ë¶„ì˜ íŒ¨ì¹˜ë“¤ì´ ì ìš©ë 수 있는 í™•ë¥ ì„ ë†’ì—¬ì¤€ë‹¤. + 왜ëƒí•˜ë©´ 다른 ì‚¬ëžŒë“¤ì€ ì •í™•ì„±ì„ ê²€ì¦í•˜ê¸° 위하여 ë§Žì€ ì‹œê°„ê³¼ ë…¸ë ¥ì„ + 들ì´ê¸°ë¥¼ ì›í•˜ì§€ 않는다. 5ì¤„ì˜ íŒ¨ì¹˜ëŠ” ë©”ì¸íŠ¸ë„ˆê°€ ê±°ì˜ ëª‡ 초간 ížë— + ë³´ë©´ ì ìš©ë 수 있다. 그러나 500 ì¤„ì˜ íŒ¨ì¹˜ëŠ” ì •í™•ì„±ì„ ê²€í† í•˜ê¸° 위하여 + ëª‡ì‹œê°„ì´ ê±¸ë¦´ ìˆ˜ë„ ìžˆë‹¤(걸리는 ì‹œê°„ì€ íŒ¨ì¹˜ì˜ í¬ê¸° í˜¹ì€ ë‹¤ë¥¸ ê²ƒì— + 비례하여 기하급수ì 으로 늘어난다). + + 패치를 작게 만드는 ê²ƒì€ ë¬´ì—‡ì¸ê°€ 잘못ë˜ì—ˆì„ ë•Œ 디버그하는 ê²ƒì„ + 쉽게 ë§Œë“ ë‹¤. 즉, ê·¸ë ‡ê²Œ 만드는 ê²ƒì€ ë§¤ìš° í° íŒ¨ì¹˜ë¥¼ ì ìš©í•œ í›„ì— + 조사하는 것 보다 ìž‘ì€ íŒ¨ì¹˜ë¥¼ ì ìš©í•œ í›„ì— (ê·¸ë¦¬ê³ ëª‡ëª‡ì˜ ê²ƒì´ + ê¹¨ì¡Œì„ ë•Œ) 하나씩 íŒ¨ì¹˜ë“¤ì„ ì œê±°í•´ê°€ë©° 디버그 하기 쉽ë„ë¡ ë§Œë“¤ì–´ 준다. + +2) ìž‘ì€ íŒ¨ì¹˜ë“¤ì„ ë³´ë‚´ëŠ” 것ë¿ë§Œ ì•„ë‹ˆë¼ íŒ¨ì¹˜ë“¤ì„ ì œì¶œí•˜ê¸°ì „ì— ìž¬ìž‘ì„±í•˜ê³ + 간단하게(í˜¹ì€ ê°„ë‹¨í•œê²Œ 재배치하여) 하는 ê²ƒë„ ì¤‘ìš”í•˜ë‹¤. + +ì—¬ê¸°ì— ì»¤ë„ ê°œë°œìž Al Viroì˜ ì´ì•¼ê¸°ê°€ 있다. + "í•™ìƒì˜ 수학 ìˆ™ì œë¥¼ 채ì 하는 ì„ ìƒë‹˜ì„ ìƒê°í•´ë³´ë¼. ì„ ìƒë‹˜ì€ í•™ìƒë“¤ì´ + ë‹µì„ ì–»ì„때까지 ê²ªì€ ì‹œí–‰ì°©ì˜¤ë¥¼ 보길 ì›í•˜ì§€ 않는다. ì„ ìƒë‹˜ë“¤ì€ + ê°„ê²°í•˜ê³ ê°€ìž¥ ë›°ì–´ë‚œ ë‹µì„ ë³´ê¸¸ ì›í•œë‹¤. 훌ë¥í•œ í•™ìƒì€ ì´ê²ƒì„ ì•Œê³ + 마지막으로 ë‹µì„ ì–»ê¸° ì „ 중간 ê³¼ì •ë“¤ì„ ì œì¶œí•˜ì§„ 않는다. + + ì»¤ë„ ê°œë°œë„ ë§ˆì°¬ê°€ì§€ì´ë‹¤. ë©”ì¸íŠ¸ë„ˆë“¤ê³¼ ê²€í† í•˜ëŠ” ì‚¬ëžŒë“¤ì€ ë¬¸ì œë¥¼ + 풀어나가는 ê³¼ì •ì†ì— 숨겨진 ê³¼ì •ì„ ë³´ê¸¸ ì›í•˜ì§„ 않는다. ê·¸ë“¤ì€ + ê°„ê²°í•˜ê³ ë©‹ì§„ ë‹µì„ ë³´ê¸¸ ì›í•œë‹¤." + +커뮤니티와 함께 ì¼í•˜ë©° ë›°ì–´ë‚œ ë‹µì„ ì°¾ê³ ì—¬ëŸ¬ë¶„ë“¤ì˜ ì™„ì„±ë˜ì§€ ì•Šì€ ì¼ë“¤ +사ì´ì— ê· í˜•ì„ ìœ ì§€í•´ì•¼ 하는 ì–´ë ¤ì›€ì´ ìžˆì„ ìˆ˜ 있다. 그러므로 í”„ë¡œì„¸ìŠ¤ì˜ +ì´ˆë°˜ì— ì—¬ëŸ¬ë¶„ì˜ ì¼ì„ í–¥ìƒì‹œí‚¤ê¸°ìœ„í•œ í”¼ë“œë°±ì„ ì–»ëŠ” 것 ë¿ë§Œ ì•„ë‹ˆë¼ +ì—¬ëŸ¬ë¶„ë“¤ì˜ ë³€ê²½ë“¤ì„ ìž‘ì€ ë¬¶ìŒìœ¼ë¡œ ìœ ì§€í•´ì„œ 심지어는 ì—¬ëŸ¬ë¶„ì˜ ìž‘ì—…ì˜ +ëª¨ë“ ë¶€ë¶„ì´ ì§€ê¸ˆì€ í¬í•¨ë 준비가 ë˜ì–´ìžˆì§€ 않지만 ìž‘ì€ ë¶€ë¶„ì€ ì´ë¯¸ +받아들여질 수 있ë„ë¡ ìœ ì§€í•˜ëŠ” ê²ƒì´ ë°”ëžŒì§í•˜ë‹¤. + +ë˜í•œ 완성ë˜ì§€ ì•Šì•˜ê³ "ë‚˜ì¤‘ì— ìˆ˜ì •ë 것ì´ë‹¤." 와 ê°™ì€ ê²ƒë“¤ì€ í¬í•¨í•˜ëŠ” +íŒ¨ì¹˜ë“¤ì€ ë°›ì•„ë“¤ì—¬ì§€ì§€ ì•Šì„ ê²ƒì´ë¼ëŠ” ì ì„ ìœ ë…하ë¼. + +ë³€ê²½ì„ ì •ë‹¹í™”í•´ë¼ +----------------- + +ì—¬ëŸ¬ë¶„ë“¤ì˜ ë‚˜ëˆ„ì–´ì§„ íŒ¨ì¹˜ë“¤ì„ ë¦¬ëˆ…ìŠ¤ 커뮤니티가 왜 ë°˜ì˜í•´ì•¼ 하는지를 +ì•Œë„ë¡ í•˜ëŠ” ê²ƒì€ ë§¤ìš° 중요하다. 새로운 ê¸°ëŠ¥ë“¤ì´ í•„ìš”í•˜ê³ ìœ ìš©í•˜ë‹¤ëŠ” +ê²ƒì€ ë°˜ë“œì‹œ ê·¸ì— ë§žëŠ” ì´ìœ ê°€ 있어야 한다. + + +ë³€ê²½ì„ ë¬¸ì„œí™”í•´ë¼ +----------------- + +ì—¬ëŸ¬ë¶„ì´ íŒ¨ì¹˜ë¥¼ ë³´ë‚´ë ¤ í• ë•ŒëŠ” ì—¬ëŸ¬ë¶„ì´ ë¬´ì—‡ì„ ë§í•˜ë ¤ê³ 하는지를 충분히 +ìƒê°í•˜ì—¬ ì´ë©”ì¼ì„ 작성해야 한다. ì´ ì •ë³´ëŠ” 패치를 위한 ChangeLogê°€ ë +것ì´ë‹¤. ê·¸ë¦¬ê³ í•ìƒ ê·¸ ë‚´ìš©ì„ ë³´ê¸¸ ì›í•˜ëŠ” ëª¨ë“ ì‚¬ëžŒë“¤ì„ ìœ„í•´ ë³´ì¡´ë +것ì´ë‹¤. 패치는 완벽하게 다ìŒê³¼ ê°™ì€ ë‚´ìš©ë“¤ì„ í¬í•¨í•˜ì—¬ 설명해야 한다. + - ë³€ê²½ì´ ì™œ 필요한지 + - íŒ¨ì¹˜ì— ê´€í•œ ì „ì²´ 설계 어프로치 + - 구현 ìƒì„¸ë“¤ + - 테스트 결과들 + +ì´ê²ƒì´ 무엇ì¸ì§€ ë” ìžì„¸í•œ ê²ƒì„ ì•Œê³ ì‹¶ë‹¤ë©´ ë‹¤ìŒ ë¬¸ì„œì˜ ChageLog í•ì„ ë´ë¼. + "The Perfect Patch" + http://www.zip.com.au/~akpm/linux/patches/stuff/tpp.txt + + + + +ì´ ëª¨ë“ ê²ƒì„ í•˜ëŠ” ê²ƒì€ ë§¤ìš° ì–´ë ¤ìš´ ì¼ì´ë‹¤. 완벽히 소화하는 ë°ëŠ” ì ì–´ë„ ëª‡ë…„ì´ +걸릴 ìˆ˜ë„ ìžˆë‹¤. ë§Žì€ ì¸ë‚´ì™€ ê²°ì˜ê°€ 필요한 계ì†ë˜ëŠ” ê°œì„ ì˜ ê³¼ì •ì´ë‹¤. 그러나 +가능한한 í¬ê¸°í•˜ì§€ ë§ë¼. ë§Žì€ ì‚¬ëžŒë“¤ì€ ì´ì „부터 í•´ì™”ë˜ ê²ƒì´ê³ ê·¸ ì‚¬ëžŒë“¤ë„ +ì •í™•í•˜ê²Œ ì—¬ëŸ¬ë¶„ë“¤ì´ ì§€ê¸ˆ ì„œ 있는 ê·¸ 곳부터 시작했었다. + + + + +---------- +"개발 프로세스"(http://linux.tar.gz/articles/2.6-development_process) ì„¹ì…˜ì„ +ìž‘ì„±í•˜ëŠ”ë° ìžˆì–´ ì°¸ê³ í• ë¬¸ì„œë¥¼ 사용하ë„ë¡ í—ˆë½í•´ì¤€ Paolo Ciarrocchiì—게 +ê°ì‚¬í•œë‹¤. ì—¬ëŸ¬ë¶„ë“¤ì´ ë§í•´ì•¼ í• ê²ƒê³¼ ë§í•´ì„œëŠ” 안ë˜ëŠ” ê²ƒì˜ ëª©ë¡ ì¤‘ ì¼ë¶€ë¥¼ ì œê³µí•´ì¤€ +Randy Dunlapê³¼ Gerrit Huizengaì—게 ê°ì‚¬í•œë‹¤. ë˜í•œ ê²€í† ì™€ ì˜ê²¬ ê·¸ë¦¬ê³ +ê³µí—Œì„ ì•„ë¼ì§€ ì•Šì€ Pat Mochel, Hanna Linder, Randy Dunlap, Kay Sievers, +Vojtech Pavlik, Jan Kara, Josh Boyer, Kees Cook, Andrew Morton, Andi Kleen, +Vadim Lobanov, Jesper Juhl, Adrian Bunk, Keri Harris, Frans Pop, +David A. Wheeler, Junio Hamano, Michael Kerrisk, and Alex Shepardì—ê²Œë„ ê°ì‚¬ë¥¼ ì „í•œë‹¤. +ê·¸ë“¤ì˜ ë„ì›€ì´ ì—†ì—ˆë‹¤ë©´ ì´ ë¬¸ì„œëŠ” 존재하지 ì•Šì•˜ì„ ê²ƒì´ë‹¤. + + + +ë©”ì¸íŠ¸ë„ˆ: Greg Kroah-Hartman <greg@kroah.com> diff --git a/fs/sysfs/bin.c b/fs/sysfs/bin.c index 135353f8a296773605fe9ca744fe4612fff0f678..5afe2a26f5d877f69b268c1fb827aa8dbea55ea0 100644 --- a/fs/sysfs/bin.c +++ b/fs/sysfs/bin.c @@ -248,12 +248,7 @@ int sysfs_create_bin_file(struct kobject * kobj, struct bin_attribute * attr) void sysfs_remove_bin_file(struct kobject * kobj, struct bin_attribute * attr) { - if (sysfs_hash_and_remove(kobj->sd, attr->attr.name) < 0) { - printk(KERN_ERR "%s: " - "bad dentry or inode or no such file: \"%s\"\n", - __FUNCTION__, attr->attr.name); - dump_stack(); - } + sysfs_hash_and_remove(kobj->sd, attr->attr.name); } EXPORT_SYMBOL_GPL(sysfs_create_bin_file); diff --git a/fs/sysfs/dir.c b/fs/sysfs/dir.c index 048e6054c2fdb7b60f35945eb87067463eee5896..83e76b3813c9af674fb2c6fda9c2f891c89e0964 100644 --- a/fs/sysfs/dir.c +++ b/fs/sysfs/dir.c @@ -762,12 +762,15 @@ static int sysfs_count_nlink(struct sysfs_dirent *sd) static struct dentry * sysfs_lookup(struct inode *dir, struct dentry *dentry, struct nameidata *nd) { + struct dentry *ret = NULL; struct sysfs_dirent * parent_sd = dentry->d_parent->d_fsdata; struct sysfs_dirent * sd; struct bin_attribute *bin_attr; struct inode *inode; int found = 0; + mutex_lock(&sysfs_mutex); + for (sd = parent_sd->s_children; sd; sd = sd->s_sibling) { if (sysfs_type(sd) && !strcmp(sd->s_name, dentry->d_name.name)) { @@ -778,14 +781,14 @@ static struct dentry * sysfs_lookup(struct inode *dir, struct dentry *dentry, /* no such entry */ if (!found) - return NULL; + goto out_unlock; /* attach dentry and inode */ inode = sysfs_get_inode(sd); - if (!inode) - return ERR_PTR(-ENOMEM); - - mutex_lock(&sysfs_mutex); + if (!inode) { + ret = ERR_PTR(-ENOMEM); + goto out_unlock; + } if (inode->i_state & I_NEW) { /* initialize inode according to type */ @@ -815,9 +818,9 @@ static struct dentry * sysfs_lookup(struct inode *dir, struct dentry *dentry, sysfs_instantiate(dentry, inode); sysfs_attach_dentry(sd, dentry); + out_unlock: mutex_unlock(&sysfs_mutex); - - return NULL; + return ret; } const struct inode_operations sysfs_dir_inode_operations = { @@ -942,6 +945,8 @@ int sysfs_rename_dir(struct kobject *kobj, struct sysfs_dirent *new_parent_sd, if (error) goto out_drop; + mutex_lock(&sysfs_mutex); + dup_name = sd->s_name; sd->s_name = new_name; @@ -949,8 +954,6 @@ int sysfs_rename_dir(struct kobject *kobj, struct sysfs_dirent *new_parent_sd, d_add(new_dentry, NULL); d_move(sd->s_dentry, new_dentry); - mutex_lock(&sysfs_mutex); - sysfs_unlink_sibling(sd); sysfs_get(new_parent_sd); sysfs_put(sd->s_parent); diff --git a/kernel/module.c b/kernel/module.c index 33c04ad511750bc693410d9866b98dcfa6c2cb3d..db0ead0363e2504be6760e73cbef5a2b981a8565 100644 --- a/kernel/module.c +++ b/kernel/module.c @@ -784,8 +784,7 @@ EXPORT_SYMBOL_GPL(symbol_put_addr); static ssize_t show_refcnt(struct module_attribute *mattr, struct module *mod, char *buffer) { - /* sysfs holds a reference */ - return sprintf(buffer, "%u\n", module_refcount(mod)-1); + return sprintf(buffer, "%u\n", module_refcount(mod)); } static struct module_attribute refcnt = {