とほほの、Windows XP マザーボード交換。
Java Applets で請求書を印刷している、超古い XP のマザーボードが壊れたので、急遽、マザーボード交換するはめになりした。
参考ページは、
以前にもおせわになった、OSそのままマザーボード交換の方法 です。
ところが、Microsoft の肝心のページが無い。
github.com/tarao
後、問題は、XP が起動出来ないので、XPの HDD 上のレジストリー情報を、
おんちゃんは、Windows11 上で行わないといけない。
参考にさせてもらったのは、
備忘 マザーボード交換
別の HDD にあるレジストリ(ハイブファイル)を操作する
結局、Windows11 の regiedit を使って、XP の外部HDD上のregistory を、
手作業で、mergeide.reg の内容を取り込むことになるのか?
[HKEY_LOCAL_MACHINE\SYSTEM] ->\WINDOWS\System32\Config\SYSTEM
と言う事なので、念のために、
XP HDD の /WINDOWS/System32/config/systemファイルのバックアップを、Ununtu PC から取って置きます。
Windows11 の registory もバックアップしておいた方がよさそう。
regiedit -> export
ドキュメント/windows11-org.reg
余談だが、おんちゃんは、Ubuntu 20.04 PCもあるので、最近は、Windows の ntfs も普通に
Ubuntu からアクセスできる。
当初、XP の \boot.ini の起動オプションで、なんとか出来ないか試してみました。
Windows XP と Windows Server 2003 Boot.ini ファイルで使用可能なスイッチ オプション
/basevideo /sos
2. 手作業は、面倒なので、Python で簡単にできないものか?
どうやら、winreg でアクセスできるようだ。
coriolis/hivex もある。
winreg でレジストリを読み書きするサンプルコード
python-registry2 のサンプルに、csv から取り込む例があるので、参考になるか?
これなら、Windows11 のレジストリーをいじらなくても出来るので、安心ぞね。
早速、起動できない XP HDD から、
/WINDOWS/System32/config/system を、Windows11 の適当なフォルダーに持ってきて、試すのみじゃ。
1) テスト。
samples/printall.py で、リスト出力してみる。
i) windows11 の適当な、フォルダー上で、
msys2 で、git clone する。
# cd /e/local/vscode-python
# git clone
# cd \local\vscode-python\
# git clone https://github.com/williballenthin/python-registry.git
ii) Windows11 のターミナルで、python3.7 を使って。
> set PYTHONPATH=E:\local\vscode-python\python-registry;%PYTHONPATH%
> cd E:
> cd \local\vscode-python\python-registry\samples
> python printall.py xp_system
OK。
注) xp_system は、起動できない、XP の レジストリーファイルを持ってきておく。
3. もしかして、kvm-mergeide がそのまま使えるのでは。
4. 結局 hivexregedit と言うのが、そのまま使えるみたいぞね。
ubuntu mate 20.04
$ sudo apt install libwin-hivex-perl
マージの実行、
$ hivexregedit --merge xp_system --prefix 'HKEY_LOCAL_MACHINE\SYSTEM' mergeide.reg
使い方は、man ページにある。
$ man hivexregedit
やっぱり、これも NG でした。使い物にならないです。
仕方がないので、自分で、python で作る事にしました。
5. python で、自分で作っている際に、既存の Windows レジストリーに、以前マージした値がそのまま残っている事がわかりました。
それなのに、載せ替えたマザーボードで、上手く起動できないのは、マザーボードの方に問題がありました。
Intel D945GPM
ですが、デフォルトの bios の設定では、起動 NG でした。
多分、Raid Driver が、FDD で添付されていたので、其れがインストールされていない為のような気がします。
取り敢えず、bios の設定で、
advance -> Drive Configuration
ATA/IDE Mode <Legacy>
上記で、やっと、既存の Windows XP が起動できました。
この後、TEL で、アクティベーションをしてなんとか、移行ができました。
いまも、TEL で、アクティベーション ができるみたいです。AI の応答ですが。
但し、上記、bios の設定だと、電源ON 直後に、エラーがでます。
Internal Error (9) HARDWARE_UNSUPPORTED
多分、これが、Riad Driver を入れて、bios の設定を、ディフォルトに戻せば、解決するような気がします。
やれやれでした。
6. Ubuntu 20.04 から、Windows レジストリーにアクセスする tool があった。
UbuntuでWindowsのプロダクトキーを取得する。
$ sudo apt install chntpw
自分用の情報。
python ascii to bytes x
7. merge regi を、python で作りました。
途中まで作って、必要がなくなりましたが、序だから、完成させました。
github で公開しました。
tosa-no-onchan/merge_regi