Biraz kısa bir testten sonra ve yalnızca sanal bir ortamda TestDisk ve sfdisk ile (fdisk veya gparted gibi bir şeyde yeni bir bölüm tablosu oluşturmanın bunu bir dokunuşta bırakacağını doğrulayamıyorum) hayır demeye meyilliyim, bölüm tablosu yazmak ilk 512 bayttan başka hiçbir şeyi etkilemez.
Test adımları aşağıdadır ...
100 MB'lık bir sabit disk oluşturdum ve aşağıdaki gibi bölümlendirdim:
Daha sonra ilk 512 baytı silmeden önce her bölüme dosya ekledim ve dosya ekledim.
sudo dd if=/dev/zero bs=1 count=512 conv=notrunc of=/dev/sdb
Fdisk ile yapılan hızlı bir kontrol, bunun silindiğini göstermiştir.
richard@mint14 ~/Disktests $ sudo fdisk -lu /dev/sdb
Disk /dev/sdb: 104 MB, 104857600 bytes
255 heads, 63 sectors/track, 12 cylinders, total 204800 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
Disk identifier: 0x00000000
Disk /dev/sdb doesn't contain a valid partition table
Bu yüzden diskleri başarıyla tarayarak bölümleri başarıyla bulan TestDisk'i çalıştırdım ve diske yazdım.
Bundan sonra sfdisk kullanarak bölümleme tablosunu attı
richard@mint14 ~/Disktests $ sudo sfdisk -d /dev/sdb > sdb_partitions.out
Warning: extended partition does not start at a cylinder boundary.
DOS and Linux will interpret the contents differently.
richard@mint14 ~/Disktests $ cat sdb_partitions.out
# partition table of /dev/sdb
unit: sectors
/dev/sdb1 : start= 2048, size= 20480, Id=83, bootable
/dev/sdb2 : start= 22528, size= 61440, Id=83
/dev/sdb3 : start= 83968, size= 61440, Id= 5
/dev/sdb4 : start= 145408, size= 59392, Id= 7
/dev/sdb5 : start= 86016, size= 59392, Id=83
Bu dosyanın bir kopyasını yaptım ve tek bir 20 MB'lık bir bölüm oluşturmak için el ile düzenledim, böylece birincisi ikinci bölümle örtüşüp sürücüye geri yazdı
richard@mint14 ~/Disktests $ sudo sfdisk /dev/sdb < sdb_partitions.out_modified
Checking that no-one is using this disk right now ...
OK
Disk /dev/sdb: 12 cylinders, 255 heads, 63 sectors/track
sfdisk: ERROR: sector 0 does not have an MSDOS signature
/dev/sdb: unrecognised partition table type
Old situation:
No partitions found
New situation:
Warning: The partition table looks like it was made
for C/H/S=*/173/42 (instead of 12/255/63).
For this listing I'll assume that geometry.
Units = sectors of 512 bytes, counting from 0
Device Boot Start End #sectors Id System
/dev/sdb1 * 2048 43007 40960 83 Linux
start: (c,h,s) expected (0,48,33) found (0,32,33)
end: (c,h,s) expected (5,158,42) found (2,172,42)
/dev/sdb2 0 - 0 0 Empty
/dev/sdb3 0 - 0 0 Empty
/dev/sdb4 0 - 0 0 Empty
Warning: partition 1 does not end at a cylinder boundary
Successfully wrote the new partition table
Re-reading the partition table ...
Fdisk ile yapılan bir başka hızlı kontrol, bu bölümleme tablosunun diske başarıyla yazıldığını gösterir.
richard@mint14 ~/Disktests $ sudo fdisk -lu /dev/sdb
Disk /dev/sdb: 104 MB, 104857600 bytes
173 heads, 42 sectors/track, 28 cylinders, total 204800 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
Disk identifier: 0x00000000
Device Boot Start End Blocks Id System
/dev/sdb1 * 2048 43007 20480 83 Linux
Sonunda orijinal bölüm tablosunu değiştirmek için sfdisk kullanmak
richard@mint14 ~/Disktests $ sudo sfdisk --force /dev/sdb < sdb_partitions.out
Checking that no-one is using this disk right now ...
OK
Disk /dev/sdb: 12 cylinders, 255 heads, 63 sectors/track
sfdisk: ERROR: sector 0 does not have an MSDOS signature
/dev/sdb: unrecognised partition table type
Old situation:
No partitions found
New situation:
Units = sectors of 512 bytes, counting from 0
Device Boot Start End #sectors Id System
/dev/sdb1 * 2048 22527 20480 83 Linux
/dev/sdb2 22528 83967 61440 83 Linux
/dev/sdb3 83968 145407 61440 5 Extended
/dev/sdb4 145408 204799 59392 7 HPFS/NTFS/exFAT
/dev/sdb5 86016 145407 59392 83 Linux
Daha sonra bunların her birini tekrar monte ettim ve dosyaların orada ve dokunuşta olduğunu doğruladım.