Chapter 8 kernel ³]©w

Kang-min Liu
8.1. §Ú·Q¦Û­q kernel¡A³o·|«Ü§xÃø¶Ü¡H
8.2. §Úªº®Ö¤ß¦]¬° _hw_float¿ò¥¢¦Ó½sĶ¥¢±Ñ¡C ¸Ó«ç»ò­×¥¿©O¡H
8.3. ¬°¤°»ò³y¥X¨Óªº kernel ³o»ò¤j (10MB ¥H¤W) ¡H
8.4. ¬°¦ó¥X²{¤F multi-port serial code ªº¤¤Â_½Ä¬ð¡H
8.5. ¬°¤°»ò§Ú¤@­Ó kernel ³£½s¤£°_¨Ó¡H¬Æ¦Ü GENERIC ¤]¤£¦æ¡H

8.1. §Ú·Q¦Û­q kernel¡A³o·|«Ü§xÃø¶Ü¡H

¤£·|¡I½Ð¬d¾\ ¨Ï¥Î¤â¥U¤¤ªº kernel ³]©w¤@¸`¡C

Note: §Ú·|«ØÄ³§A¦b§AÅý®Ö¤ß¯à¥¿±`¤u§@«á¡A°µ¤@­Ó kernel.YYMMDD ¤é´Á§Î¦¡ªº³Æ¥÷¡A¦P®É¤]³Æ¥÷ /module³o­Ó¥Ø¿ý¦Ü /modules.YYMMDD¡C³o¼Ë¤U¦¸¦pªG§A«Ü¤£©¯ªºª± Ãa¤F³]©w¡A¦Ü¤Ö¥i¥H¤£»Ý­n¨Ï¥Î³Ì­ì©lªº kernel.GENERIC¡C¦p§A¥¿±q¤@­Ó GENERIC kernel ¸Ì­±¤£¤ä´©ªº±±¨î¾¹¸Ì±Ò°Ê®É¡A³o´NÅã±o¯S§O­«­n¡C

8.2. §Úªº®Ö¤ß¦]¬° _hw_float¿ò¥¢¦Ó½sĶ¥¢±Ñ¡C ¸Ó«ç»ò­×¥¿©O¡H

Åý§Ú²q¬Ý¬Ý¡A§A§â npx0 (¸Ô¨£ npx(4)) ±q§Aªº kernel ³]©wÀɲ¾°£¤F¡A¦]¬°§A¨S¦³¼Æ¾Ç¹Bºâ¾¹¡A ¹ï¶Ü¡H¿ù¤F¡I:-) ³o­Ó npx0¬O ¥²¶·­n¦³ªº¡C´Nºâ§A¨S¦³¼Æ¾Ç¹Bºâ¾¹¡A§AÁÙ¬O ¥²¶· ¤Þ¤J npx0 ¸Ë¸m¡C

8.3. ¬°¤°»ò³y¥X¨Óªº kernel ³o»ò¤j (10MB ¥H¤W) ¡H

³o«Ü¦³¥i¯à¬O¦]¬°¡A§A§â kernel ½s¦¨ °»¿ù¼Ò¦¡ ¤F¡C°»¿ù¼Ò¦¡¤§¤Uªº kernel ¸Ì­±·|¦sµÛ°»¿ù¥Îªº³\¦h²Å¸¹¡A¦]¦¹·|¤j´T ¼W¥[ kernel ªº¤j¤p¡C¦pªG»¡§Aªº FreeBSD ¬O 3.0 ¥H«áªºª©¥»¡A³o¹ï©ó ®Ä¯à¨Ó»¡¼vÅT¨Ã¤£¤j¡A´X¥G¬O¨S¦³¡C¦Ó¦b¨t²Î·|¦]¬Y¨Ç­ì¦] panic ®É¡A ¦³­Ó°»¿ù¼Ò¦¡ªº kernel ¦b¤]®¼¦³¥Îªº¡C

¤£¹L©O¡A¦pªG§AªººÏºÐªÅ¶¡«Ü¤p¡A©ÎªÌ§A´N¬O¤£·Q¥Î°»¿ù¼Ò¦¡ªº kernel ªº¸Ü¡A½Ð½T»{¥H¤U¨Æ±¡¡G

  • kernel ³]©wÀɸ̭±¨S¦³³o¤@¦æ¡G

    makeoptions DEBUGS=-g 
    
  • °õ¦æ config(8) ®É¨S¦³¥[¤W -g ³o­Ó¿ï¶µ¡C

¥H¤W¨â¥ó¨Æ±¡³£·|Åý§A½s¥X¤@­Ó°»¿ù¼Ò¦¡ªº kernel¡C¦ý¥u­nÁ×§K¤§¡A ´N¥i¥H½s¥X¤@­Ó¥¿±`ªº kernel¡A¦Ó§A¤]·|ª`·N¨ì¡Akernel ©úÅ㪺Åܤp¤F¡F ¤j³¡¥÷ªº kernel ³£®t¤£¦h¦b 1.5MB ¨ì 2MB ¤§¶¡¡C

8.4. ¬°¦ó¥X²{¤F multi-port serial code ªº¤¤Â_½Ä¬ð¡H

·í§Ú½sͤ@­Ó multi-port serial code ªº®Ö¤ß®É¡A¥¦§i¶D§Ú¥u¦³ ²Ä¤@­Ó³Q°»´ú¨ì¡A¨ä¥Lªº«h¦]¤¤Â_½Ä¬ð¦Ó¸õ¹L¤F¡A§Ú¸Ó«ç»ò­×¥¿¥¦¡H

³o­Ó°ÝÃD¬O¦]¬° FreeBSD ¨Ï¥Î¤º«Øµ{¦¡½XÁ×§K¦]¬°µwÅé©Î³nÅé½Ä¬ð ¾É­P kernel ¹L©óªÎ¤j©ÎµL¥Î¡C­n­×¥¿³oºØ±¡§Îªº¤èªk¬O°£¤F¤@­Ó port ¥~§â¨ä¥L©Ò¦³ªº IRQ ³]©w³£°µ«O¯d¡C³o¸Ì¦³¤@­Ó½d¨Ò¡G

#
# Multiport high-speed serial line - 16550 UARTS
#
device sio2 at isa? port 0x2a0 tty irq 5 flags 0x501 vector siointr
device sio3 at isa? port 0x2a8 tty flags 0x501 vector siointr
device sio4 at isa? port 0x2b0 tty flags 0x501 vector siointr
device sio5 at isa? port 0x2b8 tty flags 0x501 vector siointr

8.5. ¬°¤°»ò§Ú¤@­Ó kernel ³£½s¤£°_¨Ó¡H¬Æ¦Ü GENERIC ¤]¤£¦æ¡H

³o¦³«Ü¦hºØ¥i¯àªº­ì¦]¡G

  • §A¨S¦³¥Î·sªº make buildkernel »P make installkernel ³o¨â­Ó¤èªk¨Ó½s¡A¦Ó¥¿¦n §Aªº¨t²Î­ì©l½Xªºª©¥»©M¥¿¦b°õ¦æªº¨t²Î®Ö¤ßª©¥»¤£¤@¼Ë (¹³¬O¡A ¦b¶] 4.0-RELEASE ªº¨t²Î¤W¹Á¸ÕµÛ½s 4.3-RELEASE)¡C¦pªG»¡§A­n¤É ¯Å¨t²Îªº¸Ü¡A½Ð°È¥²¥h¬Ý¬Ý /usr/src/UPDATING ³o­ÓÀɮסA¯S§Oª`·N³Ì«á­±ªº ¡§COMMON ITEMS¡¨ ³o­Ó¤p¸`¡C

  • §A¤w¸g¥Î¤W make buildkernel ¥H¤Î make installkernel ¤F¡A¦ý¬O¦b make buildworld ®É¥¢±Ñ¤F¡C¥i±¤ªº¬O¡A make buildkernel ­n¦¨¥\¡A»Ý­n¨Ì¿à make buildworld «á³y¥X¨Óªº¤@¨ÇÀɮסC

  • ´Nºâ¬O§A¦b½s FreeBSD-STABLE¡A ÁÙ¬O¦³¥i¯à§A§ì¨ì¤F¥¿¦b­×§ï¤¤¡A©ÎµÛ¦]¬°¬Y¨Ç½t¬G¦Ó®Ú¥»ÁÙ¨S§ï¦n ªº­ì©l½X¡FÁöµM»¡ FreeBSD-STABLE ¤j³¡¥÷ªº®É­Ô³£¬O¥i¥H½sªº¡A¦ý¥u¦³ RELEASE ¤~¬O«OÃÒ¥i¥H½sªº¡C¸I ¨ì³o­Ó°ÝÃD®É¡A¦A¦¸§ó·s­ì©l½X¨Ã¥B¦A¸Õ¸Õ¬Ý¡C¤]¦³¥i¯à¬O©ñ­ì©l½Xªº ¦øªA¾¹¥X²{¬Y¨Ç°ÝÃD¡A©Ò¥H§ó·s­ì©l½X®É¤]¸Õ¸Õ±q¤£¦P¦øªA¾¹¨Ó§ó·s¬Ý ¬Ý¡C

¥»¤å¤Î¨ä¥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