« 2015年5月 | トップページ

2015年6月の2件の記事

2015/06/30

/etc/fstabを書き間違えて復旧に苦労した顛末

旧マシンのVHD化を進めてるわけだが、旧々PCにFreeBSD4.3が入っててVPC上でちゃんと起動した。
で、fstabを見たらadじゃなくてwdになってたから、安易にfstabだけ書き換えて再起動しちゃった。
実は該当デバイスノードが作られていなかった。(← 自分で作らなきゃ存在するはずないw)
なので、ルートマウントポイント( / ) が read-only な事態に!
ググるとたくさん出てくるサイトを参考に
mount -u /
をやってみたが、ad0s3a とadデバイスで中途半端にマウント出来ちゃってるためか、エラーになって書き込み可能にならない。
しかも /dev も / 配下なので./MAKEDEV ad0s3a が書込み禁止エラーで出来ない。

そこで fstab の記述を一旦wdに戻す事にした。
まずは書き込み可能な / をマウント。
mount /dev/wd0s3a /mnt
他もマウント。
mount /dev/wd0s3e /var
mount /dev/wd0s3f /usr
で vi しようとしたらテンポラリファイルが /tmp に書き込めないとエラー終了するので、viのmanを読んだら環境変数があったので、
SETENV TMPDIR /mnt/usr/tmp
とかしたら無事
vi /mnt/etc/fstab
で編集できた。

で、元のデバイス名の環境で起動して、ad を MAKEDEV して fstab も ad に書き換えて、再起動!
無事起動できましたとさ。

【教訓】
何か作業をする時は、付随する作業がないか念入りに確認しよう。 <自分

| | コメント (0) | トラックバック (0)

2015/06/25

物理HDDからDisk2vhdで変換したWin2000/XPのVHDへの追加作業のまとめメモ

【経緯】
過去記事の通り、メインPC&サブPCが両方壊れて新生メインPCのOSにはWindows7の64bit版を新規インストールした。(つまりOSアップグレードではないのでアプリは引き継げない)。
そこで、メインPC&サブPCのHDDをSysinternalsのDisk2vhdでVHDへ変換して、いざという時に過去アプリを使えるようにする事にした。
で、変換は出来たが動かない(泣) (INACCESSIBLE_BOOT_DEVICE のブルースクリーン)
ググッたら追加作業が必要という事が判明したが、情報が分散してるので、自分メモとしてまとめてみた。
(Virtual PC はレガシーアプリを動作させる為のものなのに、)Win7のVPCだと諸々レガシーデバイスが切り捨てられてるので、Win7版はアンインストールして Virtual PC 2007 を入れた。(^^;)

【ポイント】
・Disk2vhdの変換時にオプションにチェックを付け忘れると、HALを手作業で入れ替えなきゃだよ orz
 特に変換元物理PCがマルチコアだった人は必須。
・さすがに起動時はIDEコントローラーをプラグ&プレイで検索してくれないらしい。

【下記手順実行時に適宜必要な作業】
VHD内にアクセスする時は、Win7の[コンピュータの管理]-[ディスクの管理]-[操作]-[VHDの接続] を行う事。

【手順概要】
僕のメインPCはWin2kだったので、OS名は適宜読み替えること。

・Disk2vhdの変換時に「Prepare for use in Virtual PC」にチェックを付け忘れた場合は下記を実行:
 ・Win2000 CD から 下記を ¥WINNT¥system32 へコピー。
  拡張子が .DL_ とかの場合は、コピーして拡張子を .cab にすれば、EXTなんちゃらコマンドを使わなくても中身を取り出せる。
   NTKRNLPA.EXE → PAE(物理アドレス拡張)対応カーネル
   halacpi.dll  → ACPI PC 用の標準 HAL

 ・boot.ini の起動したいOSの行に下記を追加:
    /KERNEL=NTKRNLPA.EXE /HAL=halacpi.dll
  例えばこんな感じ。
   multi(0)disk(0)rdisk(0)partition(7)¥WINNT="E: Windows 2000 Professional (for VPC)" /fastdetect /KERNEL=NTKRNLPA.EXE /HAL=halacpi.dll

・起動時IDEコントローラーに関するレジストリエントリを書き換える:
 regeditを起動してHKEY_LOCAL_MACHINEをポイントして[ファイル]-[ハイブの読み込み]で、VHD内の ¥WINNT¥system32¥config¥system を読み込む。キー名は参考文献[A]の場合は「temp_xp_system」、参考文献[D]の場合は「win2000_sys」。
 参考文献[A]の.regファイルをコピってファイルにしておく。
 HKEY_LOCAL_MACHINE¥temp_xp_system¥SYSTEM¥Select の Current に書いてある値が現在のコントロールセットなので、参考文献[A]の.regファイルをコピーして「ControlSet002、3、4、etc...」用を作っておくと吉。
現在のコントロールセット用の.regファイルをインポートする。

・ハイブのアンロード、VHDファイルの切断を忘れずにっ。

・VPC上でターゲットOSをセーフモードで起動。
 無事起動する事を確認♪
 「新しいハードウェアの検索ウィザードの開始」が出たらキャンセルしなきゃらしい。(僕の環境では出なかった。)

・普通に起動。
 無事起動する事を確認♪

・変換元物理マザーボード用ツールは当然不要なのでアンインストール。(ASUSなんちゃらとかGIGABYTEなんちゃらとか。)

【おまけ】
超レガシーOS(Win95)とかの場合は下記ドライバを使用。
 Intel 440BX チップセット ドライバー
  https://downloadcenter.intel.com/ja/download/4241/INF-400-

 DEC 21140 のイーサネットチップ ドライバー
  http://www.intel.com/design/network/drivers/nd2_300.htm ← (DEC社の半導体部門はIntel社に譲渡された為)


【参考文献】
 [A] 無償ツールで仮想化による移行を実現する:Windows XP→Windows 7丸ごと引っ越しテクニック(後)
  (http://www.atmarkit.co.jp/ait/articles/1109/15/news128.html)
  Disk2vhdで移行後にIDEドライバをVPC用に書き換える方法についての解説。レジストリ設定ファイルのサンプルあり。
 [B] Windows 2000が起動不能になったときには
  (http://www.atmarkit.co.jp/fwin2k/win2ktips/119lkgc/119lkgc.html)
  複数の ControlSet についての解説。
 [C] Hyper-V で無償 P2V (2) - Disk2VHD による P2V の仕組み
  (http://d.hatena.ne.jp/ogawad/20101028/1288220532) ← (2)
  (http://d.hatena.ne.jp/ogawad/20101029/1288309146) ← (3)
  Disk2vhdで「Prepare for use in Virtual PC」チェックボックスを有効にした時の処理内容の解説。
 [D] Disk2vhdで仮想化!!Windows2000server
  (http://blog.goo.ne.jp/tamahanaguro/e/d35048ae3018830b5566685e10a8c8ac)
  全体的な手順が書かれているが、試行錯誤の記録なので雑談部分を読み飛ばすスキル(笑)が必要。
 [E] Virtual PC/Virtual Serverでエミュレートされるネットワーク・インターフェイス
  (http://www.atmarkit.co.jp/fwin2k/win2ktips/760vmnet/vmnet.html)
  DEC DC21140A互換ドライバの探し方が書いてある。
 [F] Virtual PC で インターネット
  (http://dosmania.blog.fc2.com/blog-date-20121115.html)
  DEC 21140 ドライバーのIntelサイトURLが記載。

| | コメント (0) | トラックバック (0)

« 2015年5月 | トップページ