VMware Fusionの仮想マシン上でKVMなどの仮想環境をネストして利用する設定 (Nested Virtualization )

VMware FusionではmacOS上で仮想マシンを動作させることができる。その仮想マシン上でさらにネストしてKVMなどの仮想環境を動かす(Nested Virtualization)には、仮想マシンの設定を変更して「Intel VT-x」という仮想化ハードウェア拡張を有効にする必要がある。

現在利用している仮想マシンでIntel VT-xが有効になっているかどうかはcpuinfovmxが含まれるかどうかで確認できる。

grep vmx /proc/cpuinfo

grepを実行しても何も表示されない場合は、Intel VT-xが有効になっていないということになる。

たとえば、virsh define実行時には次の様なエラーが発生した。

# virsh define ubuntu16.xml
error: Failed to define domain from ubuntu16.xml
error: invalid argument: could not find capabilities for arch=x86_64 domaintype=kvm

VMware Fusionの設定画面でIntel VT-xを有効にするには、仮想マシンをシャットダウンした状態で仮想マシンの「設定 -> プロセッサとメモリ」を開き。

「詳細オプション」にある「この仮想マシンでハイパーバイザー アプリケーションを有効にする」にチェックをつける。

この設定をした後、仮想マシンを起動して先ほどのgrepコマンドを実行すると、Intel VT-xが有効になっていることを確認できる。

grep vmx /proc/cpuinfo
flags		: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts mmx fxsr sse sse2 ss syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon pebs bts nopl xtopology tsc_reliable nonstop_tsc aperfmperf pni pclmulqdq vmx ssse3 fma cx16 pcid sse4_1 sse4_2 x2apic movbe popcnt aes xsave avx f16c rdrand hypervisor lahf_lm epb tpr_shadow vnmi ept vpid fsgsbase smep dtherm ida arat 

VirtualBoxでもKVMの準仮想化機能などを利用する場合にはこの設定が必要となる。

VMware Fusionの設定ファイルであるvmxファイルにおいては、vhv.enableTRUE値を設定する行を追加すればよい。

vhv.enable = "TRUE"

Vagrantでvmware_fusionのproviderを使用している場合は、例えばVagrantfileに次の様に記述すれば、vagrant upでIntel VT-xを有効化した仮想マシンを起動することができるようになる。

Vagrant.configure("2") do |config|
  config.vm.box = "bento/ubuntu-16.04"
  config.vm.provider :vmware_fusion do |vmware|
    vmware.vmx["vhv.enable"] = "TRUE"
  end
end

VagrantのアップグレードでVMware providerエラー

最近は主にAnsibleのテスト環境用にVagrantを使用している。Virtual Boxは重い印象があるのでVMにはVMware Fusionを利用している。

playbookの記述が出来上がってくるとそれほど使う機会もないので、Vagrantのアップグレードとか頭になかったので全然してなかった。
バージョンを調べてみたら当然のことながら新しいバージョンがリリースされていたのでアップグレードしてみたところ、次のようなエラーで動かなくなってしまった。

$ vagrant init
An unexpected error occurred while loading the Vagrant VMware
provider. Please contact support with the following
error code: '7'.
Vagrant failed to initialize at a very early stage:

The plugins failed to load properly. The error message given is
shown below.

exit

VMware Fusionをproviderとして使用するプラグインもアップデートが必要なのかと思って、vagrant plugin updateを実行してみたが何も変わらない。

An unexpected error occurred while loading the Vagrant VMware provider · Issue #3299 · mitchellh/vagrant

プラグインのアップデートもないのもおかしいなと思って調べてみたところ、githubのissueが見つかり、そのコメントに「一度バージョンを戻してプラグインをアップデートした後、再度Vagrantをアップグレードすると動くよ」というのが見つかったので、その通りにすると動作するようになった。

今回はバージョン1.7.4から1.8.6にアップグレードしたので、以前のバージョンも配布しているURLから古い方のバージョンである1.7.4のパッケージをダウンロードしてダウングレードを実行。

Vagrant Versions | HashiCorp Releases

vagrant plugin updateを実行してプラグインをアップデートする。今度はちゃんとアップデートができた。

$ vagrant plugin update

Updating installed plugins...
Updated 'vagrant-share' to version '1.1.5'!
Updated 'vagrant-vmware-fusion' to version '4.0.12'!

この状態で再度Vagrantのバージョンを1.8.6をインストールすることで、無事アップグレードが完了した。

$ vagrant -v
Vagrant 1.8.6

$ vagrant init
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.

CentOS 7でApache suEXECのログはどこに出力されるか

結論から先に書くと、CentOS 6系ではApacheのsuEXECに関するログは/var/log/httpd/suexec.logに出力されていたが、CentOS 7ではsyslog経由で/var/log/secureへ出力されるように変更されていた。

このログはjournalctlでも確認出来る。journalctlの場合は下記の様なコマンドでtail -fと同様な閲覧方法が可能だ。

# journalctl -f

“CentOS 7でApache suEXECのログはどこに出力されるか” の続きを読む

Sublime Text2 ファイル検索から除外する設定

Sublime Text2を使いはじめてしばらくたつが、ファイル検索の時に余計なファイルが表示されることが多々あるのでファイル検索対象から外す設定をした。

私の場合、Railsのアプリのgemはvendor/cache/以下に保存していることもあり、Rubyのコードがvendor/cache/ruby/に大量に展開されていることがあるので(これはBundlerの設定か?)、⌘Tでファイル検索をしたときに探しづらい。

ついでに.git/objects/のファイルとAsset Pipelineのcasche (tmp/cache/)も検索対象になってしまっていたので追加しておいた。

左上のメニューから
Sublime Text2 -> Preferences -> Settings - User
もしくは⌘,で設定画面を開きfolder_exclude_patternsの設定を追加する。

"folder_exclude_patterns" : ["vendor/cache", "tmp/cache", ".git"]

不要な情報が表示されないということは大切なことだ。

Sublime Text2 ¥(円)マークで\バックスラッシュを入力

Sublime Text2を使い始めてしばらくすると、改行コードを入力したつもりで"hello¥n"と書いていて実際には改行されないということが何度もあった。

実際にはバックスラッシュを使って"hello\n"と書く必要がある。

これまで、iTerm2やiTerm2上のEmacsを使っていて全く気にならなかったのに、どうしてだろうとおもったら、iTerm2では¥キーを押しても\が表示されていたからだった。
“Sublime Text2 ¥(円)マークで\バックスラッシュを入力” の続きを読む

Sublime Text2でイタリック体(斜体)を使わない

エディタでコメントのデフォルトフォントがイタリック体になっていて、見づらいことがよくある。

最近使い始めたSublime Text2でもコメントの表示がイタリック体だったので、イタリック体を使わない設定に変更した。

左上のメニューから
Sublime Text2 -> Preferences -> Settings - User

で設定画面を開き下記設定を追加するだけだ。

"font_options": ["no_italic"]

行末にカンマが必要な場合はカンマを付けておくこと。

Settings - Defaultの方に書いてあるコメントからすると、no_boldno_antialiasという設定もあるようだ。

    // Valid options are "no_bold", "no_italic", "no_antialias", "gray_antialias",
    // "subpixel_antialias", "no_round" (OS X only) and "directwrite" (Windows only)

これでコメントが読みやすくなった。

docomo版iPhoneで今月のデータ転送量を確認する

以前はSIMフリーの香港版iPhone 4SをdocomoのXi契約で使用していましたが、先日docomo版iPhone 5sに契約変更しました。

SIMフリー端末をXi契約した当時は月間で7GBを上限で速度制限される「Xiデータプラン フラット にねん」を使用していました。しかし、それほど外でiPhoneでネット繋げるわけでもなくガンガンテザリングする訳でもないので、7GBから3GBへ上限を変更して「Xiデータプラン ライト にねん」を利用していたのです。

転送量無制限のWiMAXも持っているので、私の用途的には月間3GBもあれば十分なんですが、iPhone 5sの契約にはライトがないので、強制的に上限7GBとなってしまいました。

7GBまで余裕があるなら3G回線(SIMフリーiPhone 4SではXi契約でも3G回線のみ使用可能)からLTEになったことだし、もう少しテザリングしてもいんじゃないかと思い、今月のデータ転送量を調べてみることにしました。
“docomo版iPhoneで今月のデータ転送量を確認する” の続きを読む

Rails4アプリがiframeで表示されない

Rails4でFaceookアプリを作ってまして、facebookに埋め込む形でのアプリの設定をしても、白い画面が表示されるだけで思ったようにWebアプリの画面を表示されなかった。

原因はFacebookのキャンバスページではiframeを使用していて、Rails4側でその表示を拒否しているからだった。

どうやってiframeでの表示を拒否しているかというと、レスポンスのヘッダでX-Frame-Optionsというものを使用することによって実現していることが分かった。
“Rails4アプリがiframeで表示されない” の続きを読む

ホテル滞在用に小型ルータを購入した (ELECOM WRH-300BK)

ホテル用小型ルータ ELECOM WRH-300BK その1

今年は1、2ヶ月に1回くらいの頻度で出張しておりまして、出張するときは2,3泊はホテルに滞在することになります。

ホテルには有線LANがある場合が多いので、MacBook AirにThunderboltのLANアダプタを使用してネットしていました。

ただ、有線LANだけだとiPhoneは3Gだけでしか繋がらないし、iPod touchやKindle、wifi版iPadを持ってもホテルで使用できません。

そこで、WiMAXの出番なわけですが、、、東京のホテルでもビル群の奥まったところにあったりするとホテルの部屋で上手く電波が拾えないということが多々ありました。かといって、ホテルの各部屋までWifiの電波が飛んでいるところなどは、それほどありません。
“ホテル滞在用に小型ルータを購入した (ELECOM WRH-300BK)” の続きを読む