- Accueil
- » Forum
- » Café Ubuntu
- » adressage CHS
#1 Le 14/05/2021, à 13:56
- Nuliel
adressage CHS
Bonjour,
J'aurais une petite question sur l'adressage CHS: je vois généralement 255 têtes, 63 secteurs par piste, et un nombre de cylindres dépendant de la taille du disque. Mais j'imagine qu'il y a pas 255 têtes par disques, ni 63 secteurs par piste tout le temps? Et du coup, comment connaître le nombre réel de têtes et de secteurs par piste d'un disque dur?
D'ailleurs le disque accepte t'il qu'on lui demande des secteurs avec adressage LBA ou il y a une conversion vers adressage CHS avant (par le noyau?)?
Je sais bien que l'adressage CHS a été remplacé par l'adressage LBA, mais je me demande en fait si l'adressage CHS est encore utilisé, que ce soit au sein du disque, ou ailleurs.
Hors ligne
#2 Le 14/05/2021, à 16:05
- ares
Re : adressage CHS
Bonjour,
Hum ! revenons à l'époque de la préhistoire...
Chaque DD contient une Rom. Cette Rom envoie ses informations demandées par le Bios à l'initialisation.
Le Bios et l'OS n'accèdent pas au programme de la Rom¹ du DD.
Les valeurs « 255 têtes, 63 secteurs » sont un "masque" pour le Bios et L'OS.
Ce type « d'adressage » permet d'avoir un DD de 8Go.
Le BIOS a besoin des infos de la ROM pour initialiser la "table d’interruption" en mode réel.
Cette table d’interruption est "reconstruite" quand le CPU passe en mode protégé avec des OS type Unix, GNU/Linux...
Et en plus le BIOS "boot" en 0/0/1 = premier secteur du DD !
Au delà, c'est plutôt le mode LBA (adressage par bloc logique) qui est utilisé. C'est la méthode du ECHS.
Ou le plus simple est de masquer l'interface du DD avec un contrôleur SCSI et donc indépendant du BIOS.
L'OS fournissant le pilote SCSI.
Physiquement - sauf erreur - le maximum est de 4 plateaux 8 têtes.
La capacité d'un DD est une capacité "utile" et n'intègre pas les bits de synchronisations, etc.
En effet, la densité de stockage varie en fonction de la position des têtes de lecture/écriture.
le nombre de secteurs est plus élevé sur les cylindres extérieurs.
Et n'oublions pas des techniques d'enregistrement (MFM,ZBR, etc) qui ont formidablement augmenté (densité d’octets/mm²).
Et en 2021, le principe n'a pas changé avec les SSD :
* enregistrement des bits verticalement (porte NAND empilés)
* même principe (secteur/cylindres, etc)
* ROM¹
J'espère n'avoir pas trop écrit de conneries... l'histoire, c'est pas trop mon truc
@+
¹) Sauf en cas de mise à jour de la ROM
Le droit d'emmerder Dieu BNF
Hors ligne
#3 Le 14/05/2021, à 16:16
- Nuliel
Re : adressage CHS
Merci ares pour ta réponse. Effectivement c'est la préhistoire
En fait je me suis posé cette question sur CHS parce que j'avais fait une copie d'un disque dur et j'avais pu remarquer un motif qui se répétait (un secteur défectueux puis des secteurs ok puis un secteur défectueux puis....), et je me demandais si on pouvait prévoir à partir de quelques secteurs défectueux les suivants. Mais c'est vrai que le nombre de secteurs est plus grand sur les cylindres extérieurs. D'où ma question sur l'utilisation actuelle de CHS.
Merci pour ces explications
Dernière modification par Nuliel (Le 14/05/2021, à 16:18)
Hors ligne
#4 Le 14/05/2021, à 17:23
- ares
Re : adressage CHS
(...) et j'avais pu remarquer un motif qui se répétait (un secteur défectueux puis des secteurs ok puis un secteur défectueux puis....), et je me demandais si on pouvait prévoir à partir de quelques secteurs défectueux les suivants.(...)
Ta réponse n'indique que j'ai oublié de préciser que depuis longtemps un DD intègre un CPU souvent programmable.
Cela permet d'avoir des compteurs et donc une table physique du DD.
En plus avec la mémoire cache, des algorithmes gèrent par le CPU l'écriture et la lecture du DD à chaque demande du BIOS ou de l'OS.
Dans le cas d'un SSD (quatre types de portes logiques pour stocker un bit) :
* mémoire cache temporaire (lecture & écriture)
* algorithmes de vidage/chargement cache mémoire vers les portes logiques de stockage contrôlé par le CPU.
* le CPU répond aux interruptions de l'OS en temps réel (TRIM)
* le CPU répond à ses interruptions prioritaires (dite non masquables) en cas de panne alimentation ou erreurs lecture/enregistrement.
L'écriture ou la lecture d'un bit se fait à des tensions différentes.
Comme un SSD repose sur la technologie du silicium ont connaît bien les principes physiques de vieillissement.
En milieu "pro" on utilise une technologie de portes logiques SLC pour 1 bit par cellule qui garantit un taux de panne sur 5 ans < à un DD mécanique "pro".
Souvent exprimé en X To/jour.
Le droit d'emmerder Dieu BNF
Hors ligne
#5 Le 14/05/2021, à 18:55
- Nuliel
Re : adressage CHS
Que veux tu dire par programmable? Tu veux dire qu'il y a une puce flash pour contenir le code à exécuter?
En fait, je suis sur un projet pour récupérer plus facilement des données sur des disques durs en mauvais état (mon but est de faire un logiciel dans l'idée de ddrescue et testdisk, mais qui récupérerait plus intelligemment les données que ddrescue)
Dernière modification par Nuliel (Le 14/05/2021, à 18:56)
Hors ligne
#6 Le 15/05/2021, à 07:03
- ares
Re : adressage CHS
Que veux tu dire par programmable? Tu veux dire qu'il y a une puce flash pour contenir le code à exécuter?
Exactement !
C'est un ASIC(circuit intégré pour une application) ou SoC(système sur puce) dédié à un usage spécifique.
Circuit contenant un CPU, de la mémoire, interfaces(I/O), rom/flash (programme) etc.
Ce type de ASIC ou SoC est fabriqué pour des séries de 100 000 unités ou plus. Le coût de développement est cher.
Un DD¹ répond à des normes & protocoles d'entrée/sortie et d'adressage, tu ne « vois » pas l'ASIC/SoC².
Ton projet doit répondre à ces prérequis et te permet d'être « indifférent » aux marques des DD.
Ca c'était hier, aujourd'hui vu le coût d'un CPU on utilise peut-être un CPU plus une eprom et de la mémoire.
Je suis plus dans le "circuit",... un mec hasbeen.
D'ailleurs il me semble avoir lu que certain type de DD intègre en plus une puce de cryptage temps réel.
On retrouve ce même principe pour les imprimantes et c'est même plus complexe.
Une « imprimante » c'est du 10ppm³ à 300ppm (départ, transport, transfert, fixation et module de finition(brochure, agrafe,etc) en temps réel
Il existe une multitude de protocoles pour ordi, mini-informatique, mainframe.
Et si tu ajoutes la couleur (4 à 7 couleurs) avec contrôle temps réel de la gamme chromatique, température couleurs...
Pour une imprimante type "presse numérique" c'est plus de 3 cartes mère avec X micro-contrôleurs. Y a un serveur en interne pour le "client".
Pour un scanner bas de gamme > 100ppm c'est une option, idem pour la rom de reconnaissance(OCR).
Ce domaine a plus évolué que le DD. Évolution qui fait passer Apple et Lenovo, Samsung etc pour des "outils" du Moyen Âge
Bonne chance pour ton projet & dans l'attente de sa découverte
¹) il existe plusieurs types de DD en fonction des usages.
²) sauf pour le fabricant pour l'adressage d'une mise à jour.
³) impression page par minute(ppm)
Le droit d'emmerder Dieu BNF
Hors ligne
#7 Le 15/05/2021, à 09:55
- Nuliel
Re : adressage CHS
Oui, je me suis déjà cassé les dents sur un disque qui avait la mauvaise idée d'être chiffré avec un mot de passe par défaut (dont l'utilisateur n'a pas connaissance) et que le déchiffrement opère sur le bridge usb, et que le disque a une faiblesse au niveau du port du disque,... à se demander si c'est fait exprès...
Par normes et protocoles, j'imagine que tu parles de la norme SATA?
Sur un de mes disques externes relativement récent (WD my passport), il y a 2 puces flash (apparemment les deux sont pour le code à exécuter, d'ailleurs faudra que je fasse un dump pour voir ce qu'il y a dedans), une puce pour la RAM, une puce pour gérer le moteur, et une puce Marvell 88I9146-TFJ2 qui est le processeur/controller.
Pour mon projet, je compte pour l'instant me baser sur les fonctions classiques style fread... Mais plus tard je me renseignerai sur les fonctions de bas niveau.
Pour l'instant je n'ai que récupéré le premier secteur et parsé le MBR, je pense que dans les prochains mois je devrais avoir un truc en état de marche.
Dernière modification par Nuliel (Le 15/05/2021, à 09:56)
Hors ligne
#8 Le 15/05/2021, à 11:11
- ares
Re : adressage CHS
Oui, je me suis déjà cassé les dents sur un disque qui avait la mauvaise idée d'être chiffré avec un mot de passe par défaut (dont l'utilisateur n'a pas connaissance) et que le déchiffrement opère sur le bridge usb, et que le disque a une faiblesse au niveau du port du disque,... à se demander si c'est fait exprès...
C'est normal, car tu n'as pas le datasheet des composants.
Avec la doc, tu passes outre et réinitialise, mais avec perte des données.
Ou tu désassembles la ROM pour "casser" le mot de passe ou "sauter".
Par normes et protocoles, j'imagine que tu parles de la norme SATA?
Oui
Sur un de mes disques externes relativement récent (WD my passport), il y a 2 puces flash (apparemment les deux sont pour le code à exécuter, d'ailleurs faudra que je fasse un dump pour voir ce qu'il y a dedans), une puce pour la RAM, une puce pour gérer le moteur, et une puce Marvell 88I9146-TFJ2 qui est le processeur/controller.
our le Marvell on trouve le datasheet & PCB
Pour mon projet, je compte pour l'instant me baser sur les fonctions classiques style fread... Mais plus tard je me renseignerai sur les fonctions de bas niveau.
Pour l'instant je n'ai que récupéré le premier secteur et parsé le MBR, je pense que dans les prochains mois je devrais avoir un truc en état de marche.
C'est le graal les fonctions "bas niveau"
Varie en fonction des fabricants, c'est les I/O qui sont importantes.
Le "dev" des composants & fabrication d'un ASIC/SoC coûte un bras.
Le composant ASIC/SoC est souvent vendu à la concurrence. Samsung est l'exemple type.
Les fonctions "bas niveaux", c'est le niveau 1 du SAV chez un client. Résolution de 99,99 % des problèmes
Au-delà tu fais un "core dump" pour les "ingés"... et t'attends la mise à jour ou la procédure.
Comme le client ne paye pas, ça coûte un max. Audit, recherche du responsable pour la "charrette"
Exemple fonctions "bas niveau" :
Quand j'étais jeune beau, intelligent & modeste¹, j'avais trouvé la doc des cartes VGA.
À cette époque, le jeu DOOM monopolisait les joueurs.
J'avais reprogrammé les horloges de la carte VGA pour avoir un signal compatible avec une TV entrée péritel.
On pouvait jouer à DOOM sur un écran TV plus grand qu'un écran de PC.
J'avais refilé l'astuce à un collègue fana de ce jeu, car je suis pas joueur.
À cette époque, je voulais passer ma distri GNU/Linux sur TV, mais on m'a demandé d'autres trucs...
¹) qui a dit « et aussi très con !!! »
Dernière modification par ares (Le 15/05/2021, à 11:14)
Le droit d'emmerder Dieu BNF
Hors ligne
#9 Le 15/05/2021, à 12:33
- Nuliel
Re : adressage CHS
Pour l'histoire du mot de passe, je pense que cela s'explique par le fait que lorsque l'utilisateur met un mot de passe sur un disque dur, il ne va pas attendre que le disque entier se chiffre avec son mot de passe, mais il doit probablement y avoir dérivation d'une clé à partir du mot de passe de l'utilisateur, possiblement basé sur une clé maître ne changeant pas pour un modèle donné.
Je crois pas que la clé soit dans la ROM, mais vraiment dans le bridge usb.
Ok pour les fonctions de bas niveau, il est probable que je doive faire un peu de reverse du coup
Pas mal l'idée de passer DOOM sur la TV! (pour ma part j'ai jamais joué à DOOM, uniquement à DOOM 2016)
Dernière modification par Nuliel (Le 15/05/2021, à 12:33)
Hors ligne
#10 Le 15/05/2021, à 13:59
- Nuliel
Re : adressage CHS
Dans les trucs de la préhistoire: https://en.wikipedia.org/wiki/Design_of … ile_system (je me casse actuellement là tête dessus)
Hors ligne
#11 Le 15/05/2021, à 16:42
- ares
Re : adressage CHS
Ok pour les fonctions de bas niveau, il est probable que je doive faire un peu de reverse du coup
Heureusement il n'existe que 2 familles de CPU RICS/CISC.
Et comme on réinvente pas la roue dans le silicium c'est toujours les mêmes blocs de portes logiques.
Tu trouves chez les constructeurs des outils de "dev" pour leurs ASIC/SoC.
(je me casse actuellement là tête dessus)
De mémoire et sauf erreur, il te manque aussi le tableau d'appel de int 13h du BIOS
Exemple :
global _start
_start:
mov ax, 0001h ;correspond à une fonction (ex : renvoie les valeurs CHS du lecteur sélectionner en ah)
int 13h ; appel int BIOS
; retour du résultat dans les registres bx, cx, dx
; bx = nbr cylindres
; cx = nbr de têtes
; dx = nbr de secteurs
; ax = 0 = appel terminé sans erreur
; ax > 0 voir tableau des codes erreurs (ex : 0001h pas de lecteur détecté, etc)
Bon courage dans le Jurassic !
Le droit d'emmerder Dieu BNF
Hors ligne
#12 Le 15/05/2021, à 16:57
- Nuliel
Re : adressage CHS
Je ne comprends pas, pourquoi faut il passer par un appel au BIOS pour lire/écrire des secteurs du disque? (en mettant AH à 02h dans https://en.wikipedia.org/wiki/INT_13H#L … h_services ).
Ah non c'est normal, je viens de lire https://en.wikipedia.org/wiki/BIOS_inte … BIOS_calls
Bon courage dans le Jurassic !
Merci
Dernière modification par Nuliel (Le 15/05/2021, à 17:04)
Hors ligne
#13 Le 15/05/2021, à 17:17
- ares
Re : adressage CHS
Désolé, je comprends pas trop le « casse tête ». Tu as le tableau des définitions FAT.
Sauf erreur sous DOS, c’était : int 21h (API). Tu ne devrais pas avoir de prb pour obtenir la liste des API DOS
Tu peux donner un exemple du « casse tête » ?
Le droit d'emmerder Dieu BNF
Hors ligne
#14 Le 15/05/2021, à 17:23
- Nuliel
Re : adressage CHS
En fait la page wikipedia est assez longue, et ce genre de trucs
Since DOS 2.0, valid x86-bootable disks must start with either a short jump followed by a NOP (opstring sequence 0xEB 0x?? 0x90[13][14] as seen since DOS 3.0[nb 3]—and on DOS 1.1[15][16]) or a near jump (0xE9 0x?? 0x??[13][14] as seen on most (Compaq, TeleVideo) DOS 2.x formatted disks as well as on some (Epson, Olivetti) DOS 3.1 disks). For backward compatibility MS-DOS, PC DOS and DR-DOS also accept a jump (0x69 0x?? 0x??)[13][14][17] on removable disks. On hard disks, DR DOS additionally accepts the swapped JMPS sequence starting with a NOP (0x90 0xEB 0x??),[17] whereas MS-DOS/PC DOS do not. (See below for Atari ST compatibility.) The presence of one of these opstring patterns (in combination with a test for a valid media descriptor value at offset 0x015) serves as indicator to DOS 3.3 and higher that some kind of BPB is present (although the exact size should not be determined from the jump target since some boot sectors contain private boot loader data following the BPB), while for DOS 1.x (and some DOS 3.0) volumes, they will have to fall back to the DOS 1.x method to detect the format via the media byte in the FAT (in logical sector 1).
c'est assez indigeste, et ça c'est un champ seulement
Dernière modification par Nuliel (Le 15/05/2021, à 17:24)
Hors ligne
#15 Le 15/05/2021, à 19:03
- ares
Re : adressage CHS
Si j'ai bien compris... je suis pas spécialiste du DOS
boot depuis BIOS ou OS, On lit CHS = 0/0/1 = premier secteur
On doit trouver :
* jmp 0x?? ; opcode hexa de l'instruction = e9h et longueur du saut = ??h
la prochaine instruction est :
* nop ; opcode hexa de l'instruction = 90h
Donc on a :
* initialisation du BIOS, puis le BIOS charge CHS (0/0/1) dans une zone mémoire et le BIOS « passe la main » qui est obligatoirement un saut(jmp)
DS,ES pointent sur la zone mémoire, idem pour EP & BP.
Je suppose que si le BIOS ne trouve aucun secteur, donc pas de périphérique de stockage, alors le BIOS affiche un message
Exemple :
global _start
_start:
jmp ??h
nop
; exemple d'un début du programme boot pourave
jmp version_init
nop ; obligatoire !
version_init: ; c'est un exemple ! :)
xor ax,ax
mov 0eh,ah
mov $mes_ver,si ;DS est déjà initialisé sur la zone mémoire
mov cl,$long_mess ; et non le registre "al" !
print_char:
lodsb
cmp 0h, cl
je suite
dec cl
int 10h
jmp print_char
suite:
(etc)
mes_ver: "C'est ma version !"
On commence toujours par jmp (il existe plusieurs types de sauts)
Le reste c'est les exceptions constructeurs qui livre un OS modifié.
Et c'est uniquement valable pour DOS !
c'est assez indigeste, (...)
- Oui, bon appétit...
- non merci, j'en ai déjà beaucoup trop mangé... et je voudrais pas te priver, mets-le au congélo, ça se conserve longtemps... c'est impérissable
Édite : erreur de registre, cl est bien le compteur... y a plus simple avec un "loop" !
Dernière modification par ares (Le 15/05/2021, à 21:06)
Le droit d'emmerder Dieu BNF
Hors ligne
#16 Le 15/05/2021, à 19:41
- Nuliel
Re : adressage CHS
Ok, merci pour les explications.
Plus qu'à comprendre tout et coder un parseur
Hors ligne
#17 Le 17/05/2021, à 10:41
- Nasman
Re : adressage CHS
Pour comprendre comment fonctionnent les interruptions du bios, j'utilise le site http://www.ctyme.com/intr/int.htm
Concernant le fat, j'ai été à me pencher dessus le jour où :
- j'ai cloné un (très) vieux disque avec un Win95 sur lequel était un programme de pilotage de manip (dont on n'avait plus les sources pour réinstaller). Le clonage effectué (il fallait trouver un disque de moins de 8 Gio pour cause de bios très vieux). Le W95 refusait de démarrer en raison d'une géométrie de disque différente de l'original; J'ai du tripatouiller dans les en-tête de la partition fat32 pour modifier le nombre de têtes du disque.
La correction faite, le système a démarré. Les infos que j'ai utilisées se trouvent par exemple sur https://fr.wikipedia.org/wiki/File_Allocation_Table
PC fixe sous Bionic 64 bits et portable avec Focal 64 bits
Hors ligne
#18 Le 17/05/2021, à 12:11
- Nasman
Re : adressage CHS
Pour information, lors du démarrage en mode bios, grub-pc (en fait boot.img) fait appel à des fonctions du bios pour détecter les capacités de ce dernier. Selon la présence ou la prise en charge de certaines fonction du bios le chargement s'effectuera en utilisant des fonctions axées LBA comme le disk packet address (ensemble d'octets contenant entre autre l'adresse LBA du secteur à charger) soit en transformant l'adresse LBA en données CHS en utilisant les données de géométrie du disque. Une portion de code du mbr est chargé de cette tâche. Voir ici
PC fixe sous Bionic 64 bits et portable avec Focal 64 bits
Hors ligne
#19 Le 17/05/2021, à 15:40
- ares
Re : adressage CHS
Pour comprendre comment fonctionnent les interruptions du bios, j'utilise le site http://www.ctyme.com/intr/int.htm
Non !
Moins de 25 interruptions pour le BIOS avant 2000.
@+
Le droit d'emmerder Dieu BNF
Hors ligne
#20 Le 17/05/2021, à 16:06
- Nuliel
Re : adressage CHS
Les interruptions listées dans le lien sont bien toujours d'actualité sur des pc récents? J'imagine qu'il y a des standards pour ça
Dernière modification par Nuliel (Le 17/05/2021, à 16:06)
Hors ligne
#21 Le 17/05/2021, à 16:31
- ares
Re : adressage CHS
La liste de mon lien a certainement évolué en 20 ans.
Il manque la prise en charge PXE, périphériques USB, WAN, etc.
Les fournisseurs de BIOS travaillent sur des prérequis qu'ils ont eus même défini.
C'est eux qui font le « standard ». Pareille dans d'autres secteurs de l'industrie.
Le droit d'emmerder Dieu BNF
Hors ligne
#22 Le 17/05/2021, à 18:12
- Nuliel
Re : adressage CHS
Ok.
Tite question: pour le secteur FS info, il y a dans le secteur de boot son emplacement (plus précisément son cluster), on a aussi le premier cluster du répertoire racine, mais comment trouver t'on l'emplacement de la/les FAT?
Hors ligne
#23 Le 17/05/2021, à 21:00
- Nuliel
Re : adressage CHS
Ah c'est bon, j'ai trouvé: il y a des secteurs réservés entre le secteur de boot de la partition FAT32 et la FAT.
Hors ligne
#24 Le 17/05/2021, à 21:50
- ares
Re : adressage CHS
@Nuliel
Je suis pas spécialiste... pas taper
La FAT est entre le premier secteur de boot & le secteur racine.
Comme il faut compter en cluster :
La FAT est entre le premier secteur n°1 du cluster n°1 de boot & le secteur n°1 du premier cluster "racine".
* Pour la copie du secteur de boot ?
Comme c'est sur deux octets, sur une disquette j'aurais placé la copie à la fin.
Sur un DD, la copie pourrait être placée en fin de FAT.
* Pour le nombre de secteurs réservés plus boot ?
On peut supposer qu'ils sont entre la FAT et la "racine"
* Pour les secteurs cachés (0 si pas partitionné)
On peut supposer qu'ils se trouvent après le boot
Valeurs a ajouté pour un DD pour l'emplacement de la FAT de la partition n°1 du DD
Avec des multiples 512, 1024, etc les instructions de décalages (logiques) doivent être plus efficaces que des instructions arithmétiques.
Pas taper, hein ?
Édit : Oups, ta réponse est plus rapide
Tu peux me confirmer et détailler SVP ? Merci.
Dernière modification par ares (Le 17/05/2021, à 21:52)
Le droit d'emmerder Dieu BNF
Hors ligne
#25 Le 18/05/2021, à 08:05
- Nuliel
Re : adressage CHS
Alors la structure de FAT32 est la suivante (on trouve le premier secteur de la partition FAT32 dans le MBR):
secteur de boot | secteurs réservés (le secteur FS info est dedans?) | FAT1 | FAT2 | clusters de données (représente la majeure partie de la partition) | un peu d'espace inutilisé
La FAT2 est une copie de la FAT1, histoire d'avoir de la redondance (par contre pourquoi les avoir collés...)
Le secteur racine commence au début du cluster de données.
Il peut y avoir des secteurs cachés, avant le secteur de boot?
Voilà où j'en suis dans mon avancement sur FAT32. Mon disque virtuel de test est foireux, il faut que je le refasse pour tester correctement mon programme.
Hors ligne