$(host) には Linux/M32R 用のクロスツールがインストールされていることを仮定します.
(Linux/M32R 用のクロスツールを参照のこと.)
[$(host) mappi2 の両方に (uid などの同じ)ユーザ $(user)を作成]
両方で同じ path に見える directory を用意します:
[$(host)で]
mkdir -p /exp/mappi2root
[mappi2で]
mkdir -p /exp/mappi2root
mount -t nfs -orsize=1024,wsize=1024 $(host):/exp/mappi2root /exp/mappi2root
どっちかで
mkdir /exp/mappi2root/dodes
chown $(user).$(user) /exp/mappi2root/dodes
DODES0 のサーバとクライアントライブラリを準備します:
[dodes0d]
dodes-execd を作成する:
target 用の expat ライブラリを作成する:
$(host) で expat の
ソースを展開しそこへ移動して
./configure --host=m32r-linux --prefix=/usr/local/m32r-linux-3.4/m32r-linux
make
make install
(注意)/usr/local/m32r-linux-3.4/m32r-linux の部分は Linux/M32R 用の
クロスツールのインストールされた場所に依存します.
dodes0d のソースを展開しそこへ移動して
./configure --host=m32r-linux
make LDFLAGS='-static -L/usr/local/m32r-linux-3.4/m32r-linux/lib'
これで src/ に static link された dodes-execd が作成されます.
dodes-execd を /exp/mappi2root/dodes に入れて mappi2 側で $(user)の権限で
はしらせる:
./dodes-execd&
[dodes0c configure/make/make install]
$(host) で
./configure --prefix=/usr
make
make install
[dummy lib をつくる - mappi2:/usr/lib/libdodes.so] (*1)
touch dummy.c
m32r-linux-gcc -o dummy.o dummy.c
m32r-linux-gcc -shared -o libdodes.so dummy.o
これを mappi2 側の /usr/lib/ に持ち込む
[DODES 環境に]
$(host) の /exp/mappi2root/dodes で /usr/bin/dodes を実行して
DODES 環境に入り
export DODESNODE_M32R=mappi2のhostname
または
export DODESNODE_M32R=mappi2kのIPaddress
(/etc/hosts などで mappi2 の host 名の alias として dodesnode_m32r
をセットしてもいいです)
で m32r binary の remote execution を行なうマシンを指定
これで一応の環境はできています。static の m32r binary ならこの状態
で /exp/mappi2root/dodes から遠隔実行できます。
[テスト]
$(host)/exp/mappi2root/dodes/ で hello.c を書いて
m32r-linux-gcc -o helloM32R hello.c
./helloM32R で Hello, world となれば ok です。
(*1) これは /usr/bin/dodes が LD_PRELOAD をセットしてそれが mappi2 の実行環境にも渡ってしまうことの回避策です。 /usr/bin/dodes を使わずに /etc/ld.so.preload に追記する方法で DODES 環境とする場合はこの妙な dummy のライブラリの必要はありません。 プログラムによっては環境変数を故意に受け継がないものもあるので /etc/ld.so.preload の方がより完全な DODES 環境ですが、なにせ /etc/ld.so.preload の記述をミスったりすると reboot したら $(host) が立ち上がらんという悲しいこともあります(s/す/した/)ので最初は /usr/bin/dodes の方が安全だと思います。