1

Temat: Dostęp do partycji 32MB z obrazów CF z Atari Portfolio

Obrazy kart CF które były "sformatowane" w Atari Portfolio przy użyciu prostego interface opartego na 74HC138 (link - webarchive) są dostępne przez zamontowanie poszczególnych "partycji". Piszę w cudzysłowie bo nie ma takim obrazie tablicy partycji, a dostęp jest przez opcję offset do komendy mount. Mam tylko problem z ostatnią częścią która wypełnia resztę dostępnej pamięci, np. dla karty 192MB ostatnia część (dysk i:) jest o wielkości 25296896 bajtów zamiast jak wszystkie inne poprzednie 33423360 bajtów.

simon@nb:~/Documents/atari/pofo/transpofo (master)*
$ hexdump -C --skip $(( 0 * 33423360 )) --length 32 sandisk_192MB.img
00000000  e9 29 00 50 6f 46 6f 43  46 2d 33 00 02 10 01 00  |.).PoFoCF-3.....|
00000010  01 80 00 00 ff f8 0c 00  08 00 02 00 00 00 00 00  |................|
00000020
simon@nb:~/Documents/atari/pofo/transpofo (master)*
$ hexdump -C --skip $(( 1 * 33423360 )) --length 32 sandisk_192MB.img
01fe0000  e9 29 00 50 6f 46 6f 43  46 2d 33 00 02 10 01 00  |.).PoFoCF-3.....|
01fe0010  01 80 00 00 ff f8 0c 00  08 00 02 00 00 00 00 00  |................|
01fe0020
simon@nb:~/Documents/atari/pofo/transpofo (master)*
$ hexdump -C --skip $(( 2 * 33423360 )) --length 32 sandisk_192MB.img
03fc0000  e9 29 00 50 6f 46 6f 43  46 2d 33 00 02 10 01 00  |.).PoFoCF-3.....|
03fc0010  01 80 00 00 ff f8 0c 00  08 00 02 00 00 00 00 00  |................|
03fc0020
simon@nb:~/Documents/atari/pofo/transpofo (master)*
$ hexdump -C --skip $(( 3 * 33423360 )) --length 32 sandisk_192MB.img
05fa0000  e9 29 00 50 6f 46 6f 43  46 2d 33 00 02 10 01 00  |.).PoFoCF-3.....|
05fa0010  01 80 00 00 ff f8 0c 00  08 00 02 00 00 00 00 00  |................|
05fa0020
simon@nb:~/Documents/atari/pofo/transpofo (master)*
$ hexdump -C --skip $(( 4 * 33423360 )) --length 32 sandisk_192MB.img
07f80000  e9 29 00 50 6f 46 6f 43  46 2d 33 00 02 10 01 00  |.).PoFoCF-3.....|
07f80010  01 80 00 00 ff f8 0c 00  08 00 02 00 00 00 00 00  |................|
07f80020
simon@nb:~/Documents/atari/pofo/transpofo (master)*
$ hexdump -C --skip $(( 5 * 33423360 )) --length 32 sandisk_192MB.img
09f60000  e9 29 00 50 6f 46 6f 43  46 2d 33 00 02 0d 01 00  |.).PoFoCF-3.....|
09f60010  01 80 00 00 c1 f8 0c 00  08 00 02 00 00 00 00 00  |................|
09f60020

Ta ostania część ma w nagłówku na pozycji 13 : 0x0d - wartość która jest ponoć niewłaściwa (link):

13      Number of sectors per cluster (1)
        Must be one of 1, 2, 4, 8, 16, 32, 64, 128.
        A cluster should have at most 32768 bytes. In rare cases 65536 is OK.

Dla innej karty (o pojemności 64MB), ostatnia (druga) partycja miała w tym miejscu wartość 0x0f, więc podejrzewam że jest to wartość ustalona podczas wykonywania mkfs na poszczególnych dyskach zamontowanych w PoFo.
Ustawienie tego pola w edytorze na wartość 0x10 (16) pozwala na podmontowanie, ale po nagraniu jakichś danych, pod PoFo poprawnie widoczny jest tylko katalog /.

Po pocięciu splitem ("split -b 33423360") na osobne pliki, file prawidłowo rozpoznaje poszczególne "kawałki" i podaje dla ostatniej części "sectors/cluster 13":

$ for l in a b c d e f; do file sandisk_192MB.img_part_a${l}; done
sandisk_192MB.img_part_aa: , code offset 0x29+3, OEM-ID "PoFoCF-3", sectors/cluster 16, FAT  1, root entries 128, sectors 65280 (volumes <=32 MB), Media descriptor 0xf8, sectors/FAT 12, sectors/track 8, reserved 0x1, dos < 4.0 BootSector (0), FAT (1Y bit by descriptor)
sandisk_192MB.img_part_ab: , code offset 0x29+3, OEM-ID "PoFoCF-3", sectors/cluster 16, FAT  1, root entries 128, sectors 65280 (volumes <=32 MB), Media descriptor 0xf8, sectors/FAT 12, sectors/track 8, dos < 4.0 BootSector (0), FAT (1Y bit by descriptor)
sandisk_192MB.img_part_ac: , code offset 0x29+3, OEM-ID "PoFoCF-3", sectors/cluster 16, FAT  1, root entries 128, sectors 65280 (volumes <=32 MB), Media descriptor 0xf8, sectors/FAT 12, sectors/track 8, dos < 4.0 BootSector (0), FAT (1Y bit by descriptor)
sandisk_192MB.img_part_ad: , code offset 0x29+3, OEM-ID "PoFoCF-3", sectors/cluster 16, FAT  1, root entries 128, sectors 65280 (volumes <=32 MB), Media descriptor 0xf8, sectors/FAT 12, sectors/track 8, dos < 4.0 BootSector (0), FAT (1Y bit by descriptor)
sandisk_192MB.img_part_ae: , code offset 0x29+3, OEM-ID "PoFoCF-3", sectors/cluster 16, FAT  1, root entries 128, sectors 65280 (volumes <=32 MB), Media descriptor 0xf8, sectors/FAT 12, sectors/track 8, dos < 4.0 BootSector (0), FAT (1Y bit by descriptor)
sandisk_192MB.img_part_af: , code offset 0x29+3, OEM-ID "PoFoCF-3", sectors/cluster 13, FAT  1, root entries 128, sectors 49408 (volumes <=32 MB), Media descriptor 0xf8, sectors/FAT 12, sectors/track 8, dos < 4.0 BootSector (0), FAT (1Y bit by descriptor)

Czy któryś z kolegów lepiej zorientowanych w niuansach FAT12 wie jak podmontować taki "napęd" pod linux'em?


Pozdrawiam,
S.

poszukuje kwarcu 14.187576 MHz (CO70034)