これは日々の作業を通して学んだことや毎日の生活で気づいたことをを記録しておく備忘録である。
HTML ファイル生成日時: 2024/12/21 11:44:57.596 (台灣標準時)
NetBSD で GPT を使いハードディスクをフォーマットする方法を記録しておく。
まず、ハードディスクを接続する。ケーブルをつなぐと、以下のようにして接 続が確認できるはずである。この場合、ハードディスクが sd0 として認識さ れている。
# dmesg | tail -11 [ 370711.767884] umass0 at uhub0 port 1 configuration 1 interface 0 [ 370711.767884] umass0: TOSHIBA (0x480) External USB 3.0 (0x900), rev 3.00/3.15, addr 1 [ 370711.767884] umass0: using SCSI over Bulk-Only [ 370711.767884] scsibus0 at umass0: 2 targets, 1 lun per target [ 370718.223385] sd0 at scsibus0 target 0 lun 0:disk fixed [ 370718.223385] sd0: fabricating a geometry [ 370718.223385] sd0: 3726 GB, 3815447 cyl, 64 head, 32 sec, 512 bytes/sect x 7814037164 sectors [ 370718.233393] sd0: fabricating a geometry [ 370718.233393] sd0: GPT GUID: d6a506e0-e81a-44eb-8fe5-f29f44af4e1d [ 370718.233393] dk3 at sd0: "Microsoft reserved partition", 262144 blocks at 34, type: [ 370718.233393] dk4 at sd0: "Basic data partition", 7813771264 blocks at 264192, type: ntfs
まず、 gpt コマンドを使って、現在の状況を確認する。購入してからまだ何 もしていないハードディスクなので、 Windows で使えるように初期化された ままになっている。
# gpt show sd0 start size index contents 0 1 PMBR 1 1 Pri GPT header 2 32 Pri GPT table 34 262144 1 GPT part - Windows reserved 262178 2014 Unused 264192 7813771264 2 GPT part - Windows basic data 7814035456 1675 Unused 7814037131 32 Sec GPT table 7814037163 1 Sec GPT header
今あるものを一旦すべて消去する。
# gpt destroy sd0
これで、すべての GPT 情報が消去されたはずなので、確認してみる。
# gpt show sd0 GPT not found, displaying data from MBR. start size index contents 0 7814037164 Unused
ここで、新たに GPT を作り直す。
# gpt create sd0
出来たかどうか確認してみる。
# gpt show sd0 start size index contents 0 1 PMBR 1 1 Pri GPT header 2 32 Pri GPT table 34 7814037097 Unused 7814037131 32 Sec GPT table 7814037163 1 Sec GPT header
GPT が出来ているようなので、パーティションを追加する。
# gpt add -b 80 sd0 /dev/rsd0: Partition 1 added: 49f48d5a-b10e-11dc-b99b-0019d1879648 80 7814037051
作ったパーティションを確認する。
# gpt show sd0 start size index contents 0 1 PMBR 1 1 Pri GPT header 2 32 Pri GPT table 34 46 Unused 80 7814037051 1 GPT part - NetBSD FFSv1/FFSv2 7814037131 32 Sec GPT table 7814037163 1 Sec GPT header
出来た wedge を表示させてみる。
# dkctl sd0 listwedges /dev/rsd0: 1 wedge: dk3: 6fa969b9-22f4-47de-b6af-072b5761bd7a, 7814037051 blocks at 80, type: ffs
新しく作ったパーティションは /dev/dk3 として見えていることが確認できる。 dmesg でも確認しておく。元々あった dk3 と dk4 が消去され、新しく dk3 が出来ていることがわかる。
# dmesg | tail -15 [ 370711.767884] umass0 at uhub0 port 1 configuration 1 interface 0 [ 370711.767884] umass0: TOSHIBA (0x480) External USB 3.0 (0x900), rev 3.00/3.15, addr 1 [ 370711.767884] umass0: using SCSI over Bulk-Only [ 370711.767884] scsibus0 at umass0: 2 targets, 1 lun per target [ 370718.223385] sd0 at scsibus0 target 0 lun 0:disk fixed [ 370718.223385] sd0: fabricating a geometry [ 370718.223385] sd0: 3726 GB, 3815447 cyl, 64 head, 32 sec, 512 bytes/sect x 7814037164 sectors [ 370718.233393] sd0: fabricating a geometry [ 370718.233393] sd0: GPT GUID: d6a506e0-e81a-44eb-8fe5-f29f44af4e1d [ 370718.233393] dk3 at sd0: "Microsoft reserved partition", 262144 blocks at 34, type: [ 370718.233393] dk4 at sd0: "Basic data partition", 7813771264 blocks at 264192, type: ntfs [ 371409.081505] dk4 at sd0 (Basic data partition) deleted [ 371409.081505] dk3 at sd0 (Microsoft reserved partition) deleted [ 371409.641982] sd0: GPT GUID: 0ee79da5-da74-44a7-bdf8-b1053fcf62ef [ 371409.651988] dk3 at sd0: "6fa969b9-22f4-47de-b6af-072b5761bd7a", 7814037051 blocks at 80, type: ffs
newfs コマンドを使って、ファイルシステムを作成する。 O2 オプションを使っ て FFSv2 でフォーマットする。
# newfs -O2 /dev/rdk3 /dev/rdk3: 3815447.8MB (7814037048 sectors) block size 32768, fragment size 4096 using 5140 cylinder groups of 742.31MB, 23754 blks, 46848 inodes. super-block backups (for fsck_ffs -b #) at: 192, 1520448, 3040704, 4560960, 6081216, 7601472, 9121728, 10641984, 12162240, ...............................................................................
以上の作業で、ハードディスクを利用できるようになったはずなので、マウン トしてみる。
# mount /dev/dk3 /mnt
何も文句を言われなかったのでうまくいったようである。 df コマンドで確認 してみる。
# df -g /dev/dk3 Filesystem 1G-blocks Used Avail %Cap Mounted on /dev/dk3 3668 0 3484 0% /mnt
一般ユーザーとして便利に使えるように sticky bit をたてておく。
# chmod 1777 /mnt # ls -l / | grep mnt drwxrwxrwt 2 root wheel 512 Apr 11 16:40 mnt
これで、誰でも自分のデータを書き込めるが、別の人のデータは消すことがで きないようにすることができた。
ハードディスクを取り外すためには、 umount コマンドを使えばよい。
# umount /mnt