2016/04/24(日)ubuntu 16.04 インストール(2) vmware tools

ubuntu 16.04はvmware上で動かしているわけですが、デスクトップのリサイズ、ホストOSとのクリップボード共有(文字列のコピペが出来るようになる)、フォルダ共有などを実現するvmware-toolsをゲストOSに入れるのはほぼ必須です。vmware toolsを入れるのにやや苦戦したので、記録を残しておきます。

まず、普通のインストール手段を試してみました。vmware toolsのインストールをクリックすると、CDがマウントされてファイルブラウザが開くので、tar.gzをhomeにコピーして展開し、
sudo ./vmware-install.pl
後は質問には基本的にreturnを押すだけでいいはずですが、コンパイルエラーになってしまいます。カーネルモジュールのmakeを行なうのですが、カーネルが新しくなってソースコードが変化し、それにvmware toolsが追いついていないようです。以前からこの現象は起きていてvmware toolsのちょっとした修正で凌いでいたのですが、エラーメッセージを見たところ直す箇所はかなり多そうに感じました。

困って検索してみたところ、VMware Tools Patchesに修正とインストールを全自動でやってくれるpatchがあるのを見つけました。こちらは、
sudo apt install git
git clone https://github.com/rasa/vmware-tools-patches.git
cd vmware-tools-patches
./patched-open-vm-tools.sh
で、自動的にvmware-toolsがダウンロードされてpatchを当てられてインストールされました。しかし、デスクトップのリサイズとフォルダ共有はうまくいったのですが、クリップボード共有が使えず。

第3の手段として、open-vm-toolsを試してみました。
sudo apt install open-vm-tools-desktop
再起動後、デスクトップのリサイズもクリップボード共有もうまく動作しました。共有フォルダは普段はOSの機能で賄っていてあまり使っていないのですが、設定→オプション→共有フォルダ で共有フォルダを有効にしてみました。/mnt/hgfs 以下に共有フォルダが見えるはずだが、見えません。しかしvmware-hgfsclientを実行すると設定した共有フォルダ名が見えているので、後少しっぽいです。最終的に、VMwarePlayer上のArchLinuxとホストOSとフォルダ共有をする失敗談 - みちのいに!!を参考にしてうまくいきました。
予め
mkdir /mnt/hgfs
しておき、
sudo vmhgfs-fuse -o allow_other -o auto_unmount .host:/ /mnt/hgfs
でマウント出来ました。永続的にmountするには、/etc/fstabで
.host:/ /mnt/hgfs fuse.vmhgfs-fuse allow_other,auto_unmount,defaults 0 0
と書くとよいでしょう。

結論として、open-vm-toolsがお勧めです。しかし、最近はvirtualboxが安定してきてみんなそっちを使っているようで、vmwareをやめてvirtualboxにするのがいいかもなあ。

2016/04/24(日)ubuntu 16.04 インストール(1)

ubuntu 16.04が4月21日にリリースされました。

14.04以来2年ぶりのLTS (Long Time Support)で、5年間のサポート期間があります。半年毎にアップデートするのは面倒なのでLTSを愛用していますが、ubuntuではセキュリティパッチは当たるものの基本的にソフトウェアのバージョンは上がらないので、14.04はそろそろ古くなってきました。

というわけで、16.04に乗り換えるべく、いろいろインストールして試してみます。その過程を日記として残します。

Ubuntu 16.04 (Xenial Xerus)から、 ubuntu-16.04-desktop-amd64-iso をダウンロードします。自分が落としたときはリリース直後だったのでtorrentを使いました。もう数日すると「日本語remix」バージョンも公開されるとは思いますが、待ちきれずに本家を入れました。

VMwareで作業しました。新規仮想マシン→標準→後でOSをインストール。仮想マシンの種類はLinux Ubuntu 64bit。ディスクはデフォルトの20Gじゃ少ないので256Gに増やしました。仮想マシンの設定でisoをマウントし起動。
  • 「日本語」を選ぶ。
  • 「Ubuntuをインストール」を選ぶ。
  • 「Ubuntuのインストール中にアップデートをダウンロードする」、「グラフィックス、Wi-Fi機器、Flash、MP3やその他のメディアに必要なサードパーティーソフトウェアをインストールする」をチェック
  • 「安全のため新しいUbuntuのインストールを暗号化する」、「新しいUbuntuのインストールにLVMを使用する」はチェックしない。
  • 「Tokyo」を選ぶ。
  • キーボードは「日本語」「日本語」
  • 「ログイン時にパスワードを要求する」を選ぶ。
インストールは全く問題なく終了しました。

初めてubuntuを使うとメニューから端末を出せずにびっくりするかもしれませんが、左上の渦巻きみたいなアイコンから「terminal」を検索して出します。右クリックして「Launcherへ登録」するといいでしょう。

2016/04/15(金)kv-0.4.33

kvライブラリを0.4.33にアップデートしました。

今回は、Visual C++でconv-double.hpp, conv-dd.hppがコンパイル出来ないというご指摘を頂いたので修正しました。この2つのファイルは元々luaというスクリプト言語でプロトタイプを開発し、それをC++に移植したものです。luaのif文の中のand(論理積)を&&に直すのを忘れていた箇所があって、何故か古いVCやgccではこれがコンパイルエラーにならなかったので気づかなかった、というものです。@quartorzさん、@nikqさん、ご指摘ありがとうございました。

その他、自動微分の使い方の説明に少し追記しました。

某S先生がC++11の機能を使っていろいろ作ってるのが楽しそうで、kvもC++11に移行したい気分が高まっています。しかしほぼ全体に及ぶ大手術になるので大変だなあ。

2016/04/02(土)kv-0.4.32

kvライブラリを0.4.32にアップデートしました。

またまたバグフィックスです。intervalとddのsinhとcoshに、引数が負で絶対値が大きい場合に、ゼロ除算が発生してしまうバグがありました。
#include <kv/interval.hpp>
#include <kv/rdouble.hpp>

typedef kv::interval<double> itv;

int main()
{
	std::cout << sinh(itv(-710.)) << "\n";
}
のようなプログラムを実行すると、
terminate called after throwing an instance of 'std::domain_error'
  what():  interval: division by 0
中止 (コアダンプ)
のようになってしまっていました。これを、正しく
[-inf,-8.98846e+307]
となるように修正しました。誤った数値を黙って返してしまうのは精度保証的には最悪ですが、停止するのでそれよりマシとは言えみっともないバグではあります。

この原因は、sinh(x)=(exp(x)-exp(-x))/2を、expの計算を一回で済まそうとして(exp(x)-1/exp(x))/2で計算していたため、exp(x)が(値がが小さすぎて)ゼロを含むような場合にゼロ除算が起きてしまうというものでした。xの正負で場合分けして、xが負なら(1/exp(-x)-exp(-x))/2で計算する、というような対策をしました。
OK キャンセル 確認 その他