Uncarregador d'arrencada (boot loader en anglès) és un petitprograma que realitza la inicialització bàsica del sistema. Aquest comportament ve donat per la forma en què està organitzat elprogramari en elsordinadors.[1][2][3]
Elsistema operatiu i el programari necessari per fer funcionar l'ordinador estan emmagatzemats en eldisc dur (actualment pot executar-se un sistema operatiu des d'undisc òptic o un dispositiuUSB). Per carregar-los en lamemòria RAM seria necessari un altre sistema operatiu. Aquestaparadoxa es resol amb el carregador d'arrencada, que no és capaç de fer tasques complexes, però sí que conté les mínimes instruccions per carregar el sistema operatiu.
Els primers carregadors llegien el sistema operatiu des de suports externs com fitxes de paper o similars. Actualment laCPU executa codi des d'una memòria fixaROM i es comença comprovant elsdispositius d'emmagatzematge en un ordre prefixat en laBIOS i s'executa el carregador que es trobi primer (normalment en el del disc dur). Aquest carregador primari es troba en seccions arbitràries del dispositiu on es troba (normalment anomenades "seccions de càrrega").
Aquest primer carregador deriva a un carregador de programari secundari, molt més complex, sovint part del mateix sistema operatiu que carrega, i ja situat en qualsevol part del dispositiu d'emmagatzematge. És el cas deGRUB iLILO, que poden carregar sistemes operatius comLinux iWindows, oNTLDR, que només carregaWindows NT.
Uncarregador o gestor d'arrencada (en anglès:bootloader) és un programa senzill (que no té la totalitat de les funcionalitats d'un sistema operatiu) dissenyat exclusivament per preparar tot el que necessita el sistema operatiu per funcionar. Normalment, s'utilitzen els carregadors d'arrencada multietapes, en què diversos programes petits se sumen els uns als altres, fins que l'últim carrega el sistema operatiu.
Als ordinadors moderns (després de 1975), el procés d'arrencada comença amb laCPU executant els programes continguts a la memòriaROM en una adreça predefinida (es configura la CPU per executar aquest programa, sense ajuda externa, en encendre l'ordinador).
Aquest programa conté funcionalitats rudimentàries per cercar unitats que es puguin seleccionar per participar en l'arrencada, i carregar un petit programa des d'una secció especial de la unitat més prometedora. El petit programa no és, en si mateix, un sistema operatiu sinó, simplement, un carregador d'arrencada de segon nivell, comLilo oGrub, que és capaç de carregar el sistema operatiu pròpiament dit i, finalment, transferir-li el control. El sistema s'autoiniciarà i pot carregar elscontroladors de dispositius i altres programes que són necessaris per al funcionament normal del sistema operatiu.
El procés d'arrencada es considera complet quan l'ordinador està preparat per contestar els requisits de l'exterior. El típic ordinador modern arrenca en, aproximadament, un minut (del qual, 15 segons són emprats pels carregadors d'arrencada preliminars i, la resta, pel carregador del sistema operatiu), mentre que els grans servidors poden necessitar diversos minuts per arrencar i començar tots els serveis; per assegurar una alta disponibilitat, ofereixen uns serveis abans que altres.
La majoria dels sistemes embeguts han d'arrencar gairebé instantàniament, per exemple, esperar un minut per poder veure la televisió es considera inacceptable. Per això, tenen el sistema operatiu a la ROM omemòria flash, gràcies al que poden ser executats de forma gairebé instantània.
ALinux, durant el procés d'arrencada es mostra per pantalla la seqüència de mòduls i altres components delsistema operatiu amode text. Per defecte es mostra així, però un pegat anomenatsplashy,[4] (substitut debootsplash[5]) permet amagar aquestes línies de text (amb l'opció"quiet" y"splash" en les línies d'arrencada), oferint al seu lloc una imatge més amigable, amb una barra de progrés. No obstant això, es pot canviar al mode "verbose" (detallat) prement la tecla F2, cosa que ens mostrarà de nou els missatges propis del procés d'arrencada. També dota la consola deLinux d'un fons totalment configurable.
Tot això és possible gràcies alframebuffer, que possibilita les consoles a resolucions i profunditats de color altes.
Normalment, el microprogramari del sistema (UEFI o BIOS) permetrà a l'usuari configurar un "ordre d'arrencada". Si l'ordre d'arrencada s'estableix a "primer, la unitat de DVD; segon, la unitat de disc dur", llavors el microprogramari intentarà arrencar des de la unitat de DVD i, si això falla (per exemple, perquè no hi ha DVD a la unitat), intentarà arrencar des de la unitat de disc dur local.
Per exemple, en un PC ambWindows instal·lat al disc dur, l'usuari podria establir l'ordre d'inici en què es va indicar anteriorment i després inserir unLinuxLive CD per provarLinux sense haver d'instal·lar un sistema operatiu al disc dur. Aquest és un exemple d'arrencada dual, en què l'usuari tria quin sistema operatiu iniciar després que l'ordinador hagi realitzat la sevaautocomprovació d'encesa (POST). En aquest exemple d'arrencada dual, l'usuari tria inserir o treure el DVD de l'ordinador, però és més comú triar quin sistema operatiu arrencar seleccionant des d'un menú gestor d'arrencada al dispositiu seleccionat, usant el teclat de l'ordinador per seleccionar des d'un menú d'arrencadaBIOS oUEFI, o tots dos; el menú d'inici generalment s'ingressa prement les teclesF8 oF12 durant el POST; laConfiguració del BIOS generalment s'ingressa prement les teclesF2 oDEL durant la POST.[6][7]
Hi ha diversos dispositius disponibles que permeten a l'usuari "arrencar ràpidament" en allò que sol ser una variant de Linux per a diverses tasques senzilles com l'accés a Internet; alguns exemples sónSplashtop iLatitude ON.[8][9][10]
En iniciar-se, la CPUx86 d'un ordinador personal compatible amb IBM, executa amode real, la instrucció ubicada avector de reinici (l'adreça de memòria físicaFFFF0h a processadors x86 de 16 bits[11] iFFFFFFF0h en processadors x86 de 32 i 64 bits[12][13]), generalment apunta al punt d'entrada del microprogramari (UEFI oBIOS) dins de la ROM. Aquesta ubicació de memòria normalment conté una instrucció de salt que transfereix l'execució a la ubicació del programa d'inici del microprogramari (UEFI oBIOS). Aquest programa executa unaautoprova d'encesa (POST) per comprovar i inicialitzar els dispositius necessaris, com lamemòria principal (DRAM), el bus PCI i els dispositius PCI (inclòs el funcionament integratROM opcional). Un dels passos més complicats és configurar DRAM sobreSPD, cosa que es complica encara més pel fet que en aquest punt la memòria és molt limitada.
Després d'inicialitzar el maquinari requerit, el microprogramari (UEFI oBIOS) passa per una llista preconfigurada dedispositius d'emmagatzematge no volàtil ("seqüència d'arrencada de dispositiu") fins que en trobeu un d'arrencada. Un dispositiu MBR d'arrencada es defineix com un que es pot llegir i on els dos últims bytes del primer sector contenen laparaulalittle-endianAA55h,[nb 1] trobada com a seqüència de bytes55h,AAh al disc (també coneguda com aSignatura d'arrencada MBR), o on s'estableixi d'una altra manera que el codi dins del sector és executable a PC x86.
Quan el BIOS ha trobat un dispositiu d'arrencada, carrega el sector d'arrencada a l'adreça lineal7C00h (normalmentsegment:offset0000h:7C00h,[14][15]:29 però alguns BIOS usen erròniament07C0h:0000h) i transfereixen l'execució al codi d'arrencada. En el cas d'un disc dur, això s'anomenaMaster Boot Record (MBR). El codi MBR convencional comprova la taula de particions del MBR per cercar una partició configurada com a "arrencable".[nb 2] (el que té l'indicadoractiu establert). Si hi ha unapartició activa, el codi MBR carrega el codisector d'arrencada d'aquesta partició, conegut com aRegistre d'arrencada de volum (VBR), i l'executa. El codi inicial MBR sol ser específic del sistema operatiu.
El codi d'arrencada del sector és el carregador d'arrencada de primera etapa. Es troba adiscos fixos iunitats extraïbles, i ha de cabre en els primers 446bytes delMaster Boot Record per deixar espai per a lataula de partició per omissió de 64 bytes amb quatre entrades de partició i lasignatura d'arrencada de dos bytes, que requereix el BIOS per a un carregador d'arrencada adequat —o fins i tot menys, quan característiques addicionals com a més de quatre entrades de partició (fins a 16 amb 16 bytes cadascuna), unasignatura de disc (6 bytes), unamarca de temps de disc (6 bytes), unaPartició activa avançada (18 bytes) o carregadorsmulti-boot també han de ser compatibles en alguns entorns. Afloppy isuperfloppyVolume Boot Records, fins a 59 bytes estan ocupats per alBloc de paràmetres de BIOS estès en els volumsFAT12 iFAT16 des de DOS 4.0, mentre que elFAT32 EBPB introduït amb DOS 7.1 requereix fins i tot 87 bytes, deixant només 423 bytes per al carregador d'arrencada quan s'assumeix una mida de sector de 512 bytes. Per tant, els sectors d'arrencada de Microsoft tradicionalment imposaven certes restriccions en el procés d'arrencada, per exemple, el fitxer d'arrencada havia d'ubicar-se en una posició fixa al directori arrel del sistema de fitxers i emmagatzemar-se com a sectors consecutius,[16][17] condicions ateses per l'ordreSYS i lleugerament relaxat en versions posteriors de DOS.[17][nb 3] Després, el carregador d'arrencada va poder carregar els primers tres sectors del fitxer a la memòria, que va resultar contenir un altre carregador d'arrencada integrat capaç de carregar la resta del fitxer a la memòria.[17] Quan Microsoft va afegirLBA i compatibilitat amb FAT32, fins i tot van canviar a un carregador d'arrencada que arribava a "dos" sectors físics i usava instruccions 386 per raons de mida. Alhora, altres proveïdors van aconseguir incloure molta més funcionalitat en un sol sector d'arrencada sense relaxar les restriccions originals de només una memòria disponible mínima (32 KB) i suport de processador (8088/8086).[nb 4] Per exemple, els sectors d'arrencada de DR-DOS poden localitzar el fitxer d'arrencada al sistema de fitxers FAT12, FAT16 i FAT32 i carregar-ho a la memòria com un tot mitjançantCHS o LBA, fins i tot si el fitxer no està emmagatzemat en una ubicació fixa i en sectors consecutius.[18][14][19][20][21][nb 5][nb 4]
El VBR sol ser específic del sistema operatiu; no obstant això, la seva funció principal és carregar i executar el fitxer del carregador d'arrencada del sistema operatiu (combootmgr ontldr), que és el carregador d'arrencada de segona etapa, des d'una partició activa. Després, el carregador carrega elkernel del sistema operatiu des del dispositiu d'emmagatzematge.
Si no hi ha una partició activa, o el sector d'inici de la partició activa no és vàlid, l'MBR pot carregar un carregador d'inici secundari que seleccionarà una partició (sovint mitjançant l'entrada de l'usuari) i carregarà el vostre sector d'inici, que generalment carrega el kernel del sistema operatiu corresponent. En alguns casos, l'MBR també pot intentar carregar carregadors secundaris abans d'arrencar la partició activa. Si tota la resta falla, hauria d'emetre unINT 18h[15][14] que fa lacrida interrupció BIOS (seguit d'un INT 19h en cas que INT 18h tornés) per tornar el control al BIOS, que després intentaria arrencar altres dispositius, intentaria unarrencada remota a través de la xarxa.[14]
A diferència del BIOS, UEFI (sensearrencada heretada a través de CSM) no depèn dels sectors d'arrencada, el sistema UEFI carrega el carregador d'arrencada (arxiu deAplicació EFI aldisc USB o a laPartició del sistema EFI) directament,[24] i el kernel del sistema operatiu és carregat pel carregador.
↑La signatura a l'òfset+1FEh als sectors d'arrencada és55h AAh, que és55h en òfset+1FEh iAAh en òfset+1FFh. Com que la representaciólittle-endian s'ha d'assumir en el context de les màquines compatibles ambIBM PC, això es pot escriure com una paraula de 16 bitsAA55h en programes per a processadorsx86 (tingueu en compte l'ordre intercanviat), mentre que s'hauria d'escriure com55AAh en programes per a altres arquitectures de CPU usant una representacióbig-endian. Atès que això s'ha barrejat diverses vegades en llibres i fins i tot en documents de referència originals de Microsoft, aquest article utilitza la representació en disc basada en bytes basada en òfset per evitar possibles interpretacions errònies.
↑El manual dePC DOS 5.0 afirma incorrectament que els fitxers del sistema ja no necessiten ser contigus. Tanmateix, perquè el procés d'arrencada funcioni, els fitxers del sistema encara han d'ocupar les dues primeres entrades del directori i els primers tres sectors deIBMBIO.COM encara s'han d'emmagatzemar de manera contigua.SYS segueix ocupant-se d'aquests requisits.
↑Hi ha una excepció a la regla que elVBR deDR-DOS carregarà tot el fitxerIBMBIO.COM a la memòria: si el fitxer IBMBIO.COM és més gran que 29 KB, intentar carregar tot el fitxer a la memòria donaria com a resultat que el carregador d'arrencadasobreescrigui lapila ireubiqui laTaula de paràmetres del disc (DPT/FDPB). Per tant, un VBR deDR-DOS 7.07 només carregaria els primers 29 KB del fitxer a la memòria, confiant en un altre carregador integrat a la primera part de IBMBIO.COM per verificar aquesta condició i carregar la resta de larxiu a la memòria per si mateix si és necessari. Això no causa problemes de compatibilitat, ja que la mida de IBMBIO.COM mai no va superar aquest límit en versions anteriors sense aquest carregador. Combinat amb una estructura d'entrada dual, això també permet que el sistema sigui carregat per un VBR dePC DOS, que carregaria només els tres primers sectors del fitxer a la memòria.
↑«iAPX 286 Programmer's Reference Manual». Intel, 1983. Arxivat de l'original el 2022-10-09. [Consulta: 23 agost 2019]. «Since the CS register contains F000 (thus specifying a code segment starting at physical address F0000) and the instruction pointer contains FFF0, the processor will execute its first instruction at physical address FFFF0H.»
↑«80386 Programmer's Reference Manual». Intel, 1986. Arxivat de l'original el 2022-10-09. [Consulta: 3 novembre 2013]. «After RESET, address lines A31-20 are automatically asserted for instruction fetches. This fact, together with the initial values of CS:IP, causes instruction execution to begin at physical address FFFFFFF0H.»
↑«Intel 64 and IA-32 Architectures Software Developer's Manual». Intel Corporation, 01-05-2012. Arxivat de l'original el 2022-10-09. [Consulta: 23 agost 2012]. «The first instruction that is fetched and executed following a hardware reset is located at physical address FFFFFFF0h. This address is 16 bytes below the processor's uppermost physical address. The EPROM containing the software-initialization code must be located at this address.»
↑The MS-DOS Encyclopedia: versions 1.0 through 3.2. Completely reworked. Redmond, Washington, USA: Microsoft Press, 1988.ISBN 1-55615-049-0.OCLC16581341.LCCN87-21452. (xix+1570 pàgines; 26 cm) (NB. Aquesta edició es va publicar l'any 1988 després d'una extensa reelaboració de la primera edició de 1986 retirada per un equip diferent d'autors:«The MS-DOS Encyclopedia (1988)». Arxivat de l'original el 2018-10-14.)
↑Rosch, Winn L. (1991-02-12).«DR DOS 5.0 - The better operating system?».PC Magazine10 (3): 241–246, 257, 264, 266. Arxivat del'original el 2019-07-25. «[…]SYS has been improved underDR DOS 5.0 so you don't have to worry about leaving the first cluster free on a disk that you want to make bootable. The DR DOS system files can be located anywhere on the disk, so any disk with enough free space can be set to boot your system. […]» (NB. La font ho atribueix a la utilitat SYS, mentre que de fet aquesta és una característica del carregador d'arrencada avançat al sector d'arrencada. SYS només planta aquest sector al disc.)
↑«FAT32 in DR-DOS». opendos@delorie, 17-01-2001. Arxivat de l'original el 2017-10-06. [Consulta: 6 octubre 2017]. «[…] TheDR-DOS boot sector […] searches for theIBMBIO.COM (DRBIOS.SYS) file and then loads the *whole* file into memory before it passes control to it. […]»
↑«Can't copy». opendos@delorie, 20-02-2002. Arxivat de l'original el 2017-10-06. [Consulta: 6 octubre 2017]. «[…] TheDR-DOS boot sector loads the wholeIBMBIO.COM file into memory before it executes it. It does not care at all about theIBMDOS.COM file, which is loaded by IBMBIO.COM. […] The DR-DOS boot sector […] will find the […] kernel files as long as they are logically stored in the root directory. Their physical location on the disk, and if they are fragmented or not, is don't care for the DR-DOS boot sector. Hence, you can just copy the kernel files to the disk (even with a simplyCOPY), and as soon as the boot sector is a DR-DOS sector, it will find and load them. Of course, it is difficult to put all this into just 512 bytes, the size of a single sector, but this is a major convenience improvement if you have to set up a DR-DOS system, and it is also the key for the DR-DOS multi-OSLOADER utility to work. TheMS-DOS kernel files must reside on specific locations, but the DR-DOS files can be anywhere, so you don't have to physically swap them around each time you boot the other OS. Also, it allows to upgrade a DR-DOS system simply by copying the kernel files over the old ones, no need forSYS, no difficult setup procedures as required for MS-DOS/PC DOS. You can even have multiple DR-DOS kernel files under different file names stored on the same drive, and LOADER will switch between them according to the file names listed in theBOOT.LST file. […]»
↑«The continuing saga of Windows 3.1 in enhanced mode on OmniBook 300». MoHPC - the Museum of HP Calculators, 14-08-2017. Arxivat de l'original el 2017-10-06. [Consulta: 6 octubre 2017]. «[…] theDR-DOSFDISK does not only partition a disk, but can also format the freshly created volumes and initialize their boot sectors in one go, so there's no risk to accidentally mess up the wrong volume and no need forFORMAT /S orSYS. Afterwards, you could just copy over the remaining DR-DOS files, including the system files. It is important to know that, in contrast toMS-DOS/PC DOS, DR-DOS has "smart" boot sectors which will actually "mount" the file-system to search for and load the system files in the root directory instead of expecting them to be placed at a certain location. Physically, the system files can be located anywhere and also can be fragmented. […]»