Master Boot Record

De WikiLingua.net

Emmagatzematge d'un master boot record estàndard
Adreça Descripció
0x0000 Àrea de Codi
0x01B8 4 bytes signa del disc (opcional)
0x01BE Per a entrades en la taula de particiones primàries de 16 bytes (esquema estàndard de la Taula de Particiones del MBR)
0x01FE 2 bytes signa del MBR (0xAA55)

Un master boot record (MBR) és el primer sector ("sector zero") d'un dispositiu d'emmagatzematge de dades, com un disc dur. De vegades, s'empra per a l'arrencada del sistema operatiu amb bootstrap, altres vegades és usat per a emmagatzemar una taula de particiones i, en ocasions, s'usa només per a identificar un dispositiu de disc individual, encara que en algunes màquines això últim no s'usa i és ignorat.

En la pràctica, el MBR gairebé sempre es refereix al sector d'arrencada de 512 bytes, o el partition sector d'una partición per a ordinadors compatibles amb IBM. A causa de l'àmplia implantació d'ordinadors PC clónicos, aquest tipus de MBR s'usa molt, fins al punt de ser incorporat en altres tipus d'ordinador i en nous estàndards multi-plataforma per al particionado i l'arrencada.

Taula de continguts

[editar] Estructura del MBR

512 Bytes
Primer sector físic del disc (pista zero)
446 Bytes Codi màquina (gestor d'arrencada)
64 Bytes Taula de particiones
2 Bytes Signatura d'unitat arrancable ("55h AAh" en hexadecimal)

[editar] El MBR i el particionado de discos

Registre de partición de 16 bytes
Offset Descripció
0x00 Estat[1] (0x80 = bootable, 0x00 = non-bootable, uns altres = mal format[2] )
0x01 Cabezal, Sector i Cilindre del primer sector en la partición[3]
0x04 Tipus de partición
0x05 Cabezal, Sector i Cilindre de l'últim sector de la partición[3]
0x08 (4 bytes) Logical block address del primer sector de la partición
0x0C (4 bytes) Longitud de la partición, en sectors
Registre de partición estesa d'IBM
Offset Descripció
0x00 Bits d'estat[1] (bit 0 = llista del menú del Gestor d'Arrencada, la resta són bits reservats)
0x01 Signatura de la partición

Quan un dispositiu d'emmagatzematge de dades s'ha particionado amb un esquema de taula de particiones del MBR (per exemple l'esquema convencional de particionado d'IBM PC), el MBR conté les entrades primàries en la taula de particiones. Les entrades de particiones secundàries s'emmagatzemen en registres de particiones esteses, etiquetes de disc BSD, i particiones de metadatos del Logical Disk Manager que són descrites per aquestes entrades de particiones primàries.

Per convenció, hi ha exactament quatre entrades de particiones primàries en l'esquema de la Taula de Particiones, encara que en alguns sistemes (pocs) s'ha estès aquest nombre a cinc o vuit.[4]

Quan un dispositiu d'emmagatzematge de dades s'ha particionado amb Taula de Particiones GUID, el Master Boot Record no conté la taula de particiones (encara que conté models d'estructures de dades, una protecció del MBR enfront de programes que només entenen l'esquema de la Taula de Particiones del MBR perquè no creuen particiones en el disc) i s'usa poc a causa del que pot afectar al particionado de disc.

[editar] MBR i arrencada del sistema

En els ordinadors compatibles IBM IA-32 que usen l'esquema de la Taula de Particiones del MBR, el firmware per a l'arrencada (bootstrapping) que es troba en la ROM del BIOS (actual ment usen memòries flash) càrrega i executa el master boot record. Com els processadors de la família i386 arrenquen en manera real, el codi del MBR està compost d'instruccions de llenguatge màquina en manera real. Aquest codi passa, normalment, el control mitjançant chain loading al Volume Boot Record de la partición (primària) activa, encara que alguns gestors d'arrencada reemplacen aquest codi convencional pel seu.

El codi convencional del MBR espera que s'usi l'esquema de la Taula de Particiones del MBR, i escanea la llista d'entrades de particiones (primàries) en la taula de particiones buscant una que estigui marcada amb activi flag. Després carrega i executa el Volume Boot Record per a aquesta partición (així que el Master Boot Record, com altres sectors d'arrencada, és un blanc per als virus que infecten el sector d'arrencada).

El codi del MBR, modificat per alguns gestors d'arrencada, pot realitzar una sèrie de tasques que són distintes segons el gestor d'arrencada. Per exemple, en alguns gestors, aquest codi carrega la resta del codi del gestor d'arrencada des de la primera pista del disc (que és espai lliure no assignat a cap partición de disc) i ho executa. En uns altres, usa una taula de posicions de disc, que es troba en el mateix espai que el codi, per a localitzar el codi de la resta del gestor d'arrencada i poder carregar-ho i executar-ho. Ambdues formes tenen problemes. La primera confia en el comportament (que no és el mateix en totes) de les utilitats de particionado de disc i la segona requereix que la taula de posicions de disc s'actualitzi una vegada s'hagin fet els canvis per a localitzar la resta del codi.

En els ordinadors que no usen processadors IA-32, o en ordinadors que usen l'esquema de la Taula de Particiones GUID, aquest esquema no és correcte, i el MBR no s'utilitza en l'arrencada del sistema. En el seu lloc el firmware és capaç d'entendre directament l'esquema de particionado GPT i el format de sistema de fitxers FAT, de manera que carrega i executa programes guardats com fitxers en la Partición del Sistema. El MBR, per tant, no intervé en absolut en l'arrencada del sistema (excepte indirectament, en la mesura en què podria contenir la taula de particiones si s'ha usat l'esquema de la Taula de Particiones del MBR).

[editar] MBR i identificació dels discos

A més del codi de l'arrencada i la taula de particiones, hi ha un tercer camp que pot estar contingut en un MBR: la signatura del disc (de Windows NT). Té 32 bits per a identificar unívocamente el maquinari de disc (no confondre amb la unitat de disc — no tenen per què ser el mateix en discos durs extraíbles).

La signatura del disc va ser introduïda per Windows NT 3.5, però actualment la usen diversos sistemes operatius, inclosa les versions de la 2.6 en endavant del kernel de Linux. Windows NT usa la signatura del disc com un índex en el seu registre, on guarda la relació entre particiones i lletres de disc. També ho usa en el fitxer boot.ini per a indicar les particiones amb marca bootable en Windows NT.[5] Linux usa la signatura del disc a l'arrencar per a determinar la posició del volum d'arrencada

[editar] Consideracions en la programació

S'assumeix que el sistema que s'està programant usa un esquema MBR per a BIOS, com s'ha indicat abans, i la BIOS del sistema localitza un MBR vàlid en un disc particionado durant la seqüència d'arrencada (boot sequence). Com s'ha vist abans, el codi convencional del MBR carrega i executa el codi del Volume Boot Record del sistema operatiu (o bootloader) que es troba al principi de la partición activa. El MBR pot assumir simplement que la partición activa del disc actual és des de la qual s'arrenca o, alternativamente, pot programar-se com un MBR d'Arrencada dual. Un MBR d'arrencada dual ha d'interactuar amb l'usuari per a determinar des de quin partición de disc s'arrenca i ha de passar-li el control al MBR d'un altre disc dur.

La BIOS carregarà el primer MBR vàlid que trobi cap a l'adreça física hexadecimal 0x7C00, i salta a aquesta adreça. Part dels 512 bytes del sector es reserva per a la taula de particiones i una altra informació (veure la taula), així que el codi del programa ha de ser tan petit com per a cabre en poc més de 400 bytes de memòria. El codi ha de comunicar-se amb l'usuari, examinar la taula de particiones, o realitzar tasques de gestió com activar la línia A20, o canviar a manera irreal des de manera real. Eventualment, el MBR necessitarà realitzar la seva tasca i carregar el programa que farà la següent fase de l'arrencada, usant la trucada de la BIOS INT 13.

Normalment, el codi del sector d'arrencada també espera ser carregat de l'adreça física 0x7C00, fins i tot quan tota la memòria de les adreces físiques entre la 0x500 i la 0x9ffff està disponible en manera real (637 Kb i mig). Quan el MBR ja s'està executant des de la posició 0x7C00, una de les seves primeres tasques normalment és reubicarse en un altre lloc de la memòria -- sovint en la 0x7A00. Un Volume Boot Record té solament la grandària d'un sector, la qual cosa no és un problema doncs és fàcil que el MBR carregui bastant més que un només un sector. Alguns gestors d'arrencada són més grans que un sector, així que carregar més d'un sector pot accelerar el procés d'arrencada.

[editar] Fer una còpia de seguretat del MBR

En UNIX/Linux es pot usar el comando dd per a fer un backup i restaurar el MBR des d'una consola.

Per a fer la còpia de seguretat (backup):

dd if=/dev/xxx of=mbr.backup bs=512 count=1

Per a restaurar-ho:

dd if=mbr.backup of=/dev/xxx bs=512 count=1

On xxx és el dispositiu, que pot ser hda, sda, o qualsevol un altre.

Per a esborrar-ho, si no tenim una còpia de seguretat però necessitem eliminar la informació d'aquest sector, hem de posar els 512 bits a zero:

dd if=/dev/zero of=/dev/xxx bs=512 count=1


En els sistemes operatius de Microsoft no hi ha accés directe al MBR. En DOS o Windows 9x, el programa de DOS fdisk juntament amb fdisk /mbr (del que no hi ha documentació) reescribirá el codi del MBR. En Windows 2000 i posteriors, la consola de recuperació pot usar-se per a escriure el nou codi del MBR al disc dur. Existeixen altres utilitats per a editar la taula de particiones del MBR directament.

Si s'està fent un backup del disc dur (el que en anglès es coneix com ghosting) i dóna avisos que no es troba el fitxer de paginación, segurament es pugui solucionar amb fdisk /fixmbr (executat des d'un disquet, ja que no es podrà entrar en Windows).

En DR DOS 6 (i possiblement altres versions), el programa FDISK té una opció per a reescribir el MBR ("Re-write Master Boot Record"). Quan s'executa amb aquesta opció es guarda l'antic MBR en OLDMBR.BIN, que pot ser copiat en un disquet perquè FDISK intenti restaurar el MBR original des d'ell, en cas de necessitat.


[editar] Referències

  1. a b Els camps d'estat en els registres de la taula d'una partición no estesa els usa el codi del gestor d'arrencada inclosa en el MBR per a determinar des de quin particiones es pot arrencar (tenen la marca bootable). (En nomenclatura IBM, aquestes particiones es marquen com startable. En altres nomenclaturas se'ls crida activi). Els camps d'estat en els registres de la taula d'una partición estesa tenen el mateix ús que en el cas anterior, (en nomenclatura IBM, aquestes particiones són marcades com bootable). Pel general, les particiones marcades amb "bootable" contenen un gestor d'arrencada, que mostra una llista de les particiones des de les quals es pot arrencar.
  2. En teoria, valors distints de 0x00 i 0x80 en aquest camp no tenen significat. En la pràctica, el seu significat depèn del que el codi d'arrencada del MBR hagi predeterminat. Alguns gestors d'arrencada identifiquen el valor 0x80 amb una partición bootable ("startable"). Uns altres només busquen un valor distint de zero.
  3. a b Aquests camps tenen una limitació de 1024 cilindres, 255 caps, i 63 sectors. Si una adreça CHS és massa llarga per a emmagatzemar-la aquí, s'empra una tupla (1023,254,63).
  4. Andries Brouwer. Propietats de la taula de particiones. Partition types.
  5. Microsoft. Windows pot usar sintaxis signature() en el fitxer Boot.ini. KnowledgeBase.

[editar] Més informació

[editar] Vegi's també

[editar] Enllaços externs