¡¡¡¡Èç¹ûÄú¶ÔLinux¼æÈÝģʽÊÇÈçºÎ¹¤×÷µÄ¸Ðµ½ºÃÆæ£¬Õâ½ÚÕýÊÇÄúËùÐèÒªµÄ¡£
ÏÂÃæµÄ¾ø´ó²¿·ÖÄÚÈÝÊÇÓÉ Terry Lambert<tlambert@primenet.com>
£¨Message ID:
<199906020108.SAA07001@usr09.primenet.com>£©·¢±íÔÚÓʼþÁбíFreeBSD
ÏÐÁÄÓʼþÁбíÉϵÄÄÚÈÝ×é³ÉµÄ¡£
¡¡¡¡FreeBSDÓÐÒ»¸ö¡°¿ÉÖ´ÐÐÀà¼ÓÔØÆ÷¡±¡£ËüÖ÷ÒªÊÇǶÈëÁËexecve(2)ϵͳµ÷Óá£
¡¡¡¡ÅöÇɵÄÊÇFreeBSDÓÐÒ»¸öÒýµ¼Æ÷£¨loader£©µÄÁÐ±í£¬¶ø²»ÊÇÒ»¸ö¼òµ¥µÄ·µ»ØÒ»¸ö ·ûºÅ #!µÄÒýµ¼Æ÷£¡
¡¡¡¡´ÓÀúÊ·ÉÏÀ´½²£¬Ö»ÓÐUNIX®Æ½Ì¨µÄÒýµ¼Æ÷»á¼ì²éħÊõ£¨magic£©Êý £¨Í¨³£ÊÇÎļþµÄǰ4¸ö»ò8¸ö×Ö½Ú£©ÊÇ·ñÊǶþ½øÖƵģ¬ Èç¹ûÊÇ£¬¾Íµ÷Óöþ½øÖÆÒýµ¼³ÌÐò¡£
¡¡¡¡Èç¹ûËü²»ÊǶþ½øÖÆÀàÐ͵Äexecve(2)µ÷Óþͻ᷵»ØÒ»¸ö´íÎó£¬shell¾ÍÊÔͼÓÃshellÃüÁîÖ´ÐÐËü¡£
¡¡¡¡È±Ê¡ÊÇʹÓá°µ±Ç°É趨µÄshell¡±¡£
¡¡¡¡Ëæºó£¬½øÐÐÁËһЩhack, sh(1)¿ªÊ¼¼ì²éǰÁ½¸ö×Ö·û£¬Èç¹ûËüÃÇÊÇ:\n£¬ ÄÇËü¾Íµ÷ÓÃcsh(1)£¨ÎÒÃÇÏàÐÅÊÇSCO×îÏÈ×öÕâ¸öhackµÄ£©¡£
¡¡¡¡FreeBSDÏÖÔÚËù×öµÄÊÇÓÃÒ»¸öÆÕͨµÄ#!Òýµ¼Æ÷×Ðϸ¼ì²éÒýµ¼Æ÷µÄÁÐ±í£¬ È»ºóÓɽâÊͳÌÐòÒ»¸ö½ÓÒ»¸öµØ½âÊÍ£¬·µ»Ø¸ø/bin/sh¡£
¡¡¡¡ÎªÁËÖ§³ÖLinux ABI£¬FreeBSD¾Í°ÑħÊõÊý¿´×÷Ϊһ¸ö¶þ½øÖÆELF³ÌÐò¡££¨ ÕâÑùÒ»À´£¬Ëü¾ÍʹµÃÔÚFreeBSD£¬ Solaris"£¬LinuxºÍÆäËûÈκβÙ×÷ϵͳ֮¼äֻҪʹÓÃELF¸ñʽ¾Í¶¼¿ÉÒÔ˳ÀûÔËÐУ©¡£
¡¡¡¡ELFÒýµ¼Æ÷»áѰÕÒÒ»¸öרÃŵıê¼Ç£¬ ËüÊÇÔÚELFÓ³ÏñÖеÄÒ»¸ö×¢ÊͲ¿·Ö£¬µ«ÔÚSVR4/SolarisµÄELFÖÐûÓС£
¡¡¡¡ÎªÁËÖ´ÐÐLinux³ÌÐò£¬ËüÃDZØÐë±»´òÉÏLinuxÀàÐ͵ıê¼Ç£» ʹÓÃbrandelf(1)£º
# brandelf -t Linux file
¡¡¡¡×öÍêÖ®ºó£¬ELFÒýµ¼Æ÷¾Í»á¿´µ½ÎļþÉϵÄLinuxµÄ±ê¼Ç¡£
¡¡¡¡µ±ELFÒýµ¼Æ÷¿´µ½LinuxµÄ±ê¼Ç£¬ Òýµ¼Æ÷¾Í»áÔÚproc½á¹¹ÖÐÌæ»»Ò»¸öָʾÆ÷¡£ ËùÓеÄϵͳµ÷Óþͻáͨ¹ýÕâ¸öָʾÆ÷À´Ë÷Òý£¨ÔÚÒ»¸ö´«Í³µÄ UNIXϵͳÖУ¬ Õâ¾ÍÊÇsysent[]½á¹¹¶ÓÁУ¬°üº¬ÏµÍ³µ÷Óã©¡£ ´ËÍ⣬ΪÁ˽â¾öÓÉÓÚÐźÅÔÓÂÒËùÔì³ÉµÄÏÝÚåÏòÁ¿µÄÎÊÌ⣬»áÔì³ÉÏ̵߳ľçÔö£¬ ÐèÒªÇÐ¶ÏÆäËû£¨»ò½ÏСµÄ£©ÓÉLinuxÄÚºËÄ£¿é²úÉúµÄÐÞÕý¡£
¡¡¡¡Linuxϵͳµ÷ÓÃÏòÁ¿°üº¬Ò»¸ösysent[]¼Ç¼µÄÁÐ±í£¬ ËüµÄµØÖ·Î»ÓÚÄÚºËÄ£¿éÖ®ÖС£
¡¡¡¡µ±Ò»¸öϵͳµ÷Óñ»Linux³ÌÐòµ÷ÓÃʱ£¬ÓÐȱÏݵĴúÂë»á°Ñϵͳµ÷Óù¦ÄܵÄָʾÆ÷´Óproc½á¹¹Öнâ³ý£¬ È»ºó»ñµÃLinux£¬¶ø²»ÊÇFreeBSD£¬ÏµÍ³µ÷ÓÃÈë¿Úµã¡£
¡¡¡¡ÁíÍ⣬Linuxģʽ¶¯Ì¬µØreroots²éÕÒ£»ÕâºÍÆô¶¯ÎļþϵͳµÄunion
Ñ¡ÏîÊǵÈЧµÄ£¨¼´Ê±²»ÊÇunionfsÎļþϵͳ£©¡£ Ê×ÏÈ»áÊÔͼÔÚ/compat/linux/original-path
Ŀ¼²éÕÒÎļþ£¬Èç¹ûʧ°ÜÁË£¬¾Í»áÔÚ/original-path
Ŀ¼Ï²éÕÒ¡£ÕâʹµÃÐèÒªÆäËü³ÌÐòµÄ³ÌÐò¿ÉÒÔÔËÐУ¨ÀýÈ磬Linux¹¤¾ßÁ´¶¼¿ÉÒÔÔÚLinux
ABIµÄÖ§³ÖϹ¤×÷£©¡£
Ò²¾ÍÊÇ˵Linux³ÌÐò¿ÉÒÔ¼ÓÔØºÍÖ´ÐÐFreeBSD³ÌÐò£¬Èç¹ûµ±Ç°Ã»ÓÐÏàÓ¦µÄLinux³ÌÐò£¬
ÄÇÄú¿ÉÒÔÔÚ/compat/linuxĿ¼Ê÷ÖзÅÖÃÒ»¸öuname(1)£¬Ê¹ Linux
³ÌÐò²»Òײì¾õËüÃDz¢Ã»ÓÐÔËÐÐÔÚ Linux ϵͳÉÏ¡£
¡¡¡¡ÔÚFreeBSDÄÚºËÖÐÓÐÒ»¸öLinuxÄںˣ»ÓÉÄÚºËÌṩµÄÄܹ»ÌṩËùÓзþÎñµÄ¸÷ÖÖDZÔÚ¹¦ÄÜ ÔÚFreeBSDϵͳµ÷Óñí¼Ç¼ºÍLinuxϵͳµ÷Óñí¼Ç¼֮¼äÊÇÒ»ÑùµÄ£º Îļþϵͳ²Ù×÷£¬ÐéÄâÄÚ´æ²Ù×÷£¬Ðźŷ¢ËÍ£¬System V IPC£¬...µÈµÈ¡£ ΨһµÄ²»Í¬ÊÇFreeBSD»áµÃµ½FreeBSDµÄ½ººÏ¹¦ÄÜ£¬ ¶øLinux³ÌÐò»áµÃµ½LinuxµÄ½ººÏ¹¦ÄÜ £¨´ó²¿·ÖÀϵIJÙ×÷ϵͳֻÓÐËüÃÇ×Ô¼ºµÄ½ººÏº¯Êý£¬ º¯ÊýµØÖ·ÔÚ¾²Ì¬È«¾Ö±äÁ¿sysent[]½á¹¹Êý¾ÝÀïÃæ£¬ ¶ø²»ÊǶ¯Ì¬µÄ³õʼ»¯µ½½ø³ÌµÄproc½á¹¹£©¡£
¡¡¡¡ÄÄÒ»¸öÊÇFreeBSD×Ô¼ºµÄABIÄØ£¿ÕâÎ޹ؽôÒª¡£»ù±¾ÉÏ£¬ ΨһµÄ²»Í¬ÊÇFreeBSDµÄ½ººÏ¹¦ÄÜÊDZ»¾²Ì¬Á¬½Óµ½Äںˣ¬ ¶øLinuxµÄ½ººÏ¹¦ÄÜ¿ÉÄÜÊDZ»¾²Ì¬Á¬½Óµ½Äںˣ¬ Ò²¿ÉÄÜËüÃÇͨ¹ýÒ»¸öÄÚºËÄ£¿éÀ´·ÃÎÊ¡£
¡¡¡¡ÓÐÒ»¸öÕæÕýµÄÄ£ÄâÆ÷Âð£¿Ã»ÓУ¬ËüÖ»²»¹ýÊÇÒ»¸öABIÖ´ÐлúÖÆ£¬²»ÊÇÒ»¸öÄ£ÄâÆ÷¡£
¡¡¡¡ÎªÊ²Ã´ÓÐʱËü±»½Ð×ö¡°LinuxÄ£ÄâÆ÷¡±£¿ Ö»ÊÇΪÁ˸üÈÝÒ×µØÂô³öFreeBSD°ÕÁË£¡ ʵ¼ÊÉÏ£¬ÀúÊ·ÉÏ´ÓÀ´Ã»ÓÐÃèÊöÕâÑùÒ»ÖÖÖ´ÐлúÖÆµÄÃû×Ö£¬FreeBSD²¢²»ÊÇÕæÕýµØÔËÐÐLinux³ÌÐò£¬Èç¹ûÄú²»±àÒë½ø´úÂ룬 »ò¼ÓÔØÒ»¸öÄ£¿é¡£ ¾ÍÐèÒªÓÐÒ»¸öÃû×ÖÀ´ÃèÊöÕâÑùÒ»ÖÖ¼ÓÔØ¹¦ÄÜ--Òò´Ë¾ÍÏë³öÁË¡°LinuxÄ£ÄâÆ÷¡±ÕâÑùÒ»¸öÃû×Ö¡£
±¾ÎĵµºÍÆäËüÎĵµ¿É´ÓÕâÀïÏÂÔØ£ºftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.
Èç¹û¶ÔÓÚFreeBSDÓÐÎÊÌ⣬ÇëÏÈÔĶÁÎĵµ£¬Èç²»Äܽâ¾öÔÙÁªÏµ<questions@FreeBSD.org>.
¹ØÓÚ±¾ÎĵµµÄÎÊÌâÇë·¢ÐÅÁªÏµ <doc@FreeBSD.org>.