$B1~MQItLg(B : Linux$B%(%_%e%l!<%7%g%s4D6-(B Emulin
A-4085FEE44F971B0C
$B@>;3(B $B@69a(B
kiyoka@sa.uno.ne.jp


$B35MW(B

Emulin $B$O(B Linux $B$N%"%W%j%1!<%7%g%s$rF0:n$5$;$k$3$H$N$G$-$k%(%_%e%l!<%7%g%s4D6-$G$"$k!#(B Emulin $B$K$O

Emulin $B$OBeI=E*$J(BUNIX$B$G$"$k(BLinux$B4D6-$r(BJava$B$G

1. $BGX7J(B

1.1 UNIX$B7O(BOS $B%(%_%e%l!<%?$NI,MW@-(B

UNIX$B7O(BOS$B$K$O$9$0$l$?%=%U%H%&%'%"$,?tB?$/B8:_$9$k!#$7$+$7(BUNIX$B<+BN$NIa5ZN($OB>$N(BOS$B$K5Z$P$J$$!#(B $B$h$C$F!"(BUNIX$BMQ$NM%$l$?%=%U%H%&%'%"$O!"B>$N(BOS$B$K0\?"$5$l$k$3$H$,B?$$!#(B
$B$7$+$7!"8DJL$K0\?"$5$l$k$3$H$,B?$/!"$=$l$K$O
  1. $B0\?"$K$O>/$J$+$i$:%3%9%H$,$+$+$k!#(B
  2. $B0lEY0\?"40N;$7$F$b!"%*%j%8%J%k$N%=%U%H%&%'%"JQ99$KDI=>$5$;$k$?$S$K%3%9%H$,$+$+$k!#(B
  3. $B0\?"$GF@$i$l$?@.2L$O$=$N:n6H8DJL$N$b$N$G=*$k798~$,$"$j!"$=$NO+NO$,:FMxMQ$5$l$K$/$$!#(B
$B0\?"$K$+$+$k%3%9%H$O0\?"BP>]$N%=%U%H%&%'%"$N
  • $B0\?":n6H$N@.2L$rJ#?t$N%=%U%H%&%'%"!&3+H/
  • $B%*%j%8%J%k$N%=%U%H%&%'%"JQ99$X$NDI=>$N%3%9%H$r7Z8:$G$-$k!#(B
  • $B$5$i$K!">e5-$N e5-$K2C$($F0J2<$NMxE@$,$"$k!#(B
    1. CPU$B$,0[$J$C$F$$$F$b%"%W%j%1!<%7%g%s%=%U%H$N:F9=C[:n6H$J$7$KD>@\
    2. $B%=!<%9Hs8x3+$N(B($B>&MQ%=%U%H%'%"Ey(B)$B$G$"$k>l9g$G$b
    MacOS$B$d(BWindows$B7O(BOS$BEy$G l9g!"$=$N%W%m%0%i%`$N0\?"$,9T$J$o$l$F$$$J$+$C$?>l9g$d(B $B0\?"$,:$Fq$J%W%m%0%i%`$G$"$k>l9g$O!"@lMQ$N(BUNIX$B%^%7%s$rMQ0U$9$k0J30$KNI$$2r7h:v$,$J$+$C$?!#(B $B$7$+$7!"(BJava$B$G>e5-$N e$G 1.2. $B4{B8$N%7%9%F%`(B $B
    $B%7%9%F%`L>(B $BF0:n$9$k(BOS API CPU$B%(%_%e%l!<%7%g%s5!G=(B $B
    cygwin32 Windows 9x/NT cygwin32 $B$J$7(B UNIX$B%i%$%/4D6-(B
    ($B?7$?$K(Bcygwin32$B4D6-$rDj5A$7$F$$$k(B)
    Linux Emulator FreeBSD Linux $B$J$7(B Linux/x86$B%W%m%0%i%`$NF0:n4D6-(B
    Lxrun SunOS,SCO UNIX
    ($BC"$7(BCPU$B$O(Bx86$B$G$"$k$3$H(B)
    Linux $B$J$7(B Linux/x86$B%W%m%0%i%`$NF0:n4D6-(B
    BSD on Windows Windows 9x/NT BSD UNIX $B$J$7(B BSD UNIX$B4D6-(B
    MacTen MacOS BSD UNIX $B$J$7(B BSD UNIX$B4D6-(B
    Microsoft Windows NT
    Services for UNIX
    Add-On Pack
    Windows NT $B>\:YITL@(B $B$J$7(B UNIX$B%i%$%/4D6-(B(NFS$B%5!<%P(B,telnet$B%5!<%P(B
    UNIX$B%7%'%k4D6-$J$I(B)
    EM86 Linux/Alpha Linux i386CPU$B%(%_%e%l!<%7%g%s5!G=(B Linux/x86$B%W%m%0%i%`$NF0:n4D6-(B

    $B$3$l$i$N4D6-$O!"$=$l$>$l$,L\I8$H$9$k$b$N$,0c$&$?$a $B=>Mh$N%(%_%e%l!<%?$OFCDj(BOS$B>e$G(BUNIX$B4D6-$r

    2. Emulin$B$N9=@.!"%5%]!<%H5!G=(B

    2.1 $B9=@.(B

    Emulin$B$r4^$`%7%9%F%`$O0J2<$N$h$&$J9=@.$H$J$k!#(B

    $B?^(B1
    $B?^(B1: $B%7%9%F%`9=@.?^(B

    • $BJdB-(B
      1. Java VM $B$O(B ( JDK 1.1.7 ) $B0J>e$N(BAPI$B$r%5%]!<%H$9$k$b$N$,I,MW$G$"$k!#(B
      2. $B%O!<%I%&%'%"!"(BOS$B$O(B Java VM $B$,F0:n$9$k$b$N$G$"$l$P$J$s$G$b$h$$!#(B
      3. Linux Application $B$O(B $B@EE*%j%s%/$5$l$F$$$kI,MW$,$"$k!#(B

    2.2 $B%5%]!<%H5!G=(B

    $B8=:_$N(B version 0.2.9b $B$G$O

  • $B%W%m%;%94IM}(B($B%^%k%A%?%9%/(B)
  • $B%a%b%j4IM}(B
  • $B%U%!%$%k(BI/O
  • $B%3%s%=!<%k(B ( JNI$B$r;H$$(BWindows,Linux$B$N%3%s%=!<%k$rMxMQ$9$k5!G=$b
  • $B%M%C%H%o!<%/5!G=(B
  • $B%f!<%6!<%W%m%;%9$G;HMQ$9$kHO0O$N(Bx86$BL?Na(B(Intel$B $B7k2L!"(BUNIX$B$N4pK\%3%^%s%I72$H(Bnetwork$B%3%^%s%I$N(B telnet,ftp $B$,F0:n$7$F$$$k!#(B
    $BC"$7!"0J2<$N5!G=$OL$%5%]!<%H$G$"$k!#:#8e%5%]!<%H$9$kM=Dj$G$"$k!#(B
    1. $B%7%0%J%k(B
    2. $B%G%P%$%94IM}(B
    3. $BIbF0>.?tE@1i;;L?Na(B
    $B$J$I(B


    3. $B1~Jg$N?75,@-!&M-MQ@-(B

    3.1 Java$B$K$h$k%(%_%e%l!<%7%g%s(B

    $B=>Mh$N(BUNIX$B%(%_%e%l!<%7%g%s4D6-$KHf$Y!"(BJava$B$rMxMQ$7$F$$$k$3$H$G0J2<$N%"%I%P%s%F!<%8$,$"$k!#(B

    • UNIX$B$N%^%k%A%?%9%/5!G=$O0l$D$N%W%m%;%9$r0l$D$N(BJava$B%9%l%C%I$K3d$jEv$F$kJ}K!$G
    • $B%W%m%;%9$r(B1$B$D$N%9%l%C%I%*%V%8%'%/%H$H$7$F
    • UNIX$B%7%9%F%`%3!<%k$O(BJava$B$N(BAPI$B$r:GBg8BMxMQ$7$F$$$k!#(B $BFC$K!"%U%!%$%k(BI/O$B!"%M%C%H%o!<%/%7%9%F%`%3!<%k$J$I$N5!G=$O!"

    $B7k2L!"%=!<%9%3!<%I$OLs(B8000$B9TDxEY$G$"$j!"$9$Y$FFI$_@Z$l$kDxEY$K$*$5$^$C$F$$$k!#(B

    3.2 $B%9%1!<%i%V%k$J $B0l$D$N(BUNIX$B%W%m%;%9$r0l$D$N(BJava$B%9%l%C%I$K3d$jEv$F$k%"!<%-%F%/%A%c!<$N$b$&0l$D$NMxE@$H$7$F(B $B%W%i%C%H%U%)!<%`$NJBNs e$K$h$k%7%9%F%`%Q%U%)!<%^%s%9$N8~>e$,4|BT$G$-$k!#(B
    $B>-Mh$N(BHotSpot$B$J$I$N9bB.2=5;=Q$K$h$j!"%^%k%A%W%m%;%C%5$d%/%i%9%?%j%s%05;=Q$K$h$k%9%1!<%i%V%k$J%Q%U%)!<%^%s%98~>e$,4|BT$G$-$k!#(B

    3.3 $B%=!<%9%3!<%I$,8x3+$5$l$F$$$k(B

    GNU General Public License $B$K$h$j!"%=!<%9%3!<%I$rF~ e$2$i$l$F$$$k$N$G!"(B $B$3$3$G$O!"(BEmulin$B$K$H$C$FFC$KMxE@$H$J$kE@$K$D$$$F$@$1$r5s$2$k!#(B
    • Jini$B$d$=$NB>L$H/I=$r4^$`(B Java$B%Y!<%9$N?75,5;=Q$rDI2C$G$-$k!#(B
    • Java$B%=!<%9$+$iD>@\FCDj$N(BCPU$B%3!<%I$K%3%s%Q%$%k$9$k$h$&$J9bB.2=5;=Q$rMxMQ$G$-$k!#(B


    4. $B1~Jg%7%9%F%`$N

    4.1 Emulin$B$N5/F0(B

    Emulin $B$O0l$D$N(BLinux$B%"%W%j%1!<%7%g%s$r ash ($B%7%'%k(B) $B$r;XDj$7$F5/F0$9$k$H!"%7%'%k4D6-$H$7$FF0:n$5$;$k$3$H$,$G$-$k!#(B
    
    C:> java emulin.Emulin C:\root /bin/ash
    Info:native console library installed...
    Emulin ver 0.2.9b Copyright (C) 1998-1999 Kiyoka Nishiyama
    (java based EMUlation technology for Linux Ia-32 Native application)
    (Emulin)$
    
    
    

    4.2 $B%7%'%k4D6-(B

    $B0J2<$K%7%'%k4D6-$NF0:n$NMM;R$r<($9!#(B
    
    $B0lHLE*$J%7%'%kA`:n$r9T$J$&(B
    
    (Emulin)$ pwd
    /
    (Emulin)$ cd /emulin
    (Emulin)$ ls -al *.java
    -r-xr-xr-x   1 kiyoka   users       35902 Jul 27 13:18 Cpu.java
    -rwxr-xr-x   1 kiyoka   users       45497 Sep  8 12:41 Decoder.java
    -r-xr-xr-x   1 kiyoka   users       10571 Apr  9 16:13 Elf.java
     .
     .
    $B0J2
    
    

    
    $B3,AX%G%#%l%/%H%j>e$K;6:_$9$k%=!<%9%3!<%I$+$i%-!<%o!<%I8!:w$9$k!#(B
    
    (Emulin)$ find ./ -name \*.java -print | xargs /bin/grep -i emulin
    ./emulin/Cpu.java:package emulin;
    ./emulin/Cpu.java:import emulin.*;
    ./emulin/Elf.java:package emulin;
    ./emulin/Elf.java:// Emulin $B$N%;%0%a%s%H$N07$$(B
    ./emulin/Elf.java:import emulin.*;
     .
     .
     .
    $B0J2
    

    
    telnet $B%3%^%s%I$GB>$N%^%7%s$K(Blogin$B$9$k!#(B
    
    (Emulin)$ telnet genkan
    Info:native console library installed...
    Emulin ver 0.2.9b Copyright (C) 1998-1999 Kiyoka Nishiyama
    (java based EMUlation technology for Linux Ia-32 Native application)
    (Emulin)$ telnet genkan
    Trying 192.168.1.101...
    Connected to genkan.
    Escape character is '^]'.
    /usr/bin/telnet [4] :  Warning : emulin is not impliment setsockopt( )
    
    TurboLinux release 2.0J (Okinawa)
    Kernel 2.0.33 on an i586
    login: kiyoka
    Password:
    Last login: Mon Sep 13 22:16:26 from win
    host := genkan
    [kiyoka@genkan ~]$
    
    


    5. $B$^$H$a(B

    Emulin$B5Z$S$=$N%(%_%e%l!<%7%g%s4D6-$NFCD'$r=R$Y$?!#(BEmulin$B$r;H$($P!"(BUNIX$B$NM-MQ$J%=%U%H%&%'%"$r(B $B%]!<%F%#%s%0:n6H$r$9$k$3$H$J$/!"D>$A$KB>$N(BOS$B>e$GF0:n$5$;$k$3$H$,$G$-$k!#(B


    $B;29MJ88%(B

    [1]
    Robert L.Hummel $BCx(B $BDHED(B $B9@0l(B $BLu(B 80x86/80x87$B%U%!%_%j!O@[2]
    Michael K.Johnson/Erik W.Troan $BCx(B ($B3t(B)$B%/%$%C%/(B $BLu(B $B!V%W%m%0%i%_%s%0(BLinux$B!W(B $B%"%9%-!<(B (1998)
    [3]
    A$B!&(BS$B!&%?%M%s%P%&%`(B + A$B!&(BS$B!&%&%C%I%O%k(B $BCx(B $B@i51(B $B=g;R(B $BLu(B $B:#@t(B $B5.;K(B $B4F=$(B $B!V%*%Z%l!<%F%#%s%0%7%9%F%`(B $BBh#2HG(B $B@_7W$HM}O@$*$h$S(BMINIX$B$K$h$k[4]
    $B%P!<%K![5]
    $B%m%V!&%4!<%I%s(B $BCx(B $BNS(B $B=(9,(B $BLu(B $B!V(BJava Native Interface $B%W%m%0%i%_%s%0!W(B $B%W%l%s%F%#%9%[!<%k=PHG(B (1998)
    [6]
    Larry Wall and Randal L.Schwartz $BCx(B $B6aF#(B $B2E@c(B $BLu(B $B!V(BPerl$B%W%m%0%i%_%s%0!W(B $B%=%U%H%P%s%0(B($B3t(B) (1994)
    [7]
    David Flanagan $BCx(B $BF|K\%5%s!&%^%$%/%m%7%9%F%`%:(B($B3t(B) $B4FLu(B $B1J>>(B $B7r;J(B $BLu(B $B!V(BJAVA$B%/%$%C%/%j%U%!%l%s%9!W(B $B%*%i%$%j![8]
    $B%m!<%i!&%j%a%$(B + $B%A%c!<%k%:!&(BL$B!&%Q!<%-%s%:(B $BCx(B $B!V(BJava$B8@8lF~Lg(B $B%"%W%l%C%H!"(BAWT$B!"@h?JE*5!9=!W(B $B%W%l%s%F%#%9%[!<%k=PHG(B (1996)