Windows 10でVagrantの仮想マシン起動時にマウントで失敗

Windows 10でVagrantを使って仮想マシンを起動したとき、/vagrantフォルダをcifsでマウントしようとして失敗します。VagrantのプロバイダーはHyper-Vです。

==> default: Mounting SMB shared folders...
    default: E:/vagrant/Debian => /vagrant
Failed to mount folders in Linux guest. This is usually because
the "vboxsf" file system is not available. Please verify that
the guest additions are properly installed in the guest and
can work properly. The command attempted was:

mount -t cifs -o uid=1000,gid=1000,sec=ntlm,credentials=/etc/smb_creds_06fc4a57cab5868f1a4965e043cd4a19 //192.168.1.6/06fc4a57cab5868f1a4965e043cd4a19 /vagrant

The error output from the last command was:

mount error(112): Host is down
Refer to the mount.cifs(8) manual page (e.g. man mount.cifs)

どうも、Windows 10 Fall Creators Updateでsmb v1が無効にされたのが原因のようです。 以下のサイトに解決方法が出ていて、本質的なものかどうか疑問なのですが、Windowsでsmb v1を有効にして解決できました。

https://github.com/docksal/docksal/issues/382

シリーズ:WindowsでJavaの開発環境を構築する

会社ではMacを主に使用しているのですが、家ではメモリをたっぷり積んでリーズナブルなマシンがWindowsしかなく、仕方なく使っています。 今は、Docker for WindowsWindows Subsystem for Linuxが登場し、だいぶ使えるようになってきたので、Windowsを使った場合のWeb開発環境を構築するにあたり、記録したい項目についてこのブログでシリーズとして書いていきます。

Ubuntuのtimezoneを変更する

Windows Subsystem for LinuxUbuntuを使用した場合、デフォルトのtimezoneはNoneに設定されているようです。 これを変更するには、以下のコマンドを実行します。

sudo dpkg-reconfigure tzdata

設定画面が表示されますのでAsia -> Tokyo を選択します。

Debian StretchのBOXファイルを作成する

Debian Stretchが2017年6月17日にリリースされました。早速BOXファイルを作成してみましょう。

1. Virtual BoxにDebianをインストールする。

Virtual BOXにベースとなるDebian Stretchをインストールします。インストール時に注意することは以下となります。

  • 初期ユーザとして、vagrantユーザを作成する。パスワードは"vagrant"にする。
  • sshdをインストールする

2. 新しく作成した仮想マシンにログイン

新しく作成した仮想マシンにrootユーザでログインします。

3. sudo/curlをインストー

sudo/curlをインストールします。

root@debian:~# apt install sudo curl

4. sudoの設定

vagrantユーザがsudoできるようにします。 まず、visudoコマンドを実行します。

root@debian:~# visudo

以下の行を追加して保存&終了します。

vagrant ALL=(ALL)     NOPASSWD: ALL

4. sshキーのインストー

vagrantユーザのsshキーをインストールします。

一旦ログアウトし、vagrant ユーザでログインし、以下のコマンドを実行します。 やっていることは、vagrantユーザの公開鍵をインストールしています。これをしないと、vagrant仮想マシンにログインして仮想マシンの制御を行えません。

vagrant@debian:~$ mkdir .ssh
vagrant@debian:~$ chmod 0700 ~/.ssh
vagrant@debian:~$ curl -k -L -o ~/.ssh/authorized_keys  https://raw.githubusercontent.com/mitchellh/vagrant/master/keys/vagrant.pub
vagrant@debian:~$ chmod 0600 ~/.ssh/authorized_keys

5. VirtualBox の Guest Additions をインストー

VirtualBoxのGuest Addtionsをインストールします。

Virtual BoxのGuest Addtionsをマウント

Virtual Boxで、インストールした現在準備中の仮想マシンウインドウを選択し、「デバイス」メニューから、「Guest Additions CDイメージの挿入」を選択します。こうすると、Guest AddtionsのCDが選択された仮想マシンに挿入されます。

CDのマウント

以下のようにしてVirtual Box Guest AddtionsのCDをマウントします。

root@debian:~#  mount -t iso9660 /dev/cdrom /mnt

Guest Addtionsをセットアップ

以下のコマンドでセットアップします。

root@debian:~# apt-get install build-essential module-assistant dkms
root@debian:~# /mnt/VBoxLinuxAdditions.run

その他セットアップ

以上で必要最小限のセットアップはできました。お好みでboxファイルに含めておきたい追加のセットアップをしておきます。

OSを終了

セットアップが終了したらOSを終了します。

root@debian:~# shutdown -h now

BOXファイルの作成

ホストマシン上でBOXファイルを作成ます。 以下コマンドを実行します。 “Debian-stretch"の部分は、Virtual Boxの仮想マシン名です。

$ vagrant package --base Debian-stretch

作成したBOXファイルを登録

作成したBOXファイルをVagrantが使えるように登録します。

vagrant box add yakubouzu/debian-stretch package.box

追加後、一覧を表すると登録したBOXが表示されるはずです。

$ vagrant box list
yakubouzu/debian-stretch (virtualbox, 0)

試しに起動

作ったBOXファイルを使ってvagrant仮想マシンを作成してみます。

まずは設定ファイルであるVagrantfileの作成をvagrant initコマンドで行います。

$ vagrant init yakubouzu/debian-stretch
A `Vagrantfile` has been placed in this directory. You are now
ready to `vagrant up` your first virtual environment! Please read
the comments in the Vagrantfile as well as documentation on
`vagrantup.com` for more information on using Vagrant.

作成できたら仮想マシンを起動。

$ vagrant up

無事エラーが表示されず起動すればOKです。

「Kotlin」がAndroidの正式な開発言語と言うけれど

「Kotlin」がAndroidの正式な開発言語になったらしいが、なんでKotlinのようなマイナー言語が正式な開発言語になるのか不思議。 確かにJVM上で動くのでJavaと相性がいいとは思うけど、わざわざ開発リソースを当ててサポートする必要がるのだろうか?

世の中、GoだとかScalaだとか、マイナーな言語になんだかんだ理由をつけて採用しているプロジェクトがあるけれど、結局のところ新し物好きなだけなのではないか。 Javaとか、RubyPythonC#でいいんじゃない?言語仕様の習得に苦労するんなら、もっと他にやるべきことあるんでない?と思うオジさんなのでした。

TP-Link AC1900無線LAN子機を購入しました

昔から気になっていた、TP-LinkのAC1900 デュアルバンド PCI-E 無線LAN子機 (Archer T9E)を購入してみました。

何故気になっていたかというと、MacOSX86のサイトtonymacosx86.comのByers Guideで、WiFIアダプターとして掲載されていたからです。 導入してみた結果、追加のドライバーなしでMacOS標準の無線LANとして使用することができ、なかなか良い感じです。 感度も悪くなく、速度も上がりました。 買うかどうか悩んでいたのですが、やはり買ってみて良かったと思ってます。

MySQL Workbenchの不具合が解決!

macOS SierraでMySQL Workbencthを使った時、クエリを実行すると応答が返ってこなくなる不具合があったのですが、最近バグフィックス版の6.3.9がリリースされ、ちゃんと動くようになりました! MySQL Workbanchを多用していた私としては朗報です。 よかった。よかった。 f:id:yakubouzu:20170211102228p:plain