変奏現実

パソコンやMMORPGのことなどを思いつくまま・・・記載されている会社名・製品名・システム名などは、各社の商標、または登録商標です。

この画面は、簡易表示です

Windows11

[ストレージ]SSDとHDD

SSDの方が速いのは知っている。

SSDからHDDに100GBのデータを移行している時のスクリーンショットがコレ。

メモリの使用量が変わんないからメモリキャッシュを使わないでファイルを移動している様だ。

キャッシュ処理なんか無い方がプログラムは簡単に済むけど、HDDって磁気ヘッドの移動の手間がかかるので、とりあえずメモリをキャッシュ代わりに使って磁気ヘッドの移動中の待ち時間を少なく見せる努力はしたとは思うけど、OSがHDDに物理的にアクセスしているつもりでもHDDの大容量化で内側と外側のトラックでセクタ数が異なりHDDがOSからのヘッド、シリンダ、セクターのパラメータを適当な値に変換する様になったからOSからHDDのヘッドの状況が掴めそうもないから、やめちゃったのかもしれない。そのせいか、HDDへのファイルコピー操作をいくつも並行して流すと、さっぱり進まない。



[Windows]MSからのメール受信の登録・解除

MSからのお知らせメールの受信設定は、このリンクから登録・解除が可能。

Start サマリーは、このリンクから登録が可能。

解除は、上の画像下部のプロモーション コミュニケーション マネージャーのリンクから

メアドを入力するとURLが入ったメール(なぜか迷惑メールに分類された)が送られるので、

リンクをクリックできない場合は、リンク上で右クリックして【リンクをコピー】し、

ブラウザにURLを貼って開く。

そこのURLの画面で登録・解除が可能。

暫くすると構成が変わるんだろうなぁ。



[Win11]Windows Subystem for Linux

Microsoft StoreからWindows Subystem for Linuxをインスト。

インスト後の【開く】ボタンを押すと

Linux 用 Windows サブシステムにディストリビューションがインストールされていません。

'wsl.exe --list --online' を使用して利用可能なディストリビューション
を一覧表示し、'wsl.exe --install <Distro>' を使用してインストールします。

また、Microsoft Store にアクセスしてディストリビューションをインストールすることもできます:
https://aka.ms/wslstore
Error code: Wsl/Service/CreateInstance/GetDefaultDistro/WSL_E_DEFAULT_DISTRO_NOT_FOUND
続行するには何かキーを押してください...

wslだけでは何もできないので、何かLinuxをインストしないといけないらしい。現状を確認してみる。

Microsoft Windows [Version 10.0.22621.2283]
(c) Microsoft Corporation. All rights reserved.

C:\Users\[ユーザ名]>wsl --list --verbose
Linux 用 Windows サブシステムにディストリビューションがインストールされていません。

'wsl.exe --list --online' を使用して利用可能なディストリビューション
を一覧表示し、'wsl.exe --install <Distro>' を使用してインストールします。

また、Microsoft Store にアクセスしてディストリビューションをインストールすることもできます:
https://aka.ms/wslstore
Error code: Wsl/WSL_E_DEFAULT_DISTRO_NOT_FOUND

やはり何も入っていない。

このwslのバージョンを確認してみると

C:\Users\[ユーザ名]>wsl.exe --version
WSL バージョン: 1.2.5.0
カーネル バージョン: 5.15.90.1
WSLg バージョン: 1.0.51
MSRDC バージョン: 1.2.3770
Direct3D バージョン: 1.608.2-61064218
DXCore バージョン: 10.0.25131.1002-220531-1700.rs-onecore-base2-hyp
Windows バージョン: 10.0.22621.2283

WSLのバージョンは古いままらしい。

wslのver2の入手方法は不明。

とりあえず何がインストできるんだろう?

Microsoft Windows [Version 10.0.22621.2283]
(c) Microsoft Corporation. All rights reserved.

C:\Users\[ユーザ名]>wsl.exe --list --online
インストールできる有効なディストリビューションの一覧を次に示します。
'wsl.exe --install <Distro>' を使用してインストールします。

NAME                                   FRIENDLY NAME
Ubuntu                                 Ubuntu
Debian                                 Debian GNU/Linux
kali-linux                             Kali Linux Rolling
Ubuntu-18.04                           Ubuntu 18.04 LTS
Ubuntu-20.04                           Ubuntu 20.04 LTS
Ubuntu-22.04                           Ubuntu 22.04 LTS
OracleLinux_7_9                        Oracle Linux 7.9
OracleLinux_8_7                        Oracle Linux 8.7
OracleLinux_9_1                        Oracle Linux 9.1
openSUSE-Leap-15.5                     openSUSE Leap 15.5
SUSE-Linux-Enterprise-Server-15-SP4    SUSE Linux Enterprise Server 15 SP4
SUSE-Linux-Enterprise-15-SP5           SUSE Linux Enterprise 15 SP5
openSUSE-Tumbleweed                    openSUSE Tumbleweed

C:\Users\[ユーザ名]>wsl.exe --install Ubuntu-22.04
インストール中: Ubuntu 22.04 LTS
Ubuntu 22.04 LTS がインストールされました。
Ubuntu 22.04 LTS を起動しています...
Installing, this may take a few minutes...
Please create a default UNIX user account. The username does not need to match your Windows username.
For more information visit: https://aka.ms/wslusers
Enter new UNIX username: admin ※試しに既存のユーザ名を入力してみると・・・
adduser: The group `admin' already exists. ※ちゃんと弾かれた
Enter new UNIX username: [Linux用のユーザ名]
New password:
Retype new password:
passwd: password updated successfully
Installation successful!
To run a command as administrator (user "root"), use "sudo <command>".
See "man sudo_root" for details.

Welcome to Ubuntu 22.04.2 LTS (GNU/Linux 5.15.90.1-microsoft-standard-WSL2 x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/advantage


This message is shown once a day. To disable it please create the
/home/[Linux用のユーザ名]/.hushlogin file.
[Linux用のユーザ名]@[PC名]:~$

無難なUbuntu-22.04をインストしてみた。

これで使えるらしい。

一応、Windowsで再ログインするとエクスプローラからUbubtuのリンクが貼られているのでファイル操作は可能。

また、windowsのコマンドラインからwslを実行すると、

Microsoft Windows [Version 10.0.22621.2283]
(c) Microsoft Corporation. All rights reserved.

C:\Users\slani>wsl
root@[PC名]:/mnt/c/Users/[ユーザ名]# pwd
/mnt/c/Users/[ユーザ名]
root@[PC名]:/mnt/c/Users/[ユーザ名]#

と出るので、/mnt/[windowsのドライブ名]/・・・な感じでwindowsのファイルへもアクセスできそう。

ただ、ネットワークをいじるのはマズイらしいから、外部からの参照は不可っぽい。

複数のディストリビューションも併用できるっぽいのでOracleLinux_9_1もインストしてみた。

C:\Users\[ユーザ名]>wsl --list --verbose
  NAME               STATE           VERSION
* Ubuntu-22.04       Stopped         2
  OracleLinux_9_1    Stopped         2

ちなみにエクスプローラのリンクもOS毎に分かれていたので安心。

コマントラインでwslを起動すると、*の付いたUbuntu-22.04が実行される。

C:\Users\[ユーザ名]>wsl
root@[PC名]:/mnt/c/Users/[ユーザ名]#
C:\Users\[ユーザ名]>wsl --list --verbose
  NAME               STATE           VERSION
* Ubuntu-22.04       Running         2
  OracleLinux_9_1    Stopped         2

ディストリビューションを指定すればドレでも起動もできる。

C:\Users\[ユーザ名]>wsl -d OracleLinux_9_1
[root@[PC名] [ユーザ名]]#
C:\Users\[ユーザ名]>wsl --list --verbose
  NAME               STATE           VERSION
* Ubuntu-22.04       Stopped         2
  OracleLinux_9_1    Running         2

試しにプレリリースをインストしてみると

C:\Users\[ユーザ名]>wsl --update --pre-release
更新プログラムを確認しています。
Linux 用 Windows サブシステムをバージョンに更新しています: 2.0.0。
^C
C:\Users\[ユーザ名]>wsl --version
WSL バージョン: 1.2.5.0
カーネル バージョン: 5.15.90.1
WSLg バージョン: 1.0.51
MSRDC バージョン: 1.2.3770
Direct3D バージョン: 1.608.2-61064218
DXCore バージョン: 10.0.25131.1002-220531-1700.rs-onecore-base2-hyp
Windows バージョン: 10.0.22621.2283

変わらない。(謎

一旦、コマンドプロンプトを閉じて、開き直なおして再確認。

Microsoft Windows [Version 10.0.22621.2283]
(c) Microsoft Corporation. All rights reserved.

C:\Users\[ユーザ名]>wsl --version
WSL バージョン: 2.0.0.0
カーネル バージョン: 5.15.123.1-1
WSLg バージョン: 1.0.57
MSRDC バージョン: 1.2.4485
Direct3D バージョン: 1.608.2-61064218
DXCore バージョン: 10.0.25880.1000-230602-1350.main
Windows バージョン: 10.0.22621.2283

無事にver2になってた。

後、wslで起動した場合、コマンドプロンプトを閉じても終了しないので、ちゃんとshutdownしないといけないらしい。

Microsoft Windows [Version 10.0.22621.2283]
(c) Microsoft Corporation. All rights reserved.

C:\Users\[ユーザ名]>wsl --shutdown



[Win11]ストレージのクリーンアップ

Windows10ではディスクのプロパティのツールから一時ファイル等を「クリーンアップ」する事ができたが、今のWindows11の同じ画面には「クリーンアップ」ボタンは無い。

「設定」から「ストレージ」画面に「クリーンアップ対象候補」と云うのがあるが、大抵はずーっと処理中のままだ。

なので「ストレージセンサー」画面に進み、【今すぐストレージセンサーを実行する】ボタンを押すしかない様だ。

尚、実行する前に画面のチェックボックスの選択状態をよく確認してから実行しないと、「アプリファイル」が消えたり「ダウンロードフォルダ」が空っぽになって困るかもしれない。

処理が終わると「クリーンアップ対象候補」で一時ファイル等が選択できるようになる。

ここまでの操作で、「設定」から「システム」⇒「ストレージ」⇒「一時ファイル」の画面がWindows10の「クリーンアップ」と同じような画面になるので、要らないモノを選択して「クリーンアップ」できるようになる。

Androidのgoogleもそうだけど、OSの製作者はストレージを汚箱にしたい様だ。

もしくは、掃除はロボットの仕事と思っているのだろう。



[C#]warning CS8602: null 参照の可能性があるものの逆参照です。

よく判らない警告が出る。

JsonArray arr = jsonNode.AsArray();
string[] paramArray = new string[arr.Count];
ArrayList list = new ArrayList();
for (int i = 0; i < arr.Count; i++)
{
    list.Add(arr[i].ToString()); ※「warning CS8602: null 参照の可能性があるものの逆参照です。」が発生する。
}
return paramArray;

正解は、

JsonArray arr = jsonNode.AsArray();
string[] paramArray = new string[arr.Count];
ArrayList list = new ArrayList();
for (int i = 0; i < arr.Count; i++)
{
    var ji = arr[i];
    list.Add((ji != null)?ji.ToString():"");
}
return paramArray;

arr[i] は何の型かは不定だから、var宣言の変数に格納するしか手段はない。

そう明示的に書けば、CS8602も大人しくなる。

が・・・

普通の型の配列子にはしつこい。

関数(... string?[]? paramArray) {
・・・
object?[] param = new object?[] { null, null, null, null};
if (paramArray != null)
{
    param[0] = paramArray[0].Replace("%EXEPATH%", Resource.GetExePath());
}
t.InvokeMember(methodName,
    BindingFlags.InvokeMethod,
    null,
    obj,
    param);

は、

関数(... string?[]? paramArray) {
・・・
object?[] param = new object?[] { null, null, null, null};
if (paramArray != null)
{
    var p0 = paramArray[0];
    if (p0 != null)
    {
        p0 = p0.Replace("%EXEPATH%", Resource.GetExePath());
    }
    param[0] = p0;
}
t.InvokeMember(methodName,
    BindingFlags.InvokeMethod,
    null,
    obj,
    param);


[Hyper-V]The unsigned image’s hash is not allowed

Hyper-Vで第2世代を選択するとUEFIが使えるし、Hyper-VマネージャからのシャットダウンもOK

LinuxのVMを作成して起動すると

暫くまたされた後にUEFIで

The unsigned image’s hash is not allowed

と出て起動に失敗する。

要はセキュアブートの初期設定がWindow用だったダケだった。

セキュアブートを変更

とすると、無事起動できた。

VMを作る時に設定できれば困らないのに・・・



【Win11】NASのiSCSIグループに割り当てたドライブが表示されない

PCを起動すると、NASのiSCSIのグループに割り当てたドライブが表示されない時がままある。

iSCSIイニシエータを見ると

再接続中。つまり繋がっていない。

ここで早まって【切断】し、IPアドレスを入力して【ENTER】キーを押すと、

「クイック接続」になってしまい

PCを再起動すると、今は「再接続中」になる。

この「システムの再起動後ターゲットは利用できなくなります。」の意味は、

・【切断】に失敗する

・再「クイック接続」できない ※できる場合もあるかもしれない。

くらいに「ターゲットは(一切)利用できなくなります。」と云う意味だ。

仕方が無いので、

「探索」「お気に入り」のタグからNASのIPアドレスを覚えている箇所を削除し、

再起動時にNASのことをすっかり忘れてもらった隙に

IPアドレスを入力し今度は【ENTER】キーには一切触れず【接続】ボタンを押さなければいけない。

※うっかり【ENTER】キーを押してしまった場合は、「探索」「お気に入り」タグから削除しなおして再起動。

無事「ターゲットの接続」画面が表示されれば【OK】を押すと、

PC起動時にNASのiSCSIグループにに再ログインしてくれるようだ。

しかし、これで暫く繋がっていたハズなんだが・・・

根本的な対策にはならないんだよね。



[Windows11]ブラックアウト

例のゲーム画面が真っ暗になる中国ブラゲーのPC版を遊んでいるうちに

ふと気が付くと、デスクトップのショートカットが全て消えていた。

観えるのは初期設定のままの壁紙だけ。

画面の下ではアプリ、通知、時計その他一切のアイコンが空っぽになったタスクバーが点滅していた。

サインアウト。

ログイン。

壁紙そして空っぽのタクスバーが点滅。

何も変化なし。

ALT+CTRL+DELキー操作でタスクモニタを起動すると

Expolore.exeが出たり消えたりしてうっとおしい。

スクロールしていくとその下に大量の通信(VHOST)の形跡が続く。

グラフに切り替え、動きを眺めると通信だけがいつまでも繰り返されている。

ログイン直後にタスクバーから通知か何かを表示するために通信している最中にExplore.exeがクラッシュ&リブートしている様な感じ。

どうやら、またログイン直後のトラブルにしハマった様だ。

シャットダウン。

ログインすると画面は隅から隅まで真っ暗になった。

使えるのはマウスとALT+CTRL+DELのキー操作だけ。

再起動前は壁紙が映っていたがVRAMに残っていた残骸だったのかもしれない。

空っぽのタスクバーすらもVRAMに残っていた残骸だったのかもしれない。

とりあえずタスクバーであるexplore.exeが何か表示しようとしたらクラッシュ。

タクスマネージャーが何も考えず消えたexplore.exeを起動しなおしている。

そういうことだ。

もう一度再起動しログインしても画面は真っ暗。

(と、ここまで書いたらWindowsUpdateが勝手に再起動した。

こうならないようになっているハズなんだが・・・

まだ不調なのかな?)

USBの回復ドライブを挿して起動するもSSDから起動してしまう。

再起動。

DELキーを押し続けUEFIに切り替える。

ブート画面からUSBメモリを指定して起動。

ログイン。

すると、普段どおりに戻った。

WindowsUpdateを行うと

  • (KB5010414)
  • (KB5010474)と.Net4.8

の更新が入った。

KB5010474は、4.8 で導入された IRawElementProviderSimple オブジェクトのリーク.NET Frameworkします。だそうだ。

注記には

NET ライブラリ– TLS 1.3 のネゴシエート時にクライアント証明書が使用されている場合に Ssl ネゴシエーションが無期限にハングする可能性がある問題に対応します。 変更の再ネゴシエーション (PostHandshakeAuthentiction) が失敗する前に、SslStream または HttpWebRequest でタイムアウトが観察されます。

と書いてあった。

まさにそんな感じになっていた。

多分、治ったんだろう。

とは云え気になるので回復ドライブを更新しようとしたら16GB以上を要求された。

(前もそうだったのかな?)

で、作成中にさっきの強制再起動。

もう一回作り直し。

16GB以上推奨だからUSB2タイプのメモリではコピー時間が長すぎる。

USB2の転送レートは480Mbpsだから、理論値でも

16[GB] * (480[Mbps]/1000[G/M]/10(bit/byte))≒333秒≒6分

ファイルがいっぱいあれば、ファイルを管理する情報の書き換えもいっぱい発生するので1時間ぐらいかかりそうだ。

本当に1時間ほどかかってしまった後・・・

8GBしか使ってないw

山ほどファイルがあったのかな?

ファイルの総数:
             226 個のファイル       7,845,198,033 バイト
             271 個のディレクトリ  25,963,888,640 バイトの空き領域

ファイル数もそんなに多くない。

USBメモリが熱ダレ(過熱防止)してたのか?

イミフに長~く待たされてる間に

F8でセーフティモードで起動する設定は無効になってた様なので有効にしておいた。

> bcdedit  /set {default} bootmenupolicy legacy

戻す時は最後のlegacyをstandardに差し替える。

例のゲームのタチの悪さが増した様な気がするなぁ。



[Windows11] ペイントの場所

WinSCPで画像をイジろうとしたらmspaint.exeが行方不明になっていた。

Windows10までは、

C:\Windows\System32\mspaint.exe

だったハズだけど、Windows11になったら、見当たらない。

以前はアイコンを右クリック&プロパティでインストール先が判ったけど、

Windows11では徹底的にその辺は隠蔽する方針らしく無理なので、コマンドラインからwhereコマンドでファイル検索してみる。

C:\>where /R C:\ mspaint.exe
C:\Users\${ユーザ名}\AppData\Local\Microsoft\WindowsApps\mspaint.exe
C:\Users\${ユーザ名}\AppData\Local\Microsoft\WindowsApps\Microsoft.Paint_*************\mspaint.exe
C:\Windows\servicing\LCU\Package_for_RollupFix~****************~*****~~*****.***.*.*\amd64_microsoft-windows-mspaint_****************_**.*.*****.**_none_****************\*\mspaint.exe

といくつか候補が出てきたけど、最初のものが短くてよさそう。他は乱数っぽい文字列が沢山付いてて流用が難しそう。

C:\Users\${ユーザ名}\AppData\Localは、SETコマンドで見つけた環境変数LOCALAPPDATAで代替すれば

%LOCALAPPDATA%\Microsoft\WindowsApps\mspaint.exe

になる。

コマンドラインからmspaint.exeダケでも実行できるから、

%LOCALAPPDATA%\Microsoft\WindowsApps

がパスに追加されてるのかな?

C:\WINDOWS\system32
C:\WINDOWS
C:\WINDOWS\System32\Wbem
C:\WINDOWS\System32\WindowsPowerShell\v1.0\
C:\WINDOWS\System32\OpenSSH\
C:\Program Files (x86)\NVIDIA Corporation\PhysX\Common
C:\Program Files\NVIDIA Corporation\NVIDIA NvDLISR
C:\Program Files\Git\cmd
C:\Program Files\dotnet\
C:\PROGRA~1\JPKI
C:\Program Files (x86)\dotnet\
C:\WINDOWS\system32
C:\WINDOWS
C:\WINDOWS\System32\Wbem
C:\WINDOWS\System32\WindowsPowerShell\v1.0\
C:\WINDOWS\System32\OpenSSH\
C:\Program Files\nodejs\
C:\Users\${ユーザ名}\AppData\Local\Microsoft\WindowsApps
C:\Users\${ユーザ名}\AppData\Local\Programs\Microsoft VS Code\bin
C:\Users\${ユーザ名}\AppData\Roaming\npm
C:\Users\${ユーザ名}\.dotnet\tools

色々インストしたから色々とパスに追加され過ぎな気がする。

WinSCPの環境設定のエディタに追加してあったMspaintの外部エディタの設定を

"%LOCALAPPDATA%\Microsoft\WindowsApps\mspaint.exe" !.!

に変えてみると、

また画像を直接編集できるようになった。

しかし大型アップデートが来たら、また編集できなくなるかもしれない。

あれ?WordPressで文字単位で色が変えられない!

と思ったら「A テキスト色」が「A ハイライト」に変わったダケだった。

背景色もつけられるから便利だけど、文字の下に色指定のパレットが出てくるのでパレットが切れ気味。




top