この1ヶ月で何個OSを入れたことやら…

ということで愚痴ではないですがメインマシンやらサーバ環境が変わったためにいろんな部分にOSを入れ直していたら…という現象です。特にWindowsでゲームを作っている場合だと引っかかってしまう場合もあるようで、気をつけましょう、というお話。

 

Win10×2、Win8.1×1、Linux(Fedora)×1、…

いろいろなマシンの入れ替えをした結果がこれです。ちなみに今書いているのは私が個人的にインストールを行ったもので、この期間中に別の場所でもOSが動かないやらでヘルプをやっていた関係もあってこれ以上にOSの入れ直しに近いことをやっています。必要な部分では仕方がないのかもしれませんがそれ以外の部分で考えるとなんとも運が悪い状態というべきなのでは…

 

結局この1ヶ月でHDDが(最低でも)2台壊れたことに

1台は前の記事にも書いたとおりサーバ機のHDDで、一応0埋めはできましたし、非常時に一時的な記憶装置として使えそうなので保存しておくとして。問題はなんともう1台壊れた、ということです。2つ目のところは不幸中の幸いにもRAIDで保護をかけている領域だったので一時的に縮退運転に切り替えてまあなんとかしました。なんか転送速度がおかしいなあ~と思ってSMARTを見てみると怪しげなREAD ERRORとWRITE ERRORが記録されていて…。びっくりもいいところ。早めに気がついてよかったです。なんか以前の記事でも書いたような気はしますが、RAID領域でエラーが起こった場合はちゃんとメールを飛ばすようにしておいた方がいいですね。特に今回の問題発覚は定期的に行っているRAIDのチェック作業で引っかかったものですし、メールを飛ばす仕掛け(+受け取る仕掛け)があればチェック後すぐにわかったはずですからね。

 

Win8.1+VisualStudio2015(以降)のランタイムインストールは要注意

というのがこの記事の本題。VisualStudio2015以降のランタイムではUCRT(ユニバーサルCRT)というものができたらしく、それが使われるようになったと。このあたりはこの頃プログラムをいじっていないのと開発環境を更新していないために知らなかったことなのですが、問題はこのUCRTのランタイムを入れるためにはWin10では何も問題はないのですが、Win8.1ではとあるWindowsUpdateを適用しなけれならないという制約があるということです。今回、マシンを入れ替えた関係でWin81も新しくインストールしてアプリテスト用の領域に入れ直そうとしたのですが、これを知らなかったのでUCRTが入らず、プログラムの動作テストをしてみたところ一部の最新のプログラムが動かせない、という状態に陥ってしまいました。

自分の感覚ではOSを入れ終わるとドライバやら必要なランタイムを入れてからWindowsUpdateで最新の状態に持って行くのが正しいと思っていたのですが、今回はそうではなくOSのインストールが終わり、初期ドライバが設定できればWindowsUpdateを強制で何回か行い、WindowsUpdateが何も出ない状態にしてからインストールしたほうがよういのではないか?ということにいつの間にかなってしまったようです。VisualStudio2015のランタイムを入れさせるようなプログラムを作っているそこのあなた。まだすべてのユーザがWin10になったわけではないのでこういう点で動かない、といってくるユーザもいるかもしれませんので気をつけましょう。

 

やっと悪運が切り離せたかな

HDDの故障やらなんやらによる問題もなんとかなった、というところで悪運はすべて切り離せたかな、というところです。あとは自分にくるはずの金運やら仕事運やらを一気につかんでいきたいところだな、というところです。…ですよね?

Fedora28をインストールしてみた

ちょっとサーバのHDDになにやら怪しい気配が見えたことと、サーバのハードウェアを交換するタイミングになったのでこの記事を書いた時点での最新のFedoraであるFedora28をインストールしてみたわけですが…。これが違った意味で難産となってしまいました。

 

さすがゲーム用のマザーボード、WOLがないとは…

インストールする前にいくつか条件を調べているときにわかったこと。今回、サーバ機となるマザーボードは一応「ゲーム用」をうたっているものなので、確かにゲーム、特にネットワークゲームにおいては各種ユーティリティもありよかったのですが、その機能はほとんど生かされることなくサーバ機になってしまうとこんな問題が出てきてしまいました。一応内部サーバなので電源を入れたり切ったりを遠隔でやりたいのですが、なんとマザーボードの設定にもLinuxのEthToolsでもWakeOnLANの設定がでてこない、というなかなかな状態であることが発覚。皆さんもサーバをPCパーツから組み立てる場合は気にかけておいた方がよいかもしれない、という忠告でした。

 

どうもハードウェアとLinuxの相性が非常に悪いらしく…

今回引っかかったのはこの点。Fedora28のインストール自体は何事もなくできたのですが、その後起動したときに起こったのがこのメッセージ。例でいうなら

watchdog: BUG: soft lockup – CPU#0 stuck for 22s! [swapper/3:0]

というもの。一応いろいろと調べてみると、特にハードウェアとKernelの相性が悪いときに起こるらしく、これが起こるとCPUの処理速度が激減してしまい、まともな処理ができなくなる、という困りもの。一部のページにはKernelPanicではないから大丈夫、と書いてありましたが、しばらくするとKernelPanicになることもあるのでなんとかしないと大変な現象です。ちなみにFedora28だけで起こるものではないらしく、Fedora27でも起こっていましたし、試しにCentOS7をインストールしてみてもやっぱり起こったのでKernelのバージョンだけに依存するものではないらしいです。一応Debianでも試してみようかと思ったのですが、こちらはインストーラがうまく動作しないため諦めました。1CDLinux系ではなっていないように見えるのですが。

 

なお、今のところは

  • とりあえずプライベートなものなのですぐにダウンしなければまあどうにかなる
  • 起動した直後に負荷をかけた場合になりやすいので起動直後は安定するまで放置する方針で
  • この現象で問題となるプロセスが私の場合はswapperだけなので、swapperに関連する一部設定を書き換えることでどうにかなるのでは?(IO系の待機で出てくるらしいのでそのあたりの時間設定やメモリスワップに関する設定を変更すればなんとかなる?)

というところで一部の設定を書き換えてみてちょっと様子見したいと考えています。

 

SELinuxが相も変わらず大変

自分の記事にヒントが書いてあるのでSambaに関してはまあなんとかなるのですが、ほかのサービスになってくるとまた面倒な設定が必要ということで悪戦苦闘をしていました。例えばApacheでは、SSLの証明書を置いておく場所が/etc/httpd以下でないとき証明書を読み込めない(ファイルが存在しない、もしくは空と言われる)状態だったり、ファイルのアクセス権がおかしくなってhtmlファイルを読み込めなかったり、CGIが実行できなかったりと。こちらも必要になったときに再度実験をしてどうなるか確認してみる必要はありそうですね。

 

さて、無事に安定稼働までこぎ着けられるのか?

前のサーバ機のHDDが壊れかけの~だったのでデータ救出にえらい難儀しましたが、そこは根性でなんとかなったのでましでした。あとはこちらのマシンの安定稼働だけです。リモートから電源を入れるのは諦めるとしてもせめて数日くらいは普通に動いてほしいものですが…。

4Kモニタだと解像度がいろいろと大変なことに

C94の感想をとりあえず置いておいて、こっちの話題を書いてみたいと思います。今回、4Kモニタが大分安くなってきたのでメインPCのメインモニタを4Kのものに交換してみたわけです。今まで使っていたモニタはサブモニタとなり、なかなか豪華な構成になったのですが、モニタの物理的なサイズが大分小さいために・・・

 

4Kの素の状態だと文字が細かすぎてやばい

ブラウザとかに書いてある文字がほとんど読めない…という現象に。モニタ本体もそこまで大きいものではないので細かさが半端ないです。この状態で常用するのにはかなりの視力が必要となることは先に書いておきます。で、ここからがWindowModePatchも関わる問題なわけで…

 

ゲーム画面が小さすぎて見えない。しかも表示スケール処理で解像度設定が間違える

という問題が起こるようです。前者は簡単でモニタの物理的なサイズが2倍になったわけでもないに画面の解像度だけが長さ比で2倍以上になり、ゲーム画面がかなり小さくなってしまった訳です。もちろん、ここで出てくるのが拙作のWindowModePatch。こいつでゲーム画面のサイズを4K用に変更してやればうまく使えるゲームであれば解像度変換ができるので困ることではなかったのが幸い。

で、もう一つの問題が、「文字が細かすぎてやばい」にからんでいて、さすがに素の4Kでは文字が読めないのでWindows側の設定でスケーリング処理を行うわけですが、それをするとどうもプログラム本体に伝わる画面の「本来の」サイズがWindowModePatchの処理の時のように変換されて伝わる、という現象があるようです。これ自身は何も間違いはないのですが、この設定は

  • すべてのプログラムに対して同一の設定がかかってしまう
  • スケーリングに内部的に対応しているプログラムであればその制約を受けないようにできる(様子)
  • WindowModePatch側は現段階のプログラム(Ver0.70Alpha)ではこれを知らないのでスケーリング処理を受けた状態の解像度を指定しないとサイズが間違える(4Kの状態ではなくで4K÷スケーリング倍率の状態での解像度を指定する必要がある)

ということで、影響をもろに受けることが発覚してちょっと大変に。この処理については内部的にごまかさないとだめですね…。

 

スケーリング倍率が大きくなるとマウスの移動が大変に

これもどうにかする必要があるかな~と思い始めた課題。マウスカーソルの移動量はどのWindowsだろうと変わらないのでスケーリングにより移動量が減ってしまったように見える、という現象です。FullHDのモニタだったらトラックボールマウスということでボール半回転をさせると画面の端から端まで移動できた(つまり、約1800pxの移動)ですが、4Kモニタになると端から画面中央までしか来ないわけです。するとスケーリングにより2倍表示された状態を考えると移動量が半減したように感じる、というわけです。マウスの移動量を上げると今度はほかのプログラムで本来の移動量に準拠した移動ができなくなるので設定の変更はしたくないのだが…というところです。まあ、そうなるとWindowModePatchがかかっているプログラムだけマウスの移動量を何らかの方法で調節できるような設定がほしいな~というところとなっています。

 

改良点が見えてきた…かな?

4Kになってプログラムを作るときのように膨大な量のテキストを表示させると便利な状態ではうれしい画面の広さが手に入ったので、ここは対応ソフトを増やすとともにWindowModePatchの次回改良点として考えてみたいと考えています。…改良の時間はどうなって作れば?

C94には行く予定で

半年空いた末の話がこれですか…というものです。忙しすぎてWindowModePatchとかのプログラムに手をつけている暇もなければblogの記事を書く暇すらなかったところにこれを書きます。

 

今回は3日間とも…?

一応資金にめどが立ったので3日間ともの予定を組む予定(え?)としています。ちょっと今の活動が限界点に達しつつあるのでは…?ということも含めて来年度にはまた別の動きを見せる予定なので、それに備えていくつかのサークルさんに挨拶に伺いたいな~と言うことで考えています。その他情報収集が甘くなっていた部分を補うためにも情報を集めてきたいと思っています。

 

ついでにメインマシンも買い換える予定

今回の狙いは4Kディスプレイによる作業環境です。多少サイズが大きくても画面解像度が大きい方がプログラムを組んだり各種リソースの作業をするにも有利ですし、WindowModePatchを様々なプログラムに試すなら画面解像度が大きい方が試し甲斐があるからです。それに備えてメインマシンも一台組む予定で、H.265でのハードウェアエンコードやら最新のFPS系のゲームやら今はやりの暗号通貨のマイニングやらをやってみようかな~と思っています。後1,2ヶ月待てばCPUのRefresh版が出るとの話は出ているのでそれを待ちたいような気もするのですが…。この頃は何かの用事で東京に出向くタイミングで替えているので。

 

時間があれば、改良やら新たにいろいろとプログラムを作りたい

WindowModePatchの改良はもちろんですが、それ以外にもいろいろと自分が動けそうなネタを見聞きしてきたのでそちらに関してもPCのプログラムやらサーバープログラムやらスマートフォンのアプリやらで作っていきたいと考えているところ。どんなネタかはそのときになってみてのお楽しみ、ということで。

 

2018年の私はどうなるのかな…

というわけで太陽暦上は2018年になりましたのでちょっと2017年の動向も踏まえて少しだけ近況報告を雑記として書いておきたいと思います。なお、なぜかOSのアップデートの話やらWindowModePatchの開発状況についても書いておきます。

 

さすがにフルタイム勤務になるとその他ができなくなる

という状態になっているため、いろいろと更新が滞っている状態だったりします。なお、一応時間外労働がどれくらいかは見ていますが月によっては休日出勤等も大量にありかなりやばい時間になることも。この辺りは20代にフリープログラマとして活動していたためにフルタイムの経験がほとんどなく、また初めての仕事なので経験や資料の積み上げが全くない状態から始まっているので仕方がないというところでしょうか。同じ仕事が継続できればもう少し楽になるはずなのですが、どうなのでしょうかね。

 

MX ERGOは「それなりに」使えている

ということで新しく買ったLogicoolのトラックボールマウスについて少し経ったので使用感覚などを書いておきたいと思います。なお、MX ERGOの機能の一つであるEasy Switchは一切使っておらず、Bluetoothも使っていないのでほぼ純粋なトラックボールマウスとしての使用としての感想にであることに注意してください。

一言感想を言うならば

「M570tと使用感覚はほとんど変わらず。M570tから付加価値を見出せるのであればMX ERGOへの買い替えは勧められる。」

ですか。ホイールが左右に倒せることについても私の使用方法では一切その機能を使っていないですし、高解像度モードも結局使う場面を見いだせていないので良かったとしても手首の位置調整機能で多少楽になった、というところだったりします。

ちなみに、この20°の傾きですが単に磁石で底板をくっつけているだけなので左下方向に力をかけすぎると0°状態に移行してしまう、といったことも起こります。トラックボールの場合はマウスを動かさないので滅多に怒らないのですが使用を始めた当初はM570tの使用感覚でマウスを密着させるために少し押さえつけるようにしていたところこの現象が何回か発生していたので慣れるまでは気になる人もいると思います。いまでは力感覚もわかっているので手首の負荷軽減になっている感じはわかりますし、マウスを軽く使うデスクワーク用とならば20°を、ゲームなどで集中して使う場合は0°を、のように使うのもありなのかな~と考えています。パタパタ動かしすぎて回転軸になるプラスチックの出っ張りが壊れないか微妙な心配もありますが、そんな人はまれだと思いますのでとりあえず書いておくだけにしておきます。

 

OSを最新世代へとアップデート

わざわざWindowsと書かなかったのはサーバー側もアップデートしたからです。というわけで両方とも解説。

Windows側はメイン機、NotePCともにWindows10 Fall Creators Updateへとアップデートしました。ちなみに以前にも書いたのですが、このアップデートはレジストリを経由する一部の設定はどうやっても引き継がれないのが個人的にはとても気になっていることで、具体的には無効化したはずのZipFolderの機能は元通りになっていますし、せっかくカスタマイズしたMediaFoundationおよびDirectShowの設定とWindowsMediaPlayerの設定もデフォルト状態に戻される、という現象が起こります。アップデートした直後にこれを戻すのが非常に面倒、というところでしょうか。まあ、レジストリを少し削除したり設定ツールで各種Codecのファイルを再生してみて正常に再生できるかどうかをチェックすればOKなのでまだましなのかもしれません。少し気になっているのはエクスプローラでの動画のサムネイル作成機能がうまく動かなくなっていること。特にMPEG-1形式の場合にうまく作成されないことがあるようです。私特有でしょうか?

 

そしてサーバー機もFedora25からFedora27へとアップデート、というより再インストール。実はもう少し早くインストールしてインストール日記を書くはずだったのですが、サーバー版のリリースが少し後になった影響で再インストールしたのが12月末になってしまったためこの記事で紹介しています。

個人的に一番変わったと感じた点がBtrfsがだいぶ安定したことでしょうか。Fedora25ではLVM上にXFSで各ファイルシステムを作成していたのですが今回はBoot領域のみ別確保であとはBtrfsを使って一括確保し、一部マウント先名前を付けた状態としてセットアップを行いました。LVMと異なりBtrfsの場合は一つのパーティションから切り出して名前を付けているだけになっているようで、varやusrやhomeもBtrfs上でパーティションが分かれているわけではないので領域が十分に使えるのが良いところでしょうか。ただ、ちゃんとroot領域やらに予備領域を作らないと何かあって領域がいっぱいになった時にログインすらできない、という問題は起こりそうなので設定が必要でしょうかね。それ以外だとSELinuxを有効にしていたのでSambaの設定に一苦労したくらいでしょうか。setseboolは-Pのオプションを付けないと永続化しない、ということを忘れていて再起動した後でファイルが見えなくなってあわてて調べなおしたので…。

 

WindowModePatchはただいまDirectX6世代のDirect3DをDirect3D9を使って実装中

2017年12月に実装を初めてまだこれです。時間が取れないものでデバッグにすらたどり着いていません。しかもおそらく一番大変な部分であるIDirect3DDevice系の実装に差し掛かっていてどうなることやら、というところです。幸いなのはDirectX7系のDirect3Dは簡易実装してあるのでそこから大部分のコードを流用できることですか。それでも実際に動かすまでには時間がかかりそうですし、今回のデバッグはもともとの問題となった部分が部分だけに大変だろうな~というところだったりします。気分転換ではないですが別のゲームでうまく動かない、とかを調べて簡単にバージョンアップできるネタがあればそちらを優先させてしまいそうな感じです。

 

はてさて、今年一年はどうなるのでしょうかね

個人的にはしばらくゲーム作りから離れていた影響なのかまた一本くらいは作りたいな~という思いがわいてきているところです。ただ今回はスクリプタやプログラマとしてではなく制作管理側として動いてみたいな~という感じに変わってきています。資金が十分にあれば同人・商業問わずチャレンジしてみたいところですね。その資金を手に入れるところから始まる、といったところでしょうか。

 

どうでもいいですが、2017年の頭にいくつかおみくじを引いて財布に入れていたのですが大吉などかなり良いものであったにもかかわらずそこまで良い思いができた年だったのか?と言われると沈黙するのですが…どうなのでしょうね。