Chapter 16 ¨ä¥¦¦U¦¡¦U¼Ëªº°ÝÃD

16.1. ¬°¬Æ»ò FreeBSD ¥Îªº¸m´«(swap)ªÅ¶¡¤ñ Linux ¦h¡H
16.2. §Y¨Ï§Ú¥u¦³¹B¦æ¤Ö¼Æµ{¦¡¡A¬°¤°»ò top Åã¥Ü¥X ¨Óªº³Ñ¾l°O¾ÐÅéÁÙ¬O«Ü¤Ö¡H
16.3. ¬°¬Æ»ò­n¥Î(¬Æ»ò¬O) a.out ©M ELF °õ¦æÀɮ榡¡H
16.4. ¬Oªº, ¦ý¬O, ¬°¤°»ò·|¦³³o»ò¦h¤£¦P®æ¦¡ªº°õ¦æÀɦs¦b©O?
16.5. ¬°¬Æ»òchmod¤£·|§ïÅܲŸ¹³sµ²(symlink)ªº¦s¨úÅv­­¡H
16.6. ¬°¤°»ò¦b FreeBSD 2.2.x ¤Î§ó¦­ªºª©¥»¤¤¡Aµn¤J¦WºÙ(login names) ³Q­­¨î¦b¤K­Ó¦r¤¸¥H¤U©O¡H
16.7. §Ú¯à¦bFreeBSD¤U°õ¦æDOSµ{¦¡¶Ü¡H
16.8. ¦pªG­n§âFreeBSD¤å¥ó½Ķ¦¨§Úªº¥À»y¡A§Ú»Ý­n§@¤°»ò¡H
16.9. ¬°¤°»ò§Ú±H¨ì FreeBSD.org ¬ÛÃö¦a§}ªº¹q¤l¶l¥ó³£³Q°h¦^¤F©O¡H
16.10. §Ú¥i¥H¦b­þ¸Ì§ä¨ì¤@­Ó§K¶OªºFreeBSD±b¸¹¡H
16.11. ¤°»ò¬O sup¡A§Ú¸Ó¦p¦ó¨Ï¥Î¥¦¡H
16.12. ³o­Ó¥i·Rªº¤p¬õ¤H¥s§@¤°»ò¡H
16.13. §Ú¯à¨Ï¥Î BSD ¤p´cÅ]¹Ï®×¶Ü¡H
16.14. §A¦³¥ô¦óªº BSD ¤p´cÅ]¹Ï®×¥i¥HÅý§Ú¨Ï¥Î¶Ü¡H
16.15. §Ú¦b¤å¥ó¡B¶l»¼½×¾Â¤W¡A±`·|¬Ý¨ì¤@¨ÇÁY¼g¦r¡B§Þ³N¦r·J¡A³o¨Ç¥i¥H¥h­þÃä¬d©O¡H
16.16. ¬°¤°»ò§Ú¸Ó¦b·N¸}½ñ¨®¨®´×ªºÃC¦â¡H

16.1. ¬°¬Æ»ò FreeBSD ¥Îªº¸m´«(swap)ªÅ¶¡¤ñ Linux ¦h¡H

FreeBSD¶È¬O¬Ý°_¨Ó¸m´«ªÅ¶¡(swap)¥Îªº¤ñLinux¦h¦Ó¤w¡C¦b¨Æ¹ê¤W¡A ¨Ã¤£µM¡C¥D­nªº®t²§¬O¦b©ó¡AFreeBSD¿n·¥ªº±N¶¢¸mµL¥Îªº¥D°O¾ÐÅ餺®e ±À¤J¸m´«ªÅ¶¡(swap)¤¤¡A¥H¨Ï±o¥D°O¾ÐÅé¥i¥H§ó¬°¦³®Ä²vªº³Q¨Ï¥Î¡C¦Ó Linuxªºµ¦²¤¬O±N¸m´«ªÅ¶¡(swap)¥Î¨Ó§@¬°¸Ñ¨M°O¾ÐÅé°ÝÃDªº³Ì²×¤â¬q¡C ¸ûÀWÁcªº¨Ï¥Î¸m´«ªÅ¶¡(swap)¡C¬O¤@ºØ§ó¦³®Ä²vªº¨Ï¥Î¥D°O¾ÐÅ骺¤â¬q¡C

µù¡G·í¤@¤è­±FreeBSD¿n·¥ªº¨Ï¥Î¸m´«ªÅ¶¡(swap)ªº¦P®É¡A§A¥²»Ýª` ·N¨ì¡AFreeBSD¨Ã¤£·|¥ô·Nªº±N©Ò¦³ªºªF¦è³£±À¤J¸m´«ªÅ¶¡(swap)¤¤¡C¦p¦¹¡A §A¤~¤£·|¦b¤@©]±J¾K°_§É«áµo²{¡A¾ã­Ó¨t²Î³£³Q­Ë¶i¤F¸m´«ªÅ¶¡(swap)¤§¤¤¡C

16.2. §Y¨Ï§Ú¥u¦³¹B¦æ¤Ö¼Æµ{¦¡¡A¬°¤°»ò top Åã¥Ü¥X ¨Óªº³Ñ¾l°O¾ÐÅéÁÙ¬O«Ü¤Ö¡H

²³æªºµª®×¬O¡A©Ò¦³¥¼¨Ï¥Î¨ìªº¶¢¸m°O¾ÐÅé³£¬O³Q®ö¶Oªº°O¾ÐÅé¡A ¥ô¦ó¥¼³Q§Aªºµ{¦¡©Ò§Q¥Î¨ìªº°O¾ÐÅé±N³Q®Ö¤ß(kernel)¥Î¨Ó·í §@ºÏºÐ§Ö¨ú(disk cache)¡C¦Ó³oºØ°O¾ÐÅé³Q top(1) ¼Ð°O¬° ¶¢¸mªº(Inact)¡A§Ö¨ú(Cache)¡A ¥H¤Î ½w½Ä°Ï(Buf)¡A¨Ã­t³d¦b¦U­Ó¤£¦Pªº¦ì¸m­t³d ¼È¦s¸ê®Æ¡C³Q¼È¦s(cached)ªº¸ê®Æ¥Nªí¨t²Î¤£»Ý­n¥h¦s¨ú¸ûºCªººÏºÐ¸Ë¸m ´N¥i¥H±o¨ì¸ê®Æ¡A¦p¦¹¡A¥i¥H´£¤É¨t²Îªº®Ä¯à¡CÁ`¦Ó¨¥¤§¡Atop(1) Åã¥Ü¥X¸û¤Öªº ¶¢¸m(Free) °O¾ÐÅé¬O¦nªº¡A¥u­nÅã¥Ü ¥X¨Óªº­È¤£¬O «D±` ªº§C¡C

16.3. ¬°¬Æ»ò­n¥Î(¬Æ»ò¬O) a.out ©M ELF °õ¦æÀɮ榡¡H

­n¤F¸Ñ¬°¤°»òFreebsd¨Ï¥Î ELF ®æ¦¡¡A§A¦³¥² ­n¥ý»{ÃѤ@¤U¤TºØ¦b¥Ø«e Unix ¨t²Î¤¤³Ì³Q¼sªxÀ³¥Î¨ìªº°õ¦æÀɮ榡¡G

Note: ¦b FreeBSD 3.x ¤§«e¡AFreeBSD ¨Ï¥Î a.out ®æ¦¡¡C

  • a.out(5)

    ³o¬O³Ì¦­¡A¦P¬O¤]¬O ¡§³Ì¨å«¬¡¨ ªºUnix¥ØªºÀÉ ®æ¦¡¡C³oºØ®æ¦¡ªºÀɮרϥΤ@ºØµu¥Bºò±KªºÀÉÀY¡A¦P®É¡A¦ñÀHµÛ¤@ ­ÓÅ]³N¼Æ¦r¥Î¨Ó¿ëÃѮ榡¡C(°Ñ¦Ò a.out(5) ¦³§ó¦h¸Ô²Óªº»¡ ©ú)¡C¥¦¥]§t¦³¤T­Ó¸`°Ï¡G .text .data ¤Î .bss ¥[¤W¤@­Ó²Å¸¹ªí ¤Î¦r¦êªí¡C

  • COFF

    SVR3¥ØªºÀɮ榡¡CÀÉÀY¥]§t¤F¤@­Ó¸`°Ïªí¡A©Ò¥H¥i¥H¨ã³Æ¤ñ .text .data .bss ÁÙ¦hªº¸`°Ï¡C

  • ELF

    ELF¬° COFF ®æ¦¡ªº«áÄ~ªÌ¡A¥D­nªº¯S¼x¬° ¥i¥H¨ã¦³½Æ¼Æ¸`°Ï¬q¡A¨Ã¥i¥H¨Ï¥Î32-bits©Î¬O64-bitsªº¼Æ­È¡C ¥D­nªº¯ÊÂI¬°¡G ELF ®æ¦¡¬O¦b¨C­Ó¨t²Î¤¤¥u ·|¦³¤@ºØ ABI ªº°²³]¬°«eÃD³Q³]­p¥X¨Óªº¡C¦ý¬O¡A¦b¨Æ¹ê¤W¡A³o­Ó °²³]¿ùªºÂ÷ÃСC¦]¬°¡AÁa¨Ï¦b°Ó¥Îªº SYSV ¥@¬É¸Ì¡A¤]¦Ü¤Ö¦³ SVR4¡A Solaris ©M SCO ¤TºØ ABI¡C

    ͵ù¡GABI(Application Binary Interface)¡C¦pªG¤@©w­n½Ķ¡A ´N¥s¥¦ À³¥Îµ{¦¡¤G¶i¦ì¤¶­± ¦n¤F¡C ABI³Qµo ®i¥X¨Óªº¥Î·N¡A¬O¬°¤F«P¨Ï¦b¬Û¦PCPU©Òµo®i¥X¨ÓªºÀ³¥Îµ{¦¡¡A¯à°÷ ¦b¤£¦Pªº¨t²Î¤W¡A§@¨ì¤G¤¸ÀÉ(Binary Code)¬Û®e¡C¤ñ¤è»¡¡A Sun ©Ò´£¥Xªº Solaris ABI ¡A«OÃÒ°õ¦æÀɯà°÷¦b¬Û¦P CPU ªº Solaris ¨t²Î¤W°õ¦æ¡A¥t¤@­Ó¨Ò¤l¬O Windows ¨t²Î¡C¦PÄÝ©ó Intel x86 ª©¥»ªº°õ¦æÀɯà°÷¦Û¥Ñªº¦bWindows 9x/me¤ÎWindows NT/2k/XP¤§¶¡°õ¦æ¡C

    FreeBSD´£¨Ñ¤@­Ó¤½¥Îµ{¦¡±Nµ{¦¡©Ò»ÝªºABI¸ê°T¯O¤W¡AÂǦ¹¸ÕµÛ ¥h¸Ñ¨M³o­Ó°ÝÃD¡C½Ð°Ñ¦Ò brandelf(1) ¥H¨ú±o§ó¦h¸ê°T¡Ci

FreeBSD ¨Ó¦Û ¡§¶Ç²Î¡¨ ªº°}Àç¡C¦b¶Ç²Î¤W¡AFreeBSD³£ ¨Ï¥Î a.out(5) ®æ¦¡¡A³o¼Ëªº§Þ³N¦b¦n´X¥Nªº BSD ³£³QÃÒ©ú¬O¥i¾aªº¡C ÁöµM¡A¦bFreeBSD¤W¥i¥H«Ø¥ß¥H¤Î¥¿½Tªº°õ¦æ­ì¥Í ELF ®æ¦¡ÀÉ®×(¥]§t®Ö¤ß)¡CµM¦Ó, FreeBSD¦b¤@¶}©l¤Ï¹ï±N¹w³]®æ¦¡Âà´«¬° ELF¡A ¬°¤°»ò©O¡H·íLinux¶}©lµh­WªºÂà´«¦Ü ELF ®æ¦¡®É¡A ¨Ã«D¬O¬°¤F­n°kÂ÷ a.out ®æ¦¡¡C¬Û¤Ïªº¡A³o¬O¦] ¬°¤§«e Linuxªº¦@¨É¨ç¦¡®w(shared libraries)±Ä¥Î¥H¸õÅDªí®æ (jump-table)¬°°ò¦ªº§Þ³N¥h³]­p¡C³o¬O¤@ºØÅýµo®iªÌ·P¨ì§xÂZ¡A¥B«D±` Ãø¥H¨Ï¥Î¡A¤£¨ã¨¬°÷¼u©Êªº¤èªk¡C¬JµM¡A¤w¸g¦s¦bªº ELF ¤u¨ã´£¨Ñ¤F¦@¨É¨ç¦¡®w(shared libraries)ªº¸Ñ ¨M¤è®×¡A¦Ó¥B¡A¨º¬Ý°_¨Ó¬O­Ó ¡§«e½Ãªº¤èªk¡¨¡A¦]¦¹¡A©Ò»Ý ªºÂà´«¥N»ù´N¥i±µ¨ü¦]¦ÓÂà´«¡C

¦bFreeBSDªºª¬ªp¤¤¡A§Ú­Ìªº¦@¨É¨ç¦¡®w(shared libraries)¾÷¨î©M SunOS ªº«¬¦¡«D±`¬Ûªñ¡A¥B©ö©ó¨Ï¥Î¡CµM¦Ó¡A ±q 3.0 ¶}©l¡AFreeBSD ¥¿¦¡±N ELF §ï¬°¹w³]®æ¦¡¡C ÁöµM¡Aa.out ®æ¦¡¨Ì¦p¥H©¹¯ëªº¦n¡A¦ý¬O¡A§Ú­Ì ½sͤu¨ãªº¼¶¼gªÌ¡AGNU ªº¦¨­û¡A¥L­Ì¤¤¤î¤F¹ï a.out ®æ¦¡ªº¤ä´©»PºûÅ@¡C¦b³oºØª¬ªp¤U¡A­¢¨Ï §Ú­Ì¥²¶·¦Û¦æºûÅ@¥t¤@¥÷ª©¥»ªº compiler ©M linker¡A¤]¨Ï±o§Ú­ÌµLªk ±q³Ì·sªº GNU µo®i¦¨ªG¤¤Àò±o¦n³B¡C¦¹¥~¡A¹ï ISO-C++ ªº»Ý¨D¡A¤×¨ä¬O «Øºc¤l(constructors)©M¸Ñºc¤l(destructors)¡A¤]±a°Ê¥¼¨Óª©¥»¤¤¹ï ELF ªº­ì¥Í¤ä´©¡C

16.4. ¬Oªº, ¦ý¬O, ¬°¤°»ò·|¦³³o»ò¦h¤£¦P®æ¦¡ªº°õ¦æÀɦs¦b©O?

¦b¶Â·t¦Ó»»»·ªº¹L¥h¡A¶È¦³Â²­®ªºµwÅé¦s¦b¡C¦Ó¦]¬°µwÅé²­®¡A·íµM¤] ¥u¯à°õ¦æ¤p¦Ó²³æªº¨t²Î¡Ca.out ®æ¦¡¬O°ò©ó¨º­Ó®É¥N©Ò»Ý­n¡A¦Ó³Q³Ð³y ¥X¨Óªº(¨Ò¦p¹³PDP-11)¡C¦b³o¤§«á¡A³\¦h¤H¸ÕµÛ±N Unix ²¾´Ó¨ì¨ä¥L¥­¥x ®É¡A¥L­Ì¤]«O¯d¤F a.out ®æ¦¡ªº°õ¦æÀÉ¡C¦]¬°¡A³o¹ï¦­´Áªº Motorola 68k¡A VAXen ¤§Ãþªº¨t²Î¤w¸g¨¬°÷¨Ï¥Î¤F¡C

µM¦Ó¡A¤H¨Ã¤£·|º¡¨¬©ó²{ª¬¡C¤@¨ÇÁo©úªºµwÅé¤uµ{®v·Q¨ì¤F¡A¦pªG¯à Åý³nÅé¦h³B²z¤@¨Ç¨Æ¡A¨º CPU ªº¹q´¹Å鼯´N¯à¤Ö¤@ÂI¡A¨Ã¥B¶]±o§ó§Ö¡C­n ¦b³oºØ·s¦¡ªºµwÅé¤W¤u§@(²{¦bºÙ¬°RISC)¡Aa.out ³oºØ®æ¦¡´N¤£¦X¾A¤F¡C°ò©ó³o¼Ëªº²{¹ê©Ò»Ý¡A§ó¦hªº°õ¦æÀɮ榡³Qµo®i¥X ¨Ó¡A¥H´£¨Ñ¤ñ²³æ¥B¨ü¨ì³\¦h­­¨îªº a.out ®æ¦¡ §ó¦nªº®Ä¯à¡C¤ñ¤è¹³¬O COFF¡A ECOFF¡A¤w¤Î¤@¨Ç¸û¤£¬°¤H©Ò©Pª¾ªº®æ¦¡¯É¯É³Q³Ð³y ¥X¨Ó¡C¦ý¬O¡A³o¨Ç®æ¦¡³£¤w¹F¨ì¦U¦Ûªº·¥­­¡Aª½¨ì¦³¤@¤Ñ ELF ªº¥X²{¡C

¦¹¥~¡A·íµ{¦¡ªºÅé¿n¶V¨Ó¶V¤j¡A¦ÓºÏºÐªÅ¶¡©M¥D°O¾ÐÅé¬Û¹ï¨Ó»¡³£¸û ¤p®É¡A¦@¨É¨ç¦¡®w(shared libraries)ªºÆ[©À³Qµo®i¥X¨Ó¤F¡C¦b³o¦P®É¡A µêÀÀ°O¾ÐÅé¨t²Î(VM System)¤]Åܱo¶V¨Ó¶Vºë¥©¡C·í¨C¤@ºØ¶i¨B³£¦b a.out®æ¦¡¤W³Qµo®i¥X¨Ó®É¡A¥¦ªº¥i¥Î©Ê¤]¦P®ÉÅÜ ±o¶V¨Ó¶V§C¡C¥t¥~¡A¤H­ÌÁ٧Ʊæµ{¦¡¯à¦b°õ¦æ´Á¶¡°ÊºA¸ü¤J¡A©Î¬O±N¤w¸g °õ¦æ¹L¥B¨S¦³¥Îªºªì©l¤Æµ{¦¡½X¥á±ó¡AÂÇ¥H¸`¬Ù§ó¦hªº°O¾Ð¡Cµ{¦¡»y¨¥¦b ³o­Ó®É´Á¤]«K±o§óºë¥©¡A¤H­Ì¤]§Æ±æ¦b main ¤§«e¦Û°Êªº°õ¦æ§ó¦hªºªF¦è¡C ¦]¦¹¡A³\¦hÁcÂø¥B¥t¤H¹Ä¬°Æ[¤îªº§Þ¥©³Q¥Î¦b a.out ®æ¦¡¤W¥h¸Ñ¨M³o¨Ç°ÝÃD¡C¦ý¬O¡A¥Ñ©ó a.out ®æ¦¡ ¥ý¤Ñªº­­¨î¡A­n¸Ñ¨M³o¨Ç°ÝÃD¥²»Ý¥I¥X§ó¦hªº¥N»ù¤Î®É¶¡¦¨¥»¡A¨ÃÅýµ{¦¡ ªº½ÆÂø«×¤j¬°´£¤É¡C¦Ó ELF ®æ¦¡¥i¥H¤@Á|¸Ñ¨M³o¤@ ¤Á°ÝÃD¡C¦ý¬O¡A­n±N¾ã­Ó¨t²Î±q®Ú¥»Âà´«¹L¥h¡A±N·|¦³¤£µuªº°}µh´Á¡A¦] ¦¹¡A ELF®æ¦¡±N·|¦³¤@°}¤l»P a.out ¨Ã¦s¡C

µM¦Ó¡AÀHµÛ®É¶¡ªº¹L¥h¡AFreeBSDªº build tools ºt¤Æ¦¨¥­¦æªº¨â­Ó ¤ä½u(¤×¨ä¬O²Õ;¹©M¸ü¤J¾¹)¡CFreeBSD³o±ø¸ô¥[¶i¤F¦@¨É¨ç¦¡®w (shared libraries)¨Ã­×¥¿¤F¤@¨Ç¿ù»~¡C¦Ó­ì¨Óµo®i³o¨Çµ{¦¡ªº GNU ¦¨­û «h¬°¤F¦]À³²{ªp¡A­«¼g¤F³o¨Çµ{¦¡¡A¥H§ó²³æªº¤è¦¡¹ï¸ó¥­¥x½sĶ (building cross compilers)¡A¥H¤Î¦hºØ®æ¦¡ (plugging in different formats) §@¥X¤F¤ä´©¡C³\¦h¤H·Q§@¥X¥H FreeBSD ¬°¥Øªº¥­¥xªº¸ó¥­¥x½s;¹¡C¦ý¤£©¯ªº¬O¡AFreeBSD ªº as ©M ld ¤£¯à§@ ³o¶µ¤u§@¡C·sªº GNU ¤u¨ãµ{¦¡¥[¤J¤F¸ó¥­¥x½sĶ (Cross Compiler)¡A ELF®æ¦¡¤ä´©¡A¦@¨É¨ç¦¡®w(shared libraries)¡A C++ ªºÂX¥R... µ¥µ¥¡C¦¹¥~¡A³\¦h¼t°Ó¥H ELF ®æ¦¡ µo¦æ¨ä²£«~¡A¦pªG³o¨ÇªF¦è¯à¦b FreeBSD ¤W°õ¦æªº¸Ü·íµM¬O³Ì¦nªº¡C¬JµM¡A ¯à°÷°õ¦æ ELF ®æ¦¡ªº°õ¦æÀɤF¡A¬°¤°»òÁÙ¶·­n a.out ©O¡H¥¦¤w¸g¬O¤@¤Ç««««¦Ñ¨oªº°¨¤F¡A¦bºÜ¤O ºÉ©¾ªº©^Äm³o»ò¦h¦~¤§«á¡A¸Ó¬OÅý¥¦¦bªª³õªÎ¨Uªº¯ó¦a¤W¦n¦n¥ð®§ªº®É­Ô ¤F¡C

ELF ®æ¦¡¤ñ a.out ¨ã¦³§ó¨}¦nªº®i²{¯à¤O¡A¨Ã ¥B¦b©³¼h¨t²Î¤¤¨ã¦³§ó¦hªº¥iÂX®i©Ê¡CELF ¤u¨ãµ{¦¡ §ó®e©ö³QºûÅ@¡A¥B´£¨Ñ¸ó¥­¥x½sĶªº¤ä´©¡A³o¤@ÂI¹ï«Ü¦h¤H¨Ó»¡¬O«Ü­«­n ªº¡CELF ®æ¦¡¥i¯à¤ñ a.out ºC¤@ÂI¡A¦ý¬O¨ä®t²§«D ±`Ãø´ú¶q¥X¨Ó¡C³o¨âªÌ¶¡ÁÙ¦³³\¦h²Ó¸`¤Wªº¤£¦P¡A¤ñ¤è»¡¤À­¶¹ïÀ³ªº¤è¦¡¡A µ{¦¡½Xªì©l¤Æªº¤èªk...µ¥µ¥¡C³o¨Ç¨Ã¤£¬O«Ü­«­n¡A¦ý¬O¡A¨âªÌ´N¬O¤£¦P¡C ¥H«á¡AGENERIC ®Ö¤ß(kernel)±N·|²¾°£¹ï a.out ®æ¦¡¡C·í¤£¦b¦³°õ¦æ¶Ç²Î a.out µ{¦¡ªº¶·­n®É¡A ±N·|±q®Ö¤ß(kernel)¤¤²¾°£¡C

16.5. ¬°¬Æ»òchmod¤£·|§ïÅܲŸ¹³sµ²(symlink)ªº¦s¨úÅv­­¡H

Symlinks ¥»¨­¨Ã¨S¦³¦s¨úÅv­­¡A¦P®É¡A¦b¹w³]ªºª¬ªp¤U¡A chmod(1) ±N¤£·|¸òÀHµÛ symlinks ¥h§ï«K¥Ø¼ÐÀɮתº¦s¨úÅv­­¡C¦]¦¹¡A ¦pªG§A¦³¤@­ÓÀÉ®× foo¡A¦P®É¡A¦³¤@­Ó symlink bar «ü¦V³o­ÓÀɮסA¥H¤U³o­Ó©R¥O±N¥Ã»··|¦¨¥\ ªº³Q°õ¦æ¡C

% chmod g-w bar

µM¦Ó¡A¦b foo ¤Wªº¦s¨úÅv­­±N¤£·|³Q§ï ÅÜ¡C

§A¥²»Ý¨Ï¥Î -H ©Î¬O±N -L »P -R ¿ï¶µ¤@°_¨Ï¥Î¡A°Ñ¦Ò chmod(1) ¥H¤Î symlink(7) ¥H¨ú±o§ó¦hªº¸ê°T¡C

Warning: ¨Ï¥Î¿ï¶µ -R ·|Åý chmod(1) ¥H »¼°j(RECURSIVE) ªº¤è¦¡¤u§@¡C·í§A§â chmod(1) ¥Î¦b¥Ø¿ý©Î¬O³sµ²¨ì¥Ø¿ýªº²Å¸¹³sµ²®É§ó­n¤p¤ß¡C ¦pªG§A­n§ïÅܤ@­Ó²Å¸¹³sµ²°Ñ¦Ò¨ìªº¥Ø¿ý¤§¦s¨úÅv­­ chmod(1) ¡A ¥Bª`·N¤£­n¥[¤W¥ô¦ó¿ï¶µ¡A¨Ã¥B¦b symlink ªºµ²§À¥[¤W±×½u (/)¡CÁ|¨Ò¨Ó»¡¡A¦pªG foo ³sµ²¨ì¥Ø¿ý bar¡A ¦Ó§A­n§ó§ï foo (¹ê»Ú¤W¬O bar)¡A¨º´N¨Ï¥Î¡G

% chmod 555 foo/

µ²§Àªº±×½u·|¨Ï±o chmod(1) §ïÅÜ foo ©Ò«ü¦Vªº¥Ø¿ý bar ªºÅv­­¡C

16.6. ¬°¤°»ò¦b FreeBSD 2.2.x ¤Î§ó¦­ªºª©¥»¤¤¡Aµn¤J¦WºÙ(login names) ³Q­­¨î¦b¤K­Ó¦r¤¸¥H¤U©O¡H

§A¥i¯à»{¬°­×§ï UT_NAMESIZE «á¦b­«·s½s;ã­Ó ¨t²Î¬O«Ü®e©öªº¨Æ¡C¦Ó¥B¦b³o¤§«á¡A¨C¥ó¨Æ³£¥i¥H¹B§@ªº«Ü¦n¡C¤£©¯ªº¬O¡A ¦³³\¦hªºµ{¦¡©M¤u¨ã(¥]§t¨t²Î¤u¨ã)§â¼Æ¦r¼g¦º¦bµ{¦¡¸ÌÀY(¨Ã«DÁ`¬O 8 ©Î 9¡A¦³®É¥i¯à¬O¥j©Çªº 15 ©Î 20)¡C³o¤£¶È¶È¬O·|±N §Aªº¨t²Î°O¿ýÀɧËÃa¦Ó¤w(¨Ó¦Û©óÅܰʪø«×©M©T©wªø«×°O¿ýªº®t²§)¡A¦P®É ¤]·|¯}Ãa Sun ªº NIS Client ªº¹B§@¡C¦P®É¡A©M¨ä¥LªºUnix¨t²Î¤§¶¡¤] ¦³¥i¯à·|²£¥Í¥¼ª¾ªº°ÝÃD¡C

¦bFreeBSD 3.0 ¤Î¤§«áªºª©¥»¡A±b¸¹ªº³Ì¤jªø«×¼W¥[¨ì16­Ó¦r¤¸¡A ¦P®É¡A¨º¨Ç±Nªø«×¼g¦ºªºµ{¦¡¤]³Q§ä¥X¨Ó¨Ã§@¤F¾A·íªº­×¥¿¡C¥¿¦]¬°¼vÅT ¨t²Îªº½d³ò«Ü¼s¡A©Ò¥Hª½¨ì3.0ª©¤§«á¤~ºâ¤j­P­×¥¿§¹¦¨¡C

¦pªG§A¦³¦Û«H¦b¥X°ÝÃDªº®É«á¯à¦Û¦æ¸Ñ¨M¡A§A¥i¥H§Q¥Î¤U­±ªº¤èªkÅý ¸û¦­´Áªºª©¥»¤ä´©¸ûªøªº±b¸¹¡C­º¥ý¡A­×§ï /usr/include/utmp.h ¤¤ªºUT_NAMESIZE¡C µM«á¡A§A¥²¶·§â /usr/include/sys/param.h ¤¤ªº MAXLOGNAME §ï¦¨¸ò UT_NAMESIZE ¬Û¦P¡C³Ì«á¡A¦pªG§A¬O±q­ì©lµ{ ¦¡«Ø¥ß¨t²Î, §O§Ñ¤F /usr/include ¨C¦¸³£·|³Q§ó·s¡C ­×§ï /usr/src/.. ¤¤¾A·íªºÀɮסC

16.7. §Ú¯à¦bFreeBSD¤U°õ¦æDOSµ{¦¡¶Ü¡H

¬Oªº¡A¦Û3.0ª©°_§A¥i¥H¨Ï¥ÎBSDIªº doscmd DOS ¼ÒÀÀ¾¹¡A¦pªG§A¹ï³o­ÓªF¦è ¦³¿³½ì¡A©Î¬O·Q¥[¤Jµo®i¦æ¦C¡A½Ð±H¤@«Ê¹q¤l¶l¥ó¨ì FreeBSD-emulation ¶l»¼½×¾Â ¡C

¹ï©ó3.0¤§«eªº¨t²Î¡A¦b ports ¤¤¦³¤@®M³nÅé¥i¥H¼Òèö 8088¡A¨Ã´£ ¨Ñ¨¬°÷ªºBIOS¤¤Â_ªA°È¥H°õ¦æDOS¤å¦r¼Ò¦¡ªºµ{¦¡¡A³o®M³nÅé¥s°µ pcemu¡A¦P®É¡A¹B¦æ¥¦¶·­n X Windows(¥ÑXFree86´£¨Ñ)¡C

16.8. ¦pªG­n§âFreeBSD¤å¥ó½Ķ¦¨§Úªº¥À»y¡A§Ú»Ý­n§@¤°»ò¡H

°Ñ¾\FreeBSD¤å¥ó¤¤ªº ½Ķ±`¨£°Ýµª¡C

16.9. ¬°¤°»ò§Ú±H¨ì FreeBSD.org ¬ÛÃö¦a§}ªº¹q¤l¶l¥ó³£³Q°h¦^¤F©O¡H

FreeBSD.org ªº¶l¥ó¨t²Î¹ï©ó¶i¨Óªº¶l¥ó±Ä¨úÄY®æªºÀˬd¡A¨Ã¥B°h¦^ ©Ò¦³³]©w¤£¥¿½T¡A©Î¬O¼ç¦bªº©U§£¶l¥ó¡C§Aªº¶l¥ó³Q°h¦^¥i¯à¬O¦]¬°¤U¦C ­ì¦]©Ò¤Þ°_¡G

  • ³o«Ê¹q¤l¶l¥ó¨Ó¦Û¤wª¾ªº©U§£¶l¥ó°Ï°ì©Î¬OIP¤¤¡C

    FreeBSD¶l¥ó¦øªA¾¹±N©Úµ´±µ¦¬¤wª¾ªº©U§£¶l¥ó¨Ó·½ªº¹q¤l¶l¥ó¡C ¦pªG´£¨Ñ§Aºô¸ôªA°Èªº¤½¥q©Î¬Oºô°ì¤¤¦³²£¥Í¹L©U§£¶l¥ó©Î¬O¦³©U§£ ¶l¥óÂ༽¯¸¡A½Ð§A´«¤@­ÓªA°È´£¨ÑªÌ¡A©Î¬O°®¯Ü©ñ±ó¡C

  • ¹q¤l¶l¥óªº¥»¤å¶È¦³HTML¡C

    ¶l¥óÀ³¸Ó¤w¯Â¤å¦r®æ¦¡µo°e¡A½Ð³]©w§Aªº¹q¤l¶l¥ó³nÅé°e¥X¯Â¤å ¦r®æ¦¡¡C

  • FreeBSDªº¶l¥ó³B²zµ{¦¡µLªk¥ÑIP¤Ï¬d°e¥ó¥D¾÷ªºIP¡C

    ³]¸m DNS ¤Ï¬d¬O±µ¨ü¤@¥x¥D¾÷¶l¥óªº¤@­Ó¼Ð·Ç­n¨D¡A½Ð¬°±zªº¶l¥ó ¥D¾÷³]¸m DNS ¤Ï¬d¡C³\¦h´£¨Ñ®a®xºô¸ôªA°È (DSL¡Acable¡Adialup µ¥) ªº¤½¥q¨Ã¤£´£¨Ñ³o¼ËªºªA°È¡C¦b³oºØ±¡ªp¤U¡A½Ð³z¹Lºô¸ôªA°È´£¨ÑªÌªº ¶l¥ó¦øªA¾¹°e¥X±zªº¹q¤l¶l¥ó¡C

  • ¦b SMTP ¨Ï¥Î EHLO/HELO ©R¥O®É©Òµ¹¤©ªº hostname µLªk³Q¸ÑªR¨ì ¤@­Ó IP ¦ì¸m¡C

    ¦b¶l¥ó³Q±µ¨ü¥H«e¡A¤@­Ó¥R¤À¦X®æ¡A¥B¥i³Q¸ÑªRªº¥D¾÷¦WºÙ¦b SMTP ¨ó©wªº¹ï½Í¤¤¬O¥²­nªº¡C¦pªG§A¨S¦³¦b DNS ¦øªA¾¹¤¤µn°O§A ªº¥D¾÷¦WºÙ¡A½Ð³z¹Lºô¸ôªA°È´£¨ÑªÌªº¶l¥ó¦øªA¾¹°e¥X±zªº¹q¤l¶l ¥ó¡C

  • §Aªº°T®§¤¤§¨±aµÛ¤@­Ó message ID ¥H ¡§localhost¡¨ ¦r¦êµ²§ô¡C

    ¬Y¨Ç¶l¥ó³nÅé²£¥Í¬Y¨Ç¤£¥¿½Tªº message ID¡A³o±N¤£³Q±µ¨ü¡C §A¥²»Ý§ó§ï³]©wÅý§Aªº¶l¥ó³nÅé²£¥Í¥¿½Tªº message ID¡A¦pªG³oµL ªk¸Ñ¨M¡A¦Ò¼{»¡ªA§Aªº¶l¥ó³nÅé§@ªÌ§ó·sµ{¦¡¥H³B²z³o­Ó°ÝÃD¡C

16.10. §Ú¥i¥H¦b­þ¸Ì§ä¨ì¤@­Ó§K¶OªºFreeBSD±b¸¹¡H

FreeBSDªº¦øªA¾¹¥»¨­¤£´£¨Ñ¥ô¦ó¹ï¥~ªºªA°È¡A¨ä¥Lªº³æ¦ì¤¤¡A ¦³¤H´£¨Ñ¶}©ñªº Unix ¨t²ÎªA°È¡C¨ä¤¤¦³¨Ç¥i¯à­n¦¬¨ú¨Ç³\¶O¥Î¡C

Arbornet, Inc¡A ¤]³QºÙ¬° M-Net¡A¦Û 1983 ¦~°_´N¶}©l´£¨Ñ Unix ¨t²ÎªA°È¡C¤@¶}©l¡A ¥L­Ì¨Ï¥Î Altos ¨Ã°õ¦æ System III¡C¥L­Ì¦b 1991 ¦~Âà´«¨t²Î¦¨¬° BSD/OS¡C¦b 2000 ¦~¤»¤ë¡A¥L­Ì¦A«×§ó´«¦¨¬° FreeBSD¡CM-Net ¯àÅý¨Ï ¥ÎªÌ³z¹L SSH ¤Î telnet ³s½u¨ì¥D¾÷¡A¨Ã´£¨Ñ§¹¾ãªº FreeBSD ³nÅé¥H ¨Ñ¨Ï¥Î¡CµM¦Ó¡AM-Net §@¬°¤@­Ó«D¬Õ§Q²Õ´¹B¦æ¡A¦s¨úÅv¥u­­©ó¦¨­û©M ÃÙ§UªÌ¡AM-Net ¤]´£¨Ñ BBS ¨t²Î©Mºô¸ô²á¤ÑªA°È¡C

Grex ´£¨Ñ¤F«D±` Ãþ¦ü M-Net ªºªA°È¡A¥]¬A¤F BBS ¨t²Î©Mºô¸ô²á¤Ñ¡CµM¦Ó¡A¾÷¾¹¬O¨Ï¥Î Sun 4M¡A¨Ã°õ¦æ SunOS¡C

16.11. ¤°»ò¬O sup¡A§Ú¸Ó¦p¦ó¨Ï¥Î¥¦¡H

SUP ªº·N«ä¬O Software Update Protocol¡A¥Ñ CMU µo®i¡A ¥Î¨Óºû«ù¾ã­Óµo®iªº¦P¨B¡C§Ú­Ì§Q¥Î¥¦«O«ù»·ºÝªº¯¸¥x©M­ì©l¯¸¥x¤§¶¡ ªº¦P¨B¤u§@¡C

µM¦Ó¡ASUP ¦bÀW¼eªº¨Ï¥Î¤W¨Ã¤£¤Ó¤Íµ½¡A¦P®É¡A¥Ø«e¤]¤£¦A¨Ï¥Î¤F¡C ¥Ø«e«ØÄ³ºû«ù­ì©l½X¦P¨B§ó·sªº¤èªk¬O CVSup¡C

16.12. ³o­Ó¥i·Rªº¤p¬õ¤H¥s§@¤°»ò¡H

¦ü¥G¡A¥L¨Ã¨S¦³¤@­Ó¥¿¦¡ªº¦W¦r¡A©h¥B´NºÙ¨ä¬° ¡§BSD ¤p´cÅ]¡¨ §a¡C¦pªG§A°õ·N­n¨Ï¥Î¤@­Ó¦W¦r¡C¨º´N¥s¥L ¡§¤p°Êª«(beastie)¡¨ §a¡Cµù¡G¡§beastie¡¨ ¦bŪ­µ¤W¸ò ¡§BSD¡¨ «Ü±µªñ¡C

§A¥i¥H¦bBSD¤p´cÅ]ªº ¥D­¶ ¤W¨ú±o§ó¦hªº¸ê°T¡C

16.13. §Ú¯à¨Ï¥Î BSD ¤p´cÅ]¹Ï®×¶Ü¡H

¤]³\§a¡A§Ú¤]¤£½T©w¡CBSD¤p´cÅ]¹Ï®×ªºª©Åv¬OÄݩ󰨷²º¸Ä¬®æÄõ±Ð·|ªº Marshall Kirk McKusick ©Ò¾Ö¦³¡C§A¥i¥H¸ÕµÛ¥h¬d¬Ýºô­¶Ãö©óBSD¤p´cÅ]¨v¹³ ¥H¨ú±o§ó¸Ô²Óªº¨Ï¥Î²Ó¸`¡C

Á`¦Ó¨¥¤§¡A¦pªG§A¯Âºé¬°¤F¦Û¤v·Q­nŲ½à¡A¨º»ò¡A§A¥i¥H¦Û¥Ñªº¨Ï¥Î¨v¹³¡C¦pªG§A¬O­Ó¤H¨Ï¥Î¡A¥u­n±¡ªp¾A·í¡AÀ³¸Ó³£·|³Q³\¥i¡C ¦pªG§A·Q¦b°Ó·~¤W¨Ï¥Î¡A«h§A¥²»ÝÁpôĬ®æÄõ±Ð·|ªº Kirk McKusick ¥H¨ú±o³\¥i¡C ¦pªG§A»Ý­n§ó¶i¤@¨B¸Ô²Óªº¸ê°T¡A½Ð°Ñ¦Ò BSD¤p´cÅ]ªº­º­¶¡C

16.14. §A¦³¥ô¦óªº BSD ¤p´cÅ]¹Ï®×¥i¥HÅý§Ú¨Ï¥Î¶Ü¡H

§A¥i¥H¦b /usr/share/examples/BSD_daemon/ §ä¨ì Xfig ¤Î eps ¨âºØ®æ¦¡ªº¹ÏÀÉ¡C

16.15. §Ú¦b¤å¥ó¡B¶l»¼½×¾Â¤W¡A±`·|¬Ý¨ì¤@¨ÇÁY¼g¦r¡B§Þ³N¦r·J¡A³o¨Ç¥i¥H¥h­þÃä¬d©O¡H

½Ð°Ñ¾\ FreeBSD ¦r·Jªí¡C

16.16. ¬°¤°»ò§Ú¸Ó¦b·N¸}½ñ¨®¨®´×ªºÃC¦â¡H

³Ìµu³Ìµuªºµª®×¬O¡G¡y¤£¥Î¦b·N¡z¡Cµy·Lªø¤@ÂIªºµª®×¬O¡G¡yÁöµM§A¦³¯à¤O¦Û¤v¥h«Ø³y¤@®y¸}½ñ¨®¨®´×¡A¦ý¬O¡A ³o¤£¥Nªí¦]¬°§A¤£³ßÅw²{¦b³o­Ó¨®´×ªºÃC¦â¡A´N­n¤¤¤î¥Lªº«Ø¿v¡C¡z³o­Ó¤ñ³ëªº·N«ä¬O¡A §A¤£»Ý­n¥hª§½×¨C¤@­Ó²Ó¶µ¯S¼x¡A¥u¦]¬°§A¦³¿ìªk¥h§@¥¦¡C ¬Y¨Ç¤Hªºµû½×¬O¡G¡yÂø­µªºµ{«×¡A»PÅܤƪº½ÆÂø©Ê¬O¦¨¤Ï¤ñ¡z¡C

§óªø¥B¸û§¹¾ãªºµª®×¬O¡A¦b¸g¹Lªø®É¶¡ª§½×Ãö©ó¬O§_¸Ó±N sleep(1) ªº¬í°Ñ¼Æ²¾°£¡APoul-Henning Kamp µoªí¤F¤@½gªø½× ¡§ ¦b«C»A¯ó¦a¤Wªº¸}½ñ¨®¨®´×(¥ô¦óÃC¦âªº)...¡¨¡C¥H¤U¡A¶ÈºK­n¸Ó«h¤å³¹³¡¤À¤º®e¡G

 

¡§¤°»ò¬OÃö©ó³o­Ó¸}½ñ¨®¨®´×?¡¨ ³¡¤Àªº¤H³o¼Ëªº¸ß°Ý§Ú¡C

³o¬O¤@­Ó«D±`ªø»·ªº¬G¨Æ¡A§_«h´N¬O¤@­Ó¥j¦Ñªº¬G¨Æ¡C¦ý¬O¨Æ¹ê¤W¡A ³o­Ó¬G¨Æ«D±`ªºµu¡CC¡P¿Õ´µ¬ì¯S¡P©¬ª÷´Ë(C. Northcote Parkinson) ¦b 1960 ¦~¥Nªì´Á¼g¤F¤@¥»®Ñ¡A®Ñ¦W¬° ¡§Parkinson's Law(¤¤¤å®Ñ¦W¡G¤É©x¦³¹D¡Ð¼ÉÅS¤W¥q¤ßºA¤§©¬ª÷´Ë©w«ß)¡¨ ¡A³o¥»®Ñ¥]§t¤F«Ü¦h¨ã¦³¨ô¨£ªº°ÊºAºÞ²z¾Ç¡C

[¤Þ­z¤@ÂI¦b³o¥»®Ñ¤Wªºµû½×]

¦b³o­Ó³Q±²¤J¸}½ñ¨®¨®´×®×ªº¯S®í¨Ò¤l¡A¥D­nªº­n¯À¬O®Ö¯àµo¹q³õ¡A§Ú·Q¡A³o¨¬¥H»¡©ú³o¥»®Ñªº¦~ÄÖ¡C

©¬ª÷´Ë®i¥Ü¤F¸Ó¦p¦ó¦b¸³¨Æ·|¤¤Ä¹±oÃÙ¦P¥h«Ø³y¤@®y¼Æ¦Ê¸U©Î¬Æ¦Ü¤Q»õ¬ü¤¸ªº®Ö¯àµo¹q³õ¡A ¦ý¬O¡A¦pªG§A·Q­n¥h«Ø³y¤@®y¸}½ñ¨®¨®´×¡A§A±N·|³QªÈÄñ¦bµL½aµLºÉªº°Q½×¤§¤¤¡C

¥L(©¬ª÷´Ë)¨Ã¸ÑÄÀ¡A³o¬O¦]¬°¤@­Ó®Ö¯àµo¹q³õ¬O³o¼Ëªº¼sÁï¡A³o¼Ëªº©ù¶Q¡A¨Ã¥B³o¼Ëªº½ÆÂø¡A ¥H¦Ü©ó¤H­ÌµLªk´x´¤¥¦¡A¦Ó¨Ã«D¹Á¸Õ¡A¥L­Ì«æ¤Áªº§Æ±æ¦³¤H¯à°÷À°¥L­Ì³B²z¨Ã¸Ñ¨M©Ò¦³º¾¸Hªº²Ó¶µ¡C Richard P. Feynmann µ¹¤F¤@¨Ç¦³½ì¡A¥B«D±`¤@°w¨£¦åªº½×ÂI¡A¦b¥Lªº®Ñ´£¨ì¤F Los Alamos ªº¨Ò¤l¡C

¥t¤@¤è­±¡A¥ô¦ó¤H³£¯à¦Û¤v¦b¶g¥½²Õ¸Ë¤@®y¸}½ñ¨®¨®´×¥X¨Ó¡A¨Ã¥B¤´¦³¶¢²á¥i¥HÆ[½à¹qµø¤Îª±¹CÀ¸¡C ¦]¦¹¡AµL½×§A§@¤F¦h»ò§¹µ½ªº·Ç³Æ¡A¤]¤£ºÞ§A´£¥Xªº¤è®×¬O¦h»òªº§´·í¡A¬Y¨Ç¤H¤´±N§ì¦í¾÷·|¶]¥X¨Ó§i¶D§A¡A ¥L¥¿¦b§@¦P¼Ëªº¨Æ¡A¥¿¦b¥I¥X§V¤O¡A¥L´N¦b ³o¸Ì¡C

¦b¤¦³Á¡A§Ú­ÌºÙ³o­Ó¥s§@¡yªê¦º¯d¥Ö¡z(setting your fingerprint)¡C³oÃö«Y¨ì§A­Ó¤HªºÅº¶Æ©MÁn±æ¡A ³oÃö«Y¨ì§A¬O§_¥i¥H«üµÛ¬Y¦a«á¹ïµÛ§O¤H»¡¡G¡y³o¸Ì! ³o¬O §Ú §@ªº¡C¡z ³o¬O¬Fªv¤Hª««Ü­«­nªº¤@­Ó¯S¼x¡C¦ý¬O¡A®É¾÷¬O¤j¦h¼Æ¤H¥Á©Ò½á»Pªº¡C·Q·Q¨º¨Ç¯d¦b¤ôªd¦a¤Wªº¸}¦L§a¡C

 
--Poul-Henning Kamp on freebsd-hackers, October 2, 1999  

¥»¤å¤Î¨ä¥L¤å¥ó¡A¥i¥Ñ¦¹¤U¸ü¡Gftp://ftp.FreeBSD.org/pub/FreeBSD/doc/¡C

­Y¦³ FreeBSD ¤è­±ºÃ°Ý¡A½Ð¥ý¾\Ū FreeBSD ¬ÛÃö¤å¥ó¡A¦p¤£¯à¸Ñ¨Mªº¸Ü¡A¦A¬¢¸ß <questions@FreeBSD.org>¡C
Ãö©ó¥»¤å¥óªº°ÝÃD¡A½Ð¬¢¸ß <doc@FreeBSD.org>¡C