°æÈ¨ © 2006 The FreeBSD Documentation Project
$FreeBSD: doc/zh_CN.GB2312/articles/nanobsd/article.sgml,v 1.5
2011/01/02 10:59:28 delphij Exp $
FreeBSD ÊÇ FreeBSD»ù½ð»áµÄ×¢²áÉ̱ê
Ðí¶àÖÆÔìÉ̺;ÏúÉÌʹÓÃһЩ³ÆÎªÉ̱êµÄͼ°¸»òÎÄ×ÖÉè¼ÆÀ´ÕÃÏÔ×Ô¼ºµÄ²úÆ·¡£ ±¾ÎĵµÖгöÏֵģ¬ Ϊ FreeBSD Project ËùÖªÏþµÄÉ̱꣬ºóÃæ½«ÒÔ '"' »ò '®' ·ûºÅÀ´±ê×¢¡£
¡¡¡¡NanoBSD ÊÇ Poul-Henning Kamp <phk@FreeBSD.org>
ĿǰÕýÔÚ¿ª·¢µÄÒ»Ï¾ß¡£ Ëü¿ÉÒÔÓÃÀ´´´½¨ÓÃÓÚǶÈëʽӦÓÃµÄ FreeBSD ϵͳӳÏñ£¬
ÒÔ±ãÅäºÏÐäÕäÉÁ´æ (Compact Flash) ¿¨ (»òÆäËû´óÈÝÁ¿´æ´¢½éÖÊ) ʹÓá£
¡¡¡¡ÕâÒ»¹¤¾ßÒ²¿ÉÒÔÓÃÀ´¹¹½¨¶¨ÖƵݲװӳÏñ£¬ ÒÔ¼ò»¯Í¨³£³ÆÎª ¡°¼ÆËãÉ豸 (computer appliances)¡± µÄϵͳµÄ°²×°ºÍά»¤¹¤×÷¡£ ¼ÆËãÉ豸ͨ³£ÔÚ²úÆ·Öн«À¦°óÓ²¼þºÍÈí¼þ£¬ »òÕß»»ÑÔÖ®£¬ ËùÓеÄÓ¦ÓóÌÐò¶¼ÊÇÔ¤ÏÈ×°ºÃµÄ¡£ ÕâЩÉ豸¿ÉÒÔÖ±½Ó²åµ½ôß´æµÄÍøÂçÖУ¬ ²¢ (¼¸ºõÊÇ) Á¢¼´Í¶ÈëʹÓá£
¡¡¡¡NanoBSD ÌṩµÄ¹¦ÄܰüÀ¨£º
¿ÉÒÔºÍ FreeBSD Ò»ÑùʹÓà Ports ºÍÔ¤±àÒë°ü©¤©¤ ËùÓеÄÓ¦ÓóÌÐò¶¼¿ÉÒÔÔÚ NanoBSD Ó³ÏñÖÐÖ±½ÓʹÓ㬠¶ø·½Ê½Óë FreeBSD ÍêȫһÑù¡£
²»¼õÉÙ¹¦ÄÜ ©¤©¤ Äܹ»Ê¹Óà FreeBSD ×öµÄÈκι¤×÷£¬ ¶¼¿ÉÒÔÔÚ NanoBSD ÖÐʹÓ㬠³ý·ÇÄúÔÚ´´½¨ NanoBSD Ó³Ïñʱ£¬ Ã÷È·µØÉ¾È¥ËüÃÇ¡£
ËùÓжÔÏóÔÚÔËÐÐʱ¾ùÊÇÖ»¶ÁµÄ ©¤©¤ ¿ÉÒÔ°²È«µØ°ÎµôµçÔ´²åÏú¡£ ÔÚϵͳ·ÇÕý³£¹Ø±ÕÖ®ºó£¬ ÎÞÐèÔËÐÐ fsck(8)¡£
±ãÓÚÁª±àºÍ¶¨ÖÆ ©¤©¤ Ö»ÐèʹÓÃÒ»¸ö shell ½Å±¾ºÍÒ»¸öÅäÖÃÎļþ£¬ Äú¿ÉÒÔºÜÈÝÒ׵زüõºÍ¶¨ÖÆÊÊÓÚÈÎÒâÐèÇóµÄÓ³Ïñ¡£
¡¡¡¡Ò»µ©½«Ó³Ïñ´æÈë½éÖÊ£¬ ¾Í¿ÉÒÔÓÃËüÀ´Òýµ¼ NanoBSD ÁË¡£ ĬÈÏÇé¿öÏ£¬ ´óÈÝÁ¿´æ´¢Æ÷»á»®·ÖΪÈý¸öÇø£º
Á½¸öÓ³ÏñÇø£º code#1 ºÍ code#2¡£
Ò»¸öÅäÖÃÎļþÇø£¬ ÔËÐл·¾³ÖУ¬ ¿ÉÒÔ½«Æä¹Ò½Óµ½ /cfg Ŀ¼Ï¡£
¡¡¡¡ÕâЩ·ÖÇøÄ¬ÈÏÇé¿öÏÂÒÔÖ»¶Á·½Ê½¹Ò½Ó¡£
¡¡¡¡/etc ºÍ /var Ŀ¼¾ùΪ md(4) (malloc) ÅÌ¡£
¡¡¡¡ÅäÖÃÎļþ·ÖÇø±£´æÔÚ /cfg Ŀ¼¡£ Ëü°üº¬ÁËÓÃÓÚ /etc Ŀ¼µÄÎļþ£¬ ÔÚÆô¶¯Ö®ºóÔÝʱÒÔÖ»¶Á·½Ê½¹Ò½Ó¡£ Òò´Ë£¬ ÔÚÐèÒª´Ó /etc Ïò /cfg Ŀ¼¸´ÖÆËù½øÐеġ¢ Ï£ÍûÔÚÖØÆôʱ±£³Ö²»±äµÄÅäÖÃʱ£¬ ÐèÒª½øÐÐһЩ¶îÍâµÄ²Ù×÷¡£
Àý 1. ÔÚ /etc/resolv.conf ÖнøÐÐÐèÒª±£³ÖµÄÐÞ¸Ä
# vi /etc/resolv.conf [...] # mount /cfg # cp /etc/resolv.conf /cfg # umount /cfg
×¢Òâ: Ö»ÓÐÔÚϵͳÆô¶¯¹ý³ÌÖУ¬ ÒÔ¼°ÐèÒªÐÞ¸ÄÅäÖÃÎļþµÄ³¡ºÏ£¬ ²ÅÐèÒª¹Ò½Ó°üº¬ /cfg µÄÄǸö·ÖÇø¡£
ÔÚÈκÎʱºò¶¼±£³Ö¹Ò½Ó /cfg ²»ÊÇÒ»¸öºÃÖ÷Ò⣬ ÌØ±ðÊǵ±Äú°Ñ NanoBSD ·ÅÔÚ²»ÊʺϽøÐдóÁ¿Ð´²Ù×÷µÄ·ÖÇøÊ± (ÓÉÓÚÎļþϵͳµÄͬ²½½ø³Ì»á¶¨ÆÚÏòϵͳÅÌдһЩÊý¾Ý)¡£
¡¡¡¡NanoBSD Ó³ÏñÊÇͨ¹ýʹÓ÷dz£¼òµ¥µÄ nanobsd.sh shell ½Å±¾À´¹¹½¨µÄ£¬ Õâ¸ö½Å±¾¿ÉÒÔÔÚ /usr/src/tools/tools/nanobsd Ŀ¼ÖÐÕÒµ½¡£ Õâ¸ö½Å±¾½¨Á¢µÄÓ³ÏñÎļþ£¬ ¿ÉÒÔÓà dd(1) ¹¤¾ß¸´ÖƵ½´æ´¢½éÖÊÉÏ¡£
¡¡¡¡¹¹½¨ NanoBSD Ó³ÏñËùÐèµÄÃüÁîÊÇ£º
# cd /usr/src/tools/tools/nanobsd# sh nanobsd.sh
# cd /usr/obj/nanobsd.full
# dd if=_.disk.full of=/dev/da0 bs=64k
![]()
¡¡¡¡Õâ¿ÉÄÜÊÇ NanoBSD ×îÎªÖØÒª£¬ ͬʱҲÊÇÄú×î¸ÐÐËȤµÄ¹¦ÄÜ¡£ ͬʱ£¬ ÄúÔÚ¿ª·¢ NanoBSD Ó¦ÓÃʱ£¬ ÕâÒ²ÊÇÏ൱ºÄʱµÄ¹ý³Ì¡£
¡¡¡¡Ö´ÐÐÏÂÃæµÄÃüÁʹ nanobsd.sh ´Óµ±Ç°Ä¿Â¼ÖÐµÄ myconf.nano Îļþ¶ÁÈ¡ÅäÖãº
# sh nanobsd.sh -c myconf.nano
¡¡¡¡¶¨Öƹý³Ì°üº¬Á½²½£º
ÅäÖÃÑ¡Ïî
¶¨Öƺ¯Êý
¡¡¡¡Í¨¹ý¶ÔÅäÖýøÐÐÉèÖ㬠¿ÉÒÔÅäÖÃÓÃÒÔ´«µÝ¸ø NanoBSD ¹¹½¨¹ý³ÌÖÐ buildworld ºÍ installworld ½×¶ÎµÄÁª±àºÍ°²×°Ñ¡Ï ÒÔ¼° NanoBSD µÄÖ÷¹¹½¨¹ý³ÌÖеÄÑ¡Ïî¡£ ͨ¹ýʹÓÃÕâЩѡÏî¿ÉÒÔÏ÷¼õϵͳµÄ³ß´ç£¬ ʹ֮Äܹ»·ÅÈë 64MB µÄ´æ´¢¡£ Äú»¹¿ÉÒÔ½øÒ»²½Í¨¹ýÕâЩѡÏîÀ´Ï÷¼õ FreeBSD£¬ Ö±µ½ËüÖ»°üº¬ÄÚºËÒÔ¼°Á½Èý¸öÓû§»·¾³ÎļþΪֹ¡£
¡¡¡¡ÅäÖÃÎļþÖаüº¬ÓÃÒÔ´úÌæÄ¬ÈÏÖµµÄÅäÖÃÑ¡Ïî¡£ ×îÖØÒªµÄÓï¾ä°üÀ¨£º
NANO_NAME ©¤©¤ ±¾´Î¹¹½¨µÄÃû³Æ (ÓÃÓÚ´´½¨¹¤×÷Ŀ¼µÄÃû×Ö)¡£
NANO_SRC ©¤©¤ ÓÃÒÔÁª±àºÍ¹¹½¨Ó³ÏñµÄÔ´ÂëÊ÷µÄλÖá£
NANO_KERNEL ©¤©¤ ÓÃÒÔÁª±àÄں˵ÄÅäÖÃÎļþµÄÃû×Ö¡£
CONF_BUILD ©¤©¤ ÓÃÓÚ´«µÝ¸ø buildworld ¹¹½¨½×¶ÎµÄÑ¡Ïî¡£
CONF_INSTALL ©¤©¤ ÓÃÓÚ´«µÝ¸ø installworld ¹¹½¨½×¶ÎµÄÑ¡Ïî¡£
CONF_WORLD ©¤©¤ ÓÃÒÔ´«µÝ¸ø buildworld ºÍ installworld ÕâÁ½¸ö¹¹½¨½×¶ÎµÄÑ¡Ïî¡£
FlashDevice ©¤©¤ ¶¨ÒåËùÓõĽéÖÊÀàÐÍ¡£ ÒªÁË½â½øÒ»²½µÄϸ½Ú£¬ Çë²Î¿¼ FlashDevice.sub Îļþ¡£
¡¡¡¡Í¨¹ýÔÚÅäÖÃÎļþÖÐʹÓà shell º¯Êý¿ÉÒÔ½øÒ»²½Î¢µ÷ NanoBSD¡£ ÏÂÃæµÄÀý×ÓչʾÁ˶¨Öƺ¯ÊýµÄ»ù±¾Ä£Ê½£º
cust_foo () ( echo "bar=baz" > \ ${NANO_WORLDDIR}/etc/foo ) customize_cmd cust_foo
¡¡¡¡ÏÂÃæÊÇÒ»¸ö¸üÌù½üʵ¼ÊµÄÀý×Ó£¬ Ëü½«Ä¬È쵀 /etc Ŀ¼³ß´ç£¬ ´Ó 5MB µ÷ÕûΪ 30MB£º
cust_etc_size () ( cd ${NANO_WORLDDIR}/conf echo 30000 > default/etc/md_size ) customize_cmd cust_etc_size
¡¡¡¡³ý´ËÖ®Í⣬ »¹Óм¸¸öĬÈϵÄÔ¤¶¨Ò嶍֯º¯Êý£º
¡¡¡¡Í¨¹ýÔö¼Ó×Ô¶¨ÒåµÄº¯Êý£¬ ¿ÉÒÔÔÚ NanoBSD Ôö¼ÓÔ¤±àÒëµÄÈí¼þ°ü¡£ ÏÂÃæµÄº¯Êý»áÌí¼ÓλÓÚ /usr/src/tools/tools/nanobsd/packages µÄÈ«²¿Ô¤±àÒëÈí¼þ°ü£º
install_packages () ( mkdir -p ${NANO_WORLDDIR}/packages cp /usr/src/tools/tools/nanobsd/packages/* ${NANO_WORLDDIR}/packages chroot ${NANO_WORLDDIR} sh -c 'cd packages; pkg_add -v *;cd ..;' rm -rf ${NANO_WORLDDIR}/packages ) customize_cmd install_packages
¡¡¡¡ÏÂÃæÊÇÒ»¸öÓÃÓÚ¹¹½¨¶¨ÖÆµÄ NanoBSD Ó³ÏñµÄÍêÕûÀý×Ó£º
NANO_NAME=custom NANO_SRC=/usr/src NANO_KERNEL=MYKERNEL NANO_IMAGES=2 CONF_BUILD=' NO_KLDLOAD=YES NO_NETGRAPH=YES NO_PAM=YES ' CONF_INSTALL=' NO_ACPI=YES NO_BLUETOOTH=YES NO_CVS=YES NO_FORTRAN=YES NO_HTML=YES NO_LPR=YES NO_MAN=YES NO_SENDMAIL=YES NO_SHAREDOCS=YES NO_EXAMPLES=YES NO_INSTALLLIB=YES NO_CALENDAR=YES NO_MISC=YES NO_SHARE=YES ' CONF_WORLD=' NO_BIND=YES NO_MODULES=YES NO_KERBEROS=YES NO_GAMES=YES NO_RESCUE=YES NO_LOCALES=YES NO_SYSCONS=YES NO_INFO=YES ' FlashDevice SanDisk 1G cust_nobeastie() ( touch ${NANO_WORLDDIR}/boot/loader.conf echo "beastie_disable=\"YES\"" >> ${NANO_WORLDDIR}/boot/loader.conf ) customize_cmd cust_comconsole customize_cmd cust_install_files customize_cmd cust_allow_ssh_root customize_cmd cust_nobeastie
¡¡¡¡¸üРNanoBSD Ïà¶Ô¶øÑÔ½ÏΪ¼òµ¥£º
ºÍ֮ǰһÑù¹¹½¨Ð嵀 NanoBSD Ó³ÏñÎļþ¡£
½«ÐµÄÓ³Ïñ·ÅÈëÕýÔËÐÐµÄ NanoBSD É豸ÖеÄÒ»¸öδÓõķÖÇø¡£
Óë֮ǰ×î³õ°²×° NanoBSD µÄ²½ÖèÏà±È£¬ ÕâÒ»²½Öè×îÖØÒªµÄÇø±ðÔÚÓÚÕâ´Î²»Ó¦Ê¹Óà _.disk.full Îļþ (Ëü°üº¬Õû¸öÅ̵ÄÓ³Ïñ)£¬ ¶øÓ¦°²×° _.disk.image Ó³Ïñ (Õâ¸öÎļþÖУ¬ Ö»°üº¬Ò»¸öϵͳ·ÖÇø)¡£
ÖØÐÂÆô¶¯£¬ ²¢´Óа²×°µÄ·ÖÇøÖÐÆô¶¯ÏµÍ³¡£
Èç¹ûÒ»ÇÐ˳ÀûµÄ»°£¬ Éý¼¶¹¤×÷¾ÍÍê³ÉÁË¡£
Èç¹û·¢ÉúÁËÈκÎÎÊÌ⣬ Ôò¿ÉÒÔ´ÓÏÈǰµÄ·ÖÇøÆô¶¯ (ÆäÖаüº¬Á˾ɵġ¢ ¿ÉÓõÄÓ³Ïñ)£¬ À´¾¡¿ÉÄÜ¿ìµØ»Ö¸´ÏµÍ³¹¦ÄÜ¡£ ½ÓÏÂÀ´¿ÉÒÔÐÞÕýÐÂÁª±àµÄ°æ±¾ÖдæÔÚµÄÎÊÌ⣬ ²¢Öظ´Ç°Êö²½Öè¡£
¡¡¡¡ÒªÔÚÕýÔÚÔËÐÐµÄ NanoBSD ϵͳÖа²×°ÐµÄÓ³Ïñ£¬ ¿ÉÒÔʹÓÃλÓÚ /root Ŀ¼µÄ updatep1 »ò updatep2 ½Å±¾£¬ ¾ßÌåʹÓÃÄÄÒ»¸ö½Å±¾£¬ È¡¾öÓÚÕýÔÚÔËÐеÄϵͳλÓÚÄǸö·ÖÇø¡£
¡¡¡¡ËæÊ±ÌṩРNanoBSD Ó³ÏñËùÌṩµÄ·þÎñ£¬ ÒÔ¼°²ÉÓõĴ«Êä·½·¨µÄ²»Í¬£¬ Äú¿ÉÒԲο¼²¢Ê¹ÓÃÏÂÁÐÈýÖÖ·½Ê½Ö®Ò»£º
¡¡¡¡Èç¹û´«ÊäËÙ¶ÈÊǵÚÒ»ÒªÎñ£¬ ²ÉÓÃÏÂÃæµÄÀý×Ó£º
# ftp myhost get _.disk.image "| sh updatep1"
¡¡¡¡Èç¹û¸üÇãÏòÓÚ°²È«´«Ê䣬 Ó¦²Î¿¼ÏÂÃæµÄÀý×Ó£º
# ssh myhost cat _.disk.image.gz | zcat | sh updatep1
¡¡¡¡Èç¹ûÔ¶³ÌÖ÷»ú¼È²»Ìṩ ftp(1) ·þÎñ£¬ Ò²²»Ìṩ sshd(8) ·þÎñ£º
¿ªÊ¼Ê±£¬ ÔÚÌṩӳÏñµÄÖ÷»úÉÏ¿ªÆô TCP ¼àÌý£¬ ²¢ÁîÆä½«Ó³ÏñÎļþ·¢¸ø¿Í»§»ú£º
myhost# nc -l 2222 < _.disk.image
×¢Òâ: ÇëÈ·ÈÏÄúËùʹÓõĶ˿ÚûÓÐͨ¹ý·À»ðǽ×èÖ¹À´×Ô NanoBSD ¿Í»§»úµÄÁª½ÓÇëÇó¡£
Á¬½Óµ½ÌṩÐÂÓ³Ïñ·þÎñµÄÖ÷»ú£¬ ²¢Ö´ÐÐ updatep1 ½Å±¾£º
# nc myhost 2222 | sh updatep1
±¾ÎĵµºÍÆäËüÎĵµ¿É´ÓÕâÀïÏÂÔØ£ºftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.
Èç¹û¶ÔÓÚFreeBSDÓÐÎÊÌ⣬ÇëÏÈÔĶÁÎĵµ£¬Èç²»Äܽâ¾öÔÙÁªÏµ<questions@FreeBSD.org>.
¹ØÓÚ±¾ÎĵµµÄÎÊÌâÇë·¢ÐÅÁªÏµ <doc@FreeBSD.org>.