Dec 24, 2011

CIFS over SSH, Windows7 ssh経由でファイル共有アクセス

■はじめに
 Windowsファイルサーバに、SSH経由で(CIFS、port 445/tcp で)アクセスする。

 WebDAVで試行錯誤したが失敗した。
 一方、CIFSでは、下記参考サイトの通りに設定・実施すれば、Windows7でアクセス可能。Vistaでも出来るらしい。誰かの一助になれば、と日本語訳(意訳)します。

■参考
 Mounting your Nikhef home directory using SSH for Windows Vista/7
 注) このサイトのWindows挿絵は、とても参考になります。
  私の記事と併せて確認しながら進めると、良いでしょう。
 
■訳(意訳)
 Windows シェア over ssh のために必要なこと
 ・Administrator権限での ローカルPCアクセス。
 ・PuTTY v0.58以上 (SSH付きのもの)
 ・Client for MS Networkドライバにバインドされたネットワークアダプタ
 ・Client for MS Networkドライバにバインドされていないネットワークアダプタ
 ※ Vista以降では、旧来の(XPと それ以前の) SMBドライバとは ちょっと違います。

・進め方、概要
 1. マイクロソフト ループバック アダプタ をインストールします。
 2. 同アダプタを 的確に設定します。
 3. Windowsシステムドライバを微調整します。
 4. Windows タスク スケジューラーで、或るタスクを作成します。
 5. Windowsをリブートして、ここまでの設定変更が有効か、確認します。
 6. PuTTYを 適切に ポート転送するよう、設定します。
 7. 最後に、PuTTYを ファイルサーバにマウントします。
 8. 以上を すべて取りやめたい場合の手順を示します。

・以降、詳細--------------------------

1. Microsoft Loopback Adapter のインストール
 ・ハードウェアウィザードの開始
  (スタート、設定、コントロールパネル、ハードウェアの追加)
  (訳注、システム管理者のコマンド プロンプトから、Hdwwiz.exe を実行するのが良い)

 ・「次へ」をクリック
 ・「一覧から選択したハードウェアをインストールする」を選択して、「次へ」
 ・「ネットワークアダプター」を選択して「次へ」
 ・製造元一覧から、「Microsoft」選択し、「Microsoft Loopback Adapter」を選択して「次へ」
 ・「新しいハードウェアのインストールを開始するには、「次へ」をくりっくしてください」と
  表示される。「次へ」
 ・しばらく経ってから、「完了」する。
 Windowsは要求しないが、ここでリブートする。(おーい、Microsfot OSだからね ;-))

2. ループバックアダプタの設定
 ・ネットワークと共有センターへ
  (訳注、コントロール パネル\ネットワークとインターネット\ネットワークと共有センター へ)
 ・ループバックアダプタを選択
 ・プロパティーで、以下、確実に設定の事。
  ○ Microsoft ネットワーク用クライアントの チェックを外す。
  ○ Microsoft ネットワーク用ファイルとプリンター共有の チェックを外す。
  ○ インターネットプロトコル (TCP/IP)のチェックを設定。
   (訳注、2011.12現在では、IPv4だけで良いだろう)
 ・「インターネットプロトコル バージョン4 (TCP/IPv4)」を選択し、「プロパティ」をクリック
 ・新しいWindowsが表示される。
  IPアドレスを 10.255.255.1 
  サブネットマスク 255.255.255.0
   (訳注、サブネットマスクは 255.255.255.252などとして絞るとベター)
  デフォルト ゲートウェイは、空欄で良い。
  「次のdnsサーバーのアドレスを使う」とした上で、dns serverは空欄で良い。
 ・「詳細設定」を選択
   先ほど設定した内容が反映されているか、チェック
  「自動メトリック」のチェックを外し、インターフェイスメトリックに 9999を設定。
 ・WINSタブをクリック
  「LMHOSTSの参照を有効にする」のチェックを外す
  「NetBIOS over TCP/IPを無効にする」を選択。
  「OK」を選択。
  TCP/IPプロパティーのWindowsを閉じる。

3. SMBドライバを微調整
 Windows Vista / Windows 7は、起動したとき、システムのSMBドライバが、
 port 445をすべてのインターフェイスで占有してしまっています。
 そこで、SMBドライバのスタートアップを遅らせます。
 
 ・概要
  ・システム管理者権限で、cmd.exeを起動します。
  ・SMBドライバの自動開始を 次のコマンドで 不可に設定します。
    sc config smb start= demand
    (「=」の後のスペース必須)
  ・portproxyルールを設定します。
    netsh interface portproxy add v4tov4 listenaddress=10.255.255.1 listenport=445
          connectaddress=10.255.255.1 connectport=44445
    (以上、一行で)
     
   ○ Listen Addressは、上記で設定したループバックアダプタのアドレス。
   ○ connectaddressは、listenaddressと同一であること。
   ○ listenaddressとして 127.0.0.1は失敗する。本当だから信じてね。

   以上を次のように確認する。
    c:\>netsh interface portporxy show v4tov4
      c:\>netsh interface portporxy show v4tov4
      Address          Port    Adress           Port
      ---------------- ------- ---------------- -------
         10.255.255.1     445     10.255.255.1     44445

4. Windows タスク スケジューラーで、SMBドライバの開始タスクを作成します。
  ・タスクスケジューラーを起動
   (訳注、コンパネで、scheduleとして検索すると「タスクのスケジュール」が見つかる)
  ・「基本タスクの作成」を選択すると、新しいWindowが表示される。
  ・タスクの「名前」を Start SMB driverとでも入力し、「次へ」
  ・「ログオン時」を選択して、「次へ」
  ・「プログラムの開始」を選択して、「次へ」
  ・"プログラムの開始"に、 C:\Windows\System32\Net.exe
   "引数の追加"に start smb
   「次へ」
  ・『「完了」をくりっくしたときに、このタスクの[プロパティ]ダイアログを開く』をチェック。
   して、「完了」
  ・タスクプロパティWindowで、「ユーザがログオンしているかどうかにかかわらず実行する」
   を選び、「パスワードを保存しない」にチェックし、
   「最上位の特権で実行する」をチェックして、
   「トリガー」タブへ
  ・「編集」をクリックし、
   「任意のユーザ」をチェックして、「OK」し、「条件」タブへ
  ・「条件」Windowで、「コンピュータをAC電源で使用している場合のみタスクを開始する」の
   チェックを外して、「OK」
  
5. Windowsをリブートして、ここまでの設定変更が有効か、確認します。
  ・今やSMBドライバー開始を不可能に設定したわけだが、
   まずはリブートする。
  ・Windowsの起動・ログイン後、次のコマンド実行し、SMBドライバの状態を確認する。
   c:\>sc query smb
   
   ※ RunningならOK
  ・portproxyの状態を確認
   c:\>netstat -an | find ":445"

   TCP  10.255.255.1:445   0.0.0.0:0   LISTENING ならOK

   0.0.0.0:445などがあれば、最初の「portproxyコマンド実行」が 成功していない。

6. PuTTYを 適切に ポート転送するよう、設定します。
  ・PuTTYを起動し、ターゲットSSHサーバにログインすべきssh設定を行う。  
   例、hostは、login2.nikhef.nl、プロトコルは ssh
  ・メニュー 接続→SSH、カテゴリーを拡げて トンネルを選択
  ・ポート転送の設定
   ○ source portは、ループバックアダプタのアドレス(訳注 10.255.255.1)、
     port 44445 (445以外)を設定追加、
     (表示可能域は狭く、一部しか見えないが、大丈夫)
   ○ デスティネーションサーバと、port 445/tcpを設定し、
     (訳注、例 internal-fileserver.yourdomain.com:445  など)
     「追加」する。     
     (訳注、
      L 10.255.255.1:44445 internal-fileserver.yourdomain.com:445 が
      見えるはず)

7. 最後に、PuTTYで ファイルサーバにマウントします。
  PuTTYを開始。
  ・ターゲットSSHサーバ(訳注、external-sshd.yourdomain.comなど)にsshログイン
  ・PuTTYのEvent logにて、ポート転送が正しく機能しているか、確認する。
   PuTTYのメニューから Event Logを選択する。
   "Locla IPv4 port 10.255.255.1:44445 forwarding to internal-fileserver.yourdomain.com:445"
   などと表示されていればOK。
   (訳注、telnetを導入して、PCで、telnet 10.255.255.1 445 とし、
     あわせて、sshサーバで tcpdumpして、ポート転送が意図通り稼動しているか、
     確認すると良い)

  ・「スタート」、「Run」とし、file://10.255.255.1/share-name とすると、
   User nameと、Paswordを入力すればOK のはず。

   User nameは ドメイン名\ユーザ名
   
  ・Windows Explorer で ファイルサーバの中身の読み書きが可能になるはず。

  ・ネットワークドライブのマッピングも
    Windows Explorerで、「ツール」→「ネットワークドライブのマッピング」
   で ドライブ Z:  フォルダ file://10.255.255.1/share-name で可能に。
   ○ 選択可能な ドライブ文字を選ぶこと。
   ○ 「ブラウズ(表示)」ボタンを押さず、ちゃんと file://10.255.255.1/share-name をタイプインすること。
   ○ 「完了」を押さず、「別のユーザ名」を押すこと。

  ・「~として接続」のポップアップWindowにて
   ・User nameとして ドメイン名\ユーザ名
    と、パスワード 
    を入力

8. 以上を すべて取りやめたい場合の手順を示します。
 (1) システム管理者権限で、コマンドプロンプトを表示
 (2) c:\>sc config smb start= auto
 (3) c:\>netsh interface portproxy delete v4tov4 listenaddress=10.255.255.1 listenport=445
 (4) c:\>devmgmt .msc とタイプし、デバイスマネージャを起動する
 (5) タスクスケジューラで「管理タスク」から Start SMB driverタスクを削除する

//

Dec 18, 2011

Android アプリ 開発、環境構築

まずは、開発環境を構築するところから、、、書きかけ

参考サイト
   世界を目指せ!Androidアプリ開発入門
 Linuxで自宅サーバ構築 → ソフトウェア → Eclipse → Eclipseのインストールと日本語化

以下、開発環境を ubuntuで構築する。
特に断らない限り、インストール先は、 /usr/local 以下。

Android SDKのインストール
 ダウンロード
 本日(2011.12.18)現在では revision 16が最新。

SDKツールのパスを有効にする
 ubuntuで ~/bash_profileに、次の行を加える。
 PATH=$PATH:/usr/local/android-sdk/tools
   export PATH

SDKのインストール
 sudo su
   apt-get install sun-java6-jdk sun-java6-jre

Eclipseのインストールと日本語化
 ダウンロード
 Eclipse IDE for Java Developers (128MB)をダウンロードした。

 cd /usr/local/eclipse/
 wget -O pleades.zip "http://sourceforge.jp/frs/redir.php?m=jaist&f=%2Fmergedoc%2F43995%2Fpleiades_1.3.1.zip"    
   Pleiades をダウンロード(※Ubuntuではsudoで実行)
 unzip pleades.zip
 ※Ubuntuではsudoで実行
 vi /usr/local/eclipse/eclipse.ini
 ※Ubuntuではsudoで実行 - 末尾に以下を追記 --
 javaagent:/usr/local/eclipse/plugins/jp.sourceforge.mergedoc.pleiades/pleiades.jar

ADTプラグインの インストール
 Helpメニューの Install New Softwareをクリック。
 Installダイアログが登録されたら、Addをクリックし、次のサイトを登録する。

 Name:Android Plugin
 Location:https://dl-ssl.google.com/android/eclipse/
 とでも入力。

 登録後、Work Withから登録したサイト、Android Pluginを選択する。
 Developer Toolsに Android系のツールが表示される。チェックして Next。

Android SDKの設定
 メニューの Window, 設定 を繰りつく。
 左の一覧の Androidを選択し、Androidをパス設定 (/usr/local/android-sdk )
 
 Windowメニューの Android SDK and AVD Managerを選択。
 Available Packagesを選択し、
 Android 4.0, 3.0, 2.2 を選択して、インストールする。
 (ここが 一番時間が かかった)

エミュレータの作成と起動
 Windowメニューの Android SDK and AVD Managerを選択。
 Virtual Device を選択して Newをクリック。
 Name には test22など、Androidバージョンを入れておいた。
 Targetは この場合、Android 2.2
   SD Card、とりあえず 50MB程度。
 
//

Dec 3, 2011

CNN「ゴビ砂漠の変な物」を見て、自己否定は不要と思い至るまで

11/17版の CNNのビデオを、或る週末に ぼんやりと見ていた。殺伐としたニュースの多い中、タイトルのCNN: Google Earth Shows Strange Things in the Gobi Desert in China – November 2011に目がとまった。
ナレーターは「宇宙からの お友達が 来るのかしら」みたいな事を言って、その記事だけ 他に比べて随分 寛いだ感じだった。

同日11/17のfoxnews.comの記事で、アリゾナ州立大の研究技術者の解説が有る事に、数日後、気づいた。

衛星写真(1)は、スパイ衛星のキャリブレーションターゲット、
衛星写真(2)は、軌道レーダー機器のキャリブレーション/テストターゲット、
との事。

以上の内容は、次の日本語記事で概ね窺い知れる。
中国の巨大構造物、衛星のキャリブレーションターゲットだった」(スラッシュドット)

それにしても、メディアによって随分雰囲気が違うものだ。そしてこう考えた。

(1) メディアの役割分担は今後ますます変わっていくだろう
 (1-1) TVは 新鮮さ、面白おかしさが命。信憑性は二の次
 (1-2) 紙の新聞は、一歩遅れて、専門家の分析を交えた、分かりやすさ、信頼性が鍵。
 (1-3) ネット(SNS、ブログ等)は、それらを兼ね備えたメディア。
   ソースを選べば、(1-1), (1-2)を代替可能。

(2) 日本を自己否定する必要は無い。
 前述(1-1)から海外のTVも似たようなもの。
 現場は人手不足・専門家不足。事実関係の検証など出来ない。
 ましてや会社方針に逆らえるはずもない。他社よりも先に報道してナンボ。

3.11以降、日本のTVは駄目、日本自体も沈んでいってる、と暗澹たる気持ちで居た。
だがメディア報道について、距離を置いて客観視に努めれば、自己否定(自国卑下)など全く不要と思い始めた。

そんな折 「茂木健一郎さん 「それぞれのみじめさを持ち寄ったら、自分のみじめさを持ち帰りたくなる」ことのついての連続ツイート」を見て、なるほどと、何か救われたような気になった。

大変な状況には違いない。小学生に戻って人生をやり直すくらいの 大変な道程になるだろう。でも、一人で呻吟しなくても、同胞同士がその気持ちを共有して頑張れば、暁光も見えてくるはず、という気がしてきた。

そして気持ちに余裕を持とう。客観視によって、余裕が生まれる。
最後に、「日本の偵察衛星は、お経の書かれた米粒でキャリブレーション可能なほど、高精度(冗談)」という投稿が秀逸(笑)。

//