動機

VS CodeのSSHFSを入れたらパーミッション壊さずにgitが使える[1]よと聞いたのでWSLでやってみたけど,どうせならVMを立ててもええんちゃうかと思ったので.

tl;dr

  • タスクスケジューラを使ってWindowsの起動時にVirtualBoxのVMを起動したい.
  • VBoxHeadless.exe -s VM だけでも一応できるが,cmd.exeのプロンプト画面が出てきて気持ち悪い.
  • その上,プロンプト画面を閉じるとVMも閉じてしまう.
  • のでヘッドレスをバックグラウンドでクールにオートマチックにブートしてみる.

環境

  • ホストOS: Windows 10 (1809)
  • VirtualBox 6.0.6
  • ゲストOS: Debian 9.9

やること

  1. VirtualBoxとホストOSのインストール
    めんどいので省略. Qiitaでも漁ればいくらでも出てくるでしょ.

    • ホストOS(Debian)で sudo systemctl set-default multi-user.target しとくと要らんGUIが上がってこなくてよい.

    • VirtualBoxは C:\Program Files\Oracle\VirtualBox\ にあると仮定.

    • ホストのWinからVMにだけアクセスしつつ,VMもインターネッツにつなぎたいときは,VBoxのネットワークアダプタをNAT+ホストオンリーアダプタの2本立てにするといい.[3] [4]
      ホストオンリーアダプタのIPアドレス範囲は ファイル>干すとネットワークマネージャー の中に転がってる.

  2. Win10にOpenSSHをいれる
    省略.[2]

  3. タスクスケジューラに設定する

    • 起動するだけなら上述のとおり,VBoxHeadless.exe -s VM すればいいけど.プロンプト画面を出さずにやるのでPowershell をつかう.
    • タスクスケジューラの「プログラムの開始」で プログラム/スクリプト: C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe
      引数: -Command "& {start-process \"C:\Program Files\Oracle\VirtualBox\VBoxHeadless.exe\" \"-s Debian9.9\" -WindowStyle Hidden}"
      とする.[5][6]
    • トリガーは「ユーザーのログオン時」あたりを適当に.
  4. おわり
    あとはssh.exe (VMのアドレス) とかやればつながるので,SSHFSに入れる.

きもち

VS CodeのターミナルをWSLやcmd.exeすっとばして直接ssh.exe VMにしたいんだがどうやるんだ.

そんな感じ.
では.

[1]: Visual Studio CodeでSSHごしにファイルを編集する - Qiita https://qiita.com/informationsea/items/5c9f05c81a41fb885460

[2]: Windows10 に OpenSSH インストール - Qiita https://qiita.com/sigenyan/items/1de0b74541f5cef7614f

[3]: VirtualBoxでDebianを使うときの設定 - ゆっくり備忘録 http://mitsuakikawamorita.com/blog/?p=1146

[4]: VirtualBox のネットワークアダプタまとめ - Qiita https://qiita.com/taopi/items/0f9475e4c0e230911eb7

[5]: 猫科研究所 - コマンドプロンプトのエスケープ仕様 http://up-cat.net/%25A5%25B3%25A5%25DE%25A5%25F3%25A5%25C9%25A5%25D7%25A5%25ED%25A5%25F3%25A5%25D7%25A5%25C8%25A4%25CE%25A5%25A8%25A5%25B9%25A5%25B1%25A1%25BC%25A5%25D7%25BB%25C5%25CD%25CD.html

[6]: windows - Vboxheadless without a command prompt (VirtualBox) - Server Fault https://serverfault.com/questions/89252/vboxheadless-without-a-command-prompt-virtualbox

Next Post Previous Post