コンテンツへスキップ

2

昨年末にLinuxデスクトップ用のメインPCを組みました。もはやWindowsが必須なのはエロゲと不自由なBlu-ray再生くらいになったので、脱Windowsを本格的に進め、自宅のメインのデスクトップ環境はLinuxに移行しました。

そういえば年末に以下の記事を読んだことを思い出しました。

mrwk update: 「Linuxデスクトップ元年」から20年経った

私のLinuxデスクトップ元年は、大学に入って様々な開発環境の構築にWindowsで苦しみ、ノートPCにLinuxデスクトップをブチ込んで使うようになったときです。ディストリビューションに強いこだわりはないですが、Fedoraを長年使っています。

Linuxデスクトップの話題になると、ハードウェアの互換性(特にノートPCで)の問題が挙げられますが、モノを選べばそこまで重大なトラブルで苦しむことはないでしょう。快適にLinuxデスクトップが使いたいならDell XPS 13シリーズを選んでおけば間違いないです。十数年前の印象で知識が止まっている方々があーだこーだ言っているかもしれませんが、適当に聞き流しておけば良いのです()

現在職場では、残念ながら不自由なmacOSを使わされていますが、プライベートな用途ではここ数年Linuxデスクトップを使う時間がほとんどです。Windowsは冗談抜きにエロゲ専用機になっています。

(エロゲといえば、Windows大型Updateの度に起こる再認証の対策、エロゲ専用仮想環境の構築など、最近色々整備しはじめているので、機会があれば記事にします)

パーツ構成

ざっと以下のような構成です。低消費電力を意識して、RyzenではなくX付きでない2700に。GPUも補助電源不要なGTX 1650クラスに留めておきます。メモリはケチっても良いことがないので、詰めるだけ積みます。

(2019/11購入時点の価格。現在は少し値上がりしているようです。)

パーツ 製品 価格
CPU AMD Ryzen 7 2700 19,957
GPU ZOTAC GAMING GeForce GTX 1650 OC -
M/B ASRock B450M Pro4 8,320
メモリ DDR4 64GB (16GB*4) -
SSD 1TB NVMe Silicon Power SP001TBP34A80M28 14,932
NIC Mellanox ConnectX-2 MNPA19-XTR -
電源 550W 玄人志向 KRPW-BK550W/85+ 5,052
ケース Fractal Design Core 1100 4,932

※ GPU、メモリ、NICは今回新規購入ではなく手持ちのを流用

Fedora 31のインストール

インストール自体はなんの問題もなくサクサク終了しました。高速なストレージは正義ですね。しかし、ログインしてみると、4Kディスプレイに接続しているためか、nouveauドライバのままでは画面描画がガクガクでまともに操作できないような状態でした。しかも、なぜかキーボード入力がチャタる。とりあえずCUIに切り替えて、NVIDIAの不自由なプロプラドライバをインストールしてやれば解消します。(Wayland動かすのは今は見送りです)

lspciするとこんな感じ。

00:00.0 Host bridge: Advanced Micro Devices, Inc. [AMD] Family 17h (Models 00h-0fh) Root Complex
00:01.0 Host bridge: Advanced Micro Devices, Inc. [AMD] Family 17h (Models 00h-1fh) PCIe Dummy Host Bridge
00:01.1 PCI bridge: Advanced Micro Devices, Inc. [AMD] Family 17h (Models 00h-0fh) PCIe GPP Bridge
00:01.3 PCI bridge: Advanced Micro Devices, Inc. [AMD] Family 17h (Models 00h-0fh) PCIe GPP Bridge
00:02.0 Host bridge: Advanced Micro Devices, Inc. [AMD] Family 17h (Models 00h-1fh) PCIe Dummy Host Bridge
00:03.0 Host bridge: Advanced Micro Devices, Inc. [AMD] Family 17h (Models 00h-1fh) PCIe Dummy Host Bridge
00:03.1 PCI bridge: Advanced Micro Devices, Inc. [AMD] Family 17h (Models 00h-0fh) PCIe GPP Bridge
00:04.0 Host bridge: Advanced Micro Devices, Inc. [AMD] Family 17h (Models 00h-1fh) PCIe Dummy Host Bridge
00:07.0 Host bridge: Advanced Micro Devices, Inc. [AMD] Family 17h (Models 00h-1fh) PCIe Dummy Host Bridge
00:07.1 PCI bridge: Advanced Micro Devices, Inc. [AMD] Family 17h (Models 00h-0fh) Internal PCIe GPP Bridge 0 to Bus B
00:08.0 Host bridge: Advanced Micro Devices, Inc. [AMD] Family 17h (Models 00h-1fh) PCIe Dummy Host Bridge
00:08.1 PCI bridge: Advanced Micro Devices, Inc. [AMD] Family 17h (Models 00h-0fh) Internal PCIe GPP Bridge 0 to Bus B
00:14.0 SMBus: Advanced Micro Devices, Inc. [AMD] FCH SMBus Controller (rev 59)
00:14.3 ISA bridge: Advanced Micro Devices, Inc. [AMD] FCH LPC Bridge (rev 51)
00:18.0 Host bridge: Advanced Micro Devices, Inc. [AMD] Family 17h (Models 00h-0fh) Data Fabric: Device 18h; Function 0
00:18.1 Host bridge: Advanced Micro Devices, Inc. [AMD] Family 17h (Models 00h-0fh) Data Fabric: Device 18h; Function 1
00:18.2 Host bridge: Advanced Micro Devices, Inc. [AMD] Family 17h (Models 00h-0fh) Data Fabric: Device 18h; Function 2
00:18.3 Host bridge: Advanced Micro Devices, Inc. [AMD] Family 17h (Models 00h-0fh) Data Fabric: Device 18h; Function 3
00:18.4 Host bridge: Advanced Micro Devices, Inc. [AMD] Family 17h (Models 00h-0fh) Data Fabric: Device 18h; Function 4
00:18.5 Host bridge: Advanced Micro Devices, Inc. [AMD] Family 17h (Models 00h-0fh) Data Fabric: Device 18h; Function 5
00:18.6 Host bridge: Advanced Micro Devices, Inc. [AMD] Family 17h (Models 00h-0fh) Data Fabric: Device 18h; Function 6
00:18.7 Host bridge: Advanced Micro Devices, Inc. [AMD] Family 17h (Models 00h-0fh) Data Fabric: Device 18h; Function 7
01:00.0 Non-Volatile memory controller: Phison Electronics Corporation E12 NVMe Controller (rev 01)
02:00.0 USB controller: Advanced Micro Devices, Inc. [AMD] 400 Series Chipset USB 3.1 XHCI Controller (rev 01)
02:00.1 SATA controller: Advanced Micro Devices, Inc. [AMD] 400 Series Chipset SATA Controller (rev 01)
02:00.2 PCI bridge: Advanced Micro Devices, Inc. [AMD] 400 Series Chipset PCIe Bridge (rev 01)
03:00.0 PCI bridge: Advanced Micro Devices, Inc. [AMD] 400 Series Chipset PCIe Port (rev 01)
03:01.0 PCI bridge: Advanced Micro Devices, Inc. [AMD] 400 Series Chipset PCIe Port (rev 01)
03:04.0 PCI bridge: Advanced Micro Devices, Inc. [AMD] 400 Series Chipset PCIe Port (rev 01)
05:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller (rev 15)
06:00.0 Ethernet controller: Mellanox Technologies MT26448 [ConnectX EN 10GigE, PCIe 2.0 5GT/s] (rev b0)
07:00.0 VGA compatible controller: NVIDIA Corporation TU117 [GeForce GTX 1650] (rev a1)
07:00.1 Audio device: NVIDIA Corporation Device 10fa (rev a1)
08:00.0 Non-Essential Instrumentation [1300]: Advanced Micro Devices, Inc. [AMD] Zeppelin/Raven/Raven2 PCIe Dummy Function
08:00.2 Encryption controller: Advanced Micro Devices, Inc. [AMD] Family 17h (Models 00h-0fh) Platform Security Processor
08:00.3 USB controller: Advanced Micro Devices, Inc. [AMD] Zeppelin USB 3.0 Host controller
09:00.0 Non-Essential Instrumentation [1300]: Advanced Micro Devices, Inc. [AMD] Zeppelin/Renoir PCIe Dummy Function
09:00.2 SATA controller: Advanced Micro Devices, Inc. [AMD] FCH SATA Controller [AHCI mode] (rev 51)
09:00.3 Audio device: Advanced Micro Devices, Inc. [AMD] Family 17h (Models 00h-0fh) HD Audio Controller

使ってみて

Linuxデスクトップ環境自体は手に馴染んでいるので特に問題はなく、ちょくちょくWindows機とモニターを切り替えていた手間がなくなり、快適に使えています。

エロゲはWindows機にリモートデスクトップしてプレイしていますが、LAN内であれば動画再生しても不便を感じることもほぼありません。ただ、ゲームエンジンによっては全画面表示やクリックイベントなどの扱いに問題を抱えていることがあってツライです。ディスク認証があって、Wineでも動かず、DL版もないようなちょっと古いエロゲが動作環境的にどうしようもなく厳しいです。

そういえば、C97で頒布した新刊も執筆はLinuxデスクトップで完結しています。組版はLaTeX(+ LyX)、作図はdraw.io、画像編集はGIMPという感じです。コピー本の印刷にあたっては以下のプリンタを利用していますが、いずれもLinux向けドライバが提供されており、不便はありません。

ただ、印刷屋に発注するときは、入稿用フォーマットに整えるためにどうしてもAdobe Acrobatなどが必要になってしまうことがありますね…。


さて、今年は良いLinuxデスクトップの年になりますように。

Fedora 25がリリースされましたね。

Fedora Magazine: Fedora 25 released!

今回の目玉は、デスクトップ版(Fedora Workstation)においては、Waylandが標準になったことでしょうか。
あと開発環境としては、PHP 7やRustの対応がありますね。

XPS 13 9343 (2015年モデル)で動かしているFedora 24を25にアップグレードさせましたが、とりあえず致命的な問題はなさげです。
23→24の時と同様に、dnf-plugin-system-upgradeを用いてアップグレードします。

Fedora Project Wiki: DNF system upgrade

$ sudo dnf upgrade --refresh
$ sudo dnf install dnf-plugin-system-upgrade
$ sudo dnf system-upgrade download --refresh --releasever=25

ここでサードパーティのリポジトリを追加してると依存関係の問題が起きるかもしれないので、--allowerasingオプションで当該パッケージを削除するようにします。
それと、私の環境ではtexliveのパッケージが競合するとか言われたので、除外するようにしました。

$ sudo dnf system-upgrade download --refresh --releasever=25 --allowerasing -x texlive*

そして、アップグレード実行。

$ sudo dnf system-upgrade reboot

いつ頃のkernelからか忘れましたが、ヘッドホン出力から一定周期でプチップチッというようなノイズが出力され、まともにヘッドホンが使えない状態が続いています。今回のkernel 4.8系でも直ってません・・・。
(kernel 4.6.3でサウンドカードが検出されなかったバグとか、サウンド周りは何かと問題が多いですね)
XPS 13 9350 (2016年モデル)のArchWikiに同様の問題について記述がありますが、どれも解決しませんでした。

原因を調べようと思ってテキトーにソース眺めたりしたけれど、デバイス周りの知識も無いので全然分かりませんでした(完)

半年ほど前にXPS 13(9343)を購入したのですが、評判の通りとても良いマシンで気に入っています。
やっぱりある程度金出さないとダメなんだなあと思いました。
Skylakeが搭載された新しいモデル(9350)も販売されているらしいですね。

さて、今回は内蔵の無線LANカード(DELL  DW1560)をIntel Dual Band Wireless-AC 7265へ換装するお話です。
なぜ換装したかといえば、このPCにはFedoraをインストールして使っているのですが、どうもWiFI接続が不安定なのです。DELL DW1560の中身はBroadcom BCM94352Zなのですが、b43ではサポートされておらず、broadcom-wlを導入する必要があります。

当初は問題なく動作していると思いきや、度々全く接続できなくなったり、特定のAPに接続できなかったり、Bluetoothが動作しないなどの症状が出ていました。
有線LANが使えないので、WiFiが不安定なのは致命傷です。

Arch Linux WikiのDell XPS 13 (2015)ページを見ても、メインラインカーネルでサポートされているIntel 7265に換装した方が幸せになれそうということが分かります。
早速どこで買おうかと色々検索したのですが、国内よりAmazon.comの方が安いことが分かり日本円にして3,330円で購入できました。Amazon.co.jpにも3,000円前後のものがありますが、それはWireless-Nで802.11 acに対応していないモデルなので要注意です(偽物もあるかも)。

Amazon.com: Intel 7265NGW Dual Band 2x2 Wireless AC + Bluetooth 4.0 M2 Interface Also Supports 802.11 AC-B/G/N

注文から10日ほどで到着しました。それでは換装作業です。
例によってサービスマニュアルに分解から換装まで丁寧に記載されているので、それほど困りませんね。

Dell 製品サポート: XPS 13 9343 サービスマニュアル PDF (8748 KB)

p.12~の通り、裏面のベースカバーさえ外せてしまえば、あとは簡単です。
とは言いつつも、ネジを全て外した後、カバーのツメが非常に外しづらく、無理に力を入れれば折れます。(数カ所折れてしまいました・・・)
アルミ削り出しの筐体であの薄さですから、遊びも少なく少し歪ませることもできません。
図中にもありますが、ヒンジの側から何か差し込んで少しずつ外していく必要があります。
私はステンレス直定規でこじ開けつつ竹串を挟んで作業しましたが、プラスティック製のスクレーパーがあったほうが良いと思います。

XPS13_1

写真中央にあるのがSSDで、右上に「WLAN」と書かれているのが無線LANカードです。
ちゃちゃっと交換して、カバーを戻して、起動。

無事認識して、正常に動作していました!
以前あったような症状も一切なくなり、快適そのものです。
数千円のお金と多少の時間をかけてでも、やる価値はありますね。

2

それでは本題のビルド作業になります。
Firefox OSのmsterブランチからNightlyビルド及び日本語化・日本語IMEの導入が目標です。
現時点では、Firefox OS 2.2になります。


ビルド環境の構築

 まず、ビルド環境ですが、現在64bit版LinuxかMac OS Xで動作するとのことです。
私はFedora 20 (64bit版)で行いました。

MDN: Firefox OS ビルドの必要条件

基本的には上記ページを参照して進めていきます。環境に合わせて各種準備を行ってください。

まずは必要なパッケージをインストール

$ sudo yum install autoconf213 bison bzip2 ccache curl flex gawk gcc-c++ git glibc-devel glibc-static libstdc++-static libX11-devel make mesa-libGL-devel ncurses-devel patch zlib-devel ncurses-devel.i686 readline-devel.i686 zlib-devel.i686 libX11-devel.i686 mesa-libGL-devel.i686 glibc-devel.i686 libstdc++.i686 libXrandr.i686 zip perl-Digest-SHA wget

また、Fedora 20のgccはデフォルトで4.8ですが、ビルドには4.6が推奨されるとのことなので、ダウンロードしておきます。

$ curl -O http://people.mozilla.org/~gsvelto/gcc-4.6.4-fc19.tar.xz
$ sudo tar -x -a -C /opt -f gcc-4.6.4-fc19.tar.xz

[追記] Fedora 21の場合はMake 4.0がデフォルトなので、ビルドに必要な3.82をインストール必要があります。(=>MDN Fedora21)

$ curl -O http://people.mozilla.org/~gsvelto/make-3.82-fc21.tar.xz
$ sudo tar Jxv -a -C /opt -f make-3.82-fc21.tar.xz
$ PATH=/opt/make-3.82/bin:$PATH

adbもインストールしてなければ、

sudo yum install android-tools

ccacheもサイズ大き目に一応設定しておきます。

ccache --max-size 10GB

端末のudevルールを設定します。ZTE OPEN Cじゃない場合はUSBベンダーIDが違うので注意。

$ sudo vim /etc/udev/rules.d/android.rules
SUBSYSTEM=="usb", ATTR{idVendor}=="19d2", MODE="0666", GROUP="plugdev"
$ sudo systemctl restart systemd-udevd.service

端末のリモートデバッグを有効にするには、

[Settings]-[Device information]-[More information]-☑Remote debugging

システムパーティションのバックアップは、ビルドを行うbuild.shでやってくれるので、まあやらなくても。 ... "ZTE OPEN C FirefoxOS(B2G)をビルドしてアップデートする2" を続けて読む

1

以前にPHP 5.4系にアップデートしようと試みましたが、運用中のPukiWiki (1.4.7 UTF-8版)が対応せず断念したことがありました。

該当記事: サーバー保守 ・ 

しかしながら、remiリポジトリも5.4系に移行したこともあり、重い腰を上げていざアップデートへ。
あと、eAcceleratorがエラーで入らなかったのでAPCをインストール。(⇒ 仮メモ: CentOS5でRemiのPHP5.4にupdateするとエラー


さて、PukiWikiの修正に入りましょう。

まずは、hex2bin関数がPHPの組み込み関数と競合する問題(PukiWiki-Dev: BugTrack2/349)の修正。
PHP5.3に戻すこともないのでhex2bin関数をコメントアウトします。

/*
// Inversion of bin2hex()
function hex2bin($hex_string)
{
	// preg_match : Avoid warning : pack(): Type H: illegal hex digit ...
	// (string)   : Always treat as string (not int etc). See BugTrack2/31
	return preg_match('/^[0-9a-f]+$/i', $hex_string) ?
		pack('H*', (string)$hex_string) : $hex_string;
}
*/

加えて、コール時の参照渡し(Call-time pass-by-reference)が廃止されているために動かないプラグインがいくつか。
BugTrackの方にはls2とpcommentが挙がっていますが、前回試みた際に発生したMenuバーが表示されない問題はonlineプラグインにありました。

// array_walk($args, 'plugin_ls2_check_arg', & $params);
array_walk($args, 'plugin_ls2_check_arg', $params);
// array_walk($args, 'plugin_pcomment_check_arg', & $params);
array_walk($args, 'plugin_pcomment_check_arg', $params);
// if (plugin_online_check_online(& $count, $host)) {
if (plugin_online_check_online($count, $host)) {

これでたぶんFatal errorは解決するので、ほぼ問題なく動くと思います。
(EUC-JP版PukiWikiの場合、厄介なhtmlspecialcharsの非互換問題の対応が必要です。)

あとはslashdot:martianの日記: PHP5.4 と PukiWikiを(2)(3)とかを。
参照渡し周りとか箇所が多いのでコードは省略。
また、設定してなければタイムゾーンを設定。

date.timezone = "Asia/Tokyo"

やっぱエラー直したい!という方はこちらnowsky様「PukiWiki/error」のWikiが詳しいです。

こんな感じで一応動いています。触っているうちに何かエラーが発生するかもしれません。
PukiWikiでもCVS版であれば、hex2binの修正だけでどうやら動くようです。
しかしながら、本家PukiWikiはほぼ開発停止のようなものですからね・・・
CVS版を取り込んでいるPukiWiki Plus!で運用してみたサイトもあるのですが、なかなか良い感じです。
更にこれを発展させPHP5.4対応のPukiWiki Advanceというのもあり、かなり改変が加えられていて前衛的な機能が実装されています。
機会があれば試してみようと思います。