VirtualBoxで、UbuntuとWindowsの間でクリップボードを共有できるようにしました

Updated:

VirtualBoxでは、デフォルトでは、Ubuntu(ゲストOS)とWindows(ホストOS)ではクリップボードが別物として扱われます。 つまり、Ubuntuでコピーしたものは、Windowsにはペーストできません。 これでは不便なので、クリップボードを経由して、UbuntuとWindowsとの間で相互にコピペできるように設定をしました。

クリップボード機能は、GuestAddtionsというCD-ROMイメージで提供されています。 GuestAddtionsとして提供されるモジュールをビルドしてUbuntuにインストールすると、クリックボードが共有できるようになります。

また、これに加えて、Windows上でVirtualBoxのウィンドウの大きさを変えると、Ubuntuのデスクトップのサイズも自動的に変わるようになります。

インストールの手順は次のようになります。

まずは、対象となるUbuntuの仮想マシンをVirtualBoxで起動しておきます。

Ubuntu上で、モジュールのビルドに必要なパッケージlinux-headers-genericをインストールします。

$ sudo apt install linux-headers-generic

VirtualBoxのメニューから[デバイス]-[Guest Additions CDイメージの挿入…]を実行します。

CDイメージがマウントされると、「VBox_GAs_6.0.14には自動的に起動するソフトウェルが含まれていますが。実行しますか?」というダイアログが表示されるので、「実行する」ボタンをクリックします。

すると、/bin/shをスーパーユーザで実行するために、パスワードの入力を求めるダイアログが表示されるので、パスワードを入力します。

新たにターミナルが開いて、そこでモジュールのビルドが行なわれます。 ビルドが完了すると、ターミナルに”Press Return to close this window…“というメッセージが表示されるので、リターンキーをタイプします。 ターミナルが閉じたらインストールが完了です。

Ubuntuをリブートすると、機能が有効になります。

インストールが成功すると、vboxをプレフィックスとするモジュールが起動されるようになります。 コマンドlsmod | grep vboxで確認しましょう。次のような感じになるはずです。

$ lsmod | grep vbox
vboxvideo              36864  0
vboxguest             335872  5
ttm                   106496  2 vmwgfx,vboxvideo
drm_kms_helper        172032  2 vmwgfx,vboxvideo
drm                   401408  7 vmwgfx,drm_kms_helper,vboxvideo,tmt
$

VirtualBoxのメニューで、[デバイス]-[クリップボードの共有]を選び、さらに「双方向」を選択します。

これで、Ubuntu(ゲストOS)とWindows 10(ホストOS)でクリップボードが共有されるようになります。 UbuntuとWindowsで相互にコピペできることを確認しましょう。

また先ほど書いたように、VirtualBoxのウィンドウの大きさを変えると、Ubuntu側のデスクトップの大きさも自動的に変更されるようになります。

これでだいぶ便利になりました。

VirtualBox環境にUbuntu 16.04LTSをインストールしました

Updated:

ここのところ、Windows 10マシンでLinux環境を使うには、もっぱらWSLを利用していました。 WSLはなかなか快適です。

しかし、WSLとは別に、Ubuntu 16.04LTSを動かすことが必要になりました。 そこで、VirtualBoxをインストールして、その仮想マシン上でUbuntu 16.04LTSを動かす環境を作りました。 この記事は、その時のメモです。(詳しい手順の記述は省いて、簡素なメモ書きとしています。)

VirtualBoxの公式サイトから、最新版の6.0.14をダウンロードしてインストールしました。特に問題もなく、サクっとインストールできました。

次に、VirtualBox上で、仮想マシンを作成して、Ubuntu 16.04LTSをインストールします。 このインストール作業には、ISOイメージ(インストール用DVD-ROMの内容を、そのままファイルにしたもの)を使用します。 ISOイメージはubuntuの公式ページ から、64ビットデスクトップ版をダウンロードしました。

AWSのようなクラウドでは、あらかじめOSインストール済みのインスタンスイメージが提供されているので、自前でOSをインストールする必要はありません。 ISOイメージを使ってのOSインストール作業は、ずい分と久しぶりです。

詳しい説明は省きますが、だいたい次のような流れになります。

  • VirtualBoxを起動して、[新規]をクリックして、新しい仮想マシンを作成する
  • 表示される一連のダイアログで、仮想マシンのパラメータ(メモリやディスクの容量など)を設定する
  • 設定が済んだら、その仮想マシンを選択して[起動]をクリックすると、仮想マシンがブ一トする
  • 「起動ハードディスクを選択」ダイアログが表示される。フォルダのアイコンをクリックすると、ファイル選択ダイアログが表示される
  • 先ほどダウンロードしたISOイメージを選択すると、それが仮想光学ドライブにマウントされる
  • ISOイメージからブート処理が行なわれて、Ubuntuのインストーラが起動する

あとは、インストーラに対して設定を行なえば、仮想マシンの仮想ディスクにUbuntuがインストールされます。

次回からは、VirtualBoxを起動して、仮想マシンを選択して起動すれば、デスクトップ版のUbuntuが立ち上がります。

USB回りのトラブルシューティングに便利なツールUSB Device Tree Viewer

Updated:

ノートPC(OS: Windows 10)にUSB-Cハブを接続して、外部にSSDやプリンタなどを増設して使っています。 ここのところ、USBの動作が不安定で、USB 3.0対応のはずなのに、HDDやSSDの読み書きが遅いといった現象が発生して困っていました。

探してみると、USBの接続状態をリアルタイムで表示するUSB Driver Tree Viewerというツールが見つかりました。 下記の公式ページのDownloadというリンクからダウンロードできます。 (執筆時点ではV3.3.7が最新でした。)

こんな感じでPCに接続されているUSBデバイスやハブの状態が表示されます。

UsbDeviceTreeViewer.jpg

HDD/SSDがUSB 3.0で接続していれば、「SuperSpeed USBハブ」の下に表示されます。また、HDD/SSDのアイコンにも「S」と表示されます。

USB 2.0で接続していると、「USBハブ」の下に表示されます。HDD/SDDのアイコンには「H」と表示されます。

USB-Cハブに外部ドライブを接続して、USB Device Tree Viewerで動作を観察したところ、次のような状態でした。

  • 最初はUSB 3.0で接続していたのに、いつの間にかUSB 2.0接続になってしまう
  • USBを抜いて挿し直すと、USB 3.0接続になることも、USB 2.0接続のままのこともある

常にUSB 2.0接続になるなら、明らかにハブが故障してると確定できます。 しかし、今回のように、うまくいったりいかなかったりすると困りますよね。

そこで、ソフトウェア的な問題かと思い、いろいろとドライバの設定をいじってみました。 しかし、安定してUSB 3.0では接続できませんでした。

そこまで調べてうまくいかないのだから、たぶんUSB-Cハブのハードウェア的な故障だろうと考え、USB-Cハブを購入しました。

買ったのはこれです。

新しいUSB-Cハブを使って、外付けHDD/SSDを接続したところ、常に安定してUSB 3.0で動作するようになりました。 さすがに快適ですね。

結局、USB-Cハブが故障していたという結論になりました。

というわけで、USB回りのトラブルシューティングにはUSB Device Tree Viewerが便利だよ、という話でした。

ノートPCに容量1TBの外付けSSDを増設しました

Updated:

いつの間にかノートPCのディスクの残り容量が少なくなっていたので、外付けのSSDを買いました。 今や1Tバイトの外付けSSDが13,000円くらいで買えるんですね。 数年前に、1Tバイトの外付けハードディスクが1万円になって、「安くなったなあ」と思いましたが、SSDがこんな値段なので驚きます。

購入したのは「BUFFALO ポータブルSSD USB3.1(Gen1) 対応 1TB SSD-PG1.0U3-B/NL」です。Amazonで12,999円(税込)でした。

早速、新しい外付けSSDをUSB-Cハブを経由してPCに接続すると、Fドライブになりました。 たぶん、これまでに接続したHDD/SSD/SDカードを憶えていて、順にドライブレターを割り当てているのでしょう。

この外付けSSDは常に接続して使うつもりなので、Dドライブになるように設定します。 Windows10でドライブレターを管理するには「コンピュータの管理」ツールから、「ディスクの管理」機能を使います。

具体的には、次のように起動します。

  • Windowsメニューで「管理ツール」を検索する。
  • そこから「コンピュータの管理」を起動する。
  • 「コンピュータの管理」ツールが起動されたら、「ディスクの管理」を選択する。

「ディスクの管理」の画面では、接続中のボリューム一覧が表示されます。

  • 変更したいボリュームで右クリックして「ドライブ文字とパスの変更」を選択すると、ダイアログが表示される。
  • 「変更」でドライブ文字を変更。「削除」で割り当てられているドライブ文字の結びつきを解除。

このツールを使って、Dドライブの割り当てを解除して、買ってきた外付けSSDをDドライブに割り当てました。これで一件落着です。

この「コンピュータの管理」の「ディスクの管理」ツールは、パーティションを切ったり、初期化したり、という機能も持ってるんですね。

ここで、定番のCrystalDiskMarkを使って、この外付けSSDの読み書きの速度を測定すると、なぜか激遅でした。シーケンシャルリードで35M bytes/sくらいしか出ません。ハブもドライブもUSB 3.0なのに、いくらなんでも遅すぎます。

ドライブレターの割り当てを変えたために、本来のUSB3.0で接続できてないのでは、と思い、USBハブを抜いて刺し直したら、高速に読み書きできるようになりました。

測定結果はこんな感じです。シーケンシャルリードで380M Byte/s出てるので上出来でしょう。

external-ssd-speed.jpg

今度こそ一件落着!

Googleが開発したビルドツールBazelをUbuntu 18.04LTSにインストールしました

Updated:

Bazelは、Googleが開発した、複数の言語や複数のプラットフォームを対象としたビルドツールです。 公式ページではA fast, scalable, multi-language and extensible build systemsとうたっています。

TensorFlowをいじろうとしたところ、ビルドにBazelが必要だったので、インストールしてみました。 その時のメモです。

インストールした環境は、Windows 10のWSL上で動作するUbuntu 18.04 LTSです。

作業時点(2019/7/10)では、Bazelの最新バージョンは0.27ですが、 このバージョンでTensorFlow(r1.31.2)をビルドしようとすると、 「Obsoleteな記述があるので、書き換えてね」みたいなメッセージ(英語)を表示して失敗します。

TensorFlow(r1.13.2)について調べてみると、Bazel 0.18でのビルド成功の実績がありました。 そこで、ここでは最新の0.27ではなく、Bazel 0.18をインストールすることにしました。 (実際には、まずBazel 0.27をインストールしたところ、TensorFlowのビルドに失敗したので、原因を調べてみたところBazel 0.18を使えばよいことがわかったのでした。)

Ubuntuへのインストール手順は、オフィシャルサイトのInstalling Bazel on Ubuntuで説明されています。 複数の方法がありますが、ここでは推奨されているバイナリインストーラを使う方法(“Installing using binary installer”)の手順でインストールしました。

(1) まず下準備として必要なパッケージをインストールします。

sudo apt-get install pkg-config zip g++ zlib1g-dev unzip python3

(2) Bazelのインストーラをダウンロードします。 GitHubのBazelリリースページから、使用するバージョン用のインストーラをダウンロードします。 Ubuntu用のインストーラはbazel-<version>-installer-linux-x86_64.shという名前です。

(3) インストーラを実行します。--userオプションを指定しているので、Bazelは$HOME/binにインストールされます。

chmod +x bazel-<version>-installer-linux-x86_64.sh
./bazel-<version>-installer-linux-x86_64.sh --user

(4) 環境を設定します。PATH$HOME/binが通してやります。 また、bashでの補完を有効にするには、~/.bashrcに以下の設定を追加します。

source /home/cond/.bazel/bin/bazel-complete.bash

(5) bazelを起動できることを確認します。 次のコマンドを実行すると、Bazelのバージョンとヘルプが表示されるはずです。

bazel help

Bazelの使い方については、検索すれば日本語の解説記事が見つかるので、そちらを参照してください。 例えば、「Googleが開発する最新ビルドツール「Bazel」を使ってみよう | さくらのナレッジ」。

公式サイトには、チュートリアル(英語)が用意されています。 簡潔なチュートリアルですが、Bazelを使った開発手順を一通り理解できます。 英語ですが、トライすると良いでしょう。