まだ死なせないABI310 - ABI Prism 310 Genetic Analyzerをエミュレータで使う

201907にやった。

ABIのシークエンサ、310のコントロールPCが挙動不審になった。WindowsNT4.0で動く年代物である。常時通電の電流は来ているが電源ボタンを押すとLEDが橙点滅して起動しない。どうも電源がいけないようなのでエアダスターで内部を清掃したら一応起動した。

が、まあもう長くはなさそうだ。

古いマシーンであるからして、導入時についてきたCD-Rはすでに劣化して読めないものがある。 特にData Collectionが入っているはずのCDが読めないのには参った。 これでは新たなマシーン上で新たな環境を作ることは難しい。 まあ、そもそもWindowsNT4.0が動く世代のマシーンがない。 Data Collection自体も単純に移動して動くソフトでは無いようだ。 仕方がないのでHDDが無事なうちにデータをサルベージした上でいわゆるP2V、Physical to Virtualによってエミュレータで動作させる事にした。

元PCのHDDのイメージ化

IDEとSerialATAの両方を接続可能なPC(すでに使っていない旧式)があったので、これを利用して元HDDのイメージ化を行なった。 元PCからIDE接続のHDDを抜き出し、PCに組み込む。イメージファイルの保存先となるSerialATAのHDDも組み込む。 Biosをいじり、UbuntuのliveUSBで起動する(起動可能なOSがインストールされていなかったため)。 起動したPC上でIDE接続のHDDをddでディスクイメージにする。 この時、ディスクイメージを保存するHDDはFATであってはならない(ファイルサイズの4GB制限があるので)。

sudo fdisk -l

で吸い出し元と保存先のHDDを確認。 sdaが保存先、sdbが吸い出し元だった。 保存先HDDをマウントしてから

df

でマウント先を確認。

sudo dd if=/dev/sdb of=/media/500GB/sdb.img bs=32M

でディスクイメージを作成した。/media/500GB/sdb.imgはマウントした保存先ディスク内にsdb.imgを作るということ。 イメージはパーティションごと(sdb1,2)ではなく、まるごと(sdb)作る。 かなり時間がかかる。250GBのHDDをイメージ化するのに数時間を要した。また進行度は表示されない。

ディスクイメージの変換〜仮想マシーンの作成

エミュレータ・VirtualBoxを動かすPCのOSはubuntuとした。 Windows10にでもしてシークエンス中にアップデートで勝手に再起動などされては困る。 PCはSandyBridgeのi5搭載のもの。 貰い物の旧式機だがシリアルポートが付いているので都合が良い。

Ubuntuをインストール後、VirtualBoxをインストールする。 別に最新版でなくてもよかったので

sudo apt install virtualbox

を実行したのみ。

次にディスクイメージをVirtualBoxで使える形式に変換する。

vboxmanage convertfromraw sdb.img sdb.vdi

を実行してディスクイメージをVirtualBox用に変換。少々時間がかかる。未使用領域が圧縮されるのでファイルサイズは小さくなる。

VirtualBoxで新規仮想マシーンを作る。Windows、NT4.0指定。 仮想ハードディスクファイルは作成したディスクイメージを指定。 無事に起動したら旧環境の移行は完了。

シークエンサの接続

310はシリアルポート経由で通信するので、PCに付いている実シリアルポートを仮想環境からアクセスできるようにしないといけない。

使えるシリアルポートを確認する。

setserial -g /dev/ttyS*

dmesg | grep ttyS

などで使用できるシリアルポートを確認。今回は「/dev/ttyS0」だった。

Virtualbox側のシリアルポート設定を行う。
ポート番号 COM1
ポートモード ホストデバイス
パス/アドレス /dev/ttyS0 ←確認したシリアルポート
これだけ設定して仮想マシーンを起動してみるとエラーが出る。 どうもシリアルポートのパーミッションに問題があるらしい。

シリアルポートのパーミッションを調整する。

ls -Al /dev/tty0

でパーミッション確認。rootかdialoutでしか使えない様である。

sudo gpasswd -a ユーザ名 dialout

で使用するユーザをシリアルポートを使えるユーザグループdialoutに追加する。

仕上げに310 Data Collection Softwareの設定を変更する。 Window > Preferences > General Settingsで通信をCOM1に設定

Data Collectionの動作

これで310シークエンサのステータスを取得できるようになった。 試しにバッファバルブを開けたり閉めたりしたところ、ちゃんと動く。 シークエンスしてみたところData Collection、Sequencing Analysis共に問題は無いようだ。 年代物の旧式機の代替であればエミュレータでも十分ということなのだろう。

問題点

WindowsNT4.0ではVirtualBoxの共有フォルダがうまく動作しない。 シークエンスしたファイルの取り出しのためにネットワーク接続を確立する必要がある。
コントロールパネルのNetwork > AdaptersでAMD PCNET Family Ethernet Adapterを加える(WindowsNT4.0のCDのi386フォルダを直接指定してドライバをインストール)。
他は消す。
不要そうなサービスを削る。
VirtualBoxの仮想マシーンの設定 > ネットワークでNATかブリッジアダプターを選択。
これでLAN接続可能になった。 旧式のWindowsをネットワークに直接接続するのはセキュリティリスクがあるのでクローズなネットワークを構築する方が良さそうである。

参考:

【P2V】 VirtualBoxに物理マシンを移行する方法

[小ネタ]Ubuntu でttyUSB0(USBシリアル変換)が権限関連で使えない場合の対処方法