[Windows] MBR パーティションの SSD を GPT へコピーする

突然だが、超久々に自作 PC を組んだ。
前回は Windows 7 登場の 2009年に、 第1世代 Core i5 750 で組んだ時なので、約14年ぶりとなる。

ハードは一度、中古でもらった 第3世代 Core i7 3770 に置換えているのだが、その際もストレージや Windows 7 Pro のライセンスはそのまま流用していてる。
その後も、ストレージをクローンしたり「初期状態に戻す」で再インストールしながら、脈々と使い続けているものとなる。

このため今回も、 旧PCに入っている SATA SSD に入っている Windows 10 を、新PC の NVMe SSD にコピーして、その状態で起動させてから(ライセンスにハード構成覚えさせてから)、 Windows 11 に上げようと考えた。

ところが、 NVMe SSD で起動するのに結構苦戦したので、その解決策のメモ。

とりあえず最初に試したこと

Ventoy をインストールしたブータブル USB メモリに GParted live を入れ、 GParted を使い、

  • 新NVMe SSD をパーティションテーブル GPT で初期化
  • 旧SATA SSD から 新NVMe SSD へ雑にパーティションをコピー

を行った。

この状態で試したところ、 ブルースクリーンすら表示されず、 UEFI から何もブートできない。
USB メモリ内の Windows ISO からブートして、回復コンソールからスタートアップ修復などを試しても駄目だった。

根本的な原因

続きを読む

CertReq で作成した CSR の文字化けを回避する

Windows Server の certreq.exe を使って、 https 等を目的に サーバー証明書署名要求 (CSR) を作成した際に、 その CSR や署名後の CER で、 サブジェクト字が文字化けしてしまう場合がある。

 

この問題は、 certreq.exe にて、テキストファイル (.inf ファイル) から CSR を作成した場合に発生する。

そしてこれは、 .inf ファイルを BOM付き UTF-16 LE で保存すれば解決する。
(BOM付き/BOMなし の UTF-8 には対応していない)


Windows のメモ帳であれば、 文字コードを Unicode に設定すれば、 OK だ。

対処法は単純だが、原因が少しややこしかったので、少し深堀りしてみる。

CSR が文字化けする要因

続きを読む

PowerShell でインストール済プログラム一覧を取得する

PowerShell を Windows の管理ツールとしてみたときに、割と昔から意味がわからないと思っていることが 1点 ある。
Windows のインストール済みプログラム一覧を取得するコマンドがないことだ。

もう少し具体的に言うと、appwiz.cpl で開ける、コントロールパネルのプログラムと機能の一覧や、 設定の「アプリと機能」の一覧を取得するコマンドレットがない。
コマンドレットがないだけじゃなく、コードを書いて取得する確立して手段すら存在しないのだ。

とりあえず、それに近い情報がとれる代替方法として、レジストリのアンインストーラー一覧を取得する方法が知られている。
ただ、ググってもあまり PowerShell らしい綺麗 (?) なコードで書かれているサンプルが少なかったので、ワンライナーで書いてみる。

Get-ChildItem -LiteralPath (('HKLM:', 'HKCU:' | %{ "${_}\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall" }) + 'HKLM:\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall') | Get-ItemProperty -Name DisplayName, DisplayVersion, Publisher, InstallDate -ErrorAction Ignore;

これで取得した内容を | Sort-Object DisplayName, DisplayVersion| Select-Object DisplayName, DisplayVersion などにパイプしてから使うと良いだろう。


ちなみに WMI の Win32_Product クラスを使って取得する方法 (Get-CimInstance -ClassName Win32_Product) は、

  • MSI でインストールしたアプリしか取得できない
  • コンピューターはMSIがインストールされているすべてのアプリケーションを再検証するので、負荷がかかるし遅い

と言うことから使うべきではないとされている。

Proxy 下で vscode の WSL 上の他の拡張機能のインストールに失敗する

プロキシ環境下の vscode で、 WSL 上で拡張機能を動かしたいのに、 インストールインストールに失敗する問題を解決するメモ。

前回の↓の記事は、 『Remote – WSL 拡張が有効にできない』問題だったが、今回は『Remote – WSL 拡張 を有効にした後、その環境上で他の拡張機能がインストールできない』問題なのでちょっと違う点に注意。ややこしいね。

遭遇した問題

Visual Sutdio Code (以下、 vscode) へ 無事に Remote – WSL 拡張機能 の "VS Code Server for WSL" のインストールが完了し、 Windows 上から 快適に WSL の環境にアクセスできるようになった。
しかし、 いくつかの vscode の拡張機能は、 Windows 上の環境とは別に WSL 上の環境で改めてインストールしなくてはならない。

そこで、 UI 上の案内に従って各拡張機能で "Install in WSL" を行ったところ、 プロキシ環境下だと以下のエラーが発生してインストールに失敗する問題に遭遇した。

Failed to install extension

パネル上の OUTPUT タブで "Log (Remote Server)" の情報を見ると、以下のようなエラーが発生しているのがわかる。

[remoteagent] [error] Failed to install extension: {拡張機能ID} connect ECONNREFUSED 13.107.6.175:443

settings.json ではプロキシの設定しているし、更には WSL 上の環境変数 (http_proxy, https_proxy) にだってプロキシを入れている。
更には(前述の)前回の記事に倣って、 WSL のコンソール上から code . の立ち上げまで行ってみた。

それでも解消しない。何故だ。

なお、試した vscode のバージョンは、 August 2019 (version 1.38.1) だ。

"Remote [WSL]" 用の設定ファイルを書き換える

続きを読む

Proxy 下で vscode の WSL 拡張へ接続できない

Windows 上の Visual Studio Code (以下、 vscode) で、WSL 上のファイルやシェルを使えるようになる、 Remote - WSL 拡張機能。

これを、プロキシ環境下でインストールしたり更新したりすると、 vscode から WSL 環境ににアクセスするときに、

VS Code Server for WSL closed unexpectedly.
Check WSL terminal for mor details.

とエラーになってしまう。

WSL ターミナルのログを見てみると、だいたい以下のようになっていて、どうやら update.code.visualstudio.com から VS Code Server の更新版のファイルをダウンロードするのに失敗しているように見える。

Starting VS Code Server inside WSL (default distro)
Extension version: 0.39.5, Windows build: 17763. Multi distro support: disabled. WSL path support: enabled
Probing if server is already installed: C:\WINDOWS\System32\wsl.exe  -e sh -c "[ -d ~/.vscode-server/bin/3db7e09f3b61f915d03bbfa58e258d6eee843f35 ] && echo found || echo missing"
No server install found on WSL, downloading server on client side: C:\Users\user\AppData\Local\Temp\vscode-remote-wsl\3db7e09f3b61f915d03bbfa58e258d6eee843f35\vscode-server-linux-x64.tar.gz
Unable to detect if server is already installed: Error: connect ECONNREFUSED 104.42.78.153:443
Launching C:\WINDOWS\System32\wsl.exe sh -c '"$VSCODE_WSL_EXT_LOCATION/scripts/wslServer.sh" 3db7e09f3b61f915d03bbfa58e258d6eee843f35 stable .vscode-server 0  --disable-telemetry' in c:\Users\user\.vscode\extensions\ms-vscode-remote.remote-wsl-0.39.5
WSL version: 4.4.0-17763-Microsoft 
Updating server...
Updating VS Code Server to version 3db7e09f3b61f915d03bbfa58e258d6eee843f35
Removing previous installation...
Downloading:     
Failed
--2019-09-11 20:50:12--  https://update.code.visualstudio.com/commit:3db7e09f3b61f915d03bbfa58e258d6eee843f35/server-linux-x64/stable
Resolving update.code.visualstudio.com (update.code.visualstudio.com)... 104.42.78.153
Connecting to update.code.visualstudio.com (update.code.visualstudio.com)|104.42.78.153|:443... 
failed: Connection refused.
ERROR: Failed to download https://update.code.visualstudio.com/commit:3db7e09f3b61f915d03bbfa58e258d6eee843f35/server-linux-x64/stable to ~/.vscode-server/bin/3db7e09f3b61f915d03bbfa58e258d6eee843f35-xxxxxxxxxx.tar.gz
VS Code Server for WSL closed unexpectedly.
For help with startup problems, go to
https://code.visualstudio.com/docs/remote/troubleshooting#_wsl-tips

どう解決したものか。


そもそも wget でダウンロードができる状態なのか

続きを読む

ideapad Miix720 Core i7 16GB ~2018年のベストバイ~

01/15 追記: 価格.com のページは残っているが Lenovo の直販ページへのリンクが切れていて、どうも Lenovo 直販モデルの扱いがなくなってしまっているようだ…
販売代理店モデルはまだあるようなのだが、そちらはメインメモリサイズが 8GB にとどまってしまっている。
CES 2019 で後継モデルが発表されたのかと思いきや、そんなことは全くなく、リーズナブルな Surface ライクのサイズ&性能のモデルがなくなってしまったのが残念でならない…

唐突だが、 2018 年のベストバイだった Lenovo の 2-in-1 タブレット, Miix 720 の Core i7 16GB モデル をレビューしたいと思う。
(2018年中の記事0は悲しいからね)

のっけから話の腰骨を折るが、 このモデルの発売日は 2017年 の夏ごろで、 2018年 に発売されたものではない。
にもかかわらず挙げているのは、 2019年も迫る現在でもこの端末に相当する良機が見つからないからだ。


購入経緯

まず、私はこれまで Surface Pro 2 (Core i5, 256GB SSD, 8GB Memory) を使っていた。
2013年当時は、 ペン同梱の本体と Type Cover をセットにしても14万円くらい購入ができた。
かれこれもうまる5年使っているので、 バッテリーがヘタヘタだし、 少しの衝撃で勝手に再起動されるようになってしまったので、 これの代替になるマシンが欲しかったのだ。

そこで、 2018年 にこれから数年使うために求めたのが以下の通り。

  • 筆圧対応ペン付きタッチパネル搭載 ラップトップ または 2-in-1
  • メモリは 人権 最低 8GB, できれば 16GB
  • ストレージは 256GB 以上
  • モニターは WUXGA 以上
  • SD または micro SD カードスロット

これを、 Surface Pro 5 や 6 で揃えようとすると、
8GB メモリですら 16万円、 16GB メモリにこだわると 27万円 などというとても手が出さない値段になってしまう。

ところが、この Miix720 であれば実質 12万円 ですべてがそろってしまうのだ。


Surface Pro 2 と比べると、ふた回りでかいが、携帯性は高いので全然問題ない。


主な仕様と特徴

主な仕様は以下の通り。

続きを読む

Pandoc の Portable Windows バージョンを作る

Pandoc は、 HTML や、 Markdown, Textile, LaTeX などはじめとした、豊富な各種マークアップ形式を、別の形式に変換できるコマンドラインツールだ。

例えば、 textile → markdown 変換 とか、 HTML → markdown 逆変換 といったようなことができる。

何ができるかは、 Pandoc ユーザーズガイド あたりを参照してほしい。

さて、 この Pandoc の Windows 版は msi のインストーラ形式でしか配布されていない。

このインストーラでインストールすると、 ユーザディレクトリの %LOCALAPPDATA%\Pandoc\ (もしくは %ProgramFiles(x86)%\Pandoc\) に実行ファイルを展開して、 PATH を通してくる。
どうやら、システムディレクトリにファイルを置いたりしないようなので、 正直これだけのためにインストーラを実行して、 PATH や レジストリを汚すようなことをしたくない。

ということで、 msi インストーラから、 インストールをせずに実行ファイルだけ取り出して、 Portable 版を作成してみよう。

続きを読む

ZoneId を PowerShell を使って一括削除 [v3 以上]

Windows では、リモートからダウンロードしたファイルに、 "ZoneId" という物が付加される。
このID が付加されたファイルは、 exe として 実行する際にセキュリティ警告が表示されたり、 .NET アセンブリ dll として PowerShell に読み込む際に、

Add-Type : ファイルまたはアセンブリ 'file:///*.dll'、またはその依存関係の 1 つが読み込めませんでした。操作はサポートされません。 (HRESULT からの例外: 0x80131515)
発生場所 行:1 文字:1
+ Add-Type -Path 'C:\*.dll'
+ ~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : NotSpecified: (:) [Add-Type], FileLoadException
    + FullyQualifiedErrorId : System.IO.FileLoadException,Microsoft.PowerShell.Commands.AddTypeCommand

などとエラーになってしまう。
160925_1

ファイルが一つだけなのであれば、ファイルのプロパティから『ブロックの解除』をチェックすれば、簡単に ZoneId を削除することができる。
160925_2
しかし、複数個のファイルの ZoneId を一回の操作で同じように削除することができないため、 ZoneId を削除したいファイルが大量にある場合はなかなかウザい。

PowerShell v3 以上を使えば、この ZoneId 削除をいとも簡単に行うことができるので、紹介しよう。

続きを読む

Python の類似画像ライブラリ ImageHash を Windows で使う

sha1 や md5 等で知られるファイルハッシュは、ファイルの1ビットでも異なると、全く別のダイジェスト値を返すように作られている。

一方で、 画像の情報をハッシュ化する際に、 画像の大きさや微妙な違いには目を瞑って同じような画像は同じダイジェスト値、似たような画像は似たようなダイジェスト値を得たい場合もある。
例えば、大きさの違う画像や、 jpeg, png の形式が異なる画像を 同じ画像として扱うようにしたい場合だ。

そのようなハッシュ関数はいくつか知られている。

  • average hashing (aHash)
  • perception hashing (pHash)
  • difference hashing (dHash)
  • wavelet hashing (wHash)

そのうち、上記の 4つ の計算を行えるのが、 Python の ImageHash ライブラリだ。

このライブラリ自体は ピュアな Python ライブラリなのだが、 依存しているパッケージが総じて C言語拡張モジュールなので Windows で動作させるにはすこし手間がかかる。

そこで、 cygwin 上の python にインストールする場合と、 Windows 上の CPython にインストールする方法をそれぞれ紹介しよう。

以下は virtualenv を使って仮想環境上にインストールする手順とするが、 直接 Python のシステム環境に入れてしまっても問題はない。

メモ: 2017年現在、 pypi でプリコンパイル済みの依存モジュールがダウンロードできるので、以下の方法を使わなくても pippipenv コマンドだけでインストールが完了するはずだ。

cygwin を使う場合

続きを読む

マザーボードが GA-P55-UD3R のPC を Win 10 アップグレードしたら、ネットワークにつながらない!

来たる 7月29日 に Windows 10 の 無料アップグレードが終了してしまうので、 後回しにしていた 自作のデスクトップPC を Windows 7 から Windows 10 にアップグレードしてみた。

実はこの デスクトップPC は、一度 Windows 8 に更新したあと、使いにくかったのと、当時載せていたグラボとの相性が悪かったのもあって、 Windows 7 に戻した経緯がある。
その後、 グラボは新しいモノに取り替えていたので、 Windows 8.x と互換性がよい Windows 10 なら、なんの問題も発生しないだろうと考えていた。
アップグレード前の互換性チェックも問題なく、更新をダウンロードして長いこと待てば問題なく更新される… はずだった。

ところが、Windows 10 へのアップグレードが完了したあと、OS にサインアップしたら、ネットワークに繋がらないではないか!

Realtek の ネットワークドライバが Win 10 に対応していなかった?

起動後のアクションセンターの通知で、ご丁寧にも 「Realtek の ネットワークアダプター が Win 10 に対応していないから、機能を無効にした」 などと通知をしてくれていた。
お節介な奴め。

このネットワークアダプターは、 GIGABYTE の マザーボード GA-P55-UD3R のオンボードのものだ。
GA-P55-UD3R は 7年前の M/B なので、当然サポートはとっくに切れており、 Windows 10 はおろか Windows 8 のドライバすら提供されていない。
ただ、それは GIGABYTE サポートサイト上での話だ。

GIGABYTE のサポートサイトによると、 GA-P55-UD3R は Realtek RTL8111D のチップセットを載せている。
幸い、 Realtek のサポートサイトには、このチップセットの Windows 10 用のドライバーが提供されているので、それを USB メモリか何かを経由して、インストールすれば良いのだ。

2016/05/15 現在、 Realtek のサポートサイト上の、 RTL8111D を含めた Network Interface Controllers チップセットのドライバーのダウンロードページはこちら↓
http://www.realtek.com.tw/downloads/downloadsView.aspx?Langid=4&PNid=13&PFid=5&Level=5&Conn=4&DownTypeID=3&GetDown=false

ドライバーをインストールしても、ネットワークに繋がらない?

ドライバーのインストールが完了しても、すぐにネットワークが繋がるわけではない。
Windows 10 アップグレード時に 無効にされたネットワークアダプタは、 ドライバーを更新しても自動で有効にならないからだ。

ご丁寧に、ネットワークアダプタの各項目一つ一つの項目が無効になっているので、必要な機能を有効にしよう。
ローカルエリア接続の各機能の項目を有効にする

これで、ネットワークが有効になったはずだ。

しかし… このデスクトップPCは、 7年間使い続けていることになるのか。
SSD を交換したり、 メモリを積みましたり、 グラフィックボード、 Blu-ray ライターをを交換したりはしているものの、それ以外はそのままだ。
Core i5-750, メモリ 6GB, SSD 128GB (+HDD) の構成だが、現状性能に全く不足を感じず、極めてサクサク動いてくれる。(PC上で、リッチなグラフィックのゲームをしないってのもあるが)
2~3年ごとくらいに H/W を刷新しないと 動作がもたついて使い物にならなかった、 2000年代中盤までは考えられなかったことだ。