UNIX的技術向上計画

UNIX系のOS。主にOpenBSDとUbuntuについて、自分のメモも兼ねて書いていきます。基本的に内容及びリンク先については保証致しません。ご了承ください。

OpenBSD で 2TB 以上の HDD を認識させる(4TB,OpenBSD5.8)

OpenBSD で 2TB 以上のHDDを増設します。

OSは2TB以下のディスクにインストール済みの環境で行います。 インストールディスクを 2TB 以上にするのはまた面倒だと思います。

以前投稿したものの修正版となります。

環境

OS: OpenBSD 5.8 relece

アーキテクチャ: x86_64

マザーボード: ASRock C70M1

使用した増設 HDD : WDC WD40EURX 4TB

i386 版だとうまくいかないと思います。

また、 前回のものと使用しているHDDが変更されています。

準備

OS をあらかじめインストールしておき、 増設 HDD を設置します。

3TB のディスクのパーティションを初期化

# fdisk -e sd2
fdisk: 1> e 0
Partition id ('0' to disable) [0 - FF]: [0] (? for help) EE      # GPTにする
Do you wish to edit in CHS mode? [n]  [enter]
Partition offset: [0] 64
Partition size: [0]  [enter]
fdisk:*1> q

ディスク上にパーティションを作成

# disklabel -E sd2
Label editor (enter '?' for help at any prompt)
> a f
offset: [0] 
size: [7814037168] 
FS type: [4.2BSD] 
Rounding size to bsize (128 sectors): 5860533056
> p m
OpenBSD area: 0-7814037168; size: 3815447.8M; free: 0.0M
#                size           offset  fstype [fsize bsize  cpg]
  c:       3815447.8M                0  unused                   
  f:       3815447.8M                0  4.2BSD   8192 65536    1 
> q
Write new label?: [y] y

ディスク上にファイルシステムを作成

# newfs sd2f

好きなところにマウントして確認

# df -h

Filesystem     Size    Used   Avail Capacity  Mounted on
・
・
・
/dev/sd2f      3.6T    8.0K    3.4T     0%    /home/test

まとめ

4TBと大きなサイズですが、問題なく稼働しています。

参考資料・リンク

14 - Disk Setup

更新履歴

  • 2015/11/14 作成

OpenBSD spamd でメールフィルタリング(FreeBSD10)

OpenBSD spamd でメールフィルタリングを行う設定です。

今回は FreeBSD 上で動作させます。

環境

OS: FreeBSD 10

アーキテクチャ: x86_64

準備

OSインストール後、 pf のモジュールをロードさせます。

# kldload pf

kldstat コマンドで「pf.ko」というのがあれば大丈夫です。

# kldstat 
Id Refs Address            Size     Name
 1    7 0xffffffff80200000 1611688  kernel
 2    1 0xffffffff81a12000 52f2     fdescfs.ko
 3    1 0xffffffff81a18000 2bcf     pflog.ko
 4    1 0xffffffff81a1b000 307d3    pf.ko

上記でうまくいかない場合はカーネルの再コンパイルを行います。

# cd /usr/src/sys/amd64/conf/
# cp GENERIC MYGENERIC

「 MYGENERIC 」に以下を追加します。 # Enabling Packet Filter(PF)| device pf # Packet filter device pflog # Packet filter logging device pfsync # Packet filter state table logging

# Enabling ALTQ (for Packet Filter(PF))
options                ALTQ            # Enable ALTQ.
options                ALTQ_CBQ        # Build the ``Class Based Queuing'' discipline.
options                ALTQ_RED        # Build the ``Random Early Detection'' extension.
options                ALTQ_RIO        # Build ``Random Early Drop'' for input and output.
options                ALTQ_HFSC       # Build the ``Hierarchical Packet Scheduler'' discipline.
options                ALTQ_CDNR       # Build the traffic conditioner. 
options                ALTQ_PRIQ       # Build the ``Priority Queuing'' discipline.
options                ALTQ_NOPCC      # Required if the TSC is unusable.

カーネルコンパイルします。

# config MYGENERIC
# cd /usr/src
# make buildkernel KERNCONF=MYGENERIC
# make installkernel KERNCONF=MYGENERIC

再起動

# sync
# sync
# sync
# shutdown -r now

環境設定

spamdをインストール

# pkg install spamd

「/etc/fstab」に以下を追加

fdescfs /dev/fd fdescfs rw 0 0

適用

# mount -a

「/etc/rc.conf」を編集

pf_enable="YES"
pf_flags=""
pflog_enable="YES"
pflog_logfile="/var/log/pflog"
pf_rules="/etc/pf.rules"
pflog_flags=""
gateway_enable="YES"
obspamd_enable="YES"
obspamd_flags="-h mysntp.local -G 25:4:864 -l 127.0.0.1 "
obspamd_grey="YES"
obspamlogd_enable="YES"
obspamlogd_flags="-I -i lo0"
pfspamd_enable="YES"
pfspamd_flags="-g -v"

「/etc/pf.rules」を編集します。

# インターネットと通信する側の NIC 名
em0_if = "em0"

# spamdへnatさせる
table <spamd-white> persist file "/usr/local/etc/spamd/white-db"
rdr on $em0_if inet proto tcp from !<spamd-white> to port smtp -> 127.0.0.1 port 8025
rdr on $em0_if inet proto tcp from <spamd-white> to port smtp -> 127.0.0.1 port 25

# Allow Local Loop back
set skip on lo0

# localhostのみでListen
pass in proto tcp from any to lo0 port spamd keep state
pass in proto tcp from any to lo0 port smtp keep state

# Allow all packets to go out, and keep state of them
pass out all keep state

「rdr on $em0_if inet proto tcp from <spamd-white> to port smtp -> 127.0.0.1 port 25」 については実際に設置されている自分のメールサーバを指定してください。

例えばメールサーバが「192.168.0.10」の場合は、「127.0.0.1」の部分をそのIPにします。

ホワイトリスト用テーブルデータを作成

# vim /usr/local/etc/spamd/white-db

許可したいアドレスを「ネットワークアドレス/ネットマスク長」のように記入

192.168.152.1/32

再起動後、適用させる

# pfctl -f /etc/pf.rules

変更したテーブルのみを適用させる場合は以下のようにコマンドを利用する。

# pfctl -t spamd-white -T replace -f /usr/local/etc/spamd/white-db

persist テーブルの内容を表示する

# pfctl -t spamd-white -T show

spamdの設定

設定ファイルをコピーする。

cp /usr/local/etc/spamd/spamd.conf.sample /usr/local/etc/spamd/spamd.conf

必要であれば「/usr/local/etc/spamd/spamd.conf」ファイルを編集します。

今回はホワイトリストはpfで処理しているので、ブラックリストのみ処理させるように、 編集・追加します。

all:\
        :uatraps:nixspam:china:korea:myblack:  # myblack を追加

myblack:\
       :black:\
       :msg="Your address %A is in the spam list":\
       :method=file:\
       :file=/usr/local/etc/spamd/block-db:

ブロックしたいIPのデータを作成

# vim /usr/local/etc/spamd/block-db

作成方法はホワイトリストと同じです。

ブラックリストの取得

「spamd-setup」を実行します。

# spamd-setup

これで公開されているブラックリストを取得してきてくれます。

定期的に実行する必要があるので、cronに登録しておきます。

いったんサーバを再起動させます。

spamdbによる手動登録

man による説明は以下となっています。

       whitelisting
       # /usr/local/sbin/spamdb -Y foo.example.org -a 1.2.3.4 2.3.4.5
       # /usr/local/sbin/spamdb -Y foo.example.org -Y bar.example.org -a 1.2.3.4

       blacklisting
       # /usr/local/sbin/spamdb -Y foo.example.org -ta 1.2.3.4 2.3.4.5

また、スパム判定用のダミーメールアドレスを登録することもできます。

# /usr/local/sbin/spamdb -T -a 'trapmeil@trapdmain.localhost'

「trapmeil@trapdmain.org」を自分のサイト等に入れて、クローニングさせます。

<a herf="trapmeil@trapdmain.localhost"></a>

これで上記のメールアドレス宛に送信してきた場合はスパマーだと分かります。

状態を確認するときは「spamdb」と入力します。

まとめ

メールフィルタリングのシステムは他にもいくつかありますが、 OpenBSD spamd の場合は既存の環境を壊さずに追加できる点が良いと思います。

また、自身がダミーのメールサーバとして動作し、 実際のメールサーバが何であっても利用可能なのも有用です。

参考資料・リンク

OpenBSD spamd

サーバに spamd を入れてみた

魔術師見習いのノート

The FreeBSD Diary -- Fighting spam with pf

FreeBSDサーバー構築マニュアル

pf.conf の設定順序 - sparcintosh の気まぐれ日記

FreeBSD Enable PF ALTQ Firewall Support

8.4. コンフィグレーションファイル

カーネルの再構築 - 英語とプログラミング気まぐれ日記

FreeBSDのローダブルモジュール入門 - syohex’s diary

PF(パケットフィルタ) on FreeBSD | シカでした。

FreeBSDでpfを使う(1/2) - Qiita

Spamd Greylisting Tarpit Spam Protection @ Calomel.org

更新履歴

  • 2015/10/22 作成

OpenBSD spamd でメールフィルタリング(FreeBSD9)

OpenBSD spamd でメールフィルタリングを行う設定です。

今回は FreeBSD 上で動作させます。

環境

OS: FreeBSD 9

アーキテクチャ: x86_64

FreeBSD9を使用していますが、 pkg の spamd が古いらしいため、 後ほど FreeBSD10 の手順も作成します。

準備

OSインストール後、 pf のモジュールをロードさせます。

# kldload pf

kldstat コマンドで「pf.ko」というのがあれば大丈夫です。

# kldstat 
Id Refs Address            Size     Name
 1    7 0xffffffff80200000 1611688  kernel
 2    1 0xffffffff81a12000 52f2     fdescfs.ko
 3    1 0xffffffff81a18000 2bcf     pflog.ko
 4    1 0xffffffff81a1b000 307d3    pf.ko

上記でうまくいかない場合はカーネルの再コンパイルを行います。

# cd /usr/src/sys/amd64/conf/
# cp GENERIC MYGENERIC

「 MYGENERIC 」に以下を追加します。 # Enabling Packet Filter(PF)| device pf # Packet filter device pflog # Packet filter logging device pfsync # Packet filter state table logging

# Enabling ALTQ (for Packet Filter(PF))
options                ALTQ            # Enable ALTQ.
options                ALTQ_CBQ        # Build the ``Class Based Queuing'' discipline.
options                ALTQ_RED        # Build the ``Random Early Detection'' extension.
options                ALTQ_RIO        # Build ``Random Early Drop'' for input and output.
options                ALTQ_HFSC       # Build the ``Hierarchical Packet Scheduler'' discipline.
options                ALTQ_CDNR       # Build the traffic conditioner. 
options                ALTQ_PRIQ       # Build the ``Priority Queuing'' discipline.
options                ALTQ_NOPCC      # Required if the TSC is unusable.

カーネルコンパイルします。

# config MYGENERIC
# cd /usr/src
# make buildkernel KERNCONF=MYGENERIC
# make installkernel KERNCONF=MYGENERIC

再起動

# sync
# sync
# sync
# shutdown -r now

環境設定

spamdをインストール

# pkg install spamd

「/etc/fstab」に以下を追加

fdescfs /dev/fd fdescfs rw 0 0

適用

# mount -a

「/etc/rc.conf」を編集

pf_enable="YES"
pf_flags=""
pflog_enable="YES"
pflog_logfile="/var/log/pflog"
pf_rules="/etc/pf.rules"
pflog_flags=""
gateway_enable="YES"
obspamd_enable="YES"
obspamd_flags="-h mysntp.local -G 25:4:864 -l 127.0.0.1 "
obspamd_grey="YES"
obspamlogd_enable="YES"
obspamlogd_flags="-I -i lo0"
pfspamd_enable="YES"
pfspamd_flags="-g -v"

「/etc/pf.rules」を編集します。

# インターネットと通信する側の NIC 名
em0_if = "em0"

# spamdへnatさせる
table <spamd-white> persist file "/usr/local/etc/spamd/white-db"
rdr on $em0_if inet proto tcp from any to port smtp -> 127.0.0.1 port 8025
rdr on $em0_if inet proto tcp from <spamd-white> to port smtp -> 127.0.0.1 port 25

# Allow Local Loop back
set skip on lo0

# localhostのみでListen
pass in proto tcp from any to lo0 port spamd keep state
pass in proto tcp from any to lo0 port smtp keep state

# Allow all packets to go out, and keep state of them
pass out all keep state

「rdr on $em0_if inet proto tcp from <spamd-white> to port smtp -> 127.0.0.1 port 25」 については実際に設置されている自分のメールサーバを指定してください。

例えばメールサーバが「192.168.0.10」の場合は、「127.0.0.1」の部分をそのIPにします。

ホワイトリスト用テーブルデータを作成

# vim /usr/local/etc/spamd/white-db

許可したいアドレスを「ネットワークアドレス/ネットマスク長」のように記入

192.168.152.1/32

再起動後、適用させる

# pfctl -f /etc/pf.rules

変更したテーブルのみを適用させる場合は以下のようにコマンドを利用する。

# pfctl -t spamd-white -T replace -f /usr/local/etc/spamd/white-db

persist テーブルの内容を表示する

# pfctl -t spamd-white -T show

spamdの設定

設定ファイルをコピーする。

cp /usr/local/etc/spamd/spamd.conf.sample /usr/local/etc/spamd/spamd.conf

必要であれば「/usr/local/etc/spamd/spamd.conf」ファイルを編集します。

今回はホワイトリストはpfで処理しているので、ブラックリストのみ処理させるように、 編集・追加します。

all:\
        :uatraps:nixspam:china:korea:myblack:  # myblack を追加

myblack:\
       :black:\
       :method=file:\
       :file=/usr/local/etc/spamd/block-db:

ブロックしたいIPのデータを作成

# vim /usr/local/etc/spamd/block-db

作成方法はホワイトリストと同じです。

ブラックリストの取得

「spamd-setup」を実行します。

# spamd-setup

これで公開されているブラックリストを取得してきてくれます。

定期的に実行する必要があるので、cronに登録しておきます。

いったんサーバを再起動させます。

spamdbによる手動登録

man による説明は以下となっています。

       whitelisting
       # /usr/local/sbin/spamdb -Y foo.example.org -a 1.2.3.4 2.3.4.5
       # /usr/local/sbin/spamdb -Y foo.example.org -Y bar.example.org -a 1.2.3.4

       blacklisting
       # /usr/local/sbin/spamdb -Y foo.example.org -ta 1.2.3.4 2.3.4.5

また、スパム判定用のダミーメールアドレスを登録することもできます。

# /usr/local/sbin/spamdb -T -a 'trapmeil@trapdmain.localhost'

「trapmeil@trapdmain.org」を自分のサイト等に入れて、クローニングさせます。

<a herf="trapmeil@trapdmain.localhost"></a>

これで上記のメールアドレス宛に送信してきた場合はスパマーだと分かります。

状態を確認するときは「spamdb」と入力します。

まとめ

メールフィルタリングのシステムは他にもいくつかありますが、 OpenBSD spamd の場合は既存の環境を壊さずに追加できる点が良いと思います。

また、自身がダミーのメールサーバとして動作し、 実際のメールサーバが何であっても利用可能なのも有用です。

最初に記述しましたが、後ほどFreeBSD10用のものも作成します。

参考資料・リンク

OpenBSD spamd

サーバに spamd を入れてみた

魔術師見習いのノート

The FreeBSD Diary -- Fighting spam with pf

FreeBSDサーバー構築マニュアル

pf.conf の設定順序 - sparcintosh の気まぐれ日記

FreeBSD Enable PF ALTQ Firewall Support

8.4. コンフィグレーションファイル

カーネルの再構築 - 英語とプログラミング気まぐれ日記

FreeBSDのローダブルモジュール入門 - syohex’s diary

PF(パケットフィルタ) on FreeBSD | シカでした。

FreeBSDでpfを使う(1/2) - Qiita

Spamd Greylisting Tarpit Spam Protection @ Calomel.org

更新履歴

  • 2015/10/10 作成

  • 2015/10/22 pf のルールを修正

X11転送を利用したセキュアなリモートapp環境

OpenSSH のX11転送を利用してセキュアなリモートGUI環境を作成します。

音声もSSHを通すので、セキュアです。

わかりやすくするために、サーバを「 server 」、 クライアントを「 client 」とプロンプトに表示します。

環境

OS: Ubuntu Desktop 14.10

アーキテクチャ: x86_64

今回はサーバ・クライアント両方共おなじOSを利用しますが、 UNIX系であれば、他のOSでもあまり問題ないと思います。

準備

Ubuntuのデスクトップ版はSSHサーバがインストールされていないので、 インストールします。

[server]$ sudo apt install openssh-server

また、軽量化のために Lubuntu にします。 (最初からLubuntuをインストールしてもいいと思います。)

[server]$ sudo apt install lubuntu-desktop

ufw を起動し、SSHのみ許可させます。

[server]$ sudo ufw enable

[server]$ sudo ufw allow proto tcp from 192.168.146.0/24 to any port 22

クライアントは、ufwを起動するだけです。

[client]$ sudo ufw enable

X11転送を許可させる

X11転送を許可させます。

ただ、Ubuntuの場合はデフォルトで許可する設定になっていたので、 確認するだけでいいです。

「/etc/ssh/sshd_config」の設定が、 下記になっているのを確認してください。

X11Forwarding yes

X11DisplayOffset 10

なっていない場合は設定を行ってください。

接続

クライアントからSSHで接続してください。 この時、「-X」オプションをつけてください。

[client]$ ssh -X server

接続できたら、ためしにアプリケーションを起動させてみてください。 問題なく起動するはずです。

[server]$ gedit

音声を送受信する

これで、遠隔のアプリケーションを操作できるようになりましたが、 音声は出ません。 そこで、 PulseAudio を利用して音声を送信します。

経路にはSSHのポート転送を使用します。

これによって、セキュアになるのと同時に、 ufwSSHだけ開けておけばよくなります。

まず、サーバ側の音声を送信する設定を行います。

設定ファイルをコピーします。 (ディレクトリがない場合はあらかじめ作成します。)

[server]$ cp /etc/pulse/client.conf .config/pulse/

「 .config/pulse/client.conf 」の「default-server」を編集します。

default-server = 127.0.0.1

次にクライアント側の音声を受信する設定を行います。 設定ファイルをコピーします。

[client]$ cp /etc/pulse/default.pa .config/pulse/

「 .config/pulse/default.pa 」の「load-module module-native-protocol-tcp」を編集します。

load-module module-native-protocol-tcp auth-ip-acl=127.0.0.1

これで設定ができたので、 PulseAudio を使用する準備が整いました。

通信経路を確保するために、SSH port forwarding を使用します。

[client]$ ssh -f -N -R 4713:localhost:4713 server

最後に PulseAudio を再起動して設定を反映させます。

[client]$ pulseaudio -k [client]$ pulseaudio --start

[server]$ pulseaudio -k [server]$ pulseaudio --start

これで、音声も利用できるようになります。

既知の問題

[client]の PulseAudio 設定をちゃんと読み込んでくれない

なぜが、「default.pa」の設定を起動後に読んでくれないため、 面倒ですが、現在はまた PulseAudio の再起動を行うことで対応しています。

[server]$ pulseaudio -k [server]$ pulseaudio --start

重い

これはしょうがないです。

ブラウザ等で動画を見ることも可能で、 艦これも問題なく動きますが、 たまに重い時があります。

通信はローカル内ですが。グローバル環境を通した場合は、 遅延が問題になる可能性があります。

「$ ssh -X server」とするときに、「-XC」として、 パケットを圧縮する方法もありますが、 余計に、CPUリソースを食うため、 システムリソースに余裕のあるPCが必要になります。

まとめ

それなりに使えるリモートapp環境を構築することができました。

まだ問題はありますが、解決したら追記したいと思います。

参考資料・リンク

Ubuntu

Ubuntu Japanese Team

リモートサーバのサウンド出力を手元のPCで再生する

更新履歴

  • 2015/04/20 作成

OpenBSD で 2TB 以上の HDD を認識させる

修正版を作成しました。

OpenBSD で 2TB 以上の HDD を認識させる(4TB,OpenBSD5.8)

OpenBSD で 2TB 以上のHDDを増設します。

OSは2TB以下のディスクにインストール済みの環境で行います。 インストールディスクを 2TB 以上にするのはまた面倒だと思います。

かなりいろいろといじってできたため、 不完全な面があるかもしれません。

ディスクはもう一つあるため、 後ほどそれでやってみて手順を確認したいと思います。

環境

OS: OpenBSD 5.5 relece

アーキテクチャ: x86_64

マザーボード: ASRock C70M1

使用した増設 HDD : TOSHIBA HD01ACA300 3TB

i386 版だとうまくいかないと思います。

また、 OS はそのうち5.7にする予定です。

準備

OS をあらかじめインストールしておき、 増設 HDD を設置します。

3TB のディスクのパーティションを初期化

# fdisk -e sd1
> e 0
> EE           # GPTにする
> [enter]
> 64
> [enter]
> q

ディスク上にパーティションを作成

# disklabel -E sd1 
Label editor (enter '?' for help at any prompt)
> p m
OpenBSD area: 64-5860533168; size: 2861588.4M; free: 2861588.4M
#                size           offset  fstype [fsize bsize  cpg]
  c:       2861588.5M                0  unused                   
> b
Starting sector: [64] 
Size ('*' for entire disk): [5860533104] *
> q

# disklabel -E sd1 
Label editor (enter '?' for help at any prompt)
> a e
offset: [64] 
size: [5860533104] 
FS type: [4.2BSD] 
Rounding size to bsize (128 sectors): 5860533056
> p m
OpenBSD area: 64-5860533168; size: 2861588.4M; free: 0.0M
#                size           offset  fstype [fsize bsize  cpg]
  c:       2861588.5M                0  unused                   
  e:       2861588.4M               64  4.2BSD   8192 65536    1 
> q
Write new label?: [y] y

ディスク上にファイルシステムを作成

# newfs sd1e

好きなところにマウントして確認

# df -h

Filesystem     Size    Used   Avail Capacity  Mounted on
・
・
・
/dev/sd1e      2.7T    8.0K    2.6T     0%    /home/test

まとめ

とりえずまとめましたが、冒頭にも書いた通り不完全のため、 後ほど書き直します。

参考資料・リンク

14 - Disk Setup

更新履歴

  • 2015/04/02 作成

  • 2015/11/14 修正版のリンクを追加

Ubuntu でニコニコ動画が見れない時の対処法(暫定)

Ubuntuニコニコ動画を見ていると、 「ローカル記憶領域」へのデータ記録許可を要求する画面が出て、 何も操作ができなくなる場合があります。

キャッシュをクリアすればいいのですが、 それだと再ログインの必要があるため、面倒です。

SOLファイルを直接編集する方法もあるようですが、 よくわからないスクリプトを自分の領域で動かすのもあまり気が進まないので、 今のところ、特定のディレクトリを削除することで対応しています。

環境

OS: Ubuntu 14.04

アーキテクチャ: x86_64

手法

ターミナルでまず、該当ディレクトリのあるところに移動します。

% cd ~/.macromedia/Flash_Player/\#SharedObjects/<おそらく環境固有のディレクトリ>/

この中に、「res.nimg.jp」というディレクトリが存在するので、それを削除します。

% rm -rf res.nimg.jp

これで「ローカル記憶領域」の画面は表示されなくなるはずです。

ただ、動画の自動再生の設定など、 いくつかのニコニコ動画の動画プレイヤーの設定が消えてしまうため、 再度設定する必要があります。

今のところ、これで対応しています。

以上です。

更新履歴

  • 2014/07/18 初版

  • 2014/08/26 今月に入ってぐらいから、この現象が発生しなくなりました。おそらくドワンゴ側が何らかの対応を行ったものと思われます。

QEMU-KVM を使用しての隔離されたデスクトップ環境

QEMU-KVM を使用して隔離された仮想デスクトップ環境を作成します。

今回はUbuntuを使用します。

クライアントも Ubuntu ですが、 Windwos を使用することもできるはずです。 (多少面倒だと思いますが)

また、これを行うにはそれなりの性能のあるPCが必要です。
私の環境は下にもあるとおり、第一世代のAMD A8 APU になります。 最低でも使用に耐える能力を持たせるためには、これぐらいは必要だと思います。

CPU だけでなくグラフィック性能もそれなりにあったほうがいいです。
また、メモリは積めるだけ積みましょう。 (16GBなのはマザーボードの限界がそれのためで、32GB積めるなら入れていました)

構築時に、きちんとメモをきちんと取っていなかったため、抜けがあるかもしれません。 その時はコメント等で指摘していただければと思います。

環境

OS: Ubuntu 14.04

アーキテクチャ: x86_64

CPU:AMD A8 APU

メモリ: 16GB

HDD: 2TB

準備

必要なソフトをインストールします。親機の構築は完了しているのが前提です。

% sudo apt install qemu-kvm virt-manager libvirt qemu-kvm-spice spice-client spice-client-gtk python-spice-client-gtk

インストール後は一旦再起動します。

クライアントのインストール

仮想マシンマネージャーを起動し、Ubuntuをインストールします。
この時、ディスクについてはちゃんと VirtoIO を使用していることを確認します。

CPUコアは2つ、メモリは 2GB ほど割り当てました。

高速化のために設定を修正する

単純にインストールするだけでも使えるのですが、画面動作が重いため、 設定を修正します。

仮想マシンマネージャーのディスプレイの設定を「 VNC 」から「 Spice 」に変更します。
設定を適応後に、 Video の設定を「 QXL 」に Sound の設定を「 ac97 」に設定します。

これで動作は良くなるはずです。 また、音声もちゃんと出力できるようになります。

クライアントの設定

私の環境では、クライアントで Unity を動かすには重すぎるので、 Lubuntu に変更します。 最初から Lubuntu をインストールしてもいいです。 また、 Xubuntu でもいいと思います。

$ sudo apt install lubuntu-desktop

再起動後、右上の選択項目から「 Lubuntu 」を選択します。

起動後、モニタの設定を変更し、自分のディスプレイ環境に合わせた大きさにします。

現状の不具合

  • 画面がフリーズする

まれにコンソール画面がフリーズし、 クライアントの操作ができなくなることがあります。 (この時CPU使用率が異常に高くなります)

いまのところ改善方法が見つかっていないのですが、 コンソール画面を一旦閉じて(要するに☓ボタンで閉じる)、 再度開くことにより復旧させることができます。 (クライアントの再起動は必要ありません)

まとめ

これで隔離されたデスクトップ環境を構築できたはずです。

私の環境では、少なくとも Web ブラウザや Flash での動画はそれなりに使えるレベルで動いています。

信頼性の低いソフトの動作やテスト環境には使えると思います。

参考資料・リンク

Ubuntu

Ubuntu Japanese Team

更新履歴

  • 2014/07/09 作成

  • 2014/08/01 現状の不具合について追加