4790KのPCでWindows11する。

現在のメインPCはCore i9-9900Kなので、すでにWindows11にアップグレード済なのですが、以前使っていた2台のPCはどちらもCore i7-4790Kで、Windows11の対象外になってしまっています。

2015年に購入したものですが、4790Kは今でも十分に使える能力は持っているので、このまま置いておくのはもったいない。ということでなんとかWindows11にできないかとやってみました。

まず、マイクロソフトのWindows 11をインストールする方法のページを参考にレジストリを追加します。こちら(マイナビニュース)にも同様の記事があります。
reg add HKLM\SYSTEM\Setup\MoSetup /v AllowUpgradesWithUnsupportedTPMOrCPU /t REG_DWORD /d 1 /f
を管理者用コマンドプロンプトで実行します。これでCPUがサポート外でもアップグレードが可能になります。

ところが、使用しているマザーボードがAsrock Z97 Extreme 4で、これはTPM2.0に対応していません。これだけだとWindows11セットアップではねられてしまいます。

CPUのほうはこれでスキップできましたが、どうにもTPM2.0のところで引っかかってしまい、先に進みませんでした。

そこで、こうなったらTPM2.0モジュールを購入しようと決心し、ダメでもともと、一番安そうなところを探してみました。Asrockが出しているTPMモジュールが購入できればよいのですが、これがなんと1万円以上しているのです。そもそも出荷数が少ないのか、それともWin11特需でなくなっているのかはわかりませんが、そこまでお金は出せません。このページによれば、Nuvoton NPCT650またはInfineon SLB9665なら使えそうです。

Amazonで購入したのはこちら。Extreme 4のマニュアルを見ればわかる通り、TPMモジュール用ヘッダは18ピンで13ピンが抜けているタイプです。AmazonのページにはType AからType Iまで9種類がありますが、Type Cが当てはまります。もちろん信号名なども照らし合わせて確認しています。注文すると品物は上海から発送されましたが、2週間ほどで手元に届きました。ちなみにチップはInfineon SLB9665TT20です。
ということで早速PCにセットして、起動してみたのですが…。
BIOSのUEFIでIntel Platform Trust Technologyの項目が出てきません。

これもよく調べてみるとBIOSで対応していないようで、最新の2.60でもダメでした。ところが下の方にベータBIOSがあり、そこにある2.60Aで「Support TPM 2.0」とあります。ということで早速Instant FlashでBIOSをアップデートし、TPMモジュールを接続してみました。

…が、それでも出てきません。Win+Rキーで「tpm.msc」と入力してTPMの管理パネルを開いても、モジュールが見つからないというメッセージです。

ここでデバイスマネージャーを見ると不明なデバイスが増えていて、よくよく見てみるとこれはTPMモジュールではなくIntel Smart Connect Technologyデバイスでした。これをBIOSでDisableしてやると、UEFIのAdvancedタブのところにIntel Platform Trust Technology関係の項目が増えていました。

その状態でWindows10を起動し、「tpm.msc」を開いてみると…。
認識されました。これなら勝つる!
ちなみにMBRからGPTへの変更はWindows 11のための準備を整える。の手順ですでに終わっています。
そのままWindows 11のセットアッププログラムを実行してみると…。
おお!
どっこいしょ!
そらきた!
ということで、ずんずん進み、最終的にインストールは完了しました。
CPUはCore i7-4790Kで、OSはWindows 11 Proです。

FFmpeg 5.0をコンパイルしてみる。

ビデオファイルをいじったりエンコードしたり加工したりするのに必須なffmpegの5.0がリリースされたので、コンパイルしてみました。

記事はこちら。「FFmpeg 5.0」が公開 ~大規模なAPIの変更を実施した長期サポート(LTS)リリース

環境はWSL2上にインストールされたArchLinuxを使います。別にUbuntuとか他のディストロでも問題ないと思いますが、うちはArchしかないので…。

まず、ffmpeg-windows-build-helperをcloneします。

$ git clone https://github.com/rdp/ffmpeg-windows-build-helpers

そしたらそのディレクトリに移動します。

$ cd ffmpeg-windows-build-helpers

指定オプションの意味は、

$ ./cross_compile_ffmpeg.sh -h

すれば出てきます。英語のみですけど。

でもってビルドします。

$ ./cross_compile_ffmpeg.sh --build-ffmpeg-shared=y --ffmpeg-git-checkout-version=n5.0 --fdk-aac-git-checkout-version=v2.0.2 --gcc-cpu-count=8 --disable-nonfree=n --build-intel-qsv=y --build-lsw=y --compiler-flavors=win64

すると怒られます。

    windows WSL detected: you must first disable 'binfmt' by running this
        sudo bash -c 'echo 0 > /proc/sys/fs/binfmt_misc/WSLInterop'
        then try again

言われたとおりにします。

$ sudo bash -c 'echo 0 > /proc/sys/fs/binfmt_misc/WSLInterop'

再度ビルドします。

$ ./cross_compile_ffmpeg.sh --build-ffmpeg-shared=y --ffmpeg-git-checkout-version=n5.0 --fdk-aac-git-checkout-version=v2.0.2 --gcc-cpu-count=8 --disable-nonfree=n --build-intel-qsv=y --build-lsw=y --compiler-flavors=win64

しばらく待ちます。
また怒られます。
仕方ないので、cross_compile_ffmpeg.shを編集し、

    config_options+=--enable-libsvthevc

をコメントアウトして、--enable-libbluray --enable-fontconfig --enable-libfreetypeを削除します。たぶんこれは字幕に必要だからだと思いますが、うちでは不要なので問題なしです。
再度ビルドします。
また怒られました・・・QSV関係なので、これはコマンドラインオプションから--build-intel-qsv=yを削除します。

再度ビルドします。

すると、

  Done! You will find 64-bit shared non-redistributable binaries in
  /home/kats/work/ffmpeg-windows-build-helpers/sandbox/win64/ffmpeg_git_with_fdk_aac_n5.0_shared/bin
  

なので、次のようにしてアーカイブし、mntしてるWindowsのフォルダに放り込みます。

  $ cd /home/kats/work/ffmpeg-windows-build-helpers/sandbox/win64/ffmpeg_git_with_fdk_aac_n5.0_shared
  $ 7z a ffmpeg_with_fdk_aac_n5.0_share.7z bin doc include lib presets LICENSE.md README.md
  $ cp ffmpeg_with_fdk_aac_n5.0_share.7z /mnt/c/Users/kats/work
  

でもって、パスの通ったところに展開すれば完了です。

Vimの補完プラグインをインストール。その4

Vimの補完プラグインをインストール。その3 で、 ddc-tabnine が使えそうです、などと書いたのですが、早速やってみました。 まず、tabnineのバイナリを用意しないといけません。がどうにもTabNineのサイトがわかりにくいので、 tabnine-nvim にあるダ...