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