CygwinのddでUSBメモリのMBRを読み書きする
自作OSなどをUSBメモリから起動するために、USBメモリのMBRを読み書きする。FreeBSDやLinuxなどの環境ならば普通にインストールされてるddを使えばいいが、Windowsにはddが無い。そこでCygwinのddを使う。
まずCygwin上でのUSBメモリのデバイスノード名を調べる。
$ cat /proc/partitions major minor #blocks name 8 0 117219767 sda 8 16 244197527 sdb 8 32 244194455 sdc 8 48 7897088 sdd 8 49 7895916 sdd1
これでデバイスノード名が分かる*1。#blocksからUSBメモリのデバイスノード名の見当を付ける。より確実に見当を付けるには、USBメモリを挿す前と後で見比べたり、dfコマンドの結果や、Windowsの「コンピュータの管理」の「ディスクの管理」を見ればいい。
ここではsddが目標のUSBメモリだ。これはもちろんUSBメモリに直にアクセスできるデバイスノードなので、ここからddでMBRを読み書きできる*2。
$ dd if=/dev/sdd of=mbr count=1 $ dd if=mbr of=/dev/sdd count=1
おわり。
ところで次の方法ではUSBメモリ内のパーティションへのアクセスになってしまうので、MBRに触れない。ここでUSBメモリのドライブレターは「F」とする。
$ dd if=\\.\F: of=mbr count=1
まぁ、OSの自作やってるわけじゃないんだけどね。