Table des matières
LRF138 - De RHEL 6 vers RHEL 7
Système de Fichiers
XFS
XFS est un système de fichiers 64-bit journalisé de haute performance crée par SGI pour son système d'exploitation IRIX. XFS est inclus par défaut avec les versions du noyau Linux 2.5.xx et 2.6.xx. XFS est le système de fichiers par défaut de RHEL/CentOS 7.
Debian propose aussi une version 32 bits du système de fichiers XFS.
Pour plus d'informations concernant XFS, consultez cette page.
LAB #1 - Créer un Système de Fichiers XFS
Créez un système de fichiers XFS sur la partition /dev/sda12 :
[root@centos7 ~]# mkfs.xfs /dev/sda12 meta-data=/dev/sda12 isize=256 agcount=4, agsize=12800 blks = sectsz=512 attr=2, projid32bit=1 = crc=0 finobt=0 data = bsize=4096 blocks=51200, imaxpct=25 = sunit=0 swidth=0 blks naming =version 2 bsize=4096 ascii-ci=0 ftype=0 log =internal log bsize=4096 blocks=853, version=2 = sectsz=512 sunit=0 blks, lazy-count=1 realtime =none extsz=4096 blocks=0, rtextents=0
Les options de cette commande sont :
[root@centos7 ~]# mkfs.xfs --help mkfs.xfs: invalid option -- '-' unknown option -- Usage: mkfs.xfs /* blocksize */ [-b log=n|size=num] /* metadata */ [-m crc=0|1,finobt=0|1] /* data subvol */ [-d agcount=n,agsize=n,file,name=xxx,size=num, (sunit=value,swidth=value|su=num,sw=num|noalign), sectlog=n|sectsize=num /* force overwrite */ [-f] /* inode size */ [-i log=n|perblock=n|size=num,maxpct=n,attr=0|1|2, projid32bit=0|1] /* no discard */ [-K] /* log subvol */ [-l agnum=n,internal,size=num,logdev=xxx,version=n sunit=value|su=num,sectlog=n|sectsize=num, lazy-count=0|1] /* label */ [-L label (maximum 12 characters)] /* naming */ [-n log=n|size=num,version=2|ci,ftype=0|1] /* no-op info only */ [-N] /* prototype file */ [-p fname] /* quiet */ [-q] /* realtime subvol */ [-r extsize=num,size=num,rtdev=xxx] /* sectorsize */ [-s log=n|size=num] /* version */ [-V] devicename <devicename> is required unless -d name=xxx is given. <num> is xxx (bytes), xxxs (sectors), xxxb (fs blocks), xxxk (xxx KiB), xxxm (xxx MiB), xxxg (xxx GiB), xxxt (xxx TiB) or xxxp (xxx PiB). <value> is xxx (512 byte blocks).
Consultez maintenant les caractéristiques du système de fichier :
[root@centos7 ~]# xfs_info /dev/sda12 xfs_info: /dev/sda12 is not a mounted XFS filesystem [root@centos7 ~]# mkdir /mnt/sda12 [root@centos7 ~]# mount -t xfs /dev/sda12 /mnt/sda12 [root@centos7 ~]# xfs_info /dev/sda12 meta-data=/dev/sda12 isize=256 agcount=4, agsize=12800 blks = sectsz=512 attr=2, projid32bit=1 = crc=0 finobt=0 data = bsize=4096 blocks=51200, imaxpct=25 = sunit=0 swidth=0 blks naming =version 2 bsize=4096 ascii-ci=0 ftype=0 log =internal bsize=4096 blocks=853, version=2 = sectsz=512 sunit=0 blks, lazy-count=1 realtime =none extsz=4096 blocks=0, rtextents=0
Notez que la partition XFS doit être monté pour pouvoir utiliser la commande xfs_info.
Les options de cette commande sont :
[root@centos7 ~]# xfs_info --help /sbin/xfs_info: illegal option -- - Usage: xfs_info [-V] [-t mtab] mountpoint
LAB #2 - Ajouter une Etiquette au Système de Fichiers XFS
Utilisez la commande xfs_admin pour associer une étiquette au système de fichiers :
[root@centos7 ~]# xfs_admin -L my_xfs /dev/sda12 xfs_admin: /dev/sda12 contains a mounted filesystem fatal error -- couldn't initialize XFS library [root@centos7 ~]# umount /dev/sda12 [root@centos7 ~]# xfs_admin -L my_xfs /dev/sda12 writing all SBs new label = "my_xfs"
Notez que la partition XFS doit être démonté pour pouvoir utiliser la commande xfs_admin.
Pour voir l'étiquette, utilisez la commande suivante :
[root@centos7 ~]# xfs_admin -l /dev/sda12 label = "my_xfs"
Notez que l'étiquette doit être de 12 caractères maximum.
Les options de cette commande sont :
[root@centos7 ~]# xfs_admin --help /sbin/xfs_admin: illegal option -- - Usage: xfs_admin [-efjlpuV] [-c 0|1] [-L label] [-U uuid] device
Dernièrement, pour obtenir seul l'UUID du système de fichiers, utilisez la commande xfs-admin et l'option -u :
[root@centos7 ~]# xfs_admin -u /dev/sda12 UUID = 15db1b62-0866-4aa4-9ac1-3ac325a4e20f
La commande xfs_metadump est utilisée pour sauvegarder les méta-données du système de fichiers, tandis que la commande xfs_mdrestore est utilisée pour restaurer les les méta-données du système de fichiers.
LUKS
LAB #3 - Créer un Système de Fichiers Chiffré avec LUKS sous RHEL/CentOS 7
Présentation
LUKS ( Linux Unified Key Setup ) permet de chiffrer l'intégralité d'un disque de telle sorte que celui-ci soit utilisable sur d'autres plates-formes et distributions de Linux (voire d'autres systèmes d'exploitation). Il supporte des mots de passe multiples, afin que plusieurs utilisateurs soient en mesure de déchiffrer le même volume sans partager leur mot de passe.
Mise en Place
Remplissez la partition /dev/sda12 avec des données aléatoires :
[root@centos7 ~]# shred -v --iterations=1 /dev/sda12 shred: /dev/sda12: pass 1/1 (random)...
Important : L'étape ci-dessus est très importante parce que elle permet de s'assurer qu'aucune donnée ne reste sur la partition.
Initialisez la partition avec LUKS :
[root@centos7 ~]# cryptsetup --verbose --verify-passphrase luksFormat /dev/sda12 WARNING! ======== This will overwrite data on /dev/sda12 irrevocably. Are you sure? (Type uppercase yes): YES Enter passphrase: fenestros123456789 Verify passphrase: fenestros123456789 Command successful.
Important : La passphrase ne sera pas en claire. Elle l'est ici pour vous montrer un mot de passe acceptable pour LUKS.
Ouvrez la partition LUKS en lui donnant le nom sda12 :
[root@centos7 ~]# cryptsetup luksOpen /dev/sda12 sda12 Enter passphrase for /dev/sda12: fenestros123456789
Vérifiez que le système voit la partition :
[root@centos7 ~]# ls -l /dev/mapper | grep sda12 lrwxrwxrwx. 1 root root 7 Oct 5 20:18 sda12 -> ../dm-0
Créez maintenant un système de fichiers sur /dev/mapper/sda12 :
[root@centos7 ~]# mkfs.xfs /dev/mapper/sda12 meta-data=/dev/mapper/sda12 isize=256 agcount=4, agsize=12672 blks = sectsz=512 attr=2, projid32bit=1 = crc=0 finobt=0 data = bsize=4096 blocks=50688, imaxpct=25 = sunit=0 swidth=0 blks naming =version 2 bsize=4096 ascii-ci=0 ftype=0 log =internal log bsize=4096 blocks=853, version=2 = sectsz=512 sunit=0 blks, lazy-count=1 realtime =none extsz=4096 blocks=0, rtextents=0
Montez la partition LUKS :
[root@centos7 ~]# mkdir /mnt/sda12 [root@centos7 ~]# mount /dev/mapper/sda12 /mnt/sda12
Vérifiez la présence du montage :
[root@centos7 ~]# df -h | grep sda12 /dev/mapper/sda12 195M 11M 185M 6% /mnt/sda12
Editez le fichier /etc/crypttab/ :
[root@centos7 ~]# cat /etc/crypttab sda12 /dev/sda12 none
Modifiez le fichier /etc/fstab :
[root@centos7 ~]# cat /etc/fstab # # /etc/fstab # Created by anaconda on Sun Mar 8 12:38:10 2015 # # Accessible filesystems, by reference, are maintained under '/dev/disk' # See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info # UUID=b35de665-5ec8-4226-a533-58a1b567ac91 / xfs defaults 1 1 UUID=e8d3bd48-1386-411c-9675-41c3f8f1a309 /boot xfs defaults 1 2 UUID=11a4d11d-81e4-46a7-82e0-7796cd597dc9 swap swap defaults 0 0 /dev/mapper/sda12 /mnt/sda12 xfs defaults 1 2
Restaurer les SC par défaut de SELinux :
[root@centos7 ~]# /sbin/restorecon -v -R /mnt/sda12 /sbin/restorecon reset /mnt/sda12 context system_u:object_r:unlabeled_t:s0->system_u:object_r:mnt_t:s0
Redémarrez votre machine virtuelle :
[root@centos7 ~]# shutdown -r now
Important : Lors du démarrage de la machine virtuelle, le système devrait vous demander d'entrer la passphrase fenestros123456789 pour permettre le montage de /dev/sda12.
Ajouter une deuxième Passphrase
Pour ajouter une deuxième passphrase, utilisez la commande cryptsetup avec la sous-commande luksAddKey :
[root@centos7 ~]# cryptsetup luksAddKey /dev/sda12 Enter any existing passphrase: fenestros123456789 Enter new passphrase for key slot: redhat123456789 Verify passphrase: redhat123456789 [root@centos7 ~]#
Important : Les passphrases ne seront pas en claire. Elle le sont ici pour vous montrer des mots de passe acceptables pour LUKS.
Supprimer une Passphrase
Pour supprimer une passphrase, utilisez la commande cryptsetup avec la sous-commande luksRemoveKey :
[root@centos7 ~]# cryptsetup luksRemoveKey /dev/sda12 Enter passphrase to be deleted: redhat123456789
Journalisation
Journald
Sous RHEL/CentOS 7, les fichiers de Syslog sont gardés pour une question de compatibilité. Cependant, tous les journaux sont d'abord collectés par Journald pour ensuite être redistribués vers les fichiers classiques se trouvant dans le répertoire /var/log. Les journaux de journald sont stockés dans un seul et unique fichier dynamique dans le répertoire /run/log/journal :
[root@centos7 ~]# ls -l /run/log/journal/ total 0 drwxr-sr-x. 2 root systemd-journal 60 Sep 29 14:41 a2feb9eb09b1488da0f23b99a66350f8
A l'extinction de la machine les journaux sont effacés.
Pour rendre les journaux permenants, il faut créer le répertoire /var/log/journal :
[root@centos7 ~]# mkdir /var/log/journal [root@centos7 ~]# ls -l /var/log/journal/ total 0 [root@centos7 ~]# systemctl restart systemd-journald [root@centos7 ~]# ls -l /run/log/journal/ ls: cannot access /run/log/journal/: No such file or directory [root@centos7 ~]# ls -l /var/log/journal/ total 0 drwxr-sr-x. 2 root systemd-journal 73 Sep 29 15:30 a2feb9eb09b1488da0f23b99a66350f8 [root@centos7 ~]#
Important : Journald ne peut pas envoyer les traces à un autre ordinateur. Pour utiliser un serveur de journalisation distant il faut donc inclure la directive ForwardToSyslog=yes dans le fichier de configuration de journald, /etc/systemd/journald.conf, puis configurer Rsyslog à envoyer les traces au serveur distant.
Consultation des Journaux
L'utilisation de la commande journalctl permet la consultation des journaux :
[root@centos7 ~]# journalctl -- Logs begin at Tue 2015-09-29 11:25:10 CEST, end at Tue 2015-09-29 18:10:01 CEST. -- Sep 29 11:25:10 centos7.fenestros.loc systemd-journal[82]: Runtime journal is using 8.0M (max 74.8M, leaving 112.3M of free 740.8M, current limit 74.8 Sep 29 11:25:10 centos7.fenestros.loc systemd-journal[82]: Runtime journal is using 8.0M (max 74.8M, leaving 112.3M of free 740.8M, current limit 74.8 Sep 29 11:25:10 centos7.fenestros.loc kernel: Initializing cgroup subsys cpuset Sep 29 11:25:10 centos7.fenestros.loc kernel: Initializing cgroup subsys cpu Sep 29 11:25:10 centos7.fenestros.loc kernel: Initializing cgroup subsys cpuacct Sep 29 11:25:10 centos7.fenestros.loc kernel: Linux version 3.10.0-229.4.2.el7.x86_64 (builder@kbuilder.dev.centos.org) (gcc version 4.8.2 20140120 (R Sep 29 11:25:10 centos7.fenestros.loc kernel: Command line: BOOT_IMAGE=/vmlinuz-3.10.0-229.4.2.el7.x86_64 root=UUID=b35de665-5ec8-4226-a533-58a1b567ac Sep 29 11:25:10 centos7.fenestros.loc kernel: e820: BIOS-provided physical RAM map: Sep 29 11:25:10 centos7.fenestros.loc kernel: BIOS-e820: [mem 0x0000000000000000-0x000000000009fbff] usable Sep 29 11:25:10 centos7.fenestros.loc kernel: BIOS-e820: [mem 0x000000000009fc00-0x000000000009ffff] reserved Sep 29 11:25:10 centos7.fenestros.loc kernel: BIOS-e820: [mem 0x00000000000f0000-0x00000000000fffff] reserved Sep 29 11:25:10 centos7.fenestros.loc kernel: BIOS-e820: [mem 0x0000000000100000-0x000000005ffeffff] usable Sep 29 11:25:10 centos7.fenestros.loc kernel: BIOS-e820: [mem 0x000000005fff0000-0x000000005fffffff] ACPI data Sep 29 11:25:10 centos7.fenestros.loc kernel: BIOS-e820: [mem 0x00000000fffc0000-0x00000000ffffffff] reserved Sep 29 11:25:10 centos7.fenestros.loc kernel: NX (Execute Disable) protection: active Sep 29 11:25:10 centos7.fenestros.loc kernel: SMBIOS 2.5 present. Sep 29 11:25:10 centos7.fenestros.loc kernel: DMI: innotek GmbH VirtualBox/VirtualBox, BIOS VirtualBox 12/01/2006 Sep 29 11:25:10 centos7.fenestros.loc kernel: e820: update [mem 0x00000000-0x00000fff] usable ==> reserved Sep 29 11:25:10 centos7.fenestros.loc kernel: e820: remove [mem 0x000a0000-0x000fffff] usable Sep 29 11:25:10 centos7.fenestros.loc kernel: No AGP bridge found Sep 29 11:25:10 centos7.fenestros.loc kernel: e820: last_pfn = 0x5fff0 max_arch_pfn = 0x400000000 Sep 29 11:25:10 centos7.fenestros.loc kernel: MTRR default type: uncachable Sep 29 11:25:10 centos7.fenestros.loc kernel: MTRR variable ranges disabled: Sep 29 11:25:10 centos7.fenestros.loc kernel: x86 PAT enabled: cpu 0, old 0x7040600070406, new 0x7010600070106 Sep 29 11:25:10 centos7.fenestros.loc kernel: CPU MTRRs all blank - virtualized system. Sep 29 11:25:10 centos7.fenestros.loc kernel: found SMP MP-table at [mem 0x0009fff0-0x0009ffff] mapped at [ffff88000009fff0] Sep 29 11:25:10 centos7.fenestros.loc kernel: Base memory trampoline at [ffff880000099000] 99000 size 24576 Sep 29 11:25:10 centos7.fenestros.loc kernel: init_memory_mapping: [mem 0x00000000-0x000fffff] lines 1-29
Important : Notez que les messages importants sont en gras, par exemple les messages de niveaux notice ou warning et que les messages graves sont en rouge.
Consultation des Journaux d'une Application Spécifique
Pour consulter les entrées concernant une application spécifique, il suffit de passer l'exécutable, y compris son chemin complet, en argument à la commande journalctl :
[root@centos7 ~]# journalctl /sbin/anacron -- Logs begin at Tue 2015-09-29 11:25:10 CEST, end at Tue 2015-09-29 18:20:01 CEST. -- Sep 29 12:01:01 centos7.fenestros.loc anacron[4100]: Anacron started on 2015-09-29 Sep 29 12:01:01 centos7.fenestros.loc anacron[4100]: Will run job `cron.daily' in 38 min. Sep 29 12:01:01 centos7.fenestros.loc anacron[4100]: Jobs will be executed sequentially Sep 29 13:45:00 centos7.fenestros.loc anacron[4100]: Job `cron.daily' started
Important : Rappelez-vous que sous RHEL/CentOS 7 le répertoire /sbin est un lien symbolique vers /usr/sbin.
Consultation des Journaux depuis le Dernier Démarrage
Pour consulter les entrées depuis le dernier démarrage, il suffit d'utiliser l'option -b de la commande journalctl :
[root@centos7 ~]# journalctl -b | more -- Logs begin at Tue 2015-09-29 11:25:10 CEST, end at Tue 2015-09-29 18:28:56 CEST. -- Sep 29 11:25:10 centos7.fenestros.loc systemd-journal[82]: Runtime journal is using 8.0M (max 74.8M, leaving 112.3M of free 740.8M, current limit 74.8 M). Sep 29 11:25:10 centos7.fenestros.loc systemd-journal[82]: Runtime journal is using 8.0M (max 74.8M, leaving 112.3M of free 740.8M, current limit 74.8 M). Sep 29 11:25:10 centos7.fenestros.loc kernel: Initializing cgroup subsys cpuset Sep 29 11:25:10 centos7.fenestros.loc kernel: Initializing cgroup subsys cpu Sep 29 11:25:10 centos7.fenestros.loc kernel: Initializing cgroup subsys cpuacct Sep 29 11:25:10 centos7.fenestros.loc kernel: Linux version 3.10.0-229.4.2.el7.x86_64 (builder@kbuilder.dev.centos.org) (gcc version 4.8.2 20140120 (R ed Hat 4.8.2-16) (GCC) ) #1 SMP Wed May 13 10:06:09 UTC 2015 Sep 29 11:25:10 centos7.fenestros.loc kernel: Command line: BOOT_IMAGE=/vmlinuz-3.10.0-229.4.2.el7.x86_64 root=UUID=b35de665-5ec8-4226-a533-58a1b567ac 91 ro vconsole.keymap=fr crashkernel=auto vconsole.font=latarcyrheb-sun16 rhgb quiet Sep 29 11:25:10 centos7.fenestros.loc kernel: e820: BIOS-provided physical RAM map: Sep 29 11:25:10 centos7.fenestros.loc kernel: BIOS-e820: [mem 0x0000000000000000-0x000000000009fbff] usable Sep 29 11:25:10 centos7.fenestros.loc kernel: BIOS-e820: [mem 0x000000000009fc00-0x000000000009ffff] reserved Sep 29 11:25:10 centos7.fenestros.loc kernel: BIOS-e820: [mem 0x00000000000f0000-0x00000000000fffff] reserved Sep 29 11:25:10 centos7.fenestros.loc kernel: BIOS-e820: [mem 0x0000000000100000-0x000000005ffeffff] usable Sep 29 11:25:10 centos7.fenestros.loc kernel: BIOS-e820: [mem 0x000000005fff0000-0x000000005fffffff] ACPI data Sep 29 11:25:10 centos7.fenestros.loc kernel: BIOS-e820: [mem 0x00000000fffc0000-0x00000000ffffffff] reserved Sep 29 11:25:10 centos7.fenestros.loc kernel: NX (Execute Disable) protection: active Sep 29 11:25:10 centos7.fenestros.loc kernel: SMBIOS 2.5 present. Sep 29 11:25:10 centos7.fenestros.loc kernel: DMI: innotek GmbH VirtualBox/VirtualBox, BIOS VirtualBox 12/01/2006 Sep 29 11:25:10 centos7.fenestros.loc kernel: e820: update [mem 0x00000000-0x00000fff] usable ==> reserved Sep 29 11:25:10 centos7.fenestros.loc kernel: e820: remove [mem 0x000a0000-0x000fffff] usable Sep 29 11:25:10 centos7.fenestros.loc kernel: No AGP bridge found Sep 29 11:25:10 centos7.fenestros.loc kernel: e820: last_pfn = 0x5fff0 max_arch_pfn = 0x400000000 Sep 29 11:25:10 centos7.fenestros.loc kernel: MTRR default type: uncachable Sep 29 11:25:10 centos7.fenestros.loc kernel: MTRR variable ranges disabled: Sep 29 11:25:10 centos7.fenestros.loc kernel: x86 PAT enabled: cpu 0, old 0x7040600070406, new 0x7010600070106 --More--
Important : Notez que vous pouvez consulter les messages des démarrages précédents, il est possible d'utiliser les options -b 1, -b 2 etc.
Consultation des Journaux d'une Priorité Spécifique
Pour consulter les entrées à partir d'une priorité spécifique et supérieur, il suffit d'utiliser l'option -p de la commande journalctl en spécifiant la priorité concernée :
[root@centos7 ~]# journalctl -p warning -- Logs begin at Tue 2015-09-29 11:25:10 CEST, end at Tue 2015-09-29 18:30:02 CEST. -- Sep 29 11:25:10 centos7.fenestros.loc kernel: ACPI: RSDP 00000000000e0000 00024 (v02 VBOX ) Sep 29 11:25:10 centos7.fenestros.loc kernel: ACPI: XSDT 000000005fff0030 0003C (v01 VBOX VBOXXSDT 00000001 ASL 00000061) Sep 29 11:25:10 centos7.fenestros.loc kernel: ACPI: FACP 000000005fff00f0 000F4 (v04 VBOX VBOXFACP 00000001 ASL 00000061) Sep 29 11:25:10 centos7.fenestros.loc kernel: ACPI: DSDT 000000005fff0470 01BF1 (v01 VBOX VBOXBIOS 00000002 INTL 20100528) Sep 29 11:25:10 centos7.fenestros.loc kernel: ACPI: FACS 000000005fff0200 00040 Sep 29 11:25:10 centos7.fenestros.loc kernel: ACPI: APIC 000000005fff0240 00054 (v02 VBOX VBOXAPIC 00000001 ASL 00000061) Sep 29 11:25:10 centos7.fenestros.loc kernel: ACPI: SSDT 000000005fff02a0 001CC (v01 VBOX VBOXCPUT 00000002 INTL 20100528) Sep 29 11:25:10 centos7.fenestros.loc kernel: kexec: crashkernel=auto resulted in zero bytes of reserved memory. Sep 29 11:25:10 centos7.fenestros.loc kernel: Zone ranges: Sep 29 11:25:10 centos7.fenestros.loc kernel: DMA [mem 0x00001000-0x00ffffff] Sep 29 11:25:10 centos7.fenestros.loc kernel: DMA32 [mem 0x01000000-0xffffffff] Sep 29 11:25:10 centos7.fenestros.loc kernel: Normal empty Sep 29 11:25:10 centos7.fenestros.loc kernel: Movable zone start for each node Sep 29 11:25:10 centos7.fenestros.loc kernel: Early memory node ranges Sep 29 11:25:10 centos7.fenestros.loc kernel: node 0: [mem 0x00001000-0x0009efff] Sep 29 11:25:10 centos7.fenestros.loc kernel: node 0: [mem 0x00100000-0x5ffeffff] Sep 29 11:25:10 centos7.fenestros.loc kernel: Built 1 zonelists in Node order, mobility grouping on. Total pages: 386937 Sep 29 11:25:10 centos7.fenestros.loc kernel: Policy zone: DMA32 Sep 29 11:25:10 centos7.fenestros.loc kernel: tsc: Fast TSC calibration failed Sep 29 11:25:10 centos7.fenestros.loc kernel: tsc: Unable to calibrate against PIT Sep 29 11:25:10 centos7.fenestros.loc kernel: ACPI: All ACPI Tables successfully acquired Sep 29 11:25:10 centos7.fenestros.loc kernel: NMI watchdog: disabled (cpu0): hardware events not enabled Sep 29 11:25:10 centos7.fenestros.loc kernel: ACPI: Executed 1 blocks of module-level executable AML code Sep 29 11:25:10 centos7.fenestros.loc kernel: ACPI Exception: AE_NOT_FOUND, While evaluating Sleep State [\_S1_] (20130517/hwxface-571) Sep 29 11:25:10 centos7.fenestros.loc kernel: ACPI Exception: AE_NOT_FOUND, While evaluating Sleep State [\_S2_] (20130517/hwxface-571) Sep 29 11:25:10 centos7.fenestros.loc kernel: ACPI Exception: AE_NOT_FOUND, While evaluating Sleep State [\_S3_] (20130517/hwxface-571) Sep 29 11:25:10 centos7.fenestros.loc kernel: ACPI Exception: AE_NOT_FOUND, While evaluating Sleep State [\_S4_] (20130517/hwxface-571) Sep 29 11:25:10 centos7.fenestros.loc kernel: acpi PNP0A03:00: fail to add MMCONFIG information, can't access extended PCI configuration space under t lines 1-29
Consultation des Journaux d'une Plage de Dates ou d'Heures
Pour consulter les entrées d'une plage de dates ou d'heures, il suffit de passer cette plage en argument à la commande journalctl :
[root@centos7 ~]# journalctl --since 18:00 --until now -- Logs begin at Tue 2015-09-29 11:25:10 CEST, end at Tue 2015-09-29 18:30:02 CEST. -- Sep 29 18:05:50 centos7.fenestros.loc systemd[1]: Time has been changed Sep 29 18:06:23 centos7.fenestros.loc dbus-daemon[526]: dbus[526]: [system] Activating via systemd: service name='net.reactivated.Fprint' unit='fprint Sep 29 18:06:23 centos7.fenestros.loc dbus[526]: [system] Activating via systemd: service name='net.reactivated.Fprint' unit='fprintd.service' Sep 29 18:06:23 centos7.fenestros.loc systemd[1]: Starting Fingerprint Authentication Daemon... Sep 29 18:06:23 centos7.fenestros.loc dbus-daemon[526]: dbus[526]: [system] Successfully activated service 'net.reactivated.Fprint' Sep 29 18:06:23 centos7.fenestros.loc dbus[526]: [system] Successfully activated service 'net.reactivated.Fprint' Sep 29 18:06:23 centos7.fenestros.loc systemd[1]: Started Fingerprint Authentication Daemon. Sep 29 18:06:23 centos7.fenestros.loc fprintd[7642]: Launching FprintObject Sep 29 18:06:23 centos7.fenestros.loc fprintd[7642]: ** Message: D-Bus service launched with name: net.reactivated.Fprint Sep 29 18:06:23 centos7.fenestros.loc fprintd[7642]: ** Message: entering main loop Sep 29 18:06:27 centos7.fenestros.loc gdm-password][7646]: gkr-pam: unlocked login keyring Sep 29 18:06:27 centos7.fenestros.loc dbus-daemon[526]: dbus[526]: [system] Activating via systemd: service name='org.freedesktop.hostname1' unit='dbu Sep 29 18:06:27 centos7.fenestros.loc dbus[526]: [system] Activating via systemd: service name='org.freedesktop.hostname1' unit='dbus-org.freedesktop. Sep 29 18:06:27 centos7.fenestros.loc systemd[1]: Starting Hostname Service... Sep 29 18:06:27 centos7.fenestros.loc dbus-daemon[526]: dbus[526]: [system] Successfully activated service 'org.freedesktop.hostname1' Sep 29 18:06:27 centos7.fenestros.loc dbus[526]: [system] Successfully activated service 'org.freedesktop.hostname1' Sep 29 18:06:27 centos7.fenestros.loc systemd[1]: Started Hostname Service. Sep 29 18:06:53 centos7.fenestros.loc fprintd[7642]: ** Message: No devices in use, exit Sep 29 18:09:27 centos7.fenestros.loc systemd[1]: Stopping Journal Service... Sep 29 18:09:27 centos7.fenestros.loc systemd-journal[362]: Journal stopped Sep 29 18:09:27 centos7.fenestros.loc systemd-journal[7694]: Permanent journal is using 8.0M (max 699.0M, leaving 1.0G of free 2.5G, current limit 699 Sep 29 18:09:27 centos7.fenestros.loc systemd-journal[7694]: Permanent journal is using 8.0M (max 699.0M, leaving 1.0G of free 2.5G, current limit 699 Sep 29 18:09:27 centos7.fenestros.loc systemd-journal[7694]: Time spent on flushing to /var is 52.802ms for 1492 entries. Sep 29 18:09:27 centos7.fenestros.loc systemd-journald[362]: Received SIGTERM Sep 29 18:09:27 centos7.fenestros.loc systemd-journal[7694]: Journal started Sep 29 18:09:27 centos7.fenestros.loc systemd[1]: Starting Trigger Flushing of Journal to Persistent Storage... Sep 29 18:09:27 centos7.fenestros.loc systemd[1]: Started Trigger Flushing of Journal to Persistent Storage. Sep 29 18:10:01 centos7.fenestros.loc systemd[1]: Created slice user-0.slice. lines 1-29
Important : Le format de la date est 2015-09-29 18:38:00. Il est possible d'utiliser des mots clefs : yesterday, today, tomorrow, now.
Consultation des Journaux en Live
Pour consulter les journaux en live, il suffit d'utiliser l'option -f de la commande journalctl :
[root@centos7 ~]# journalctl -f -- Logs begin at Tue 2015-09-29 11:25:10 CEST. -- Sep 29 18:28:56 centos7.fenestros.loc gdm-password][8599]: gkr-pam: unlocked login keyring Sep 29 18:29:24 centos7.fenestros.loc fprintd[8595]: ** Message: No devices in use, exit Sep 29 18:30:01 centos7.fenestros.loc systemd[1]: Created slice user-0.slice. Sep 29 18:30:02 centos7.fenestros.loc systemd[1]: Starting Session 33 of user root. Sep 29 18:30:02 centos7.fenestros.loc systemd[1]: Started Session 33 of user root. Sep 29 18:30:02 centos7.fenestros.loc CROND[8670]: (root) CMD (/usr/lib64/sa/sa1 1 1) Sep 29 18:40:01 centos7.fenestros.loc systemd[1]: Created slice user-0.slice. Sep 29 18:40:01 centos7.fenestros.loc systemd[1]: Starting Session 34 of user root. Sep 29 18:40:01 centos7.fenestros.loc systemd[1]: Started Session 34 of user root. Sep 29 18:40:01 centos7.fenestros.loc CROND[8809]: (root) CMD (/usr/lib64/sa/sa1 1 1)
Ouvrez un deuxième terminal et saisissez la commande suivante :
[trainee@centos7 ~]$ logger -p user.info Linux est super
Retournez consulter le premier terminal :
[root@centos7 ~]# journalctl -f -- Logs begin at Tue 2015-09-29 11:25:10 CEST. -- Sep 29 18:28:56 centos7.fenestros.loc gdm-password][8599]: gkr-pam: unlocked login keyring Sep 29 18:29:24 centos7.fenestros.loc fprintd[8595]: ** Message: No devices in use, exit Sep 29 18:30:01 centos7.fenestros.loc systemd[1]: Created slice user-0.slice. Sep 29 18:30:02 centos7.fenestros.loc systemd[1]: Starting Session 33 of user root. Sep 29 18:30:02 centos7.fenestros.loc systemd[1]: Started Session 33 of user root. Sep 29 18:30:02 centos7.fenestros.loc CROND[8670]: (root) CMD (/usr/lib64/sa/sa1 1 1) Sep 29 18:40:01 centos7.fenestros.loc systemd[1]: Created slice user-0.slice. Sep 29 18:40:01 centos7.fenestros.loc systemd[1]: Starting Session 34 of user root. Sep 29 18:40:01 centos7.fenestros.loc systemd[1]: Started Session 34 of user root. Sep 29 18:40:01 centos7.fenestros.loc CROND[8809]: (root) CMD (/usr/lib64/sa/sa1 1 1) Sep 29 18:43:00 centos7.fenestros.loc trainee[8930]: Linux est super
Important : Notez la présence de la dernière ligne.
Consultation des Journaux avec des Mots Clefs
Pour consulter les mots clefs compris par Journald, tapez la commande journalctl puis appuyer trois fois sur la touche Tab ⇆ :
[root@centos7 ~]# journalctl [tab] [tab] [tab] _AUDIT_LOGINUID= COREDUMP_EXE= _MACHINE_ID= _SOURCE_REALTIME_TIMESTAMP= _TRANSPORT= _AUDIT_SESSION= __CURSOR= MESSAGE= SYSLOG_FACILITY= _UDEV_DEVLINK= _BOOT_ID= ERRNO= MESSAGE_ID= SYSLOG_IDENTIFIER= _UDEV_DEVNODE= _CMDLINE= _EXE= __MONOTONIC_TIMESTAMP= SYSLOG_PID= _UDEV_SYSNAME= CODE_FILE= _GID= _PID= _SYSTEMD_CGROUP= _UID= CODE_FUNC= _HOSTNAME= PRIORITY= _SYSTEMD_OWNER_UID= CODE_LINE= _KERNEL_DEVICE= __REALTIME_TIMESTAMP= _SYSTEMD_SESSION= _COMM= _KERNEL_SUBSYSTEM= _SELINUX_CONTEXT= _SYSTEMD_UNIT=
Pour voir la liste des processus dont les traces sont inclus dans les journaux du mots clefs, tapez la commande journalctl suivi par le nom d'un mot clef puis appuyer deux fois sur la touche Tab ⇆ :
[root@centos7 ~]# journalctl _UID= 0 1000 172 32 42 70 81 994 997 999 [root@centos7 ~]# journalctl _COMM= abrtd avahi-daemon dracut-cmdline kdumpctl NetworkManager rtkit-daemon su vboxadd-service accounts-daemon bluetoothd fprintd libvirtd nm-dispatcher run-parts systemd vmtoolsd alsactl chronyd gdm-session-wor logger polkitd sa1 systemd-fsck anacron colord gnome-session master postlog sh systemd-journal audispd crond goa-daemon ModemManager pulseaudio smartd systemd-logind auditd dbus-daemon goa-identity-se netcf-transacti rngd sm-notify udisksd augenrules dhclient irqbalance network rpcbind sshd vboxadd [root@centos7 ~]# journalctl _COMM=
Gestion du Démarrage et des Services
GRUB 2 sous RHEL/CentOS 7
GRUB 2 est une ré-écriture complète de GRUB Legacy. Il apporte des améliorations, notamment GRUB 2 sait utiliser des partitions RAID et LVM.
Le lancement de GRUB 2 se fait en trois étapes :
- Etape 1 : Le boot.img, stocké dans les 512 premiers octets du secteur 0 avec la table des partitions, est lancé. Son seul but est de lancer l'étape 1.5,
- Etape 1.5 : Le core.img, d'une taille approximative de 25 Ko et stocké dans les secteurs 1 à 62, est lance. Son travail est de charger des pilotes qui supportent de multiples systèmes de fichiers puis de lancer l'étape 2 dans un des systèmes de fichiers,
- Etape 2 : Contenu dans le répertoire /boot/grub2/, il lance le menu pour que l'utilisateur puisse choisir les système d'exploitation à lancer.
Dans le cas où le gestionnaire d'amorçage GRUB 2 n'est pas installé, il convient de saisir la commande suivante :
# grub2-install /dev/périphérique [Entrée]
où périphérique est le nom du périphérique ou l'étape 1 de GRUB2 doit s'installer dans le MBR.
GRUB 2 lit ses entrées de menus à partir du fichier /boot/grub2/grub.cfg. Pour visualiser ce fichier, il convient de saisir la commande suivante :
[root@centos7 ~]# cat /boot/grub2/grub.cfg # # DO NOT EDIT THIS FILE # # It is automatically generated by grub2-mkconfig using templates # from /etc/grub.d and settings from /etc/default/grub # ### BEGIN /etc/grub.d/00_header ### set pager=1 if [ -s $prefix/grubenv ]; then load_env fi if [ "${next_entry}" ] ; then set default="${next_entry}" set next_entry= save_env next_entry set boot_once=true else set default="${saved_entry}" fi if [ x"${feature_menuentry_id}" = xy ]; then menuentry_id_option="--id" else menuentry_id_option="" fi export menuentry_id_option if [ "${prev_saved_entry}" ]; then set saved_entry="${prev_saved_entry}" save_env saved_entry set prev_saved_entry= save_env prev_saved_entry set boot_once=true fi function savedefault { if [ -z "${boot_once}" ]; then saved_entry="${chosen}" save_env saved_entry fi } function load_video { if [ x$feature_all_video_module = xy ]; then insmod all_video else insmod efi_gop insmod efi_uga insmod ieee1275_fb insmod vbe insmod vga insmod video_bochs insmod video_cirrus fi } terminal_output console if [ x$feature_timeout_style = xy ] ; then set timeout_style=menu set timeout=5 # Fallback normal timeout code in case the timeout_style feature is # unavailable. else set timeout=5 fi ### END /etc/grub.d/00_header ### ### BEGIN /etc/grub.d/10_linux ### menuentry 'CentOS Linux (3.10.0-229.4.2.el7.x86_64) 7 (Core)' --class centos --class gnu-linux --class gnu --class os --unrestricted $menuentry_id_option 'gnulinux-3.10.0-123.el7.x86_64-advanced-b35de665-5ec8-4226-a533-58a1b567ac91' { load_video set gfxpayload=keep insmod gzio insmod part_msdos insmod xfs set root='hd0,msdos1' if [ x$feature_platform_search_hint = xy ]; then search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos1 --hint-efi=hd0,msdos1 --hint-baremetal=ahci0,msdos1 --hint='hd0,msdos1' e8d3bd48-1386-411c-9675-41c3f8f1a309 else search --no-floppy --fs-uuid --set=root e8d3bd48-1386-411c-9675-41c3f8f1a309 fi linux16 /vmlinuz-3.10.0-229.4.2.el7.x86_64 root=UUID=b35de665-5ec8-4226-a533-58a1b567ac91 ro vconsole.keymap=fr crashkernel=auto vconsole.font=latarcyrheb-sun16 rhgb quiet LANG=en_US.UTF-8 initrd16 /initramfs-3.10.0-229.4.2.el7.x86_64.img } menuentry 'CentOS Linux, with Linux 3.10.0-123.el7.x86_64' --class centos --class gnu-linux --class gnu --class os --unrestricted $menuentry_id_option 'gnulinux-3.10.0-123.el7.x86_64-advanced-b35de665-5ec8-4226-a533-58a1b567ac91' { load_video set gfxpayload=keep insmod gzio insmod part_msdos insmod xfs set root='hd0,msdos1' if [ x$feature_platform_search_hint = xy ]; then search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos1 --hint-efi=hd0,msdos1 --hint-baremetal=ahci0,msdos1 --hint='hd0,msdos1' e8d3bd48-1386-411c-9675-41c3f8f1a309 else search --no-floppy --fs-uuid --set=root e8d3bd48-1386-411c-9675-41c3f8f1a309 fi linux16 /vmlinuz-3.10.0-123.el7.x86_64 root=UUID=b35de665-5ec8-4226-a533-58a1b567ac91 ro vconsole.keymap=fr crashkernel=auto vconsole.font=latarcyrheb-sun16 rhgb quiet LANG=en_US.UTF-8 initrd16 /initramfs-3.10.0-123.el7.x86_64.img } menuentry 'CentOS Linux, with Linux 0-rescue-a2feb9eb09b1488da0f23b99a66350f8' --class centos --class gnu-linux --class gnu --class os --unrestricted $menuentry_id_option 'gnulinux-0-rescue-a2feb9eb09b1488da0f23b99a66350f8-advanced-b35de665-5ec8-4226-a533-58a1b567ac91' { load_video insmod gzio insmod part_msdos insmod xfs set root='hd0,msdos1' if [ x$feature_platform_search_hint = xy ]; then search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos1 --hint-efi=hd0,msdos1 --hint-baremetal=ahci0,msdos1 --hint='hd0,msdos1' e8d3bd48-1386-411c-9675-41c3f8f1a309 else search --no-floppy --fs-uuid --set=root e8d3bd48-1386-411c-9675-41c3f8f1a309 fi linux16 /vmlinuz-0-rescue-a2feb9eb09b1488da0f23b99a66350f8 root=UUID=b35de665-5ec8-4226-a533-58a1b567ac91 ro vconsole.keymap=fr crashkernel=auto vconsole.font=latarcyrheb-sun16 rhgb quiet initrd16 /initramfs-0-rescue-a2feb9eb09b1488da0f23b99a66350f8.img } if [ "x$default" = 'CentOS Linux, with Linux 3.10.0-123.el7.x86_64' ]; then default='Advanced options for CentOS Linux>CentOS Linux, with Linux 3.10.0-123.el7.x86_64'; fi; ### END /etc/grub.d/10_linux ### ### BEGIN /etc/grub.d/20_linux_xen ### ### END /etc/grub.d/20_linux_xen ### ### BEGIN /etc/grub.d/20_ppc_terminfo ### ### END /etc/grub.d/20_ppc_terminfo ### ### BEGIN /etc/grub.d/30_os-prober ### ### END /etc/grub.d/30_os-prober ### ### BEGIN /etc/grub.d/40_custom ### # This file provides an easy way to add custom menu entries. Simply type the # menu entries you want to add after this comment. Be careful not to change # the 'exec tail' line above. ### END /etc/grub.d/40_custom ### ### BEGIN /etc/grub.d/41_custom ### if [ -f ${config_directory}/custom.cfg ]; then source ${config_directory}/custom.cfg elif [ -z "${config_directory}" -a -f $prefix/custom.cfg ]; then source $prefix/custom.cfg; fi ### END /etc/grub.d/41_custom ###
Notez que ce fichier ne doit pas être modifié manuellement. En effet, il est généré par la commande grub2-mkconfig sous RHEL/CentOS 7. La commande grub2-mkconfig prend en argument l'emplacement du fichier destination, par exemple :
- grub2-mkconfig -o /boot/grub2/grub.cfg, ou
- grub2-mkconfig -o /boot/efi/EFI/redhat/grub.cfg
Lors de l'exécution de la commande grub2-mkconfig plusieurs fichiers sont lus :
Le fichier /boot/grub2/device.map
[root@centos7 ~]# cat /boot/grub2/device.map # this device map was generated by anaconda (hd0) /dev/sda (hd1) /dev/sda
Le fichier /etc/default/grub
Ce fichier contient la configuration par défaut des paramètres de GRUB 2 :
[root@centos7 ~]# cat /etc/default/grub GRUB_TIMEOUT=5 GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)" GRUB_DEFAULT=saved GRUB_DISABLE_SUBMENU=true GRUB_TERMINAL_OUTPUT="console" GRUB_CMDLINE_LINUX="vconsole.keymap=fr crashkernel=auto vconsole.font=latarcyrheb-sun16 rhgb quiet" GRUB_DISABLE_RECOVERY="true"
Important : Notez que toute modification de ce fichier nécessite l'exécution de la commande grub2-mkconfig sous RHEL/CentOS 7 pour que les modifications soient prises en compte.
Dans ce fichier les directives sont :
Directive | Description |
---|---|
GRUB_DEFAULT | Entrée du menu sélectionner par défaut |
GRUB_TIMEOUT | Durée de l'affichage du menu avant le démarrage en utilisant la valeur de GRUB_DEFAULT |
GRUB_DISTRIBUTOR | Ligne de commande qui génère le texte de l'entrée |
GRUB_CMDLINE_LINUX_DEFAULT | Paramètres passés au noyau lors d'un démarrage normal (Hors donc le mode secours) |
GRUB_CMDLINE_LINUX | Paramètres passés au noyau peu importe le type de démarrage |
GRUB_TERMINAL | Si non commentée, cette directive désactive le démarrage graphique |
GRUB_GFXMODE | Indique la résolution utilisée lors d'un démarrage graphique |
GRUB_DISABLE_LINUX_UUID | Si true, cette directive empêche l'utilisation de l'UUID de la partition |
GRUB_DISABLE_LINUX_RECOVERY | Si true, cette directive empêche la génération des entrées en mode recovery |
GRUB_INIT_TUNE | Permet d'obtenir un beep au démarrage de GRUB 2 |
GRUB_BADRAM | Permet de spécifier de la mémoire défaillante |
Les fichiers du répertoire /etc/grub.d
Les fichiers de ce répertoire sont exécutés dans l'ordre alphanumérique et servent à construire les menus de GRUB 2 :
[root@centos7 ~]# ls -l /etc/grub.d total 68 -rwxr-xr-x. 1 root root 8702 Mar 26 09:27 00_header -rwxr-xr-x. 1 root root 992 Oct 17 2014 00_tuned -rwxr-xr-x. 1 root root 10114 Mar 26 09:27 10_linux -rwxr-xr-x. 1 root root 10275 Mar 26 09:27 20_linux_xen -rwxr-xr-x. 1 root root 2559 Mar 26 09:27 20_ppc_terminfo -rwxr-xr-x. 1 root root 11169 Mar 26 09:27 30_os-prober -rwxr-xr-x. 1 root root 214 Mar 26 09:27 40_custom -rwxr-xr-x. 1 root root 216 Mar 26 09:27 41_custom -rw-r--r--. 1 root root 483 Mar 26 09:27 README
- Le fichier /etc/grub.d/10_Linux,
- Le fichier 10_Linux contient des boucles pour rechercher des noyaux Linux,
- Le fichier /etc/grub.d/30_os-prober,
- Ce fichier recherche des éventuels systèmes d'exploitation autre que Linux,
- Les fichiers /etc/grub.d/40_custom et /etc/grub.d/41_custom,
- Ces deux fichiers sont fournis en tant que modèles à personnaliser.
Configurer l'Authentification
Pour configurer l'authentification sous GRUB 2, il faut créer le fichier /etc/grub.d/01_users :
[root@centos7 ~]# touch /etc/grub.d/01_users [root@centos7 ~]# chmod 755 /etc/grub.d/01_users
Créez deux mots de passe hashés au format PBKDF2 en utilisant la commande grub2-mkpasswd-pbkdf2 sous RHEL/CentOS :
[root@centos7 ~]# grub2-mkpasswd-pbkdf2 Enter password: pass123 Reenter password: pass123 PBKDF2 hash of your password is grub.pbkdf2.sha512.10000.0298C1C613A451C46FBC95BB2AC7A41BCEC1C61512EF785BD81E3B65DFF9D57ED4ADF8906C3EF33C22C06FBDD366E1C118FC41110BD646A4D49EF86EFD0573BF.E14A45900096D773BE99BEA9AB8D4FA81431458952798B997D4FC9E0850426F6798979371B8EBD331DB33AE8FEAE25E6773156D42F21B884DBA405546782B3BD [root@centos7 ~]# grub2-mkpasswd-pbkdf2 Enter password: pass456 Reenter password: pass456 PBKDF2 hash of your password is grub.pbkdf2.sha512.10000.161D4183DC832357403296ED05961FCF494AED9E20DC21C84EA89085EB9EF5AAE4C7D4A276AA5CC21F9C224B2ECA010B915B4830E9648A7398EB4A91E7E3D252.8277512B849FF727FDD0716D1D4CDC6B92E53918F665282E02133AAD1046EB10273A2BC70D76558FFC34A0C0C8BE5132E4C4C02C7C9C1A567BD5365D77350FCF
Editez le fichier /etc/grub.d/01_users ainsi :
- /etc/grub.d/01_users
#!/bin/sh -e cat <<EOF set superusers="root" password_pbkdf2 root grub.pbkdf2.sha512.10000.0298C1C613A451C46FBC95BB2AC7A41BCEC1C61512EF785BD81E3B65DFF9D57ED4ADF8906C3EF33C22C06FBDD366E1C118FC41110BD646A4D49EF86EFD0573BF.E14A45900096D773BE99BEA9AB8D4FA81431458952798B997D4FC9E0850426F6798979371B8EBD331DB33AE8FEAE25E6773156D42F21B884DBA405546782B3BD password_pbkdf2 trainee grub.pbkdf2.sha512.10000.161D4183DC832357403296ED05961FCF494AED9E20DC21C84EA89085EB9EF5AAE4C7D4A276AA5CC21F9C224B2ECA010B915B4830E9648A7398EB4A91E7E3D252.8277512B849FF727FDD0716D1D4CDC6B92E53918F665282E02133AAD1046EB10273A2BC70D76558FFC34A0C0C8BE5132E4C4C02C7C9C1A567BD5365D77350FCF EOF
Il est aussi possible d'utiliser des mots de passe non cryptés. Modifiez donc le fichier /etc/grub.d/01_users ainsi :
- /etc/grub.d/01_users
#!/bin/sh -e cat <<EOF set superusers="root" password root fenestros password trainee trainee EOF
Ouvrez maintenant le fichier /boot/grub2/grub.cfg et copier le premier menuentry de la section /etc/grub.d/10_linux :
menuentry 'CentOS Linux (3.10.0-229.4.2.el7.x86_64) 7 (Core)' --class centos --class gnu-linux --class gnu --class os --unrestricted $menuentry_id_option 'gnulinux-3.10.0-123.el7.x86_64-advanced-b35de665-5ec8-4226-a533-58a1b567ac91' { load_video set gfxpayload=keep insmod gzio insmod part_msdos insmod xfs set root='hd0,msdos1' if [ x$feature_platform_search_hint = xy ]; then search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos1 --hint-efi=hd0,msdos1 --hint-baremetal=ahci0,msdos1 --hint='hd0,msdos1' e8d3bd48-1386-411c-9675-41c3f8f1a309 else search --no-floppy --fs-uuid --set=root e8d3bd48-1386-411c-9675-41c3f8f1a309 fi linux16 /vmlinuz-3.10.0-229.4.2.el7.x86_64 root=UUID=b35de665-5ec8-4226-a533-58a1b567ac91 ro vconsole.keymap=fr crashkernel=auto vconsole.font=latarcyrheb-sun16 rhgb quiet LANG=en_US.UTF-8 initrd16 /initramfs-3.10.0-229.4.2.el7.x86_64.img }
Collez maintenant ce menuentry dans le fichier /etc/grub.d/40_custom :
- /etc/grub.d/40_custom
#!/bin/sh exec tail -n +3 $0 # This file provides an easy way to add custom menu entries. Simply type the # menu entries you want to add after this comment. Be careful not to change # the 'exec tail' line above. menuentry 'CentOS Linux (3.10.0-229.4.2.el7.x86_64) 7 (Core)' --class centos --class gnu-linux --class gnu --class os --unrestricted $menuentry_id_option 'gnulinux-3.10.0-123.el7.x86_64-advanced-b35de665-5ec8-4226-a533-58a1b567ac91' { load_video set gfxpayload=keep insmod gzio insmod part_msdos insmod xfs set root='hd0,msdos1' if [ x$feature_platform_search_hint = xy ]; then search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos1 --hint-efi=hd0,msdos1 --hint-baremetal=ahci0,msdos1 --hint='hd0,msdos1' e8d3bd48-1386-411c-9675-41c3f8f1a309 else search --no-floppy --fs-uuid --set=root e8d3bd48-1386-411c-9675-41c3f8f1a309 fi linux16 /vmlinuz-3.10.0-229.4.2.el7.x86_64 root=UUID=b35de665-5ec8-4226-a533-58a1b567ac91 ro vconsole.keymap=fr crashkernel=auto vconsole.font=latarcyrheb-sun16 rhgb quiet LANG=en_US.UTF-8 initrd16 /initramfs-3.10.0-229.4.2.el7.x86_64.img }
Modifier le debut du menuentry ainsi :
menuentry 'CentOS Linux (3.10.0-229.4.2.el7.x86_64) 7 (Core) pour TRAINEE' --class centos --class gnu-linux --class gnu --class os --unrestricted $menuentry_id_option 'gnulinux-3.10.0-123.el7.x86_64-advanced-b35de665-5ec8-4226-a533-58a1b567ac91' --users trainee {
Sous RHEL/CentOS, lancez la commande grub2-mkconfig -o /boot/grub2/grub.cfg :
[root@centos7 ~]# grub2-mkconfig -o /boot/grub2/grub.cfg Generating grub configuration file ... Found linux image: /boot/vmlinuz-3.10.0-229.4.2.el7.x86_64 Found initrd image: /boot/initramfs-3.10.0-229.4.2.el7.x86_64.img Found linux image: /boot/vmlinuz-3.10.0-123.el7.x86_64 Found initrd image: /boot/initramfs-3.10.0-123.el7.x86_64.img Found linux image: /boot/vmlinuz-0-rescue-a2feb9eb09b1488da0f23b99a66350f8 Found initrd image: /boot/initramfs-0-rescue-a2feb9eb09b1488da0f23b99a66350f8.img done
En examinant le fichier /boot/grub2/grub.cfg on doit pouvoir constater la présence de la section /etc/grub.d/40_custom :
... ### BEGIN /etc/grub.d/40_custom ### # This file provides an easy way to add custom menu entries. Simply type the # menu entries you want to add after this comment. Be careful not to change # the 'exec tail' line above. menuentry 'CentOS Linux (3.10.0-229.4.2.el7.x86_64) 7 (Core) pour TRAINEE' --class centos --class gnu-linux --class gnu --class os --unrestricted $menuentry_id_option 'gnulinux-3.10.0-123.el7.x86_64-advanced-b35de665-5ec8-4226-a533-58a1b567ac91' --users trainee { load_video set gfxpayload=keep insmod gzio insmod part_msdos insmod xfs set root='hd0,msdos1' if [ x$feature_platform_search_hint = xy ]; then search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos1 --hint-efi=hd0,msdos1 --hint-baremetal=ahci0,msdos1 --hint='hd0,msdos1' e8d3bd48-1386-411c-9675-41c3f8f1a309 else search --no-floppy --fs-uuid --set=root e8d3bd48-1386-411c-9675-41c3f8f1a309 fi linux16 /vmlinuz-3.10.0-229.4.2.el7.x86_64 root=UUID=b35de665-5ec8-4226-a533-58a1b567ac91 ro vconsole.keymap=fr crashkernel=auto vconsole.font=latarcyrheb-sun16 rhgb quiet LANG=en_US.UTF-8 initrd16 /initramfs-3.10.0-229.4.2.el7.x86_64.img } ### END /etc/grub.d/40_custom ### ...
A faire : Redémarrez votre VM et choisissez l'entrée de GRUB 2 issue du fichier /etc/grub.d/40_custom puis constatez que GRUB 2 demande un nom d'utilisateur ainsi qu'un mot de passe quand vous voulez éditer une entrée de GRUB 2.
Modifier la Configuration de GRUB 2 en Ligne de Commande
Lors du démarrage de GRUB 2, trois actions sont possibles à partir du menu :
- Lancer un système d'exploitation en le sélectionnant avec les flèches puis en appuyant sur la touche ↵ Entrée,
- Lancer l'éditeur en appuyant sur la touche e,
- Lancer l’interface de la ligne de commande GRUB en appuyant sur la touche c.
En mode édition notez l'utilisation des touches suivantes :
- flèches : se déplacer dans l'écran. L'édition se fait en utilisant simplement les touches du clavier,
- Crtl-X : démarrer avec la configuration modifiée,
- echap : abandonner les modifications et retourner à l'interface menu de GRUB 2.
Systemd
RHEL/CentOS 7, comme beaucoup d'autres distributions, ont abandonné Upstart pour Systemd. Ce dernier prend une approche différente au démarrage de Linux. En effet, SysVinit et Upstart sont des systèmes de démarrage séquentiels. Systemd essaie, par contre, de démarrer autant de services en parallèle que possible. Ceci est rendu possible car la majorité d'architectures matérielles modernes sont multi-cœurs. Si un service dépend d'un autre qui n'est pas encore démarré ce premier est mis en attente dans une mémoire tampon. Qui plus est, les services qui ne sont pas nécessaires au démarrage de la machine, tel cups, ne sont démarrés ultérieurement que si nécessaire. Lors de démarrage, les partitions sont montées en parallèle. Dernièrement, Systemd remplace les scripts de démarrage traditionnels avec des binaires compilés, beaucoup plus rapides que leur prédécesseurs.
Au lieu de parler de scripts de démarrage et de niveaux d'exécution, Systemd utilise la terminologie Unités (Units) et Cibles (Targets). Une Cible est en quelque sorte une grande étape dans le démarrage du système tandis qu'une Unité peut être :
- un automount - (.automount),
- une périphérique - Device - (.device),
- un montage d'un périphérique - Mount - (.mount),
- un chemin - Path - (.path)
- un socket - Socket - (.socket),
- un service - Service - (.service),
- une instantanée - Snapshot - (.snapshot),
- une cible - Target - (.target).
Important : Dans le contexte d'une Unité, le type cible regroupe des Unités multiples afin qu'elles puissent être démarrées en même temps. Par exemple network.target regroupe toutes les Unités nécessaires pour démarrer toutes les interfaces réseaux en même temps.
La Commande systemctl
Pour visualiser la liste des Unités, il convient d'utiliser la commande systemctl avec l'option list-units :
[root@centos7 ~]# systemctl list-units UNIT LOAD ACTIVE SUB DESCRIPTION proc-sys-fs-binfmt_misc.automount loaded active waiting Arbitrary Executable File Formats File System Automount Point sys-devices-pci0000:...t1-target1:0:0-1:0:0:0-block-sr0.device loaded active plugged VBOX_CD-ROM sys-devices-pci0000:00-0000:00:03.0-net-enp0s3.device loaded active plugged PRO/1000 MT Desktop Adapter sys-devices-pci0000:00-0000:00:05.0-sound-card0.device loaded active plugged 82801AA AC'97 Audio Controller sys-devices-pci0000:...rget2:0:0-2:0:0:0-block-sda-sda1.device loaded active plugged VBOX_HARDDISK sys-devices-pci0000:...rget2:0:0-2:0:0:0-block-sda-sda2.device loaded active plugged VBOX_HARDDISK sys-devices-pci0000:...rget2:0:0-2:0:0:0-block-sda-sda3.device loaded active plugged VBOX_HARDDISK sys-devices-pci0000:...t2-target2:0:0-2:0:0:0-block-sda.device loaded active plugged VBOX_HARDDISK sys-devices-platform-serial8250-tty-ttyS0.device loaded active plugged /sys/devices/platform/serial8250/tty/ttyS0 sys-devices-platform-serial8250-tty-ttyS1.device loaded active plugged /sys/devices/platform/serial8250/tty/ttyS1 sys-devices-platform-serial8250-tty-ttyS2.device loaded active plugged /sys/devices/platform/serial8250/tty/ttyS2 sys-devices-platform-serial8250-tty-ttyS3.device loaded active plugged /sys/devices/platform/serial8250/tty/ttyS3 sys-module-configfs.device loaded active plugged /sys/module/configfs sys-module-fuse.device loaded active plugged /sys/module/fuse sys-subsystem-net-devices-enp0s3.device loaded active plugged PRO/1000 MT Desktop Adapter -.mount loaded active mounted / boot.mount loaded active mounted /boot dev-hugepages.mount loaded active mounted Huge Pages File System dev-mqueue.mount loaded active mounted POSIX Message Queue File System proc-fs-nfsd.mount loaded active mounted NFSD configuration filesystem run-media-trainee-VBOXADDITIONS_4.3.28_100309.mount loaded active mounted /run/media/trainee/VBOXADDITIONS_4.3.28_100309 run-user-1000-gvfs.mount loaded active mounted /run/user/1000/gvfs sys-fs-fuse-connections.mount loaded active mounted FUSE Control File System sys-kernel-config.mount loaded active mounted Configuration File System sys-kernel-debug.mount loaded active mounted Debug File System var-lib-nfs-rpc_pipefs.mount loaded active mounted RPC Pipe File System brandbot.path loaded active waiting Flexible branding cups.path loaded active waiting CUPS Printer Service Spool systemd-ask-password-plymouth.path loaded active waiting Forward Password Requests to Plymouth Directory Watch systemd-ask-password-wall.path loaded active waiting Forward Password Requests to Wall Directory Watch session-1.scope loaded active running Session 1 of user trainee abrt-ccpp.service loaded active exited Install ABRT coredump hook abrt-oops.service loaded active running ABRT kernel log watcher abrt-xorg.service loaded active running ABRT Xorg log watcher abrtd.service loaded active running ABRT Automated Bug Reporting Tool accounts-daemon.service loaded active running Accounts Service alsa-state.service loaded active running Manage Sound Card State (restore and store) atd.service loaded active running Job spooling tools auditd.service loaded active running Security Auditing Service avahi-daemon.service loaded active running Avahi mDNS/DNS-SD Stack bluetooth.service loaded active running Bluetooth service chronyd.service loaded active running NTP client/server colord.service loaded active running Manage, Install and Generate Color Profiles crond.service loaded active running Command Scheduler cups.service loaded active running CUPS Printing Service dbus.service loaded active running D-Bus System Message Bus firewalld.service loaded active running firewalld - dynamic firewall daemon gdm.service loaded active running GNOME Display Manager gssproxy.service loaded active running GSSAPI Proxy Daemon iscsi-shutdown.service loaded active exited Logout off all iSCSI sessions on shutdown kdump.service loaded failed failed Crash recovery kernel arming kmod-static-nodes.service loaded active exited Create list of required static device nodes for the current ker ksm.service loaded active exited Kernel Samepage Merging ksmtuned.service loaded active running Kernel Samepage Merging (KSM) Tuning Daemon libstoragemgmt.service loaded active running libstoragemgmt plug-in server daemon libvirtd.service loaded active running Virtualization daemon lvm2-lvmetad.service loaded active running LVM2 metadata daemon
Pour consulter la liste des Unités inactifs, utilisez la commande suivante :
[root@centos7 ~]# systemctl list-units --all | grep inactive | more proc-sys-fs-binfmt_misc.mount loaded inactive dead Arbitrary Executable File Formats File System systemd-ask-password-console.path loaded inactive dead Dispatch Password Requests to Cons ole Directory Watch abrt-vmcore.service loaded inactive dead Harvest vmcores for ABRT alsa-restore.service loaded inactive dead Restore Sound Card State alsa-store.service loaded inactive dead Store Sound Card State apparmor.service not-found inactive dead apparmor.service auth-rpcgss-module.service loaded inactive dead Kernel Module supporting RPCSEC_GS S brandbot.service loaded inactive dead Flexible Branding Service cpupower.service loaded inactive dead Configure CPU power related settin gs dm-event.service loaded inactive dead Device-mapper event daemon dmraid-activation.service loaded inactive dead Activation of DM RAID sets dracut-shutdown.service loaded inactive dead Restore /run/initramfs ebtables.service loaded inactive dead Ethernet Bridge Filtering tables emergency.service loaded inactive dead Emergency Shell exim.service not-found inactive dead exim.service getty@tty1.service loaded inactive dead Getty on tty1 hypervkvpd.service loaded inactive dead Hyper-V KVP daemon hypervvssd.service loaded inactive dead Hyper-V VSS daemon ip6tables.service loaded inactive dead IPv6 firewall with ip6tables iptables.service loaded inactive dead IPv4 firewall with iptables irqbalance.service loaded inactive dead irqbalance daemon iscsi.service loaded inactive dead Login and scanning of iSCSI device s iscsid.service loaded inactive dead Open-iSCSI iscsiuio.service loaded inactive dead iSCSI UserSpace I/O driver --More--
Pour consulter la liste des fichiers Unités, utilisez la commande suivante :
[root@centos7 ~]# systemctl list-unit-files | more UNIT FILE STATE proc-sys-fs-binfmt_misc.automount static dev-hugepages.mount static dev-mqueue.mount static proc-fs-nfsd.mount static proc-sys-fs-binfmt_misc.mount static sys-fs-fuse-connections.mount static sys-kernel-config.mount static sys-kernel-debug.mount static tmp.mount disabled var-lib-nfs-rpc_pipefs.mount static brandbot.path disabled cups.path enabled systemd-ask-password-console.path static systemd-ask-password-plymouth.path static systemd-ask-password-wall.path static session-1.scope static session-8.scope static abrt-ccpp.service enabled abrt-oops.service enabled abrt-pstoreoops.service disabled abrt-vmcore.service enabled abrt-xorg.service enabled abrtd.service enabled accounts-daemon.service enabled alsa-restore.service static alsa-state.service static alsa-store.service static anaconda-direct.service static --More--
Options de la Commande systemctl
Les options de la commande systemctl sont :
[root@centos7 ~]# systemctl --help systemctl [OPTIONS...] {COMMAND} ... Query or send control commands to the systemd manager. -h --help Show this help --version Show package version -t --type=TYPE List only units of a particular type --state=STATE List only units with particular LOAD or SUB or ACTIVE state -p --property=NAME Show only properties by this name -a --all Show all loaded units/properties, including dead/empty ones. To list all units installed on the system, use the 'list-unit-files' command instead. --reverse Show reverse dependencies with 'list-dependencies' -l --full Don't ellipsize unit names on output --fail When queueing a new job, fail if conflicting jobs are pending --irreversible When queueing a new job, make sure it cannot be implicitly cancelled --ignore-dependencies When queueing a new job, ignore all its dependencies --show-types When showing sockets, explicitly show their type -i --ignore-inhibitors When shutting down or sleeping, ignore inhibitors --kill-who=WHO Who to send signal to -s --signal=SIGNAL Which signal to send -H --host=[USER@]HOST Show information for remote host -P --privileged Acquire privileges before execution -q --quiet Suppress output --no-block Do not wait until operation finished --no-wall Don't send wall message before halt/power-off/reboot --no-reload When enabling/disabling unit files, don't reload daemon configuration --no-legend Do not print a legend (column headers and hints) --no-pager Do not pipe output into a pager --no-ask-password Do not ask for system passwords --system Connect to system manager --user Connect to user service manager --global Enable/disable unit files globally --runtime Enable unit files only temporarily until next reboot -f --force When enabling unit files, override existing symlinks When shutting down, execute action immediately --root=PATH Enable unit files in the specified root directory -n --lines=INTEGER Number of journal entries to show -o --output=STRING Change journal output mode (short, short-monotonic, verbose, export, json, json-pretty, json-sse, cat) --plain Print unit dependencies as a list instead of a tree Unit Commands: list-units List loaded units list-sockets List loaded sockets ordered by address start [NAME...] Start (activate) one or more units stop [NAME...] Stop (deactivate) one or more units reload [NAME...] Reload one or more units restart [NAME...] Start or restart one or more units try-restart [NAME...] Restart one or more units if active reload-or-restart [NAME...] Reload one or more units if possible, otherwise start or restart reload-or-try-restart [NAME...] Reload one or more units if possible, otherwise restart if active isolate [NAME] Start one unit and stop all others kill [NAME...] Send signal to processes of a unit is-active [NAME...] Check whether units are active is-failed [NAME...] Check whether units are failed status [NAME...|PID...] Show runtime status of one or more units show [NAME...|JOB...] Show properties of one or more units/jobs or the manager set-property [NAME] [ASSIGNMENT...] Sets one or more properties of a unit help [NAME...|PID...] Show manual for one or more units reset-failed [NAME...] Reset failed state for all, one, or more units list-dependencies [NAME] Recursively show units which are required or wanted by this unit or by which this unit is required or wanted Unit File Commands: list-unit-files List installed unit files enable [NAME...] Enable one or more unit files disable [NAME...] Disable one or more unit files reenable [NAME...] Reenable one or more unit files preset [NAME...] Enable/disable one or more unit files based on preset configuration is-enabled [NAME...] Check whether unit files are enabled mask [NAME...] Mask one or more units unmask [NAME...] Unmask one or more units link [PATH...] Link one or more units files into the search path get-default Get the name of the default target set-default NAME Set the default target Job Commands: list-jobs List jobs cancel [JOB...] Cancel all, one, or more jobs Snapshot Commands: snapshot [NAME] Create a snapshot delete [NAME...] Remove one or more snapshots Environment Commands: show-environment Dump environment set-environment [NAME=VALUE...] Set one or more environment variables unset-environment [NAME...] Unset one or more environment variables Manager Lifecycle Commands: daemon-reload Reload systemd manager configuration daemon-reexec Reexecute systemd manager System Commands: default Enter system default mode rescue Enter system rescue mode emergency Enter system emergency mode halt Shut down and halt the system poweroff Shut down and power-off the system reboot Shut down and reboot the system kexec Shut down and reboot the system with kexec exit Request user instance exit switch-root [ROOT] [INIT] Change to a different root file system suspend Suspend the system hibernate Hibernate the system hybrid-sleep Hibernate and suspend the system lines 95-123/123 (END)
Fichiers de Configuration
Les Cibles et les Unités sont configurées par des fichiers se trouvant dans le répertoire /etc/systemd/system :
[root@centos7 ~]# ls -l /etc/systemd/system total 12 drwxr-xr-x. 2 root root 54 Mar 8 13:57 basic.target.wants drwxr-xr-x. 2 root root 30 Mar 8 13:53 bluetooth.target.wants lrwxrwxrwx. 1 root root 41 Mar 8 13:53 dbus-org.bluez.service -> /usr/lib/systemd/system/bluetooth.service lrwxrwxrwx. 1 root root 41 Mar 8 13:48 dbus-org.fedoraproject.FirewallD1.service -> /usr/lib/systemd/system/firewalld.service lrwxrwxrwx. 1 root root 44 Mar 8 13:48 dbus-org.freedesktop.Avahi.service -> /usr/lib/systemd/system/avahi-daemon.service lrwxrwxrwx. 1 root root 44 Mar 8 13:57 dbus-org.freedesktop.ModemManager1.service -> /usr/lib/systemd/system/ModemManager.service lrwxrwxrwx. 1 root root 46 Mar 8 13:49 dbus-org.freedesktop.NetworkManager.service -> /usr/lib/systemd/system/NetworkManager.service lrwxrwxrwx. 1 root root 57 Mar 8 13:49 dbus-org.freedesktop.nm-dispatcher.service -> /usr/lib/systemd/system/NetworkManager-dispatcher.service lrwxrwxrwx. 1 root root 36 Mar 8 14:05 default.target -> /lib/systemd/system/graphical.target drwxr-xr-x. 2 root root 85 Mar 8 13:47 default.target.wants lrwxrwxrwx. 1 root root 35 Mar 8 13:54 display-manager.service -> /usr/lib/systemd/system/gdm.service drwxr-xr-x. 2 root root 31 Mar 8 13:47 getty.target.wants drwxr-xr-x. 2 root root 63 Jun 4 14:59 graphical.target.wants drwxr-xr-x. 2 root root 4096 Jun 4 10:00 multi-user.target.wants drwxr-xr-x. 2 root root 29 Mar 8 13:48 nfs.target.wants drwxr-xr-x. 2 root root 25 Mar 8 13:50 printer.target.wants drwxr-xr-x. 2 root root 30 Jun 4 10:00 remote-fs.target.wants drwxr-xr-x. 2 root root 4096 Mar 8 13:50 sockets.target.wants drwxr-xr-x. 2 root root 35 Mar 8 13:57 spice-vdagentd.target.wants drwxr-xr-x. 2 root root 4096 Mar 8 13:49 sysinit.target.wants drwxr-xr-x. 2 root root 83 Mar 8 13:49 system-update.target.wants
ainsi que par des fichiers se trouvant dans le répertoire /lib/systemd/system et /usr/lib/systemd/system :
[root@centos7 ~]# ls -l /lib/systemd/system | more total 1208 -rw-r--r--. 1 root root 275 Mar 24 04:56 abrt-ccpp.service -rw-r--r--. 1 root root 380 Mar 24 04:56 abrtd.service -rw-r--r--. 1 root root 361 Mar 24 04:56 abrt-oops.service -rw-r--r--. 1 root root 266 Mar 24 04:56 abrt-pstoreoops.service -rw-r--r--. 1 root root 262 Mar 24 04:56 abrt-vmcore.service -rw-r--r--. 1 root root 311 Mar 24 04:56 abrt-xorg.service -rw-r--r--. 1 root root 421 Jun 10 2014 accounts-daemon.service -rw-r--r--. 1 root root 501 Mar 5 20:37 alsa-restore.service -rw-r--r--. 1 root root 558 Mar 5 20:37 alsa-state.service -rw-r--r--. 1 root root 412 Mar 5 20:37 alsa-store.service -rw-r--r--. 1 root root 645 Mar 26 11:43 anaconda-direct.service -rw-r--r--. 1 root root 185 Mar 26 11:43 anaconda-nm-config.service -rw-r--r--. 1 root root 660 Mar 26 11:43 anaconda-noshell.service -rw-r--r--. 1 root root 387 Mar 26 11:43 anaconda.service -rw-r--r--. 1 root root 684 Mar 26 11:43 anaconda-shell@.service -rw-r--r--. 1 root root 322 Mar 26 11:43 anaconda-sshd.service -rw-r--r--. 1 root root 312 Mar 26 11:43 anaconda.target drwxr-xr-x. 2 root root 4096 Jun 4 15:33 anaconda.target.wants -rw-r--r--. 1 root root 498 Mar 26 11:43 anaconda-tmux@.service -rw-r--r--. 1 root root 275 Jun 10 2014 arp-ethers.service -rw-r--r--. 1 root root 205 Oct 7 2014 atd.service -rw-r-----. 1 root root 669 Mar 5 22:59 auditd.service -rw-r--r--. 1 root root 663 Mar 6 05:17 auth-rpcgss-module.service lrwxrwxrwx. 1 root root 14 Jun 4 09:52 autovt@.service -> getty@.service -rw-r--r--. 1 root root 1044 Mar 5 23:03 avahi-daemon.service -rw-r--r--. 1 root root 874 Mar 5 23:03 avahi-daemon.socket -rw-r--r--. 1 root root 546 May 12 21:44 basic.target drwxr-xr-x. 2 root root 4096 Jun 4 10:07 basic.target.wants --More--
[root@centos7 ~]# ls -l /usr/lib/systemd/system | more total 1208 -rw-r--r--. 1 root root 275 Mar 24 04:56 abrt-ccpp.service -rw-r--r--. 1 root root 380 Mar 24 04:56 abrtd.service -rw-r--r--. 1 root root 361 Mar 24 04:56 abrt-oops.service -rw-r--r--. 1 root root 266 Mar 24 04:56 abrt-pstoreoops.service -rw-r--r--. 1 root root 262 Mar 24 04:56 abrt-vmcore.service -rw-r--r--. 1 root root 311 Mar 24 04:56 abrt-xorg.service -rw-r--r--. 1 root root 421 Jun 10 2014 accounts-daemon.service -rw-r--r--. 1 root root 501 Mar 5 20:37 alsa-restore.service -rw-r--r--. 1 root root 558 Mar 5 20:37 alsa-state.service -rw-r--r--. 1 root root 412 Mar 5 20:37 alsa-store.service -rw-r--r--. 1 root root 645 Mar 26 11:43 anaconda-direct.service -rw-r--r--. 1 root root 185 Mar 26 11:43 anaconda-nm-config.service -rw-r--r--. 1 root root 660 Mar 26 11:43 anaconda-noshell.service -rw-r--r--. 1 root root 387 Mar 26 11:43 anaconda.service -rw-r--r--. 1 root root 684 Mar 26 11:43 anaconda-shell@.service -rw-r--r--. 1 root root 322 Mar 26 11:43 anaconda-sshd.service -rw-r--r--. 1 root root 312 Mar 26 11:43 anaconda.target drwxr-xr-x. 2 root root 4096 Jun 4 15:33 anaconda.target.wants -rw-r--r--. 1 root root 498 Mar 26 11:43 anaconda-tmux@.service -rw-r--r--. 1 root root 275 Jun 10 2014 arp-ethers.service -rw-r--r--. 1 root root 205 Oct 7 2014 atd.service -rw-r-----. 1 root root 669 Mar 5 22:59 auditd.service -rw-r--r--. 1 root root 663 Mar 6 05:17 auth-rpcgss-module.service lrwxrwxrwx. 1 root root 14 Jun 4 09:52 autovt@.service -> getty@.service -rw-r--r--. 1 root root 1044 Mar 5 23:03 avahi-daemon.service -rw-r--r--. 1 root root 874 Mar 5 23:03 avahi-daemon.socket -rw-r--r--. 1 root root 546 May 12 21:44 basic.target drwxr-xr-x. 2 root root 4096 Jun 4 10:07 basic.target.wants --More--
Par exemple, sous RHEL/CentOS 7, le service sshd est configuré par le fichier /usr/lib/systemd/system/sshd.service :
[root@centos7 ~]# cat /usr/lib/systemd/system/sshd.service [Unit] Description=OpenSSH server daemon After=network.target sshd-keygen.service Wants=sshd-keygen.service [Service] EnvironmentFile=/etc/sysconfig/sshd ExecStart=/usr/sbin/sshd -D $OPTIONS ExecReload=/bin/kill -HUP $MAINPID KillMode=process Restart=on-failure RestartSec=42s [Install] WantedBy=multi-user.target
Dans le fichier on peut noter la présence des lignes suivantes :
- ExecStart=/usr/sbin/sshd -D $OPTIONS,
- Cette ligne définit l'exécutable à lancer,
- After=network.target sshd-keygen.service,
- Cette ligne indique les services qui devraient être démarrés avant le démarrage de sshd,
- WantedBy=multi-user.target,
- Cette ligne indique la Cible dans laquelle le service doit être démarré,
- Restart=on-failure,
- Cette ligne indique quand le service doit être re-démarré.
Système de Démarrage
Systemd utilise des Cibles d'une manière similaire à ce que SysVinit utilise des niveaux d'exécution. Pour rendre la transition plus facile, il existe des Cibles qui simulent les niveaux d'exécution de SysVinit :
- runlevel0.target,
- runlevel1.target,
- runlevel2.target,
- runlevel3.target,
- runlevel4.target,
- runlevel5.target,
- runlevel6.target.
Ceci étant dans RHEL/CentOS 7 il y principalement deux Cibles finales :
- multi-user.target qui est l'équivalent du niveau d'exécution 3,
- graphical.target qui est l'équivalent du niveau d'exécution 5.
Chaque Cible est décrite par un fichier de configuration :
[root@centos7 ~]# cat /usr/lib/systemd/system/graphical.target # This file is part of systemd. # # systemd is free software; you can redistribute it and/or modify it # under the terms of the GNU Lesser General Public License as published by # the Free Software Foundation; either version 2.1 of the License, or # (at your option) any later version. [Unit] Description=Graphical Interface Documentation=man:systemd.special(7) Requires=multi-user.target After=multi-user.target Conflicts=rescue.target Wants=display-manager.service AllowIsolate=yes [Install] Alias=default.target
Dans ce fichier on peut noter la présence des lignes suivantes :
- Requires=multi-user.target,
- Cette ligne indique que le graphical.target ne peut pas être atteint si le multi-user.target n'a pas été atteint aupréalable,
- After=multi-user.target,
- Cette ligne indique le multi-user.target doit d'abord être lancé,
- Conflicts=rescue.target,
- Cette ligne indique la Cible en conflit avec le graphical.target,
- Wants=display-manager.service,
- Cette ligne indique quel service doit être démarré.
Dernièrement, sous RHEL/CentOS 7, la Cible par défaut peut être modifiée en éditant le lien symbolique /etc/systemd/system/default.target :
[root@centos7 ~]# ls -l /etc/systemd/system/default.target lrwxrwxrwx. 1 root root 36 Mar 8 14:05 /etc/systemd/system/default.target -> /lib/systemd/system/graphical.target
La Commande systemd-analyze
Pour avoir une évaluation du temps de démarrage, il convient d'utiliser la commande suivante :
[root@centos7 ~]# systemd-analyze Startup finished in 769ms (kernel) + 4.643s (initrd) + 40.147s (userspace) = 45.560s
L'option blame de la commande systemd-analyze permet de voir le temps de démarrage de chaque Unité afin de pourvoir se concentrer sur les plus lentes :
[root@centos7 ~]# systemd-analyze blame 12.274s firewalld.service 10.302s tuned.service 9.676s accounts-daemon.service 8.875s gssproxy.service 8.860s ModemManager.service 8.598s vboxadd-x11.service 7.829s kdump.service 7.089s vboxadd.service 6.398s plymouth-quit-wait.service 5.593s NetworkManager-wait-online.service 5.379s avahi-daemon.service 5.104s abrt-ccpp.service 5.065s postfix.service 4.684s systemd-logind.service 4.385s sysstat.service 4.306s rtkit-daemon.service 3.927s systemd-udev-settle.service 3.396s ksmtuned.service 3.084s rhel-dmesg.service 2.811s libvirtd.service 2.428s chronyd.service 2.401s vboxadd-service.service 2.349s nfs-config.service 2.266s var-lib-nfs-rpc_pipefs.mount 2.229s rhel-loadmodules.service 2.104s rsyslog.service 1.357s network.service 1.283s lvm2-monitor.service 1.246s rpcbind.service 1.069s systemd-fsck-root.service 1.007s colord.service 944ms systemd-tmpfiles-setup-dev.service 872ms systemd-tmpfiles-clean.service 791ms rhel-readonly.service 780ms NetworkManager.service 743ms dmraid-activation.service 723ms gdm.service 720ms ksm.service 718ms polkit.service 716ms proc-fs-nfsd.mount 669ms auditd.service 660ms boot.mount 608ms systemd-udev-trigger.service 601ms kmod-static-nodes.service 565ms netcf-transaction.service 520ms systemd-vconsole-setup.service 497ms systemd-sysctl.service 487ms sys-kernel-debug.mount 302ms dev-disk-by\x2duuid-11a4d11d\x2d81e4\x2d46a7\x2d82e0\x2d7796cd597dc9.swap 297ms systemd-tmpfiles-setup.service 283ms dev-mqueue.mount 282ms dev-hugepages.mount 261ms rhel-import-state.service 243ms udisks2.service 239ms systemd-user-sessions.service 235ms rpc-statd-notify.service 217ms systemd-random-seed.service 173ms plymouth-read-write.service 161ms systemd-udevd.service 147ms upower.service 142ms systemd-fsck@dev-disk-by\x2duuid-e8d3bd48\x2d1386\x2d411c\x2d9675\x2d41c3f8f1a309.service 110ms plymouth-start.service 96ms sys-fs-fuse-connections.mount 82ms bluetooth.service 73ms iscsi-shutdown.service 69ms systemd-remount-fs.service 63ms systemd-hostnamed.service 53ms systemd-update-utmp.service 38ms systemd-journal-flush.service 33ms sys-kernel-config.mount 31ms systemd-update-utmp-runlevel.service lines 43-71/71 (END)
L'option critical-chain permet de voir l'enchaînement des événements qui amènent au chargement de l'Unité passée en argument :
[root@centos7 ~]# systemd-analyze critical-chain sshd.service The time after the unit is active or started is printed after the "@" character. The time the unit takes to start is printed after the "+" character. sshd.service @32.037s └─network.target @31.990s └─network.service @30.621s +1.357s └─NetworkManager.service @24.242s +780ms └─firewalld.service @11.954s +12.274s └─basic.target @11.937s └─sockets.target @11.937s └─dbus.socket @11.936s └─sysinit.target @11.784s └─systemd-update-utmp.service @11.726s +53ms └─auditd.service @11.051s +669ms └─systemd-tmpfiles-setup.service @10.734s +297ms └─rhel-import-state.service @10.470s +261ms └─local-fs.target @10.464s └─boot.mount @9.798s +660ms └─systemd-fsck@dev-disk-by\x2duuid-e8d3bd48\x2d1386\x2d411c\x2d9675\x2d41c3f8f1a309.service @9.654s +142ms └─dev-disk-by\x2duuid-e8d3bd48\x2d1386\x2d411c\x2d9675\x2d41c3f8f1a309.device @9.650s
Options de la Commande
Les options de la commande systemd-analyze sont :
[root@centos7 ~]# systemd-analyze --help systemd-analyze [OPTIONS...] {COMMAND} ... Process systemd profiling information -h --help Show this help --version Show package version --system Connect to system manager --user Connect to user service manager --order When generating a dependency graph, show only order --require When generating a dependency graph, show only requirement --from-pattern=GLOB, --to-pattern=GLOB When generating a dependency graph, filter only origins or destinations, respectively --fuzz=TIMESPAN When printing the tree of the critical chain, print also services, which finished TIMESPAN earlier, than the latest in the branch. The unit of TIMESPAN is seconds unless specified with a different unit, i.e. 50ms --no-pager Do not pipe output into a pager Commands: time Print time spent in the kernel before reaching userspace blame Print list of running units ordered by time to init critical-chain Print a tree of the time critical chain of units plot Output SVG graphic showing service initialization dot Output dependency graph in dot(1) format set-log-level LEVEL Set logging threshold for systemd dump Output state serialization of service manager
Gestion des Services
Consulter le statut d'un service
Pour obtenir le détail sur un service donné, il convient d'utiliser la commande systemctl :
[root@centos7 ~]# systemctl status sshd.service sshd.service - OpenSSH server daemon Loaded: loaded (/usr/lib/systemd/system/sshd.service; enabled) Active: active (running) since Thu 2015-06-11 11:01:52 CEST; 2h 45min ago Main PID: 1212 (sshd) CGroup: /system.slice/sshd.service └─1212 /usr/sbin/sshd -D Jun 11 11:01:52 centos7.fenestros.loc systemd[1]: Started OpenSSH server daemon. Jun 11 11:01:53 centos7.fenestros.loc sshd[1212]: Server listening on 0.0.0.0 port 22. Jun 11 11:01:53 centos7.fenestros.loc sshd[1212]: Server listening on :: port 22.
Arrêter un service
Pour arrêter une Unité de service, utilisez la commande suivante :
[root@centos7 ~]# systemctl stop sshd.service [root@centos7 ~]# systemctl status sshd.service sshd.service - OpenSSH server daemon Loaded: loaded (/usr/lib/systemd/system/sshd.service; enabled) Active: inactive (dead) since Thu 2015-06-11 13:58:59 CEST; 16s ago Process: 1212 ExecStart=/usr/sbin/sshd -D $OPTIONS (code=exited, status=0/SUCCESS) Main PID: 1212 (code=exited, status=0/SUCCESS) Jun 11 11:01:52 centos7.fenestros.loc systemd[1]: Started OpenSSH server daemon. Jun 11 11:01:53 centos7.fenestros.loc sshd[1212]: Server listening on 0.0.0.0 port 22. Jun 11 11:01:53 centos7.fenestros.loc sshd[1212]: Server listening on :: port 22. Jun 11 13:58:59 centos7.fenestros.loc systemd[1]: Stopping OpenSSH server daemon... Jun 11 13:58:59 centos7.fenestros.loc sshd[1212]: Received signal 15; terminating. Jun 11 13:58:59 centos7.fenestros.loc systemd[1]: Stopped OpenSSH server daemon.
Démarrer un service
Pour démarrer un service, utilisez la commande suivante :
[root@centos7 ~]# systemctl start ssh.service [root@centos7 ~]# systemctl status sshd.service sshd.service - OpenSSH server daemon Loaded: loaded (/usr/lib/systemd/system/sshd.service; enabled) Active: active (running) since Thu 2015-06-11 14:00:17 CEST; 6s ago Main PID: 6624 (sshd) CGroup: /system.slice/sshd.service └─6624 /usr/sbin/sshd -D Jun 11 14:00:17 centos7.fenestros.loc systemd[1]: Starting OpenSSH server daemon... Jun 11 14:00:17 centos7.fenestros.loc systemd[1]: Started OpenSSH server daemon. Jun 11 14:00:17 centos7.fenestros.loc sshd[6624]: Server listening on 0.0.0.0 port 22. Jun 11 14:00:17 centos7.fenestros.loc sshd[6624]: Server listening on :: port 22.
Désactiver un service
Pour désactiver un service au prochain démarrage du système, utilisez l'option disable :
[root@centos7 ~]# systemctl disable sshd.service rm '/etc/systemd/system/multi-user.target.wants/sshd.service' [root@centos7 ~]# systemctl status sshd.service sshd.service - OpenSSH server daemon Loaded: loaded (/usr/lib/systemd/system/sshd.service; disabled) Active: active (running) since Thu 2015-06-11 14:00:17 CEST; 1min 59s ago Main PID: 6624 (sshd) CGroup: /system.slice/sshd.service └─6624 /usr/sbin/sshd -D Jun 11 14:00:17 centos7.fenestros.loc systemd[1]: Starting OpenSSH server daemon... Jun 11 14:00:17 centos7.fenestros.loc systemd[1]: Started OpenSSH server daemon. Jun 11 14:00:17 centos7.fenestros.loc sshd[6624]: Server listening on 0.0.0.0 port 22. Jun 11 14:00:17 centos7.fenestros.loc sshd[6624]: Server listening on :: port 22.
Activer un service
Pour activer un service au prochain démarrage du système, utilisez l'option enable :
[root@centos7 ~]# systemctl enable sshd.service ln -s '/usr/lib/systemd/system/sshd.service' '/etc/systemd/system/multi-user.target.wants/sshd.service' [root@centos7 ~]# systemctl status sshd.service sshd.service - OpenSSH server daemon Loaded: loaded (/usr/lib/systemd/system/sshd.service; enabled) Active: active (running) since Thu 2015-06-11 14:00:17 CEST; 3min 27s ago Main PID: 6624 (sshd) CGroup: /system.slice/sshd.service └─6624 /usr/sbin/sshd -D Jun 11 14:00:17 centos7.fenestros.loc systemd[1]: Starting OpenSSH server daemon... Jun 11 14:00:17 centos7.fenestros.loc systemd[1]: Started OpenSSH server daemon. Jun 11 14:00:17 centos7.fenestros.loc sshd[6624]: Server listening on 0.0.0.0 port 22. Jun 11 14:00:17 centos7.fenestros.loc sshd[6624]: Server listening on :: port 22.
Gestion des Ressources
Groupes de Contrôle
Les Groupes de Contrôles (Control Groups) aussi appelés CGroups, sont une nouvelle façon sous RHEL/CentOS 7 de contrôler et de limiter des ressources. Les groupes de contrôle permettent l'allocation de ressources, même d'une manière dynamique pendant que le système fonctionne, telles le temps processeur, la mémoire système, la bande réseau, ou une combinaison de ces ressources parmi des groupes de tâches (processus) définis par l'utilisateur et exécutés sur un système.
Les groupes de contrôle sont organisés de manière hiérarchique, comme des processus. Par contre, la comparaison entre les deux démontre que tandis que les processus se trouvent dans une arborescence unique descandant tous du processus init et héritant de l'environnement de leurs parents, les contrôles groupes peuvent être multiples donnant lieu à des arborescences ou hiérarchies multiples qui héritent de certains attributs de leurs groupes de contrôle parents.
Ces hiérarchies multiples et séparés sont necéssaires parce que chaque hiérarchie est attaché à un ou plusieurs sous-système(s) aussi appelés des Contrôleurs de Ressources ou simplement des Contrôleurs. Les contrôleurs disponibles sous RHEl/CentOS 7 sont :
- blkio - utilisé pour établir des limites sur l'accès des entrées/sorties à partir et depuis des périphériques blocs,
- cpu - utilisé pour fournir aux tâches des groupes de contrôle accès au CPU grâce au planificateur,
- cpuacct - utilisé pour produire des rapports automatiques sur les ressources CPU utilisées par les tâches dans un groupe de contrôle,
- cpuset - utilisé pour assigner des CPU individuels sur un système multicoeur et des noeuds de mémoire à des tâches dans un groupe de contrôle,
- devices - utilisé pour autoriser ou pour refuser l'accès des tâches aux périphériques dans un groupe de contrôle,
- freezer - utilisé pour suspendre ou pour réactiver les tâches dans un groupe de contrôle,
- memory - utilisé pour établir les limites d'utilisation de la mémoire par les tâches d'un groupe de contrôle et pour génèrer des rapports automatiques sur les ressources rmémoire utilisées par ces tâches,
- net_cls - utilisé pour repèrer les paquets réseau avec un identifiant de classe (classid) afin de permettre au contrôleur de trafic Linux, tc, d'identifier les paquets provenant d'une tâche particulière d'un groupe de contrôle.
- perf_event - utilisé pour permettre le monitoring des CGroups avec l'outil perf,
- hugetlb - utilisé pour limiter des ressources sur des pages de mémoire virtuelle de grande taille.
Pour visualiser les hiérarchies, il convient d'utiliser la commande suivante :
[root@centos7 ~]# lssubsys -am cpuset /sys/fs/cgroup/cpuset cpu,cpuacct /sys/fs/cgroup/cpu,cpuacct memory /sys/fs/cgroup/memory devices /sys/fs/cgroup/devices freezer /sys/fs/cgroup/freezer net_cls /sys/fs/cgroup/net_cls blkio /sys/fs/cgroup/blkio perf_event /sys/fs/cgroup/perf_event hugetlb /sys/fs/cgroup/hugetlb
Sous RHEL/CentOS 7, Systemd organise les processus dans chaque CGroup. Par exemple tous les processus démarrés par le serveur Apache se trouveront dans le même CGroup, y compris les scripts CGI. Ceci implique que la gestion des ressources en utilisant des hiérarchies est couplé avec l'arborescence des unités de Systemd.
En haut de l'arborescence des unités de Systemd se trouve la tranche root - -.slice, dont dépend :
- le system.slice - l'emplacement des services système,
- le user.slice - l'emplacement des sessions des utilisateurs,
- le machine.slice - l'emplacement des machines virtuelles et conteneurs.
En dessous des tranches peuvent se trouver :
- des scopes - des processus crées par fork,
- des services - des processus créés par une Unité.
Les slices peuvent être visualisés avec la commande suivante :
[root@centos7 ~]# systemctl list-units --type=slice UNIT LOAD ACTIVE SUB DESCRIPTION -.slice loaded active active Root Slice system-getty.slice loaded active active system-getty.slice system.slice loaded active active System Slice user-0.slice loaded active active user-0.slice user-1000.slice loaded active active user-1000.slice user.slice loaded active active User and Session Slice LOAD = Reflects whether the unit definition was properly loaded. ACTIVE = The high-level unit activation state, i.e. generalization of SUB. SUB = The low-level unit activation state, values depend on unit type. 6 loaded units listed. Pass --all to see loaded but inactive units, too. To show all installed unit files use 'systemctl list-unit-files'.
L'arborescence des unités de Systemd est la suivante :
[root@centos7 ~]# systemd-cgls ├─1 /usr/lib/systemd/systemd --switched-root --system --deserialize 21 ├─user.slice │ └─user-1000.slice │ └─session-2.scope │ ├─ 5577 sshd: trainee [priv] │ ├─ 6004 sshd: trainee@pts/0 │ ├─ 6167 -bash │ ├─ 6217 su - │ ├─ 6245 -bash │ ├─13457 systemd-cgls │ └─13459 systemd-cgls └─system.slice ├─upower.service │ └─3478 /usr/libexec/upowerd ├─polkit.service │ └─822 /usr/lib/polkit-1/polkitd --no-debug ├─wpa_supplicant.service │ └─821 /usr/sbin/wpa_supplicant -u -f /var/log/wpa_supplicant.log -c /etc/wpa_supplicant/wpa_supplicant.conf -u -f /var/log/wpa_supplicant.log -P /var/run/wpa_suppli ├─crond.service │ └─793 /usr/sbin/crond -n ├─atd.service │ └─789 /usr/sbin/atd -f ├─tuned.service │ └─762 /usr/bin/python -Es /usr/sbin/tuned -l -P ├─simplegateway.service │ ├─ 760 /bin/sh /opt/JWrapper-Remote Access/JWAppsSharedConfig/SimpleGatewayService/service_launch.sh │ ├─ 3202 /opt/JWrapper-Remote Access/JWrapper-Linux64JRE-00028603412-complete/bin/Remote Access -cp /opt/JWrapper-Remote Access/JWrapper-JWrapper-00041369502-complet │ ├─ 3384 /opt/JWrapper-Remote Access/JWrapper-Linux64JRE-00028603412-complete/bin/Remote Access Monitoring -cp /opt/JWrapper-Remote Access/JWrapper-JWrapper-00041369 │ ├─13111 /bin/sh /opt/JWrapper-Remote Access/JWAppsSharedConfig/SimpleGatewayService/service_launch.sh │ └─13458 sleep 1 ├─postfix.service │ ├─1810 /usr/libexec/postfix/master -w │ ├─1833 pickup -l -t unix -u │ └─1834 qmgr -l -t unix -u ├─cups.service │ └─756 /usr/sbin/cupsd -f ├─sshd.service │ └─755 /usr/sbin/sshd -D ├─docker.service │ ├─750 /bin/sh -c /usr/bin/docker-current daemon $OPTIONS $DOCKER_STORAGE_OPTIONS $DOCKER_NETWORK_OPTIONS $ADD_REGISTRY $ │ ├─753 /usr/bin/docker-current daemon --selinux-enabled │ └─754 /usr/bin/forward-journald -tag docker ├─NetworkManager.service │ ├─ 678 /usr/sbin/NetworkManager --no-daemon │ └─1968 /sbin/dhclient -d -q -sf /usr/libexec/nm-dhcp-helper -pf /var/run/dhclient-enp0s3.pid -lf /var/lib/NetworkManager/dhclient-3b386b69-23e8-4940-80e0-e16d346d43 ├─abrt-xorg.service │ └─586 /usr/bin/abrt-watch-log -F Backtrace /var/log/Xorg.0.log -- /usr/bin/abrt-dump-xorg -xD ├─abrt-oops.service │ └─582 /usr/bin/abrt-watch-log -F BUG: WARNING: at WARNING: CPU: INFO: possible recursive locking detected ernel BUG at list_del corruption list_add corruption do_IR ├─abrtd.service │ └─581 /usr/sbin/abrtd -d -s ├─dbus.service │ └─513 /bin/dbus-daemon --system --address=systemd: --nofork --nopidfile --systemd-activation ├─chronyd.service │ └─525 /usr/sbin/chronyd ├─firewalld.service │ └─510 /usr/bin/python -Es /usr/sbin/firewalld --nofork --nopid ├─avahi-daemon.service │ ├─507 avahi-daemon: running [centos7.local │ └─530 avahi-daemon: chroot helpe ├─ModemManager.service │ └─506 /usr/sbin/ModemManager ├─smartd.service │ └─505 /usr/sbin/smartd -n -q never ├─libstoragemgmt.service │ └─494 /usr/bin/lsmd -d ├─gssproxy.service │ └─517 /usr/sbin/gssproxy -D ├─systemd-logind.service │ └─492 /usr/lib/systemd/systemd-logind ├─rsyslog.service │ └─488 /usr/sbin/rsyslogd -n ├─alsa-state.service │ └─487 /usr/sbin/alsactl -s -n 19 -c -E ALSA_CONFIG_PATH=/etc/alsa/alsactl.conf --initfile=/lib/alsa/init/00main rdaemon ├─auditd.service │ ├─463 /sbin/auditd -n │ ├─473 /sbin/audispd │ └─475 /usr/sbin/sedispatch ├─systemd-udevd.service │ └─381 /usr/lib/systemd/systemd-udevd ├─lvm2-lvmetad.service │ └─378 /usr/sbin/lvmetad -f ├─systemd-journald.service │ └─349 /usr/lib/systemd/systemd-journald └─system-getty.slice └─getty@tty1.service └─798 /sbin/agetty --noclear tty1 linux
En utilisant Systemd, plusieurs ressources peuvent être limitées :
- CPUShares - par défault 1024,
- MemoryLimit - limite exprimée en Mo ou en Go. Pas de valeur par défaut,
- BlockIOWeight - valeur entre 10 et 1000. Pas de valeur par défaut,
- StartupCPUShares - comme CPUShares mais uniquement appliqué pendant le démarrage,
- StartupBlockIOWeight - comme BlockIOWeight mais uniquement appliqué pendant le démarrage,
- CPUQuota - utilisé pour limiter le temps CPU, même quand le système ne fait rien.
Important : Consultez le manuel systemd.resource-control(5) pour voir les paramètres CGroup qui peuvent être passés à systemctl.
LAB #4 - Travailler avec les cgroups sous RHEL/CentOS 7
Créez un service appelé foo :
[root@centos7 ~]# vi /etc/systemd/system/foo.service [root@centos7 ~]# cat /etc/systemd/system/foo.service [Unit] Description=The foo service that does nothing useful After=remote-fs.target nss-lookup.target [Service] ExecStart=/usr/bin/sha1sum /dev/zero ExecStop=/bin/kill -WINCH ${MAINPID} [Install] WantedBy=multi-user.target
Consultez le statut du service foo :
[root@centos7 ~]# systemctl status foo.service ● foo.service - The foo service that does nothing useful Loaded: loaded (/etc/systemd/system/foo.service; disabled; vendor preset: disabled) Active: inactive (dead)
Démarrez et actives le service :
[root@centos7 ~]# systemctl start foo.service [root@centos7 ~]# systemctl enable foo.service Created symlink from /etc/systemd/system/multi-user.target.wants/foo.service to /etc/systemd/system/foo.service. [root@centos7 ~]# systemctl status foo.service ● foo.service - The foo service that does nothing useful Loaded: loaded (/etc/systemd/system/foo.service; enabled; vendor preset: disabled) Active: active (running) since Wed 2016-06-15 13:13:17 CEST; 24s ago Main PID: 22256 (sha1sum) CGroup: /system.slice/foo.service └─22256 /usr/bin/sha1sum /dev/zero Jun 15 13:13:17 centos7.fenestros.loc systemd[1]: Started The foo service that does nothing useful. Jun 15 13:13:17 centos7.fenestros.loc systemd[1]: Starting The foo service that does nothing useful...
Notez que notre service a été placé dans la tranche system.slice :
[root@centos7 ~]# systemctl show -p Slice foo.service Slice=system.slice
Utilisez ps pour voir le pourcentage du CPU utilisé par ce service :
[root@centos7 ~]# ps -p 22256 -o pid,comm,cputime,%cpu PID COMMAND TIME %CPU 22256 sha1sum 00:00:46 94.8
Fixez maintenant la valeur de CPUShares pour ce service à 250 :
[root@centos7 ~]# systemctl set-property foo.service CPUShares=250
Cette limite est permenante et a été inscrite dans le fichier 50-CPUShares.conf qui se trouve dans le répertoire /etc/systemd/system/foo.service.d :
[root@centos7 ~]# ls /etc/systemd/system/foo.service.d 50-CPUShares.conf [root@centos7 ~]# cat /etc/systemd/system/foo.service.d/50-CPUShares.conf [Service] CPUShares=250
Important : En utilisant l'option –runtime avec la commande sysetmctl set-property il est possible d'appliquer la limite d'une manière provisoire.
Appliquez cette modification en rechargeant systemd et en re-démarrant le service foo.service :
[root@centos7 ~]# systemctl daemon-reload [root@centos7 ~]# systemctl restart foo.service
Vérifiez maintenant que la limite a été appliquée :
[root@centos7 ~]# cat /sys/fs/cgroup/cpu/system.slice/foo.service/cpu.shares 250 [root@centos7 ~]# systemctl show -p MainPID foo.service MainPID=27233 [root@centos7 ~]# cat /proc/27233/cgroup | grep foo 4:cpuacct,cpu:/system.slice/foo.service 1:name=systemd:/system.slice/foo.service
Créez maintenant le service bar :
[root@centos7 ~]# vi /etc/systemd/system/bar.service [root@centos7 ~]# cat /etc/systemd/system/bar.service [Unit] Description=The bar service that does nothing useful After=remote-fs.target nss-lookup.target [Service] ExecStart=/usr/bin/md5sum /dev/zero ExecStop=/bin/kill -WINCH ${MAINPID} [Install] WantedBy=multi-user.target
Fixez maintenant la limite de CPUShares pour ce service à 2000 :
[root@centos7 ~]# systemctl set-property bar.service CPUShares=2000 Failed to set unit properties on bar.service: Unit bar.service is not loaded. [root@centos7 ~]# systemctl start bar.service [root@centos7 ~]# systemctl enable bar.service Created symlink from /etc/systemd/system/multi-user.target.wants/bar.service to /etc/systemd/system/bar.service. [root@centos7 ~]# systemctl set-property bar.service CPUShares=2000
Appliquez la limite :
[root@centos7 ~]# systemctl daemon-reload [root@centos7 ~]# systemctl restart bar.service [root@centos7 ~]# systemctl status bar.service ● bar.service - The bar service that does nothing useful Loaded: loaded (/etc/systemd/system/bar.service; enabled; vendor preset: disabled) Drop-In: /etc/systemd/system/bar.service.d └─50-CPUShares.conf Active: active (running) since Wed 2016-06-15 13:37:54 CEST; 9s ago Main PID: 29515 (md5sum) CGroup: /system.slice/bar.service └─29515 /usr/bin/md5sum /dev/zero Jun 15 13:37:54 centos7.fenestros.loc systemd[1]: Started The bar service that does nothing useful. Jun 15 13:37:54 centos7.fenestros.loc systemd[1]: Starting The bar service that does nothing useful...
Re-démarrer les services foo et bar :
[root@centos7 ~]# systemctl restart foo.service [root@centos7 ~]# systemctl status foo.service ● foo.service - The foo service that does nothing useful Loaded: loaded (/etc/systemd/system/foo.service; enabled; vendor preset: disabled) Drop-In: /etc/systemd/system/foo.service.d └─50-CPUShares.conf Active: active (running) since Wed 2016-06-15 13:50:08 CEST; 11s ago Main PID: 652 (sha1sum) CGroup: /system.slice/foo.service └─652 /usr/bin/sha1sum /dev/zero Jun 15 13:50:08 centos7.fenestros.loc systemd[1]: Started The foo service that does nothing useful. Jun 15 13:50:08 centos7.fenestros.loc systemd[1]: Starting The foo service that does nothing useful... [root@centos7 ~]# systemctl restart bar.service [root@centos7 ~]# systemctl status bar.service ● bar.service - The bar service that does nothing useful Loaded: loaded (/etc/systemd/system/bar.service; enabled; vendor preset: disabled) Drop-In: /etc/systemd/system/bar.service.d └─50-CPUShares.conf Active: active (running) since Wed 2016-06-15 13:50:38 CEST; 12s ago Main PID: 810 (md5sum) CGroup: /system.slice/bar.service └─810 /usr/bin/md5sum /dev/zero Jun 15 13:50:38 centos7.fenestros.loc systemd[1]: Started The bar service that does nothing useful. Jun 15 13:50:38 centos7.fenestros.loc systemd[1]: Starting The bar service that does nothing useful...
Utilisez ps pour voir le pourcentage du CPU utilisé par les deux services :
[root@centos7 ~]# ps -p 652,810 -o pid,comm,cputime,%cpu PID COMMAND TIME %CPU 652 sha1sum 00:00:08 9.7 810 md5sum 00:00:45 78.9
Configuration du Réseau
RHEL/CentOS 7 utilise exclusivement Network Manager pour gérer le réseau. Network Manager est composé de deux éléments :
- un service qui gère les connexions réseaux et rapporte leurs états,
- des front-ends qui passent par un API de configuration du service.
Important : Notez qu'avec cette version de NetworkManager, IPv6 est activée par défaut.
Le service NetworkManager doit toujours être lancé :
[root@centos7 ~]# systemctl status NetworkManager.service ● NetworkManager.service - Network Manager Loaded: loaded (/usr/lib/systemd/system/NetworkManager.service; enabled; vendor preset: enabled) Active: active (running) since Sun 2016-08-07 09:18:20 CEST; 1 day 1h ago Main PID: 673 (NetworkManager) CGroup: /system.slice/NetworkManager.service ├─ 673 /usr/sbin/NetworkManager --no-daemon └─2673 /sbin/dhclient -d -q -sf /usr/libexec/nm-dhcp-helper -pf /var/run/dhclient-enp0s3.pid -lf /var/lib/NetworkManager/dhclient-45b701c1-0a21-4d76-a795-... Aug 08 11:03:55 centos7.fenestros.loc NetworkManager[673]: <info> nameserver '8.8.8.8' Aug 08 11:03:55 centos7.fenestros.loc NetworkManager[673]: <info> (enp0s3): DHCPv4 state changed unknown -> bound Aug 08 11:03:55 centos7.fenestros.loc NetworkManager[673]: <info> (enp0s3): device state change: ip-config -> ip-check (reason 'none') [70 80 0] Aug 08 11:03:55 centos7.fenestros.loc NetworkManager[673]: <info> (enp0s3): device state change: ip-check -> secondaries (reason 'none') [80 90 0] Aug 08 11:03:55 centos7.fenestros.loc NetworkManager[673]: <info> (enp0s3): device state change: secondaries -> activated (reason 'none') [90 100 0] Aug 08 11:03:55 centos7.fenestros.loc NetworkManager[673]: <info> NetworkManager state is now CONNECTED_LOCAL Aug 08 11:03:55 centos7.fenestros.loc NetworkManager[673]: <info> NetworkManager state is now CONNECTED_GLOBAL Aug 08 11:03:55 centos7.fenestros.loc NetworkManager[673]: <info> Policy set 'Wired connection 1' (enp0s3) as default for IPv4 routing and DNS. Aug 08 11:03:55 centos7.fenestros.loc NetworkManager[673]: <info> (enp0s3): Activation: successful, device activated. Aug 08 11:03:55 centos7.fenestros.loc dhclient[2673]: bound to 10.0.2.15 -- renewal in 39589 seconds.
La Commande nmcli
La commande nmcli (Network Manager Command Line Interface) est utilisée pour configurer NetworkManager.
Les options et les sous-commandes peuvent être consultées en utilisant les commandes suivantes :
[root@centos7 ~]# nmcli help Usage: nmcli [OPTIONS] OBJECT { COMMAND | help } OPTIONS -t[erse] terse output -p[retty] pretty output -m[ode] tabular|multiline output mode -f[ields] <field1,field2,...>|all|common specify fields to output -e[scape] yes|no escape columns separators in values -n[ocheck] don't check nmcli and NetworkManager versions -a[sk] ask for missing parameters -w[ait] <seconds> set timeout waiting for finishing operations -v[ersion] show program version -h[elp] print this help OBJECT g[eneral] NetworkManager's general status and operations n[etworking] overall networking control r[adio] NetworkManager radio switches c[onnection] NetworkManager's connections d[evice] devices managed by NetworkManager a[gent] NetworkManager secret agent or polkit agent [root@centos7 ~]# nmcli g help Usage: nmcli general { COMMAND | help } COMMAND := { status | hostname | permissions | logging } status hostname [<hostname>] permissions logging [level <log level>] [domains <log domains>] [root@centos7 ~]# nmcli g status help Usage: nmcli general status { help } Show overall status of NetworkManager. 'status' is the default action, which means 'nmcli gen' calls 'nmcli gen status'
Connections et Profils
NetworkManager inclus la notion de connections ou profils permettant des configurations différentes en fonction de la localisation. Pour voir les connections actuelles, utilisez la commande nmcli c avec la sous-commande show :
[root@centos7 ~]# nmcli c show NAME UUID TYPE DEVICE Wired connection 1 45b701c1-0a21-4d76-a795-2f2bcba86955 802-3-ethernet enp0s3
Comme on peut constater ici, il n'existe pour le moment, qu'un seul profil.
Créez donc un profil IP fixe rattaché au périphérique enp0s3 :
[root@centos7 ~]# nmcli connection add con-name ip_fixe ifname enp0s3 type ethernet ip4 10.0.2.16/24 gw4 10.0.2.2 Connection 'ip_fixe' (fb3a11d9-4e03-4032-b26e-09d1195d2bcd) successfully added.
Constatez sa présence :
[root@centos7 ~]# nmcli c show NAME UUID TYPE DEVICE ip_fixe fb3a11d9-4e03-4032-b26e-09d1195d2bcd 802-3-ethernet -- Wired connection 1 45b701c1-0a21-4d76-a795-2f2bcba86955 802-3-ethernet enp0s3
Notez que la sortie n'indique pas que le profil ip_fixe soit associé au periphérique enp0s3 car le profil ip_fixe n'est pas activé :
[root@centos7 ~]# nmcli d show GENERAL.DEVICE: enp0s3 GENERAL.TYPE: ethernet GENERAL.HWADDR: 08:00:27:03:97:DD GENERAL.MTU: 1500 GENERAL.STATE: 100 (connected) GENERAL.CONNECTION: Wired connection 1 GENERAL.CON-PATH: /org/freedesktop/NetworkManager/ActiveConnection/2 WIRED-PROPERTIES.CARRIER: on IP4.ADDRESS[1]: 10.0.2.15/24 IP4.GATEWAY: 10.0.2.2 IP4.DNS[1]: 8.8.8.8 IP6.ADDRESS[1]: fe80::a00:27ff:fe03:97dd/64 IP6.GATEWAY: GENERAL.DEVICE: lo GENERAL.TYPE: loopback GENERAL.HWADDR: 00:00:00:00:00:00 GENERAL.MTU: 65536 GENERAL.STATE: 10 (unmanaged) GENERAL.CONNECTION: -- GENERAL.CON-PATH: -- IP4.ADDRESS[1]: 127.0.0.1/8 IP4.GATEWAY: IP6.ADDRESS[1]: ::1/128 IP6.GATEWAY:
Pour activer le profil ip_fixe, utilisez la commande suivante :
[root@centos7 ~]# nmcli connection up ip_fixe
Le profil ip_fixe est maintenant activé tandis que le profil enp0s3 a été désactivé :
[root@centos7 ~]# nmcli c show NAME UUID TYPE DEVICE ip_fixe fb3a11d9-4e03-4032-b26e-09d1195d2bcd 802-3-ethernet enp0s3 Wired connection 1 45b701c1-0a21-4d76-a795-2f2bcba86955 802-3-ethernet -- [root@centos7 ~]# nmcli d show GENERAL.DEVICE: enp0s3 GENERAL.TYPE: ethernet GENERAL.HWADDR: 08:00:27:03:97:DD GENERAL.MTU: 1500 GENERAL.STATE: 100 (connected) GENERAL.CONNECTION: ip_fixe GENERAL.CON-PATH: /org/freedesktop/NetworkManager/ActiveConnection/3 WIRED-PROPERTIES.CARRIER: on IP4.ADDRESS[1]: 10.0.2.16/24 IP4.GATEWAY: 10.0.2.2 IP6.ADDRESS[1]: fe80::a00:27ff:fe03:97dd/64 IP6.GATEWAY: GENERAL.DEVICE: lo GENERAL.TYPE: loopback GENERAL.HWADDR: 00:00:00:00:00:00 GENERAL.MTU: 65536 GENERAL.STATE: 10 (unmanaged) GENERAL.CONNECTION: -- GENERAL.CON-PATH: -- IP4.ADDRESS[1]: 127.0.0.1/8 IP4.GATEWAY: IP6.ADDRESS[1]: ::1/128 IP6.GATEWAY:
Pour consulter les paramètres d'un profil, utilisez la commande suivante :
[root@centos7 ~]# nmcli -p connection show "Wired connection 1" =============================================================================== Connection profile details (Wired connection 1) =============================================================================== connection.id: Wired connection 1 connection.uuid: 45b701c1-0a21-4d76-a795-2f2bcba86955 connection.interface-name: -- connection.type: 802-3-ethernet connection.autoconnect: yes connection.autoconnect-priority: 0 connection.timestamp: 1470647387 connection.read-only: no connection.permissions: connection.zone: -- connection.master: -- connection.slave-type: -- connection.autoconnect-slaves: -1 (default) connection.secondaries: connection.gateway-ping-timeout: 0 connection.metered: unknown ------------------------------------------------------------------------------- 802-3-ethernet.port: -- 802-3-ethernet.speed: 0 802-3-ethernet.duplex: -- 802-3-ethernet.auto-negotiate: yes 802-3-ethernet.mac-address: 08:00:27:03:97:DD 802-3-ethernet.cloned-mac-address: -- 802-3-ethernet.mac-address-blacklist: 802-3-ethernet.mtu: auto 802-3-ethernet.s390-subchannels: 802-3-ethernet.s390-nettype: -- 802-3-ethernet.s390-options: 802-3-ethernet.wake-on-lan: 1 (default) 802-3-ethernet.wake-on-lan-password: -- ------------------------------------------------------------------------------- ipv4.method: auto ipv4.dns: ipv4.dns-search: ipv4.addresses: ipv4.gateway: -- ipv4.routes: ipv4.route-metric: -1 ipv4.ignore-auto-routes: no ipv4.ignore-auto-dns: no ipv4.dhcp-client-id: -- ipv4.dhcp-send-hostname: yes ipv4.dhcp-hostname: -- ipv4.never-default: no ipv4.may-fail: yes ------------------------------------------------------------------------------- ipv6.method: auto ipv6.dns: ipv6.dns-search: ipv6.addresses: ipv6.gateway: -- ipv6.routes: ipv6.route-metric: -1 ipv6.ignore-auto-routes: no ipv6.ignore-auto-dns: no ipv6.never-default: no ipv6.may-fail: yes ipv6.ip6-privacy: -1 (unknown) ipv6.dhcp-send-hostname: yes ipv6.dhcp-hostname: -- ------------------------------------------------------------------------------- [root@centos7 ~]# nmcli -p connection show ip_fixe =============================================================================== Connection profile details (ip_fixe) =============================================================================== connection.id: ip_fixe connection.uuid: fb3a11d9-4e03-4032-b26e-09d1195d2bcd connection.interface-name: enp0s3 connection.type: 802-3-ethernet connection.autoconnect: yes connection.autoconnect-priority: 0 connection.timestamp: 1470647577 connection.read-only: no connection.permissions: connection.zone: -- connection.master: -- connection.slave-type: -- connection.autoconnect-slaves: -1 (default) connection.secondaries: connection.gateway-ping-timeout: 0 connection.metered: unknown ------------------------------------------------------------------------------- 802-3-ethernet.port: -- 802-3-ethernet.speed: 0 802-3-ethernet.duplex: -- 802-3-ethernet.auto-negotiate: yes 802-3-ethernet.mac-address: -- 802-3-ethernet.cloned-mac-address: -- 802-3-ethernet.mac-address-blacklist: 802-3-ethernet.mtu: auto 802-3-ethernet.s390-subchannels: 802-3-ethernet.s390-nettype: -- 802-3-ethernet.s390-options: 802-3-ethernet.wake-on-lan: 1 (default) 802-3-ethernet.wake-on-lan-password: -- ------------------------------------------------------------------------------- ipv4.method: manual ipv4.dns: ipv4.dns-search: ipv4.addresses: 10.0.2.16/24 ipv4.gateway: 10.0.2.2 ipv4.routes: ipv4.route-metric: -1 ipv4.ignore-auto-routes: no ipv4.ignore-auto-dns: no ipv4.dhcp-client-id: -- ipv4.dhcp-send-hostname: yes ipv4.dhcp-hostname: -- ipv4.never-default: no ipv4.may-fail: yes ------------------------------------------------------------------------------- ipv6.method: auto ipv6.dns: ipv6.dns-search: ipv6.addresses: ipv6.gateway: -- ipv6.routes: ipv6.route-metric: -1 ipv6.ignore-auto-routes: no ipv6.ignore-auto-dns: no ipv6.never-default: no ipv6.may-fail: yes ipv6.ip6-privacy: -1 (unknown) ipv6.dhcp-send-hostname: yes ipv6.dhcp-hostname: -- ------------------------------------------------------------------------------- =============================================================================== Activate connection details (fb3a11d9-4e03-4032-b26e-09d1195d2bcd) =============================================================================== GENERAL.NAME: ip_fixe GENERAL.UUID: fb3a11d9-4e03-4032-b26e-09d1195d2bcd GENERAL.DEVICES: enp0s3 GENERAL.STATE: activated GENERAL.DEFAULT: yes GENERAL.DEFAULT6: no GENERAL.VPN: no GENERAL.ZONE: -- GENERAL.DBUS-PATH: /org/freedesktop/NetworkManager/ActiveConnection/3 GENERAL.CON-PATH: /org/freedesktop/NetworkManager/Settings/1 GENERAL.SPEC-OBJECT: / GENERAL.MASTER-PATH: -- ------------------------------------------------------------------------------- IP4.ADDRESS[1]: 10.0.2.16/24 IP4.GATEWAY: 10.0.2.2 ------------------------------------------------------------------------------- IP6.ADDRESS[1]: fe80::a00:27ff:fe03:97dd/64 IP6.GATEWAY: -------------------------------------------------------------------------------
Pour consulter la liste profils associés à un périphérique, utilisez la commande suivante :
[root@centos7 ~]# nmcli -f CONNECTIONS device show enp0s3 CONNECTIONS.AVAILABLE-CONNECTION-PATHS: /org/freedesktop/NetworkManager/Settings/{0,1} CONNECTIONS.AVAILABLE-CONNECTIONS[1]: 45b701c1-0a21-4d76-a795-2f2bcba86955 | Wired connection 1 CONNECTIONS.AVAILABLE-CONNECTIONS[2]: fb3a11d9-4e03-4032-b26e-09d1195d2bcd | ip_fixe
Les fichiers de configuration pour le periphérique enp0s3 se trouvent dans le répertoire /etc/sysconfig/network-scripts/ :
[root@centos7 ~]# ls -l /etc/sysconfig/network-scripts/ | grep ifcfg -rw-r--r--. 1 root root 296 Aug 8 11:08 ifcfg-ip_fixe -rw-r--r--. 1 root root 254 Sep 16 2015 ifcfg-lo
L'étude du fichier /etc/sysconfig/network-scripts/ifcfg-ip_fixe démontre l'abscence de directives concernant les DNS :
[root@centos7 ~]# cat /etc/sysconfig/network-scripts/ifcfg-ip_fixe TYPE=Ethernet BOOTPROTO=none IPADDR=10.0.2.16 PREFIX=24 GATEWAY=10.0.2.2 DEFROUTE=yes IPV4_FAILURE_FATAL=no IPV6INIT=yes IPV6_AUTOCONF=yes IPV6_DEFROUTE=yes IPV6_PEERDNS=yes IPV6_PEERROUTES=yes IPV6_FAILURE_FATAL=no NAME=ip_fixe UUID=fb3a11d9-4e03-4032-b26e-09d1195d2bcd DEVICE=enp0s3 ONBOOT=yes
La résolution des noms est donc inactive :
[root@centos7 ~]# ping www.free.fr ping: unknown host www.free.fr
Modifiez donc la configuration du profil ip_fixe :
[root@centos7 ~]# nmcli connection mod ip_fixe ipv4.dns 8.8.8.8
L'étude du fichier /etc/sysconfig/network-scripts/ifcfg-ip_fixe démontre que la directive concernant le serveur DNS a été ajoutée :
[root@centos7 ~]# cat /etc/sysconfig/network-scripts/ifcfg-ip_fixe TYPE=Ethernet BOOTPROTO=none DEFROUTE=yes IPV4_FAILURE_FATAL=no IPV6INIT=yes IPV6_AUTOCONF=yes IPV6_DEFROUTE=yes IPV6_FAILURE_FATAL=no NAME=ip_fixe UUID=fb3a11d9-4e03-4032-b26e-09d1195d2bcd DEVICE=enp0s3 ONBOOT=yes IPADDR=10.0.2.16 PREFIX=24 GATEWAY=10.0.2.2 DNS1=8.8.8.8 IPV6_PEERDNS=yes IPV6_PEERROUTES=yes
Afin que la modification du serveur DNS soit prise en compte, re-démarrez le service NetworkManager :
[root@centos7 ~]# systemctl restart NetworkManager.service [root@centos7 ~]# systemctl status NetworkManager.service ● NetworkManager.service - Network Manager Loaded: loaded (/usr/lib/systemd/system/NetworkManager.service; enabled; vendor preset: enabled) Active: active (running) since Mon 2016-08-08 11:16:53 CEST; 7s ago Main PID: 8394 (NetworkManager) CGroup: /system.slice/NetworkManager.service └─8394 /usr/sbin/NetworkManager --no-daemon Aug 08 11:16:53 centos7.fenestros.loc NetworkManager[8394]: <info> (enp0s3): device state change: prepare -> config (reason 'none') [40 50 0] Aug 08 11:16:53 centos7.fenestros.loc NetworkManager[8394]: <info> (enp0s3): device state change: config -> ip-config (reason 'none') [50 70 0] Aug 08 11:16:53 centos7.fenestros.loc NetworkManager[8394]: <info> (enp0s3): device state change: ip-config -> ip-check (reason 'none') [70 80 0] Aug 08 11:16:53 centos7.fenestros.loc NetworkManager[8394]: <info> (enp0s3): device state change: ip-check -> secondaries (reason 'none') [80 90 0] Aug 08 11:16:53 centos7.fenestros.loc NetworkManager[8394]: <info> (enp0s3): device state change: secondaries -> activated (reason 'none') [90 100 0] Aug 08 11:16:53 centos7.fenestros.loc NetworkManager[8394]: <info> NetworkManager state is now CONNECTED_LOCAL Aug 08 11:16:53 centos7.fenestros.loc NetworkManager[8394]: <info> NetworkManager state is now CONNECTED_GLOBAL Aug 08 11:16:53 centos7.fenestros.loc NetworkManager[8394]: <info> Policy set 'ip_fixe' (enp0s3) as default for IPv4 routing and DNS. Aug 08 11:16:53 centos7.fenestros.loc NetworkManager[8394]: <info> (enp0s3): Activation: successful, device activated. Aug 08 11:16:53 centos7.fenestros.loc NetworkManager[8394]: <info> wpa_supplicant running
Vérifiez que le fichier /etc/resolv.conf ait été modifié par NetworkManager :
[root@centos7 ~]# cat /etc/resolv.conf # Generated by NetworkManager search fenestros.loc nameserver 8.8.8.8
Dernièrement vérifiez la resolution des noms :
[root@centos7 ~]# ping www.free.fr PING www.free.fr (212.27.48.10) 56(84) bytes of data. 64 bytes from www.free.fr (212.27.48.10): icmp_seq=1 ttl=63 time=10.4 ms 64 bytes from www.free.fr (212.27.48.10): icmp_seq=2 ttl=63 time=9.44 ms 64 bytes from www.free.fr (212.27.48.10): icmp_seq=3 ttl=63 time=12.1 ms ^C --- www.free.fr ping statistics --- 3 packets transmitted, 3 received, 0% packet loss, time 2002ms rtt min/avg/max/mdev = 9.448/10.680/12.171/1.126 ms
Important : Notez qu'il existe un front-end graphique en mode texte, nmtui, pour configurer NetworkManager.
Ajouter une Deuxième Adresse IP à un Profil
Pour ajouter une deuxième adresse IP à un profil sous RHEL/CentOS 7, il convient d'utiliser la commande suivante :
[root@centos7 ~]# nmcli connection mod ip_fixe +ipv4.addresses 192.168.1.2/24
Redémarrez la machine virtuelle puis en tant que root saisissez la commande suivante :
[root@centos7 ~]# nmcli connection show ip_fixe connection.id: ip_fixe connection.uuid: fb3a11d9-4e03-4032-b26e-09d1195d2bcd connection.interface-name: enp0s3 connection.type: 802-3-ethernet connection.autoconnect: yes connection.autoconnect-priority: 0 connection.timestamp: 1470555543 connection.read-only: no connection.permissions: connection.zone: -- connection.master: -- connection.slave-type: -- connection.autoconnect-slaves: -1 (default) connection.secondaries: connection.gateway-ping-timeout: 0 connection.metered: unknown 802-3-ethernet.port: -- 802-3-ethernet.speed: 0 802-3-ethernet.duplex: -- 802-3-ethernet.auto-negotiate: yes 802-3-ethernet.mac-address: -- 802-3-ethernet.cloned-mac-address: -- 802-3-ethernet.mac-address-blacklist: 802-3-ethernet.mtu: auto 802-3-ethernet.s390-subchannels: 802-3-ethernet.s390-nettype: -- 802-3-ethernet.s390-options: 802-3-ethernet.wake-on-lan: 1 (default) 802-3-ethernet.wake-on-lan-password: -- ipv4.method: manual ipv4.dns: 8.8.8.8 ipv4.dns-search: ipv4.addresses: 10.0.2.16/24, 192.168.1.2/24 ipv4.gateway: 10.0.2.2 ipv4.routes: ipv4.route-metric: -1 ipv4.ignore-auto-routes: no ipv4.ignore-auto-dns: no ipv4.dhcp-client-id: -- ipv4.dhcp-send-hostname: yes ipv4.dhcp-hostname: -- ipv4.never-default: no ipv4.may-fail: yes ipv6.method: auto ipv6.dns: ipv6.dns-search: ipv6.addresses: ipv6.gateway: -- ipv6.routes: ipv6.route-metric: -1 ipv6.ignore-auto-routes: no ipv6.ignore-auto-dns: no ipv6.never-default: no ipv6.may-fail: yes ipv6.ip6-privacy: -1 (unknown) ipv6.dhcp-send-hostname: yes ipv6.dhcp-hostname: -- GENERAL.NAME: ip_fixe GENERAL.UUID: fb3a11d9-4e03-4032-b26e-09d1195d2bcd GENERAL.DEVICES: enp0s3 GENERAL.STATE: activated GENERAL.DEFAULT: yes GENERAL.DEFAULT6: no GENERAL.VPN: no GENERAL.ZONE: -- GENERAL.DBUS-PATH: /org/freedesktop/NetworkManager/ActiveConnection/0 GENERAL.CON-PATH: /org/freedesktop/NetworkManager/Settings/0 GENERAL.SPEC-OBJECT: / GENERAL.MASTER-PATH: -- IP4.ADDRESS[1]: 10.0.2.16/24 IP4.ADDRESS[2]: 192.168.1.2/24 IP4.GATEWAY: 10.0.2.2 IP4.DNS[1]: 8.8.8.8 IP6.ADDRESS[1]: fe80::a00:27ff:fe03:97dd/64 IP6.GATEWAY:
Important : Notez l'ajout de la ligne IP4.ADDRESS[2]:.
Consultez maintenant le contenu du fichier /etc/sysconfig/network-scripts/ifcfg-ip_fixe :
[root@centos7 ~]# cat /etc/sysconfig/network-scripts/ifcfg-ip_fixe TYPE=Ethernet BOOTPROTO=none DEFROUTE=yes IPV4_FAILURE_FATAL=no IPV6INIT=yes IPV6_AUTOCONF=yes IPV6_DEFROUTE=yes IPV6_FAILURE_FATAL=no NAME=ip_fixe UUID=fb3a11d9-4e03-4032-b26e-09d1195d2bcd DEVICE=enp0s3 ONBOOT=yes DNS1=8.8.8.8 IPADDR=10.0.2.16 PREFIX=24 IPADDR1=192.168.1.2 PREFIX1=24 GATEWAY=10.0.2.2 IPV6_PEERDNS=yes IPV6_PEERROUTES=yes
Important : Notez l'ajout de la ligne IPADDR1=192.168.1.2.
La Commande hostname
La procédure de la modification du hostname est simplifiée et sa prise en compte est immédiate :
[root@centos7 ~]# nmcli general hostname centos.fenestros.loc [root@centos7 ~]# cat /etc/hostname centos.fenestros.loc [root@centos7 ~]# hostname centos.fenestros.loc [root@centos7 ~]# nmcli general hostname centos7.fenestros.loc [root@centos7 ~]# cat /etc/hostname centos7.fenestros.loc [root@centos7 ~]# hostname centos7.fenestros.loc
La Commande ip
Sous RHEL/CentOS 7 la commande ip est préférée par rapport à la commande ifconfig :
[root@centos7 ~]# ip address 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever inet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000 link/ether 08:00:27:03:97:dd brd ff:ff:ff:ff:ff:ff inet 10.0.2.16/24 brd 10.0.2.255 scope global enp0s3 valid_lft forever preferred_lft forever inet 192.168.1.2/24 brd 192.168.1.255 scope global enp0s3 valid_lft forever preferred_lft forever inet6 fe80::a00:27ff:fe03:97dd/64 scope link valid_lft forever preferred_lft forever [root@centos7 ~]# ip addr 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever inet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000 link/ether 08:00:27:03:97:dd brd ff:ff:ff:ff:ff:ff inet 10.0.2.16/24 brd 10.0.2.255 scope global enp0s3 valid_lft forever preferred_lft forever inet 192.168.1.2/24 brd 192.168.1.255 scope global enp0s3 valid_lft forever preferred_lft forever inet6 fe80::a00:27ff:fe03:97dd/64 scope link valid_lft forever preferred_lft forever
Options de la Commande ip
Les options de cette commande sont :
[root@centos7 ~]# ip --help Usage: ip [ OPTIONS ] OBJECT { COMMAND | help } ip [ -force ] -batch filename where OBJECT := { link | addr | addrlabel | route | rule | neigh | ntable | tunnel | tuntap | maddr | mroute | mrule | monitor | xfrm | netns | l2tp | tcp_metrics | token } OPTIONS := { -V[ersion] | -s[tatistics] | -d[etails] | -r[esolve] | -f[amily] { inet | inet6 | ipx | dnet | bridge | link } | -4 | -6 | -I | -D | -B | -0 | -l[oops] { maximum-addr-flush-attempts } | -o[neline] | -t[imestamp] | -b[atch] [filename] | -rc[vbuf] [size]}
Activer/Désactiver une Interface Manuellement
Deux commandes existent pour désactiver et activer manuellement une interface réseau :
[root@centos7 ~]# nmcli device disconnect enp0s3 [root@centos7 ~]# nmcli device connect enp0s3
Routage Statique
La commande ip
Sous RHEL/CentOS 7, pour supprimer la route vers le réseau 192.168.1.0 il convient d'utiliser la commande ip et non pas la commande route :
[root@centos7 ~]# ip route default via 10.0.2.2 dev enp0s3 proto static metric 100 10.0.2.0/24 dev enp0s3 proto kernel scope link src 10.0.2.16 metric 100 192.168.1.0/24 dev enp0s3 proto kernel scope link src 192.168.1.2 metric 100 [root@centos7 ~]# ip route del 192.168.1.0/24 via 0.0.0.0 [root@centos7 ~]# ip route default via 10.0.2.2 dev enp0s3 proto static metric 100 10.0.2.0/24 dev enp0s3 proto kernel scope link src 10.0.2.16 metric 100
Pour ajouter la route vers le réseau 192.168.1.0 :
[root@centos7 ~]# ip route add 192.168.1.0/24 via 10.0.2.2 [root@centos7 ~]# ip route default via 10.0.2.2 dev enp0s3 proto static metric 100 10.0.2.0/24 dev enp0s3 proto kernel scope link src 10.0.2.16 metric 100 192.168.1.0/24 via 10.0.2.2 dev enp0s3
La commande utilisée pour ajouter une passerelle par défaut prend la forme suivante ip route add default via adresse ip.
Activer/désactiver le routage sur le serveur
Pour activer le routage sur le serveur, il convient d'activer la retransmission des paquets:
[root@centos7 ~]# echo 1 > /proc/sys/net/ipv4/ip_forward [root@centos7 ~]# cat /proc/sys/net/ipv4/ip_forward 1
Pour désactiver le routage sur le serveur, il convient de désactiver la retransmission des paquets:
[root@centos7 ~]# echo 0 > /proc/sys/net/ipv4/ip_forward [root@centos7 ~]# cat /proc/sys/net/ipv4/ip_forward 0
Gestion du Serveur NFS
Présentation
Quand on parle de NFS, on parle d'exportation d'un répertoire sur le serveur afin que celui-ci puisse être vu par des clients sur le réseau. Ces clients peuvent ensuite monter le répertoire et l'utiliser comme si celui-ci faisait partie de son propre filesystem.
Le Network File System (NFS) est le protocole de partage de fichiers historique sur des systèmes Unix. Lors de l'introduction de Samba, NFS a vu sa popularité diminuée, essentiellement parce que la connexion est non-sécurisée :
- le partage ainsi que ses caractéristiques sont configurés par rapport à l'adresse IP du client, or l'IP Spoofing est de plus en plus répandu,
- aucun mot de passe n'est demandé lors de la connexion d'un utilisateur à une ressource car le serveur NFS présume que l'utilisateur jean distant est le même utilisateur du compte jean sur le serveur NFS.
Cependant l'arrivée sur le marché de serveurs NAS domestiques ainsi que l'utilisation de la virtualisation dans le milieu professionnel fait que NFS connait un regain d'intérêt en tant que stockage mutualisé raid, simple à mettre en œuvre.
Il existe actuellement 3 versions de NFS :
Version | Protocole Utilisé | Dépendance |
---|---|---|
NFSv2 | TCP et UDP | portmap |
NFSv3 | TCP et UDP | portmap |
NFSv4 | TCP | Aucune - les fonctions de portmap sont incluses dans NFSv4 |
La version utilisée par défaut sous CentOS/Redhat est NFSv3.
Les Services et Processus du Serveur NFSv3
La version NFSv3 utilise les services suivants :
Services | Fonction |
---|---|
nfs | Démarre le service NFS ainsi que les processus RPC pour recevoir et traiter les demandes des clients |
nfslock | Démarre les processus RPC qui permettent aux clients de verrouiller les fichiers sur le serveur |
portmap | Gestion des réservations des ports pour les services RPC locaux afin que les services RPC distants puissent se connecter |
Options d'un Partage NFS
Certaines options, appliquées à un partage, modifient le comportement du serveur NFS pour le partage concerné lors de son démarrage :
Option | Comportement |
---|---|
ro | Accès en lecture seule |
rw | Accès en lecture / écriture |
sync | Ecriture synchrone ( écriture immédiate sur disque ) |
async | Ecriture asynchrone ( écriture sur disque en utilisant une cache ) |
root_squash | Root perd ses prérogatives sur le partage concerné |
no_root_squash | Root garde ses prérogatives sur le partage concerné |
no_lock | Pas de verrous sur les fichiers accédés |
Si plusieurs options sont spécifiées, celles-ci doivent être séparées par des virgules.
Commandes de Base
Plusieurs commandes permettent de gérer et de s'informer sur l'activité du serveur NFS :
Commande | Comportement |
---|---|
exportfs | Affiche les partages actifs sur le serveur courant |
nfsstat | Affiche les statistiques de l'activité NFS |
rpcinfo | Affiche les démons gérés en effectuant une requête RPC sur le serveur courant |
showmount | Affiche les partages actifs sur un serveur distant |
mount | Permet de monter un partage distant sur un répertoire local |
Mise en Place
Configuration du Serveur sous RHEL/CentOS 7
Important : Arrêtez votre VM. Dans la fenêtre de Oracle VM VirtualBox, cliquez sur Fichier > Paramètres > Réseau et créez un réseau NAT appelé NatNetwork. Dans les paramètres de votre VM, cliquez sur Réseau et configurez la Carte 1 en Réseau NAT dans le réseau NatNetwork. Démarrez votre VM.
Configurez votre interface réseau si ce n'est pas déjà fait :
[root@centos7 ~]# nmcli connection add con-name ip_fixe ifname enp0s3 type ethernet ip4 10.0.2.16/24 gw4 10.0.2.2 Connection 'ip_fixe' (5ac899e6-3f7b-415e-b9d7-c950fab007d5) successfully added. [root@centos7 ~]# nmcli connection mod ip_fixe ipv4.dns 8.8.8.8 [root@centos7 ~]# nmcli connection up ip_fixe Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/1) [root@centos7 ~]# systemctl restart NetworkManager.service [root@centos7 ~]# ping www.free.fr PING www.free.fr (212.27.48.10) 56(84) bytes of data. 64 bytes from www.free.fr (212.27.48.10): icmp_seq=1 ttl=51 time=28.7 ms 64 bytes from www.free.fr (212.27.48.10): icmp_seq=2 ttl=51 time=26.7 ms ^C --- www.free.fr ping statistics --- 2 packets transmitted, 2 received, 0% packet loss, time 1002ms rtt min/avg/max/mdev = 26.773/27.766/28.759/0.993 ms
Ajoutez une autre adresse IP pour le NFS :
[root@centos7 ~]# nmcli connection mod ip_fixe +ipv4.addresses 192.168.1.2/24
Continuez maintenant par la mise en place du service nfs :
[root@centos7 ~]# systemctl status nfs.service nfs-server.service - NFS server and services Loaded: loaded (/usr/lib/systemd/system/nfs-server.service; disabled) Active: inactive (dead) [root@centos7 ~]# systemctl enable nfs-server.service ln -s '/usr/lib/systemd/system/nfs-server.service' '/etc/systemd/system/multi-user.target.wants/nfs-server.service' [root@centos7 ~]# systemctl status nfs.service nfs-server.service - NFS server and services Loaded: loaded (/usr/lib/systemd/system/nfs-server.service; enabled) Active: inactive (dead)
La mise en place d'un partage ponctuel se fait en utilisant la commande exportfs en indiquant en argument le répertoire sous la forme de adresse_ip_du_serveur:chemin_du_partage :
[root@centos7 ~]# exportfs [root@centos7 ~]# exportfs 192.168.1.2:/home/trainee [root@centos7 ~]# exportfs /home/trainee 192.168.1.2
Démarrez maintenant le service nfs :
[root@centos7 ~]# systemctl start nfs.service [root@centos7 ~]# systemctl status nfs.service nfs-server.service - NFS server and services Loaded: loaded (/usr/lib/systemd/system/nfs-server.service; enabled) Active: active (exited) since Thu 2015-10-01 13:18:13 CEST; 4s ago Process: 9552 ExecStart=/usr/sbin/rpc.nfsd $RPCNFSDARGS (code=exited, status=0/SUCCESS) Process: 9551 ExecStartPre=/usr/sbin/exportfs -r (code=exited, status=0/SUCCESS) Main PID: 9552 (code=exited, status=0/SUCCESS) CGroup: /system.slice/nfs-server.service Oct 01 13:18:13 centos7.fenestros.loc systemd[1]: Starting NFS server and services... Oct 01 13:18:13 centos7.fenestros.loc systemd[1]: Started NFS server and services.
Afin de mettre en place un ou des partages permanents, il est nécessaire d'éditer le fichier /etc/exports :
/home/trainee 192.168.1.1 /tmp *
Important : Dans ce cas, nous avons partagé le répertoire /home/trainee pour la seule adresse IP 192.168.1.1.
Redémarrez maintenant le service nfs afin que le fichier /etc/exports soit re-lu :
[root@centos7 ~]# systemctl restart nfs.service [root@centos7 ~]# systemctl status nfs.service nfs-server.service - NFS server and services Loaded: loaded (/usr/lib/systemd/system/nfs-server.service; enabled) Active: active (exited) since Thu 2015-10-01 14:24:50 CEST; 18s ago Process: 4642 ExecStopPost=/usr/sbin/exportfs -f (code=exited, status=0/SUCCESS) Process: 4639 ExecStopPost=/usr/sbin/exportfs -au (code=exited, status=0/SUCCESS) Process: 4638 ExecStop=/usr/sbin/rpc.nfsd 0 (code=exited, status=0/SUCCESS) Process: 4650 ExecStart=/usr/sbin/rpc.nfsd $RPCNFSDARGS (code=exited, status=0/SUCCESS) Process: 4649 ExecStartPre=/usr/sbin/exportfs -r (code=exited, status=0/SUCCESS) Main PID: 4650 (code=exited, status=0/SUCCESS) CGroup: /system.slice/nfs-server.service Oct 01 14:24:50 centos7.fenestros.loc systemd[1]: Starting NFS server and services... Oct 01 14:24:50 centos7.fenestros.loc exportfs[4649]: exportfs: No options for /home/trainee 192.168.1.1: suggest 192.168.1.1(sync) to avoid warning Oct 01 14:24:50 centos7.fenestros.loc exportfs[4649]: exportfs: No options for /tmp *: suggest *(sync) to avoid warning Oct 01 14:24:50 centos7.fenestros.loc systemd[1]: Started NFS server and services.
Puisque aucune option ne soit spécifiée pour les montages, ceux-ci ont été exportés avec des option par défaut. En utilisant l'option -v de la commande exportfs, il est possible de consulter ces options :
[root@centos7 ~]# exportfs -v /home/trainee 192.168.1.1(ro,wdelay,root_squash,no_subtree_check,sec=sys,ro,secure,root_squash,no_all_squash) /tmp <world>(ro,wdelay,root_squash,no_subtree_check,sec=sys,ro,secure,root_squash,no_all_squash)
Configuration du Client sous RHEL/CentOS 7
Important : Arrêtez votre VM. Créez une clône de votre VM. Démarrez la VM clonée.
Re-configurez ensuite l'interface réseau de votre VM Client :
[root@centos7 ~]# nmcli connection del ip_fixe [root@centos7 ~]# nmcli connection show ip_fixe Error: ip_fixe - no such connection profile. [root@centos7 ~]# nmcli connection add con-name ip_fixe ifname enp0s3 type ethernet ip4 10.0.2.17/24 gw4 10.0.2.2 Connection 'ip_fixe' (5b54ad20-c3e2-4606-b54d-38b225cc578f) successfully added. [root@centos7 ~]# nmcli connection mod ip_fixe ipv4.dns 8.8.8.8 [root@centos7 ~]# nmcli connection mod ip_fixe +ipv4.addresses 192.168.1.1/24 [root@centos7 ~]# nmcli connection up ip_fixe Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/1) [root@centos7 ~]# systemctl restart NetworkManager.service
Important : Démarrez la VM d'origine.
Dans la VM d'origine (serveur) passez SELinux en mode permissive et arrêtez le pare-feu :
[root@centos7 ~]# getenforce Enforcing [root@centos7 ~]# setenforce permissive [root@centos7 ~]# systemctl status firewalld.service firewalld.service - firewalld - dynamic firewall daemon Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled) Active: active (running) since Thu 2015-10-01 14:54:57 CEST; 19min ago Main PID: 479 (firewalld) CGroup: /system.slice/firewalld.service └─479 /usr/bin/python -Es /usr/sbin/firewalld --nofork --nopid Oct 01 14:54:57 centos7.fenestros.loc systemd[1]: Started firewalld - dynamic firewall daemon. [root@centos7 ~]# systemctl stop firewalld.service
A partir de votre client, consultez les répertoire exportés du serveur :
[root@centos7 ~]# showmount --exports 192.168.1.2 Export list for 192.168.1.2: /tmp * /home/trainee 192.168.1.1
Créez maintenant le répertoire /nfs dans le client et montez le partage 192.168.1.2:/home/trainee :
[root@centos7 ~]# mkdir /nfs [root@centos7 ~]# mount -t nfs 192.168.1.2:/home/trainee /nfs
Notez que quand vous essayer de rentrer dans le répertoire en tant que root, vous obtenez le message -bash: cd: /nfs: Permission non accordée :
[root@centos7 ~]# cd /nfs -bash: cd: /nfs: Permission denied
Important : Puisque le répertoire /home/trainee a été exporté avec l'option par défaut root_squash. Ceci implique que root perd ses droits sur le répertoire quand il est monté. En fait, le service nfs remplace l'UID de 0 avec l'UID de l'utilisateur nobody.
Retournez donc dans le serveur et modifiez le fichier /etc/exports ainsi :
[root@centos7 ~]# cat /etc/exports /home/trainee 192.168.1.1(async,rw,no_root_squash) /tmp *
Redémarrez le service nfs :
[root@centos7 ~]# systemctl restart nfs.service
Vous noterez que maintenant vous êtes capable de vous positionner dans le répertoire /nfs du client en tant que root
[root@centos7 ~]# cd /nfs [root@centos7 nfs]#
Le Pare-feu Netfilter/iptables
Importez une machine virtuelle vierge de CentOS 6 pour effectuer le LAB #8.
Introduction
Netfilter est composé de 5 hooks :
- NF_IP_PRE_ROUTING
- NF_IP_LOCAL_IN
- NF_IP_LOCAL_OUT
- NF_IP_FORWARD
- NF_IP_POSTROUTING
Ces hooks sont utilisés par deux branches, la première est celle concernée par les paquets qui entrent vers des services locaux :
- NF_IP_PRE_ROUTING > NF_IP_LOCAL_IN > NF_IP_LOCAL_OUT > NF_IP_POSTROUTING
tandis que la deuxième concerne les paquets qui traversent la passerelle:
- NF_IP_PRE_ROUTING > NF_IP_FORWARD > NF_IP_POSTROUTING
Si IPTABLES a été compilé en tant que module, son utilisation nécessite le chargement de plusieurs modules supplémentaires en fonction de la situation:
- iptable_filter
- iptable_mangle
- iptable_net
- etc
Netfilter est organisé en tables. La commande iptables de netfilter permet d'insérer des policies dans les chaines:
- La table FILTER
- La chaîne INPUT
- Concerne les paquets entrants
- Policies: ACCEPT, DROP, REJECT
- La chaîne OUTPUT
- Concerne les paquets sortants
- Policies: ACCEPT, DROP, REJECT
- La chaîne FORWARD
- Concerne les paquets traversant le par-feu.
- Policies: ACCEPT, DROP, REJECT
Si aucune table n'est précisée, c'est la table FILTER qui s'applique par défaut.
- La table NAT
- La chaîne PREROUTING
- Permet de faire la translation d'adresse de destination
- Cibles: SNAT, DNAT, MASQUERADE
- La chaîne POSTROUTING
- Permet de faire la translation d'adresse de la source
- Cibles: SNAT, DNAT, MASQUERADE
- Le cas spécifique OUTPUT
- Permet la modification de la destination des paquets générés localement
- La table MANGLE
- Permet le marquage de paquets générés localement (OUTPUT) et entrants (PREROUTING)
Les policies sont:
- ACCEPT
- Permet d'accepter le paquet concerné
- DROP
- Permet de rejeter le paquet concerné sans générer un message d'erreur
- REJECT
- Permet de rejeter le paquet concerné en générant une message d'erreur
Les cibles sont:
- SNAT
- Permet de modifier l'adresse source du paquet concerné
- DNAT
- Permet de modifier l'adresse de destination du paquet concerné
- MASQUERADE
- Permet de remplacer l'adresse IP privée de l'expéditeur par un socket public de la passerelle.
IPTABLES peut être configuré soit par des outils tels shorewall, soit en utilisant des lignes de commandes ou un script. Dans ce dernier cas, la ligne prend la forme:
# IPTABLES --action CHAINE --option1 --option2
Les actions sont:
Action | Abréviation | Déscription |
---|---|---|
- -append | -A | Ajouter une règle à la fin de la chaîne spécifiée |
- -delete | -D | Supprimer une règle en spécifiant son numéro ou la règle à supprimer |
- -replace | -R | Permet de remplacer la règle spécifée par son numéro |
- -insert | -I | Permet d'insérer une règle à l'endroit spécifié |
- -list | -L | Permet d'afficher des règles |
- -flush | -F | Permet de vider toutes les règles d'une chaîne |
Les options sont:
Option | Abréviation | Déscription |
---|---|---|
- -protocol | -p | Permet de spécifier un protocol - tcp, udp, icmp, all |
- -source | -s | Permet de spécifier une adresse source |
- -destination | -d | Permet de spécifier une adresse de destination |
- -in-interface | -i | Permet de spécifier une interface réseau d'entrée |
- -out-interface | -o | Permet de spécifier une interface réseau de sortie |
- -fragment | -f | Permet de ne spécifier que les paquets fragmentés |
- -source-port | -sport | Permet de spécifier un port source ou une plage de ports source |
- -destination-port | -dport | Permet de spécifier un port de destination ou une plage de ports de destination |
- -tcp-flags | s/o | Permet de spécifier un flag TCP à matcher - SYN, ACK, FIN, RST, URG, PSH, ALL, NONE |
- -icmp-type | s/o | Permet de spécifier un type de paquet ICMP |
- -mac-source | s/o | Permet de spécifier une adresse MAC |
Les options spécifiques à NET sont:
- -to-destination | s/o | Permet de spécifier l'adresse de destination d'une translation |
- -to-source | s/o | Permet spécifier l'adresse source d'une translation |
Les options spécifiques aux LOGS sont:
- -log-level | s/o | Permet de spécifier le niveau de logs |
- -log-prefix | s/o | Permet de spécifier un préfix pour les logs |
L'option spécifique au STATEFUL est:
- -state | s/o | Permet de spécifier l'état du paquet à vérifier |
Ce dernier cas fait référence au STATEFUL. Le STATEFUL est la capacité du par-feu à enregistrer dans une table spécifique, l'état des différentes connexions. Cette table s'appelle une table d'état. Le principe du fonctionnement de STATEFUL est simple, à savoir, si le paquet entrant appartient à une communication déjà établie, celui-ci n'est pas vérifié.
Il existe 4 états:
- NEW
- Le paquet concerne une nouvelle connexion et contient donc un flag SYN à 1
- ESTABLISHED
- Le paquet concerne une connexion déjà établie. Le paquet ne doit contenir ni flag SYN à 1, ni flag FIN à 1
- RELATED
- Le paquet est d'une connexion qui présente une relation avec une autre connexion
- INVALID
- La paquet provient d'une connexion anormale.
LAB #5 - La Configuration par firewalld sous RHEL/CentOS 7
Importez une machine virtuelle vierge de CentOS 7 pour effectuer les LABS #9 et #10.
firewalld est à Netfilter ce que NetworkManager est au réseau. firewalld utilise des zones - des jeux de règles pré-définis dans lesquels sont placés les interfaces :
- trusted - un réseau fiable. Dans ce cas tous les ports sont autorisés,
- work, home, internal - un réseau partiellement fiable. Dans ce cas quelques ports sont autorisés,
- dmz, public, external - un réseau non fiable. Dans ce cas peu de ports sont autorisés,
- block, drop - tout est interdit. La zone drop n'envoie pas de messages d'erreurs.
Une interface ne peut être que dans une zone à la fois tandis que plusieurs interfaces peuvent être dans la même zone.
Le service firewalld doit toujours être lancé :
[root@centos7 ~]# systemctl status firewalld.service firewalld.service - firewalld - dynamic firewall daemon Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled) Active: active (running) since Tue 2015-07-07 15:53:56 CEST; 1 day 21h ago Main PID: 493 (firewalld) CGroup: /system.slice/firewalld.service └─493 /usr/bin/python -Es /usr/sbin/firewalld --nofork --nopid Jul 07 15:53:56 centos7.fenestros.loc systemd[1]: Started firewalld - dynamic firewall daemon.
La Configuration de Base de firewalld
La configuration par défaut de firewalld se trouve dans /usr/lib/firewalld :
[root@centos7 ~]# ls -l /usr/lib/firewalld/ total 12 drwxr-x---. 2 root root 4096 Jun 4 09:52 icmptypes drwxr-x---. 2 root root 4096 Jun 4 09:52 services drwxr-x---. 2 root root 4096 Jun 4 09:52 zones [root@centos7 ~]# ls -l /usr/lib/firewalld/zones total 36 -rw-r-----. 1 root root 299 Mar 6 00:35 block.xml -rw-r-----. 1 root root 293 Mar 6 00:35 dmz.xml -rw-r-----. 1 root root 291 Mar 6 00:35 drop.xml -rw-r-----. 1 root root 304 Mar 6 00:35 external.xml -rw-r-----. 1 root root 400 Mar 6 00:35 home.xml -rw-r-----. 1 root root 415 Mar 6 00:35 internal.xml -rw-r-----. 1 root root 315 Mar 6 00:35 public.xml -rw-r-----. 1 root root 162 Mar 6 00:35 trusted.xml -rw-r-----. 1 root root 342 Mar 6 00:35 work.xml [root@centos7 ~]# ls -l /usr/lib/firewalld/services total 192 -rw-r-----. 1 root root 412 Mar 6 00:35 amanda-client.xml -rw-r-----. 1 root root 320 Mar 6 00:35 bacula-client.xml -rw-r-----. 1 root root 346 Mar 6 00:35 bacula.xml -rw-r-----. 1 root root 305 Mar 6 00:35 dhcpv6-client.xml -rw-r-----. 1 root root 234 Mar 6 00:35 dhcpv6.xml -rw-r-----. 1 root root 227 Mar 6 00:35 dhcp.xml -rw-r-----. 1 root root 346 Mar 6 00:35 dns.xml -rw-r-----. 1 root root 374 Mar 6 00:35 ftp.xml -rw-r-----. 1 root root 476 Mar 6 00:35 high-availability.xml -rw-r-----. 1 root root 448 Mar 6 00:35 https.xml -rw-r-----. 1 root root 353 Mar 6 00:35 http.xml -rw-r-----. 1 root root 372 Mar 6 00:35 imaps.xml -rw-r-----. 1 root root 454 Mar 6 00:35 ipp-client.xml -rw-r-----. 1 root root 427 Mar 6 00:35 ipp.xml -rw-r-----. 1 root root 517 Mar 6 00:35 ipsec.xml -rw-r-----. 1 root root 233 Mar 6 00:35 kerberos.xml -rw-r-----. 1 root root 221 Mar 6 00:35 kpasswd.xml -rw-r-----. 1 root root 232 Mar 6 00:35 ldaps.xml -rw-r-----. 1 root root 199 Mar 6 00:35 ldap.xml -rw-r-----. 1 root root 385 Mar 6 00:35 libvirt-tls.xml -rw-r-----. 1 root root 389 Mar 6 00:35 libvirt.xml -rw-r-----. 1 root root 424 Mar 6 00:35 mdns.xml -rw-r-----. 1 root root 211 Mar 6 00:35 mountd.xml -rw-r-----. 1 root root 190 Mar 6 00:35 ms-wbt.xml -rw-r-----. 1 root root 171 Mar 6 00:35 mysql.xml -rw-r-----. 1 root root 324 Mar 6 00:35 nfs.xml -rw-r-----. 1 root root 389 Mar 6 00:35 ntp.xml -rw-r-----. 1 root root 335 Mar 6 00:35 openvpn.xml -rw-r-----. 1 root root 433 Mar 6 00:35 pmcd.xml -rw-r-----. 1 root root 474 Mar 6 00:35 pmproxy.xml -rw-r-----. 1 root root 544 Mar 6 00:35 pmwebapis.xml -rw-r-----. 1 root root 460 Mar 6 00:35 pmwebapi.xml -rw-r-----. 1 root root 357 Mar 6 00:35 pop3s.xml -rw-r-----. 1 root root 181 Mar 6 00:35 postgresql.xml -rw-r-----. 1 root root 261 Mar 6 00:35 proxy-dhcp.xml -rw-r-----. 1 root root 446 Mar 6 00:35 radius.xml -rw-r-----. 1 root root 517 Mar 6 00:35 RH-Satellite-6.xml -rw-r-----. 1 root root 214 Mar 6 00:35 rpc-bind.xml -rw-r-----. 1 root root 384 Mar 6 00:35 samba-client.xml -rw-r-----. 1 root root 461 Mar 6 00:35 samba.xml -rw-r-----. 1 root root 550 Mar 6 00:35 smtp.xml -rw-r-----. 1 root root 463 Mar 6 00:35 ssh.xml -rw-r-----. 1 root root 393 Mar 6 00:35 telnet.xml -rw-r-----. 1 root root 301 Mar 6 00:35 tftp-client.xml -rw-r-----. 1 root root 437 Mar 6 00:35 tftp.xml -rw-r-----. 1 root root 211 Mar 6 00:35 transmission-client.xml -rw-r-----. 1 root root 475 Mar 6 00:35 vnc-server.xml -rw-r-----. 1 root root 310 Mar 6 00:35 wbem-https.xml [root@centos7 ~]# ls -l /usr/lib/firewalld/icmptypes/ total 36 -rw-r-----. 1 root root 222 Mar 6 00:35 destination-unreachable.xml -rw-r-----. 1 root root 173 Mar 6 00:35 echo-reply.xml -rw-r-----. 1 root root 210 Mar 6 00:35 echo-request.xml -rw-r-----. 1 root root 225 Mar 6 00:35 parameter-problem.xml -rw-r-----. 1 root root 185 Mar 6 00:35 redirect.xml -rw-r-----. 1 root root 227 Mar 6 00:35 router-advertisement.xml -rw-r-----. 1 root root 223 Mar 6 00:35 router-solicitation.xml -rw-r-----. 1 root root 248 Mar 6 00:35 source-quench.xml -rw-r-----. 1 root root 253 Mar 6 00:35 time-exceeded.xml
Ces fichiers sont au format xml, par exemple :
[root@centos7 ~]# cat /usr/lib/firewalld/zones/home.xml <?xml version="1.0" encoding="utf-8"?> <zone> <short>Home</short> <description>For use in home areas. You mostly trust the other computers on networks to not harm your computer. Only selected incoming connections are accepted.</description> <service name="ssh"/> <service name="ipp-client"/> <service name="mdns"/> <service name="samba-client"/> <service name="dhcpv6-client"/> </zone>
La configuration de firewalld ainsi que les définitions et règles personnalisées se trouvent dans /etc/firewalld :
[root@centos7 ~]# ls -l /etc/firewalld/ total 8 -rw-r-----. 1 root root 1026 Mar 6 00:35 firewalld.conf drwxr-x---. 2 root root 6 Mar 6 00:35 icmptypes -rw-r-----. 1 root root 271 Mar 6 00:35 lockdown-whitelist.xml drwxr-x---. 2 root root 6 Mar 6 00:35 services drwxr-x---. 2 root root 23 Mar 6 00:35 zones [root@centos7 ~]# ls -l /etc/firewalld/zones/ total 4 -rw-r--r--. 1 root root 315 Mar 8 14:05 public.xml [root@centos7 ~]# ls -l /etc/firewalld/services/ total 0 [root@centos7 ~]# ls -l /etc/firewalld/icmptypes/ total 0
Le fichier de configuration de firewalld est /etc/firewalld/firewalld.conf :
[root@centos7 ~]# cat /etc/firewalld/firewalld.conf # firewalld config file # default zone # The default zone used if an empty zone string is used. # Default: public DefaultZone=public # Minimal mark # Marks up to this minimum are free for use for example in the direct # interface. If more free marks are needed, increase the minimum # Default: 100 MinimalMark=100 # Clean up on exit # If set to no or false the firewall configuration will not get cleaned up # on exit or stop of firewalld # Default: yes CleanupOnExit=yes # Lockdown # If set to enabled, firewall changes with the D-Bus interface will be limited # to applications that are listed in the lockdown whitelist. # The lockdown whitelist file is lockdown-whitelist.xml # Default: no Lockdown=no # IPv6_rpfilter # Performs a reverse path filter test on a packet for IPv6. If a reply to the # packet would be sent via the same interface that the packet arrived on, the # packet will match and be accepted, otherwise dropped. # The rp_filter for IPv4 is controlled using sysctl. # Default: yes IPv6_rpfilter=yes
La Commande firewall-cmd
firewalld s'appuie sur netfilter. Pour cette raison, l'utilisation de firewall-cmd est incompatible avec l'utilisation des commandes iptables et system-config-firewall.
firewall-cmd est le front-end de firewalld en ligne de commande. Il existe aussi la commande firewall-config qui lance un outi de configuration graphique.
Pour obtenir la liste de toutes les zones prédéfinies, utilisez la commande suivante :
[root@centos7 ~]# firewall-cmd --get-zones block dmz drop external home internal public trusted work
Pour obtenir la liste de toutes les services prédéfinis, utilisez la commande suivante :
[root@centos7 ~]# firewall-cmd --get-services RH-Satellite-6 amanda-client bacula bacula-client dhcp dhcpv6 dhcpv6-client dns ftp high-availability http https imaps ipp ipp-client ipsec kerberos kpasswd ldap ldaps libvirt libvirt-tls mdns mountd ms-wbt mysql nfs ntp openvpn pmcd pmproxy pmwebapi pmwebapis pop3s postgresql proxy-dhcp radius rpc-bind samba samba-client smtp ssh telnet tftp tftp-client transmission-client vnc-server wbem-https
Pour obtenir la liste de toutes les types ICMP prédéfinis, utilisez la commande suivante :
[root@centos7 ~]# firewall-cmd --get-icmptypes destination-unreachable echo-reply echo-request parameter-problem redirect router-advertisement router-solicitation source-quench time-exceeded
Pour obtenir la liste des zones de la configuration courante, utilisez la commande suivante :
[root@centos7 ~]# firewall-cmd --get-active-zones public interfaces: enp0s3
Pour obtenir la liste des zones de la configuration courante pour une interface spécifique, utilisez la commande suivante :
[root@centos7 ~]# firewall-cmd --get-zone-of-interface=enp0s3 public
Pour obtenir la liste des services autorisés pour la zone public, utilisez la commande suivante :
[root@centos7 ~]# firewall-cmd --zone=public --list-services dhcpv6-client ssh
Pour obtenir toute la configuration pour la zone public, utilisez la commande suivante :
[root@centos7 ~]# firewall-cmd --zone=public --list-all public (default, active) interfaces: enp0s3 sources: services: dhcpv6-client ssh ports: masquerade: no forward-ports: icmp-blocks: rich rules:
Pour obtenir la liste complète de toutes les zones et leurs configurations, utilisez la commande suivante :
[root@centos7 ~]# firewall-cmd --list-all-zones block interfaces: sources: services: ports: masquerade: no forward-ports: icmp-blocks: rich rules: dmz interfaces: sources: services: ssh ports: masquerade: no forward-ports: icmp-blocks: rich rules: drop interfaces: sources: services: ports: masquerade: no forward-ports: icmp-blocks: rich rules: external interfaces: sources: services: ssh ports: masquerade: yes forward-ports: icmp-blocks: rich rules: home interfaces: sources: services: dhcpv6-client ipp-client mdns samba-client ssh ports: masquerade: no forward-ports: icmp-blocks: rich rules: internal interfaces: sources: services: dhcpv6-client ipp-client mdns samba-client ssh ports: masquerade: no forward-ports: icmp-blocks: rich rules: public (default, active) interfaces: enp0s3 sources: services: dhcpv6-client ssh ports: masquerade: no forward-ports: icmp-blocks: rich rules: trusted interfaces: sources: services: ports: masquerade: no forward-ports: icmp-blocks: rich rules: work interfaces: sources: services: dhcpv6-client ipp-client ssh ports: masquerade: no forward-ports: icmp-blocks: rich rules:
Pour changer la zone par défaut de public à work, utilisez la commande suivante :
[root@centos7 ~]# firewall-cmd --set-default-zone=work success [root@centos7 ~]# firewall-cmd --get-active-zones work interfaces: enp0s3
Pour ajouter l'interface ip_fixe à la zone work, utilisez la commande suivante :
[root@centos7 ~]# firewall-cmd --zone=work --add-interface=ip_fixe success [root@centos7 ~]# firewall-cmd --get-active-zones work interfaces: enp0s3 ip_fixe
Pour supprimer l'interface ip_fixe à la zone work, utilisez la commande suivante :
[root@centos7 ~]# firewall-cmd --zone=work --remove-interface=ip_fixe success [root@centos7 ~]# firewall-cmd --get-active-zones work interfaces: enp0s3
Pour ajouter le service http à la zone work, utilisez la commande suivante :
[root@centos7 ~]# firewall-cmd --zone=work --add-service=http success [root@centos7 ~]# firewall-cmd --zone=work --list-services dhcpv6-client http ipp-client ssh
Pour supprimer le service http de la zone work, utilisez la commande suivante :
[root@centos7 ~]# firewall-cmd --zone=work --remove-service=http success [root@centos7 ~]# firewall-cmd --zone=work --list-services dhcpv6-client ipp-client ssh
Pour ajouter un nouveau bloc ICMP, utilisez la commande suivante :
[root@centos7 ~]# firewall-cmd --zone=work --add-icmp-block=echo-reply success [root@centos7 ~]# firewall-cmd --zone=work --list-icmp-blocks echo-reply
Pour supprimer un bloc ICMP, utilisez la commande suivante :
[root@centos7 ~]# firewall-cmd --zone=work --remove-icmp-block=echo-reply success [root@centos7 ~]# firewall-cmd --zone=work --list-icmp-blocks [root@centos7 ~]#
Pour ajouter le port 591/tcp à la zone work, utilisez la commande suivante :
[root@centos7 ~]# firewall-cmd --zone=work --add-port=591/tcp success [root@centos7 ~]# firewall-cmd --zone=work --list-ports 591/tcp
Pour supprimer le port 591/tcp à la zone work, utilisez la commande suivante :
[root@centos7 ~]# firewall-cmd --zone=work --remove-port=591/tcp success [root@centos7 ~]# firewall-cmd --zone=work --list-ports [root@centos7 ~]#
Pour créer un nouveau service, il convient de :
- copier un fichier existant se trouvant dans le répertoire /usr/lib/firewalld/services vers /etc/firewalld/services,
- modifier le fichier,
- recharger la configuration de firewalld,
- vérifier que firewalld voit le nouveau service.
Par exemple :
[root@centos7 ~]# cp /usr/lib/firewalld/services/http.xml /etc/firewalld/services/filemaker.xml [root@centos7 ~]# [root@centos7 ~]# cat /etc/firewalld/services/filemaker.xml <?xml version="1.0" encoding="utf-8"?> <service> <short>FileMakerPro</short> <description>fichier de service firewalld pour FileMaker Pro</description> <port protocol="tcp" port="591"/> </service> [root@centos7 ~]# [root@centos7 ~]# firewall-cmd --reload success [root@centos7 ~]# [root@centos7 ~]# firewall-cmd --get-services RH-Satellite-6 amanda-client bacula bacula-client dhcp dhcpv6 dhcpv6-client dns filemaker ftp high-availability http https imaps ipp ipp-client ipsec kerberos kpasswd ldap ldaps libvirt libvirt-tls mdns mountd ms-wbt mysql nfs ntp openvpn pmcd pmproxy pmwebapi pmwebapis pop3s postgresql proxy-dhcp radius rpc-bind samba samba-client smtp ssh telnet tftp tftp-client transmission-client vnc-server wbem-https
La Configuration Avancée de firewalld
La configuration de base de firewalld ne permet que la configuration des zones, services, blocs ICMP et les ports non-standard. Cependant firewalld peut également être configuré avec des Rich Rules ou Règles Riches. Rich Rules ou Règles Riches évaluent des critères pour ensuite entreprendre une action.
Les Critères sont :
- source address=“<adresse_IP>“
- destination address=”<adresse_IP>“,
- rule port port=”<numéro_du_port>“,
- service name=<nom_d'un_sevice_prédéfini>.
Les Actions sont :
- accept,
- reject,
- une Action reject peut être associée avec un message d'erreur spécifique par la clause type=”<type_d'erreur>,
- drop.
Saisissez la commande suivante pour ouvrir le port 80 :
[root@centos7 ~]# firewall-cmd --add-rich-rule='rule port port="80" protocol="tcp" accept' success
Notez que la Rich Rule doit être entourée de caractères '.
Saisissez la commande suivante pour visualiser la règle iptables pour IPv4 :
[root@centos7 ~]# iptables -L -n | grep 80 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:80 ctstate NEW
Saisissez la commande suivante pour visualiser la règle iptables pour IPv6 :
[root@centos7 ~]# ip6tables -L -n | grep 80 ACCEPT udp ::/0 fe80::/64 udp dpt:546 ctstate NEW ACCEPT tcp ::/0 ::/0 tcp dpt:80 ctstate NEW
Notez que la Rich Rule a créé deux règles, une pour IPv4 et une deuxième pour IPv6. Une règle peut être créée pour IPv4 seul en incluant le Critère family=ipv4. De la même façon, une règle peut être créée pour IPv6 seul en incluant le Critère family=ipv6.
Cette nouvelle règle est écrite en mémoire mais non pas sur disque. Pour l'écrire sur disque dans le fichier zone se trouvant dans /etc/firewalld, il faut ajouter l'option –permanent :
[root@centos7 ~]# firewall-cmd --add-rich-rule='rule port port="80" protocol="tcp" accept' --permanent success [root@centos7 ~]# [root@centos7 ~]# cat /etc/firewalld/zones/work.xml <?xml version="1.0" encoding="utf-8"?> <zone> <short>Work</short> <description>For use in work areas. You mostly trust the other computers on networks to not harm your computer. Only selected incoming connections are accepted.</description> <service name="ipp-client"/> <service name="dhcpv6-client"/> <service name="ssh"/> <rule> <port protocol="tcp" port="80"/> <accept/> </rule> </zone>
Attention ! La règle ajoutée avec l'option –permanent n'est pas prise en compte imédiatement mais uniquement au prochain redémmarge. Pour qu'une règle soit appliquée immédiatement et être écrite sur disque, il faut saisir la commande deux fois dont une avec l'option –permanent et l'autre sans l'option –permanent.
Pour visualiser cette règle dans la configuration de firewalld, il convient de saisir la commande suivante :
[root@centos7 ~]# firewall-cmd --list-all-zones ... work (default, active) interfaces: enp0s3 sources: services: dhcpv6-client ipp-client ssh ports: masquerade: no forward-ports: icmp-blocks: rich rules: rule port port="80" protocol="tcp" accept
Notez que la Rich Rule est créée dans la Zone par Défaut. Il est possible de créer une Rich Rule dans une autre zone en utilisant l'option –zone=<zone> de la commande firewall-cmd :
[root@centos7 ~]# firewall-cmd --zone=public --add-rich-rule='rule port port="80" protocol="tcp" accept' success [root@centos7 ~]# firewall-cmd --list-all-zones ... public interfaces: sources: services: dhcpv6-client ssh ports: masquerade: no forward-ports: icmp-blocks: rich rules: rule port port="80" protocol="tcp" accept trusted interfaces: sources: services: ports: masquerade: no forward-ports: icmp-blocks: rich rules: work (default, active) interfaces: enp0s3 sources: services: dhcpv6-client ipp-client ssh ports: masquerade: no forward-ports: icmp-blocks: rich rules: rule port port="80" protocol="tcp" accept
Pour supprimer une Rich Rule, il faut copier la ligne entière la concernant qui se trouve dans la sortie de la commande firewall-cmd –list-all-zones :
[root@centos7 ~]# firewall-cmd --zone=public --remove-rich-rule='rule port port="80" protocol="tcp" accept' success
Le mode Panic de firewalld
Le mode Panic de firewalld permet de bloquer tout le trafic avec une seule commande. Pour connaître l'état du mode Panic, utilisez la commande suivante :
[root@centos7 ~]# firewall-cmd --query-panic no
Pour activer le mode Panic, il convient de saisir la commande suivante :
[root@centos7 ~]# firewall-cmd --panic-on success [root@centos7 ~]# firewall-cmd --query-panic yes
Pour désactiver le mode Panic, il convient de saisir la commande suivante :
[root@centos7 ~]# firewall-cmd --panic-off success [root@centos7 ~]# firewall-cmd --query-panic no
Gestion du Noyau
Rôle du noyau
Le noyau ou kernel est la partie du système d'exploitation qui gère les entrées/sorties avec des périphériques. Dans certains cas il est préférable de recompiler le noyau de Linux. La motivation de cette recompilation peut être :
- la diminution de la taille du noyau,
- la prise en charge de nouveau matériel,
- l'ajout de fonctionnalités,
- l'optimisation du code,
- la correction de bogues,
- le besoin d'une fonctionnalité expérimentale.
Commencez par identifier le noyau utilisé par votre machine :
[root@centos7 ~]# uname -r 3.10.0-327.13.1.el7.x86_64
Dans le cas d'une utilisation courante de Linux, il est cependant préférable de faire appel aux modules. Les modules se trouvent dans le répertoire /lib/modules/<version-du-noyau> :
[root@centos7 ~]# ls /lib/modules/`uname -r`/ build modules.alias modules.builtin modules.dep.bin modules.modesetting modules.softdep source weak-updates extra modules.alias.bin modules.builtin.bin modules.devname modules.networking modules.symbols updates kernel modules.block modules.dep modules.drm modules.order modules.symbols.bin vdso
Les commandes pour manipuler les modules sont :
- insmod
- rmmod
- lsmod
- modprobe
Par exemple :
[root@centos7 ~]# lsmod Module Size Used by ip6t_rpfilter 12546 1 ip6t_REJECT 12939 2 ipt_REJECT 12541 2 xt_conntrack 12760 9 ebtable_nat 12807 0 ebtable_broute 12731 0 bridge 119562 1 ebtable_broute stp 12976 1 bridge llc 14552 2 stp,bridge ebtable_filter 12827 0 ebtables 30913 3 ebtable_broute,ebtable_nat,ebtable_filter ip6table_nat 12864 1 nf_conntrack_ipv6 18738 6 nf_defrag_ipv6 34768 1 nf_conntrack_ipv6 nf_nat_ipv6 14131 1 ip6table_nat ip6table_mangle 12700 1 ip6table_security 12710 1 ip6table_raw 12683 1 ip6table_filter 12815 1 ip6_tables 27025 5 ip6table_filter,ip6table_mangle,ip6table_security,ip6table_nat,ip6table_raw iptable_nat 12875 1 nf_conntrack_ipv4 14862 5 nf_defrag_ipv4 12729 1 nf_conntrack_ipv4 nf_nat_ipv4 14115 1 iptable_nat nf_nat 26146 2 nf_nat_ipv4,nf_nat_ipv6 nf_conntrack 105745 6 nf_nat,nf_nat_ipv4,nf_nat_ipv6,xt_conntrack,nf_conntrack_ipv4,nf_conntrack_ipv6 iptable_mangle 12695 1 iptable_security 12705 1 iptable_raw 12678 1 iptable_filter 12810 1 dm_mirror 22135 0 dm_region_hash 20862 1 dm_mirror dm_log 18411 2 dm_region_hash,dm_mirror dm_mod 113292 2 dm_log,dm_mirror crc32_pclmul 13113 0 ghash_clmulni_intel 13259 0 aesni_intel 69884 0 lrw 13286 1 aesni_intel gf128mul 14951 1 lrw glue_helper 13990 1 aesni_intel snd_intel8x0 38274 1 ablk_helper 13597 1 aesni_intel cryptd 20359 3 ghash_clmulni_intel,aesni_intel,ablk_helper snd_ac97_codec 130605 1 snd_intel8x0 ac97_bus 12730 1 snd_ac97_codec ppdev 17671 0 snd_seq 66691 0 snd_seq_device 14356 1 snd_seq snd_pcm 105835 2 snd_ac97_codec,snd_intel8x0 pcspkr 12718 0 sg 40721 0 parport_pc 28165 0 parport 42348 2 ppdev,parport_pc snd_timer 29639 2 snd_pcm,snd_seq snd 83425 8 snd_ac97_codec,snd_intel8x0,snd_timer,snd_pcm,snd_seq,snd_seq_device soundcore 15047 1 snd i2c_piix4 22106 0 video 24400 0 i2c_core 40582 1 i2c_piix4 nfsd 302418 1 auth_rpcgss 59343 1 nfsd nfs_acl 12837 1 nfsd lockd 93600 1 nfsd grace 13295 2 nfsd,lockd sunrpc 300464 7 nfsd,auth_rpcgss,lockd,nfs_acl ip_tables 27240 5 iptable_security,iptable_filter,iptable_mangle,iptable_nat,iptable_raw xfs 939662 2 libcrc32c 12644 1 xfs sd_mod 45497 4 crc_t10dif 12714 1 sd_mod crct10dif_generic 12647 0 sr_mod 22416 0 cdrom 42556 1 sr_mod ata_generic 12910 0 pata_acpi 13038 0 ahci 29907 3 libahci 32031 1 ahci ata_piix 35038 0 crct10dif_pclmul 14289 1 crct10dif_common 12595 3 crct10dif_pclmul,crct10dif_generic,crc_t10dif crc32c_intel 22079 1 serio_raw 13462 0 libata 218730 5 ahci,pata_acpi,libahci,ata_generic,ata_piix e1000 149323 0
Pour ajouter un module, on peut utiliser la commande insmod ou modprobe. Cette dernière ajoute non seulement le module passé en argument mais également ses dépendances :
[root@centos7 ~]# modprobe bonding [root@centos7 ~]# lsmod | more Module Size Used by bonding 136705 0 ip6t_rpfilter 12546 1 ip6t_REJECT 12939 2 ipt_REJECT 12541 2 xt_conntrack 12760 9 ebtable_nat 12807 0 ebtable_broute 12731 0 bridge 119562 1 ebtable_broute stp 12976 1 bridge llc 14552 2 stp,bridge ebtable_filter 12827 0 ebtables 30913 3 ebtable_broute,ebtable_nat,ebtable_filter ip6table_nat 12864 1 nf_conntrack_ipv6 18738 6 nf_defrag_ipv6 34768 1 nf_conntrack_ipv6 nf_nat_ipv6 14131 1 ip6table_nat ip6table_mangle 12700 1 ip6table_security 12710 1 ip6table_raw 12683 1 ip6table_filter 12815 1 ip6_tables 27025 5 ip6table_filter,ip6table_mangle,ip6table_securit y,ip6table_nat,ip6table_raw --More--
Pour supprimer un module, on peut utiliser la commande rmmod ou modprobe -r. Cette dernière essaie de supprimer les dépendances non-utilisées :
[root@centos7 ~]# modprobe -r bonding [root@centos7 ~]# lsmod | more Module Size Used by ip6t_rpfilter 12546 1 ip6t_REJECT 12939 2 ipt_REJECT 12541 2 xt_conntrack 12760 9 ebtable_nat 12807 0 ebtable_broute 12731 0 bridge 119562 1 ebtable_broute stp 12976 1 bridge llc 14552 2 stp,bridge ebtable_filter 12827 0 ebtables 30913 3 ebtable_broute,ebtable_nat,ebtable_filter ip6table_nat 12864 1 nf_conntrack_ipv6 18738 6 nf_defrag_ipv6 34768 1 nf_conntrack_ipv6 nf_nat_ipv6 14131 1 ip6table_nat ip6table_mangle 12700 1 ip6table_security 12710 1 ip6table_raw 12683 1 ip6table_filter 12815 1 ip6_tables 27025 5 ip6table_filter,ip6table_mangle,ip6table_securit y,ip6table_nat,ip6table_raw iptable_nat 12875 1 --More--
Les dépendances des modules sont résolues par la commande modprobe grâce aux fichier /lib/modules/<version-du-noyau>/modules.dep. Ce dernier peut être créé manuellement grâce à la commande depmod :
[root@centos7 ~]# more /lib/modules/`uname -r`/modules.dep kernel/arch/x86/kernel/cpu/mcheck/mce-inject.ko: kernel/arch/x86/kernel/test_nx.ko: kernel/arch/x86/crypto/ablk_helper.ko: kernel/crypto/cryptd.ko kernel/arch/x86/crypto/glue_helper.ko: kernel/arch/x86/crypto/camellia-x86_64.ko: kernel/crypto/xts.ko kernel/crypto/lrw.ko kernel/crypto/gf128mul.ko kernel/arch/x86/crypto/glue_helper.ko kernel/arch/x86/crypto/blowfish-x86_64.ko: kernel/crypto/blowfish_common.ko kernel/arch/x86/crypto/twofish-x86_64.ko: kernel/crypto/twofish_common.ko kernel/arch/x86/crypto/twofish-x86_64-3way.ko: kernel/arch/x86/crypto/twofish-x86_64.ko kernel/crypto/twofish_common.ko kernel/crypto/xts.ko kernel/cryp to/lrw.ko kernel/crypto/gf128mul.ko kernel/arch/x86/crypto/glue_helper.ko kernel/arch/x86/crypto/salsa20-x86_64.ko: kernel/arch/x86/crypto/serpent-sse2-x86_64.ko: kernel/crypto/xts.ko kernel/crypto/serpent_generic.ko kernel/crypto/lrw.ko kernel/crypto/gf128mul.ko kern el/arch/x86/crypto/glue_helper.ko kernel/arch/x86/crypto/ablk_helper.ko kernel/crypto/cryptd.ko kernel/arch/x86/crypto/aesni-intel.ko: kernel/crypto/lrw.ko kernel/crypto/gf128mul.ko kernel/arch/x86/crypto/glue_helper.ko kernel/arch/x86/crypto/ablk_ helper.ko kernel/crypto/cryptd.ko kernel/arch/x86/crypto/ghash-clmulni-intel.ko: kernel/crypto/cryptd.ko kernel/arch/x86/crypto/crc32c-intel.ko: kernel/arch/x86/crypto/sha-mb/sha1-mb.ko: kernel/crypto/mcryptd.ko kernel/arch/x86/crypto/crc32-pclmul.ko: kernel/arch/x86/crypto/sha512-ssse3.ko: kernel/crypto/sha512_generic.ko kernel/arch/x86/crypto/crct10dif-pclmul.ko: kernel/crypto/crct10dif_common.ko kernel/arch/x86/crypto/camellia-aesni-avx-x86_64.ko: kernel/arch/x86/crypto/camellia-x86_64.ko kernel/crypto/xts.ko kernel/crypto/lrw.ko kernel/crypto/g f128mul.ko kernel/arch/x86/crypto/glue_helper.ko kernel/arch/x86/crypto/ablk_helper.ko kernel/crypto/cryptd.ko kernel/arch/x86/crypto/cast5-avx-x86_64.ko: kernel/crypto/cast5_generic.ko kernel/crypto/cast_common.ko kernel/arch/x86/crypto/ablk_helper.ko kernel/cry --More--(0%)
Il est possible d'obtenir des informations sur un module grâce à la commande modinfo :
[root@centos7 ~]# modinfo bonding filename: /lib/modules/3.10.0-327.13.1.el7.x86_64/kernel/drivers/net/bonding/bonding.ko author: Thomas Davis, tadavis@lbl.gov and many others description: Ethernet Channel Bonding Driver, v3.7.1 version: 3.7.1 license: GPL alias: rtnl-link-bond rhelversion: 7.2 srcversion: 49765A3F5CDFF2C3DCFD8E6 depends: intree: Y vermagic: 3.10.0-327.13.1.el7.x86_64 SMP mod_unload modversions signer: CentOS Linux kernel signing key sig_key: 6F:33:78:18:7D:83:CD:18:A4:3B:2E:0A:C4:9A:ED:8A:EF:FC:3A:C7 sig_hashalgo: sha256 parm: max_bonds:Max number of bonded devices (int) parm: tx_queues:Max number of transmit queues (default = 16) (int) parm: num_grat_arp:Number of peer notifications to send on failover event (alias of num_unsol_na) (int) parm: num_unsol_na:Number of peer notifications to send on failover event (alias of num_grat_arp) (int) parm: miimon:Link check interval in milliseconds (int) parm: updelay:Delay before considering link up, in milliseconds (int) parm: downdelay:Delay before considering link down, in milliseconds (int) parm: use_carrier:Use netif_carrier_ok (vs MII ioctls) in miimon; 0 for off, 1 for on (default) (int) parm: mode:Mode of operation; 0 for balance-rr, 1 for active-backup, 2 for balance-xor, 3 for broadcast, 4 for 802.3ad, 5 for balance-tlb, 6 for balance-alb (charp) parm: primary:Primary network device to use (charp) parm: primary_reselect:Reselect primary slave once it comes up; 0 for always (default), 1 for only if speed of primary is better, 2 for only on active slave failure (charp) parm: lacp_rate:LACPDU tx rate to request from 802.3ad partner; 0 for slow, 1 for fast (charp) parm: ad_select:803.ad aggregation selection logic; 0 for stable (default), 1 for bandwidth, 2 for count (charp) parm: min_links:Minimum number of available links before turning on carrier (int) parm: xmit_hash_policy:balance-xor and 802.3ad hashing method; 0 for layer 2 (default), 1 for layer 3+4, 2 for layer 2+3, 3 for encap layer 2+3, 4 for encap layer 3+4 (charp) parm: arp_interval:arp interval in milliseconds (int) parm: arp_ip_target:arp targets in n.n.n.n form (array of charp) parm: arp_validate:validate src/dst of ARP probes; 0 for none (default), 1 for active, 2 for backup, 3 for all (charp) parm: arp_all_targets:fail on any/all arp targets timeout; 0 for any (default), 1 for all (charp) parm: fail_over_mac:For active-backup, do not set all slaves to the same MAC; 0 for none (default), 1 for active, 2 for follow (charp) parm: all_slaves_active:Keep all frames received on an interface by setting active flag for all slaves; 0 for never (default), 1 for always. (int) parm: resend_igmp:Number of IGMP membership reports to send on link failure (int) parm: packets_per_slave:Packets to send per slave in balance-rr mode; 0 for a random slave, 1 packet per slave (default), >1 packets per slave. (int) parm: lp_interval:The number of seconds between instances where the bonding driver sends learning packets to each slaves peer switch. The default is 1. (uint)
Dernièrement, les fichiers dans le repertoire /etc/modprobe.d sont utilisés pour spécifier les options éventuelles à passer aux modules lors de leur chargement ainsi que les alias utilisés pour leur faire référence :
[root@centos7 ~]# ls /etc/modprobe.d mlx4.conf [root@centos7 ~]# cat /etc/modprobe.d/mlx4.conf # This file is intended for users to select the various module options # they need for the mlx4 driver. On upgrade of the rdma package, # any user made changes to this file are preserved. Any changes made # to the libmlx4.conf file in this directory are overwritten on # pacakge upgrade. # # Some sample options and what they would do # Enable debugging output, device managed flow control, and disable SRIOV #options mlx4_core debug_level=1 log_num_mgm_entry_size=-1 probe_vf=0 num_vfs=0 # # Enable debugging output and create SRIOV devices, but don't attach any of # the child devices to the host, only the parent device #options mlx4_core debug_level=1 probe_vf=0 num_vfs=7 # # Enable debugging output, SRIOV, and attach one of the SRIOV child devices # in addition to the parent device to the host #options mlx4_core debug_level=1 probe_vf=1 num_vfs=7 # # Enable per priority flow control for send and receive, setting both priority # 1 and 2 as no drop priorities #options mlx4_en pfctx=3 pfcrx=3
Compilation et installation du noyau et des modules
Commencez par installer les paquets necessaires :
[root@centos7 ~]# yum install qt3-devel libXi-devel gcc-c++ rpmdevtools ncurses-devel Loaded plugins: fastestmirror, langpacks Loading mirror speeds from cached hostfile * base: centos.mirrors.ovh.net * extras: centos.mirror.fr.planethoster.net * updates: mirror1.evolution-host.com Resolving Dependencies --> Running transaction check ---> Package gcc-c++.x86_64 0:4.8.5-4.el7 will be installed --> Processing Dependency: libstdc++-devel = 4.8.5-4.el7 for package: gcc-c++-4.8.5-4.el7.x86_64 ---> Package libXi-devel.x86_64 0:1.7.4-2.el7 will be installed --> Processing Dependency: xorg-x11-proto-devel for package: libXi-devel-1.7.4-2.el7.x86_64 --> Processing Dependency: pkgconfig(xfixes) for package: libXi-devel-1.7.4-2.el7.x86_64 --> Processing Dependency: pkgconfig(xext) for package: libXi-devel-1.7.4-2.el7.x86_64 --> Processing Dependency: pkgconfig(x11) for package: libXi-devel-1.7.4-2.el7.x86_64 --> Processing Dependency: pkgconfig(inputproto) for package: libXi-devel-1.7.4-2.el7.x86_64 ---> Package ncurses-devel.x86_64 0:5.9-13.20130511.el7 will be installed ---> Package qt3-devel.x86_64 0:3.3.8b-51.el7 will be installed --> Processing Dependency: qt3 = 3.3.8b-51.el7 for package: qt3-devel-3.3.8b-51.el7.x86_64 --> Processing Dependency: mesa-libGLU-devel for package: qt3-devel-3.3.8b-51.el7.x86_64 --> Processing Dependency: mesa-libGL-devel for package: qt3-devel-3.3.8b-51.el7.x86_64 --> Processing Dependency: libpng-devel for package: qt3-devel-3.3.8b-51.el7.x86_64 --> Processing Dependency: libmng-devel for package: qt3-devel-3.3.8b-51.el7.x86_64 --> Processing Dependency: libjpeg-devel for package: qt3-devel-3.3.8b-51.el7.x86_64 --> Processing Dependency: libXt-devel for package: qt3-devel-3.3.8b-51.el7.x86_64 --> Processing Dependency: libXrender-devel for package: qt3-devel-3.3.8b-51.el7.x86_64 --> Processing Dependency: libXrandr-devel for package: qt3-devel-3.3.8b-51.el7.x86_64 --> Processing Dependency: libXinerama-devel for package: qt3-devel-3.3.8b-51.el7.x86_64 --> Processing Dependency: libXft-devel for package: qt3-devel-3.3.8b-51.el7.x86_64 --> Processing Dependency: libXcursor-devel for package: qt3-devel-3.3.8b-51.el7.x86_64 --> Processing Dependency: libSM-devel for package: qt3-devel-3.3.8b-51.el7.x86_64 --> Processing Dependency: libICE-devel for package: qt3-devel-3.3.8b-51.el7.x86_64 --> Processing Dependency: freetype-devel for package: qt3-devel-3.3.8b-51.el7.x86_64 --> Processing Dependency: fontconfig-devel for package: qt3-devel-3.3.8b-51.el7.x86_64 --> Processing Dependency: libqui.so.1()(64bit) for package: qt3-devel-3.3.8b-51.el7.x86_64 --> Processing Dependency: libqt-mt.so.3()(64bit) for package: qt3-devel-3.3.8b-51.el7.x86_64 --> Processing Dependency: libmng.so.1()(64bit) for package: qt3-devel-3.3.8b-51.el7.x86_64 ---> Package rpmdevtools.noarch 0:8.3-5.el7 will be installed --> Processing Dependency: rpm-build >= 4.4.2.3 for package: rpmdevtools-8.3-5.el7.noarch --> Running transaction check ---> Package fontconfig-devel.x86_64 0:2.10.95-7.el7 will be installed --> Processing Dependency: pkgconfig(expat) for package: fontconfig-devel-2.10.95-7.el7.x86_64 ---> Package freetype-devel.x86_64 0:2.4.11-11.el7 will be installed --> Processing Dependency: zlib-devel for package: freetype-devel-2.4.11-11.el7.x86_64 ---> Package libICE-devel.x86_64 0:1.0.9-2.el7 will be installed ---> Package libSM-devel.x86_64 0:1.2.2-2.el7 will be installed ---> Package libX11-devel.x86_64 0:1.6.3-2.el7 will be installed --> Processing Dependency: pkgconfig(xcb) >= 1.1.92 for package: libX11-devel-1.6.3-2.el7.x86_64 --> Processing Dependency: pkgconfig(xcb) for package: libX11-devel-1.6.3-2.el7.x86_64 ---> Package libXcursor-devel.x86_64 0:1.1.14-2.1.el7 will be installed ---> Package libXext-devel.x86_64 0:1.3.3-3.el7 will be installed ---> Package libXfixes-devel.x86_64 0:5.0.1-2.1.el7 will be installed ---> Package libXft-devel.x86_64 0:2.3.2-2.el7 will be installed ---> Package libXinerama-devel.x86_64 0:1.1.3-2.1.el7 will be installed ---> Package libXrandr-devel.x86_64 0:1.4.2-2.el7 will be installed ---> Package libXrender-devel.x86_64 0:0.9.8-2.1.el7 will be installed ---> Package libXt-devel.x86_64 0:1.1.4-6.1.el7 will be installed ---> Package libjpeg-turbo-devel.x86_64 0:1.2.90-5.el7 will be installed ---> Package libmng.x86_64 0:1.0.10-14.el7 will be installed ---> Package libmng-devel.x86_64 0:1.0.10-14.el7 will be installed ---> Package libpng-devel.x86_64 2:1.5.13-7.el7_2 will be installed ---> Package libstdc++-devel.x86_64 0:4.8.5-4.el7 will be installed ---> Package mesa-libGL-devel.x86_64 0:10.6.5-3.20150824.el7 will be installed --> Processing Dependency: pkgconfig(xshmfence) >= 1.1 for package: mesa-libGL-devel-10.6.5-3.20150824.el7.x86_64 --> Processing Dependency: pkgconfig(libdrm) >= 2.4.38 for package: mesa-libGL-devel-10.6.5-3.20150824.el7.x86_64 --> Processing Dependency: pkgconfig(xxf86vm) for package: mesa-libGL-devel-10.6.5-3.20150824.el7.x86_64 --> Processing Dependency: pkgconfig(xdamage) for package: mesa-libGL-devel-10.6.5-3.20150824.el7.x86_64 --> Processing Dependency: gl-manpages for package: mesa-libGL-devel-10.6.5-3.20150824.el7.x86_64 ---> Package mesa-libGLU-devel.x86_64 0:9.0.0-4.el7 will be installed ---> Package qt3.x86_64 0:3.3.8b-51.el7 will be installed ---> Package rpm-build.x86_64 0:4.11.3-17.el7 will be installed --> Processing Dependency: system-rpm-config for package: rpm-build-4.11.3-17.el7.x86_64 --> Processing Dependency: perl(Thread::Queue) for package: rpm-build-4.11.3-17.el7.x86_64 ---> Package xorg-x11-proto-devel.noarch 0:7.7-12.el7 will be installed --> Running transaction check ---> Package expat-devel.x86_64 0:2.1.0-8.el7 will be installed ---> Package gl-manpages.noarch 0:1.1-7.20130122.el7 will be installed ---> Package libXdamage-devel.x86_64 0:1.1.4-4.1.el7 will be installed ---> Package libXxf86vm-devel.x86_64 0:1.1.3-2.1.el7 will be installed ---> Package libdrm-devel.x86_64 0:2.4.60-3.el7 will be installed ---> Package libxcb-devel.x86_64 0:1.11-4.el7 will be installed --> Processing Dependency: pkgconfig(xau) >= 0.99.2 for package: libxcb-devel-1.11-4.el7.x86_64 ---> Package libxshmfence-devel.x86_64 0:1.2-1.el7 will be installed ---> Package perl-Thread-Queue.noarch 0:3.02-2.el7 will be installed ---> Package redhat-rpm-config.noarch 0:9.1.0-68.el7.centos will be installed --> Processing Dependency: dwz >= 0.4 for package: redhat-rpm-config-9.1.0-68.el7.centos.noarch --> Processing Dependency: perl-srpm-macros for package: redhat-rpm-config-9.1.0-68.el7.centos.noarch ---> Package zlib-devel.x86_64 0:1.2.7-15.el7 will be installed --> Running transaction check ---> Package dwz.x86_64 0:0.11-3.el7 will be installed ---> Package libXau-devel.x86_64 0:1.0.8-2.1.el7 will be installed ---> Package perl-srpm-macros.noarch 0:1-8.el7 will be installed --> Finished Dependency Resolution Dependencies Resolved ======================================================================================================================================================================== Package Arch Version Repository Size ======================================================================================================================================================================== Installing: gcc-c++ x86_64 4.8.5-4.el7 base 7.2 M libXi-devel x86_64 1.7.4-2.el7 base 105 k ncurses-devel x86_64 5.9-13.20130511.el7 base 713 k qt3-devel x86_64 3.3.8b-51.el7 base 8.8 M rpmdevtools noarch 8.3-5.el7 base 97 k Installing for dependencies: dwz x86_64 0.11-3.el7 base 99 k expat-devel x86_64 2.1.0-8.el7 base 56 k fontconfig-devel x86_64 2.10.95-7.el7 base 128 k freetype-devel x86_64 2.4.11-11.el7 base 356 k gl-manpages noarch 1.1-7.20130122.el7 base 994 k libICE-devel x86_64 1.0.9-2.el7 base 49 k libSM-devel x86_64 1.2.2-2.el7 base 13 k libX11-devel x86_64 1.6.3-2.el7 base 980 k libXau-devel x86_64 1.0.8-2.1.el7 base 14 k libXcursor-devel x86_64 1.1.14-2.1.el7 base 23 k libXdamage-devel x86_64 1.1.4-4.1.el7 base 9.7 k libXext-devel x86_64 1.3.3-3.el7 base 75 k libXfixes-devel x86_64 5.0.1-2.1.el7 base 13 k libXft-devel x86_64 2.3.2-2.el7 base 19 k libXinerama-devel x86_64 1.1.3-2.1.el7 base 13 k libXrandr-devel x86_64 1.4.2-2.el7 base 21 k libXrender-devel x86_64 0.9.8-2.1.el7 base 16 k libXt-devel x86_64 1.1.4-6.1.el7 base 445 k libXxf86vm-devel x86_64 1.1.3-2.1.el7 base 18 k libdrm-devel x86_64 2.4.60-3.el7 base 92 k libjpeg-turbo-devel x86_64 1.2.90-5.el7 base 98 k libmng x86_64 1.0.10-14.el7 base 171 k libmng-devel x86_64 1.0.10-14.el7 base 85 k libpng-devel x86_64 2:1.5.13-7.el7_2 updates 122 k libstdc++-devel x86_64 4.8.5-4.el7 base 1.5 M libxcb-devel x86_64 1.11-4.el7 base 1.1 M libxshmfence-devel x86_64 1.2-1.el7 base 5.4 k mesa-libGL-devel x86_64 10.6.5-3.20150824.el7 base 147 k mesa-libGLU-devel x86_64 9.0.0-4.el7 base 9.0 k perl-Thread-Queue noarch 3.02-2.el7 base 17 k perl-srpm-macros noarch 1-8.el7 base 4.6 k qt3 x86_64 3.3.8b-51.el7 base 3.5 M redhat-rpm-config noarch 9.1.0-68.el7.centos base 77 k rpm-build x86_64 4.11.3-17.el7 base 143 k xorg-x11-proto-devel noarch 7.7-12.el7 base 281 k zlib-devel x86_64 1.2.7-15.el7 base 50 k Transaction Summary ======================================================================================================================================================================== Install 5 Packages (+36 Dependent packages) Total download size: 27 M Installed size: 90 M Is this ok [y/d/N]: y
Il n'est pas conseillé de compiler en tant que root pour des raisons de sécurité. Pour pouvoir utiliser le compte d'un utilisateur pour créer un nouveau noyau, celui-ci doit disposer de plusieurs Go d'espace libre.
Déplacer /home
Arrêtez votre machine virtuelle. Ajoutez un deuxième disque de 20 Go au contrôleur SATA en utilisant la section Stockage des paramètres de la machine virtuelle. Le format du disque doit être vmdk. Nommez ce disque RedHatHome et re-démarrez la machine virtuelle en vous connectant directement en tant que root.
Créez une seule partition sur /dev/sdb :
[root@centos7 ~]# fdisk /dev/sdb Welcome to fdisk (util-linux 2.23.2). Changes will remain in memory only, until you decide to write them. Be careful before using the write command. Device does not contain a recognized partition table Building a new DOS disklabel with disk identifier 0x88708329. Command (m for help): n Partition type: p primary (0 primary, 0 extended, 4 free) e extended Select (default p): p Partition number (1-4, default 1): First sector (2048-41943039, default 2048): Using default value 2048 Last sector, +sectors or +size{K,M,G} (2048-41943039, default 41943039): Using default value 41943039 Partition 1 of type Linux and of size 20 GiB is set Command (m for help): w The partition table has been altered! Calling ioctl() to re-read partition table. Syncing disks.
Créez maintenant un système de fichiers ext4 sur /dev/sdb1 :
[root@centos7 ~]# mkfs.ext4 /dev/sdb1 mke2fs 1.42.9 (28-Dec-2013) Filesystem label= OS type: Linux Block size=4096 (log=2) Fragment size=4096 (log=2) Stride=0 blocks, Stripe width=0 blocks 1310720 inodes, 5242624 blocks 262131 blocks (5.00%) reserved for the super user First data block=0 Maximum filesystem blocks=2153775104 160 block groups 32768 blocks per group, 32768 fragments per group 8192 inodes per group Superblock backups stored on blocks: 32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208, 4096000 Allocating group tables: done Writing inode tables: done Creating journal (32768 blocks): done Writing superblocks and filesystem accounting information: done
Montez /dev/sdb1 sur /mnt :
[root@centos7 ~]# mount /dev/sdb1 /mnt
Copiez le contenu de /home vers /mnt :
[root@centos7 ~]# cp -a /home/* /mnt
Démontez /dev/sdb1 et déplacez /home vers /root :
[root@centos7 ~]# umount /mnt [root@centos7 ~]# mv /home /root
Identifiez l'UUID de /dev/sdb1 :
[root@centos7 ~]# ls -l /dev/disk/by-uuid/ | grep sdb1 lrwxrwxrwx. 1 root root 10 9 août 06:47 a5e2457f-7337-41f4-b958-e403eb419f94 -> ../../sdb1
Editez le fichier /etc/fstab :
- /etc/fstab
# # /etc/fstab # Created by anaconda on Sat Apr 30 11:27:02 2016 # # Accessible filesystems, by reference, are maintained under '/dev/disk' # See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info # UUID=e65fe7da-cda8-4f5a-a827-1b5cabe94bed / xfs defaults 0 0 UUID=2d947276-66e8-41f4-8475-b64b67d7a249 /boot xfs defaults 0 0 UUID=3181601a-7295-4ef0-a92c-f21f76b18e64 swap swap defaults 0 0 UUID=a5e2457f-7337-41f4-b958-e403eb419f94 /home ext4 defaults 1 2
Créez le point de montage /home :
[root@centos7 ~]# mkdir /home
Montez /dev/sdb1 :
[root@centos7 ~]# mount -a [root@centos7 ~]# mount sysfs on /sys type sysfs (rw,nosuid,nodev,noexec,relatime,seclabel) proc on /proc type proc (rw,nosuid,nodev,noexec,relatime) devtmpfs on /dev type devtmpfs (rw,nosuid,seclabel,size=236036k,nr_inodes=59009,mode=755) securityfs on /sys/kernel/security type securityfs (rw,nosuid,nodev,noexec,relatime) tmpfs on /dev/shm type tmpfs (rw,nosuid,nodev,seclabel) devpts on /dev/pts type devpts (rw,nosuid,noexec,relatime,seclabel,gid=5,mode=620,ptmxmode=000) tmpfs on /run type tmpfs (rw,nosuid,nodev,seclabel,mode=755) tmpfs on /sys/fs/cgroup type tmpfs (ro,nosuid,nodev,noexec,seclabel,mode=755) cgroup on /sys/fs/cgroup/systemd type cgroup (rw,nosuid,nodev,noexec,relatime,xattr,release_agent=/usr/lib/systemd/systemd-cgroups-agent,name=systemd) pstore on /sys/fs/pstore type pstore (rw,nosuid,nodev,noexec,relatime) cgroup on /sys/fs/cgroup/cpu,cpuacct type cgroup (rw,nosuid,nodev,noexec,relatime,cpuacct,cpu) cgroup on /sys/fs/cgroup/hugetlb type cgroup (rw,nosuid,nodev,noexec,relatime,hugetlb) cgroup on /sys/fs/cgroup/net_cls type cgroup (rw,nosuid,nodev,noexec,relatime,net_cls) cgroup on /sys/fs/cgroup/cpuset type cgroup (rw,nosuid,nodev,noexec,relatime,cpuset) cgroup on /sys/fs/cgroup/freezer type cgroup (rw,nosuid,nodev,noexec,relatime,freezer) cgroup on /sys/fs/cgroup/memory type cgroup (rw,nosuid,nodev,noexec,relatime,memory) cgroup on /sys/fs/cgroup/blkio type cgroup (rw,nosuid,nodev,noexec,relatime,blkio) cgroup on /sys/fs/cgroup/devices type cgroup (rw,nosuid,nodev,noexec,relatime,devices) cgroup on /sys/fs/cgroup/perf_event type cgroup (rw,nosuid,nodev,noexec,relatime,perf_event) configfs on /sys/kernel/config type configfs (rw,relatime) /dev/sda2 on / type xfs (rw,relatime,seclabel,attr2,inode64,noquota) selinuxfs on /sys/fs/selinux type selinuxfs (rw,relatime) systemd-1 on /proc/sys/fs/binfmt_misc type autofs (rw,relatime,fd=30,pgrp=1,timeout=300,minproto=5,maxproto=5,direct) debugfs on /sys/kernel/debug type debugfs (rw,relatime) hugetlbfs on /dev/hugepages type hugetlbfs (rw,relatime,seclabel) mqueue on /dev/mqueue type mqueue (rw,relatime,seclabel) tmpfs on /tmp type tmpfs (rw,seclabel) sunrpc on /var/lib/nfs/rpc_pipefs type rpc_pipefs (rw,relatime) nfsd on /proc/fs/nfsd type nfsd (rw,relatime) /dev/sda1 on /boot type xfs (rw,relatime,seclabel,attr2,inode64,noquota) /dev/sdb1 on /home type ext4 (rw,relatime,seclabel,data=ordered) tmpfs on /run/user/1000 type tmpfs (rw,nosuid,nodev,relatime,seclabel,size=50080k,mode=700,uid=1000,gid=1000)
Notez la taille de /home :
[trainee@centos7 ~]$ df -h Sys. de fichiers Taille Utilisé Dispo Uti% Monté sur /dev/sda2 9,8G 4,4G 5,5G 45% / devtmpfs 231M 0 231M 0% /dev tmpfs 245M 0 245M 0% /dev/shm tmpfs 245M 4,7M 240M 2% /run tmpfs 245M 0 245M 0% /sys/fs/cgroup tmpfs 245M 72K 245M 1% /tmp /dev/sda1 197M 197M 20K 100% /boot /dev/sdb1 20G 65M 19G 1% /home tmpfs 49M 0 49M 0% /run/user/1000
Fermez la session de root et connectez-vous en tant que trainee.
Créer un Nouveau Noyau
Pour créer l'arborescence de l'environnement de création de paquets dans /home/trainee, utilisez la commande rpmdev-setuptree :
[trainee@centos7 ~]$ rpmdev-setuptree [trainee@centos7 ~]$ ls -laR rpmbuild/ rpmbuild/: total 28 drwxrwxr-x. 7 trainee trainee 4096 9 août 06:56 . drwx------. 15 trainee trainee 4096 9 août 06:56 .. drwxrwxr-x. 2 trainee trainee 4096 9 août 06:56 BUILD drwxrwxr-x. 2 trainee trainee 4096 9 août 06:56 RPMS drwxrwxr-x. 2 trainee trainee 4096 9 août 06:56 SOURCES drwxrwxr-x. 2 trainee trainee 4096 9 août 06:56 SPECS drwxrwxr-x. 2 trainee trainee 4096 9 août 06:56 SRPMS rpmbuild/BUILD: total 8 drwxrwxr-x. 2 trainee trainee 4096 9 août 06:56 . drwxrwxr-x. 7 trainee trainee 4096 9 août 06:56 .. rpmbuild/RPMS: total 8 drwxrwxr-x. 2 trainee trainee 4096 9 août 06:56 . drwxrwxr-x. 7 trainee trainee 4096 9 août 06:56 .. rpmbuild/SOURCES: total 8 drwxrwxr-x. 2 trainee trainee 4096 9 août 06:56 . drwxrwxr-x. 7 trainee trainee 4096 9 août 06:56 .. rpmbuild/SPECS: total 8 drwxrwxr-x. 2 trainee trainee 4096 9 août 06:56 . drwxrwxr-x. 7 trainee trainee 4096 9 août 06:56 .. rpmbuild/SRPMS: total 8 drwxrwxr-x. 2 trainee trainee 4096 9 août 06:56 . drwxrwxr-x. 7 trainee trainee 4096 9 août 06:56 ..
Téléchargez le rpm source du noyau :
[trainee@centos7 ~]$ uname -a Linux centos7.fenestros.loc 3.10.0-327.13.1.el7.x86_64 #1 SMP Thu Mar 31 16:04:38 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux [trainee@centos7 ~]$ wget http://vault.centos.org/7.2.1511/updates/Source/SPackages/kernel-3.10.0-327.13.1.el7.src.rpm --2016-08-09 06:57:08-- http://vault.centos.org/7.2.1511/updates/Source/SPackages/kernel-3.10.0-327.13.1.el7.src.rpm Résolution de vault.centos.org (vault.centos.org)... 88.208.217.170, 2a00:f10:10b:13::10 Connexion vers vault.centos.org (vault.centos.org)|88.208.217.170|:80...connecté. requête HTTP transmise, en attente de la réponse...200 OK Longueur: 83047820 (79M) [application/x-rpm] Sauvegarde en : «kernel-3.10.0-327.13.1.el7.src.rpm» 100%[==============================================================================================================================>] 83 047 820 496KB/s ds 2m 52s 2016-08-09 07:00:00 (471 KB/s) - «kernel-3.10.0-327.13.1.el7.src.rpm» sauvegardé [83047820/83047820]
Installez maintenant les dépendances pour le rpm source en tant que root :
[trainee@centos7 ~]$ su - Mot de passe : fenestros [root@centos7 ~]# yum-builddep /home/trainee/kernel-3.10.0-327.13.1.el7.src.rpm Loaded plugins: fastestmirror, langpacks Enabling base-source repository Enabling extras-source repository Enabling updates-source repository base-source | 2.9 kB 00:00:00 extras-source | 2.9 kB 00:00:00 updates-source | 2.9 kB 00:00:00 (1/3): extras-source/7/primary_db | 43 kB 00:00:00 (2/3): base-source/7/primary_db | 949 kB 00:00:00 (3/3): updates-source/7/primary_db | 140 kB 00:00:00 Loading mirror speeds from cached hostfile * base: centos.mirrors.ovh.net * extras: centos.mirror.fr.planethoster.net * updates: mirror1.evolution-host.com Checking for new repos for mirrors Getting requirements for kernel-3.10.0-327.13.1.el7.src --> Already installed : kmod-20-5.el7.x86_64 --> Already installed : patch-2.7.1-8.el7.x86_64 --> Already installed : bash-4.2.46-19.el7.x86_64 --> Already installed : coreutils-8.22-15.el7_2.1.x86_64 --> Already installed : 2:tar-1.26-29.el7.x86_64 --> Already installed : xz-5.1.2-12alpha.el7.x86_64 --> Already installed : 1:findutils-4.5.11-5.el7.x86_64 --> Already installed : gzip-1.5-8.el7.x86_64 --> m4-1.4.16-10.el7.x86_64 --> Already installed : 4:perl-5.16.3-286.el7.x86_64 --> Already installed : 1:make-3.82-21.el7.x86_64 --> Already installed : diffutils-3.3-4.el7.x86_64 --> Already installed : gawk-4.0.2-4.el7.x86_64 --> Already installed : gcc-4.8.5-4.el7.x86_64 --> Already installed : binutils-2.23.52.0.1-55.el7.x86_64 --> Already installed : redhat-rpm-config-9.1.0-68.el7.centos.noarch --> Already installed : hostname-3.13-3.el7.x86_64 --> Already installed : net-tools-2.0-0.17.20131004git.el7.x86_64 --> Already installed : bc-1.06.95-13.el7.x86_64 --> xmlto-0.0.25-7.el7.x86_64 --> asciidoc-8.6.8-5.el7.noarch --> Already installed : 1:openssl-1.0.1e-51.el7_2.4.x86_64 --> hmaccalc-0.9.13-4.el7.x86_64 --> python-devel-2.7.5-34.el7.x86_64 --> newt-devel-0.52.15-4.el7.x86_64 --> perl-ExtUtils-Embed-1.30-286.el7.noarch --> Already installed : rpm-build-4.11.3-17.el7.x86_64 --> Already installed : elfutils-0.163-3.el7.x86_64 --> Running transaction check ---> Package asciidoc.noarch 0:8.6.8-5.el7 will be installed --> Processing Dependency: source-highlight for package: asciidoc-8.6.8-5.el7.noarch --> Processing Dependency: graphviz for package: asciidoc-8.6.8-5.el7.noarch --> Processing Dependency: docbook-style-xsl for package: asciidoc-8.6.8-5.el7.noarch ---> Package hmaccalc.x86_64 0:0.9.13-4.el7 will be installed ---> Package m4.x86_64 0:1.4.16-10.el7 will be installed ---> Package newt-devel.x86_64 0:0.52.15-4.el7 will be installed --> Processing Dependency: slang-devel for package: newt-devel-0.52.15-4.el7.x86_64 ---> Package perl-ExtUtils-Embed.noarch 0:1.30-286.el7 will be installed --> Processing Dependency: perl-devel for package: perl-ExtUtils-Embed-1.30-286.el7.noarch ---> Package python-devel.x86_64 0:2.7.5-34.el7 will be installed ---> Package xmlto.x86_64 0:0.0.25-7.el7 will be installed --> Processing Dependency: text-www-browser for package: xmlto-0.0.25-7.el7.x86_64 --> Processing Dependency: flex for package: xmlto-0.0.25-7.el7.x86_64 --> Processing Dependency: docbook-dtds for package: xmlto-0.0.25-7.el7.x86_64 --> Running transaction check ---> Package docbook-dtds.noarch 0:1.0-60.el7 will be installed --> Processing Dependency: sgml-common for package: docbook-dtds-1.0-60.el7.noarch ---> Package docbook-style-xsl.noarch 0:1.78.1-3.el7 will be installed ---> Package flex.x86_64 0:2.5.37-3.el7 will be installed ---> Package graphviz.x86_64 0:2.30.1-19.el7 will be installed --> Processing Dependency: libXaw.so.7()(64bit) for package: graphviz-2.30.1-19.el7.x86_64 ---> Package lynx.x86_64 0:2.8.8-0.3.dev15.el7 will be installed ---> Package perl-devel.x86_64 4:5.16.3-286.el7 will be installed --> Processing Dependency: systemtap-sdt-devel for package: 4:perl-devel-5.16.3-286.el7.x86_64 --> Processing Dependency: perl(ExtUtils::ParseXS) for package: 4:perl-devel-5.16.3-286.el7.x86_64 --> Processing Dependency: perl(ExtUtils::MakeMaker) for package: 4:perl-devel-5.16.3-286.el7.x86_64 --> Processing Dependency: perl(ExtUtils::Installed) for package: 4:perl-devel-5.16.3-286.el7.x86_64 --> Processing Dependency: libdb-devel for package: 4:perl-devel-5.16.3-286.el7.x86_64 --> Processing Dependency: gdbm-devel for package: 4:perl-devel-5.16.3-286.el7.x86_64 ---> Package slang-devel.x86_64 0:2.2.4-11.el7 will be installed ---> Package source-highlight.x86_64 0:3.1.6-6.el7 will be installed --> Processing Dependency: ctags for package: source-highlight-3.1.6-6.el7.x86_64 --> Processing Dependency: libboost_regex.so.1.53.0()(64bit) for package: source-highlight-3.1.6-6.el7.x86_64 --> Running transaction check ---> Package boost-regex.x86_64 0:1.53.0-25.el7 will be installed ---> Package ctags.x86_64 0:5.8-13.el7 will be installed ---> Package gdbm-devel.x86_64 0:1.10-8.el7 will be installed ---> Package libXaw.x86_64 0:1.0.12-5.el7 will be installed ---> Package libdb-devel.x86_64 0:5.3.21-19.el7 will be installed ---> Package perl-ExtUtils-Install.noarch 0:1.58-286.el7 will be installed ---> Package perl-ExtUtils-MakeMaker.noarch 0:6.68-3.el7 will be installed --> Processing Dependency: perl(Test::Harness) for package: perl-ExtUtils-MakeMaker-6.68-3.el7.noarch --> Processing Dependency: perl(ExtUtils::Manifest) for package: perl-ExtUtils-MakeMaker-6.68-3.el7.noarch ---> Package perl-ExtUtils-ParseXS.noarch 1:3.18-2.el7 will be installed ---> Package sgml-common.noarch 0:0.6.3-39.el7 will be installed ---> Package systemtap-sdt-devel.x86_64 0:2.8-10.el7 will be installed --> Running transaction check ---> Package perl-ExtUtils-Manifest.noarch 0:1.61-244.el7 will be installed ---> Package perl-Test-Harness.noarch 0:3.28-3.el7 will be installed --> Finished Dependency Resolution Dependencies Resolved ======================================================================================================================================================================== Package Arch Version Repository Size ======================================================================================================================================================================== Installing: asciidoc noarch 8.6.8-5.el7 base 251 k hmaccalc x86_64 0.9.13-4.el7 base 26 k m4 x86_64 1.4.16-10.el7 base 256 k newt-devel x86_64 0.52.15-4.el7 base 51 k perl-ExtUtils-Embed noarch 1.30-286.el7 base 49 k python-devel x86_64 2.7.5-34.el7 base 391 k xmlto x86_64 0.0.25-7.el7 base 50 k Installing for dependencies: boost-regex x86_64 1.53.0-25.el7 base 294 k ctags x86_64 5.8-13.el7 base 155 k docbook-dtds noarch 1.0-60.el7 base 226 k docbook-style-xsl noarch 1.78.1-3.el7 base 2.0 M flex x86_64 2.5.37-3.el7 base 292 k gdbm-devel x86_64 1.10-8.el7 base 47 k graphviz x86_64 2.30.1-19.el7 base 1.3 M libXaw x86_64 1.0.12-5.el7 base 190 k libdb-devel x86_64 5.3.21-19.el7 base 38 k lynx x86_64 2.8.8-0.3.dev15.el7 base 1.4 M perl-ExtUtils-Install noarch 1.58-286.el7 base 73 k perl-ExtUtils-MakeMaker noarch 6.68-3.el7 base 275 k perl-ExtUtils-Manifest noarch 1.61-244.el7 base 31 k perl-ExtUtils-ParseXS noarch 1:3.18-2.el7 base 77 k perl-Test-Harness noarch 3.28-3.el7 base 302 k perl-devel x86_64 4:5.16.3-286.el7 base 452 k sgml-common noarch 0.6.3-39.el7 base 55 k slang-devel x86_64 2.2.4-11.el7 base 91 k source-highlight x86_64 3.1.6-6.el7 base 611 k systemtap-sdt-devel x86_64 2.8-10.el7 base 65 k Transaction Summary ======================================================================================================================================================================== Install 7 Packages (+20 Dependent packages) Total download size: 9.0 M Installed size: 43 M Is this ok [y/d/N]: y
Installez maintenant le paquet kernel-3.10.0-327.13.1.el7.src.rpm :
[root@centos7 ~]# exit logout [trainee@centos7 ~]$ rpm -Uvh kernel-3.10.0-327.13.1.el7.src.rpm Mise à jour / installation... 1:kernel-3.10.0-327.13.1.el7 ################################# [100%] attention : utilisateur builder inexistant - utilisation de root attention : groupe builder inexistant - utilisation de root attention : utilisateur builder inexistant - utilisation de root attention : groupe builder inexistant - utilisation de root attention : utilisateur builder inexistant - utilisation de root attention : groupe builder inexistant - utilisation de root attention : utilisateur builder inexistant - utilisation de root attention : groupe builder inexistant - utilisation de root attention : utilisateur builder inexistant - utilisation de root attention : groupe builder inexistant - utilisation de root attention : utilisateur builder inexistant - utilisation de root attention : groupe builder inexistant - utilisation de root attention : utilisateur builder inexistant - utilisation de root attention : groupe builder inexistant - utilisation de root attention : utilisateur builder inexistant - utilisation de root attention : groupe builder inexistant - utilisation de root attention : utilisateur builder inexistant - utilisation de root attention : groupe builder inexistant - utilisation de root attention : utilisateur builder inexistant - utilisation de root attention : groupe builder inexistant - utilisation de root attention : utilisateur builder inexistant - utilisation de root attention : groupe builder inexistant - utilisation de root attention : utilisateur builder inexistant - utilisation de root attention : groupe builder inexistant - utilisation de root attention : utilisateur builder inexistant - utilisation de root attention : groupe builder inexistant - utilisation de root attention : utilisateur builder inexistant - utilisation de root attention : groupe builder inexistant - utilisation de root attention : utilisateur builder inexistant - utilisation de root attention : groupe builder inexistant - utilisation de root attention : utilisateur builder inexistant - utilisation de root attention : groupe builder inexistant - utilisation de root attention : utilisateur builder inexistant - utilisation de root attention : groupe builder inexistant - utilisation de root attention : utilisateur builder inexistant - utilisation de root attention : groupe builder inexistant - utilisation de root attention : utilisateur builder inexistant - utilisation de root attention : groupe builder inexistant - utilisation de root attention : utilisateur builder inexistant - utilisation de root attention : groupe builder inexistant - utilisation de root attention : utilisateur builder inexistant - utilisation de root attention : groupe builder inexistant - utilisation de root attention : utilisateur builder inexistant - utilisation de root attention : groupe builder inexistant - utilisation de root attention : utilisateur builder inexistant - utilisation de root attention : groupe builder inexistant - utilisation de root attention : utilisateur builder inexistant - utilisation de root attention : groupe builder inexistant - utilisation de root attention : utilisateur builder inexistant - utilisation de root attention : groupe builder inexistant - utilisation de root attention : utilisateur builder inexistant - utilisation de root attention : groupe builder inexistant - utilisation de root attention : utilisateur builder inexistant - utilisation de root attention : groupe builder inexistant - utilisation de root attention : utilisateur builder inexistant - utilisation de root attention : groupe builder inexistant - utilisation de root attention : utilisateur builder inexistant - utilisation de root attention : groupe builder inexistant - utilisation de root attention : utilisateur builder inexistant - utilisation de root attention : groupe builder inexistant - utilisation de root attention : utilisateur builder inexistant - utilisation de root attention : groupe builder inexistant - utilisation de root
Les erreurs sont sans importance.
Préparer l'Arborescence Source du Noyau
Naviguez vers le repertoire ~/rpmbuild/SPECS et utilisez la commande rpmbuild pour préparer l'arborescence source du noyau :
[trainee@centos7 ~]$ cd ~/rpmbuild/SPECS [trainee@centos7 SPECS]$ rpmbuild -bp --target=$(uname -m) kernel.spec Construction pour plate-formes cibles: x86_64 Construction pour cible x86_64 erreur : Dépendances de construction manquantes: pesign >= 0.109-4 est nécessaire pour kernel-3.10.0-327.13.1.el7.x86_64 elfutils-devel est nécessaire pour kernel-3.10.0-327.13.1.el7.x86_64 binutils-devel est nécessaire pour kernel-3.10.0-327.13.1.el7.x86_64 bison est nécessaire pour kernel-3.10.0-327.13.1.el7.x86_64 audit-libs-devel est nécessaire pour kernel-3.10.0-327.13.1.el7.x86_64 numactl-devel est nécessaire pour kernel-3.10.0-327.13.1.el7.x86_64 pciutils-devel est nécessaire pour kernel-3.10.0-327.13.1.el7.x86_64
Notez qu'il existe toujours des dépendances manquantes !
Redevenez root et installez les dépendances :
[trainee@centos7 SPECS]$ cd - /home/trainee [trainee@centos7 ~]$ su - Mot de passe : Dernière connexion : lundi 8 août 2016 à 16:39:54 CEST sur pts/0 [root@centos7 ~]# yum install elfutils-devel binutils-devel bison audit-libs-devel numactl-devel pciutils-devel pesign ...
Vous pouvez maintenant utilisez la commande rpmbuild pour préparer l'arborescence source du noyau :
[root@centos7 ~]# exit logout [trainee@centos7 ~]$ cd ~/rpmbuild/SPECS [trainee@centos7 SPECS]$ rpmbuild -bp --target=$(uname -m) kernel.spec Construction pour plate-formes cibles: x86_64 Construction pour cible x86_64 Exécution_de(%prep) : /bin/sh -e /var/tmp/rpm-tmp.xP6OkC + umask 022 + cd /home/trainee/rpmbuild/BUILD + patch_command='patch -p1 -F1 -s' + cd /home/trainee/rpmbuild/BUILD + rm -rf kernel-3.10.0-327.13.1.el7 + /usr/bin/mkdir -p kernel-3.10.0-327.13.1.el7 + cd kernel-3.10.0-327.13.1.el7 + /usr/bin/xz -dc /home/trainee/rpmbuild/SOURCES/linux-3.10.0-327.13.1.el7.tar.xz + /usr/bin/tar -xf - ...
A l'issu du processus, examinez l'arborescence :
[trainee@centos7 SPECS]$ ls -la ~/rpmbuild/BUILD/kernel-3.10.0-327.13.1.el7/linux-3.10.0-327.13.1.el7.x86_64/ total 824 drwxr-xr-x. 24 trainee trainee 4096 8 août 16:52 . drwxr-xr-x. 3 trainee trainee 4096 8 août 16:52 .. drwxr-xr-x. 32 trainee trainee 4096 8 août 16:52 arch drwxr-xr-x. 3 trainee trainee 4096 29 févr. 18:35 block -rw-r--r--. 1 trainee trainee 126411 8 août 16:52 .config -rw-r--r--. 1 trainee trainee 126420 8 août 16:52 .config.old drwxr-xr-x. 2 trainee trainee 4096 8 août 16:52 configs -rw-r--r--. 1 trainee trainee 18693 29 févr. 18:35 COPYING -rw-r--r--. 1 trainee trainee 95317 29 févr. 18:35 CREDITS drwxr-xr-x. 4 trainee trainee 4096 29 févr. 18:35 crypto drwxr-xr-x. 101 trainee trainee 12288 8 août 16:52 Documentation drwxr-xr-x. 114 trainee trainee 4096 29 févr. 18:35 drivers drwxr-xr-x. 36 trainee trainee 4096 8 août 16:52 firmware drwxr-xr-x. 74 trainee trainee 4096 29 févr. 18:35 fs -rw-r--r--. 1 trainee trainee 46 29 févr. 18:35 .gitattributes drwxr-xr-x. 27 trainee trainee 4096 8 août 16:52 include drwxr-xr-x. 2 trainee trainee 4096 29 févr. 18:35 init drwxr-xr-x. 2 trainee trainee 4096 29 févr. 18:35 ipc -rw-r--r--. 1 trainee trainee 2536 29 févr. 18:35 Kbuild -rw-r--r--. 1 trainee trainee 505 29 févr. 18:35 Kconfig drwxr-xr-x. 11 trainee trainee 4096 8 août 16:52 kernel drwxr-xr-x. 10 trainee trainee 4096 8 août 16:52 lib -rw-r--r--. 1 trainee trainee 4465 29 févr. 18:35 .mailmap -rw-r--r--. 1 trainee trainee 260223 29 févr. 18:35 MAINTAINERS -rw-r--r--. 1 trainee trainee 49887 29 févr. 18:35 Makefile drwxr-xr-x. 2 trainee trainee 4096 29 févr. 18:35 mm drwxr-xr-x. 56 trainee trainee 4096 29 févr. 18:35 net -rw-r--r--. 1 trainee trainee 18736 29 févr. 18:35 README -rw-r--r--. 1 trainee trainee 7485 29 févr. 18:35 REPORTING-BUGS drwxr-xr-x. 12 trainee trainee 4096 29 févr. 18:35 samples -rw-r--r--. 1 trainee trainee 0 8 août 16:52 .scmversion drwxr-xr-x. 13 trainee trainee 4096 8 août 16:52 scripts drwxr-xr-x. 9 trainee trainee 4096 29 févr. 18:35 security drwxr-xr-x. 23 trainee trainee 4096 29 févr. 18:35 sound drwxr-xr-x. 19 trainee trainee 4096 29 févr. 18:35 tools drwxr-xr-x. 2 trainee trainee 4096 8 août 16:52 usr drwxr-xr-x. 3 trainee trainee 4096 29 févr. 18:35 virt
A l'intérieur de ce répertoire se trouve le fichier .config utilisé pour compiler le noyau :
[trainee@centos7 SPECS]$ more ~/rpmbuild/BUILD/kernel-3.10.0-327.13.1.el7/linux-3.10.0-327.13.1.el7.x86_64/.config # # Automatically generated file; DO NOT EDIT. # Linux/x86_64 3.10.0 Kernel Configuration # CONFIG_64BIT=y CONFIG_X86_64=y CONFIG_X86=y CONFIG_INSTRUCTION_DECODER=y CONFIG_OUTPUT_FORMAT="elf64-x86-64" CONFIG_ARCH_DEFCONFIG="arch/x86/configs/x86_64_defconfig" CONFIG_LOCKDEP_SUPPORT=y CONFIG_STACKTRACE_SUPPORT=y CONFIG_HAVE_LATENCYTOP_SUPPORT=y CONFIG_MMU=y CONFIG_NEED_DMA_MAP_STATE=y CONFIG_NEED_SG_DMA_LENGTH=y CONFIG_GENERIC_ISA_DMA=y CONFIG_GENERIC_BUG=y CONFIG_GENERIC_BUG_RELATIVE_POINTERS=y CONFIG_GENERIC_HWEIGHT=y CONFIG_ARCH_MAY_HAVE_PC_FDC=y CONFIG_RWSEM_XCHGADD_ALGORITHM=y CONFIG_GENERIC_CALIBRATE_DELAY=y CONFIG_ARCH_HAS_CPU_RELAX=y CONFIG_ARCH_HAS_CACHE_LINE_SIZE=y CONFIG_ARCH_HAS_CPU_AUTOPROBE=y CONFIG_HAVE_SETUP_PER_CPU_AREA=y CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK=y CONFIG_NEED_PER_CPU_PAGE_FIRST_CHUNK=y CONFIG_ARCH_HIBERNATION_POSSIBLE=y CONFIG_ARCH_SUSPEND_POSSIBLE=y CONFIG_ZONE_DMA32=y CONFIG_AUDIT_ARCH=y CONFIG_ARCH_SUPPORTS_OPTIMIZED_INLINING=y CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y CONFIG_HAVE_INTEL_TXT=y CONFIG_X86_64_SMP=y CONFIG_X86_HT=y CONFIG_ARCH_HWEIGHT_CFLAGS="-fcall-saved-rdi -fcall-saved-rsi -fcall-saved-rdx -fcall-saved-rcx -fcall-saved-r8 -fcall-saved-r9 -fcall-saved-r10 -fcall-saved-r11" CONFIG_ARCH_SUPPORTS_UPROBES=y CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" CONFIG_IRQ_WORK=y CONFIG_BUILDTIME_EXTABLE_SORT=y # --Plus--(1%)
Ce fichier est généré par une des trois commandes suivantes et ne doit pas être édité manuellement :
- make config
- make menuconfig
- make xconfig
Dans ce fichier, vous pouvez constater la présence de lignes correspondantes à des fonctionalités suivies par une lettre ou une valeur. Dans le cas d'une lettre, la signification est la suivante :
- y
- la fonctionalité est incluse dans le noyau monolithique ou dans le cas d'une dépendance d'un module, dans le module concerné,
- m
- la fonctionalité est incluse en tant que module,
- n
- la fonctionalité n'est pas incluse. Cette option est rarement visible car dans bien les cas, la fonctionalité est simplement commentée dans le fichier lui-même.
Le fichier Makefile contient le nom du noyau et spécifie les informations suivantes :
- VERSION,
- PATCHLEVEL,
- SUBLEVEL,
- EXTRAVERSION.
Les trois premières informations sont gérées par kernel.org et Linus Torvalds en personne tandis que l'EXTRAVERSION est gérée par Red Hat :
[trainee@centos7 SPECS]$ more ~/rpmbuild/BUILD/kernel-3.10.0-327.13.1.el7/linux-3.10.0-327.13.1.el7.x86_64/Makefile VERSION = 3 PATCHLEVEL = 10 SUBLEVEL = 0 EXTRAVERSION = NAME = Unicycling Gorilla RHEL_MAJOR = 7 RHEL_MINOR = 2 RHEL_RELEASE = 327.13.1 RHEL_DRM_VERSION = 4 RHEL_DRM_PATCHLEVEL = 1 RHEL_DRM_SUBLEVEL = 0 # *DOCUMENTATION* # To see a list of typical targets execute "make help" # More info can be located in ./README # Comments in this file are targeted only to the developer, do not # expect to learn how to build the kernel reading this file. # Do not: # o use make's built-in rules and variables # (this increases performance and avoids hard-to-debug behaviour); # o print "Entering directory ..."; MAKEFLAGS += -rR --no-print-directory # Avoid funny character set dependencies unexport LC_ALL LC_COLLATE=C LC_NUMERIC=C export LC_COLLATE LC_NUMERIC # We are using a recursive build, so we need to do a little thinking # to get the ordering right. # # Most importantly: sub-Makefiles should only ever modify files in # their own directory. If in some directory we have a dependency on # a file in another dir (which doesn't happen often, but it's often # unavoidable when linking the built-in.o targets which finally # turn into vmlinux), we will call a sub make in that other dir, and # after that we are sure that everything which is in that other dir # is now up to date. # # The only cases where we need to modify files which have global # effects are thus separated out and done before the recursive # descending is started. They are now explicitly listed as the # prepare rule. --Plus--(2%)
La version 2.6 du noyau a vu le jour en 2003. Les SUBLEVEL se suivaient régulièrement. Avec la version 2.6 du noyau, la valeur paire du PATCHLEVEL indiquait que le noyau était stable. Quand vous recompilez le noyau à partir des sources, vous devez modifier la valeur de l'EXTRAVERSION. Le passage à la version 3.0 fut décidé par Linus Torvalds à l'occasion des 20 ans du noyau Linux.
Utilisez maintenant la commande make oldconfig :
[trainee@centos7 SPECS]$ cd ~/rpmbuild/BUILD/kernel-3.10.0-327.13.1.el7/linux-3.10.0-327.13.1.el7.x86_64 [trainee@centos7 linux-3.10.0-327.13.1.el7.x86_64]$ make oldconfig scripts/kconfig/conf --oldconfig Kconfig # # configuration written to .config #
Cette commande lit le fichier .config du noyau actuel et le compare avec celui des sources du noyau. S'il existent des nouvelles configurations à effectuer dans les sources du noyau, la commande vous pose des questions.
Paramétrage du noyau
Après avoir modifié la configuration du noyau selon vos besoins en utilisant soit la commande menuconfig soit la commande xconfig (pas necéssaire pour cet exemple), insérez la sortie de la commande uname -i sur la première ligne du fichier .config :
[trainee@centos7 linux-3.10.0-327.13.1.el7.x86_64]$ uname -i x86_64 [trainee@centos7 linux-3.10.0-327.13.1.el7.x86_64]$ vi .config [trainee@centos7 linux-3.10.0-327.13.1.el7.x86_64]$ head .config # x86_64 # # Automatically generated file; DO NOT EDIT. # Linux/x86 3.10.0 Kernel Configuration # CONFIG_64BIT=y CONFIG_X86_64=y CONFIG_X86=y CONFIG_INSTRUCTION_DECODER=y CONFIG_OUTPUT_FORMAT="elf64-x86-64"
Renommez le fichier .config en le plaçant dans le répertoire ~/rpmbuild/SOURCES/ :
[trainee@centos7 linux-3.10.0-327.13.1.el7.x86_64]$ cp .config ~/rpmbuild/SOURCES/config-`uname -m`-generic [trainee@centos7 linux-3.10.0-327.13.1.el7.x86_64]$ ls ~/rpmbuild/SOURCES centos.cer cpupower.service kernel-3.10.0-ppc64-debug.config kernel-3.10.0-x86_64.config Module.kabi_ppc64 x509.genkey centos-kpatch.x509 debrand-rh-i686-cpu.patch kernel-3.10.0-ppc64le.config kernel-3.10.0-x86_64-debug.config Module.kabi_ppc64le centos-ldup.x509 debrand-rh_taint.patch kernel-3.10.0-ppc64le-debug.config kernel-abi-whitelists-327.tar.bz2 Module.kabi_s390x check-kabi debrand-single-cpu.patch kernel-3.10.0-s390x.config linux-3.10.0-327.13.1.el7.tar.xz Module.kabi_x86_64 config-x86_64-generic extra_certificates kernel-3.10.0-s390x-debug.config linux-kernel-test.patch secureboot.cer cpupower.config kernel-3.10.0-ppc64.config kernel-3.10.0-s390x-kdump.config Makefile.common sign-modules
Pour un noyau 32 bits, remplacez x86_64 par i386 et config-`uname -m`-generic par config-x86-32-generic.
Editez la directive buildid dans le fichier ~/rpmbuild/SPECS/kernel.spec :
[trainee@centos7 linux-3.10.0-327.13.1.el7.x86_64]$ cd ~/rpmbuild/SPECS [trainee@centos7 SPECS]$ vi kernel.spec [trainee@centos7 SPECS]$ head kernel.spec # We have to override the new %%install behavior because, well... the kernel is special. %global __spec_install_pre %{___build_pre} Summary: The Linux kernel %define buildid .i2tch # For a kernel released for public testing, released_kernel should be 1. # For internal testing builds during development, it should be 0. %global released_kernel 1
Compiler le Noyau
La compilation du noyau peut prendre beaucoup de temps. La commande utilisée est la suivante :
[trainee@centos7 SPECS]$ rpmbuild -bb --target=`uname -m` kernel.spec
A l'issu du processus, les rpm se trouvent dans le répertoire /home/trainee/rpmbuild/RPMS/x86_64/ :
... Vérification des fichiers non empaquetés : /usr/lib/rpm/check-files /home/trainee/rpmbuild/BUILDROOT/kernel-3.10.0-327.13.1.el7.i2tch.x86_64 Écrit : /home/trainee/rpmbuild/RPMS/x86_64/kernel-3.10.0-327.13.1.el7.i2tch.x86_64.rpm Écrit : /home/trainee/rpmbuild/RPMS/x86_64/kernel-headers-3.10.0-327.13.1.el7.i2tch.x86_64.rpm Écrit : /home/trainee/rpmbuild/RPMS/x86_64/kernel-debuginfo-common-x86_64-3.10.0-327.13.1.el7.i2tch.x86_64.rpm Écrit : /home/trainee/rpmbuild/RPMS/x86_64/perf-3.10.0-327.13.1.el7.i2tch.x86_64.rpm Écrit : /home/trainee/rpmbuild/RPMS/x86_64/perf-debuginfo-3.10.0-327.13.1.el7.i2tch.x86_64.rpm Écrit : /home/trainee/rpmbuild/RPMS/x86_64/python-perf-3.10.0-327.13.1.el7.i2tch.x86_64.rpm Écrit : /home/trainee/rpmbuild/RPMS/x86_64/python-perf-debuginfo-3.10.0-327.13.1.el7.i2tch.x86_64.rpm Écrit : /home/trainee/rpmbuild/RPMS/x86_64/kernel-tools-3.10.0-327.13.1.el7.i2tch.x86_64.rpm Écrit : /home/trainee/rpmbuild/RPMS/x86_64/kernel-tools-libs-3.10.0-327.13.1.el7.i2tch.x86_64.rpm Écrit : /home/trainee/rpmbuild/RPMS/x86_64/kernel-tools-libs-devel-3.10.0-327.13.1.el7.i2tch.x86_64.rpm Écrit : /home/trainee/rpmbuild/RPMS/x86_64/kernel-tools-debuginfo-3.10.0-327.13.1.el7.i2tch.x86_64.rpm Écrit : /home/trainee/rpmbuild/RPMS/x86_64/kernel-devel-3.10.0-327.13.1.el7.i2tch.x86_64.rpm Écrit : /home/trainee/rpmbuild/RPMS/x86_64/kernel-debuginfo-3.10.0-327.13.1.el7.i2tch.x86_64.rpm Écrit : /home/trainee/rpmbuild/RPMS/x86_64/kernel-debug-3.10.0-327.13.1.el7.i2tch.x86_64.rpm Écrit : /home/trainee/rpmbuild/RPMS/x86_64/kernel-debug-devel-3.10.0-327.13.1.el7.i2tch.x86_64.rpm Écrit : /home/trainee/rpmbuild/RPMS/x86_64/kernel-debug-debuginfo-3.10.0-327.13.1.el7.i2tch.x86_64.rpm Exécution_de(%clean) : /bin/sh -e /var/tmp/rpm-tmp.HNhcuC + umask 022 + cd /home/trainee/rpmbuild/BUILD + cd kernel-3.10.0-327.13.1.el7 + rm -rf /home/trainee/rpmbuild/BUILDROOT/kernel-3.10.0-327.13.1.el7.i2tch.x86_64 + exit 0
Notez que la génération du nouveau noyau a consommé plus de 9 Go d'espace disque :
[trainee@centos7 SPECS]$ df -h Sys. de fichiers Taille Utilisé Dispo Uti% Monté sur /dev/sda2 9,8G 4,3G 5,5G 44% / devtmpfs 231M 0 231M 0% /dev tmpfs 245M 0 245M 0% /dev/shm tmpfs 245M 4,7M 240M 2% /run tmpfs 245M 0 245M 0% /sys/fs/cgroup tmpfs 245M 40K 245M 1% /tmp /dev/sdb1 20G 9,5G 9,2G 51% /home /dev/sda1 197M 197M 20K 100% /boot tmpfs 49M 0 49M 0% /run/user/1000
Installer le Nouveau Noyau
Installez maintenant les deux paquets kernel-devel et kernel-headers :
[root@centos7 ~]# rpm -ivh /home/trainee/rpmbuild/RPMS/x86_64/kernel-devel-3.10.0-327.13.1.el7.i2tch.x86_64.rpm Preparing... ################################# [100%] Updating / installing... 1:kernel-devel-3.10.0-327.13.1.el7.################################# [100%] [root@centos7 ~]# rpm -ivh /home/trainee/rpmbuild/RPMS/x86_64/kernel-headers-3.10.0-327.13.1.el7.i2tch.x86_64.rpm Preparing... ################################# [100%] Updating / installing... 1:kernel-headers-3.10.0-327.13.1.el################################# [100%]
Installez en dernier le nouveau noyau avec la commande rpm :
[root@centos7 ~]# rpm -ivh --force --nodeps /home/trainee/rpmbuild/RPMS/x86_64/kernel-3.10.0-327.13.1.el7.i2tch.x86_64.rpm Preparing... ################################# [100%] installing package kernel-3.10.0-327.13.1.el7.i2tch.x86_64 needs 30MB on the /boot filesystem
Important : Notez le message d'erreur concernant le manque d'espace disponible sur /boot.
Lister maintenant les noyaux installés :
[root@centos7 ~]# rpm -qa | grep kernel-3 kernel-3.10.0-327.el7.x86_64 kernel-3.10.0-327.13.1.el7.x86_64
Un noyau se désinstalle comme tout autre paquet :
[root@centos7 ~]# yum remove kernel-3.10.0-327.el7.x86_64 Loaded plugins: fastestmirror, langpacks Resolving Dependencies --> Running transaction check ---> Package kernel.x86_64 0:3.10.0-327.el7 will be erased --> Finished Dependency Resolution Dependencies Resolved ======================================================================================================================================================================== Package Arch Version Repository Size ======================================================================================================================================================================== Removing: kernel x86_64 3.10.0-327.el7 @base/$releasever 136 M Transaction Summary ======================================================================================================================================================================== Remove 1 Package Installed size: 136 M Is this ok [y/N]: y
Installez le nouveau noyau avec la commande rpm :
[root@centos7 ~]# rpm -ivh --force --nodeps /home/trainee/rpmbuild/RPMS/x86_64/kernel-3.10.0-327.13.1.el7.i2tch.x86_64.rpm Preparing... ################################# [100%] Updating / installing... 1:kernel-3.10.0-327.13.1.el7.i2tch ################################# [100%]
Lister maintenant les noyaux installés :
[root@centos7 ~]# rpm -qa | grep kernel-3 kernel-3.10.0-327.13.1.el7.i2tch.x86_64 kernel-3.10.0-327.13.1.el7.x86_64
Constatez la création d'un nouveau grub.cfg :
[root@centos7 ~]# grep i2tch /boot/grub2/grub.cfg menuentry 'CentOS Linux (3.10.0-327.13.1.el7.i2tch.x86_64) 7 (Core)' --class centos --class gnu-linux --class gnu --class os --unrestricted $menuentry_id_option 'gnulinux-3.10.0-327.el7.x86_64-advanced-e65fe7da-cda8-4f5a-a827-1b5cabe94bed' { linux16 /vmlinuz-3.10.0-327.13.1.el7.i2tch.x86_64 root=UUID=e65fe7da-cda8-4f5a-a827-1b5cabe94bed ro rhgb quiet LANG=en_GB.UTF-8 initrd16 /initramfs-3.10.0-327.13.1.el7.i2tch.x86_64.img
Important : Re-démarrez votre VM en utilisant le nouveau noyau.
Vérifiez ensuite l'utilisation du nouveau noyau :
[root@centos7 ~]# uname -r 3.10.0-327.13.1.el7.i2tch.x86_64
<html>
Copyright © 2004-2017 Hugh Norris.<br><br> <a rel=“license” href=“http://creativecommons.org/licenses/by-nc-nd/3.0/fr/”><img alt=“Licence Creative Commons” style=“border-width:0” src=“http://i.creativecommons.org/l/by-nc-nd/3.0/fr/88x31.png” /></a><br />Ce(tte) oeuvre est mise à disposition selon les termes de la <a rel=“license” href=“http://creativecommons.org/licenses/by-nc-nd/3.0/fr/”>Licence Creative Commons Attribution - Pas d’Utilisation Commerciale - Pas de Modification 3.0 France</a>.
</html>