Organisation d`un disque dur et de ses partitions
Transcription
Organisation d`un disque dur et de ses partitions
partition-boot-2002 page 1/22 Principes du partitionnement & information FAT-BOOT… (source : http://www.bellamyjc.net/fr/) • • • • • • • Organisation d'un disque dur et de ses partitions Structure du secteur de partition (MBR) Structure d'une entrée dans la table de partition Tableau des types de partition Tailles limites de partitions dues aux interfaces et au BIOS Tailles limites dues aux types de partition (FAT et NTFS) Secteur de boot de partition FAT12 ou FAT16 (DOS, Windows 3.x, Windows 9x, Windows NT) • • • • • • • • Secteur de boot de partition FAT32 (Windows 9x, Windows 2000) Les clusters d'une partition FAT Nombre maximum d'entrées à la racine d'une partition FAT Structure d'une entrée de répertoire FAT et noms longs Comparaison entre FAT(32) et NTFS Mécanisme de boot d'un PC Le formatage bas niveau La séquence de BOOT de Windows NT Organisation d'un disque dur et de ses partitions Les catégories de partition ("primaire", "étendue", "logique") sont des notions INDÉPENDANTES de tout système d'exploitation. C'est lié UNIQUEMENT à la plate-forme matérielle, à savoir INTEL (et compatibles) Le partitionnement permet de découper un disque PHYSIQUE en plusieurs "morceaux" (partitions), cela étant d'ailleurs totalement indépendant des systèmes d'exploitation que l'on va y mettre (DOS, Win98, WinNT, W2k, Linux, Novell, Solaris, ...). Les raisons qui motivent ce partage sont multiples : • • • Coexistence de différents systèmes d'exploitation (DOS, Windows NT, LINUX, OS/2,...) Taille physique d'un disque trop grande par rapport à ce que peut gérer le système d'exploitation utilisé (p.ex. les premiers DOS ne pouvaient pas "adresser" des partitions de plus de 32 Moctets, les suivants plus de 2 Goctets,...) Séparation physique, pour des questions de sécurité, du système, des applications, des données,... On peut comparer un disque (physique) à une armoire, dans laquelle on va mettre des rayonnages (= les partitions), qui vont servir à accueillir aussi bien de la vaisselle, du linge, des bouteilles,...et permettre ainsi de faire un peu d'ordre dans tout ce bazar hétéroclite! Le problème (historique) est qu'au départ (et il est quasi impossible de revenir dessus, pour des questions de compatibilité avec l'existant) seulement 4 "rayonnages" au maximum ont été prévus. (De plus, DOS et Windows 95/98 ne permettent pas de créer plus d'une partition primaire - je me suis toujours demandé pourquoi! - mais ils acceptent des disques ayant plus d'une partition primaire, les partitions primaires supplémentaires ayant été créées en utilisant p.ex. "Partition Magic", "FDISK" de LINUX ou "WINDISK" de WinNT). Un tel rayonnage constitue une partition "PRIMAIRE" (ou "PRINCIPALE", les deux appellations sont équivalentes) Comme on peut être amené à avoir plus de 4 rangements différents, et bien l'un de ces rayonnages va contenir un "gros" tiroir compartimenté. Ce tiroir s'appelle partition "ÉTENDUE", et chaque compartiment du tiroir sera une partition "LOGIQUE". Toujours pour des questions historiques (au départ, les disques étaient tout petits, comparés à ceux de maintenant), on ne peut créer que un ou deux compartiments, le 2ème étant alors un nouveau tiroir, "emboîté" dans un compartiment. Et ce "petit" tiroir peut à nouveau contenir 2 compartiments, un pour du rangement (=partition LOGIQUE), et un autre pour un nouveau tiroir, et ainsi de suite, à l'infini (jusqu'à ce qu'il n'y ait plus de place du tout) AFPA TMSI Châtellerault Version du 17/Juillet/2002 partition-boot-2002 page 2/22 L'opération de "partage", ou partitionnement, est effectuée par : • • • • Fdisk (aussi bien sous DOS, Win98 que Linux) Windisk (sous Windows NT) Diskmgmt.msc (MMC sous Windows 2000) des outils dédiés tels que "Partition Magic" , "Ranish Partition Manager", ... Le partitionnement n'existe QUE POUR LES DISQUES DURS (et non pour les disquettes) Ensuite, la "préparation" des zones de rangements (=des cloisons dans les compartiments créés) est effectuée par l'outil Format (sous DOS/Windows). Donc un disque pourra avoir la structure suivante : DISQUE PHYSIQUE Partition étendue Partition primaire Partition étendue Partition logique Partition logique Partition étendue Partition logique Ce disque possède 1 partition PRIMAIRE (celle où on va stocker le système d'exploitation généralement), et 3 partitions LOGIQUES (ce sont les seules qui nous intéressent : les "contenus", les partitions ÉTENDUES n'étant que des "contenants") Voici un autre exemple, plus détaillé : Partition 1 (primaire) (FAT) Partition 2 (primaire) (FAT) Partition 3 (étendue) Partition logique 3.1 Partition 4 (primaire) (NTFS) Partition étendue 3.2 MBR Partition Partition logique 3.2.1 étendue 3.2.2 BS FAT Root Files BS FAT Root Files EBR BS EBR BS EBR Partition logique 3.2.2.1 BS MFT Files MFT BS Files bis bis ... BS MBR : Master Boot Record (secteur de partition principal) EBR : Extended Boot Record (secteur de partition secondaire : contient la table des partions d'une partition étendue) BS: Boot Sector (secteur de boot) Root : répertoire racine (FAT) FAT : File Allocation Table, a donné son nom au type de partition du même nom, utilisé par DOS, Windows 95/98, Windows NT la FAT est une table de chaînage de clusters (agrégats de secteurs) permettant l'adressage et la reconstitution des fichiers NTFS : NT File Sytem, utilisé par Windows NT MFT : Master File Table, un composant de NTFS Ce disque (physique) est composé de : • • 3 partitions "PRIMAIRES" (dont la 1ère est celle où on va mettre le système d'exploitation généralement) 3 partitions LOGIQUES (ce sont les seules qui nous intéressent : les "contenus", les partitions ÉTENDUES n'étant que des "contenants") On pourra attribuer p.ex. : • • • la 1ère logique aux applications de bureautique la 2ème aux documents (bitmaps, documents Word, Excel, texte,..), la 3ème aux applications Internet (navigateurs, zones de téléchargement, FTP, ...). Tout dépend de "l'humeur" de l'utilisateur (en ce qui me concerne, j'ai une partition "outils de développement", une "gravure de CD", une "outils de dessin", une "utilitaires", une "backup vitaux", une pour la mémoire virtuelle...) AFPA TMSI Châtellerault Version du 17/Juillet/2002 partition-boot-2002 page 3/22 Le secteur de partition principal (MBR) est situé au début du disque (tête 0, cylindre 0, secteur 1), comme tout secteur il a une taille de 512 octets. Il est chargé par le BIOS à l'adresse mémoire 0000:7C00 (si une disquette n'a pas "pris la main"). Ensuite, le BIOS teste si le dernier mot (de 16 bits) de ce secteur est égal à 0xAA55, qui indique que le disque a bien été partitionné (sinon, un message d'erreur est affiché par le BIOS). Si c'est effectivement le cas, le programme de partition qui réside au début de ce secteur est lancé. Structure du secteur de partition Adresse (hexa) Contenu Taille (octets) 000 Programme de partition 442 1B8 Signature (sous Windows NT/2000) 4 1BE 1ère entrée dans la table de partition 16 1CE 2ème entrée dans la table de partition 16 1DE 3ème entrée dans la table de partition 16 1EE 4ème entrée dans la table de partition 16 1FE AA55 (code d'identification) 2 Remarques : • • On constate qu'il ne peut pas y avoir plus de 4 partitions dites primaires (cette limite peut être contournée à l'aide des partitions étendues) L'information de 4 octets située à l'offset 1B8 est utilisée seulement par Windows NT/2000 pour "signer" le disque physique. Cette opération est exécutée par le gestionnaire de disques (Windisk) la première fois qu'il est lancé (ou après ajout ou remplacement du disque). Cette valeur est recopiée dans la base de registres, dans la clef HKEY_LOCAL_MACHINE\SYSTEM\DISK, entrée "Information" (et éventuellement dupliquée dans l'entrée "VirtualInfo"), et se situe entre l'offset 0034 et 0037 pour le 1er disque. Les emplacements des signatures des autres disques éventuels dépendent du nombre de partitions de chaque disque). NB : Un disque doit être signé pour qu'il puisse être géré par Windisk. Structure d'une entrée dans la table de partition Offset dans le Adresse MBR (ou EBR) (hexa) (hexa) Entrées : 1 2 3 4 Contenu Taille (octets) Etat de la partition : 00 1BE 1CE 1DE 1EE - 00 : partition non active - 80 : partition active 1 01 1BF 1CF 1DF 1EF N° de tête où commence la partition 1 02 1C0 1D0 1E0 1F0 N° de secteur et cylindre où commence la partition 2 04 1C2 1D2 1E2 1F2 Type de partition : 1 05 1C3 1D3 1E3 1F3 N° de tête où finit la partition 1 06 1C4 1D4 1E4 1F4 N° de secteur et cylindre où finit la partition 2 Distance en secteurs entre secteur de partition 08 1C6 1D6 1E6 1F6 et secteur de boot de la partition 4 0C 1CA 1DA 1EA 1FA Taille de la partition en nombre de secteurs de 512 octets 4 Une partition étendue se compose d'une nouvelle table de partition, de structure identique à celle de la table principale, permettant ainsi un chaînage vers des partitions supplémentaires "encapsulées" à la suite. AFPA TMSI Châtellerault Version du 17/Juillet/2002 partition-boot-2002 page 4/22 Tableau des types de partition Les partitions peuvent être de différents types (méthode de "rangement"). Chaque type définit ce qu'on appelle un "système de fichiers" ("FS" ou FileSystem en anglais), lequel est, la plupart du temps, fonction du système d'exploitation ("OS" ou OperatingSystem en anglais), mais la correspondance n'est pas forcément biunivoque. Certains systèmes d'exploitation sont très "fermés", n'acceptant qu'un seul système de fichiers (DOS p.ex.), d'autres au contraire sont très "ouverts", acceptant à la fois leur propre système de fichiers et celui d'autres systèmes d'exploitation (Linux et BeOS p.ex.). Cette ouverture peut toutefois se limiter à des accès en lecture seule. Il est néanmoins possible d'accéder - dans certains cas - à un type de FS non reconnu par un OS à l'aide de produits spécifiques, (commerciaux ou freewares). Par exemple le logiciel Explore2Fs est un freeware qui permet la lecture (et même l'écriture) de partitions EXT2 (Linux) sous Windows. Le nom des FS est généralement un acronyme ("FAT" = File Allocation Table, "NTFS" = New Technology File System, ...) Voici un tableau succinct donnant les correspondances entre OS et FS : OS / FS ISO9660 FAT12 FAT16 FAT32 NTFS EXT2 BeFS DOS 6.x Windows 95 <OSR2 Windows 95 OSR2 et > Windows NTx Windows 2000 Linux R Be OS R R = supporté = non supporté = supporté mais à l'aide de produit tiers (driver, logiciel, ..) • • • R ISO9660 le driver FAT32.SYS permet l'accès à des partitions FAT32 sous Windows NT4 l'outil NTFS98 permet l'accès à des partitions NTFS et NTFS5 sous Windows 9x l’outil NTFSDOS Pro permet l'accès à des partitions NTFS et NTFS5 sous DOS = ReadOnly (Lecture seule) = format standard des CDROM AFPA TMSI Châtellerault Version du 17/Juillet/2002 partition-boot-2002 page 5/22 Le type d'une partition étant défini par un octet, il existe théoriquement 255 systèmes de fichiers possibles. Dans le tableau ci-dessous, les codes des partitions sont en hexadécimal. Plusieurs types de partition peuvent être désignés par le même code (p.ex. HPFS d'OS/2 et NTFS de NT). code type code type code type code type 00 partition non définie 40 VENIX 80 MINIX (-> 1.4a) C0 CTOS REAL/32 secure NTFT 01 FAT12 (< 10 M) 41 MINIX + DRDOS Personal RISC Boot Power PC Reference Platform 81 MINIX (1.4b ->) Mitac Disk Manager C1 FAT-12 DRDOS 02 XENIX root 42 Linux swap + DRDOS SFS Windows 2000 82 Solaris X86 LINUX swap Prime C2 Linux swap cachée 03 XENIX /usr 43 Linux native + 83 LINUX native (ext2fs) C3 Linux cachée 04 FAT16 (< 32 M) 44 non attribué 84 OS/2 cachée Hibernation C4 FAT16 < 32M DRDOS 05 étendue 45 Boot-US boot manager EUMEL/Elan 85 Linux étendue C5 non attribué 06 FAT16 (> 32 M et <2 G) 46 EUMEL/Elan 86 agrégat FAT (NT) C6 FAT16 >= 32M DRDOS FAT16 corrompue (NT) 07 OS/2 HPFS NT NTFS Advanced UNIX QNX2.x 47 EUMEL/Elan 87 agrégat NTFS (NT) C7 08 AIX boot SplitDrive Commodore DOS DELL spanning QNX 1.x et 2.x 48 EUMEL/Elan 88 non attribué C8 non attribué 09 AIX data Coherent FileSystem 49 non attribué 89 non attribué C9 non attribué 0A OS/2 boot manager Coherent swap OPUS 4A non attribué 8A Linux Kernel CA non attribué 0B FAT32 (>2 G et <2047 G) 4B non attribué 8B FAT32 miroir CB FAT32 DRDOS 0C FAT32x = idem 0B + LBA 4C non attribué 8C FAT32x miroir CC FAT32x DRDOS 0D non attribué 4D QNX4.x 8D FAT12 cachée (FreeFDISK) CD CTOS 0E FAT16x = idem 06 + LBA 4E QNX4.x 2ème part. 8E Linux Logical Volume Manager CE FAT16x DRDOS 0F étendue"x" = idem 05 + LBA 4F QNX4.x 3ème part. Oberon 8F non attribué CF non attribué 10 OPUS 50 OnTrack Disk Manager Lynx RTOS Oberon native 90 FAT16 cachée (FreeFDISK) D0 REAL32 11 FAT12 cachée 51 OnTrack Disk Manager RW Novell 91 étendue cachée (FreeFDISK) D1 Multiuser DOS secured FAT12 12 Diagnostics COMPAQ 52 Microport CP/M 92 FAT16 large cachée (FreeFDISK) D2 non attribué 13 non attribué 53 Disk Manager 6.0 Aux3 93 Amoeba Linux native cachée D3 non attribué AFPA TMSI Châtellerault DRDOS NTFS corrompue (NT) Syrinx boot Version du 17/Juillet/2002 partition-boot-2002 page 6/22 14 FAT16 (< 32 M) cachée 54 Disk Manager 6.0 Dynamic Drive Overlay 94 Amoeba bad block table D4 Multiuser DOS secured FAT16 <32M 15 non attribué 55 EZ-Drive 95 MIT EXOPC native D5 Multiuser DOS secured étendue 16 FAT16 (> 32 M) cachée 56 Golden Bow EZ-BIOS 96 non attribué D6 Multiuser DOS secured FAT16 >=32M 17 HPFS - NTFS cachée 57 DrivePro VNDI 97 FAT32 cachée (FreeFDISK) D7 non attribué 18 AST Windows swapfile 58 non attribué 98 FAT32x cachée (FreeFDISK) D8 CP/M-86 19 Willowtech Photon coS 59 non attribué 99 DCE376 logical drive D9 non attribué 1A non attribué 5A non attribué 9A FAT16x cachée (FreeFDISK) DA Non-FS Data 1B FAT32 cachée 5B non attribué 9B étendue X cachée (FreeFDISK) DB Digital Research CP/M Concurrent CP/M Concurrent DOS CTOS KDG Telemetry SCPU boot 1C FAT32x cachée 5C Priam EDisk 9C non attribué DC CTOS 1D non attribué 5D non attribué 9D non attribué DD CTOS cachée 1E FAT16x cachée 5E non attribué 9E non attribué DE non attribué 1F non attribué 5F non attribué 9F BSD/OS DF DG/UX virtual disk manager 20 Willowsoft OFS1 60 non attribué A0 hibernation E0 ST AVFS 21 Oxygen File System 61 SpeedStor A1 réservé E1 SpeedStor FAT12 22 Oxygen Extended 62 non attribué A2 non attribué E2 non attribué 23 réservé 63 Unix System V GNU HURD A3 réservé E3 SpeedStor 24 NEC DOS 3.x 64 Novell 286 PC-ARMOUR A4 réservé E4 SpeedStor étendue 25 non attribué 65 Novell 386 A5 BSD E5 réservé 26 réservé 66 Novell Netware SMS A6 OpenBSD E6 réservé 27 non attribué 67 Novell A7 NEXTSTEP E7 non attribué 28 non attribué 68 Novell A8 non attribué E8 non attribué 29 non attribué 69 Novell Netware NSS A9 NetBSD E9 non attribué 2A non attribué 6A non attribué AA Fat 12 1.44Mb Olivetti EA non attribué 2B non attribué 6B non attribué AB non attribué EB Be FS 2C non attribué 6C non attribué AC non attribué EC non attribué 2D non attribué 6D non attribué AD non attribué ED non attribué 2E non attribué 6E non attribué AE ShagOS filesystem EE EFI MBR 2F non attribué 6F non attribué AF ShagOS swap partition EF EFI 30 non attribué 70 DiskSecure Multi-Boot B0 non attribué F0 Linux/PA-RISC boot loader 31 réservé 71 réservé B1 réservé F1 SpeedStor 32 non attribué 72 réservé B2 non attribué F2 DOS 3.3+ secondary partition 33 réservé 73 réservé B3 réservé F3 réservé 34 réservé 74 Scramdisk B4 réservé F4 SpeedStor large AFPA TMSI Châtellerault Version du 17/Juillet/2002 partition-boot-2002 page 7/22 Prologue single-volume 35 Journaling FS OS/2 ou eCS 75 IBM PC/IX B5 non attribué F5 Prologue multi-volume 36 réservé 76 réservé B6 réservé F6 réservé 37 non attribué 77 VNDI B7 BSDI BSD/386 F7 non attribué 38 THEOS ver 3.2 2 Go 78 XOSL Bootloader B8 BSDI BSD/386 swap F8 non attribué 39 Plan 9 THEOS ver 4 spanned 79 non attribué B9 non attribué F9 non attribué 3A THEOS ver 4 4Go 7A non attribué BA non attribué FA non attribué 3B THEOS ver 4 étendue 7B non attribué BB non attribué FB VMware File System 3C PartitionMagic recovery 7C non attribué BC non attribué FC VMware Swap 3D non attribué 7D non attribué BD non attribué FD Linux raid 3E non attribué 7E non attribué BE Solaris 8 boot FE SpeedStor > 1024 cyl IBM PS/2 IML Windows NT Disk Administrator Linux Logical Volume Manager 3F non attribué 7F non attribué BF non attribué FF Xenix Bad Block Table Remarques : • Les n° de cylindre et de secteur sont codés sur 16 bits (2octets ) de la façon suivante : 15 14 13 12 11 10 09 08 07 06 05 04 03 02 01 00 <-------- Cylindre ---------> <--- Secteur ---> • Attention : les bits 6 et 7 représentent les bits de poids fort du cylindre (donc à faire passer a gauche du bit 15) Par exemple, si en 1D0 on trouve 4106, cela signifie (notation "little endian", donc 06 est l'octet de poids fort) • octets 07 06 05 04 03 02 01 00 07 06 05 04 03 02 01 00 0 0 0 0 0 1 1 0 0 1 0 0 0 0 0 1 <---------06----------> <-------- 41 ---------> C/S bruts 15 14 13 12 11 10 09 08 07 06 05 04 03 02 01 00 <-------- Cylindre ---------> <--- Secteur ---> 0 0 0 0 0 1 1 0 0 1 0 0 0 0 0 1 |__| /---<------------<-----/ |--| C/S réels • • • • • • 0 1 0 0 0 0 0 1 = cylindre 0x106 (262) 1 0 0 0 0 0 0 = secteur 0x1 1 LBA = LogicalBlock Addressing, dispositif du BIOS permettant l'accès à des disques de plus de 1024 cylindres par utilisation d'extensions de l'interruption logicielle 13h Si le bit 4 du type de la partition est mis à 1, cela permet de cacher la partition (xxx1xxxx) Ex.: 83 = Linux native / 93 = Linux native cachée Pour des partitions de taille <8 Go, les informations situées aux offsets 08 et 0C (distance et taille) sont redondantes par rapport aux informations situées aux offsets 01/02 et 05/06 (Cylindre, Tête et Secteur - CHS en anglais) Pour des partitions de taille >8 Go, seules les informations situées aux offsets 08 et 0C (distance et taille) sont valides. En effet, pour de telles partitions le n° de cylindre dépasse 1024, et donc ne peut pas être codé sur 10 bits, donc les informations situées aux offsets 02 et 06 sont fausses. De plus, il est nécessaire que les extensions de l'interruption 13h du BIOS soient disponibles pour gérer ces informations en mode LBA Si un agrégat de partition (sous Windows NT) vient à être défectueux, le bit 6 du type de la partition est mis à 1, donnant ainsi les valeurs 0xC6 (FAT) et 0xC7 (NTFS) AFPA TMSI Châtellerault Version du 17/Juillet/2002 partition-boot-2002 • • • page 8/22 La partition de Diagnostics COMPAQ est en réalité une partition FAT de 6 à 64 Mo environ, bootable, dans laquelle COMPAQ stocke des outils de configuration et diagnostics Sous Windows 2000, si une entrée de la table de partition possède le type 0x42, alors W2k ignore la table et utilise sa propre table ainsi qu'un schéma de partitionnement propriétaire LDM (Logical Disk Manager) Un certain nombre de PC portables (IBM Thinkpad, Toshiba, Sony VAIO,...) mettent en oeuvre une partition d'hibernation ayant le code 0xA0 Tailles limites de partitions dues aux interfaces et au BIOS Sigles : • • • IDE = Integrated Drive Electronics. En réalité, on devrait utiliser l'appellation ATA = AT Attachments). C'est une norme de configuration des disques durs, pour lesquels le contrôleur du disque est intégré au disque lui-même. EIDE = Enhanced Integrated Drive Electronics. En réalité, on devrait utiliser l'appellation ATA-2, ou encore le nom officiel ANSI X3TD10948D LBA = Logical Block Addressing. C'est une technique EIDE qui permet de remplacer l'adresse physique d'un secteur (CTS = Cylindre - Tête - Secteur, ou CHS en anglais = Cylinder - Head Sector) par une adresse linéaire absolue du secteur sur 32 bits (ou 28, les 4 1ers bits pouvant être réservés). Cet acronyme LBA est source de confusion. En effet, il est pris parfois pour "Large Block Addressing", désignant une (ancienne maintenant) méthode de conversion de l'adresse physique CTS en une adresse logique CTS, dans laquelle un même facteur donné multiplie le nombre de têtes et divise le nombre de cylindres afin que n° de cylindre soit toujours inférieur à 1024. Interface IDE Un enregistrement d'un disque se fait à l’aide de l’interruption 13h, en lui passant comme paramètres les n° de cylindre, secteur et tête, les deux premiers (cylindre et secteur) étant codés dans les registres CH et CL. • • • • Un numéro de cylindre est code sur 10 bits, soit une plage 0-1023 Un numéro de secteur est code sur 6 bits, soit une plage 1-63 (le secteur 0 n'est pas adressé) Par ailleurs, l'interface matérielle WD1003 gère 16 têtes au maximum Un secteur comprend 512 octets On en déduit la taille maximale d’une partition IDE = 1024 x 63 x 16 x 512 = 528482304 octets = 504 Moctets. Interface EIDE La norme EIDE supporte par contre 255 têtes (au lieu de 16). Donc la capacité maximale devient : = 1024 x 63 x 255 x 512 = 8422686720 octets = 7.9 Goctets, arrondis communément à 8 Go AFPA TMSI Châtellerault Version du 17/Juillet/2002 partition-boot-2002 page 9/22 BIOS LBA L'adressage d'un cylindre est toujours limité à 1024, en raison des 10 bits prévus pour cela. Les disques peuvent dépasser physiquement cette valeur. Pour contourner cette limitation, il y a essentiellement 2 méthodes : • • Translation d'adresse : un BIOS compatible EIDE va "transformer" l'adressage CTS "physique" en adressage CTS "logique", par exemple en multipliant par 2 le nombre de têtes et en divisant le nombre de cylindres par 2. Ainsi, un disque de 1500 cylindres et 24 têtes (physiques) sera "vu" comme un disque de 750 cylindres (<1024) et 48 têtes. Cette méthode ne permet pas de dépasser la limite des 8 Go !! Adressage LBA (géré par le BIOS) : l'adressage d'un secteur est linéaire (sur 32 bits en théorie). C'est la seule méthode possible pour dépasser la limite des 8 Go. Elle est basée sur l'utilisation de nouvelles fonctions (extensions) de l'interruption 13h. Il faut donc posséder un BIOS doté de ces extensions. Un secteur ayant une taille de 512 octets, la taille maximale d'un disque est théoriquement = 2^32 x 512 octets = 2 To Comme pour l'instant seulement 28 bits sur 32 sont utilisés pour adresser les secteurs, la taille maximale d'un disque (et a fortiori d'une partition) est actuellement = 2^28 x 512 octets = 128 Go Tailles limites dues aux types de partition (FAT et NTFS) FAT16 Les partitions FAT16 codant les n° de clusters sur 16 bits, le nombre maximal de clusters est donc limité à 2^16 = 65 536. Comme un cluster ne peut dépasser (sous DOS, Windows 95 et Windows 98) 32 768 octets, la taille maximale d'une partition FAT16 est donc = 65536x32768 = 2147483648 octets = 2 Go Sous NT4/W2K/XP, en utilisant des clusters de 64 ko (au lieu de 32ko), la taille maximale d'une partition FAT16 (qui ne sera accessible que par ces systèmes) est : = 4 Go FAT32 Les partitions FAT32 (reconnues sous Windows 95 OSR2, Windows 98, Windows 2000, WIndows XP) codant les n° de clusters sur 32 bits, le nombre maximal de clusters est donc limité à 2^32 = 4 294 967 296. La taille maximale THÉORIQUE d'une partition FAT32 est donc = 2^32 x 32768 = 4 294 967 296 x 32768 = 140 737 488 355 328 octets = 128 To En réalité, les n° de clusters sont codés seulement sur 28 bits, les 4 bits de poids forts étant réservés. = 2^28 x 32768 = 268 435 456 x 32768 De plus, certains n° de clusters sont réservés (n° de clusters fictifs indiquant cluster invalide, vide, ...), ce nombre maximal tombe à 268 435 445. Donc la taille maximale EFFECTIVE THÉORIQUE d'une partition FAT32 est donc : = 268 435 445 x 32768 = 8 796 092 661 760 octets = 8 To mais compte tenu de la limitation EIDE citée plus haut, la taille maximale RÉELLE d'une partition FAT32 est en réalité = 8 Go AFPA TMSI Châtellerault Version du 17/Juillet/2002 partition-boot-2002 page 10/22 FAT32x Pour dépasser cette limite, Microsoft a créé un nouveau type de partition, appelé FAT32X, supporté seulement par Windows 95 OSR2, Windows 98, Windows Me et par Windows 2000/XP, qui permet d'utiliser des partitions de taille supérieure à cette limite des 8 Goctets. Elle est subordonnée obligatoirement à l'utilisation des extensions de l'interruption 13h du BIOS (mode LBA). La FAT se trouve en particulier déplacée à la fin de la partition (au lieu de suivre le secteur de boot). La taille limite des partitions FAT32X est = 128 Go (= la limite due au mode LBA). sous Windows 2000/XP, la taille maximale d'une FAT32X est = 32 Go (restriction due à l'outil de formatage). Mais Windows 2000/XP peut néanmoins accéder à des partitions créées par Windows 95 OSR2/98/Me et de tailles supérieures à 32Go (jusqu'à 128 Go). NTFS En ce qui concerne les partitions NTFS, il n'y pas vraiment de limite, puisque leur taille maximale est en théorie = 2^64 octets = 16 Eo (Exaoctets). Mais compte tenu des limitations BIOS dues au mode d'adressage des secteurs, la taille effective maximale d'une partition NTFS est = 2 To (128 Go actuellement) RECAPITULATIF A l'heure actuelle (BIOS, types de partitions et systèmes disponibles), les tailles maximales de partitions en fonction du système d'exploitation (OS) et du système de fichiers (FS) sont : OS / FS FAT16 DOS 6.x 2 Go Win9X/ME 2 Go NT4 4 Go W2000/XP 4 Go FAT32 NTFS 128 Go 128 Go 32 Go *128 Go 128 Go * : si créée sous Win9X/ME AFPA TMSI Châtellerault Version du 17/Juillet/2002 partition-boot-2002 page 11/22 Secteur de boot de partition FAT12 ou FAT16 (DOS, Windows 3.x, Windows 9x, Windows NT) Adresse (hexa) Contenu Taille (octets) 000 Instruction de saut à la routine de boot 3 003 Nom du fabricant et n° version(p.ex.MSWIN4.0) 8 00B Octets par secteur (0x200 = 512) 2 00D Secteurs par cluster (variable) 1 00E Nbre secteurs réservés (1) 2 010 Nbre de FAT (2) 1 011 Nbre d'entrées répertoire racine (0x200 = 512) 2 Nbre de secteurs dans le volume (variable) ou 0 si la partition est trop grande 2 013 015 Descripteur de support (0xF8 pour un disque dur) 1 016 Nbre de secteurs par FAT 2 018 Nbre de secteurs par piste (variable) 2 01A Nbre de têtes (variable) 2 01C Distance entre 1er secteur du volume et 1er secteur du support 4 020 Nbre de secteurs dans le volume (variable) si la valeur contenue à l'offset 013 est nulle 4 024 N° BIOS du disque physique (commence à 0x00 pour les disquettes, et 0x80 pour les disques durs) 1 025 A l'origine, n° de tête du secteur de boot. Inutilisé sauf par Windows NT 1 026 Signature. Inutilisé sauf par Windows NT 1 027 N° de série du disque (créé au formatage à partir de la date) 02B Nom de volume (identique à celui figurant dans le répertoire racine) 036 Chaîne décrivant l e système de fichiers ("FAT12", "FAT16") 03E Routine de boot à 1FD 1FE AA55 (code d'identification, id.secteur de partition) 4 11 8 448 2 Remarques : • • • • • La zone qui s'étend de l'offset 00B à l'offset 023 s'appelle "BIOS Parameter Block" (BPB) La zone qui s'étend de l'offset 024 à l'offset 03D s'appelle "extended BIOS Parameter Block" (EBPB) L'information située à l'offset 01C reprend celle contenue à l'offset 08 de l'entrée correspondante de la table de partition L'octet situé à l'offset 025 est utilisé par Windows NT pour indiquer une partition à contrôler par chkdsk au redémarrage. Le bit 0 à 1 indique que le disque doit être vérifié, et le bit 1 à 1 indique qu'en plus une analyse de surface doit être déclenchée. Cet octet est remis à 0 lors d'un arrêt normal du PC. L'octet situé à l'offset 026 est utilisé par Windows NT pour "signer" la partition. Il doit être égal à 0x28 ou 0x29 AFPA TMSI Châtellerault Version du 17/Juillet/2002 partition-boot-2002 page 12/22 Structure d'un secteur de boot de partition FAT32 (Windows 9x, Windows 2000) Adresse (hexa) Contenu Taille (octets) 000 Instruction de saut à la routine de boot 3 003 Nom du fabricant et n° version(p.ex.MSWIN4.0) 8 00B Octets par secteur (0x200 = 512) 2 00D Secteurs par cluster (variable) 1 00E Nbre secteurs réservés (1) 2 010 Nbre de FAT (2) 1 011 Nbre d'entrées répertoire racine : inutilisé 2 Nbre de secteurs dans le volume (variable) ou 0 si la partition est trop grande 2 013 015 Descripteur de support (0xF8 pour un disque dur) 1 016 Nbre de secteurs par FAT. Toujours à 0x0000 en FAT32 (cf offset 024) 2 018 Nbre de secteurs par piste (variable) 2 01A Nbre de têtes (variable) 2 01C Distance entre 1er secteur du volume et 1er secteur du support 4 020 Nbre de secteurs dans le volume (variable) si la valeur contenue à l'offset 013 est nulle 4 024 Nbre de secteurs par FAT32 (remplace l'information à l'offset 016) 4 028 Indicateurs servant au "mirroring" de la FAT. 2 02A N° de version du système de fichiers 2 02C N° du 1er cluster du répertoire racine 4 030 N° du secteur du fichier d'information système (0xFFFF s'il n'existe pas) 2 032 N° du secteur de sauvegarde de boot (0xFFFF s'il n'existe pas) 2 034 réservés 040 Routine de boot à 1FD 1FE AA55 (code d'identification, id.secteur de partition) 12 446 2 Remarques : • • • La zone qui s'étend de l'offset 00B à l'offset 03F s'appelle "BIOS Parameter Block" (BPB) et est spécifique à la FAT32 Mirroring de la FAT( offset 028) : les 4 bits de poids faibles indiquent le n° de la FAT active, et le bit 8 indique si cette FAT doit être dupliquée vers les autres copies de la FAT A la différence de FAT12 ou FAT16, le répertoire racine d'une FAT32 n'a pas un emplacement fixe, lequel est défini par l'informations contenue à l'offset 02C. Ainsi, sa taille n'est pas limitée, et en conséquence, le nombre maximal d'entrées (offset 011) n'a plus raison d'être. AFPA TMSI Châtellerault Version du 17/Juillet/2002 partition-boot-2002 page 13/22 Les clusters d'une partition FAT Un fichier n'occupe pas sur disque exactement sa taille utile, mais le multiple - immédiatement supérieur à cette taille - de la taille d'un cluster, un cluster étant égal à "N" secteurs , et "N" étant une puissance de 2. Intérêt des clusters 1. Physiquement on ne peut lire/écrire des données sur un disque autrement que par secteurs, qui représentent une certaine quantité d'octets. La taille des secteurs a été fixée "universellement" à 512 octets (on pourrait théoriquement imaginer des secteurs de ce qu'on veut, de préférence des puissances de 2, par exemple 1 octet, mais les têtes des disques seraient tellement sollicitées dans tous les sens qu'elles tomberaient en panne au bout de peu de temps d'utilisation !) 2. Il faut être capable d'adresser les dits secteurs. Cela va dépendre du système de fichiers utilisé. Dans le cas de FAT16, on a une table de taille FIXE (et donc limitée), composée de mot de 16 bits, qui permet de repérer un secteur ou paquet de secteurs : le cluster. En FAT16, on peut repérer au maximum 65536 "entités" (en réalité moins, car il y a des valeurs réservées, la valeur réelle étant de 65525 ) ou clusters. Donc si on choisit des clusters de 1 secteur, ce qui est optimal pour perdre le moins possible d'octets, on ne pourra adresser pas plus de 65536 secteurs, de 512 octets, ce qui représente 33554432 octets, soit 32 Mo! Avec des clusters de 16 secteurs (= 16 x 512 octets = 8192 octets, ou 8 ko ), on monte à 512 Mo, ce qui est déjà un peu mieux. Le maximum qu'on puisse obtenir en FAT16 est réalisé en utilisant des clusters de 64 secteurs (=32768 octets) d'où 2147483648 octets soit 2 Go, taille maximale possible en FAT16 (32768 est une limite car pour d'autres considérations, sous DOS et Win9x, la taille d'un cluster doit être strictement inférieure à 2^16 octets, soit 65536, donc la puissance de 2 immédiatement inférieure à 65536 est bien 32768). Sous NT4 et au delà, on peut - théoriquement - avoir des clusters de 262144 octets) En FAT32, le nombre de clusters est (théoriquement) égal à 2^32 (au lieu de 2^16), donc la taille maximale d'une partition est beaucoup plus grande, ou, à taille de partition égale, une FAT32 autorisera des clusters plus petits qu'en FAT16. Ainsi, une partition de 1.5 Go demandera des clusters de : - 32 ko en FAT16 - 4 ko en FAT32 Cependant, il n'est pas forcément toujours judicieux de prendre des clusters très petits. En effet, plus la taille des clusters est petite, et plus le risque de fragmentation des fichiers augmente. Ce qu'on gagne en espace disque, on va le perdre en performance. Méthode de calcul En définissant : • • • • tp : taille de la partition en octets nmax : nombre maximal de clusters (65536 en FAT16) ts : taille d'un secteur en octets (512) tm : taille minimale d'un cluster en octets On a la relation suivante : tm = 2^(int(n)+k)*512 avec : n = max(log2(tp/ts/nmax),1) k = 0 si (n - int(n))=0 k = 1 si (n - int(n))>0 AFPA TMSI Châtellerault Version du 17/Juillet/2002 partition-boot-2002 page 14/22 Exemple 1 : FAT16 (65536 clusters) tp = 1256 Mo => 1317011456 octets tp/ts/nmax = 39,25 log2(tp/ts/nmax) = 5,295.. int(log2(tp/ts/nmax))= 5 k=1 tm = 2^6*512 = 32768 Exemple 2 : FAT16 (65536 clusters) tp = 512 Mo => 536870912 octets tp/ts/nmax = 16 log2(tp/ts/nmax) = 4 int(log2(tp/ts/nmax)) = 4 k=0 tm = 2^4*512 = 8192 Ainsi, sur une partition FAT16 de 2Go, les clusters faisant 32 ko, un fichier de 1 octet (oui, je sais, c'est rare!) occupe malgré tout 32768 octets ! (32767 inutilisés). Un de 32800 occupera 65536 octets (perte=32736) ... Sur une FAT16 de 500 Mo, => clusters de 8192 octets, le même fichier de 32769 occupera 40960 octets (perte=8160) Plus les clusters sont gros, plus il y a de la perte d'espace (sauf si les tailles de TOUS les fichiers sont exactement des multiples entiers de la taille des clusters, ce qui est statistiquement assez rare!) Tableau récapitulatif Taille partition Taille des clusters suivant le type de partition minimale maximale FAT16 FAT32 7 Mo 16 Mo 17 Mo 32 Mo ***** ***** NTFS 512 o 512 o ***** 512 o 64 Mo 1 ko 512 o 512 o 65 Mo 128 Mo 2 ko 1 ko 512 o 129 Mo 256 Mo 4 ko 2 ko 512 o 257 Mo 512 Mo 8 ko 4 ko 513 Mo 1 Go 1 Go 2 Go 32 ko 4 ko 2 ko 4 Go 64 ko 4 ko 4 ko 8 Go ***** 4 ko 4 ko 8 Go 16 Go ***** 8 ko 4 ko 16 Go 32 Go ***** 16 ko 4 ko 32 Go 2 To ***** 32 ko 4 ko 33 Mo 2 Go 4 Go 16 ko 4 ko 512 o 1 ko Remarques : • • plage 7 à 16 Mo : c'est FAT12 qui est utilisée (=> clusters de 2 ko) sous Windows 2000 : on ne peut créer de FAT32 >32 Go, mais on peut utiliser des FAT32 > 32Go créées par ailleurs (Windows 9x, Partitionneur,...). AFPA TMSI Châtellerault Version du 17/Juillet/2002 partition-boot-2002 page 15/22 Nombre maximum d'entrées à la racine d'une partition FAT Le répertoire racine d'un disque formaté en FAT12 ou FAT16 est fixe, et dépend du type de support (disque dur ou disquette) En conséquence, le nombre de fichiers ou de répertoires que peut contenir le répertoire racine de ce type de partitions est limité (ce qui n'est pas le cas avec la FAT32). Support Nombre maximum d'entrées Disquette 1.44 M (FAT12) 224 Disque dur (FAT16) 512 Disque dur (FAT32) illimité (seulement par la capacité du disque) Structure d'une entrée de répertoire FAT et noms longs La structure d'une entrée de répertoire (32 octets) est la suivante : Nom court Offset (hexa) Champ Taille (octets) 00 Nom de fichier 8 08 Extension 3 0B Attributs 1 0C Réservé 10 16 Heure 2 18 Date 2 1A 1er cluster 2 1C Taille fichier 4 total 32 Nom long Offset (hexa) Champ 00 N° d'entrée 01 Nom UNICODE Taille remarques (octets) 1 10 =5 caractères 0B Attributs 1 toujours 0x0F 0C Checksum 2 0E Suite nom 12 =6 caractères 1A Réservé 2 1C Suite nom 4 =2 caractères total 32 Une entrée de nom long peut donc contenir au maximum 13 caractères AFPA TMSI Châtellerault Version du 17/Juillet/2002 partition-boot-2002 page 16/22 L'octet d'attributs est ainsi défini : Bit Attribut 7 réservé 6 réservé 5 archive 4 sous-répertoire 3 nom de volume 2 fichier système 1 fichier caché 0 fichier lecture seule • • L'octet d'attribut d'un fichier ordinaire ("archive" seul) est égal à 0x20 Une entrée de nom long est caractérisée par un attribut dans lequel les 4 derniers bits sont TOUS à 1 (volume, système, caché, lecture seule), soit 0x0F. Un nom long sera défini sous la forme de PLUSIEURS entrées supplémentaires, qui vont PRÉCÉDER l'entrée PRINCIPALE (= celle qui contient le nom court). L'ordre a énormément d'importance! En particulier, il ne faut surtout pas utiliser un outil de TRI de nom de fichiers dans un répertoire (je pense à l'antique "DS" - Directory Sort - des Norton Utilities des années 1985). Si on exécute un tel outil, c'est le désordre assuré dans le répertoire! Par ailleurs, le nom long est exclusivement représenté en UNICODE (2 octets par caractère). Le 1er octet de l'entrée indique le n° d'ordre de l'entrée (0x01, 0x02, ...), la dernière entrée se voyant le bit 6 mis à 1 (p.ex. 0x42 au lieu de 0x02) Exemple : Soit le fichier de nom : "La connaissance s'accroit quand on la partage.txt" 49 caractères au total => il faudra 4 entrées de nom de nom long, 52=4x13 étant l'entier multiple de 13 immédiatement supérieur à 49. Windows a déterminé comme nom court : "LACONN~1.TXT" Pour cela, il prend les 6 premiers caractères du nom long en éliminant tout ce qui n'est pas lettre ou chiffre (espace p.ex.), convertit en majuscules, ajoute le caractère tilde "~" , puis un chiffre (en fonction de ce qui existe déjà comme noms de fichier), et enfin rajoute la dernière extension (si elle existe) Dans le répertoire contenant ce fichier, on trouve ceci : Entrées Offset Octets Transcription 00000100 nom long (4) 00000110 44 61 00 72 00 74 00 61 00 67 00 0F 00 8C 65 00 2E 00 74 00 78 00 74 00 00 00 00 00 FF FF FF FF Da.r.t.a.g....e. ..t.x.t......... 00000120 nom long (3) 00000130 03 71 00 75 00 61 00 6E 00 64 00 0F 00 8C 20 00 6F 00 6E 00 20 00 6C 00 61 00 00 00 20 00 70 00 .q.u.a.n.d.... . o.n. .l.a... .p. 00000140 nom long (2) 00000150 02 63 00 65 00 20 00 73 00 27 00 0F 00 8C 61 00 63 00 63 00 72 00 6F 00 69 00 00 00 74 00 20 00 .c.e. .s.'....a. c.c.r.o.i...t. . 00000160 nom long (1) 00000170 01 4C 00 61 00 20 00 63 00 6F 00 0F 00 8C 6E 00 6E 00 61 00 69 00 73 00 73 00 00 00 61 00 6E 00 .L.a. .c.o....n. n.a.i.s.s...a.n. 00000180 00000190 4C 41 43 4F 4E 4E 7E 31 54 58 54 20 00 27 25 8C 26 2A 26 2A 00 00 45 8C 26 2A FC 0A 33 00 00 00 LACONN~1TXT .'%. &*&*..E.&*..3... nom court Il y a 5 entrées au total : AFPA TMSI Châtellerault Version du 17/Juillet/2002 partition-boot-2002 page 17/22 1. En 0x0100, la 4ème et dernière entrée (nom long) : o repérée par le 1er octet égal à 0x44 o attribut (offset 0x10B) égal à 0x0F o texte (Unicode) "artage.txt" 2. En 0x0120, la 3ème entrée (nom long) : o repérée par le 1er octet égal à 0x03 o attribut (offset 0x12B) égal à 0x0F o texte (Unicode) "quand on la p" 3. En 0x0140, la 2ème entrée (nom long) : o repérée par le 1er octet égal à 0x02 o attribut (offset 0x14B) égal à 0x0F o texte (Unicode) "ce s'accroit" 4. En 0x0160, la 1ère entrée (nom long) : o repérée par le 1er octet égal à 0x01 o attribut (offset 0x16B) égal à 0x0F o texte (Unicode) "La connaissan" 5. En 0x0180, l'entrée principale (nom court) : o attribut (offset 0x18B) égal à 0x20 (fichier archive) o texte (ASCII) "LACONN~1.TXT" NB: le point séparateur n'est jamais indiqué explicitement dans les noms courts Comparaison entre FAT(32) et NTFS Comme son nom l'indique : NTFS = "New Technology File System" Ce système de fichier est né avec Windows NT (1993) (mais il a évolué depuis 1993). C'est le système de fichiers par excellence de Windows NT/2000/XP. NTFS a été conçu pour combler les lacunes existant dans le système FAT ("File Allocation Table") utilisé par DOS et Windows 95/98/ME. NTFS est incomparablement supérieur à FAT ! FAT C'est un système très "basique", composé de 3 parties (je fais abstraction du secteur de boot qui est commun à tout système) : • • • une table des n° de clusters (la FAT proprement dite), en général doublée un répertoire "racine" la zone des données (fichiers et sous répertoires) Un répertoire est un ensemble d'entrées de 32 octets, dans lequel on trouve diverses informations dont le n° du 1er cluster. A partir de ce n°, le système d'exploitation va lire la FAT, et à l'adresse correspondant à ce n° de cluster, il trouve un code qui lui indique soit que le fichier n'a pas d'autres clusters, soit le n° du n° de cluster suivant, et ainsi de suite. NTFS C'est un système de fichier SÉCURISÉ et JOURNALISÉ, bien avant EXT3FS ou ReiserFS du monde Linux! Cela veut dire qu'il possède une procédure de restauration du système de fichiers permettant de reconstruire rapidement les données du disque après "plantage" du système. • Dès le départ, NTFS a su gérer des noms longs de fichiers (<255 caractères) (repris dans les FAT 16 ou 32 de Windows 95/98/ME, au prix d'un bricolage innommable d'entrées supplémentaires!!!) Ces noms utilisent UNICODE, ce qui permet la conservation des noms quand les fichiers sont copiés vers d'autres systèmes. AFPA TMSI Châtellerault Version du 17/Juillet/2002 partition-boot-2002 • • • • • • • • • • • • • • page 18/22 Etant compatible POSIX, NTFS sait distinguer minuscules/majuscules et mémorise la dernière ouverture de fichier. NTFS sait fixer des attributs aux fichiers tels que "exécution seule" (comme sous UNIX) NTFS permet la tolérance de pannes (utilisation de "RAID5"), ce qui fait que dans un ensemble de disques sur une machine, l'un d'eux peut tomber en panne sans que cela affecte le système ni perde des données (il y a "reprise" automatique par les autres) NTFS a été conçu DES LE DEPART pour être évolutif. NTFS permet de fixer des droits très finement en ce qui concerne l'accès aux fichiers (lecture, écriture, exécution, parcours de répertoire, ...), par personnes et/ou par groupe, ... Les partitions NTFS sont limitées à 2^64 octets (= 18 446 744 073 709 551 616). NTFS permet le chiffrement individuel des données NTFS permet la gestion de quotas (dans le cas de plusieurs utilisateurs sur la même machine) NTFS permet la création de liens symboliques (comme sous UNIX) NTFS autorise la création de flux multiples (plusieurs flux de données pour le même fichier, p.ex. un bitmap et sa miniature, un fichier Word et son résumé, ...) NTFS gère les fichiers "clairsemés" (pour des fichiers de très grande taille, le système ne réserve pas de place là où il y a une suite de zéros binaires). Très utile pour des fichiers vidéo par exemple. NTFS gère les points de montage (comme sous UNIX) de différentes unités physiques dans une même arborescence logique. NTFS tient à jour un journal des modifications. NTFS permet la création de "reparse points" (je n'ai pas trouvé de traduction satisfaisante) dont le rôle est de définir des attributs supplémentaires à des dossiers et fichiers. Tout est sécurisé sous NTFS. Par exemple, la MFT ("Master File Table", qui est un peu à NTFS ce que la table FAT est à une partition FAT) possède une copie, mais située en plein milieu du disque, et susceptible de se déplacer, en fonction de l'état physique du disque. Le secteur de boot est également dupliqué (à la fin de la partition) cf. davantage d'informations sur NTFS et sa MFT, ainsi que sur le site Microsoft un très bon article à ce sujet (bien que datant de plus de 3 ans) FAT (16 ou 32) n'est donc à conserver que : • • si on a un système multiboot (partage de partitions avec des systèmes d'exploitation non "NT") pour la partition de SWAP (fichier pagefile.sys). En effet, dans une partition NTFS, la copie de la MFT se trouvant en plein milieu, cela fragmenterait le fichier de swap en 2 parties, ce qui n'est pas bon au niveau performances. Les différences de performances entre FAT et NTFS : • • Lecture: NTFS est plus rapide que FAT en lecture (car un index général réside dans la MFT, et les fichiers < 1ko sont copiés aussi dans la MFT) Ecriture : Par contre, NTFS est plus lent que FAT en écriture, compte tenu de toutes les informations de sécurité, quota, chiffrement, flux, ... qu'il a à inscrire en plus des données. Mais cela est un inconvénient minime, qui ne peut gêner que les "puristes" maniaques de la nanoseconde! ;+)) Personnellement, à choisir, je préfère nettement un système lent et sûr à un système rapide mais peu fiable! AFPA TMSI Châtellerault Version du 17/Juillet/2002 partition-boot-2002 page 19/22 Mécanisme de boot d'un PC Le programme de partition, décrit précédemment, et situé à l'adresse 0000:7C00, : 1. identifie la partition active, définie soit par FDISK, par Windisk (NT), ou par un outil comme System Commander. 2. détecte le système d'exploitation à lancer 3. se déplace à l'adresse 0000:0600 4. charge le secteur de boot correspondant à l'adresse 0000:7C00 5. lance le programme de boot qu'il contient, par un saut à l'adresse 0000:7C00 Ce (mini) programme cherche sur le disque un (ou deux) autre(s) programme(s) et lui passe la main. Le nom de ce programme est également stocké dans le secteur de boot (à la fin généralement). Ce(s) programme(s) s'appelle(nt) : • • • • pour DOS : IO.SYS et MSDOS.SYS (ou IBM....COM ) pour Window 95/98 : IO.SYS (MSDOS.SYS n'étant plus qu'un fichier texte de config) + WINBOOT.SYS NB: ce dernier fichier est en réalité IO.SYS de Windows 95, renommé ainsi lors d'un démarrage du précédent DOS pour Windows NT : NTLDR (="NT" Loader) pour LINUX : LILO (=Linux Loader) Dans le cas de DOS, il contient la majeure partie de l'OS. Dans le cas de NT (et aussi de Linux), ce programme n'est qu'une étape intermédiaire, avant de charger réellement l'OS. • • • Boot avec Windows NT installé : le mécanisme complet de démarrage est décrit ailleurs ("Les séquences du démarrage de Windows NT") Boot avec DOS ou Windows 95/98 seul installé : Il y a exécution de IO.SYS et MSDOS.SYS Boot avec DOS et Windows 95/98 installés : Dans le cas de Windows 95/98, si on a demandé de garder l'ancien système (DOS), la racine contient les fichiers supplémentaires : o MSDOS.DOS o IO.DOS o COMMAND.DOS o AUTOEXEC.DOS o CONFIG.DOS Ce sont les 2 fichiers systèmes du précédent DOS (p.ex. 6.22), le processeur de commande et les 2 fichiers de démarrage habituels AUTOEXEC.BAT et CONFIG.SYS, tous renommés car Windows 95 utilise les mêmes. Quand on appuie sur la touche F8 lors du démarrage de Windows 95, on peut choisir de booter sur l'ancien OS (DOS). Dans ce cas, Windows 95 effectue les opérations suivantes : 1) Renommage des fichiers Windows95 MSDOS.SYS MSDOS.W40 IO.SYS WINBOOT.SYS COMMAND.COM COMMAND.W40 AUTOEXEC.BAT AUTOEXEC.W40 CONFIG.SYS CONFIG.W40 2) Renommage des fichiers DOS MSDOS.DOS MSDOS.SYS IO.DOS IO.SYS COMMAND.DOS COMMAND.COM AUTOEXEC.DOS AUTOEXEC.BAT CONFIG.DOS CONFIG.SYS Le contrôle est passé alors à IO.SYS "DOS", mais le secteur de boot n'est pas modifié. Ainsi, si on reboote (donc sous DOS à ce moment là), le programme de boot va tester l'existence du fichier WINBOOT.SYS, et c'est lui qui va être chargé à la place de IO.SYS. Le renommage des fichiers va alors être inversé MSDOS.DOS, ....) (MSDOS.SYS NB : Si on a renommé ou détruit sous DOS le fichier winboot.sys, Windows 95 ne pourra pas démarrer AFPA TMSI Châtellerault Version du 17/Juillet/2002 partition-boot-2002 page 20/22 Le formatage bas niveau C'est une opération magnétique, effectuée : • • une seule fois pour toute en usine par le constructeur d'un disque dur chaque fois qu'on formate une disquette (j'exclus le formatage rapide) Le programme de formatage bas niveau détermine la taille de secteurs à utiliser (512 octets en principe), le nombre de têtes, le nombre de pistes (ou cylindres) et le nombre de secteurs par piste, tout cela à partir d'informations codées "électriquement" dans le disque dur par le constructeur. Dans le cas d'une disquette, ces infos sont standardisées, fonction du type de support (p.ex. pour les disquettes Haute Densité 3"1/2 : 512 octets par secteur, 2 têtes, 80 pistes,18 secteurs par piste, soit 1.44Mo de capacité), ou transmises en paramètres au programme : format a: /F:taille /T:pistes /N:secteurs Ce programme vérifie tous les secteurs un par un, en les magnétisant et en lisant le résultat, et stocke sur le disque des informations d'erreur éventuelle et d'identification pour chaque secteur. En effet, un secteur va être accédé par la suite par un n° logique, or ce n° ne correspond jamais à l'ordre physique des secteurs, pour des questions de performances. Compte tenu de l'inertie du mécanisme et du temps de lecture lui-même, quand on lit un secteur (LOGIQUE) donné, il est impossible de lire "posément" le suivant immédiat (géométriquement parlant), car la tête a souvent dépassé le début! On est alors obligé de faire un tour quasi complet. Donc le suivant (LOGIQUE) a intérêt à être PHYSIQUEMENT plus loin (non contigu du précédent). Ce décalage correspond à ce qu'on appelle le "facteur d'entrelacement" (Interleaving" en anglais). Il dépend de la vitesse de rotation du disque et de la vitesse de traitement du contrôleur de disque. Par exemple, un facteur de "6" signifie qu'il faut "sauter" 5 secteurs physiques après avoir accédé à un secteur pour accéder au secteur logique suivant. Donc une erreur sur ce facteur peut rendre le disque inutilisable. C'est pourquoi le formatage bas niveau d'un disque dur : • • • est effectué par le constructeur, qui possède toutes les données relatives à son produit NE DOIT PAS être effectué par l'utilisateur final, car les risques d'erreur sont beaucoup trop grands. NE DOIT être effectué par l'utilisateur final QUE SI le disque est vraiment "mort", et donc dans ce cas on ne risque plus rien! Ce programme varie suivant les disques, et est généralement fourni par le constructeur du disque (ou disponible sur son site Web). Il est rarement interchangeable d'une marque à une autre. A ce stade, il n'est encore question que de disque PHYSIQUE dans son ensemble, indépendamment de tout système d'exploitation. L’opération qui suit le formatage bas niveau est le partionnement, abondamment décrit plus haut. Puis a lieu, pour chaque partition, le Formatage logique. Il consiste en la "préparation" des zones de rangements (= les cloisons dans les compartiments créés) et est effectué par l'outil FORMAT (sous DOS, Windows), WINDISK (sous NT), MKFS (sous Linux), ... Ce cloisonnement va permettre d'organiser et de prévoir un "catalogue" (vierge au début) de tout ce qu'on va mettre dans le compartiment par la suite. Cette organisation varie suivant les systèmes de fichiers prévus (supportés par le système d'exploitation correspondant). Si on prend le cas de DOS (ou Windows 9x), le formatage logique va créer successivement : • • • un secteur de démarrage (bootsector) (il y a un secteur de boot quel que soit le système : DOS, Windows 9x, Windows 2000, Linux, BeOS,..) une table de "localisation" (= la FAT) de tous les secteurs de chaque fichier, des secteurs défectueux et des secteurs libres. un catalogue principal (= le répertoire racine) AFPA TMSI Châtellerault Version du 17/Juillet/2002 partition-boot-2002 page 21/22 Les opérations de "préparation" d'un disque avant usage sont donc : Disque dur : • • • formatage bas niveau (chez le constructeur, effectué UNE FOIS POUR TOUTES, sauf accident grave) partitionnement (par l'utilisateur, effectué en principe une fois, mais peut être complété, mis à jour, éventuellement) formatage logique de chaque partition (par l'utilisateur, effectué en principe une fois, avant ou au cours de l'installation d'un système d'exploitation dans le cas d'une partition système, une ou plusieurs fois dans le cas d'une partition non système) Disquette : • • formatage bas niveau et, IMMÉDIATEMENT après, formatage logique (par l'utilisateur, ou depuis quelques années maintenant par le fabricant). Il n'y a pas de partitionnement sur une disquette, donc il n'y a pas de MBR, car elle ne contient qu'une seule partition. Les séquences du démarrage de Windows NT 1. Le secteur de boot lance le programme NTLDR 2. NTLDR recherche les fichiers suivants : - BOOT.INI - NTDETECT.COM - NTBOODD.SYS (seulement dans le cas de disque SCSI, et si le BIOS de la carte SCSI a été désactivé) - BOOTSECT.DOS (éventuellement) 3. Il bascule le processeur en mode 386 4. Il lance un gestionnaire de fichiers très simple, basé sur l'INT13h (disque IDE) ou en utilisant NTBOODD.SYS (disque SCSI) 5. Il lit BOOT.INI, affiche les options correspondantes à l'écran et attend le choix de l'utilisateur 6. Si NT n'a pas été choisi, il charge le fichier BOOTSECT.DOS (ou un autre si le nom d'un fichier image de secteur de boot a été explicitement indiqué) à la place du secteur de boot initial, puis lui passe le contrôle 7. Si NT a été choisi, il lance NTDETECT.COM, caractérisé par l'affichage à l'écran du message suivant (ou similaire, suivant la version de NT) "NTDETECT Vxxx checking Harware..." 8. NTDETECT.COM inspecte : - le n° d'identification du PC - la carte vidéo - le type de clavier - les ports séries et parallèles - les lecteurs de disquettes - la souris (si elle existe) 9. Ensuite il crée la partie du registre concernant le matériel. Ces données, non permanentes, peuvent se retrouver dans la section HKEY_LOCAL_MACHINE\Hardware Cette section est donc reconstruite à chaque démarrage de l'ordinateur 10. Puis intervient le lancement du noyau : - Chargement du "HAL" (Hardware Abstract Layer), qui permet au système d'être indépendant du matériel, et de NTOSKRNL, qui va lire les données situées dans HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services, afin de déterminer les drivers et services à charger possédant un statut de démarrage "amorcé" (cf. Panneau de configuration/Périphériques). Cette phase est caractérisée par l'affichage à l'écran de "OS Loader Vxxx ........", chaque point correspondant à un pilote. 11. Initialisation du noyau L'écran devient bleu et passe en mode 50 lignes, avec affichage d'un message comme " Microsoft Windows NT Version 4...." Le noyau inspecte a nouveau la clef HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services, pour les pilotes possédant un statut de démarrage "système". Cette phase est caractérisée par AFPA TMSI Châtellerault Version du 17/Juillet/2002 partition-boot-2002 page 22/22 l'affichage à l'écran d'une suite de points, chaque point correspondant à un pilote. Un nouveau "CurrentControlSet" est construit, mais non sauvegardé. 12. Chargement des services Le gestionnaire de services (SMSS.EXE) est lancé, charge le sous-système Win32, et les services possédant un statut de démarrage "automatique". Un nouveau "CurrentControlSet" est construit 13. Lancement du sous-système Windows Une copie de "CurrentControlSet" est copiée dans "Dernière bonne configuration connue"., WINLOGON.EXE est lancé, lequel inspecte la clef HKEY_LOCAL_MACHINE\Software\Microsoft\WindowsNT\CurrentVersion\Winlogon et recherche la valeur de l'entrée System, qui contient les noms des sous-systèmes( p.ex. ISASS.EXE, gestionnaire de sécurité locale) 14. A ce moment apparaît (enfin!) la boite de dialogue invitant à appuyer sur CTRL-ALT-SUPP pour démarrer une session AFPA TMSI Châtellerault Version du 17/Juillet/2002