インストールする(その6)
私のcoMomongaのネットワーク環境は、DHCPで不定のIPアドレスを割り振っている。
また、TAP-Win32 AdapterもDHCPでIPアドレスを割り振っているので、ローカルとグローバルの区別が付かないためか、Xmingの設定で「Search for hosts (broadcast)」が使用できない。
DHCPをサービスしているルータには、IPアドレスを固定化する方法が提供されていない。
仕方がないので、現在はcoMomongaのコンソールでログインしてifconfigコマンドでIPアドレスを調べている。
この問題を解決するために以下の作業を行う。
coMomongaにsambaをインストールする
sambaによってホスト側から名前でcoMomongaにアクセスできるようになるため、pingコマンドで容易にcoMomongaのIPアドレスが取得できるようになる。
sambaをインストールするためには、Xmingで接続してrootでログインし、ターミナルで
# system-config-packages --tree=ftp://dist.momonga-linux.org/pub/momonga/2/i686/os/
と入力して、「Windowsファイルサーバ」を選択してインストールする。
または、consoleやtelnetからrootでログインし、
# wget ftp://dist.momonga-linux.org/pub/momonga/2/i686/os/Momonga/RPMS/perl-Crypt-SmbHash-0.12-1m.i686.rpm # rpm -ivh perl-Crypt-SmbHash-0.12-1m.i686.rpm # wget ftp://dist.momonga-linux.org/pub/momonga/2/i686/os/Momonga/RPMS/samba-3.0.14a-2m.i686.rpm # rpm -ivh samba-3.0.14a-2m.i686.rpm
と入力してインストールする。
先にsambaパッケージをインストールしようとすると、以下のようなエラーが発生するので注意が必要だ。
warning: samba-3.0.14a-2m.i686.rpm: V3 DSA signature: NOKEY, key ID 5f3bb21e error: Failed dependencies: perl(Crypt::SmbHash) is needed by samba-3.0.14a-2m
次に以下のコマンドを実行してsambaを起動する。
# /etc/rc.d/init.d/smb start Starting SMB services: [ OK ] Starting NMB services: [ OK ]
次に以下のコマンドを実行してsambaユーザを追加する。
# smbpasswd -a pochy9n New SMB password: Retype new SMB password: Added user pochy9n.
ユーザ名とパスワードをWindowsのログオンユーザと同一にすれば、ホストからcoMomongaのファイルをアクセスするときに入力する手間を省くことができる。
次にcoMomongaの起動と同時にsambaを起動するために以下の操作を行う。
# cd /etc/rc.d/rc5.d # mv K35smb S35smb
最後にホストでスタートメニュー →「ファイル名を指定して実行」を選択し、「explorer \\comomonga」と入力して問題が無いことを確認する。
ホストにActivePerlをインストールする
以下のActiveStateのサイトからActivePerlをダウンロードしてインストールする。
http://www.activestate.com/Products/Download/Download.plex?id=ActivePerl
Windows版はAS package(ZIP)とMSIパッケージが存在するが、MSIパッケージを選択した方が無難だと思う。
ダウンロードが完了したら、MSIファイルをエクスプローラでダブルクリックして実行し、手順通りにインストールを行えば良い。
perlスクリプトでXmingを実行する
テキストエディタで以下の内容をcoMomongaX.batとして作成する。
@rem = '--*-Perl-*-- @echo off if "%OS%" == "Windows_NT" goto WinNT perl -x -S "%0" %1 %2 %3 %4 %5 %6 %7 %8 %9 goto endofperl :WinNT perl -x -S %0 %* if NOT "%COMSPEC%" == "%SystemRoot%\system32\cmd.exe" goto endofperl if %errorlevel% == 9009 echo You do not have Perl in your PATH. if errorlevel 1 goto script_failed_so_exit_with_non_zero_val 2>nul goto endofperl @rem '; #!perl #line 15 use strict; # coMomongaのIPアドレスを取得する my $name = "comomonga"; my $ping = `ping -n 1 $name`; my $ipaddr = ""; my $line; foreach $line (split(/\n/o, $ping)) { if ($line =~ /^Pinging .*? \[(.*?)\]/o) { $ipaddr = $1; last; } } if (!$ipaddr) { die "$name not found\n"; } # TAP-Win32 AdapterのIPアドレスを取得する my $adapter = "TAP-Win32 Adapter"; my $ipconfig = `ipconfig`; my $adaddr = ""; my $flag = 0; foreach $line (split(/\n/o, $ipconfig)) { if ($line =~ /^Ethernet adapter /o) { if ($flag) { last; } if ($line =~ /$adapter/) { $flag = 1; } } elsif ($line =~ /IP Address.*?: /o) { $adaddr = $'; last; } } if (!$adaddr) { die "$adapter not found\n"; } # routeの設定を追加する system("route add $ipaddr mask 255.255.255.255 $adaddr"); # XLaunchの設定ファイルを作成する my $fname = "$ENV{TEMP}/comomonga.xlaunch"; # ※以下のxlaunchの設定内容は2行である my $xlaunch =<<__XLAUNCH__; <?xml version="1.0"?> <XLaunch WindowMode="Windowed" ClientMode="XDMCP" XDMCPHost="%s" XDMCPBroadcast="False" XDMCPIndirect="False" Display="0" Clipboard="True" ExtraParams="-xkbmodel jp106 -xkblayout jp"/> __XLAUNCH__ open(FILE, ">$fname") or die "can't create $fname\n"; printf(FILE $xlaunch, $ipaddr); close(FILE); # Xmingを実行する my $xming = "E:/Xming/Xming.exe"; # 適宜Xmingのインストール環境に合わせること system("start \"$xming\" \"$fname\""); __END__ :endofperl
作成したcoMomongaX.batを実行して動作を確認する。