この前バックアップしたHDDイメージをマウントして中身を見てみた。
Windowsでマウント
OSFMountをインストールして実行。
Mount new
からddイメージを指定して、マウントするパーティションを指定してマウント。

XP機(FMV)に入ってたGAMEPACとかは遊べた(音がメチャクチャだけど)けど、Document and Settingsの中は権限の問題で見れなかった。
WSL2でマウント
wsl2 + Ubuntuでマウントする場合、そのままmountコマンドを打っても論理パーティションが分かれているので、そのままではマウントできない。
調べたところ、fdisk -l
でパーティションの開始位置を確認して、mount -o offset
で指定すればいいらしいので、面倒なので選択したパーティションをマウントするスクリプトを書いた。
#!/bin/bash
function main () {
local IMG_FILE=$1
local MOUNT_POINT=$2
local FDISK=$(fdisk -l ${IMG_FILE})
if ! echo "${FDISK}" | sed -e 's/\*//g' | awk '{print $7}' | grep "NTFS" > /dev/null ; then
# NTFSパーティションがない
exit 0
fi
# マウントしたいパーティションの選択
local PARTITION_LIST=$(echo "${FDISK}" | grep "${IMG_FILE}" | grep -v "Disk ${IMG_FILE}" )
local PARTITION_LABEL=$(echo "${PARTITION_LIST}" | sed -e 's/\*//g' | awk '{printf("%s ", $1); for(i=7;i<NF;i++){printf("%s%s",$i,OFS=" ")}print $NF}' | peco | awk '{print $1}')
local PARTITION_DATA=$(echo "${FDISK}" | grep "${PARTITION_LABEL}")
local PARTITION_START=$(echo "${PARTITION_DATA}" | sed -e 's/\*//g' | awk '{print $2}')
# オフセット計算
local PARTITION_OFFSET=$(expr ${PARTITION_START} "*" 512)
echo ${PARTITION_START}
echo ${PARTITION_OFFSET}
# オフセット設定してマウント
mount -o loop,offset=${PARTITION_OFFSET} ${IMG_FILE} ${MOUNT_POINT}
exit 0
}
if [ $# -ne 2 ]; then
echo "usage mount_partition <dd image file> <mount point>"
exit 1
fi
main $@
Disk winxp_machine.img: 55.89 GiB, 60011642880 bytes, 117210240 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x52c91bfa
Device Boot Start End Sectors Size Id Type
winxp_machine.img1 * 63 96229349 96229287 45.9G 7 HPFS/NTFS/exFAT
winxp_machine.img2 96229350 117210239 20980890 10G 7 HPFS/NTFS/exFAT
fdisk -l
の結果がこれなので、必要なのはデバイス名とStartの値。なのでまずはgrep
でNTFSパーティションを探し、なければそこで終了。
次にDevice以下の行をawk
でデバイス名とTypeを並べたリストを作り、peco
コマンドで選択。選択結果からデバイス名を抜き出し、今度はデバイス名でfdisk
の結果をgrep
し、awk
で開始位置を取得。
最後にセクターサイズが512バイトなので、Startの値に512をかけた値をoffsetにして、mount
コマンドでマウント。
WSL2には、Windowsのエクスプローラーからネットワークドライブとして見えるので、あとはそのままマウントポイントにアクセスすればイメージの中身が見れる。
ただ、ネットワーク越しに見えるため、大抵のゲームとかはリソースが読めなくなり、動かない。
QEMU
「HDD丸ごとコピーしたイメージなら、QEMU使ったらWindows動くんじゃないか?」と思ったけど、一瞬WindowsXPの起動スプラッシュが見えた直後にBSODでダウン。エラーコードは0x0000007bなので、なにかぶっ壊れているようだ。
