materials

Arrencada del sistema

Introducció

Ja sabem que:

Per tant per a que l’equip funcione necesita tindre el sistema operatiu carregat en la RAM. Quan volem utilitzar un programa el sistema operatiu s’encarrega de buscar-lo en el disc i carregar-lo en la RAM per a que es puga executar, però ¿qui carrega el sistema operatiu en la RAM al arrancar l’equip?

La solució és incloure en la placa base un xip amb memòria no volàtil (un xip EPROM, memòria flash, …) amb un programa que inicia els passos per a carregar el sistema operatiu en la RAM. Les plaques base per a PC tenen dos tipus de xip amb el firmware per a carregar el sistema:

Tant en un cas com en l’altre el programa inclòs en el firmware (BIOS o UEFI) haurà de carregar en la RAM un programa anomenat bootloader (carregador d’arrencada) que és qui s’encarregarà de buscar el sistema operatiu en el disc i carregar-lo en memòria.

El procés de carregar el S.O. tindrà vàries fases:

  1. El firmware (i altres xicotets programes en el cas de la BIOS) carreguen en la RAM el bootloader
  2. Aquest programa carrega en la RAM el kernel del sistema operatiu (S.O.) i tot el que necessita per a funcionar
  3. Comença a executar-se el S.O. carregat en la RAM i l’ordinador ja està preparat per a funcionar normalment i rebre ordres de l’usuari, normalment tras realitzar el procés de login

Aquest procés tarda alrededor d’un minut en els sistemes operatius moderns, encara que en els servidors pot tardar varis minuts.

Ara anem a vore en detall el procés d’arrencada del sistema amb BIOS (o amb UEFI funcionant en mode Legacy BIOS) i el procés d’arrencada del sistema amb UEFI.

Arrencada del sistema amb BIOS

BIOS

La BIOS és un xip de memòria no volàtil que es troba a la placa base i que conté configuracions bàsiques de l’ordinador (com la data i hora o la seqüència d’arrencada) i un xicotet programa per a carregar el sistema operatiu.

BIOS

Encara que la inmensa majoria d’equips ja no tenen BIOS sino la nova UEFI aquesta es pot configurar en mode Legacy BIOS per a que funcione com una BIOS.

L’arrencada amb BIOS només pot fer-se des d’un dispositiu formatjat amb taula de particions MBR (també anomenada Ms-DOS).

MBR

El Master Boot Record (MBR) és el primer sector d’un dispositiu d’emmagatzematge de dades, com un disc dur o un pen-drive. Conté:

MBR

Procés d’arrencada

A l’arrencar un ordinador amb BIOS la CPU executa el programa carregat en ella, anomenat POST (PowerOn Self Test) que:

El procés te tants passos perquè tant el programa de la BIOS com el del MBR i el del sector d’arrencada de la partició activa són molt xicotets (recorda que la mida de un sector són 512 bytes) i per tant no poden carregar el S.O. directament.

Alguns sistemes canvien el programa del MBR per a que carregue directament el bootloader des de la partició en que es trobe (com Grub).

Arrencada de Windows

La manera en que arranca l’ordinador és pràcticament igual des de Windows 7. El procés d’arrencada és el següent:

NOTA: En molts sistemes amb Winwows 8 quan apaguen l’equip en compte de tancar les sessions dels usuaris, aturar els serveis i apagar la màquina el que es fa és només tancar les sessions dels usuaris i hibernar la màquina (es guarda el contingut de la memòria en un fitxer anomenat hiberfil.sys). Això té l’avantatge que el sistema s’inicia molt ràpidament perquè no han de carregar-se els drivers i iniciar el sistema operatiu i els serveis.

| Per a que l’ordinador s’ature completament i poder així entrar en la BIOS hem d’apagar-lo en Windows amb la tecla majúscules polsada. Si volem desactivar per a sempre la hibernació hem d’obrir una terminal d’Administrador (busquem cmd i en el menú contextual triem ‘Executar com administrador’) i executar el comando:

powercfg -h como
També podem fer-ho des de l’entorn gràfic amb Panel de control -> Sistema y seguridad -> Opciones de energía -> Cambiar lo que hacen los botones de encendido.

Reparar l’arrencada del sistema

Si es danya el MBR o algun fitxer d’arranque l’equip no podrà arrancar correctament. El que hem de fer és introduir el CD d’instal·lació de Windows i arrancar l’equip. Una vegada iniciem amb el CD, cal triar l’opció de “Reparar l’equip” en compte de continuar amb l’opció d’instal·lació del sistema.

Una vegada triem aquesta opció, ens pot aparèixer una finestra on triarem Solucionar problemes. A continuació ens apareixerà una finestra en les diferents possibilitats de recuperació:

Reparar Windows 10

En internet podeu trobar infinitat de pàgines i vídeos de com fer les reparacions més comuns.

Canviar les opcions d’arrencada en Windows

NOTA: ací anem a veure com podem modificar l’arrencada de Windows des del mateix sistema però hi ha multitud de programes que ens permeten fer tot això de manera més senzilla, com EasyBCD.

Una forma senzilla de modificar algunes opcions del BCD és amb el comando msconfig. Podem canviar el temps d’espera, el sistema operatiu per defecte o les opcions de càrrega:

msconfig

Altra manera de canviar les opcions és des de Panell de Control -> Sistema i Seguretat -> Sistema -> Configuració Avançada del sistema -> Opcions Avançades -> Inici i Recuperació -> Configuració. Des d’ací només permet canviar el temps i el sistema operatiu per defecte:

Inici i Recuperació

L’opció més potent però més difícil de canviar les opcions és executar des de la terminal d’Administrador l’eina bcdedit. A continuació hi ha un exemple de l’execució d’aquesta ordre sense cap paràmetre o opció.

bcdedit

L’eina BCDEDIT permet configurar qualsevol opció d’arrencada en el menú BCD així com afegir noves entrades al menú. Podem obtindre ajuda del mateix amb:

Arrencada de GNU/Linux amb Grub i BIOS

Tenim molts carregadors per als sistemes Linux però el més utilitzat és Grub.

En realitat Grub no és un gestor d’arrencada només de GNU/Linux sinó que pot carregar qualsevol sistema operatiu (és un gestor d’arrencada múltiple). Una de les característiques més interessants d’aquest gestor és que podem canviar tots els paràmetres en l’arrencada mitjançant el sistema d’ordres de consola de Grub.

El procés d’inici d’un equip amb Grub és:

Canviar les opcions de configuració de Grub

La manera més ràpida de canviar les opcions de configuració és editar el fitxer /etc/default/grub. Algunes de les opcions que conté són:

Per a que els canvis fets tinguen efecte, després de fer qualsevol modificació d’aquest fitxer hem de tornar a generar el fitxer grub.cfg mitjançant l’execució de:

    upgrade-grub

També podem instal·lar qualsevol programa gràfic per a editar les opcions d’inici com StartUp Manager, Grub Customizer, etc:

StartUp Manager

Reparar l’arrencada del sistema

Hi pot haver ocasions en què un usuari necessita tornar a instal·lar Grub. Això passa sovint quan el MBR del dispositiu d’arrencada s’altera i Grub s’elimina del MBR, per exemple si Windows s’instal·la (o es re-instal·la) després d’instal·lar GNU/Linux en eixe ordinador.

Podem fer-ho de diferents maneres (podeu trobar més informació en https://help.ubuntu.com/community/Grub2/Installing#Reinstalling_GRUB_2:

Utilitzant un LiveCD de GNU/Linux

Els passos a seguir són:

  1. Arrencar amb el LiveCD.
  2. Obrir una terminal.
  3. Si no sabem en quina partició tenim instal·lat el sistema operatiu ho determinarem amb el comando fdisk -l. fdisk -l
  4. Muntar la partició que conté la instal·lació d’Ubuntu (en el cas de l’exemple sda3 que és la partició Linux).
      sudo mount /dev/sda3 /mnt
    
  5. Si hem fet algun canvi en els sistemes que teníem instal·lats (com instal·lar un nou Windows) hem d-actualitzar el menú de Grub amb:
      sudo update-grub
    
  6. Executar l’ordre grub-install com es descriu a continuació. Açò reinstal·larà els fitxers de Grub en la partició muntada i corregirà el MBR:
      sudo grub-install --root-directory=/mnt/ /dev/sda
    

Ara ja podem reiniciar l’equip.

En el pas 6 compte de instal·lar grub des d’un directori podem rootear eixe directori de manera que treballem sobre el nostre sistema en el disc i no sobre el sistema del LiveCD. En eixe cas després de muntar la partició (pas 4) hem de muntar (amb l’opció --bind) altres 3 directoris:

  sudo mount --bind /sys /mnt/sys
  sudo mount --bind /proc /mnt/proc
  sudo mount --bind /dev /mnt/dev

Una vegada fet executem chroot sobre el punt de muntatge:

  sudo chroot /mnt

I ara ja podem reparar grub (abans l’actualitzarem si cal amb update-grub):

  sudo grub-install --recheck /dev/sda

I per últim reiniciem l’equip.

NOTA: recorda canviar els noms de discs i particions (sda, sda3, …) pels adequats en el teu sistema.

Amb SuperGrubDisc2

Es tracta de un LiveCD que permet arrencar un equip des de la qualsevol partició del disc. El que fa és mirar en el disc de l’equip els sistemes operatius instal·lats i mostra un menú on triem el que volem arrancar. Una vegada dins, com ja estem en el nostre linux només cal fer:

  1. Actualitzar el menú Grub amb sudo update-grub si hem fet algun canvi en el disc (per exemple si hem instal·lat un nou Windows)
  2. Executar l’ordre grub-install. Açò reinstal·larà els fitxers de Grub de la partició actual en la seua correcta ubicació i també corregirà el MBR.
      sudo grub-install /dev/sda
    
  3. Reiniciar l’equip.

A més de SuperGrub hi ha altres utilitats per fer això com Boot Repair, Rescatux, etc.

Arrencada del sistema amb UEFI

EFI

La EFI (Extensible Firmware Interface), és una especificació desenvolupada per Intel per a reemplaçar la antiga BIOS que tenia moltes limitacions. Algunes de les seues avantatges són:

NOTA: Per a saber quin tipus d’instal·lació de Windows tenim executem (menu contextual del botó Inici -> Executar) msinfo32.

uefi

Arrencada amb UEFI

El procés d’arrencada és més simple que amb BIOS: al arrancar l’equip s’executa el programa que hi ha en la UEFI que comprova i inicialitza el hardware i carrega directament en la RAM el carregador del sistema operatiu que volem iniciar.

L’arrencada amb UEFI és més senzilla i ràpida perquè aquest firmware pot carregar directament en la RAM el carregador del sistema operatiu, sense necessitat del MBR ni el sector d’arrencada de la partició activa.

Un ordinador amb arrencada UEFI necessita una partició en el disc dur anomenada ESP (EFI System Partition) on es guarden els carregadors dels sistemes operatius instal·lats en el disc. Aquesta partició ha de tindre un sistema d’arxius FAT32. Cada sistema operatiu que s’instal·la crea una carpeta en aquesta partició on guarda el seu carregador. Per defecte es carrega /EFI/BOOT/bootx64.efi.

ESP

En la imatge anterior podem veure la partició EFI d’un equip amb Windows, Debian i Ubuntu instal·lats. En el panel de la dreta podem veure el contingut de la carpeta d’arrencada de Windows amb el carregador (BootMgr) i el menú d’opcions d’inici (BCD).

Secure Boot

És una opció de UEFI que impedeix que s’execute un carregador si no està signat digitalment per una entitat reconeguda pel sistema. Normalment els equips que comprem inclouen la signatura de Microsoft i per tant poden arrancar els carregadors de Windows però hi ha algunes distribucions GNU/Linux que tenen també el seu carregador signat per Microsoft per a poder arrancar amb Secure Boot. També podem afegir altres signatures a la nostra UEFI o desactivar aquesta opció.

Reparar l’arrencada

Si el nostre ordinador amb UEFI no arranca, la forma més senzilla de arreglar-lo és des de l’entorn gràfic de la nostra BIOS/UEFI. Allí podrem vore les diferents opcions d’arrancada així com eliminar alguna o afegir noves.

Altra forma és afegir una opció des de la shell de UEFI per a que arranque el carregador que li indiquem, encara que al no tindre entorn gràfic és més difícil. En primer lloc anem a veure els dispositius que tenim:

Shell> map

Entrem en el disc dur (normalment fs0):

Shell> fs0:

Amb ls podem veure el contingut i buscar el carregador (un fitxer .efi que estarà dins de la carpeta de la nostra distribució). En el cas de Debian el trobem en fs0:\EFI\debian\grubx64.efi. Ara afegim una entrada per al carregador :

FS0:\> bcfg boot add 0 fs0:\EFI\debian\grubx64.efi "Debian"

Per a finalitzar eixim amb exit i ja tenim el carregador arreglat.

En tot cas, si el nostre sistema no arranca sempre podrem arrancar-lo des d’un USB amb algun gestor d’arrencada per a UEFI com rEFInd, Boot Repair, supergrub disk o altres. Una vegada arrancat podem intentar reparar des de dins el que estiga malament.

I si Linux no arranca quan està amb Windows?

Cada sistema operatiu que instal·lem crearà dins de la partició EFI una carpeta amb el seu nom (Microsoft, Debian, Ubuntu, Apple, etc) dins de la qual hi ha un fitxer anomenat NomfitxerArquitectura.efi (per exemple bootmgfw.efi o grubx64.efi) que és el carregador d’eixe sistema operatiu. A més crea una variable en la NVRAM (Non-Volatile RAM) de UEFI que apunta a eixe carregador per a que aparega eixa opció en el menú al arrancar (si només hi ha una opció no apareix el menú).

Si el firmware no troba cap opció d’arrencada carrega directament el fitxer EFI/boot/bootx64.efi que és un carregador per defecte, dins del directori boot que no pertany a cap sistema operatiu. Algunes versions del sistemes de Microsoft quan instal·len el sistema a més de posar el seu carregador dins de EFI/Microsoft sobreescriuen el carregador per defecte amb el seu carregador de manera que per defecte arranque Windows.

Això no hauria de ser un problema però hi ha alguns equips amb una implementació dèbil d’EFI on els carregadors no es registren correctament en la NVRAM per la qual cosa només arranquen el carregador per defecte, és a dir, el de Windows (font: http://mjg59.livejournal.com/138188.html).

La solució si tenim un equip amb aquest problema on volem tindre un Windows i un GNU/Linux és sobreescriure el EFI/boot/bootx64.efi amb el carregador de GNU/Linux que ens donarà opció d’arrancar tant Linux com Windows.

Els pasos per a fer-ho són els següents:

  1. Arranquem amb un LiveCD de GNU/Linux. Quan ens pregunte li direm que volem provar el sistema sense instal·lar res (en realitat el nostre GN//Linux ja està instal·lat, només que no podem accedir a ell).
  2. Obrim una terminal i determinem quina és la partició de EFI i quina la del nostre sistema GNU/Linux. Podem fer-ho amb sudo fdisk -l. fdisk -l

  3. Executem els comandos per a substituir bootx64.efi:
    • Muntem les particions:
      mount /dev/sda5 /mnt
      mount /dev/sda2 /mnt/boot/efi
      for i in /sys /proc /dev
      do
      mount --bind $i /mnt$i
      done
      
    • Canviem al nostre sistema del disc (fins ara treballabem amb el del LiveCD)
      chroot /mnt
      
    • Copiem el fitxer d’arrencada de Grub al fitxer per defecte
      cd /boot/efi/EFI
      cp ubuntu/grubx64.efi Boot/bootx64.efi
      
    • Desmuntem les particions:
      exit
      for i in /sys /proc /dev
      do
      umount /mnt$i
      done
      umount /mnt/boot/efi
      umount /mnt
      

Ara ja podem reiniciar el nostre sistema i apareixerà el menú de Grub per a triar quin sistema operatiu carregar.

(Font https://wiki.debian.org/GrubEFIReinstall#Problem1:_Weak_EFI_implementation_only_recognizes_the_fallback_bootloader )