FAQïŒ OS Infernoãšã¯äœã§ããããªãå¿
èŠãªã®ã§ããïŒãã¹ããããOS InfernoãããŒã ãã£ã¬ã¯ããªã«
ã€ã³ã¹ããŒã«ããã®ã§ãã·ã¹ãã ã®æ§æã«é²ãããšãã§ããŸãã
å
容
ãã£ãã¡ãªäººã®ããã«
èšäºã¯å°ãããããŸããã§ããããªããªã ãäœããããã ãã§ãªãããªãããªãããã®ä»ã®ãªãã·ã§ã³ãå©çšã§ããããåå¿è
åãã®ã€ã³ãã§ã«ãã®æäœã«é¢ãã远å ã®èª¬æãèšèŒãããŠããŸãã ã·ã¹ãã ããã°ããæ§æãããå Žåã¯ã 
æšå¥šã®/ lib / sh / profileãããŠã³ããŒãããã ãã§ãªããLinuxãŸãã¯FreeBSDãããå Žåã¯ã 
ã©ãããŒã¹ã¯ãªãããäœæããŠinfernoãå®è¡ããŸã ã
Infernoã®éå§ãšçµäº
Hostedã¯ã 
emuãŸãã¯
emu-gã³ãã³ãã§ã°ã©ãã£ãã¯ã¹ã¢ãŒãã§èµ·åãããŸãïŒã°ã©ãã£ãã¯ã¢ãŒããµããŒããªãïŒã ããã©ã«ãã§ã¯ã 
shã¯ã³ãã³ãããã³ããã 
; ããèµ·åããŠè¡šç€ºããŸã
; $ emu ; 
exitãã 
Ctrl-Dã䜿çšããŠãšã³ããªã®æ«å°ŸãããŒã¯ããããšã«ãããshã
exitã§ã
exit ïŒWindowsã§ã¯ã 
Ctrl-DåŸãããã«
EnteræŒããŸãïŒã 
shutdown -hã䜿çšããŠããŸãã¯ïŒLinux / Winã®å Žåã®ã¿ïŒ 
Ctrl-Cäœæ¥ãäžæããŠãinfernoãçµäºã§ããŸãã
çŸæç¹ã§ã¯ãããããã¹ãŠã®æ¹æ³ã®éãã«æ°ä»ãããšã¯ãããŸãã-ãããã¯ãã¹ãŠã€ã³ãã§ã«ãã®åäœã忢ããŸãã å®éã«ã¯ãã¢ã¯ãã£ããªããã»ã¹ãååšããŠããéãã€ã³ãã§ã«ãã¯æ©èœããŸãããçŸæç¹ã§ã¯ãã®ãããªããã»ã¹ã¯
shã®ã¿ã§ãã 
ndb/cs ïŒãããã¯ãŒã¯ã®æäœã«å¿
èŠãªãµãŒãã¹ãªãŸã«ããŒïŒãªã©ã®è¿œå ã®ããã»ã¹ãéå§ããå Žåã 
shãçµäºããåŸ
sh infernoã¯åŒãç¶ãæ©èœããŸããã圱é¿ãäžããããšã¯ã§ããªããªããŸãã Linux / Winã§ã¯ã 
Ctrl-Cã䜿çšããŠã€ã³ãã§ã«ãããªãã«ããããšã¯åŒãç¶ãå¯èœã§ãããFreeBSD / MacOSXã§ã¯ãã¡ã€ã³OSã䜿çšããŠemuããã»ã¹ã匷å¶çµäºããã ãã§ãã ãã¡ãããæåã«rstyxãµãŒãã¹ïŒãªã¢ãŒãã¢ã¯ã»ã¹çšã®sshã®é¡äŒŒç©ïŒãéå§ããå Žåãå¥ã®ãšãã¥ã«æ¥ç¶ããŠããªã¢ãŒãã§
shutdown -hå®è¡ã§ããŸãã
ãã1ã€ã®éãã¯ãLinuxãšFreeBSDã®å Žåã§ããã€ã³ãã§ã«ããå®äºãããšãã³ã³ãœãŒã«ã«ãKillââedããšããã¡ãã»ãŒãžã衚瀺ãããŸãã
 powerman@Ubuntu:~$ emu-g echo ok ok  powerman@Ubuntu:~$ [powerman@freebsd ~]$ emu-g echo ok ok Killed: 9 [powerman@freebsd ~]$ 
圌ããã®å®³ã¯ãªãããã®åé¡ã解決ããæ¹æ³ããããŸãã ãããè¡ãã«ã¯ãã©ãããŒã¹ã¯ãªããã/ bin / emuããã³ã/ bin / emu-gã䜿çšããŠemuãšemu-gãå®è¡ããå¿
èŠããããŸãã
 powerman@Ubuntu:~$ cat ~/bin/emu-g  
Linuxã§ã¯ããããã®ã¹ã¯ãªãããäœæããŠå®è¡å¯èœã«ããã ãã§ååã§ãããFreeBSDã§ã¯ãbashã远å ã€ã³ã¹ããŒã«ãã 
~/.bash_profile PATHå€ã倿ŽããŠããã£ã¬ã¯ããª
/home/_/bin infernoãã£ã¬ã¯ããªã®åã«ãªãããã«ããå¿
èŠããããŸãã
Emuãªãã·ã§ã³
ããã€ãã®ãã©ã¡ãŒã¿ãŒã¯ãinfernoã®éå§æã«æå®ãããŸãã ã³ãã³ãã©ã€ã³ã§æç€ºçã«æå®ãããã 
EMUç°å¢å€æ°ã«ç»é²ã§ããŸãã ãããã®ãã©ã¡ãŒã¿ãŒã®1ã€ã®ã¿ãå¿
é ã§ãïŒ 
-r//// ãã·ã¹ãã ã®ã€ã³ã¹ããŒã«äžã«ãã§ã«
EMU倿°ã«ç»é²ããŸããã 䟿å©ãªãªãã·ã§ã³ãã©ã¡ãŒã¿ã®ãã¡ã次ã®ç¹ã«èšåãã䟡å€ããããŸãã
- -g X x Yã¯ãinfernoã®ã°ã©ãã£ã«ã«ç°å¢ã®è§£å床ãèšå®ããŸããäŸïŒ- -g1024x768
- -1ã¯JITãå«ãŸããŸãïŒ- -1ããã³ããã©ãŒãã³ã¹ã®ãã¹ãæã«æå³ããããŸãïŒ
- -p pool = maxsize䜿çš- -p pool = maxsizeãšã䜿çšå¯èœãªã¡ã¢ãªããªã¥ãŒã ãå¶åŸ¡ã§ã- -p pool = maxsizeããŒã«ã®å€ã¯- mainã- heapãŸãã¯- imageã«ã§ããŸããããšãã°ã倧éã®ããŒã¿ãåŠçããå¿
èŠãããå Žåã¯ãããŒãã128MBã«å¢ããããšãã§ããŸãã- -p heap=134217728
emuãã©ã¡ãŒã¿ã®è©³çްã«ã€ããŠã¯ã 
emuïŒ1ïŒã®ããã¥ã¢ã«ããŒãžãåç
§ããŠãã ããã
äžéšã®ãã©ã¡ãŒã¿ãŒã®çŸåšã®å€ã¯ãinfernoå
ã«ãããŸãã
 ; echo $emuroot /home/powerman/inferno ; echo $emuargs emu -g1024x768 -c1 ; cat /dev/memory 277568 33554432 328032 3303 1490 1 33276852 main 52544 33554432 78496 1650 1271 1 33501876 heap 0 33554688 0 0 0 0 33554676 image 
ã芧ã®ãšããïŒæåŸãã2çªç®ã®åïŒãããã©ã«ãã§ã¯ãinfernoã¯åã¡ã¢ãªããŒã«ã«32MB以äžãã䜿çšããŸããã
 ; cat /dev/jit 0; echo 1 >/dev/jit ; cat /dev/jit 1; echo 0 >/dev/jit ; cat /dev/jit 0; 
JITã¯åçã«ãªã³/ãªããåãæ¿ããããšãã§ããŸããã倿ŽãããJITå€ã¯ããã®å€æŽåŸã«ããŒããããã¢ãžã¥ãŒã«ã«ã®ã¿åœ±é¿ããŸãïŒããã°ã©ã ãšã©ã€ãã©ãªã«éãã¯ãããŸããããã¹ãŠããŒãå¯èœãªã¢ãžã¥ãŒã«ã§ãïŒã ãããã£ãŠã 
emuãã©ã¡ãŒã¿ãŒã§JITå€ãæå®ããããšãã
emuãŸãã
/ lib / sh /ãããã¡ã€ã«
infernoãèµ·åãããšã 
emuinitã§
emuinitãèµ·åãã 
sh -lãèµ·åã
emuinit ã 
-lã¯ã 
/lib/sh/profileããã³ãã³ããå®è¡ããããã«shã«æç€ºã
/lib/sh/profile ã ãã®ãã¡ã€ã«ã¯* NIXããŒãã¹ã¯ãªããã®é¡äŒŒç©ã§ãããinfernoãã»ããã¢ããããã³åæåããããã®ã³ãã³ãã远å ããŸãïŒãã®ãã¡ã€ã«ã«ã¯ã³ãã³ãã¯ãããŸããïŒã
emuãã©ã¡ãŒã¿ãŒã§éå§ããã¢ããªã±ãŒã·ã§ã³ã®ååãæå®ããŠå
éšçã«éå§ããå Žåã 
/lib/sh/profileããã®ã³ãã³ãã¯å®è¡ãããªãããšã«æ³šæããŠãã ããïŒæç€ºçã«ããŒãããªãéãïŒã äŸïŒ
 $ emu-g ; cat /lib/sh/profile  
ã¿ã€ã ãŸãŒã³
çŸåšã®ãŸãŒã³ã¯file 
/locale/timezoneã«ãã£ãŠæ±ºå®ãããå©çšå¯èœãªãªãã·ã§ã³ã¯
/locale/ãã£ã¬ã¯ããªã«ããä»ã®ãã¡ã€ã«ã®ååãèŠãããšã§èŠãããšãã§ããŸãã åŸæ¥ã®ãªãã¬ãŒãã£ã³ã°ã·ã¹ãã ã§ã¯ããã¡ã€ã«
/locale/_ã
/locale/timezoneäžã«ã³ããŒããã ãã§ãã infernoã§ããããè¡ãããšãã§ããŸãããinfernoã®ã¿ã€ã ãŸãŒã³ã倿Žããããèªç¶ãªæ¹æ³ã¯ã 
bindïŒ1ïŒã§åå空éã倿Žããããšã§ãïŒ
 ; date Sun Jun 17 19:00:28 BST 2012 ; bind /locale/EET /locale/timezone ; date Sun Jun 17 21:00:39 EEST 2012 
ãŸãŒã³ãèŠã€ããŠ
/lib/sh/profile远å ã
/lib/sh/profile ïŒ
 bind /locale/_ /locale/timezone 
/ã¡ãã
/lib/sh/profileã«è¿œå ããå¥ã®äŸ¿å©ãªã³ãã³ãã¯æ¬¡ã®ãšããã§ãã
 bind -b '#s' /chan 
srvïŒ3ïŒãã©ã€ããŒã/ chanãã£ã¬ã¯ããªãŒã«æ¥ç¶ããŸãã infernoå¥çŽã§æ¡çšãããå¥çŽã«åŸã£ãŠãä»®æ³ãã¡ã€ã«ããã®ãã£ã¬ã¯ããªã«äœæãããŸãããã®èªã¿åã/æžã蟌ã¿ã¯ãsrvãã©ã€ããŒã«ãã£ãŠããã£ãã«ãä»ããŠãããã®ãã¡ã€ã«ãåŠçããããã»ã¹ã«éä¿¡ãããã¡ãã»ãŒãžã«å€æãããŸãã ãã®ãããªãã¡ã€ã«ïŒLimboã®
file2chanïŒ2ïŒãŸãã¯shã®
file2chanïŒ1ïŒã§äœæïŒã䜿çšããããšããinfernoã§ãã¡ã€ã«ãµãŒããŒãå®è£
ããæãç°¡åãªæ¹æ³ã§ãã
ããŒã ãã£ã¬ã¯ããª
InfernoãŠãŒã¶ãŒã®ããŒã ãã£ã¬ã¯ããªã¯
/usr/ãã£ã¬ã¯ããªã«ãããŸãã ããã©ã«ãã§ã¯ã 
inferno/ãµããã£ã¬ã¯ããªã¯1ã€ã ãã§ããããã¯ãåºæ¬çã«ä»ã®ãŠãŒã¶ãŒã®ããŒã ãã£ã¬ã¯ããªãäœæããããã®ãã³ãã¬ãŒãã§ãã ãããã£ãŠãã¡ã€ã³OSã®ã¢ã«ãŠã³ãã®ã¿ãã€ã³ãã§ã«ããšåŒã°ããªãå Žåã:)ãŸã ã€ã³ãã§ã«ãã«ç¬èªã®ããŒã ãã£ã¬ã¯ããªããããŸããã
 $ emu ; pwd / ; cd cd: /usr/powerman: '/usr/powerman' does not exist ; 
ãããäœæããæãç°¡åãªæ¹æ³ã¯ãåã«
/usr/inferno/ã
/usr/__/ /usr/inferno/ã«ã³ããŒããããšã§ãïŒå®éãããã¯inernoã«æ°ãããŠãŒã¶ãŒã¢ã«ãŠã³ãã远å ããæ¹æ³ã§ãïŒã ããããå¥ã®ãããæè»ã§å¹ççãªæ¹æ³ã§é²ã¿ãŸã-ãŠãŒã¶ãŒã®ããŒã ãã£ã¬ã¯ããªãšããŠãã¡ã€ã³OSã§ã®å®éã®ãŠãŒã¶ãŒã®ããŒã ãã£ã¬ã¯ããªã«æ¥ç¶ããŸãïŒããã³/ usr / inferno /ããã®ãã¡ã€ã«ãšãµããã£ã¬ã¯ããªã¯ãã¡ã€ã³OSã®å®éã®ããŒã ãã£ã¬ã¯ããªã«ã³ããŒã§ããŸãïŒã
 $ pwd /home/powerman $ emu ; mount {mntgen&} /usr ; bind -c '#U*/home/powerman' /usr/powerman ; cd ; pwd /usr/powerman 
mntgenïŒ4ïŒãã¡ã€ã«ãµãŒããŒã¯ããã£ã¬ã¯ããªïŒããŠã³ããã€ã³ãïŒãäœæããªãããã«å¿
èŠã§ãããããã¯ã誰ããé£çµ¡ãããšãã«mntgenãæ¥ç¶ãããŠãããã£ã¬ã¯ããªã«èªåçã«è¡šç€ºãããŸãã ç§ãã¡ã®å ŽåïŒInferno OSãããŒã ãã£ã¬ã¯ããªã«ã€ã³ã¹ããŒã«ãããŠããå ŽåïŒãmntgenã䜿çšãã代ããã«ã 
~/inferno/usr/powerman/ãåçŽã«äœæããããšãã§ããŸãããinfernoã
/usr/local/inferno/ã«ã·ã¹ãã å
šäœã®ã«ãŒãã«ãã£ãŠã€ã³ã¹ããŒã«ãããå Žåããã®å Žåããã£ã¬ã¯ããª
/usr/local/inferno/usr/powerman/ãäœæããããã®ååãªæš©éããªããinfernoã«æ°ãããŠãŒã¶ãŒã远å ããã«ã¯ã«ãŒãæš©éãå¿
èŠã«ãªããŸãã ãŸããmntgenã䜿çšãããšãã«ãŒããªãã§ãã®åé¡ã解決ããä»®æ³ãã£ã¬ã¯ããªãäœæã§ããç©çãã£ã¬ã¯ããªãäœæã§ããŸããã
æè»æ§ãé«ããããã«ãç°å¢å€æ°INFERNO_HOMEã®ãµããŒãã远å ããŸãã空ã§ãªãå Žåããã®å€æ°ã§æå®ããããã¹ã¯ããŒã ãã£ã¬ã¯ããªã«æ¥ç¶ãããŸãã ãããã£ãŠã 
/lib/sh/profileã«è¿œå ã
/lib/sh/profile ã
... * NIX
 ( home unused ) := `{os sh -c 'echo $INFERNO_HOME $HOME' </dev/null} home = '#U*'^$home user := `{cat /dev/user} mount {mntgen&} /usr bind -c $home /usr/$user cd 
...åã€
 home := `{os cmd /C 'IF DEFINED INFERNO_HOME ( echo %INFERNO_HOME:\=/% ) ELSE ( echo %USERPROFILE:\=/% )'} home = '#U'^$home user := `{cat /dev/user} mount {mntgen&} /usr bind -c $home /usr/$user cd 
ãŠãŒã¶ãŒèšå®
/lib/sh/profileã«è¿œå ããæåŸã®æå³ã¯ã远å ã®ãŠãŒã¶ãŒèšå®ã®ãµããŒãã§ãã
 load std and {ftest -d tmp} {bind -c tmp /tmp} and {ftest -e namespace} {nsbuild} and {ftest -e profile} {run profile} 
andã³ãã³ãã䜿çšã§ããããã«ãã·ã§ã«ã¢ãžã¥ãŒã«
stdãããŒãããå¿
èŠããããŸãïŒifããã³&&ã®ã¢ããã°ïŒã ãŠãŒã¶ãŒã®ããŒã ãã£ã¬ã¯ããªã«
tmp/ãµããã£ã¬ã¯ããªãããå Žåãã·ã¹ãã 
/tmp/æ¥ç¶ãããŸãïŒãã®å Žåãããã¯ç¹ã«å¿
èŠã§ã¯ãããŸããããã·ã¹ãã å
šäœã§
/usr/local/inferno/ã«infernoãã€ã³ã¹ããŒã«ããå Žåã¯ãæžãèŸŒã¿æš©éããããŸãã
/usr/local/inferno/tmp/ãã®ã³ãã³ããå¿
èŠã«ãªããŸãïŒã ãŠãŒã¶ãŒã®ããŒã ãã£ã¬ã¯ããªã«
namespaceãš
profileãã¡ã€ã«ãããå Žåãããããå®è¡ãããŸãã
ããŠã³ããŒããã
䟿å®äžãæšå¥šããã
/lib/sh/profileãããŠã³ããŒãã§ããŸãã 
* NIX ã 
Win ïŒãŸãŒã³ãGMTããç¬èªã®ãã®ã«å€æŽããããšãå¿ããªãã§ãã ããïŒã
GUIïŒwm / wmïŒ
wm / wmãèµ·åãããšããŠãŒã¶ãŒã®ããŒã ãã£ã¬ã¯ããªã«ãã
/lib/wmsetupãšãããããã°
/lib/wmsetupãå®è¡ãããŸãã 
é
管工ã®èšå®ã¯ããŠãŒã¶ãŒã®ããŒã ãã£ã¬ã¯ããªã®
./lib/plumbingã«ãããŸãïŒ 
/usr/inferno/ããããŒã ãã£ã¬ã¯ããªã«ã³ããŒããããšãå¿ããªãã§ãã ããïŒã çŸåšãããã®ãã¡ã€ã«ã«äœããèšå®ããå¿
èŠã¯ãããŸãããããããã©ãã«ããããç¥ããäœãå«ãŸããŠãããã確èªããããã«ãããã«ã€ããŠèšåããŸããã
èªèšŒçšã®ããŒ
ããŒã¯ããã©ã«ãã§ããŒã ãã£ã¬ã¯ããªã®
./keyring/ãµããã£ã¬ã¯ããªããæžã蟌ãŸãã䜿çšãããŸãã å€ãèšäºã§ã 
èªèšŒãã€ã³ãã§ã«ãã«
ã©ã®ããã«é
眮ãããŠãããã«ã€ããŠæ¢ã«
説æããŸããã ãããã«ãã¹ãŠãã³ããŒããæå³ã¯ããããŸããã
ãããã¯ãŒã¯
ååãšããŠããã¹ããããã€ã³ãã§ã«ããããã¯ãŒã¯ãæ§æããå¿
èŠã¯ãããŸããã ããšãã°ã 
ya.ruã ïŒIPã§ïŒããŠã³ããŒãããŸãã
 $ emu ; webgrab -rv -o /dev/null 87.250.251.3 connecting to 87.250.251.3 writing request: GET / HTTP/1.0 Host: 87.250.251.3 User-agent: Inferno/webgrab Cache-Control: no-cache Pragma: no-cache response: HTTP/1.1 200 Ok created /dev/null, 7383 bytes 
ãã ããååã®IPãžã®å€æããµããŒãããã«ã¯ã 
ndb/csãéå§ããå¿
èŠããã
ndb/cs ã
 ; ndb/cs ; webgrab -rv -o /dev/null ya.ru connecting to ya.ru writing request: GET / HTTP/1.0 Host: ya.ru User-agent: Inferno/webgrab Cache-Control: no-cache Pragma: no-cache response: HTTP/1.1 200 Ok created /dev/null, 7689 bytes 
csïŒ8ïŒãµãŒãã¹ã¯ããã¡ã€ã«
/lib/ndb/common ïŒ* NIXã®
/etc/servicesã«é¡äŒŒïŒã 
/lib/ndb/inferno ïŒè£èª
/lib/ndb/common infernoåºæã®ããŒããš
/lib/ndb/common ïŒããã³
/lib/ndb/local ã
ãã¡ã€ã«
/lib/ndb/localãäž»ãªãã®ã§ã-ããŒã«ã«èšå®ã ãã§ãªããäžèšã®ä»ã®ãã¡ã€ã«ãæ¥ç¶ããŸãã 
infernosite=ã»ã¯ã·ã§ã³ã§ã¯ããµãŒããŒã®ççž®åãšãã®å®éã®ååãŸãã¯IPã¢ãã¬ã¹ãšã®å¯Ÿå¿ãèšå®ã§ããŸãã æãäžè¬çã«äœ¿çšãããççž®åã¯ã 
CA ïŒèªèšŒå±ïŒããã³
ã¬ãžã¹ããªïŒ4ïŒãµãŒãã¹ãæã€ãµãŒããŒã瀺ãSIGNERããã³ã¬ãžã¹ããªã§ãã çãååã§æ¥ç¶ããã«ã¯ããã®åã«ã 
$ ãèšå·ã远å ããå¿
èŠããããŸãã ããšãã°ãYandexã®ååã远å ããŸãããã
 $ emu ; cat /lib/ndb/local ... infernosite= ... Yandex=www.yandex.ru ; ndb/cs ; webgrab -rv -o /dev/null '$Yandex' connecting to $Yandex writing request: GET / HTTP/1.0 Host: $Yandex User-agent: Inferno/webgrab Cache-Control: no-cache Pragma: no-cache response: HTTP/1.1 200 Ok created /dev/null, 7378 bytes 
ãã¡ã€ã«
/lib/ndb/servicesã¯ã* NIX 
/etc/services圢åŒã®infernoããŒãåºæã®èª¬æãå«ãŸããŠ
/etc/servicesãŸãã ã¡ã€ã³OSããinfernovyeãµãŒãã¹ã«æ¥ç¶ããæ¹ã䟿å©ã«ãªãããã«ãã¡ã€ã³OSã®
/etc/servicesã«è¿œå ããããšã¯çã«ããªã£ãŠããŸãã
 cat ~/inferno/lib/ndb/services | sudo bash -c 'cat >>/etc/services' 
OS Infernoã¢ããããŒã
ã·ã¹ãã ãæŽæ°ããã«ã¯ãã€ã³ã¹ããŒã«äžã«äœ¿çšããã®ãšåãã³ãã³ããç¹°ãè¿ãã ãã§ãã
... * NIX
 cd ~/inferno hg pull -uv mk nuke mk install  
...åã€
ãWindows SDK 7.1ã³ãã³ãããã³ãããïŒãŸãã¯ãVisual Studioã³ãã³ãããã³ããïŒ2010ïŒã-ã€ã³ã¹ããŒã«ããå
容ã«å¿ããŠïŒãèµ·åããŸãã
 cd \inferno hg pull -uv mk nuke mk install