2022年11月30日水曜日

13回目のランクイン

 
…あれ?今回はハズレかな…と、思ったら

はい、アニメに合わせたのか最上に載せると異常に強い水戦です。
が、真の魅力はそこではない。
…ベイルアウトさん!
アニメ2期のMVP!…いや、現時点でアニメ2期の人気投票やったら本当に1位になりかねない妖精さんです。
これは嬉しいですね、以前貰ったフライングパンケーキ以来かも。

2022年11月27日日曜日

SurfaceBook 初代を LMDE5 で dGPU を使ってみたい2(ドライバーを入れてみる編)

 前回 lspci を行って、 dGPU の存在は確認できたけれど、nvidia のグラフィックカードを使うソフトをインストールしようとすると軒並み失敗する。
曰く

Nvidia のビデオカードが無いじゃん

…なぜ、無いと判断されるのかと言うと、ドライバーが入っていないから。
これの判断は簡単でnvidia のドライバーが入っている時に同時に入るコマンド

$ nvidia-smi

を打ち込んでみて、そんなコマンドは無いとエラーが返ってきた場合はまずドライバーが入っていません。

Linux のビデオドライバーというのは Windows の様には手軽なものでは無く、インストール後カーネル(OSの核)に組み込んでやる必要がります。
カーネルの組み直しというと大事な気がするけれど、linux-surface をインストールした時点で実は1回カーネルが組み変っていたりするので、Linux では割とある事という認識で良いと思います。

ドライバーは Nvidia のホームページからダウンロードできて、恐らく

NVIDIA-Linux-x86_64- ~バージョン~ .run

というファイルのハズ。
.run というファイルは聞き馴れなかったけれど、実行権限を付けて

$ sudo ./xxxx.run

と直接実行するタイプのファイルだそうです。
で、実行してみると
というエラーが。
要約すると

Xサーバーが起動している間はインストール作業はできないよ

という事らしいです。

  • ではXサーバーって何のサーバーだよって話ですが、これが面倒。
むかしむかし、コンピューターは文字を入力すると文字を返してくるCUI(キャラクタユーザーインターフェース)という、入出力を行う計算機でした。
※厳密には、それ以前のブラウン管ディスプレイすら無い時代にもコンピューターは存在します。戦艦アイオワに積まれていたアナログコンピューターとか

今から40年程前に流石にそれでは不便じゃないかと気づいて、今日のようなグラフィカルな入出力GUI(グラフィカルユーザーインターフェース)という物が作られ始めます。
UNIX を設計の母体とするOSグループ( UNIX Linux FreeBSD... )はこの GUI として X Window System というものを使う事にしました。
ただ、この X Window も大変シンプルなシロモノだったので、もうちょい使い勝手を良くしようという事で、盛り付ける形でさまざまなデスクトップ環境が産まれます。
GNOME KDE Xfce MATE 等です。
図にするとこんな感じ
で、ざっくり言うと、この X Window System を動かしているのが X Server。
つまり、これを止めろという事はGUI操作を辞めなさいという事。
GUIから操作しているのに、GUIを辞めろと言われると一見詰んだようにも見えますがやりようはあります。
ひとまず、説明を簡単にする為に成功したパターンのお話を順を追って書いていきます。

1.CUIベースへ退避
ショートカットキー Ctrl+Alt+F1~F6
これでひとまず CUI ベースのOSに移行します。
ちなみにログインのやり直しという形をとるので、最初にコンソールからユーザー名を聞かれます。
ユーザー名、パスワードを入力するとコマンド入力(文字入力)を受け付けるようになります。
尚、この状態から元のGUIに戻るショートカットは Ctrl+Alt+F7

2.X Server を止める
止める為のコマンドはデスクトップ環境により異なります。私の場合は LMDE5 MATE なので

$ sudo service lightdm stop

GUIが止まってしまったので、当然ショートカットを使ってもGUIへ戻れません。

3.ドライバーのインストール
$ cd ドライバーがあるフォルダ
$ sudo ./NVIDIA-Linux-x86_64- ~バージョン~ .run

4.X Server を起動
$ sudo service lightdm start
これももちろん、デスクトップ環境によってコマンドが異なります。

…以上の手順が無事に済めば再起動後にドライバーが組み込まれます。


  • 実は失敗してました。
3のドライバーインストール時にこんなメッセージが

ERROR: Unable to load the kernel module ‘nvidia.ko’. This happens most frequently when this kernel module was built against the wrong or improperly configured kernel sources, with a version of gcc that differs from the one used to build the target kernel, or if another driver, such as nouveau, is present and prevents the NVIDIA kernel module from obtaining ownership of the NVIDIA GPU(s), or no NVIDIA GPU installed in this system is supported by this NVIDIA Linux graphics driver release.

要約すると

ドライバーをインストールしようとしているハードウェアになんかソフトがくっついてるから無理だわ nouveau とかね。

という事らしいです。
 nouveau って何?という事で調べてみたら、Linux のエンジニアが Nvidia のハードをなんとか動かす為に作ったドライバー的な物らしいです。
なんとかって?という話なのですが、Nvidia は最近までドライバー情報を公開していませんでした。そこで Linux 側のエンジニアがなんとか動かせるように作ったのが nouveau という訳です。
ちなみに情報を公開したのは22年5月。前述したように、ドライバーはカーネルの組み直しを伴います。
22年4月にメジャーアップデートを行った Ubuntu のエンジニアはたった半月後に巨大な組み直し作業を迫られた事になりますね…鬼かな?
で、情報公開してこなかったくせに、邪魔な先住民が居るので除けないとドライバーはインストールできないと言っている訳です。

$ lsmod | grep video

等で確認すると標準の i915 (Core 系 CPU 内のビデオ機能)の他に nouveau が割り付けられていたりします。
そしてもう一つ、 nvidiafb というものも悪さをします。
これらはカーネルに組み込まれているので、カーネルに組み込まないで欲しいモジュールにリストアップして、その後カーネルを組み直す必要があります。
そのリストというのは名前そのまま blacklist なのですが、

/etc/modprobe.d/blacklist.conf

に追記します。ファイルが無かった場合はドキュメントの新規作成で作ってください。
追記内容は

blacklist nouveau
blacklist nvidiafb

その後、

$ sudo update-initramfs -u

でカーネルに反映。
無事に終ったら再起動すると反映された状態で起動するハズです。
再度 lsmod 等を使って余計なモジュールが追加されていないかを確認して、前述のドライバーインストール手順にを行ってください。

  • ドライバーが入った…が?
おお!夢にまで見た nvidia-smi !
このVRAM1GBの電源が落ちているGPUは正に Surface Book の dGPU !

Blender には GPU 選択オプションが!

レンダリングしてみたらちゃんと3MB分VRAMを消費している!
コレは成功したのでは!!

…と、思ったのですが。
…?!GPUの電源が落ちてる?
…つまりGPUは寝たままレンダリング用にVRAMを貸してくれただけの塩対応だったようです。
GPUはいつになったら起きるのか、道は険しいですね。
※2023/02/09追記
この3MBの消費はどうやらMSIそのものが消費している気がします。後日実際に動作した際には数百MBの消費をしているので、この程度では何もできませんしね。

2022年11月21日月曜日

SurfaceBook 初代を LMDE5 で dGPU を使ってみたい1(GPU認識編)

 dGPU は居ます

という訳で、まっさらな LMDE5 (MATE) を用意しまして、SurfaceBook 初代にインストール。その後 linux-surface を導入します。
この時点で 
$ lspci
と端末に打ってみても dGPU は認識されません。

※11/25追記
linux-surface の wiki によれば SurfaceBook 初代には下記の処理も必要なようです。

/etc/profile
末端に
export __NV_PRIME_RENDER_OFFLOAD=1
export __GLX_VENDOR_LIBRARY_NAME="nvidia glxgears -info"
を追加。
※2023/01/09 削除。コレについては盛大に勘違いしていたようです  

/etc/default/grub
の GRUB_CMDLINE_LINUX_DEFAULT の内容を
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash nouveau.modeset=0 pci=realloc nvidia-drm.modeset=1 pcie_port_pm=off pcie_aspm=off"
に変更
※11/25追記ココまで

/usr/local/bin
ディレクトリに dgpu.sh (名前は何でも良い)
というファイルを作ります。尚同ディレクトリは管理者権限で開かない(アイコンを右クリックして管理者権限で開く)とファイルを作れないので注意。

内容は先日書いていたページに示されていた通り

#!/bin/sh

echo 1 | tee /sys/bus/platform/devices/MSHW0041:00/dgpu_power
echo 1 > /sys/bus/pci/rescan
setpci -H1 -s 01:00.0 6a.b=81
setpci -H1 -s 01:00.0 4.w=0407
echo 1 > /sys/bus/pci/rescan
setpci -s 01:00.0 4.w
setpci -s 01:00.0 6a.b

作ったファイルは実行権限を付けます。
まあ、私は永久にニュービーなのでコマンドで実行権限を付けるようなシャレオツな事はできません。
※ファイルアイコンを右クリックしてプロパティを開けば設定できます

ちょいと実行

$ sudo /usr/local/bin/dgpu.sh

これで多分
940MX が認識されるハズ。

が、こんなものを起動する度にコマンドラインで打つのは面倒なのでOSに起動時に呼ばせるように設定する。
一旦、OSを再起動。

$ lspci

と打ち込んでも 940MX を認識していない事を確認してください。

/etc/systemd/system
ディレクトリに dgpu.service (名前は何でも良い)
というファイルを作ります。尚同ディレクトリは管理者権限で開かないとファイルを作れないので注意。

内容は先日書いていたページに示されていた通り

[Unit]
Description=Nvidia GPU initialization
Before=display-manager.service

[Service]
Type=oneshot
ExecStart=/usr/local/bin/dgpu.sh
ExecStartPre=/bin/sleep 10

[Install]
WantedBy=multi-user.target

これも作ったファイルは実行権限を付けます。

で、実際に動くのか試してみます。

$ systemctl daemon-reload
$ systemctl start dgpu.service

で、この後に

$ lspci

と打ち込んで 940MX が認識されていれば一安心。
…なのですが、このままOSを再起動されると 940MX は認識されません。
サービスが常に起動されるものとして登録されていない為です。

$ systemctl enable dgpu.service

これで登録完了。再起動後も 940MX が認識はできるハズ…です。

さて、後半は Linux 使う人は割と当然のように行っているデーモンプロセスとかいう奴の登録のお話だったのですが…
…存在は知っていて、20年くらい前に何も知らずにやっていたけど、初めて意識して作ったし、これが出来て当然とか言ってる Linux ユーザー怖いなと。
そして前半の内容は linux-surface #93 の内容をなんとか読解してみた結果…のハズ。私、アメリカ語さっぱりなんで。

そして、残念な事にここまでやっても認識しただけで、実は起動していません。
起動させるには別のソフトを呼ぶ必要があるようです。
ここまでで判った知見としては

Linux 初心者はノートを使うなら dGPU とか夢見てないで iGPU が強くて面倒な構造を持っていない CPU (ぶっちゃけ Ryzen)を選んだ方が良い

って事ですかね。

2022年11月14日月曜日

dGPU に触れたかった話

 Yoga260 が不調な事もあり、Blender が滞っていたのですが、いっそ使用するPCを変えようかと。
Blender3.3 はハードウェア依存が強いと言うので dGPU 搭載マシンを見ていたのですが、調べてみると dGPU を Linux で使用するのは色々と問題が起きやすいとの記事を見かけます。
dGPU 搭載パソコンなんて、中古でも10万円を超える物を買ってみて「ダメでした残念」では済まされません。※VivoBook は買った直後の  LinuxMint では Ryzen 系でバグが出ていましたね…

で、ギリギリ使えて、ギリギリ購入できる範囲を探して…
なんとか3.4万円で SurfaceBook (初代)を発見。
…ここからが地獄の始まりでした。

  • まず、購入から地獄。
検索したところ楽天市場に出店していたレインボー家電がひっかかったのですが…
楽天は初めて使うので、会員登録していざ購入…

E01_009
楽天会員規約に基づき利用停止措置がとられています。
セキュリティ確保のため、一旦ログイン処理を停止させていただきます。

購入がキャンセルされました
私の家はネットを見ているメインマシンとは別にメール受付専用の Linux マシンを別に用意しています。
どうやら手続き中に2台のパソコンでアクセスを行うと不正を疑われて、すべての手続きがキャンセルになるらしいのですが…。

再度アクセスしようとするとパスワードが違うと言われて、
パスワードを登録し直そうとすると原因不明のエラーが出たんでアカウント止めますと出る始末。メール登録しているのだからアカウントを止めた理由くらい送信しないのかと。

再度パスワードを登録しなおそうとすると、以前使われたパスワードだから使うことはできないとのエラー。…エラーで何度もパスワード登録をやり直している間に使えないパスワードが増えていくという悪循環。

あまりにもどうにもならなかったので、カスタマーサービスのチャットで問い合わせた所。
登録中にエラーを起こしたことは把握したけど、担当が出てこないと詳細はわからないので、後日の連絡を待ってね。即答できなくてごめんね。

…ちなみに連絡を行ったのは10/31であり、10月のポイントサービス期間は終了数時間前。

注文がキャンセルされた事もあり、レインボー家電が再度同じ商品を出品しているのを確認して、アマゾンでも出品しているのを確認しそちらで購入。もう2度と楽天は使いません。

で、アマゾンで2日後に届いたのですが、開けてみたら「レインボー家電の自社サイトで購入してくれたらさらに値引きするよ」とのチラシが…膝から崩れ落ちそうになりました。

  • さて、Linux をインストールしてみる
Surface は MacBook に対抗するために Microsoft が作ったハードです。
当初分解して NVMe SSD を交換しようと思っていたのですが、ネジすら使用していないという恐ろしく分解し辛い構造の為、素直に Windows を消してインストールしてみることに。
…案の定、オリジナリティあふれる UEFI が出てきましたが、セキュアブートOff等を行えば存外あっさり Linux インストール自体はできます。

起動はできたが2種の問題が。

スクリーンのタッチパネルが反応しない
セパレート2イン1なのにタッチができないとはこれ如何に。

dGPU が見つからない
Windows が入っているうちに動作を確認するべきだったと後悔しましたが…
いや、dGPU が入っているから買ったのにどういう事なんだと。
調べた所、dGPU は消費電力が多い為、普段は寝ているそうなんですが…
ACPI に対して dGPU の起動を指示しないと認識すらできない。当然認識しないのだからドライバも入らないし、サービスも動かない。
…ソフトウェアでやってれば良いのですが、組み込み系で実装したらしいのですよね。
めんどくせえ…

…はい、確認した所の動作はこんな感じ。
そもそも MicrosoftSerfaceBook の仕様は特殊でセパレート2イン1なのですが、キーボードの中にビデオボードと追加バッテリーが入っていたりします。
そんなもろもろの面倒な仕様を解決するべくいろいろやっているコミュニティがあるようで、そこが提供している linux-serface というそのものズバリなソフトを導入するとタッチスクリーンは認識するようになるのですが… dGPU はまだ無理。
前述のコミュニティを読むとモデレーターさんが #93 へ行け。というどっかのゲームブックみたいな回答をしているのですが、この返答の21年3月にそのものな内容があるにはあります。
…が、動かなかったのですよねえ…先は長そうです。

サブマシンパワーアップ

 サブの実験機としてエプソン Endeavor を使っていたのですが、なにも Atom 機を使わなくてもウチには高速なミニマシンがあるなと思いまして。
コロナ禍が始まった頃に購入し、そのまま少し実験して放っておかれていた富士通 B532/G (ESPRIMO)。
メモリがデグレードされたままだったので、ネットで購入
ただ、本来この機体のメモリは DDR3 であり、この低電圧版の DDR3L 版が動くかは賭けだったのですが…
見事勝利。
ひとまず、そこら辺に転がっていたSSDを使って Linux Mint を入れましたが、何に使いましょうかね?流石に systemd を使った実験等に使うにはオーバースペックなので、それらはこれまで通りEndevor。
…というか、前回あからさまにスペックオーバーな TDP77W (定格は35W)の i7 3770 に交換した為、サーバー的な用途は寿命を縮めそうです。
メモリも16GBも積んだのでレンダリング補助ですかねえ。

2022年11月5日土曜日

マッドキャットロンはどこまで利用できるのか?(インポートを容認した Kenshi 2)その4

 前回、武術を上げる際の計算を間違っている事に気づきまして、改めて必要なアイテムを集め直して、筋力1、打たれ強さ1のキャラで武術上げを再チャレンジしてみます。

アイテム集め

  • 最初に向かうのはクラブ村…の前にアイアン本部で寄り道
本当は大陸の東にあるクラブ村に行くのですが、途中にあったアイアン本部に立ち寄りました。
ココはカワハギ盗賊の逆で「自分の事をスケルトンと思っている人間」のスケルトン盗賊の本拠地。
スケルトンに対して友好的で、大量にあるスケルトンベッドもタダで貸してくれるし、トレーニングマシンを勝手に使っても怒られません。
…が、話しかけてしまった場合、同盟しないと殴りかかってきます。
反撃しなければ友好度は下がらないので、スケルトンベッドに寝て打たれ強さを上げるだけなら、2個しかベッドの無い虐待の塔より効率が良いかもしれません。
…ただ、一度殴られてからスケルトン盗賊の殴りフラグを下げる術が判らなかったので今の所「勢力影響を変化させない」縛りに則って、ベッドを借りる以外の事はやりませんが。

  • やってきましたクラブ村
町中にデカい蟹がうろついている寒村クラブ村。ココで欲しい物はカニズボンなのですが…
彼らは友好的でないと物を売ってくれません。
ちなみに、彼らと友好的になるには

1.近所に拠点を建ててクラブレイダーに発見される
2.クラブトーナメント(襲撃予告)を受ける
3.3回連続で襲撃を撃退する

というイベントをクリアする必要があります。

勢力影響度の変化もあるし、拠点も建てないのでイベントは却下。
「店から盗まない」縛りもあるので住民から奪います。
隠密を鍛えていないのでバレバレですが、目撃者ごと暗殺。流石にキャットロンを暗殺できる(レベル85以上)なら絶対に成功します。
クラブズボンはズボンで最大の武術デバフ-10の装備の中で最軽量の9kgとなります。
コレと防刃ジャケットの組み合わせは14kgとなる為、筋力1のキャラクターが着ても重量過多にならず、筋力が上がりません。

  • 次は大陸中央フラットラグーン
購入したのは放浪者の革ジャケット
マッドキャットロンに着せる為の近接防御ボーナス+5の装備です。
重量が4kgしかないので、筋力の無い序盤に持ち歩くのに便利…ですが、キャットロンでトレーニングをする際に筋力の高いキャラで行うと撲殺してしまう可能性があります。
この為、本当はダスターコートかロングコートが望ましいです。欲を言えばティンフィストが着ている傑作等級のダスターコートが入手できれば完璧ですが、とんでもなくリスキーです。

もう一つ購入、装甲付きボロスカート
名前の割に高性能な攻めの防具です。
武術+4のバフアイテムで、武術上げの序盤に着こみます。尚、熟練等級未満だと運動能力にデバフがかかりますが、フラットラグーンでは高品質までのようなので妥協しました。

  • スクインの北、ハイブ村
スケルトンでプレーしていると癒されるハイブ村です。購入するのは筋力を33%デバフする試作品等級のエコノミーアーム1対。
筋力が高すぎるアグヌ等を鍛える際に使う…予定。
実際にはそこまでやっていないのですけどね。

  • 次はブラックデザートシティ
どうせ腕を外すなら…という事でリフターアーム1対とスカウトレッグを買ったのですが…
正直勇み足だったかも、結構重いのですよね。
尚、武術バフで言うなら傑作KLRアームを買っても良いのですが、腕を外す際に上がってしまう打たれ強さを考えると、KLRアームに換装する意義は薄いのでやめました。

再びキャットロンと対峙

キャットロンには近接防御バフ、自分には武術バフを着込んでスタート。

その後、
装備込みの武術レベルが44になったら、ボロスカートをインベントリへ。
次に44になったら暗殺者の衣を脱ぎ、インベントリ内の装備を防刃ジャケットとカニズボンに交換。
更に44になったら防刃ジャケットを着こむ
更に44になったらカニズボンを着こむ

という手順で着替えていきました。
後に不思議に思ったのですが、合成レベルが45に満たなくても45レベルの技である浴びせ蹴りが出る事があります。
これはつまり、一度出すと技がアンロックされて、その後にデバフをかけても出ると思われるので、44を越さないように調整していきます。

技術革新
当初、以前行っていた、キャットロンの玉座を前後に動き、後ろに回った際だけ攻撃する方法をとっていたのですが…
キャットロンの玉座の左右のひじ掛けの後ろを往復するという方法を発見しました。
どちらを起点としても、初手でキャットロンに攻撃→こちらの攻撃を防がせる/当たる、もしくはキャットロンの攻撃モーションが見えたらもう一方の地点に移動します。
この方法だと両側から攻撃できるので、以前の方法の倍速で経験値が増えます。
又、各地点でクイックセーブしている場合、ロードすると必ずキャットロンの死角に入るので先制攻撃が確定します。
…鋭い方なら先制攻撃した後で、クイックセーブして再度ロードすれば一方的に攻撃できる事に気づくと思います。
いや、可能ではあり、理論上毎分キャットロンに攻撃を加える事が可能ですが、よっぽど高速なストレージに Kenshi をインストールしていないと相当時間がかかると思います。
自分は攻撃が成功した時のみ、クイックセーブするという方法で武術上げを行っていました。

で、結果
最初

1日経過

2日経過

ちなみに、ひじ掛けの後ろをうろつく方法はレベル50位の時に発見したのですが…
2日でレベル82はエグイです。最初からひじ掛け法を使っていたら84までは上がっていると思います。…というかレベル80を超える武術を持つキャラって初めて育てたのですが、2日でできるモンだったんですね。

尚、筋力、打たれ強さが1の場合、武術は82でも攻撃力が8しかありません。このため、訓練中キャットロンはほとんどダメージを受けず、2日間を生き延びています。
キャットロンに死なれるとインポートのやり直し等をしなくてはならないので稼ぎ辛いですしね。

…と言った所で、一旦今回の記事は閉めようかと思います。
いや、あと8人残ってるし、隠密や筋力等上げるパラメータは山ほどあるのですが、2日間鍛えるのにリアルタイムで6時間近くかかるので流石にしんどいのですよ。
インポートをしなくてもある程度利用できる方法かと思いますので誰かの役に立てたらと思います。