Mises à jour du noyau du système d'exploitation pour les instances Linux existantes
Cette rubrique s'applique uniquement aux instances Linux qui ont été lancées avant le 15 février 2017. Les instances Linux lancées le 15 février 2017 ou ultérieurement démarrent directement à partir de l'image et ne nécessitent pas d'actions supplémentaires pour les mises à jour du noyau.
Oracle Cloud Infrastructure démarre chaque instance à partir d'un lecteur de réseau. Cette configuration nécessite des actions supplémentaires lorsque vous mettez à jour le noyau du système d'exploitation.
Oracle Cloud Infrastructure utilise le micrologiciel 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). La mise en oeuvre iPXE exécute un script pour démarrer Oracle Linux. Lors du processus de démarrage, le système télécharge le noyau, le fichier initrd
et les paramètres de démarrage du noyau à partir du réseau. L'instance n'utilise pas le programme de démarrage GRUB de l'hôte.
Normalement, la commande yum update kernel-uek
modifie le fichier de configuration GRUB, soit grub.cfg
soit grub.conf
, pour configurer le prochain démarrage. Puisque les instances sans système d'exploitation n'utilisent pas le programme de démarrage GRUB, les modifications apportées au fichier de configuration GRUB ne sont pas mises en oeuvre. Lorsque vous mettez à jour le noyau sur votre instance, vous devez également charger la mise à jour sur le réseau pour garantir un processus de démarrage réussi. Les approches suivantes répondent à ce besoin :
- Les instances lancées à partir d'images de plate-forme incluent un plugiciel yum pour Oracle qui traite de manière transparente le chargement 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 plugiciel yum inclus continue de fonctionner, sauf en cas de modifications extraordinaires.
- Si vous installez votre propre gestionnaire de paquetage, vous devez écrire votre propre plugiciel ou charger manuellement le noyau, initrd et les paramètres de démarrage du noyau.
Plugiciel yum Oracle
Sur les instances lancées avec une image de plate-forme, vous pouvez trouver le plugiciel yum Oracle dans :
/usr/share/yum-plugins/kernel-update-handler.py
La configuration du plugiciel se trouve dans :
/etc/yum/pluginconf.d
Le plugiciel recherche deux variables dans le fichier /etc/sysconfig/kernel
, UPDATEDEFAULT
et DEFAULTKERNEL
. Il applique les mises à jour seulement lorsque la première variable est réglée à "oui" et que 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 incorporent Unbreakable Enterprise Kernel (UEK). Pour passer à un noyau autre que Unbreakable Enterprise Kernel (UEK), vous devez mettre à jour la valeur DEFAULTKERNEL
à "kernel" avant d'exécuter yum update kernel
.
Mises à jour manuelles
Oracle recommande d'utiliser le plugiciel yum Oracle pour mettre à jour le noyau.
Si vous chargez manuellement les mises à jour, quatre URL sont 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 à charger des fichiers (type de demande HTTP PUT). La quatrième URL sert à activer les fichiers chargés (type de demande HTTP POST). Le système élimine les fichiers chargés s'ils ne sont pas activés avant le redémarrage de l'hôte.
Le noyau et initrd sont des chargements de fichier simples. Le chargement de cmdline doit contenir les paramètres de démarrage de noyau trouvés dans le fichier grub.cfg
ou grub.conf
, selon la version de Linux. L'exemple suivant montre 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 à 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 retourne ce qui est en cours de chargement dans le fichier cmdline.
cat /tmp/cmdline
Une réponse typique 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