2023/10/06
http:index2.html
へ続く
手持ちの古い HD(hard disk)を整理していると、Vista がインストールされた 2.5 インチ SATA HD に出会った。format して別の用途に使ってもよいのだが、ちょいと不思議に思うことがあって、調べてみることにした。手頃な教材として。僕は実例を見ないと解った気にならないから...
GPT については、まだ解らぬこといっぱい... 信頼できる文献が欲しい。
以下ではパーティション情報を調べているが、パーティションに関する操作は最も危険な操作であり、間違えるとコンピュータの全データが吹っ飛ぶ。パーティションの変更が発生する可能性がある操作は必ず不要なハードディスクに対して行うこと。
After inserting the disk to maia (linux)
ubu$ ls -l /dev/sd* brw-rw---- 1 root disk 8, 0 8月 23 18:30 /dev/sda brw-rw---- 1 root disk 8, 1 8月 23 18:30 /dev/sda1 brw-rw---- 1 root disk 8, 2 8月 23 18:30 /dev/sda2 brw-rw---- 1 root disk 8, 3 8月 23 18:30 /dev/sda3 brw-rw---- 1 root disk 8, 16 9月 27 07:25 /dev/sdb brw-rw---- 1 root disk 8, 17 9月 27 07:25 /dev/sdb1 brw-rw---- 1 root disk 8, 18 9月 27 07:25 /dev/sdb2 brw-rw---- 1 root disk 8, 21 9月 27 07:25 /dev/sdb5 ubu$
exec
sudo fdisk /dev/sdb
Command (m for help): p Disk /dev/sdb: 111.79 GiB, 120033041920 bytes, 234439535 sectors Disk model: 106X 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: 0x9247f3e2 Device Boot Start End Sectors Size Id Type /dev/sdb1 * 2048 116566015 116563968 55.6G 7 HPFS/NTFS/exFAT /dev/sdb2 116567640 234436544 117868905 56.2G 5 Extended /dev/sdb5 228765663 234436544 5670882 2.7G 82 Linux swap / Solaris
/dev/sdb1
は HPFS/NTFS/exFAT
のどれかでフォーマットされていると思われる。どれなのかは、これからは分からない。拡張パーティションの中に Linux の swap パーティションが含まれている。Vista をインストールする前に、このディスクは Linux で使われていのではないかと推測するが、昔のことですっかり忘れている。
Looking the disk on MacOS
mbook$ ls /dev/disk* /dev/disk0 /dev/disk0s2 /dev/disk1 /dev/disk2s1 /dev/disk0s1 /dev/disk0s3 /dev/disk2 /dev/disk2s5 mbook$ mbook$ diskutil list ... /dev/disk2 (external, physical): #: TYPE NAME SIZE IDENTIFIER 0: FDisk_partition_scheme *120.0 GB disk2 1: Windows_NTFS 59.7 GB disk2s1 2: Linux_Swap 2.9 GB disk2s5 mbook$disk2s2 is not here.
/dev/disk2
(これは Linux の /dev/sdb2
に相当する)に関してもっと詳しい情報を提供している。これは NTFS
なのだと。
mbook$ diskutil info /dev/disk2s1 Device Identifier: disk2s1 Device Node: /dev/disk2s1 Whole: No Part of Whole: disk2 Volume Name: Mounted: Yes Mount Point: /Volumes/Untitled Partition Type: Windows_NTFS File System Personality: NTFS Type (Bundle): ntfs Name (User Visible): Windows NT File System (NTFS) OS Can Be Installed: No Media Type: Generic Protocol: USB SMART Status: Not Supported Volume UUID: 47E04978-EF4E-4277-BC05-0AE7280FDBE2 Disk Size: 59.7 GB (59680751616 Bytes) (exactly 116563968 512-Byte-Units) Device Block Size: 512 Bytes Volume Total Space: 59.7 GB (59680747520 Bytes) (exactly 116563960 512-Byte-Units) Volume Used Space: 26.3 GB (26331676672 Bytes) (exactly 51429056 512-Byte-Units) (44.1%) Volume Available Space: 33.3 GB (33349070848 Bytes) (exactly 65134904 512-Byte-Units) (55.9%) Allocation Block Size: 4096 Bytes Read-Only Media: No Read-Only Volume: Yes Device Location: External Removable Media: Fixed mbook$
NTFS の利用状態まで報告している。
mbook automatically mount the disk.
the contents is seen in /Volumes/Untitled
mbook$ ls -l /Volumes/Untitled total 9002256 drwxr-xr-x@ 1 arisawa staff 0 7 8 2011 $Recycle.Bin -rwxr-xr-x 1 arisawa staff 8192 7 8 2011 BOOTSECT.BAK drwxr-xr-x@ 1 arisawa staff 4096 7 11 2011 Boot drwxr-xr-x@ 1 arisawa staff 0 11 2 2006 Documents and Settings -rwxr-xr-x 1 arisawa staff 244 7 9 2011 Install.log drwxr-xr-x 1 arisawa staff 0 7 9 2011 Intel drwxr-xr-x@ 1 arisawa staff 0 7 8 2011 MSOCache drwxr-xr-x 1 arisawa staff 12288 7 29 2011 Program Files drwxr-xr-x@ 1 arisawa staff 4096 7 29 2011 ProgramData -rwxr-xr-x 1 arisawa staff 1841 7 9 2011 RHDSetup.log drwxr-xr-x@ 1 arisawa staff 12288 8 2 2011 System Volume Information drwxr-xr-x 1 arisawa staff 4096 7 8 2011 Users drwxr-xr-x 1 arisawa staff 20480 8 2 2011 Windows -rwxr-xr-x 1 arisawa staff 24 9 19 2006 autoexec.bat -rwxr-xr-x@ 1 arisawa staff 443912 7 11 2011 bootmgr -rwxr-xr-x 2 arisawa staff 10 9 19 2006 config.sys -rwxr-xr-x@ 1 arisawa staff 2147483648 1 3 2022 hiberfil.sys -rwxr-xr-x@ 1 arisawa staff 2461212672 1 3 2022 pagefile.sys -rwxr-xr-x 1 arisawa staff 218 1 3 2022 service.log mbook$mbook can mount NTFS in this disk
hebe# ls /dev/sd* /dev/sdE0/9fat /dev/sdE0/ctl ... /dev/sdE1/raw /dev/sdU76a40/ctl /dev/sdU76a40/data /dev/sdU76a40/linuxswap /dev/sdU76a40/ntfs /dev/sdU76a40/raw /dev/sdctl hebe# ls -l /dev/sdU76a40 --rw-rw-r-- M 1062929 arisawa arisawa 0 Jan 1 1970 /dev/sdU76a40/ctl --rw-r----- M 1062929 arisawa arisawa 120033041920 Jan 1 1970 /dev/sdU76a40/data --rw-r----- M 1062929 arisawa arisawa 2903491584 Jan 1 1970 /dev/sdU76a40/linuxswap --rw-r----- M 1062929 arisawa arisawa 59680751616 Jan 1 1970 /dev/sdU76a40/ntfs --rw-r----- M 1062929 arisawa arisawa 0 Jan 1 1970 /dev/sdU76a40/raw hebe# disk/fdisk /dev/sdU76a40/data cylinder = 8225280 bytes * p1 0 7256 (7256 cylinders, 55.58 GB) HPFS empty 7256 14240 (6984 cylinders, 53.50 GB) s2 14240 14593 (353 cylinders, 2.70 GB) LINUXSWAP >>> q hebe#
Plan9(9front) では、デバイスファイルを普通のファイルとして見せている。すなわち
/dev/sdU76a40/data
/dev/sdU76a40/raw
は sata HD を制御するために存在するのであろう。
IBM-PC 互換機
ムーアの法則によってパソコンの記憶容量が指数関数的に増えていく
FD(フロッピーディスク)
HD(ハードディスク)
BIOS
起動ドライブ
起動ドライブの最初のセクター(sector)の先頭は 8086 命令*
読み書きの最小単位
シリンダー(cylinder)数
1シリンダーに含まれるセクター数
HD 毎に異なる
統一的に扱うために
HD を Byte 列と考えて
論理ブロック(logical block) (単にセクターとも言われる)
512B
を単位にアドレス(0,1,2,...)やサイズを扱う。
logical block address
MBR は各 HD の
LBA 0
size 1
[1]: Day 2: ブートローダ(MBR)
https://ja.tech.jar.jp/ac/2018/day02.html
[2]: Wiki: Master boot record
HD を区分けして使う
各 HD の MBR に区分け情報
図1: MBR
枠で囲った 64B(=16✕4 B) -- from addr 0x1be
to 0x1fd
.
ここに4つの partition の情報が含まれている。続く 2B (55 AA
) は boot signature と呼ばれている。後に説明する PBR と EBR にも同じ signature が含まれている。
first partition info: (文献[
Partition table entry は
size 情報は各々
first partition の first sector の byte アドレスを計算すると
[3] Wikipedia: Partition Type
80 20 21 00 07 FE FF FF 00 08 00 00 00 A0 F2 06
00 FE FF FF 05 FE FF FF 58 AE F2 06 69 89 06 07
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
各エントリの構造
現在では CHS 方式のアドレスは(よほど小さいディスクで無い限り)意味を失っている。
オフセット
サイズ
内容
0
1
ブートフラグ(
0x80
= ブート可, 0x00
= ブート不可)
1
3
パーティションの最初のセクタ。CHS 方式での値
4
1
パーティションの種類(パーティション識別子)
5
3
パーティションの最後のセクタ。CHS 方式での値
8
4
パーティションの最初のセクタ。LBA 方式での値
12
4
パーティションの全セクタ数
partition type (パーティション識別子) は(例えば文献[3]によると)
07 -- hpfs(High Performance FS) (他にいろいろな可能性がある)
05 -- extended
00 08 00 00
58 AE F2 06
00 00 08 00 --> 0x800
06 F2 AE 58 --> 0x6f2ae58
0x100000
0xde55cb000
00 A0 F2 06
69 89 06 07
0x06f2a000*512 B --> 59680751616 B
0x07068969*512 B --> 60348879360 B
0x0100000
である。