diff -uNr dosfstools-2.11/dosfsck/boot.c dosfstools-2.11.fat32/dosfsck/boot.c --- dosfstools-2.11/dosfsck/boot.c 2006-11-09 23:41:09.000000000 +0100 +++ dosfstools-2.11.fat32/dosfsck/boot.c 2010-12-07 17:15:31.122383100 +0100 @@ -111,6 +111,20 @@ CF_LE_L(b->hidden)); sectors = GET_UNALIGNED_W( b->sectors ); printf("%10u sectors total\n", sectors ? sectors : CF_LE_L(b->total_sect)); + + /* FAT32 related stuff. Check for ATARI format??? */ + printf("Logical Drive No: %u (%u)\n", b->logicalno[0], b->logicalno[1]); + printf("Extended Signature: 0x%x\n", b->extsign); + printf("Serial No: 0x%8x\n", b->serialno); + + char s[12]; + strncpy(s, b->volname, 11); + s[11] = 0; + printf("Volume name: \"%s\"\n", s); + strncpy(s, b->fatname, 8); + s[8] = 0; + printf("FAT name: \"%s\"\n", s); + printf("Boot Record Signature: %X\n", b->signature); } static void check_backup_boot(DOS_FS *fs, struct boot_sector *b, int lss) diff -uNr dosfstools-2.11/dosfsck/dosfsck.h dosfstools-2.11.fat32/dosfsck/dosfsck.h --- dosfstools-2.11/dosfsck/dosfsck.h 2010-12-07 17:19:29.023665600 +0100 +++ dosfstools-2.11.fat32/dosfsck/dosfsck.h 2010-12-07 17:06:52.646031400 +0100 @@ -51,6 +51,7 @@ /* ++roman: Use own definition of boot sector structure -- the kernel headers' * name for it is msdos_boot_sector in 2.0 and fat_boot_sector in 2.1 ... */ +/* From: http://www.easeus.com/resource/fat32-disk-structure.htm */ struct boot_sector { __u8 ignored[3]; /* Boot strap short or near jump */ __u8 system_id[8]; /* Name - can be used to special case @@ -59,10 +60,10 @@ __u8 cluster_size; /* sectors/cluster */ __u16 reserved; /* reserved sectors */ __u8 fats; /* number of FATs */ - __u8 dir_entries[2]; /* root directory entries */ - __u8 sectors[2]; /* number of sectors */ - __u8 media; /* media code (unused) */ - __u16 fat_length; /* sectors/FAT */ + __u8 dir_entries[2]; /* root directory entries, Not FAT32*/ + __u8 sectors[2]; /* number of sectors, Not FAT32 */ + __u8 media; /* media code (unused), $F8 */ + __u16 fat_length; /* sectors/FAT, Not FAT32 */ __u16 secs_track; /* sectors per track */ __u16 heads; /* number of heads */ __u32 hidden; /* hidden sectors (unused) */ @@ -77,8 +78,17 @@ __u16 backup_boot; /* backup boot sector */ __u16 reserved2[6]; /* Unused */ + /* Extended FAT32 */ + __u8 logicalno[2]; /* Logical Drive Number of Partition */ + __u8 extsign; /* Extended Signature (29h) */ + __u32 serialno; /* Serial Number of Partition */ + __u8 volname[11]; /* Volume Name of Partition */ + __u8 fatname[8]; /* FAT Name (FAT32) */ + /* fill up to 512 bytes */ - __u8 junk[448]; + //__u8 junk[448]; + __u8 junk[420]; /* Executable Code */ + __u16 signature; /* Boot Record Signature (55hAAh) */ } __attribute__ ((packed)); struct info_sector {