BETA

Windows上にUbuntuのVMを立ててVSCodeでつないで開発環境にする

投稿日:2019-06-18
最終更新:2019-06-18

以前実機にArchを入れてKVMで切り替えてなんとかしようとしたのですが、結局実機が貧弱だとGUIがトロいという問題があり、実用には至っていませんでした。そのときの詳しいことは下記を参照してください。

KVMスイッチでArch LinuxとWindowsを切り替えられる環境を整えた - 酢飯外伝

さて、それでもWindowsでいろいろやっていると辛くなってくるので定期的にLinuxかmacにしたいと思うようになり、今日がその日だったので再挑戦しました。

結果、割とうまく行っている気がするのでこの記事を書いています。

余談(読まなくていいです)

じゃあマシンが強ければGUIもWindowsやmac並に動くのかよと言われるとドライバ周りのあれそれで微妙な気がするのですが。

実機でLinuxを使っている人はたくさんいて、たぶんうまいことやればストレスなく動く(あるいは慣れてしまうのか)のだと思いますが、結構頑張って調べまくってもうまく行かなかったので、今回はできるだけGUIを触らない方針でやります。
そしてGUIを触らないのであれば仮想マシンのほうが扱いが容易なので仮想マシンでやります。

メニュー

きょうの材料です。

このRemote Developmentが今回の鍵になります。これはVSCodeの拡張として利用できて、sshでつなげるように設定すると、まるでssh先がローカルになったように開発ができてしまうものです。すごい。

今回はWindows 10 ProのHyper-VでUbuntu 18.04を動かして、そこにVS Codeが接続する形になります。

1. Hyper-VでUbuntuを立てる

特別Hyper-Vじゃなければできないことはないと思うのでVMwareとかVirtualBoxでもいいと思います。Hyper-Vだとチェックポイント作れたり簡単に別PCにエクスポートできたりするので自分の好みです。Windows 10 Proが必要ですが。

OSもArchでもなんでも好きなLinuxを使えばいいと思いますが、今回はあまりガツガツ手を入れないで安定して動いてほしいのでUbuntuを使います。

Hyper-Vで立てたことがあれば特に説明することは思いますが、Ubuntu.comのダウンロードからLTSのUbuntu Desktopのisoをダウンロードして、Hyper-Vマネージャーで新規仮想マシンを作ってポチポチすればできます。

ネットワークスイッチを作ってなければ外部ネットワークのネットワークスイッチを作っておいてくとホストとは別のIPアドレスになるのでIPアドレスの固定が楽になると思います。これしかやったことがないのでそれ以外は知りません。

あとは起動前にセキュアブートを無効にしておく、メモリやプロセッサを適当に割り当てるといいです。
Ubuntuはセキュアブートが有効だと起動しません。

IPアドレスは固定すると楽です。私はDHCP側で固定するのが好きなのでMACアドレスを確認しておきます。

ルーターに設定して終わりです。

設定が正しければ起動したときに指定したIPが振られているのが確認できるはずです。

avahiとかmDNSとかなんかうまく動かないんですよね。

ISOからインストーラーが起動したらインストールです。ポチポチすればできるでしょう。

2. SSHでつなげるようにする

ターミナルで

sudo apt install openssh-server  

すれば勝手にサービスも上がるので現在のユーザー名とパスワードでssh接続できるようになります。楽ですね。

このままだと接続するたびにパスワードを入れる必要がありめんどいので公開鍵認証にでもしてください。

ついでに自分が使っているUbuntuをセットアップするスクリプトを置いておきます
ubuntuセットアップしたらやるやつら

公開鍵認証をしたくないとき

ローカルの開発環境につなぐために公開鍵認証もめんどくさいのでパスワードをなしにするという手があります。

セキュリティ的に最悪なので、誰かがこの開発マシンにリーチできる場合認証なしで好き放題できてしまいます。注意してください。 絶対にVPSやクラウドでしないでください。

まず、パスワードがないとsudoできない(ないパスワードが要求される)ので、visudoで確認無しでsudoできるようにしておく必要があります。
visudoして末尾らへんに

 eai ALL=NOPASSWD: ALL  

とか書くとできます。eaiはユーザー名です。

次にpasswd -d ユーザー名するとパスワードが消えます。

最後にsudo nano /etc/ssh/sshd_configとかでsshd_configを開いて、

#PermitEmptyPasswords no  
から  
PermitEmptyPasswords yes  
UsePAM yes  
から  
UsePAM no  

と設定して

sudo systemctl restart sshd  

すれば認証なしでつなげるはずです。

ガバガバになりました良かったですね。 絶対にVPSやクラウドでしないでください。

3. VS Code側の設定

Remote Development - Visual Studio Marketplace
を入れます。パックなのでこれを入れると必要なのが何個か入ります。

入れると左にRemote-SSHタブができるので開きます。

Connectionsにカーソルを乗せると歯車が出るのでsshの設定を選んで開いて、VMのIPとユーザー名と名前を記入します

Host ubuntu  
    HostName 192.168.1.51  
    User eai  

そうしてConnectionsに生えたマシンの右にあるウィンドウのアイコンを押せば接続できます。
繋がりましたか?良かったですね。

4. GUIの者

さて、これでターミナルからgit cloneすればLinuxなのにガワはWindowsで触ることができます。VSCode自体はWindowsで動いているので妙な遅延もありません。

次はGUIのアプリケーションたちです。

GitKrakenを使いたくて

wget https://release.axocdn.com/linux/gitkraken-amd64.deb  
sudo apt install ./gitkraken-amd64.deb  

しました。

ディスプレイがあればもう起動できる状態ですが、ディスプレイはありません。

XのサーバーをWindows上に立てて上げる必要があります。

今回はX410を使います。金をかけたくなければVcXsrvがいいと思います。私にはよくわからなかったです。
X410 を購入 - Microsoft Store ja-JP
VcXsrv Windows X Server download | SourceForge.net

それで、WindowsでXサーバーが起動したらそれを指定してあげます。
具体的には

DISPLAY=192.168.1.41:0.0 gitkraken &  

などとします。IPアドレスはホストWindowsのものです


X410のウィンドウにあるUbuntu上のGitKraken

動きます。トロいですが。

VSCodeのターミナルから起動した場合は、VSCodeが再起動した場合などに巻き込まれて死ぬのでHypre-Vから接続してターミナルに打ち込んだほうがいいかもしれません。どうせ開発環境起動するときに必要なんだから.bashrcに書いてしまってもいいのかもしれません。

おわり

操作のほとんどをVSCodeからすることで普通にLinuxを使えるようにするよりだいぶ楽にセットアップできた気がします。

GUIアプリは転送しているだけで、IMEを入れていないので日本語入力ができません。VSCodeが起動してるんだからコピペするなりVSCodeからそのままコミットするなりすればいいでしょう。

以前にVSCodeも転送するようにして試したことがあるのですがやっぱり動作がとろくて発狂しそうになったのでWindowsからそのまま触れて本当に嬉しいです。ついでにGitKrakenにもリモート機能をつかないかな。

技術ブログをはじめよう Qrunch(クランチ)は、プログラマの技術アプトプットに特化したブログサービスです
駆け出しエンジニアからエキスパートまで全ての方々のアウトプットを歓迎しております!
or 外部アカウントで 登録 / ログイン する
クランチについてもっと詳しく

この記事が掲載されているブログ

よく一緒に読まれる記事

0件のコメント

ブログ開設 or ログイン してコメントを送ってみよう
目次をみる
技術ブログをはじめよう Qrunch(クランチ)は、プログラマの技術アプトプットに特化したブログサービスです
or 外部アカウントではじめる
10秒で技術ブログが作れます!