LFCS Gestion des processus et services de démarrage du système (Sysvinit, Systemd et Upstart) - Partie 7

LFCS Gestion des processus et services de démarrage du système (Sysvinit, Systemd et Upstart) - Partie 7

Il y a quelques mois, la Fondation Linux a annoncé le LFC (Sysadmin certifié de la Fondation Linux) Certification, un nouveau programme passionnant dont le but est de permettre aux individus de toutes les extrémités du monde à être certifiés pour effectuer. Cela comprend le support de systèmes et de services déjà en cours d'exécution, ainsi que la recherche et l'analyse des problèmes de première main, ainsi que la possibilité de décider quand soulever des problèmes aux équipes d'ingénierie.

Sysadmin certifié Linux Foundation - Partie 7

La vidéo suivante décrit une brève introduction au programme de certification de la Fondation Linux.

Cet article est la partie 7 d'une série à 10 tutoriels, ici dans cette partie, nous expliquerons comment gérer le processus et les services de démarrage du système Linux, qui sont requis pour l'examen de certification LFCS.

Gérer le processus de démarrage Linux

Le processus de démarrage d'un système Linux se compose de plusieurs phases, chacune représentée par un composant différent. Le diagramme suivant résume brièvement le processus de démarrage et affiche tous les principaux composants impliqués.

Processus de démarrage Linux

Lorsque vous appuyez sur le Pouvoir bouton de votre machine, le firmware qui est stocké dans un Eeprom La puce dans la carte mère initialise le POSTE (Auto-test de puissance) pour vérifier l'état des ressources matérielles du système. Quand le POSTE est terminé, le firmware recherche et charge ensuite le 1ère étape chargeur de démarrage, situé dans le Mbr ou dans le EFI partition du premier disque disponible et lui donne le contrôle.

Méthode MBR

Le Mbr est situé dans le premier secteur du disque marqué comme bootable dans le Bios paramètres et est 512 des octets de taille.

  1. Premiers 446 octets: Le chargeur de démarrage contient à la fois le code exécutable et le texte du message d'erreur.
  2. 64 octets suivants: Le tableau des partitions contient un enregistrement pour chacune des quatre partitions (primaire ou étendu). Entre autres choses, chaque enregistrement indique le statut (actif / non actif), la taille et les secteurs de démarrage / fin de chaque partition.
  3. 2 derniers octets: Le numéro magique sert de vérification de validation du MBR.

La commande suivante effectue une sauvegarde du Mbr (Dans cet exemple, / dev / sda est le premier disque dur). Le fichier résultant, mbr.bkp peut être utile si la table de partition devient corrompue, par exemple, rendant le système inooable.

Bien sûr, afin de l'utiliser plus tard si le besoin s'en fait sentir, nous devrons le sauver et le stocker ailleurs (comme un USB conduire, par exemple). Ce fichier nous aidera à restaurer le MBR et nous permettra de continuer si et seulement si nous ne modifions pas la disposition du disque dur en attendant.

Sauvegarde MBR
# dd if = / dev / sda de = mbr.BKP BS = 512 COUNT = 1 
Sauvegarde MBR dans Linux
Restaurer MBR
# dd if = mbr.bkp de = / dev / sda bs = 512 count = 1 
Restaurer MBR dans Linux

Méthode EFI / UEFI

Pour les systèmes utilisant le EFI/ /Uefi Méthode, le firmware UEFI lit ses paramètres pour déterminer quelle application UEFI doit être lancée et d'où (je.e., dans lequel le disque et la partition, la partition EFI est située).

Ensuite, le 2e étape Boot Loader (AKA Boot Manager) est chargé et exécuté. VER [Grand Boot unifié] est le gestionnaire de démarrage le plus fréquemment utilisé dans Linux. L'une des deux versions distinctes peut être trouvée sur la plupart des systèmes utilisés aujourd'hui.

  1. Fichier de configuration de Grub Legacy: / boot / grub / menu.LST (Distributions plus anciennes, non soutenues par EFI / UEFI Firmwares).
  2. Fichier de configuration GRUB2: très probablement, / etc / par défaut / grub.

Bien que les objectifs du LFC examen ne demandez pas explicitement les connaissances sur VER internes, si vous êtes courageux et que vous pouvez vous permettre de gâcher votre système (vous voudrez peut-être l'essayer d'abord sur une machine virtuelle, juste au cas où) vous devez exécuter.

# Update-Grub 

Comme racine Après avoir modifié la configuration de Grub afin d'appliquer les modifications.

Essentiellement, VER charge la valeur par défaut noyau et le initrd ou initramfs image. En quelques mots, InitRD ou InitRamfs aident à effectuer la détection du matériel, le chargement du module du noyau et la découverte de l'appareil nécessaire pour faire monter le système de fichiers racine réel.

Une fois le système de fichiers racine réel en hausse, le noyau exécute le système et le gestionnaire de services (init ou systemd, dont l'identification du processus ou le PID est toujours 1) pour commencer le processus de démarrage normal de l'espace utilisateur afin de présenter une interface utilisateur.

Les deux init et systemd sont des démons (processus d'arrière-plan) qui gèrent d'autres démons, comme le premier service à démarrer (pendant le démarrage) et le dernier service à se terminer (pendant l'arrêt).

Systemd et init

Démarrage des services (sysvinit)

Le concept de couleurs Dans Linux, spécifie différentes façons d'utiliser un système en contrôlant quels services fonctionnent. En d'autres termes, un niveau du couloir contrôle les tâches qui peuvent être accomplies dans l'état d'exécution actuel = le niveau du runle (et lesquels ne peuvent pas).

Traditionnellement, ce processus de démarrage a été effectué sur la base des conventions qui sont originaires de Système V Unix, Avec le système qui passe des collections de scripts qui démarrent et arrêtent les services lorsque la machine est entrée dans un niveau de coulée spécifique (qui, en d'autres termes, est un mode différent d'exécution du système).

Dans chaque niveau de coulée, les services individuels peuvent être définis pour s'exécuter ou pour être arrêtés si vous exécutez. Les dernières versions de certaines distributions majeures s'éloignent de la Système V Norme en faveur d'un nouveau service de service et de système appelé systemd (qui signifie System Daemon), mais supporte généralement sysv Commandes à des fins de compatibilité. Cela signifie que vous pouvez exécuter la plupart des bien connus sysv outils d'initiation dans une distribution basée sur Systemd.

Lire aussi: Pourquoi 'Systemd' remplace 'init' dans Linux

En plus de démarrer le processus système, init regarde le / etc / inittab Fichier pour décider de ce que le niveau de course doit être entré.

Courir Description
0  Arrêtez le système. RunLevel 0 est un état de transition spécial utilisé pour arrêter rapidement le système.
1  Également aliasé à S, ou S, ce niveau coulant est parfois appelé mode de maintenance. Quels services, le cas échéant, sont lancés à ce niveau rinallèle selon la distribution. Il est généralement utilisé pour la maintenance du système de bas niveau qui peut être altéré par le fonctionnement du système normal.
2  Multi-utilisateur. Sur les systèmes et dérivés Debian, il s'agit du niveau coulant par défaut, et comprend -si disponible - une connexion graphique. Sur les systèmes basés sur la chatte rouge, il s'agit du mode multi-utilisateur sans réseautage.
3  Sur les systèmes basés sur la chatte rouge, il s'agit du mode multi-utilisateur par défaut, qui exécute tout sauf l'environnement graphique. Ce niveau coulant et les niveaux 4 et 5 ne sont généralement pas utilisés sur les systèmes basés à Debian.
4  Généralement inutilisé par défaut et donc disponible pour la personnalisation.
5  Sur les systèmes basés sur la chatte rouge, le mode multi-utilisateur complet avec une connexion GUI. Ce niveau coulant est comme le niveau 3, mais avec une connexion GUI disponible.
6  Redémarrez le système.

Pour basculer entre les niveaux runs, nous pouvons simplement émettre un changement de couture en utilisant le init Commande: init N (où n est l'un des niveaux coulants énumérés ci-dessus). Veuillez noter que ce n'est pas le moyen recommandé de faire passer un système de course à un niveau coulant différent car il ne fait aucun avertissement aux utilisateurs connectés existants (leur faisant perdre du travail et des processus pour se terminer anormalement).

Au lieu de cela, le fermer La commande doit être utilisée pour redémarrer le système (qui envoie d'abord un message d'avertissement à tous les utilisateurs connectés et bloque les autres connexions; il signale ensuite init pour changer de couture); Cependant, le niveau d'exécution par défaut (celui sur lequel le système démarrera) doit être modifié dans le / etc / inittab dossier d'abord.

Pour cette raison, suivez ces étapes pour basculer correctement entre les niveaux runs, en tant que racine, recherchez la ligne suivante dans / etc / inittab.

ID: 2: initdefault: 

et changer le nombre 2 Pour le couloir souhaité avec votre éditeur de texte préféré, tel que VIM (décrit dans comment utiliser VI / VIM Editor dans Linux - partie 2 de cette série).

Ensuite, exécutez comme racine.

# arrêt -r maintenant 

Ce dernier La commande redémarrera le système, ce qui le fera démarrer dans le niveau de rond spécifié pendant le prochain démarrage, et exécutera les scripts situés dans le / etc / rc [RunLevel].d répertoire afin de décider quels services doivent être démarrés et lesquels ne devraient pas. Par exemple, pour le niveau de coulée 2 dans le système suivant.

Modifier les niveaux coulant dans Linux

Gérer les services à l'aide de chkconfig

Pour activer ou désactiver les services système sur Boot, nous utiliserons la commande chkconfig dans CentOS / OpenSUSE et sysv-rc-conf Dans Debian et les dérivés. Cet outil peut également nous montrer quel est l'état préconfiguré d'un service pour un couloir particulier.

Lire aussi: Comment arrêter et désactiver les services indésirables à Linux

Listing de la configuration du niveau du couloir pour un service.

# chkconfig - list [nom du service] # chkconfig - list postfix # chkconfig - list mysqld 
Listing de la configuration du niveau du couloir

Dans l'image ci-dessus, nous pouvons voir que postfix est défini pour démarrer lorsque le système entre en marche 2 à travers 5, alors que mysqld sera en cours d'exécution par défaut pour les niveaux de course 2 à travers 4. Supposons maintenant que ce n'est pas le comportement attendu.

Par exemple, nous devons allumer mysqld pour courir 5 Aussi, et désactivez le post-fixe pour les niveaux de rinallon 4 et 5. Voici ce que nous ferions dans chaque cas (exécutez les commandes suivantes comme racine).

Activer un service pour un couloir particulier
# chkconfig - service de niveau [niveau (s)] sur # chkconfig --level 5 mysqld on 
Désactiver un service pour des niveaux coulants particuliers
# ChkConfig - Service de niveau [niveau (s)] 
Activer les services de désactivation

Nous allons maintenant effectuer des tâches similaires dans un Basé à Debian Système utilisant sysv-rc-conf.

Gérer les services à l'aide de SYSV-RC-CONF

Configuration d'un service pour démarrer automatiquement sur un couloir spécifique et l'empêcher de démarrer sur toutes les autres.

1. Utilisons la commande suivante pour voir quels sont les niveaux de course où mdadm est configuré pour démarrer.

# ls -l / etc / rc [0-6].D | grep -e 'rc [0-6] | mdadm' 
Vérifiez le niveau de service en cours d'exécution

2. Nous utiliserons sysv-rc-conf Pour empêcher MDADM de commencer tous les niveaux rinal 2. Vérifiez simplement ou décochez (avec la barre d'espace) comme vous le souhaitez (vous pouvez monter, descendre, gauche et droite avec les touches de flèche).

# sysv-rc-conf 
Configuration sysv coulevel

Puis appuyez q quitter.

3. Nous redémarrons le système et exécuterons à nouveau la commande à partir de ÉTAPE 1.

# ls -l / etc / rc [0-6].D | grep -e 'rc [0-6] | mdadm' 
Vérifiez le service du service

Dans l'image ci-dessus, nous pouvons voir que mdadm est configuré pour démarrer uniquement sur le niveau de course 2.

Qu'en est-il de Systemd?

systemd est un autre gestionnaire de services et de systèmes qui est adopté par plusieurs grandes distributions Linux. Il vise à permettre que plus de traitement soit effectué en parallèle pendant le démarrage du système (contrairement sysvinit, qui a toujours tendance à être plus lent car il commence les processus un à la fois, vérifie si l'un dépend d'une autre, et attend que les démons se lancent pour que plus de services puissent démarrer) et servir de gestion dynamique des ressources à un système en cours d'exécution.

Ainsi, les services sont démarrés en cas de besoin (pour éviter de consommer des ressources système) au lieu d'être lancés sans raison solide pendant le démarrage.

Affichage de l'état de tous les processus exécutés sur votre système, les deux systemd natif et Sysv services, exécutez la commande suivante.

# systemctl 
Vérifiez tous les processus en cours d'exécution

Le CHARGER la colonne montre si la définition de l'unité (reportez-vous à la UNITÉ la colonne, qui montre le service ou tout ce qui est maintenu par Systemd) a été correctement chargé, tandis que le ACTIF et SOUS Les colonnes affichent l'état actuel de cette unité.

Affichage des informations sur l'état actuel d'un service

Quand le ACTIF La colonne indique que l'état d'une unité est autre qu'actif, nous pouvons vérifier ce qui s'est passé en utilisant.

# Statut SystemCTL [Unité] 

Par exemple, dans l'image ci-dessus, média-samba.monter est en état d'échec. Courons.

# SystemCTL Status Media-Samba.monter 
Vérifier l'état du service

On peut voir ça média-samba.monter Échec car le processus de montage sur l'hôte dev1 n'a pas pu trouver le partage du réseau à // 192.168.0.10 / gacanepa.

Services de démarrage ou d'arrêt

Une fois le réseau partage // 192.168.0.10 / gacanepa devient disponible, essayons de commencer, puis d'arrêter et enfin redémarrer l'unité média-samba.monter. Après avoir effectué chaque action, exécutons Systemctl Status Media-Samba.monter pour vérifier son statut.

# SystemCTL Start Media-Samba.Mont # SystemCTL Status Media-Samba.mont # systemctl stop media-samba.mont # systemctl redémarrer les médias-samba.Mont # SystemCTL Status Media-Samba.monter 
Commencer les services d'arrêt
Activer ou désactiver un service pour démarrer pendant le démarrage

Sous systemd Vous pouvez activer ou désactiver un service lorsqu'il bottise.

# SystemCTL Activer [Service] # Activer un service # SystemCTL Disable [Service] # Empêcher un service de démarrer au démarrage 

Le processus d'activation ou de désactivation d'un service pour démarrer automatiquement sur le démarrage consiste à ajouter ou supprimer des liens symboliques dans le / etc / systemd / système / multi-utilisateurs.cible.veut annuaire.

Activer les services de désactivation

Alternativement, vous pouvez trouver l'état actuel d'un service (activé ou désactivé) avec la commande.

# SystemCTL IS-compatible [Service] 

Par exemple,

# SystemCTL Postfix compatible IS.service 

De plus, vous pouvez redémarrer ou fermer le système avec.

# SystemCTL Reboot # SystemCTL Arrêt 

Parvenu

Parvenu est un remplacement basé sur des événements pour le / sbin / init Daemon et est né de la nécessité de démarrer des services uniquement, lorsqu'ils sont nécessaires (les superviseront également pendant qu'ils fonctionnent), et gérer les événements tels qu'ils se produisent, dépassant ainsi le système classique basé sur la dépendance.

Il a été initialement développé pour la distribution Ubuntu, mais est utilisé dans Red Hat Enterprise Linux 6.0. Bien qu'il soit destiné à être adapté au déploiement dans toutes les distributions Linux en remplacement de sysvinit, avec le temps, il a été éclipsé par systemd. Le 14 février 2014, Mark Shuttleworth (fondateur de Canonical Ltd.) a annoncé que les versions futures d'Ubuntu utiliseraient Systemd comme démon init par défaut.

Parce que le Sysv Le script de démarrage du système est si courant depuis si longtemps, un grand nombre de packages logiciels incluent les scripts de démarrage SYSV. Pour s'adapter à ces packages, UpStart fournit un mode de compatibilité: il exécute les scripts de démarrage SYSV dans les emplacements habituels (/ etc / rc.d / rc?.d, / etc / init.d / rc?.d, / etc / rc?.d, ou un emplacement similaire). Ainsi, si nous installons un package qui n'inclut pas encore un script de configuration de fin.

De plus, si nous avons installé des services publics tels que Chkconfig, vous devriez pouvoir les utiliser pour gérer vos services basés sur SYSV comme nous le ferions sur les systèmes basés sur Sysvinit.

Les scripts UNSSTART prennent également en charge les services de démarrage ou d'arrêt basés sur une plus grande variété d'actions que les scripts de démarrage SYSV; Par exemple, UpStart peut lancer un service chaque fois qu'un périphérique matériel particulier est connecté.

Un système qui utilise un élément de fin et ses scripts natifs remplace exclusivement le / etc / inittab le fichier et le couloir spécifique Sysv Répertoires de script de démarrage avec .confli scripts dans le / etc / init annuaire.

Ces *.confli Les scripts (également connus sous le nom de définitions d'emploi) sont généralement constitués des éléments suivants:

    1. Description du processus.
    2. RunLevels où le processus doit s'exécuter ou des événements qui devraient le déclencher.
    3. RunLevels où le processus doit être arrêté ou des événements qui devraient l'arrêter.
    4. Options.
    5. Commande pour lancer le processus.

Par exemple,

# Mon service de test - Demo de script Upstart Description "Voici la description de" mon service de test "" Auteur "Dave Null <[email protected]>"# Strophes # # strophes Définir quand et comment un processus est démarré et arrêté # voir une liste de strophes ici: http: // upstart.ubuntu.com / wiki / stanzas # RAPAWN # Quand démarrer le service Démarrer sur RunLevel [2345] # Quand arrêter l'arrêt de service sur le niveau de coulée [016] # Redémarrez automatique MyFiles # Spécifiez le processus / commande (ajoutez des arguments si nécessaire) pour exécuter Exec Bash Backup.sh arg1 arg2 

Pour appliquer des modifications, vous devrez dire à UNDSTART pour recharger sa configuration.

# initCTL Reload-Configuration 

Puis démarrez votre travail en tapant la commande suivante.

$ sudo démarrer votrejobname 

votrejobname est le nom du travail qui a été ajouté plus tôt avec le votrejobname.confli scénario.

Un guide de référence plus complet et plus détaillé pour Upstart est disponible sur le site Web du projet sous le menu «Cookbook».

Résumé

Une connaissance du processus de démarrage Linux est nécessaire pour vous aider à résoudre les tâches de dépannage ainsi qu'à l'adaptation des performances de l'ordinateur et des services à vos besoins.

Dans cet article, nous avons analysé ce qui se passe dès le moment où vous appuyez sur le Pouvoir Passer pour activer la machine jusqu'à ce que vous obteniez une interface utilisateur entièrement opérationnelle. J'espère que vous avez appris à le lire autant que moi en le faisant ensemble. N'hésitez pas à laisser vos commentaires ou questions ci-dessous. Nous avons toujours hâte d'entendre nos lecteurs!

Devenir un administrateur système certifié Linux