From Power Up To Bash Prompt Greg O'Keefe, gcokeefe@postoffice.utas.edu.au v0.9, November 2000 ú{êó çUTi v0.9j November 2000 ±Ì¶ÍAd¹ðüêÄ©çOCµA bash vvgª\¦³êéÜ ÅÉ Linux VXe㎪N±ÁÄ¢éÌ©ðÈÉðൽàÌÅ éB±Ì¶ððµÄ¨¯ÎAâèÌðâVXeÌÝèªKvÉÈÁ½ Æ«Éðɧ¾ë¤B ______________________________________________________________________ Ú 1. Introduction 2. n[hEFA 2.1 Ýè 2.2 K 2.3 Ql¶£ 3. Lilo 3.1 Ýè 3.2 K 3.3 Ql¶£ 4. Linux J[l 4.1 Ýè 4.2 K 4.3 Ql¶£ 5. GNU C Cu 5.1 Ýè 5.2 K 5.3 Ql¶£ 6. Init 6.1 Ýè 6.2 K 6.3 Ql¶£ 7. t@CVXe 7.1 Ýè 7.2 K 7.3 Ql¶£ 8. J[lf[ 8.1 Ýè 8.2 K 8.3 Ql¶£ 9. VXeÌOL^ 9.1 Ýè 9.2 K 9.3 Ql¶£ 10. Getty Æ login 10.1 Ýè 10.2 K 11. Bash 11.1 Ýè 11.2 K 11.3 Ql¶£ 12. R}h 13. _ 14. Administrivia 14.1 Copyright 14.2 z[y[W 14.3 tB[hobN 14.4 Acknowledgements 14.5 üùð 14.5.1 0.8 -> 0.9 (November 2000) 14.5.2 0.7 -> 0.8 (September 2000) 14.5.3 0.6 -> 0.7 14.5.4 0.5 -> 0.6 14.6 TODO 14.7 ú{êóÉ墀 ______________________________________________________________________ 1. Introduction 檩çÈ¢½Ì±Æª©ªÌ Linux }VÅN«Ä¢éÆv¤ÆAí ½µÍàÇ©µÄdûªÈ¢BàµAí½µÆ¯¶æ¤ÉAPÉg¢ûªª ©éÆ¢¤¾¯ÅÈA{ÉVXeððµ½¢Æv¤ÈçA±Ì¶Í »Ìo_ÆÈé¾ë¤BLinux ɨ¯éâèðÌ ÐðÚwµÄ¢éƵ ÄàA±ÌíÌîbm¯ÍKvÅ éB Linux ÌÒ·é}VðÁÄ¢é±ÆÆAUnix ¨æÑ PC n[hEFA Ìî{ððµÄ¢é±ÆªOñÉÈéBൻ¤ÅÈ¢êA»êçðwÔ ½ßÌüåƵÄAEric Raymond Ì̶£ªDêÄ¢éB The Unix and Internet Fundamentals HOWTO <http://www.linuxdoc.org/HOWTO/Unix-and-Internet-Fundamentals- HOWTO.html> (ú{êó <http://www.linux.or.jp/JF/JFdocs/Unix-and- Internet-Fundamentals-HOWTO/index.html>). ±êÍAÈÅÇÝÕAî {ªÔ ³êÄ¢éB ±Ì¶ÌåèÍALinux ÌN®ÌdgÝÅ éBµ©µA޵목èÕ¢ wKÌèø«ÉàÈéæ¤Ó}³êÄ¢éBeÍÉKðÝ¯Ä éÌÅAÀ Ûɢ©ðÀs·éÈçAÇñ¾¾¯Ìæèà¢Á»¤½Ì±Æðw ×é¾ë¤B í½µÌméÀèALinux ðwÔÅÇÌKÍA\[XR[h©çÌVXe ð\z·é±ÆÅ éBí½µÍA»êɧí·éÇÒª¢é±ÆðúÒµÄ ¢éBC^AÌNwÒ Giambattista Vico (1688-1744) ÍA"verum ipsum factum" ƾÁÄ¢éB±ÌÓ¡ÍAuðÍAìé±Æ©ç¶ÜêévÆ¢ ¤±ÆÅ éB±Ì¾tð³¦Äê½ Alex (``Acknowledgements''ðQ Æ)ɴӵĢéB \[X©çVXeð\zµ½¢ÈçAGerard Beekmans ̶Linux From Scratch HOWTO <http://www.linuxfromscratch.org> (LFS) à©é׫¾ë ¤BLFS Í\[XR[h©ç{ÉÀpIÈVXeðÂé½ßÌÚ×Èè øÅ éBLFS ÌEFuTCgÉÍA»¤µ½û@ÅVXeð\zµæ¤ Æ·élü¯Ì[OXgà éB±êÜű̶ÌêÅ Á½È PÈ\zû@ÌÐîÍA»Ý "Building a Minimal Linux System from Source Code (ú{êó <http://www.linux.or.jp/JF/JFdocs/Building- Minimal-Linux.html>)" Æ¢¤Ê̶ÆÈÁÄ¢ÄA From PowerUp to Bash Prompt home page <http://www.netspace.net.au/~gok/power2bash> Å üèÂ\ÆÈÁÄ¢éB»Ì¶Åq×Ä¢éÌÍAÈûKÛèÆµÄ u¨à¿á(toy)vÌVXeðìéû@Å éB(ó: LFS Í|óɨ¢ ÄAú{êóìƪisÅ·) oê·épbP[WÍAVXeªN®·éßöÅ»êéÔÉÀñÅ¢éB ÂÜèA»ÌÅCXg[·êÎACXg[·é½ÑÉÄN®Å« ÄAµ©àVXeªñµ¸Â bash vvgÌ\¦ÉßÃ¢Ä¢Ì ªª©éí¯Å éB»êÉæÁÄA ÀÉiàµÄ¢é±ÆªÀ´Å«éB ÅÍAKÆQl¶£ðÆεÄAeÍÌ{¶¾¯ÇÞ±Æð¨Eß· éB»µÄAÇ꾯ðð[ß½¢©AÇÌç¢wÍ·éÂàè©ÍÁ« èßÄAà¤êxßÉàÇèAKÆQl¶£É ½ÁÄÝÄÙµ¢B 2. n[hEFA ܸARs [^Ìd¹ðüêéÆARs [^Í·×ĪÒÅ«éó ÔÉ é©ð©Èff·éB±êÍAp[IZteXg(Power on self test)ÆÄÎêéBÉ ROM BIOS Éu©ê½u[gXgbv[ _(bootstrap loader)Æ¢¤vOªAu[gZN^ðT·Bu[gZN ^ÆÍfBXNÌæªÌZN^ÅAIy[eBOVXeð(É) [h·é@\ðÁ½¬³ÈvOªæÁÄ¢éBu[gZN^Ì 0x1FE(=510) oCgÚÉÍ 0xAA55(=43605) Ì}WbNio[(ó:t@C `®ð»f·é½ßÌio[)ª}[N³êÄ¢éB}[N³ê½ÊuÍ ZN^Ìö 2 oCgɽéB±Ì}[NÌL³ÅA»ÌZN^ªu[g ZN^Å é©Ç¤©ðn[hEFA¤Å¯ÊÅ«éí¯Å éB u[gXgbv[_ÉÍAu[gZN^ðT·×«êÌXgªûßç êÄ¢éBí½µÌâ}VÍAvC}tbs[hCuðTµ½ ÆAvC}n[hhCuðT·BàÁÆVµ¢}VÅÍ CD-ROM Ìu [gZN^ðT·±ÆàÅ«éBu[gZN^ª©Â©êÎA»±É év OðÉ[hµ»êɧäðC¹éB»µÄ»ÌvOªAI y[eBOVXeð[h·éBT^IÈ Linux VXeÅÍA»Ì vOÆÍ lilo ÌæêXe[WÌu[g[_̱ÆÉÈé¾ë¤Bµ ©µVXeN®Ì½ßÌÝèû@ͽí½lÅ é©çAÚ×É墀 ÍALILO User's Guide (ú{êó <http://www.linux.or.jp/JF/JFdocs/LILO-README/index.html>)ð©ÄÙµ ¢BURL É¢ÄͺLðQÆ̱ÆB``LILO'' PC Ìn[hEFAÌ®ìÉ¢Äêé׫±ÆÍm©Éܾܾ é̾ ªA±±Í»êðq×é׫êÅÍÈ¢BPC Ìn[hEFAÉÖµÄÍÇ ª»ëÁÄ¢é©ç»ÌÐÆÂðÇñÅÙµ¢B 2.1. Ýè }VÍ éíÌ©Èîñð CMOS àÉ۵ĢéB»ÌÉÍAǤ¢¤ fBXNâ RAM ªVXeɶݷéÌ©Æ¢¤îñàÜÜêéB}VÌ BIOS É évOðg¦Î»¤µ½îñÌÝèÏXªÅ«éBd¹ðü ê½Æ«XN[É\¦³êébZ[WÉÓ·êÎAǤâÁÄ»Ìv OÉANZX·é©ª©é¾ë¤Bí½µÌ}VÅÍAIy[eB OVXeª[h³êéOÉ delete L[ð·æ¤ÉÈÁÄ¢éB 2.2. K ÃiðgÁÄ}VðgݧÄé±ÆÍAPC n[hEFAðméãÅÇ ¢û@Å éBÅáÅà 386 CPU ðèÉüêæ¤B»¤·êÎAÈPÉ Linux ðç¹é±ÆªÅ«éB»êÙÇïpÍ©©çÈ¢¾ë¤BüÍÌF lÉqËÄÝêÎAKvÈp[cð÷ÁÄêé©àµêÈ¢B unios <http://www.netspace.net.au/~gok/resources>ð_E[hµAR pCµÄu[gfBXNðìé±ÆB(±êÜÅͺLÉz[y[Wª Á½Ì¾ªAÁ¦ÄµÜÁ½B <http://www.unios.org>) ±êÍAu[g@\ðÁ½ÈPÈ (Hello World) vOÅ èA100 s¿åÁÆÌAZuR[hÅÅ«Ä¢éBGNU ÌAZuÅ é as Å ðÅ«étH[}bgÉÏ·³êÄ¢éÌÅA©ÄÝéÆæ¢B hex editor ðgÁÄ unios Ìu[gfBXNC[WðJ±ÆB±ÌC [WÍ 512 oCg èA¿å¤Ç 1 ZN^ªÅ éB}WbNio[ 0xAA55 ðT·±ÆBN®ptbs[fBXNâRs [^É éu[g ZN^Å௶±ÆðµÄÙµ¢Bdd R}hðg¦ÎA»êðt@CÉ Rs[Å«éBdd if=/dev/fd0 of=boot.sector if(input file) Æ of(output file) ÆðtɵȢæ¤ÉÁÉÓ·é± ÆI LILO Ìu[g[_ÌR[hà`FbN·é±ÆB 2.3. Ql¶£ o The Unix and Internet Fundamentals HOWTO <http://www.linuxdoc.org/HOWTO/Unix-and-Internet-Fundamentals- HOWTO/index.html> by Eric S. Raymond, ÁÉæOÍÌuRs [^Ì d¹ðüê½É½ªN±éÌ©?vªæ¢B (ú{êó <http://www.linux.or.jp/JF/JFdocs/Unix-and-Internet-Fundamentals- HOWTO/bootup.html>) o The LILO User's Guide (ú{êó <http://www.linux.or.jp/JF/JFdocs/LILO-README/index.html>)ÌæêÍ ÉÍAPC ÌfBXNp[eBVÆN®ÉÖ·éDê½ðઠéBURL É¢ÄÍA``LILO'' ÌÍðQÆ·é±ÆB o The NEW Peter Norton Programmer's Guide to the IBM PC & PS/2, by Peter Norton and Richard Wilton, Microsoft Press 1988 Vµ¢ Norton {Å éBÈ©È©¢¢æ¤¾ªA¡ÍèªoÈ¢B o PC ÌAbvO[hÉÖ·é½Ì{ÌÈ©ÌêûB 3. Lilo êÊIÈ Linux VXeãÅRs [^ªu[gZN^ð[h·éÆ «AÀÛÉ[hµÄ¢éÌÍ lilo ÌêÅ éB»êÍuæêXe[Wu [g[_(first stage boot loader)vÆÄÎê鬳ÈvOÅA» êÉèÄçê½BêÌdÍuæñXe[Wu[g[_ (second stage boot loader)vð[hµÄÀs·é±ÆÅ éB æñXe[W(u[g)[_ÍA(CXg[³ê½û@Éàæé̾ª)v vgð\¦µA»±ÅIð³ê½Iy[eBOVXeð[h· éB VXeª§¿ãªÁ½ãÅ lilo ÆÅÁ½êAÀÛÉÀs³êéÌÍA u}bvCXg[[(map installer)vÅ éB±ÌvOªÝè t@CÅ é /etc/lilo.conf ðÇÝñÅAn[hfBXNÉu[g[ _ð«ÝA¯É[hÅ«éIy[eBOVXeÉÖ·éîñà «ÞB VXeðN®³¹éû@ÉÍlXÈíÞª éB¢Üྵ½û@ÍAÈ Æà Linux ðCÆ·éVXeɨ¢ÄÍAàÁÆ઩èÕ¢Ê Ìû@Å éB "The Lilo Users's Guide" ÉÍAu[gÌTOÉÂ¢Ä½Ê è©Ìáªà¾³êÄ¢éBêÇÉl·é¾¯ÅÈA»Ì¢Â©ÍâÁÄ Ýé¿lª éB 3.1. Ýè lilo ÌÝèt@CÍ /etc/lilo.conf Å éB}j AÌy[Wª é ÌÅAman lilo.conf Æ^CvµAÇñÅÝé±ÆB lilo.conf t@CÅ dvÈÌÍAlilo ðgÁÄN®·éÎÛ²ÆÉÂÊÌGg[(entry)ª éÆ¢¤±ÆÅ éBLinux ÌGg[ÈçÎAJ[lªÇ±É é©A [gt@CVXeƵÄÇÌfBXNp[eBVð}Eg·é© Æ¢¤ÚªÜÜêéB¼ÌIy[eBOVXeÈçAÇÌp[eB V©çN®·é©ªdvÈîñÉÈéB 3.2. K uë¯v ±ÌKÍÓµÄs¤±ÆB½©ª¨©µÈÁÄA}X^[u [gR[hð䳵ɵĵܢAVXeªg¦ÈÈ騻êª[ªÉ éBâèÈì®·éXL [fBXNª é©A»êðgÁÄ·é û@ðmÁÄ¢éÌ©ðmFµÄÙµ¢Btomsrtbt ÖÌNªºLÉ éB±êÍAí½µàgÁÄ¢éXL [fBXNÅAÇÒÉ਩ߵ½ ¢BÅàTdÈû@ÍAóêÄà©ÜíÈ¢}Vðg¤±ÆÅ éB tbs[fBXNãÉ lilo ðZbgAbv·é±ÆB»êÉÍAJ[l ÈO½àæÁÄ¢ÈÄæ¢B½¾»ÌêAJ[lª init ð[h·é Ô¨ÉüÁ½Æ«A"kernel panic" Æ\¦³êéBµ©µAÈÆà lilo ªì®µÄ¢é±Æͪ©éB Å«éÈçA³çÉiñÅAtbs[ÅDZÜÅVXeð\zÅ«é© µÄÝé±ÆB±êͨ»ç Linux ð¢ë¢ëwÔ¤¦ÅÅÇÆ;¦È ¢ÜÅàñíÉDê½û@¾ë¤BBootdisk HOWTO (ºLÌ URL ðQÆ)ð© ÄÙµ¢BܽA tomsrtbt (ºLÌ URL) à誩èÉÈé¾ë¤B lilo ðgÁÄ unios ðN®³¹é±ÆB(``n[hEFA K'' ÌÍÉ URL ª é) ³çÈé`WƵÄtbs[ãÅ»êªÅ«é©âÁÄ ÝéÆæ¢B u[gvZXð[v³¹é±ÆB}X^[u[gR[hãÌ lilo ð gÁÄAÇê©ÐÆÂÌvC}[p[eBVÌu[gZN^ãÉ é à¤ÐÆÂÌ lilo ðN®³¹éB»µÄA»Ì lilo É}X^[u[gR [hÌ lilo ðN®³¹éæ¤É·éB é¢ÍA}X^[u[gR[hÆ 4  éSÄÌvC}p[eBVðgÁÄA5 _[vðìÁÄÝ éB¨àµë¢I 3.3. Ql¶£ o lilo Ì}j Ay[W(man lilo) o lilo ÌpbP[W (lilo <ftp://lrcftp.epfl.ch/pub/linux/local/lilo/>) ÉÍA"LILO User's Guide" (ú{êó <http://www.linux.or.jp/JF/JFdocs/LILO-README/index.html>)ªÜÜê Ä¢éB±Ì¶Íà¤ÁÄ¢é©àµêÈ¢B/usr/doc/lilo ½è ðT·±ÆBeLXgÅæèà|XgXNvgÅÌÙ¤ª}\ªt¢Ä ¢éÌÅæ¢B (»ÌhL gÉÍAlilo-u-21.ps.gz ©A»êÈã Ìo[W¼ªÂ¢Ä¢éB) o tomsrtbt <http://www.toms.net/rb> ÅàN[ÈVOtbs[Ì Linux Å éB·Îçµ¢XL [fBXNÉÈéB o The Bootdisk HOWTO <http://www.linuxdoc.org/HOWTO/Bootdisk-HOWTO/>(ú{ê ó <http://www.linux.or.jp/JF/JFdocs/Bootdisk-HOWTO.html>)B(ó: LILO Ì®ìÉ墀 <http://www.linux.or.jp/JF/JFdocs/inside- lilo.html> ಾ³¢B) 4. Linux J[l J[lÍÀÛñíɽÌdðµÄ¢éB»êçÌdÌàeðImÉv ñ·éÈçAvO©çÌvðK³©Âø¦IÉn[hEFAÉÀs³ ¹é±Æ¾ÆvíêéB vZbTÍêxÉÐÆÂ̽ߵ©ÀsÅ«È¢Bµ©µALinux VXe ͯɽÌìÆð±ÈµÄ¢éæ¤É©¦éBJ[lÍA^XN©ç^ XNÖÆuÌØèÖ¦(switch)ð·é±ÆűêðÀ»µÄ¢éÌÅ éB ܽJ[lÍAÇÌvZXªÀsÂ\ÅAÇÌvZXªn[hfBXN ãÌt@CR[hâL[{[h©çÌCvbgÈÇðÒÁÄ¢éÌ©ð íÉÄ·é±ÆÅAvZbT¹ðÅåÀÉpµÄ¢éB vOªÈÉàµÄ¢È¯êÎARAM ãÉ éKvÍÈ¢BÈÉ©µÄ¢ ½ÆµÄàA»ÌvOÌàÉÍAÈÉàµÄ¢È¢ªª é©àµ êÈ¢BvZX²ÆÌAhXóÔÍAy[W(Æ¢¤PÊ)ɪ³êÄ¢ éBJ[lÍAÇÌvZXÌÇÌy[WªÅàgíêÄ¢é©ðâ¦¸Ä µÄ¢éBÙÆñÇgíêĢȢy[WÍAXbvp[eBVÖÆ §¿Þ©¹é±ÆªÅ«éBÄx»êªKvÈÆ«ÍAgíêĢȢÊÌy [Wðy[WAEg³¹ÄAóÔðmÛ·é±ÆªÂ\Å éB±êð¼zL ¯ìÆ¢¤B J[lðRpCµ½±Æª éÈçAïÌIÈfoCXÉÖ·éIv VªåÊÉ é±ÆÉCt¢½¾ë¤BJ[lÉÍA½í½lÈn[h EFAÆÎb·é½ßÉåÊÌïÌIÈR[hªÜÜêÄ¢éB»µÄAv P[VvOÉεÄÍA®RÆê³ê½û@ÅA»êç(ÖÌA NZXèi)ðñ·éB J[lͯÉAt@CVXeAvZXÔÊMA½Ìlbg[N vOÈÇàǵĢéB ¢Á½ñ[h³ê½çAJ[lªs¤ÅÌdÍAinit vOÌ TmÆ»ÌÀsÅ éB 4.1. Ýè J[l\[XÌ éêAá¦Î /usr/src/linux ɨ¢ÄA make menuconfig © make xconfig ðg¢J[lðrh·êÎAÝèÌåª ÍI¹·éBrfI[hâ[gt@CVXeAXbvfoCXAÜ ½ rdev ðg¦Î RAM ÌTCYÉ¢ÄàAftHgÌÝèðÏX·é± ÆÍÂ\Å éB±êçÌp[^ÍAlilo ©çJ[lÉn·±Æà Å«éB lilo.conf t@CÉ©Alilo vvg©çüÍ·êÎAJ [lÉn·×«îñð lilo Éæ誹é±ÆªÅ«éBá¦ÎAhda2 ÌãíèÉ hda3 ð[gt@CVXeƵ½¢ÌÅ êÎAȺÌæ¤ É^Cv·êÎæ¢B LILO: linux root=/dev/hda3 \[XR[h©çVXeð\zµÄ¢éêAmVbN(monolithic)È J[lðìêÎìÆðP»Å«éB±êÍAW [ð½È¢J[l ̱ÆÅ éB»¤·êÎ\zÌVXeÉJ[lW [ðRs[ ·éKvªÈÈéB ´: System.map t@CÍAJ[lÌOL^vO (kernel logger)ªÇÌW [¼ðgÁÄbZ[Wðo·©è·éÛÉgp³ êéBtop Æ¢¤vOà±Ìt@CÌîñðg¤BJ[lðÚIÌ VXeÉRs[·éÆ«ÍASystem.map àêÉRs[·é±ÆB 4.2. K Ⱥ̱ÆÉ¢Äl¦é±Æ: /dev/hda3 ÍAn[hfBXNÌp[eB Vð\·ÁÊÈíÞÌt@CÅ éBµ©µA»êͼÌÊÌt@C ÆS¯¶æ¤Ét@CVXeãɶݷéBJ[lÍAܾt@C VXeð½È¢iKÅAÇÌp[eCVð[gt@CVXe ƵÄ}Eg·é©méKvª éBÅÍAJ[lÍAǤ¢¤û@Å} Eg·×«p[eBVðË«~ßÄA /dev/hda3 ðÇÝÞÌ©H àµÜ¾J[l\z𵽱ƪȢÈçA©ªÌJ[lðrh·é± ÆBÂXÌIvVÉ¢ÄÌwvîñÉÍSÄÚðÊ·±ÆB ÁÙǬ³ÈJ[lðìÁÄà®ì·é±ÆðmF·é±ÆBÔáÁ½v ¢±ÝðÌÄé±ÆÅA½ðw×éB "The Linux Kernel" (URL ÍȺ)ðÇÞ±ÆBÇÝȪ绱ÅÐî³êÄ ¢é\[XR[hÌêðÀÛɩ¯é±ÆB(±Ì¶Ì·Mɨ¢ Ä)»±ÅÍAo[W 2.0.33 ÌJ[lªæèã°çêÄ¢éªA»Ì o[WÍऩÈèãxêÉÈÁÄ¢éB»Ìo[WÌJ[l \[Xð_E[hµÄ©çAR[hÉÚðʵ½Ù¤ªAÇÝâ·¢¾ë ¤B"process" â "page" ÆÄÎêé C ÌR[hQð©·éÌÍÊ¢± ƾÆv¤B nbN¹æI J[lbZ[Wɽ©ðÇÁµÄA»êðoÍÅ«é©Ç ¤©mF·é±ÆB 4.3. Ql¶£ o /usr/src/linux/README Æ /usr/src/linux/Documentation/ ÌÉ é¶ (VXeÉæÁÄÍAá¤êÉ é©àµêÈ¢) o The Kernel HOWTO <http://linuxdoc.org/HOWTO/Kernel-HOWTO.html> (ú {êó <http://www.linux.or.jp/JF/JFdocs/Kernel-HOWTO.html>) o make menuconfig â make xconfig ðgÁÄJ[lÝèð·éÌw vîñ o The Linux Kernel <http://www.linuxdoc.org/LDP/tlk/tlk.html> (ú{ êó <http://www.linux.or.jp/JF/JFdocs/The-Linux-Kernel.html>) ¨æ Ñ»Ì¼Ì LDP ¶ <http://www.linuxdoc.org/>B o \[XR[hÉ¢ÄÍABuilding a Minimal Linux System from Source Code <http://www.netspace.net.au/~gok/power2bash> (ú{êó <http://www.linux.or.jp/JF/JFdocs/Building-Minimal-Linux.html>) Ì URL ÌÚð©é±ÆB 5. GNU C Cu Rs [^ÌN®É¨¢ÄÉN±éoÍAinit vZXª[h³ êÀs³êéÆ¢¤±ÆÅ éBµ©µAinit ÍA¼ÌÙÆñÇÌvO ƯlÉCuÌÖðpµÄ¢éB ȺÌæ¤È C vOÌáèðݽ±Æª é©àµêÈ¢B main() { printf("Hello World!\n"); } ±ÌvOÅÍAprintf ªè`³êĢȢªA»Ìè`ÍDZ©ç éÌ©H»êÍW C Cu©çA·Èí¿ GNU/Linux VXeãÅ êÎ glibc ©çéBൠVisual C++ ÅRpCµ½ÈçA¯¶WÖ ðÁ½ Microsoft ÌÀ©çéB±Ìæ¤ÈWÖÍAvZA¶ ñAútAAP[VÈÇlXÈÌæÅA³É¶ÝµÄ¢ éBLinux ðÜÞ Unix ÌSÄÍAC ¾êÅ©ê½àÌÆAÈñÆ©µÄ C Å©ê½æ¤É©¹©¯æ¤Æ·éàÌÌ¢¸ê©ÅoÄ¢éÌÅA·× Ī»¤µ½Öðgp·éB Linux VXeÌ /lib ð©êÎAlibxxx.so â libxxx.a Æ¢Á½t@C ª½³ñ é̪ª©é¾ë¤B»êçÍA±¤µ½ÖÌCuÅ éBglibc ÍA±¤µ½ÖÉ¢ÄÌ GNU ÌÀÅ éB CuÖðg¤û@ÉÍñíÞ éBÃI(statically) ÉvO ÉN·êÎA»¤µ½ÖÍÅ« ªÁ½Àst@CÉRs[³êÄA gÝÜêéB®I(dynamically) ÉvOÉN·êÎ(±êªÊ Å éª)AvOªÀs³êÄ»ÌCuR[hªKvÉÈÁ½Æ «ÉAlibxxx.so ©çÄÑo³êéB ÁèÌvOÉÇÌCuªKvÈÌ©²×½¢Æ«ÍAldd R} hªðɧÂB½Æ¦ÎAÈºÍ bash ªg¤CuÅ éB [greg@Curry power2bash]$ ldd /bin/bash libtermcap.so.2 => /lib/libtermcap.so.2 (0x40019000) libc.so.6 => /lib/libc.so.6 (0x4001d000) /lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x40000000) 5.1. Ýè CuÉ éÖ̢©ÍA ȽªÇ±ÉZñÅ¢é©É˶µÄ ¢éB½Æ¦ÎAI[XgAÈçAútÍ ú//NÆ\L·éªAA JÅÍA/ú/NÆ\L·éBglibc ªzz³êéÆ«ÉÍ localedef Æ ÄÎêévOªt®µA»êÉæÁı¤µ½±ÆÌÝèªÅ«éæ¤ ÉÈÁÄ¢éB 5.2. K ȽÌD«ÈvOªÇñÈCuðgÁÄ¢éÌ©ð ldd Ų ×ÄÝé±ÆB init ªÇñÈCuðg¤Ì©Aldd Ų×é±ÆB ÐÆ©ӽ¾¯ÌÖªüÁ½¨à¿áÌCuðìé±ÆB»êð ìéÉÍAar Æ¢¤vOðg¤Bar Ì man y[WÍAìèûð²× éo_ÉÈéB»µÄA»ÌCuðg¤vOð¢ÄARp CµÄAN·é±ÆB 5.3. Ql¶£ o \[XR[hÉ¢ÄÍABuilding a Minimal Linux System from Source Code <http://www.netspace.net.au/~gok/power2bash> (ú{êó <http://www.linux.or.jp/JF/JFdocs/Building-Minimal-Linux.html>) Å URL ðmF·é±ÆB 6. Init ±±ÅÍAåªÌ Linux VXeÅgp³êÄ¢é "System V" X^C Ì init É¢ľ¯b·Bá¤X^Cà¶Ý·éBÀÛAD«ÈvO ð /sbin/init ƵÄu¢Ä¨¯ÎAJ[lÍ[hªIíÁ½É»ê ðÀs·éB SÄÌvOðImÉç¹é̪ init ÌdÅ éBt@CVXe ÉâèªÈ¢©mFµA»êð}Eg·éBf[(daemons)vZX ðN®·é±ÆÅAVXebZ[WðOÉL^µAlbg[NðÄ µAEFuy[WðñµA}EX©çÌMðó¯æÁ½è·éBܽA¼ z[ãÉOCvvgðoÍ·é getty vZXÌN®às¤B Àsx(run-level)ÌÏXÉ¢ÄÍñíÉ¡GÈÍȵª éªAå ªÍòεÄAVXeÌN®É¢ľ¯à¾µæ¤Æv¤B init ÍA/etc/inittab Æ¢¤t@CðÇÝÞB±Ìt@Cª init É dÌàeð`¦éBêÊIÉÍA`¦çêéÅÌdÍú»XNvg ðç¹é±ÆÅ éB±ÌXNvgðÀs·é( é¢Íðß·é)vO ªAbash Å èA±êÍAR}hvvgðoÍ·évOÆ ¯êÌà̾BDebian ÌVXeÅÍAú»XNvgÍ /etc/init.d/rcS Å èARed Hat ÅÍ /etc/rc.d/rc.sysinit Å éB±Ì ßöÅAt@CVXeÌØÆ}EgAúÌÝèAXbvXy[X ÌÒAzXg¼ÌÝèÈǪsíêéB Éà¤ÐÆÂÌXNvgªÄÑo³êÄAftHgÌÀsxÉVX eðÚs³¹éB±êÍêAÌTuVXeªN®³êéÆ¢¤Ó¡Å éB±êÉÖµÄÍAfBNgÌZbgª¶Ý·éBá¦Î Red HatÅ ÍA /etc/rc.d/rc0.d, /etc/rc.d/rc1.d, ..., /etc/rc.d/rc6.d Æ¢Á½à ̪ èADebian ÅÍA /etc/rc0.d, /etc/rc1.d, ..., /etc/rc6.d ÆÈÁ Ä¢éB±êçÌfBNgÍAÀsxÉεĢÄADebian ÌV XeÅÀsx 3 ÉÚsµæ¤Æ·éÈçA»ÌXNvgÍ /etc/rc3.d É é 'S'(start ̱Æ) ÅnÜéSÄÌXNvgQðÀs· éBÀÛÉÍA±êçÌXNvgQÍAÊí init.d ÆÄÎêéÊÌfB NgÉ éXNvgÖÌPÈéNÅ éB ±êçÌÀsxÉÖ·éXNvgÍAinit ©çÄÑo³êAfBN gàÉ éª¶ª S ÌXNvgðT·B(á¦Î)Åɩ¯½Ì ªAS10syslog Å éƵæ¤Bt¯çê½ÍÀsxXNvgÉÇ ¤¢¤ÔÅÀsµÄ¢©ð`¦éB±ÌP[XÅÍAS00 ... S09 ÅnÜ éXNvgªÈ¢ÌÅAS10syslog ªÅÉÀs³êéB½¾A S10syslog ÍÀÛÉÍ /etc/init.d/syslog ÖÌNÉ·¬¸AVXeÌOL^v O(system logger)ðJnµ½èâ~µ½èµÄ¢éÌÍãÒÌXN vgÅ éBN(¼)ª S ÅnÜéÌÅAÀsxXNvgÍ syslog XNvgð 'start' Ìp[^ðt¯ÄÀs·×«±ÆðméB»êÉ Î·é 'K'(kill ̱Æ)ÅnÜéNà¶ÝµA»êÉæÁÄÀsx ÌÏXɽðǤ¢¤ÔÅI¹³¹é©ªwè³êéB ftHgÅN®·éTuVXeðÏX·éÉÍArcN.d fBNgÉ é»¤µ½NðÝèµ¼³È¯êÎÈçÈ¢B±±Å N ÆÍA inittab ÅÝèµ½Àsx̱ÆÅ éB init ªÅãÉs¤dvÈdÍAgetty ð¢Â©N®·é±ÆÅ éBÞ çÍA"½xÅණÔé(respawned)" ÝèÉÈÁÄ¢éBÂÜèAàµ~ ÜÁÄà init ªÜ½»êçðÄN®³¹éÌÅ éBåªÌfBXg r [VÍ 6 Â̼z[ðpÓ·éBðßñ·é½ßÉ»Ì ðȵ½¢©àµêÈ¢µA½³ñç¹Ä¨¢ÄKvÈÆ«É·Îâ g¤½ßA»Ìðâµ½¢©àµêÈ¢BܽA¶[©fÅÌ ÊMpÉ getty ðÐƾ¯Àsµ½¢Ì©àµêÈ¢B»¤µ½êÍA inittab t@CðÒW·éKvª¶¶éB 6.1. Ýè /etc/inittab ÍAinit ÌgbvxÌÝèt@CÅ éB rcN.d fBNgɨ¢ÄAN ÉÍ 1 ©ç 6 ÜÅ̪üéªA»êç ÌfBNg(Ìàe)ªAN®³êéTuVXeðßÄ¢éB init ©çÄÑo³êé éXNvgÌàÅAmount -a R}hªÀs³ êéB±êÍA}Eg³êéæ¤èßçê½SÄÌt@CVXeð}E g·é±ÆðÓ¡·éB½ª}Eg³êé׫©ÍA/etc/fstab t@C ÅèßçêÄ¢éBVXeN®ÉÈÉðDZÉ}Eg·é©ðÏXµ ½¢ÈçAÒW·×«t@CͱêÅ éBfstab Ì man y[Wª éÌ ÅÝÄÙµ¢B 6.2. K VXeÌftHgÀsxÉ·é rcN.d fBNgð©Â¯ ÄA»±Å ls -l ÆűÆÅt@CªÇ±ÉN³êÄ¢é©ðð ·é±ÆB VXeãÅÀsµÄ¢é getty ÌðÏX·é±ÆB svÈTuVXeðftHgÀsx©çæè±ÆB ÙÆñÇÈÉàÈ¢óÔ©çÅàX^[gÅ«é±ÆðmF·é±ÆB tbs[fBXNãÉAlilo ÆJ[lð\zµA³çÉÃIÉN³ 꽨à¿áÌvO("hello world program")ðu¢ÄA»êª /sbin/init ©çÄÑo³êéæ¤ÉÝèµÄ¨±ÆB»ÌfBXNªN® µÄAvOÌÀsʪ\¦³êéÌðmF·é±ÆB VXeªN®·éÆ«ÌæÊðÓ[Ï@µAN«Ä¢é¿É墀 ðÆé±ÆB é¢ÍA/var/log/messages É éVXeOÌN®© ç̪ðvg·é±ÆBÉAinittab t@Cðo_ɵķ×Ä ÌXNvgÉÚðʵAÇÌR[hª½ðµÄ¢é©ð·é±ÆBܽA ȺÌæ¤É«ÞÆAoé͸ÌÈ¢X^[gAbvbZ[Wðt¯Á ¦é±ÆªÅ«éB echo "Hello, I am rc.sysinit" ±êÍ bash ðgÁ½VFXNvgÌæ¢ûKÉàÈéBXNvgÌ¢ ©ÍñíÉ¡GÅ éBÇÅ«½nfBÈ bash Ìt@Xub Nðè³Éu¢Ä¨±¤B 6.3. Ql¶£ o inittab Æ fstab t@CÉÍ}j Ay[Wª éBVFæÊÅ man inittab Æ^CvµÄA»êð©é±ÆB o "The Linux System Administrators Guide" Ì init ÉÖ·éÍÍæ ©êÄ¢éB±± <http://www.linuxdoc.org/LDP/sag/index.html>ÅÇß éB o \[XR[hÉ¢ÄÍABuilding Minimal Linux System from Source Code <http://www.netspace.net.au/~gok/power2bash> (ú{êó <http://www.linux.or.jp/JF/JFdocs/Building-Minimal-Linux.html>)Å URL ðmF·é±ÆB o (ó)JF ¶É uRg©çÇÞ Linux J[lv <http://www.linux.or.jp/JF/JFdocs/readkernel.html>ª èÜ·BLinux ÌN®ÉÖµAÚ×Éðà³êĢܷB 7. t@CVXe ±ÌÍÅÍAut@CVXevÆ¢¤¾tðÓ½ÂÌáÁ½Ó¡Ågp· éBfBXNp[eBVâ»Ì¼ÌfoCXãÌt@CVXeªÐÆ ÂA Linux VXeðç¹é±ÆÅñ¦³êét@CVXeªÐÆ ŠéB Linux ÅÍAfBXNÌt@CVXeðVXeÌt@CV XeãÉ}Eg(mount)µÄ¢éB OÍÅÍAinit XNvgªt@CVXeð`FbNµÄ}Eg·é Æq×½B±êðÀs·éR}hÍA»ê¼ê fsck Æ mount Å éB n[hfBXNÍ 1 Æ 0 ð«ßéåÈóÔÉ·¬È¢Bt@CVX eª»êÉ©½¿(structure)ð^¦AfBNg\¢ðàÁ½t@C QÉ©¦éæ¤ÉµÄ¢éBÂXÌt@CÍAi-node ÉæÁÄ\í³ê éBi-node ÍANÌt@C©A¢Âìçê½Ì©At@CÌgÍDZ É éÌ©Æ¢Á½îñð`¦éBfBNgà i-node Å\»³êÄ¢é ªA»Ì i-node ÍAYfBNgÉ ét@CÌ i-node ªÇ±É é©Æ¢¤îñµ©`¦È¢BVXeª /home/greg/bigboobs.jpg Æ¢¤ t@CðÇÝà¤Æ·éÆAܸÅÉ[gfBNgÅ é / Ì i-node ðuX[p[ubN(super block)v©çTµ¾·BÉfBNg home Ì i-node ð / ÌàeÌÈ©©çT·B»µÄAfBNg greg ð /home Ìàe©ç©Â¯¾µÄA³çÉ bigboobs.jpg Ì i-node ð©Â ¯éB»¤µÄA»Ì i-node ªVXeÉÇÌfBXNubNðÇß΢ ¢©ð³¦éí¯Å éB t@CÌöÉf[^ðt¯Á¦½êAVµ¢ubNª»Ìt@CÌ êÅ éÆ`BÅ«éóÔÉ·é½ßAi-node ÌXVªÈ³êéBµ© µA»ÌXVªÈ³êéOÉAf[^ª«Üêĵܤ±Æª éµA» Ìtà éBൻÌ_Åd¹ª¿éÆAt@CVXeÍ®«ð¸ ¤Bfsck ªoµâCµæ¤Æ·éÌÍA±ÌíÌ¿Å éB }EgR}hÍfoCXãÌt@CVXeðc¬µAVXeðp ·éÉÚÉ·éæ¤Èt@CÌKw\¢(hierarchy)É»êðt¯Á¦ éBJ[lÍAÊí[gt@CVXeðÇÝÝêp(read-only)Å }Eg·éB}EgR}hÍAfsck ̸ÅâèÌÈ¢±Æªª©Á Ä©ç»êðÇÝ«p(read-write)Å}Egµ¼·B Linux ͼÌíÞÌt@CVXeàT|[gµÄ¢éBmsdos, vfat,minix ÈÇÅ éBïÌIÈt@CVXeÔÅÌæXÌáÍA¼ zt@CVXe(VFS)ÉæÁÄÛ»³êéB±±ÅÍ»ÌÚ×É墀 ÍGêÈ¢B»êÉ¢ÄÌðàÍ "The Linux Kernel" Ì¶É éB(``Linux J[l'' ÌÍÉ URL ª éÌÅ»±Å©ÄÙµ¢B) ³çÉA/proc ÉÍ®SÉíÞÌÙÈét@CVXeª}Eg³êÄ¢ éB±êÍAJ[làÌóµðÀÉ\·àÌÅ éB»±ÉÍAVXe ãÌvZX²ÆÉfBNgª èAfBNg¼ÆµÄvZXÔ ªt¯çêÄ¢éBܽA/proc ÉÍ interrupts â meminfo Æ¢Á½t@ Cà èA»±ÉÍn[hEFAÌpîñª©êÄ¢éB/proc ðÚµ ²×êÎA½ðwԱƪūéB 7.1. Ýè ext2 t@CVXeðìé mke2fs Æ¢¤R}hÉÍ¡Ìp[^ ª éB»êðg¦ÎAubNÌTCYâ i-node ÌÈÇðÝèÅ«éB Ú×ÍAmke2fs Ì}j Ay[Wð²×ÄÙµ¢B t@CVXeãÌDZɽª}Eg³êé©ÍA/etc/fstab Ådz êÄ¢éB±Ìt@CÌ}j Ay[Wà éB 7.2. K ñíɬ³Èt@CVXeðìÁÄAhex r [Å©ÄÝé±ÆB i- node â X[p[ubNAt@CÌgªÇêÈÌ©©ª¯é±ÆB t@CVXeðOtBJÉ©é±ÆªÅ«éc[ª é͸¾Æv ¤B»êð©Â¯ÄµÄݽçA»Ì URL ÆgÁ½´zðí½µÉ[ ų¦ÄÙµ¢B(ó: xcruise <http://tanaka- www.cs.titech.ac.jp/%7Eeuske/prog/> Æ¢¤Ìª èÜ·B) J[lÌ ext2 t@CVXeÌR[hð`FbN·é±ÆB 7.3. Ql¶£ o LDP ̶Šé The Linux Kernel <http://www.linuxdoc.org/LDP/tlk/tlk.html> ÌæãÍ (ú{êó <http://www.linux.or.jp/JF/JFdocs/The-Linux-Kernel-10.html>)ÉÍA t@CVXeÉÖ·éDê½Lqª éBI[XgAÌ LDP É» ̶ª éB mirror <http://mirror.aarnet.edu.au/linux/LDP/LDP/> o mount R}hÍ util-linux pbP[WÌêÅ èA±êÉÖ·é Nª Building a Minimal Linux System from Source Code <http://www.netspace.net.au/~gok/power2bash> (ú{êó <http://www.linux.or.jp/JF/JFdocs/Building-Minimal-Linux.html>)©ç ½ÇêéB o ÌR}hÌ}j Ay[W mount, fstab, fsck, mke2fs ¨æÑA procB o Linux J[lÌ\[XR[hÉ é Documentation/proc.txt t@C (ú{êó <http://www.linux.or.jp/JF/JFdocs/kernel- docs-2.2/proc.txt.html>)ÉA/proc t@CVXeÉ¢ÄÌྪ éB o EXT2 t@CVXeÌ[eBeBÉÖ·éz[y[Wͱ¿ç <http://web.mit.edu/tytso/www/linux/e2fsprogs.html> I[XgAÌ~[ͱ¿ç <ftp://mirror.aarnet.edu.au/pub/linux/ metalab/system/filesystems/ext2/> Ext2fs-overview Æ¢¤hL gà»±É éªAîñªÃA "The Linux Kernel" ÌæãÍÙÇÍÇÝâ·È¢B o Unix File System Standard <ftp://tsx-11.mit.edu/pub/linux/docs/linux-standards/fsstnd/> ãLÈOÌ Unix File System Standard ÖÌNͱ± <http://www.pathname.com/fhs/> (ó: 14.2 ÅÌ Filesystem Hierarchy Standard(FHS) Æ¢¤¶£Íã LÉ èÜ·) ãLÅÍAUnix Ìt@CVXeŽªN±ÁÄ¢ÄAȺ»¤ÈÌ© ªq×çêÄ¢éBܽA/bin, /sbin ÈÇÉÅáÀxüêĨ׫à eÉ¢ĩêÄ¢éB൩ªÅŬ¾ª®SÈVXeð\zµæ ¤ÆµÄ¢éÈçA±êÍÆÄàQlÉÈéB 8. J[lf[ ps aux R}hðÀs·éÆAȺɦ·æ¤Èà̪»êéB USER PID %CPU %MEM SIZE RSS TTY STAT START TIME COMMAND root 1 0.1 8.0 1284 536 ? S 07:37 0:04 init [2] root 2 0.0 0.0 0 0 ? SW 07:37 0:00 (kflushd) root 3 0.0 0.0 0 0 ? SW 07:37 0:00 (kupdate) root 4 0.0 0.0 0 0 ? SW 07:37 0:00 (kpiod) root 5 0.0 0.0 0 0 ? SW 07:37 0:00 (kswapd) root 52 0.0 10.7 1552 716 ? S 07:38 0:01 syslogd -m 0 root 54 0.0 7.1 1276 480 ? S 07:38 0:00 klogd root 56 0.3 17.3 2232 1156 1 S 07:38 0:13 -bash root 57 0.0 7.1 1272 480 2 S 07:38 0:01 /sbin/agetty 38400 tt root 64 0.1 7.2 1272 484 S1 S 08:16 0:01 /sbin/agetty -L ttyS1 root 70 0.0 10.6 1472 708 1 R Sep 11 0:01 ps aux ãLÍVXeãÅ®¢Ä¢évZXÌXgÅ éB±êçÌîñÍAO ÍÅྵ½ /proc t@CVXe©çæ¾³êéBinit ÌvZX ID ª 1 Å é±ÆÉÓµÄÙµ¢BvZX ID Ì 2,3,4 Æ 5 ÍA»ê¼ ê kflushd, kupdate, kpiod, »µÄ kswapd Å éBµ©µ±êÉÍïÈ _ª éB¼zXg[WTCY(SIZE)ÆAXg[WTCY(RSS)Ìs ÉÚ·éÆA±êçÌvZXÌTCYÍ[ÆÈÁÄ¢éBvZXª ðÁïµÈ¢±ÆªN±è¤é¾ë¤©H ±êçÌvZXÍAJ[lf[Å éBJ[lÌåªÍvZX XgÉÍ»êÈ¢ÌÅA»êçªÁï·éÌÊðèo·ÉÍAVX eÌÊ©çpÂ\ÈÊðø¢ÄvZ·éµ©È¢BJ[l f[ÍA init ÌãÅN®³êé½ßAÊíÌvZXƯlÉvZ XÔðÂBµ©µA»êçÌR[hÆf[^ÍAJ[lpÌÌæ Éu©êéB ãLÌ\ÅÍ COMMAND ÌsÉÛJbRªÂ¢Ä¢éGgª éªA±ê ÍA/proc t@CVXeÉA»êçÌvZXÌR}hCîñªÜ ÜêĢȢ©çÅ éB ÅÍAJ[lf[ͽ̽ßÉ éÌ©H í½µÍJ[lf[ É¢ÄÙÆñÇmçÈ©Á½ÌÅA¡ñÌüùÅðo·ÜÅA»Ì_ÉÖ µA±Ì¶ÅÍÇÒ©ç̳¦ð¿¤Ä¢½BȺÌfÐIÈà¾ÍAÇÒ ©çÌlXÈÔðÂÈ¬í¹½àÌÅ èA^âɦÄê½Ðƽ¿ ÉÍñíɴӵĢéBæèÚµ¢èª©èâQÆæA±Ì¶Ìù³ÈÇà ø«±«½}µÄ¢éB üÍÆoÍÍAàÌ buffers oRÅsíêéBÀs¬xðã°é½ß Å éBvOÌoÍÍêUÉAÂÜèobt@É~¦çêA»Ì ãÅæèÀ¿ÅåeÊðÀ»Å«éfBXNÉ«ÜêéBkflushd Æ kupdate f[ÍA±ÌðSµÄ¢éBkupdate ÍAèúIÉ(5 b ²ÆÉH)«Üê½obt@(dirty buffer)ªÈ¢©`FbN·éB»¤ µ½obt@ª éêAkflushd ðÄÑoµÄA»êðfBXNÉ«Ü ¹éB vZXÍA½àµÄ¢È¢óÔÉÈé±ÆªµÎµÎ èAÀsÌvZ XÆ¢¦Çà»ÌR[hÆf[^SðàÉuKvª éí¯ÅÍÈ ¢B·Èí¿±êÍAÀsÌvZXÌgp³êĢȢªðAn[h fBXNÌXbvp[eBVÉÚ·±ÆÅAðLøpÅ«é± ÆðÓ¡·éBKvɶĻ¤µ½f[^ð©çoµüê·é ÍAkpiod Æ kswapd ÉæÁÄsíêéBÙÚbAkswapd ªN®µA ÌóÔð`FbN·éB»µÄAfBXNÉ«o³ê½îñðÉß ·Kvª Á½èAó«Ìʪs«µÄ¢½è·éêAkpiod ªÄÑ o³êéB ܽAJ[lÉÈdÍ@\ðgÝñÅ¢éêÍAVXeãÅ kapmd f[ªÁÄ¢é©àµêÈ¢B 8.1. Ýè update vOðg¦ÎAkflushd Æ kswapd ðÝè·é±ÆªÅ«éB R}h update -h ðg¦ÎÚµ¢îñª\¦³êéB XbvóÔÍAswapon R}hÅLøÉÈèAswapoff R}hųøÉ ÈéBú»XNvg(/etc/rc.sysinit àµÍ /etc/rc.d/rc.sysinit)ÍAÊíAVXeN®É swapon ðÄÑo ·Bswapoff ÍAbvgbvãÅÌÁïdÍßñ̽ßÉLøŠ黤 ¾B 8.2. K update -d ÆÅ¿A\¦³ê½sÌÅãÉuZíobt@EµÌè l(threshold for buffer fratricide)vÆ©êÄ¢é±ÆÉÚ¹æBÊ »¤ÈTOÅ éB²×ÄÝæ¤I /proc/sys/vm fBNgÉs«A»±É ét@CÌàeð cat ÅoÍ µAoÍÊð©é±ÆB 8.3. Ql¶£ Linux Documentation Project Ì "The Linux Kernel" ( URL É墀 ÍA``±±''ð©é±ÆB) EC éÇÒÍALinux J[lÌ\[XR[hðÇÞ±ÆB kswapd ÌR[ hÍAlinux/mm/vmscan.c É èA kflushd Æ kupdate ÌR[hÍ linux/fs/buffer.c É éB 9. VXeÌOL^ init ÍAsyslogd Æ klogd ðX^[g³¹éB»êçÍAbZ[WðO É«æéBJ[lÌbZ[WÍAklogd ª«æèAsyslogd ÍA»Ì ¼ÌvZXÌbZ[Wðµ¤BåvÈOÍA/var/log/messages É éBVXe̲qª«¢Æ«A±ÌOð̼Ææ¢B±±ÉÍædv Èèª©èª éB 9.1. Ýè /etc/syslog.conf t@CÍAOvOÉεÄAǤ¢¤bZ[ WðDZÉoÍ·é©ð`¦éBbZ[WÍAÇÌT[rX©ççê½Ì ©AÇÌvCIeBxÉ»êçª éÌ©Æ¢¤±ÆÉæÁįʳ êéB±ÌÝèt@CÍAsPÊÉ\¬³êÄ¢ÄA»±ÉÍAT[rX x ªAvCIeB y ÅAbZ[Wð z ÉoÍ·éÆ¢¤±Æª©êÄ ¢éB±±ÅÌ z ÉÍAt@Câ tty âv^A[gzXgª éB ÓFsyslog ÍA/etc/services t@C̶ÝðKvÆ·éB±Ì services Æ¢¤t@CÉÍ|[g(port)ÌèÄ̱ƪ©êÄ¢ éBsyslog ª|[gÌèÄðméKvª éÌÍA[gOðæé ½ßÈÌ©A»êÆà[JOðæéÆ«Éà|[gðoRµÄ¢éÌ ©A é¢ÍA/etc/services Í /etc/syslog.conf ÉLq³ê½T[rX¼ ð|[gÔÉÏ··é½ßɾ¯gíêéÌ©ÍAí½µÉÍ檩çÈ ¢B 9.2. K ©ªÌVXeÌOð©é±ÆBðÅ«È¢ªðTµÄA»ÌÓ¡ð² ×é±ÆB SÄÌObZ[Wð[É\¦³¹é±ÆB(»êªIíÁ½çA³Éß ·±Æ) 9.3. Ql¶£ I[XgAÌ syslogd Ì Mirror <http://mirror.aarnet.edu.au/pub/linux/metalab/system/daemons/> (ó :±¿ç <http://metalab.unc.edu/pub/Linux/system/daemons>Éà èÜ ·) 10. Getty Æ login getty ÆÍA¼z[âeLXg[ é¢ÍfÆ¢Á½VAfoC XoRÅOC·é½ßÉKvÈvOÅ éB»êªOCv vgð\¦·éB[U¼ðÅ¿ÞÆAgetty Í»êð login ÉènµA »ÌvOªpX[hðqËA»êð`FbNµ½ãÅA[UªVF ðg¦éæ¤É·éB ½Ì getty vOªüèÂ\Å éBRed Hat ðÜޢ©ÌfB Xgr [VÍA¼z[¾¯Å®ì·é mingetty ÆÄÎêéñíÉ ¬³ÈvOðgÁÄ¢éB login vOÍAutil-linux pbP[WÌêÅA»ÌpbP[WÉ Íagetty ÆÄÎêéõKÉ® getty ÌêíªÜÜêÄ¢éB»ÌpbP[ WÉÍAܽ mkswap, fdisk, passwd, kill, setterm, mount, swapon, rdev, renice, more ÈÇÈǪÜÜêÄ¢éB 10.1. Ýè OCvvgÆêÉæÊãÉ\¦³êébZ[WÍA/etc/issue ©çÄ¢éBgetty ÍAÊí /etc/inittab ©çN®³êéBlogin ÍA/etc/passwd Å[UÌÚ×ð`FbN·éªAVh[pX[hð gÁÄ¢éêÍA/etc/shadow ð`FbN·éB 10.2. K /etc/passwd t@Cð©ªÌèÅìé±ÆBpX[hªÍ³µ(null) ɵĨ¢ÄAOIµÄ©ç passwd vOÅ«·¦Äàæ¢B» Ì}j Ay[Wð©é±ÆB»ÌÛApasswd vOÌ}j Ay [WÅÍÈA»Ìt@CÉ¢ÄÌ}j AÅ é man 5 passwd ðg ¤±ÆB 11. Bash login ÉLøÈ[U¼ÆpX[hÌgÝí¹ðé ÆAloginÍA/etc/passwd ð`FbNµAÇÌVFðN®·×«©mF· éB Linux VXeÅÍÙÆñÇÌêA»êÍ bash Å éBbash Ìd Í[UÌR}hðÇÝñÅA©ªÌvZXãÅ»ÌR}hªÀs³ êéÌðmF·é±ÆÅ éBbash ÍA[UC^[tFCXÅ éƯ ÉvO~O¾êÌC^[v^Åà éB [UC^[tFCXƵĩ½êAbash ÍAܸR}hðÇÝ ÝAÉAൻÌR}hª cd Ìæ¤ÈuàR}h (internal command)vÅ éÈçA©ªÅ»êðÀsµAcp â startx Ìæ¤ÈuO R}h(external command)vÅ éÈç»ÌvOðTµoµÄÀs· éBܽ bash ÍAR}hqXg[ÌL¯ât@C¼Ìâ®ÈÇÌDê ½@\àÁÄ¢éB bash ªvO¾êÌC^[v^ƵĢĢé±ÆÍùÉ©½B init ªVXeN®Ì½ßÉÀs·éXNvgÍÊíVFXNvgÅ èA»êçÌXNvgÍ bash ÉæÁÄÀs³êÄ¢éBKØÈvO ¾êÆR}hCÅpÅ«éÊÌVXe[eBeBª èA »êðgÁÄ©ªÌµÄ¢é±Æð©oÅ«éöxÌm¯ª êÎA»ÌgÝ í¹©çå«ÈÍðø«o¹éBá¦ÎA(±êÍ©È«É·¬È¢©à µêȢ̾ªA) í½µÍæú\[XR[hÌfBNgÉåÊÌpb` ðÄéKvª¶¶½Bµ©µAí½µÍ»êðȺÌæ¤ÈêsÌR}h Åðµ½B for f in /home/greg/sh-utils-1.16*.patch; do patch -p0 < $f; done; ±ÌR}hÍAí½µÌz[fBNgÉ ét@C̤¿At@C ¼ª sh-utils-1.16 ÅnÜè .patch ÅIíéàÌ·×ÄðÎÛƵÄF ¯·éB»µÄA»êçðÐƸÂÔÉæèã°ÄAÏ f ðZbg µAdo Æ done ÌÔÉ éR}hðÀs·éB±ÌP[XÅÍA11 Ìpb `t@CÅ Á½ªA½Æ¦»êª 3000  Á½ÆµÄ௶æ¤ÉÈP ɳêÄ¢½Í¸Å éB 11.1. Ýè /etc/profile Æ¢¤t@CªAVXeSÌɨ¯é bash ÌUé¢ð Rg[µÄ¢éB»±É½©ðÁ¦½Æ·éÆA»êÍVXeãÅ bash ðg¤SõÉe¿ðyÚ·B»Ìt@CÅÍA(«Ï) PATH ÖÌ fBNgÌÇÁâAMAIL fBNgÌÏÌÝèÈǪȳêéB L[{[hÌftHgÝèÍAµÎµÎ«Ì¢àÌÉÈÁĢȢ±Æ ª½¢B»êðÀÛÉð·é̪Areadline Å éBreadline ÍAR} hCÌC^[tFCXðS·é(bash ÆÍ)ÊÌpbP[WÉÈÁÄ ¢évOÅA¢Â©ÌæiIÈCÒW@\ðÂÌÍà¿ëñA R}hðât@C¼â®Æ¢Á½@\ðñ·éB readline ÍAR pCÉ bash ÉgÝÜêéBftHgÅÍAreadline Íz[fB NgÌ .inputrc t@CðgÁÄÝè·éæ¤ÉÈÁÄ¢éBbash Ì ÏÅ é INPUTRC ðgÁÄ bash pɱÌÝèt@Cðã«·é±Æ àÅ«éBá¦Î Red Hat 6 ÅÍA/etc/profile ɨ¢Ä INPUTRC Í /etc/inputrc ðã«·éæ¤Ýè³êÄ¢éB±êÍAobNXy[Xâ f[gA é¢Íz[L[âGhL[ªNÉÆÁÄàãèæ¤É ·é½ßÅ éB bash ÍVXeSÌÌÝèt@CðÇÝIíéÆA¡xÍÂlpÝèt@ CðTµAz[fBNgÉ é .bash_profile, .bash_login,.profile ð`FbN·éB»µÄ±ÌÔÅÅɩ¯½ t@CðÀs·éBർlÌ bash ÌUé¢ðÏX¹¸É©ªÌà̾ ¯ðϦ½¢ÌÅ êÎA±±ðÒW·êÎæ¢Bá¦ÎA½ÌAvP[ VÍ®ìû@ðRg[·éÌÉ«ÏðgÁÄ¢éBí½µÍ Midnight Commander(Dê½R\[x[XÌt@C}l[W)ÅgÝ ÝÌGfB^ÅÍÈ vi ðg¦éæ¤É·é½ßÉAÏ EDITOR ð vi É ZbgµÄ¢éB 11.2. K bash ÌîbÍÈPÉw×éBµ©µA»±ÅIíçÈ¢±ÆB»êÍM¶ç êȢ碪[¢©çÅ éBæèÇ¢âèûªÈ¢©²×éÈðÂ¯é ±ÆB VFXNvgðÇñÅAðÅ«È¢ªð²×é±ÆB 11.3. Ql¶£ o \[XÉÍ "Bash Reference Manual" ªYt³êÄ¢éB±êͪ©èÕ ¢ªASÇÞÌÍåÏÅ éB o O'Reilly ©ç bash ÉÖ·é{ªoÄ¢éªA¢¢{©Ç¤©ÍmçÈ ¢B o ¼Éà bash ÉÖ·ét[ÅVµ¢üåª é©Ç¤©mçÈ¢Bä ¶mÈçA[Å URL ð³¦ÄÙµ¢B o \[XR[hÉ¢ÄÍABuilding a Minimal Linux System from Source Code <http://www.netspace.net.au/~gok/power2bash> (ú{êó <http://www.linux.or.jp/JF/JFdocs/Building-Minimal-Linux.html>)Å URL ðmF·é±ÆB 12. R}h bash ©ç cp Ìæ¤ÈR}hðÀs·é±ÆÅAåªÌìÆÍÏñŵ ܤBcd Ìæ¤ÉVFÉgÝÜ꽢©ÌR}hðÆA»ê çÌR}hÌÙÆñÇÍA¬³ÈvOÅ éB R}hÍpbP[WÅzz³êéªA±êçÌÙÆñÇÍ Free Software Fundation ( é¢ÍAGNU) ©çÌàÌÅ éB±±Å»ÌpbP[Wð¦ ã°éæèàAí½µÍ Linux From Scratch HOWTO <http://www.linuxfromscratch.org> ð©é±Æð¨Eßµ½¢B±ÌTCg ÅÍALinux VXeÉgÝüêçêépbP[WÌ®SÅÅVÌXgª èA¯É»Ì\zÌdûàླêÄ¢éB 13. _ Linux ÌÅåÌ·ÍA©ÅÍAàð`¢ÄAS̪Ǥ®¢Ä¢é©² ×çêé±Æ¾Bí½µÆ¯¶ç¢AÇÒà»êðyµñÅêêÎÆv ¤B»µÄA±Ì¶ªA»êð·éÇÒÌêÆÈé±Æðè¤B 14. Administrivia 14.1. Copyright ±Ì¶Ìì F Copyright (c) 1999, 2000 Greg O'Keefe. ±Ì¶ÌpAzzAC³ÍAÌCZXÌðÉ]¤À賿ŷB GNU General Public Licence <http://www.gnu.org/copyleft/gpl.html> ¼Ì¶É¨¢Ä±Ì¶ÌSÌàµÍªðp·éÆ«ÍAÒÜÅA è¢Ü·B 14.2. z[y[W ±Ì¶ÌÅVo[WÍA±¿çÉÅ·B From Powerup To Bash Prompt <http://www.netspace.net.au/~gok/power2bash> ȨAt®¶ÆµÄA"Building a Minimal Linux System from Source Code" ௶êÉ èÜ·B Dominique van den Broeck ÉæétXêóªA鼃 èÜ·B From Powerup To Bash Prompt <http://www.freenix.fr/unix/linux/HOWTO/From-PowerUp-To-Bash-Prompt- HOWTO.html> Yuji Senda Éæéú{êŪAJapanese Documentation and FAQ Project <http://www.linux.or.jp/JF> É èÜ·BÈ¢êÍAष®oêÅ·B 14.3. tB[hobN ÇÒÌRgAá»AüP¢ÄÌñÄÈǽÈèÆ·©¹Ä¾³¢B Greg O'Keefe gcokeefe@postoffice.utas.edu.au 14.4. Acknowledgements »i¼Í»ê¼êÌ ÒÌo^¤WÅ·B ±Ì¶ðÂéÉ ½ÁÄA¨¢bÉÈÁ½½làÌûª¢éÌÅA±±É ´Ó̱ÆÎðq×½¢Æv¢Ü·B Michael Emery unios ̱Æðv¢o³¹Äê½B Tim Little /etc/passwd ÉÖ·é¢Â©Ìæ¢èª©èð^¦Äê½B sPaKr on #linux in efnet syslogd ª /etc/services ðKvÆ·é±ÆðwEµA¯É "rolling your own" Æ¢¤¾tª\[X©çVXeðìé±Æðw ·Ì¾Æ³¦Äê½B Alex Aitkin Vico Æ "verum ipsum factum" ªuðÍÂé±Æ©ç¶Üêév Æ¢¤Ó¡Å é±Æðmç¹Äê½B Dennis Scott í½µÌ 16 iÌvZÌÔá¢ðwEµÄê½B jdd ëAðwEµÄê½B David Leadbeater J[lf[É¢ÄÌuç·ÈLqvðÁÄê½B Dominique van den Broeck ±Ì¶ðtXêÉ|óµÄê½B Matthieu Peeters J[lf[ÉÖ·éMdÈîñðñµÄê½B John Fremlin J[lf[ÉÖ·éMdÈîñðñµÄê½B Yuji Senda ú{êÖÌ|óB Antonius de Rozari UNIOS Ì GNU AZuo[WðñµÄê½B (Ú×ÍAí ½µÌz[y[WÌ resources ZNVð©Ä~µ¢B) 14.5. üùð 14.5.1. 0.8 -> 0.9 (November 2000) o J[lf[Æ /proc t@CVXeÉÖ·é Matthieu Peeters ©çÌîñðgÝñ¾B 14.5.2. 0.7 -> 0.8 (September 2000) o VXe\zÉÖ·éèø«ÌªðíµÄAʶƵ½B¢Â© ÌNðC³µ½B o z[y[Wð learning@TasLUG <http://learning.taslug.org.au/power2bash> ©çí½µ©gÌy[W <http://www.netspace.net.au/~gok/power2bash> ÉÚ®µ½B o lXÈÐÆ©çmç¹ÄàçÁ½A½Ìîñðt¯Á¦é±ÆÉÍ®S ɸsµ½B¨»çAÌÅÉÈéÆv¤ :( 14.5.3. 0.6 -> 0.7 o VXe\z@æèàVXeÌà¾Éd_𨢽BͲÆÉîñðÜ ÆßAVXe\zͪÊð¸çµAÀpIÈ\zÉÖµÄÍAGerard Beekmans Ì "Linux From Scratch" ð©Äàç¤æ¤Éµ½B o David Leadbeater Ìç·Èñeðt¯Á¦½B o ¢Â©Ì URL ðC³µAlearning.taslug.org.au/resources ©ç unios ð_E[hÅ«éæ¤ÉNðt¯«µ½B o URL ÌNØêð²×ÄAù³µ½B o SÌIÉCgµÄA®Úµ½B 14.5.4. 0.5 -> 0.6 o üùððt¯Á¦½B o TODO ÌÚð¢Â©âµ½B 14.6. TODO o J[lW [Adepmod,modprobe,insmod ÈÇðྷé±ÆB o /proc t@CVXeɾyµAÅ«êÎAKàt¯é±ÆB o docbook Ì sgml `®ÉÏX·é±Æ o àÁÆKðâ·±ÆBÅÌCXg[©çt@CðÐƸ íµÄŬÀxÌVXeðÂéÆ¢Á½æ¤ÈAàÁÆèÌñ¾ KðÂÁÄêÍðÆ¢Á½æ¤È±ÆB o bash ðrh·éÛÌ makefile ÌnbNÌû@ðt¯Á¦é±ÆB - easter notes ð©Ä~µ¢B 14.7. ú{êóÉ墀 |ó: çU Ti Z³: RX _K ä Lõ ²ì r ì Î