Certificat | LPIC-1 |
Examen: | 101 (torneu a la resta de temes) |
Fitxers: | LPI101.2_Arrencada_del_sistema.pdf (LPI101.2_Arrencada_del_sistema.odp) |
Objectius: | http://www.lpi.org/eng/certification/the_lpic_program/lpic_1/exam_101_detailed_objectives |
Dipòsit SVN: | https://svn.projectes.lafarga.cat/svn/lpi/Materials/Examen_101/101.2 |
Usuari: | anonymous |
Paraula de pas: | qualsevol paraula de pas |
101.2. Arrencada del sistema | |
---|---|
![]() |
|
![]() |
Àrees Clau de Coneixement:
|
![]() |
La següent és una llista parcial de fitxers, termes i utilitats utilitzades: |
![]() |
Apunts: LPI 101.2. Arrencada del sistema |
A Linux, el control del procés d'arrancada passa de la BIOS, al gestor d'arrancada, d'aquest al kernel qui finalment executa els processos scheduler i init i resta inactiu a l'espera de peticions d'accés al maquinari per part de les aplicacions del sistema.
De fet, tots els sistemes operatius comparteixen les primeres fases de l'arrancada del sistema:
Els següents passos ja són específics de cada sistema operatiu.
D'un forma una mica més detallada els passos són:
El procés d'apagada també es gestionat pel procés init. L'aturada es gestionada per una sèrie d'scripts i quan aquests finalitzen el kernel executa la seva pròpia aturada.
Consulte l'article sobre la BIOS.
El gestor d'arrancada o bootloader és l'aplicació que es executada per la BIOS per iniciar la càrrega del sistema. Normalment les BIOS executen el programa IPL que es troba al MBR del disc dur
A la pràctica hi ha 2 gestors d'arrancada importants a Linux:
LILO és més antic que GRUB i poc a poc esta sent reemplaçat per GRUB com al gestor d'arrancada més utilitzat.
Consulteu els articles:
NOTA: Es d'esperar a l'examen de certificació programes genèriques sobre gestors d'arrancada. Abans es feien més preguntes sobre LILO però actualment tindria més sentit centrar-se en GRUB
Existeixen múltiples distribucions Linux i no totes tenen el mateix procés d'arrencada. En aquest article explicarem el d'arrancada dels sistemes Unix basats en SystemV un dels sistemes més utilitzats actualment. La majoria de distribucions suporten un sistema d'arrencada compatible amb SystemV (tot i que hi han petites diferències entre cada districució).
Cal tenir en compte que hi ha però algunes distribucions com Slackware que utilitzen un sistema basat en BSD i altres tenen el seu propi sistema d'arrencada (Gentoo Linux).
El cor del sistema d'arrancada és el procés init. Aquest procés l'executa el [[kernel] a l'iniciar el sistema i és l'encarregat d'executar tots els serveis necessaris per tal que el sistema funcioni correctament.
El procés d'execució en SystemV és el següent:
NOTA: Actualment sistemes operatius com Ubuntu ja no utilitzant el fitxer inittab. L'arrancada del sistema es duu a terme mitjançant upstart.
Consulteu per a més detalls l'article:
El procés d'arrancada en Linux
Consulteu l'article:
Linux Kernel
I també, consulteu l'article sobre GRUB:
GRUB. Paràmetres del kernel
IMPORTANT: el fitxer messages és l'únic especificat per l'estàndard FHS. Poden haver-hi altres fitxers a la carpeta /var/log, segons per exemple la configuració que tinguem de syslog. Per exemple, algunes distribucions com Ubuntu mostren els missatges del kernel a /var/log/kern.log (també però al fitxers messages). Cal tenir en compte però que /var/log/kern.log) no és estàndard. Consulteu /var/log] a la web de l'estàndard FHS
Un dels principals fitxers de registre (log) és /var/log/messages. Entre d'altres aquí també s'escriuen els missatges del ring buffer del nucli (consulteu dmesg). Podeu discriminar tipus de missatges amb grep:
$ cat /var/log/messages | grep "kernel:"
A diferència de dmesg aquí trobeu un històric dels missatges del nucli. trobareu però altres missatges de log. De fet, el fitxer messages conjuntament amb el fitxer /var/log/syslog són els fitxers on normalment van la majoria de missatges de log.
Si no trobeu el que busqueu heu de veure quina és la vostra configuració del dimoni de logs, ja sigui syslog o rsyslog o podeu consultar altres fitxers de la carpeta:
/var/log
NOTA: Recordeu que podeu trobar missatges més antics a fitxers com messages.1,messages.2.gz,messages.3.gzm etc... depenent de la configuració de les rotacions del fitxers de log. Consulteu logrotate
Consulteu també:
Segons el manual:
$ man dmesg ... dmesg - print or control the kernel ring buffer
Ens permet consultar el kernel ring buffer. El kernel, guarda tots els missatges que genera en una memòria intermèdia (buffer o cache) circular o en anell.
Aquest missatges són els que es mostren per les consoles virtuals durant l'arrancada del sistema. Com que l'arrancada del sistema pot ser un procés molt ràpid, si voleu consultar a posteriori aquests missatges, podeu utilitzar dmesg.
NOTA: Algunes distribucions com Ubuntu, no mostren aquest missatges durant l'arrancada ja que el nucli s'executa amb l'opció quiet
L'ordre es proporcionada a Debian i a la majoria de distribucions majors pel paquet util-linux:
$ whereis dmesg dmesg: /bin/dmesg /usr/share/man/man1/dmesg.1.gz $ dpkg -S /bin/dmesg util-linux: /bin/dmesg
Les opcions són:
Un exemple d'ús:
$ dmesg | more [ 0.000000] BIOS EBDA/lowmem at: 0009f800/0009f800 [ 0.000000] Initializing cgroup subsys cpuset [ 0.000000] Initializing cgroup subsys cpu [ 0.000000] Linux version 2.6.28-15-generic ([email protected]) (gcc version 4.3.3 (Ubuntu 4.3.3-5ubuntu4) ) #52-Ubuntu SMP Wed Sep 9 10:49:34 UTC 2009 (Ubun tu 2.6.28-15.52-generic) [ 0.000000] KERNEL supported cpus: [ 0.000000] Intel GenuineIntel [ 0.000000] AMD AuthenticAMD [ 0.000000] NSC Geode by NSC [ 0.000000] Cyrix CyrixInstead [ 0.000000] Centaur CentaurHauls [ 0.000000] Transmeta GenuineTMx86 [ 0.000000] Transmeta TransmetaCPU [ 0.000000] UMC UMC UMC UMC [ 0.000000] BIOS-provided physical RAM map: [ 0.000000] BIOS-e820: 0000000000000000 - 000000000009f800 (usable) [ 0.000000] BIOS-e820: 000000000009f800 - 00000000000a0000 (reserved) [ 0.000000] BIOS-e820: 00000000000f0000 - 0000000000100000 (reserved) [ 0.000000] BIOS-e820: 0000000000100000 - 000000003fff0000 (usable) [ 0.000000] BIOS-e820: 000000003fff0000 - 000000003fff3000 (ACPI NVS) [ 0.000000] BIOS-e820: 000000003fff3000 - 0000000040000000 (ACPI data) [ 0.000000] BIOS-e820: 00000000fec00000 - 00000000fec01000 (reserved) [ 0.000000] BIOS-e820: 00000000fee00000 - 00000000fef00000 (reserved) [ 0.000000] BIOS-e820: 00000000fefffc00 - 00000000ff000000 (reserved) [ 0.000000] BIOS-e820: 00000000ffff0000 - 0000000100000000 (reserved) [ 0.000000] DMI 2.2 present. [ 0.000000] Phoenix BIOS detected: BIOS may corrupt low RAM, working it around.
NOTA: Cal tenir en compte que, el nucli és el primer en executar-se durant l'arrencada del sistema i per tant tots els processos posteriors a l'execució del nucli s'han de consultar en altres fitxers de registre, com per exemple /var/log/messages
També es força habitual guardar el log en un fitxer, per tal d'enviar-lo per correu electrònic i poder fer un diagnòstic d'un problema de maquinari:
$ dmesg > dmesg.txt
també es comú utilitzar l'ordre grep per buscar línies concretes del buffer. Per exemple problemes amb targetes de xarxa:
$ dmesg | grep eth [ 1.667894] Driver 'sd' needs updating - please use bus_type methods [ 1.667903] Driver 'sr' needs updating - please use bus_type methods [ 3.824994] skge eth0: addr 00:30:1b:b7:cd:b6 [ 18.573372] skge eth0: enabling interface [ 18.576702] ADDRCONF(NETDEV_UP): eth0: link is not ready [ 20.388738] skge eth0: Link is up at 100 Mbps, full duplex, flow control none [ 20.395160] ADDRCONF(NETDEV_CHANGE): eth0: link becomes ready [ 30.696013] eth0: no IPv6 routers present
El buffer del nucli es troba físicament al fitxer:
$ cat /proc/kmsg
En una Ubuntu 9.10, si executeu:
$ ps aux | grep syslog root 647 0.0 0.0 1848 504 ? Ss 10:11 0:00 dd bs=1 if=/proc/kmsg of=/var/run/rsyslog/kmsg
Veureu que hi ha un procés dd que llegeix continuament el buffer del kernel i el guarda al fitxer:
/var/run/rsyslog/kmsg
Algunes distribucions guarden el ring buffer del nucli al fitxer:
/var/log/dmesg
Aquí es guarda el contingut del ring buffer just s'ha acabat l'arrencada del sistema. El buffer té una mida fixa i limitada, i com contínuament s'hi escriuen noves dades, es poden perdre les dades de l'arrencada del sistema
Consulteu també:
klogd
El paquet rsyslog a Ubuntu proporciona un systemV init script anomenat:
$ sudo /etc/init.d/dmesg restart Rather than invoking init scripts through /etc/init.d, use the service(8) utility, e.g. service dmesg restart Since the script you are attempting to invoke has been converted to an Upstart job, you may also use the restart(8) utility, e.g. restart dmesg dmesg stop/waiting
Consulteu upstart
Utilitzant la màquina Ubuntu Server proporcionada per a aquest curs, recordeu que podeu trobar els passos per aconseguir la màquina a:
Importació de la màquina virtual Ubuntu Server
Seguiu les passes de l'apartat:
Instal·lar LILO i GRUB junts
Per tal d'instal·lar LILO primer (IMPORTANT: No l'instal·leu al MBR) i després configurar GRUB per tal d'afegir una opció de menú que executi LILO. Finalment configureu LILO per tal d'afegir una opció de menú que torni a executar GRUB.
En el cas que elimineu GRUB, el podeu tornar a recuperar seguint les passes de:
Recuperació de GRUB pas a pas amb un LIVE CD