Minecraft用Ubuntuサーバーの作成(5)

一応、動く状態に持っていったのですが、ここから快適に動くようにポート解放とRAMDiskの設定を行います。
ユーザーはSudoの使えるユーザーに戻します。

minecraft@MineCraft:~$ exit
ログアウト
master@MineCraft:~$

ポート解放

master@MineCraft:~$ sudo ufw allow 25565/tcp
master@MineCraft:~$ sudo ufw reload
master@MineCraft:~$ sudo ufw enable

(Minecraftのポートを変更している場合は 25565/tcp を変更してください)

RAMDiskの作成

マウント先の作成

master@MineCraft:~$ sudo mkdir /ramdisk
master@MineCraft:~$ sudo chmod 777 /ramdisk

メモリの使用状況を確認

master@MineCraft:~$ df -Th
Filesystem                      Type      Size  Used Avail Use% Mounted on
/dev/mapper/GameServer--vg-root ext4      134G  2.0G  125G   2% /
none                            tmpfs     4.0K     0  4.0K   0% /sys/fs/cgroup
udev                            devtmpfs  2.0G  4.0K  2.0G   1% /dev
tmpfs                           tmpfs     396M  668K  395M   1% /run
none                            tmpfs     5.0M     0  5.0M   0% /run/lock
none                            tmpfs     2.0G     0  2.0G   0% /run/shm
none                            tmpfs     100M     0  100M   0% /run/user
/dev/sda1                       ext2      236M   55M  169M  25% /boot

/dev/shmではなく/run/shmになっている上、2.0GBだったので2.5GBに拡張した上で/ramdiskにマウントします。

master@MineCraft:~$ sudo nano /etc/fstab

以下を最終行に追記

none /run/shm tmpfs nosuid,nodev,size=2560M 0 0
/run/shm /ramdisk tmpfs defaults,size=2560M 0 0

(ちなみに、/run/shmは/lib/init/fstabに書かれていますが、/etc/fstabで設定を上書きしています)

反映させるために再起動

master@MineCraft:~$ sudo reboot

RAMDiskができていることを確認

master@MineCraft:~$ df -h | grep ramdisk
/run/shm                         2.5G     0  2.5G   0% /ramdisk

WorldデータをRAMDiskに移動

Minecraftのデータの読み書きは基本的にWorldデータなのでこれをRAMDiskに移動させ、高速化します。
まずは、ユーザーを切り替えし、作業フォルダに移動します。

master@MineCraft:~$ su - minecraft
minecraft@MineCraft:~$ cd 1.7.10/

world フォルダの中身を world_storage(保存用フォルダ) へコピー

minecraft@MineCraft:~/1.7.10$ mkdir world_storage
minecraft@MineCraft:~/1.7.10$ cp -rp world/ world_storage/

RAMDiskにminecraftフォルダを作成してWorldフォルダを持ってくる

minecraft@MineCraft:~/1.7.10$ mkdir /ramdisk/minecraft
minecraft@MineCraft:~/1.7.10$ mkdir /ramdisk/minecraft/1.7.10
minecraft@MineCraft:~/1.7.10$ mv world/ /ramdisk/minecraft/1.7.10/

world へ設定ファイルのリンクを作成する。(実際はRAM上で動くようになる)

minecraft@MineCraft:~/1.7.10$ ln -s /ramdisk/minecraft/1.7.10/world/ .

起動用スクリプトの作成

RAMDiskは電源が切れると消去されるので、起動時にRAMDiskにコピーし、終了時にRAMDiskから保存フォルダにコピーするように起動用スクリプトを書きます。

minecraft@MineCraft:~/1.7.10$ nano  00_StartServer.sh
#!/bin/bash
mkdir /ramdisk/minecraft
mkdir /ramdisk/minecraft/1.7.10
mkdir /ramdisk/minecraft/1.7.10/world
cp -rp /home/minecraft/1.7.10/world_storage/* /ramdisk/minecraft/1.7.10/world/

#起動
java -Xmx1024M -Xms1024M -jar forge-1.7.10-10.13.2.1232-universal.jar nogui

#終了時に保存用フォルダにコピー
rsync -av --delete /ramdisk/minecraft/1.7.10/world/ /home/minecraft/1.7.10/world_storage/

次に、実行権限を付与します

minecraft@MineCraft:~/1.7.10$ chmod +x 00_StartServer.sh

そして、実行

minecraft@MineCraft:~/1.7.10$ ./00_StartServer.sh

次回は、停電に対応するため定期的にバックアップを取るようにしていきます。

Minecraft用Ubuntuサーバーの作成(4)

Minecraft Serverの設置

サーバー用ディレクトリを作成します。
今回はバージョン1.7.10なので下記のコマンドを入力しました。

minecraft@MineCraft:~$ mkdir 1.7.10

下記のコマンドで先ほど作ったディレクトリに移動します。

minecraft@MineCraft:~$ cd 1.7.10

次にMinecraftのサーバーファイルをダウンロードします。

minecraft@MineCraft:~/1.7.10$ wget https://s3.amazonaws.com/Minecraft.Download/versions/1.7.10/minecraft_server.1.7.10.jar

サーバーを起動してみます。

minecraft@MineCraft:~/1.7.10$ java -Xmx1024M -Xms1024M -jar minecraft_server.1.7.10.jar nogui

実行するといろいろ表示されますが下記の内容で起動しないはずです。

[10:56:50] [Server thread/INFO]: Starting minecraft server version 1.7.10
[10:56:50] [Server thread/INFO]: Loading properties
[10:56:50] [Server thread/WARN]: server.properties does not exist
[10:56:50] [Server thread/INFO]: Generating new properties file
[10:56:50] [Server thread/WARN]: Failed to load eula.txt
[10:56:50] [Server thread/INFO]: You need to agree to the EULA in order to run the server. Go to eula.txt for more info.
[10:56:50] [Server thread/INFO]: Stopping server
[10:56:50] [Server Shutdown Thread/INFO]: Stopping server

これは、エンドユーザーライセンス利用規約に同意してないから起動できませんとのことなので、
同意します。(eula.txtは翻訳等を探すなりして把握してから同意してください)

minecraft@MineCraft:~/1.7.10$ nano eula.txt
eula = true

(eula = falseをtrueに変えると同意したことになる)

再度起動してみます。

minecraft@MineCraft:~/1.7.10$ java -Xmx1024M -Xms1024M -jar minecraft_server.1.7.10.jar nogui

以下のような感じで入力可能になれば無事起動に成功しています。

[11:12:57] [Server thread/INFO]: Preparing spawn area: 84%
[11:12:58] [Server thread/INFO]: Done (4.997s)! For help, type "help" or "?"

終了させるときは stop と入力してください。

Minecraft用Ubuntuサーバーの作成(3)

前回SSHを導入したので、リモートで接続し、作業していきます。
(使用しているソフトはRLoginです。)

OracleJDKのインストール

Linux では基本的にOpenJDKをいれるけど今回はWindowsでも使っているOracleのJDKを入れてみます。
バージョンはMinecraft1.7.10を動かすのでJava7にします。本体はJava8でも動くけれどForgeがJava8だとエラーになるので。

$ sudo add-apt-repository ppa:webupd8team/java
$ sudo apt-get update
$ sudo apt-get install oracle-java7-installer

(切り替えの必要がある場合は、update-alternatives –config java を実行する)

ユーザーの作成

Minecraft用のユーザーを作成します。

$ sudo adduser minecraft

パスワードの入力やユーザープロフィール入力が求められますので、適宜入力してください。

ユーザーの切り替え

ここからは、Minecraft専用の設定になりますので先ほど作ったユーザーに切り替えます。

master@MineCraft:~$su – minecraft

を実行すると下記のように表示が変わります。

minecraft@MineCraft:~$

次回からサーバーを設置していきます。

Minecraft用Ubuntuサーバーの作成(2)

ファイル転送も使いたいので操作は基本的にSSHを利用したリモート端末から行います。
そのためにOpenssh Serverをインストールしたいのでまず、最新のソフトウェアリストを取得します。

$ sudo apt-get update

Test-2014-12-08-16-27-50

すると、なにやら文字化けしています。
これはインストーラで日本語を選択した場合、コンソールでも各プログラムが日本語を出力しようとしますが、標準のコンソールでは日本語表示に対応していないためなのでまずはこれを直します。

コンソール画面の文字化け対応

コンソールで英語のメッセージを表示させるための設定を行います。

$ nano ~/.bashrc

nanoエディタで.bashrc開いたらファイルの末尾に下記を追記

case $TERM in
linux) LANG=C ;;
*) LANG=ja_JP.UTF-8 ;;
esac

Ctrl+Xキーを押し、画面の指示に従えば保存し終了

$ source ~/.bashrc

以上で英語のメッセージが表示されるようになったかと。

UbuntuServerを最新の状態に更新

コンソールの文字化けを英語出力に戻すことで回避したのでまず、Ubuntuを最新の状態に更新します。
必要ないですが、文字化けの対処できてることを確認するためもう一度下記のコマンドを実行します。

$ sudo apt-get update

Test-2014-12-08-16-09-06

英語表記になっていますね。
次に先ほど更新したリストに従い、更新のあったソフトウェアを下記のコマンドで最新の状態にします。

$ sudo apt-get upgrade

OpenSSH Serverのインストール

今回はLAN内で利用するサーバーなのでパスワード方式でログインできるように設定します。

まずは下記のコマンドでインストール

$ sudo apt-get install openssh-server

そして、念のためサーバーを再起動

$ sudo /etc/init.d/ssh restart

以上で、サーバーへSSHリモートログイン可能。
(設定ファイルがデフォルトのままなのでサーバーのログインパスワードでリモートログイン可能)

Minecraft用Ubuntuサーバーの作成(1)

PCが1台開いたのでMinecraftのLocalサーバーにしようと思う。

サーバーにするPCの構成は下記の通り

OS Ubuntu Server 14.04
CPU Intel Core 2 Duo E4500 @2.20GHz
Memory 4GB
HDD 1TB

ということで早速OSのインストール。
今回はUbuntuServer14.04を使います。

ISOをダウンロードしDVD-Rに焼いてサーバーでBootさせます。

Test-2014-12-08-09-40-04
上記の画面になりますので日本語を選択して[Enter]

Test-2014-12-08-09-42-20
Ubuntu Serverをインストールを選択して[Enter]

Test-2014-12-08-09-42-36
確認画面が表示されるが、今回は続行するので[はい]

Test-2014-12-08-09-42-48
日本を選択して[Enter]

Test-2014-12-08-09-42-55
日本語を選択して[Enter]

Test-2014-12-08-09-43-02
お使いのキーボードを選択して[Enter]
(通常は日本語)

Test-2014-12-08-09-44-45
ホスト名を入力し[続ける]
(これはWindowsでいうコンピュータ名です。今回はMineCraft)

Test-2014-12-08-09-45-22
ユーザー名の入力し[続ける]
(今回はmaster)

Test-2014-12-08-09-46-00
アカウント名の入力し[続ける]
(今回はmaster)

Test-2014-12-08-09-46-08
パスワードを入力し[続ける]

Test-2014-12-08-09-46-25
パスワードを再入力し[続ける]

Test-2014-12-08-09-46-36
簡単なパスワードを入力した場合、確認画面が表示されます

Test-2014-12-08-09-46-49
ゲームデータしか入れないので今回は暗号化しないので[いいえ]

Test-2014-12-08-09-48-24
今回は、自動検出のタイムゾーンで正しいので[はい]

Test-2014-12-08-09-48-49
ガイド – ディスク全体を使いLVMをセットアップするを選択して[Enter]
(HDDはUbuntu専用かつ増設の可能性も考えてLVMを使ってインストール)

Test-2014-12-08-09-52-20
ディスクを選択し[Enter]

Test-2014-12-08-09-52-28
問題なければ[はい]

Test-2014-12-08-09-52-56
容量設定画面。適切な値を入力し[続ける]
(スクリーンショットは解説用VM環境のためHDDが20GBの設定のため21.2GBという少なさです)

Test-2014-12-08-09-53-09
問題なければ[はい]

Test-2014-12-08-09-55-50
Proxyの設定を入力し[続ける]

Test-2014-12-08-09-57-47
自動的にアップデートしないを選択し[Enter]
システムのアップデートは基本手動で行います。

Test-2014-12-08-09-58-09
すべて未選択で[続ける]
(1つ1つ確認しながら入れるためすべて未選択)

Test-2014-12-08-10-02-08
[はい]

Test-2014-12-08-10-02-23
[続ける]

以上で、UbuntuServerをインストール完了です。次から環境構築していきます。

x264でエンコード中にFPSが低下する

動画をx264で変換中、後半になるとFPSが急激に下がる現象が発生したので原因を探りました。
結論から書くとCPUの温度が高温になったためでした。

以下、調べた内容をまとめて記録

タスクマネージャーの「パフォーマンス」タブのリソースモニターにて

  • CPU使用率は高い
  • メモリはまだ空きがある
  • ディスクI/Oは余裕がある

この段階で、ボトルネックになっているのがCPUだと推測

改めてリソースモニターのCPUの欄を見ると「最大周波数」の欄が「33%」になっている。
つまり、そもそもCPUの動作速度が引き下げられいる。
「じゃ、理由は?」ってことで以下の2つ考えた

  • 省エネモードが作動してCPUの動作速度を落としている
  • 熱によりCPUが破損するのを防ぐためCPUの動作速度を落としている

2つとも、存在する機能らしいってぐらいは知識としあるけれど実際しらないのと等しいので調べてみた。
(使用していたCPUはintel Core 2 Quad Q6600なのでintel CPUの内容となります。)

CPUの省エネ機能

  • C1Eステート
    CPUを休止状態にする機能。
    CPUは何もタスクを実行していない場合、消費電力を抑えた状態に移行し、CPUの動作クロックも一定の値まで下げられる
  • EIST(Enhanced Intel SpeedStep Technology)
    CPUの消費電力を抑える技術。
    CPUの使用状況にあわせて動作周波数と駆動電圧を落として消費電力を低減する。

CPUの熱からの保護機能

  • Thermal Monitor
    CPUを熱による破損から守る保護機能。
    TM1では異常時に周波数のみ、TM2では周波数と電圧を下げ、CPUの処理量を減らすことでCPUの発熱量を減らす。
    (サーマル・スロットリングと呼ばれることもあるようだが資料が見つからない・・・)

上記の事から今回の挙動がTM2の発動によると考え、CPU温度を見てみることに。
使用するソフトは「Core Temp」が無料で使用できる。
(standaloneとLanguage packをダウンロードした場合はCore Tempフォルダ内にLanguagesフォルダを作成し、言語ファイルを格納する)

見てみると95℃を超えておりたまに100℃に達している状况だった早急にPCケースのサイドパネルを外し、扇風機の風をCPUに対して、45°の角度で風を当てた。(垂直に当てるとCPUクーラーに負荷がかかると考えてこうしたけど、どうすれば一番いいのか知らないです。)
すると、温度が75℃付近になるとFPSも回復が見られたので、今回のFPSの原因はCPU温度で有ることが確認できた。

そもそも、CPUの適正温度ってどれくらいなのだろう
複数のサイトを見た感じ以下の温度が目安のようだ。

  • 40〜60℃:通常時
  • 60〜75℃:高負荷時

今回この現象が発生したPCのCPU Core 2 Quad Q6600はTM2は大体95℃ぐらいで働いた。
このあたりはもしかするとBIOSで設定できるのかも知れないが確認していない。

Plugin_DeepMilkPlayer2の作成(1)

前回のアイデアを形にしていきます。

まず、UIAutomationで、DeepMilkPlayer2のメインウィンドウ内にコメントリストを表示させて、そこからコメントを取得し、
Plugin内でコメントリストを再生生成する。

次に、またまたUIAutomationで今どのコメントが表示されているのか推測するためにDeepMilkPlayer2のメインウィンドウの下部にある再生時間を取得する。

棒読みちゃんで必要な情報はこれぐらいのはず・・・。
と言うことで、エラー処理とかデータ構造とか一切考えず、まず音声再生まで作ってみました。

Plugin_DeepMilkPlayer2_02

いくつか見えた課題が・・・また次回

DeepMilkPlayer2+棒読みちゃん

ニコニコ動画のシリーズものとかを一気に見たいときに、Webで再生するとたまに読み込みがとまったりするのが
地味にいらいらするので気に入っているものはローカルに保存しています。

そして先日、「棒読みちゃん」と言うソフトを見つけました。

DeelMilkPlayer2と連携して、コメントを読み上げてくれる用になったら「にぎやかになるかな?」という軽い気持ちから開発を開始してみたいと思います。

とりあえず、思考を整理するために図を用意しました。
概要図
この図を眺めながら処理部分を考えていきます。

こういった方法は、個人によってやり方が違うので効率的か非効率的かは一概に言えません。
たぶん、図を描いている時間が大事で出来上がるころには処理のアイデアとか浮かんでいるのではないでしょうか?
少なくとも私は図を書くことで思考を整理することが多いです。

で、いろいろ考えた結果、今回は「棒読みちゃん」のPluginとして作成を予定しています。
そして、DeepMilkPlayer2からコメントを取得するのにUIAutoMationという技術で実現予定です。

[Tool]PC-98エミュレータ用HDDイメージ(修正版)

PC-98-Emu-HDD-Image

T98-NextおよびNeko Project IIに利用できるHDDイメージを公開します。

これはPC98用のMS-DOSを持っていない方のためにFreeDOS(98)と言うフリーのOSが動く状態のHDDイメージです。
このイメージを利用することで「アリスソフト アーカイブズ」のソフトを動かすことができるかもしれません。

前回公開していたものの中には「固定ディスク起動メニュープログラム」が含まれていましたので、
含まない形で再作成しました。あわせて、FreeCOMに不具合があったのでそちらも別のもを導入しています。

導入物

前回配布時同様、このHDDイメージを利用し発生したいかなる事象も関知いたしません。
すべて自身の責任においてご利用ください。問い合わせも不可とさせていただきます。

参考
エミュで闘神都市2をプレイしてみよう(特別編・freeDOS(98)ってどうよ)

[Tool]Windows入り仮想ストレージファイルを圧縮する(VirtualBox)

前回の記事を実行した後に行うと場合によっては数GBほど小さくなります。

対象となる仮想ストレージは.vdiファイルのみです。コマンドプロンプトからの操作になりますが難しくはないかと。

手順

  1. コマンドプロンプトを開き、VirtualBoxインストールフォルダに移動する
  2. VBoxManage modifyhd 縮小したい仮想HDD.vdi –compact を実行
  3. (ホスト側でディスクの最適化を実行)

注意

  • 手順3は最高のディスクパフォーマンスを得たい場合に実行してください。
  • 以下の場合は実行できません。
    • 対象仮想マシンが実行中の場合