UbuntuにKVMをインストールして仮想OSを動かすには?

UbuntuにKVMを導入し、仮想マシンを動かすまでの覚書です。KVM関係のパッケージをインストールし、ゲストOSのisoファイルを準備、仮想OSをインストールして、起動してみました。

各種ファイルの取得・導入・設定

パッケージの導入

まずは必要なパッケージを導入します。

KVMをインストールする(Qiita)が参考になります。

ゲストOSのisoファイルの準備

KVMで何かOSを動かすには、動かすOSのisoファイルが必要です。

例えば、CentOSを動かす場合は、Download CentOSから取得します。今回CentOS7の最小版を使ってみます。

ダウンロードしたディスクイメージは、/var/lib/libvirt/images/に置いておきます。

仮想OSをインストールする

コマンドでインストールします。rootで実行しました。

いくつかのオプションがあります。–nameでは、仮想マシンの名前を付けます。ここではvm02cと名付けています。–memoryはメガバイト単位で、–diskのsizeはギガバイト単位のようです。–cdromには、isoファイルの場所を指定します。

networkのオプションは、接続方式を選びます。とりあえず動かすにはbridge接続で良いです。ブリッジ接続とは「橋渡ししてネットワークを繋げる」イメージです。

ブリッジ接続 (bridge connection)

コマンドを実行した後は、OSのインストーラーの指示に従いインストールします。

仮想OSを動かす

仮想OSの起動と終了

ホストOSのターミナルで、 virsh start vm02c と打ち仮想マシンを起動します。ここで「vm02c」は、さっき名付けた仮想マシンの名前です。

virt-viewer vm02c で起動したマシンの様子を確認します。

終了するには、ゲストOSで、shutdown nowと打ち込みます。ホストOSで、virsh shutdown vm02cとしても良いようです。強制終了(電源コードを抜くに相当)は、virsh destroy vm02cです。

仮想OSの種類の確認

インストールした暫く後に、再び仮想OSで遊ぼうとしても、何を導入したのかを忘れている事があります。

KVMのマシンを知るにはホストOSのターミナルで virsh list –all です。オプション–allをつける事で、停止状態のOSも確認できます。

VirshコマンドによるKVMゲストOSの管理

仮想OSの削除

仮想マシンを削除するには、virsh undefine vm02cです。

CentOSのネットワーク設定

この方法で導入したCentOSは、このままではネットワークに繋がりません。(ホストOSがUbuntuのデスクトップ版であれば、この方法でも最初からネットワークに繋がっていますので楽です。)

CentOSをネットワークに繋げるために、私はONBOOTの設定をyesに変更しました。

/etc/sysconfig/network-scripts/ifcfg-eth0 にネットワーク設定のファイルがありますので、最終行 ONBOOT=yes に変更し保存します。そうすれば起動(Boot)時にネットワークに繋がります。

ネットワークの項目の意味は、下記のリンクが参考になります。

CentOSのネットワーク設定を手動で行う方法

ONBOOTの設定後に再起動すれば、私の環境ではネットワークに繋がるようになりました。

ネットワークに繋がれば、 yum -y update でアップデートが出来ますし、多くのコマンドの導入も可能になってきます。

Ubuntuでスクリーンショットを利用する

Ubuntuも他のOS同様にスクリーンショットを利用できます。

PrintScreenキーで撮る

  1. 画面全体を撮る:PrintScreen
  2. 指定範囲を撮る:Shift + PrintScreen
  3. 指定windowを撮る:Alt + PrintScreen

便利なものです。特に2番目の機能は、ブログ記事投稿でも活躍しそうです。

ターミナルでコマンドを使い撮る

下記の記事の通り、PrintScreenキーを使わずとも、端末(ターミナル)から撮れるようです。

参考:Ubuntuで端末からスクリーンショットを撮る方法まとめ(Qiita)

Ubuntuのsyslogはどこにあるか?

Ubuntuのsyslogは、/var/logの直下にあります。

最新のログはsyslogで、少し古いログはsyslog.1等の名前です。私の環境では1日1回、gzファイルができ、1週間経ったものは消去される様子。

syslogはシステムのログだと理解していましたが、「ログメッセージをIPネットワーク上で転送するための標準規格である」と説明されています。確かにログの中身は、通信に関する記述・記録が多めです。

参考:syslog(wikipedia)

JPGファイルのExifの個人情報削除(UbuntuサーバーのWordPressの場合)

JPGファイルのExif情報には、撮影場所のgps情報等、場合によっては個人情報となる情報が含まれています。WordPressブログに迂闊にアップロードしておくのは心配です。

UbuntuサーバーのWordpressにアップロードしたJPGファイルのExif情報は、jheadのコマンドを使えば一括削除できます。

Exif情報とは?

ExifはExchangeable image file formatの略で、画像データのファイルに含まれる「画像についての情報」です。撮影日時や撮影環境(シャッタースピード等)の他に、撮影した場所のgps情報が含まれる事があります。

対応画像形式はJPEG、TIFF、JPEG XR(HD Photo)で、PNGファイルにはExifは含まれないようです。詳細は下記のwikipedia情報が詳しいです。

Exchangeable_image_file_format

jheadをインストールしExif情報を確認

Ubuntuではjheadを使いExif情報を確認する事ができます。

sudo apt-get install jheadでjheadをインストールし、jhead [ファイル名] で内容を確認出来ます。jhead -purejpg [ファイル名]でExif情報を削除できます。

LinuxのUbuntuで画像の情報のExifをコンソールから削除するコマンド

デジカメ画像(JPEG)のExif情報を活用するには

私も自分のjpgファイルを確認しましたが、「AppleのiPhone5Sで撮影した」など、比較的どうでも良い情報の他に、やはりgpsの情報が含まれています。webで公開している画像ファイルの中に、自宅で撮影したファイルがあれば、自宅がある程度特定されてしまいます。

心配なのでExif情報は削除する事にしました。

WordPressの画像ファイルの編集

WordPressでアップロードした画像は、WordPressのインストールフォルダの、wp-content/uploads にアップロードした年別に格納されています。

2015年のExif情報を削除するには、そのフォルダに行き、コマンドsudo jhead -purejpg 2015/*/*.jpg で一括削除できます。

所有者・グループがrootに代わるので、念の為sudo chown -R www-data:dev 2015/*/*.jpg で元に戻しておきます。

プラグインでExif情報削除

WordPressの場合、プラグインでEXIFの個人情報を削除する事ができるようです。検索すると下記の記事が出てきました。

WordPressでEXIF情報を自動削除してくれるプラグイン「EWWW Image Optimizer」