Mises à jour du noyau du système d'exploitation pour les instances Linux héritées

Remarque

Cette rubrique s'applique uniquement aux instances Linux lancées avant le 15 février 2017. Les instances Linux lancées à partir du 15 février 2017 s'initialisent directement à partir de l'image et ne nécessitent pas d'autre action pour les mises à jour du noyau.

Oracle Cloud Infrastructure initialise chaque instance à partir d'un lecteur réseau. Cette configuration requiert des actions supplémentaires lorsque vous mettez à jour le noyau du système d'exploitation.

Oracle Cloud Infrastructure utilise le microprogramme UEFI (Unified Extensible Firmware Interface) et une interface PXE (Preboot eXecution Environment) sur le serveur hôte pour charger iPXE à partir d'un serveur TFTP (Trivial File Transfer Protocol). L'implémentation iPXE exécute un script pour initialiser Oracle Linux. Au cours du processus d'initialisation, le système télécharge en local le noyau, le fichier initrd et les paramètres d'initialisation du noyau à partir du réseau. L'instance n'utilise pas le programme d'initialisation GRUB de l'hôte.

Normalement, la commande yum update kernel-uek modifie le fichier de configuration GRUB, grub.cfg ou grub.conf, pour configurer la prochaine initialisation. Les instances Bare Metal n'utilisant pas le programme d'initialisation GRUB, les modifications apportées au fichier de configuration GRUB ne sont pas implémentées. Lorsque vous mettez à jour le noyau sur votre instance, vous devez également télécharger la mise à jour sur le réseau pour garantir le succès du processus d'initialisation. Les approches suivantes répondent à ce besoin :

  • Les instances lancées à partir d'images de plate-forme incluent un module d'extension yum Oracle qui gère le téléchargement de manière transparente lorsque vous exécutez la commande yum update kernel-uek.
  • Si vous utilisez une image personnalisée basée sur une image de plate-forme, le module d'extension yum inclus continuera de fonctionner, à l'exception des modifications extraordinaires.
  • Si vous installez votre propre gestionnaire de packages, vous devez écrire votre propre module d'extension ou télécharger le noyau, le fichier initrd et les paramètres d'initialisation du noyau manuellement.

Module d'extension yum Oracle

Sur les instances lancées avec une image de plate-forme, vous pouvez trouver le module d'extension yum Oracle à l'emplacement suivant :

/usr/share/yum-plugins/kernel-update-handler.py

La configuration du module d'extension se trouve à l'emplacement suivant :

/etc/yum/pluginconf.d

Le module d'extension recherche deux variables dans le fichier /etc/sysconfig/kernel, UPDATEDEFAULT et DEFAULTKERNEL. Il sélectionne les mises à jour uniquement lorsque la première variable est définie sur "yes" et lorsque la valeur DEFAULTKERNEL correspond au noyau en cours de mise à jour. Par exemple :

# UPDATEDEFAULT specifies if new-kernel-pkg should make
# new kernels the default
UPDATEDEFAULT=yes

# DEFAULTKERNEL specifies the default kernel package type
DEFAULTKERNEL=kernel-uek

Les images de plate-forme intègrent le noyau UEK (Unbreakable Enterprise Kernel). Si vous souhaitez passer à un noyau autre que de type UEK, vous devez mettre à jour la valeur DEFAULTKERNEL vers "kernel" avant d'exécuter yum update kernel.

Mises à jour manuelles

Conseil

Oracle recommande d'utiliser le module d'extension yum Oracle pour mettre à jour le noyau.

Si vous téléchargez manuellement les mises à jour, il existe quatre URL pertinentes :

http://169.254.0.3/kernel
http://169.254.0.3/initrd
http://169.254.0.3/cmdline
http://169.254.0.3/activate

Les trois premières URL servent à télécharger les fichiers (type de demande HTTP PUT). La quatrième URL permet d'activer les fichiers téléchargés (type de demande HTTP POST). Le système rejette les fichiers téléchargés s'ils ne sont pas activés avant le redémarrage de l'hôte.

Le noyau et initrd sont des téléchargements de fichier simples. Le téléchargement de cmdline doit contenir les paramètres d'initialisation du noyau trouvés dans le fichier grub.cfg ou grub.conf, en fonction de la version de Linux. L'exemple suivant est une entrée du fichier /boot/efi/EFI/redhat/grub.cfg dans Red Hat Linux 7. Le texte en surbrillance représente les paramètres à télécharger.

kernel /boot/vmlinuz-4.1.12-37.5.1.el6uek.x86_64 

ro root=UUID=8079e287-53d7-4b3d-b708-c519cf6829c8 rd_NO_LUKS  KEYBOARDTYPE=pc KEYTABLE=us netroot=iscsi:@169.254.0.2::3260:iface1:eth0::iqn.2015-02.oracle.boot:uefi rd_NO_MD SYSFONT=latarcyrheb-sun16 ifname=eth0:90:e2:ba:a2:e3:80 crashkernel=auto iscsi_initiator=iqn.2015-02. rd_NO_LVM ip=eth0:dhcp rd_NO_DM LANG=en_US.UTF-8 console=tty0 console=ttyS0,9600 iommu=on

La commande suivante renvoie les éléments en cours de téléchargement vers le fichier cmdline.

cat /tmp/cmdline

Une réponse type ressemble à ce qui suit.

ro root=UUID=8079e287-53d7-4b3d-b708-c519cf6829c8 rd_NO_LUKS  KEYBOARDTYPE=pc KEYTABLE=us netroot=iscsi:@169.254.0.2::3260:iface1:eth0::iqn.2015-02.oracle.boot:uefi rd_NO_MD SYSFONT=latarcyrheb-sun16 ifname=eth0:90:e2:ba:a2:e3:80 crashkernel=auto iscsi_initiator=iqn.2015-02. rd_NO_LVM ip=eth0:dhcp rd_NO_DM LANG=en_US.UTF-8 console=tty0 console=ttyS0,9600 iommu=on

Les commandes suivantes mettent à jour les fichiers cmdline et initrd, puis activent les modifications.

CKSUM=`md5sum /tmp/cmdline | cut -d ' ' -f 1`
sudo curl -X PUT --data-binary @/tmp/cmdline -H "Content-MD5: $CKSUM" http://169.254.0.3/cmdline
CKSUM=`md5sum /boot/initramfs-3.8.13-118.8.1.el7uek.x86_64.img | cut -d ' ' -f 1`
sudo curl -X PUT --data-binary @/boot/initramfs-3.8.13-118.8.1.el7uek.x86_64.img -H "Content-MD5: $CKSUM" http://169.254.0.3/initrd
sudo curl -X POST http://169.254.0.3/activate