ノートPCのSSDが死んだ→外付けSSDに構築

イメージ
 これは、友人の話ですが…。 個人で使用しているノートPCが、「起動しなくなった」という相談を受けて、調査。 確かにBootしない。一応、USBでUbuntu起動して確認するも、Diskは存在しているものの中身は見えなくなっている。 かなりのセクタがお亡くなりになっている…。 本人曰く、基本的にデータは保存していないので、初期化しても何も問題はない (PC使用していてそんなこと有る?全部クラウド利用?) まぁ、そう言うなら復旧できるかやってみることに。 フォーマットもできず… 結局、データのレスキューも、初期化もできず… 仕方なくBIOSでDisableに設定するしか手がない状態。 ノートPC自体は壊れていないが、SSDのみ逝っている状態。 もちろん修理に出すことも可能だが、保証期間はとっくに過ぎている。 USBタイプ外付けSSDで再構築 Rufusを使用すれば、USBメモリにOSをインストールできるのは知っているが、通常のUSBメモリだと遅いのと壊れるのが心配なので、SSDを選択。 探してみると、結構良いものが有る。 ロジテック SSD 外付け 500GB  当時6,200円(2025年春)→現在約11,500-(2026年2月) Type-AとType-Cのどちらも使用可能。 これに、 Rufus を使用してWindows11をインストール。 手順は、あちこちに出回っているが、分かり易そうなところも紹介 https://nisimura.org/usb_ssd_rufus_win11_24h2/ これとWindows11homeのライセンス代をもらって完了。 起動は結構早いし、持ち運べるのは良さげ。 自分用に1個作成しておいても良いかも。 出先でPCさえ借りれれば、自分の環境&ツールがそのまま使用できるわけだしね。 あっ、Windowsはほぼ使用していないから不要だったゎ(笑)

AccessのMDBファイルをUbuntuで利用

仕方なく方法を探っただけで、やりたいわけでは…

Windowsで動くDB関係のシステムが、XP上で動くものの、Windows7では動作しない。
何とかならないか?と相談を受けて、検討している。

調べてみると、OfficeXP上のAccessを利用して構築されたシステム。
しかし、当時Setupしたものの、すでにそのDiskは無い。

一応、お客の所でWindows7上のAccessでテストしたものの、起動せず…。

そこで、データだけは抜き出して、移植(というか再構築というか、まぁ作り直し)することに。

使用していない機能も多いため、聞き取りを行い、要件定義をしてみたり、設計してみたり…。

さて問題は旧データを取り出して使えるかだ。

我が家の仮想マシン(WindowsXPもWindows7)は、Accessなんて入っていない。
そもそも、Accessは、複数マシンからアクセスした時に超遅くて、挙句の果てにファイル壊してくれたりして以来、使用していない。
だからもう、10年以上開発には使っていないなぁ。

ずっと、PostgreSQLとMySQLでやってきたので、Accessが入っていないのも当然。

iMacのMS-OfficeにはAccessは含まれていない。

MDB Viewer Plusを発見

探してみたら、まぁなんとかなりそうなツールを発見。MDB Viewer Plusだ。
検索語「MDB Viewer」で引っかかったので、まんまの名前だったww

Accessなしで、MDBファイルから直接内容を読み取れるらしい。

早速、Windows7上で試してみる。

一応、MDBファイルは確かに読める。
ReportやForm、コードはダメだが、DB自体は読み込めるし、Exportも可能だ。

まぁ、最低限、過去のデータを手入力しなくても良さそうなので、一安心。

開発のことを考えると、迷うところ。
  1. Excelとマクロで無理やり作る。
  2. Windows上の新しいAccess2013で構築する。
  3. バックエンドにDBサーバを置いて、Windows上のアプリを作成する。
  4. バックエンドにDBサーバを置いて、WEBアプリで作成する。
どれも、一長一短だ。

半分ほど手作業で、補助ツールを用意する程度のシステムにしておけば、万が一の場合や、保守しなくなったりしても自分たちで何とかできるかもという考えでのExcel+マクロなんだけど…。

そもそも、WindowsXPのようにサポートが切れ、利用不可になるOS上のDB。Accessで構築したために、今回移行できずに困っているわけなので、特定のアプリに縛られない方が良いような気もする。

気持ち的には4のWEBアプリが、保守とかしやすくて良さそうだけれど、UIがどうしても貧弱になってしまうので…。

設計は置いといて

まあ、今後の作業はとりあえず、これから検討するとして…。

このMDBをUbuntu上で読み書きできれば、作業効率も上がるかなぁと考えたりして。

何せ、Windowsは仮想マシンなので、起動に20〜30秒ほどはかかる。ログインして使える状態まで約1分程度は待つのが嫌だし、AntiVirusのパターンファイルの更新やら、WindowsUpdateの更新などがかかって、まともに使えるまでに結構時間がかかるのでWindows上で作業したくないというのが本音。

何せ、SSD搭載のX200が爆速で、電源ONから使えるまでの20秒に慣れてしまうと…。

そこで、MDB Viewer Plusをwineで動かしてみる。
$ wine mdbplus.exe
エラー吐いて、お亡くなりになります。
くそっ、ダメか…。

念の為、ググってみる。
GentooのForumに、MDBplus.exeとwineの記事を見つけた。

その中のPOSTに
using winetricks for install packages mdac28, vcrun6, mfc42 is solved this problem.
but i imagine that not all of this packages is need in this case.
if you have some time, then start please from 'winetricks mdac28' and then try to run 'wine <app>'.
なんてヒントがあった。

MDACとは Microsoft Data Access Components (MDAC)のことだ。
そうか、これがあれば行けるのか?

早速、mdac28を入れてみる(28はバージョンなのかなぁ…ちょっと不安だけど、良くわかっていないし…)
$ winetricks mdac28
すると、ネットからインストールしてくれる。
Executing w_do_call mdac28
Executing load_mdac28
Executing mkdir -p /home/username/.cache/winetricks/mdac28
Downloading http://download.microsoft.com/download/4/a/a/4aafff19-9d21-4d35-ae81-02c48dcbbbff/MDAC_TYP.EXE to /home/username/.cache/winetricks/mdac28
--2014-04-21 22:07:30--  http://download.microsoft.com/download/4/a/a/4aafff19-9d21-4d35-ae81-02c48dcbbbff/MDAC_TYP.EXE
download.microsoft.com (download.microsoft.com) をDNSに問いあわせています... 2402:6b00:0:2d::db75:21a3, 2402:6b00:0:2d::db75:219a, 219.117.33.137, ...
download.microsoft.com (download.microsoft.com)|2402:6b00:0:2d::db75:21a3|:80 に接続しています... 接続しました。
HTTP による接続要求を送信しました、応答を待っています... 200 OK
長さ: 6100504 (5.8M) [application/octet-stream]
`MDAC_TYP.EXE' に保存中
100%[======================================>] 6,100,504   1.63MB/s   時間 4.4s
2014-04-21 22:07:35 (1.33 MB/s) - `MDAC_TYP.EXE' へ保存完了 [6100504/6100504]
Using native,builtin override for following DLLs: odbc32 odbccp32 oledb32
Executing winetricks_early_wine regedit C:\windows\Temp\_mdac28\override-dll.reg
Setting Windows version to win98
Executing winetricks_early_wine regedit C:\windows\Temp\_mdac28\set-winver.reg
Executing wine mdac_typ.exe
err:richedit:ReadStyleSheet skipping optional destination
err:richedit:ReadStyleSheet skipping optional destination
err:richedit:ReadStyleSheet skipping optional destination
err:richedit:ReadStyleSheet skipping optional destination
err:richedit:ReadStyleSheet skipping optional destination
fixme:setupapi:SetupAddInstallSectionToDiskSpaceListA Stub
fixme:setupapi:SetupAddInstallSectionToDiskSpaceListA Stub
fixme:setupapi:SetupAddInstallSectionToDiskSpaceListA Stub
fixme:setupapi:SetupAddInstallSectionToDiskSpaceListA Stub
fixme:setupapi:SetupAddInstallSectionToDiskSpaceListA Stub
fixme:setupapi:SetupAddInstallSectionToDiskSpaceListA Stub
fixme:setupapi:SetupAddInstallSectionToDiskSpaceListA Stub
fixme:setupapi:SetupAddInstallSectionToDiskSpaceListA Stub
fixme:setupapi:SetupAddInstallSectionToDiskSpaceListA Stub
fixme:setupapi:SetupAddInstallSectionToDiskSpaceListA Stub
fixme:setupapi:SetupAddInstallSectionToDiskSpaceListA Stub
fixme:setupapi:SetupAddInstallSectionToDiskSpaceListA Stub
fixme:setupapi:SetupAddInstallSectionToDiskSpaceListA Stub
fixme:setupapi:SetupAddInstallSectionToDiskSpaceListA Stub
fixme:setupapi:SetupAddInstallSectionToDiskSpaceListA Stub
fixme:setupapi:SetupAddInstallSectionToDiskSpaceListA Stub
fixme:setupapi:SetupAddInstallSectionToDiskSpaceListA Stub
fixme:setupapi:SetupAddInstallSectionToDiskSpaceListA Stub
fixme:setupapi:SetupAddInstallSectionToDiskSpaceListA Stub
fixme:setupapi:SetupAddInstallSectionToDiskSpaceListA Stub
fixme:setupapi:SetupAddInstallSectionToDiskSpaceListA Stub
fixme:advpack:set_ldids Need to support changing paths - default will be used
fixme:setupapi:extract_cabinet_file awful hack: extracting cabinet "C:\\users\\username\\Temp\\IXP000.TMP\\msvcrt.CAB"
fixme:advpack:set_ldids Need to support changing paths - default will be used
fixme:setupapi:extract_cabinet_file awful hack: extracting cabinet "C:\\users\\username\\Temp\\IXP000.TMP\\mtxfiles.CAB"
fixme:advpack:set_ldids Need to support changing paths - default will be used
fixme:advpack:set_ldids Need to support changing paths - default will be used
fixme:advpack:set_ldids Need to support changing paths - default will be used
fixme:advpack:set_ldids Need to support changing paths - default will be used
fixme:setupapi:extract_cabinet_file awful hack: extracting cabinet "C:\\users\\username\\Temp\\IXP000.TMP\\MDACxpak.CAB"
fixme:setupapi:SetupDefaultQueueCallbackW notification 262144 params f529e0,0
fixme:setupapi:extract_cabinet_file awful hack: extracting cabinet "C:\\users\\username\\Temp\\IXP000.TMP\\MDACxpak.CAB"
fixme:advpack:set_ldids Need to support changing paths - default will be used
fixme:setupapi:extract_cabinet_file awful hack: extracting cabinet "C:\\users\\username\\Temp\\IXP000.TMP\\SQLXMLXP.CAB"
fixme:advpack:set_ldids Need to support changing paths - default will be used
fixme:setupapi:extract_cabinet_file awful hack: extracting cabinet "C:\\users\\username\\Temp\\IXP000.TMP\\sqlnet.cab"
fixme:advpack:set_ldids Need to support changing paths - default will be used
fixme:setupapi:extract_cabinet_file awful hack: extracting cabinet "C:\\users\\username\\Temp\\IXP000.TMP\\sqlodbc.cab"
fixme:advpack:set_ldids Need to support changing paths - default will be used
fixme:setupapi:extract_cabinet_file awful hack: extracting cabinet "C:\\users\\username\\Temp\\IXP000.TMP\\SQLOLDB.CAB"
fixme:advpack:set_ldids Need to support changing paths - default will be used
fixme:setupapi:extract_cabinet_file awful hack: extracting cabinet "C:\\users\\username\\Temp\\IXP000.TMP\\JETFILES.CAB"
Setting Windows version to winxp
Executing winetricks_early_wine regedit C:\windows\Temp\_mdac28\set-winver.reg
ここで、先ほどと同じく
$ wine MDBplus.exe
とすると、さっくりと動くじゃないですか…。
Windows7上で動かした時と、全く同じ動作をしてくれます。

最近のwineは本当に、良く動くようになったなぁと、改めて感心します。
(って先日のFileMakerの時も感心したんだったなぁ)

そこで、目的のMDBを開いてみると、パスワードの確認ダイアログを通過。
ところが…。

ERRORを吐いて、先へ進めない。

msxml3/msxml6かもという書き込みをみて、winetricksで入れてみるがだめだった。
MDACのバージョンだとか、DLLのバージョンの相違で起きるらしいのだが…。

現状、ここまででしか動かせなかった〜。
あと、少しな感じなのになぁ。


コメント

このブログの人気の投稿

Ubuntu24.04 でGUIが死んだ

VirtualBoxが異常

MEGAにも弱点があった?