Avant d'importer une image personnalisée vers Alibaba Cloud ou de la publier sur Alibaba Cloud Marketplace, assurez-vous qu'elle respecte les spécifications décrites dans cette rubrique et qu'elle passe les tests de compatibilité avec les types d'instance ECS. Le respect de ces spécifications améliore la disponibilité et l'efficacité d'importation de vos images personnalisées, vous permettant ainsi de créer des instances ECS adaptées à vos besoins métier. Cette rubrique détaille les spécifications pour la création d'images Linux.
Partitions de disque
Les partitions de disque doivent répondre aux exigences suivantes.
-
Redimensionnement du disque
Utilisez des partitions physiques pour partitionner le disque. La partition racine doit être la dernière partition afin d'éviter les échecs lors du redimensionnement du disque système.
Pour les systèmes prenant en charge le redimensionnement à chaud des disques cloud, utilisez la commande
growpartpour redimensionner la partition. Installez au préalable le packagecloud-utils-growpart. Pour plus d'informations, consultez la rubrique Redimensionner les partitions et les systèmes de fichiers (Linux).
-
Partition swap
Ne créez pas de partition swap.
-
Gestion LVM
N'utilisez pas la gestion des volumes logiques (LVM) pour les partitions de disque.
-
Montage du disque
Configurez les fichiers
fstabetgruben utilisant les UUID. Pour plus d'informations, consultez les rubriques Utiliser un UUID pour monter automatiquement un disque de données dans le fichier /etc/fstab et Modifier la méthode d'identification des partitions de disque en UUID dans le fichier de configuration GRUB.ImportantSi le fichier
fstabest configuré incorrectement, l'instance ECS peut ne pas démarrer après un redémarrage. -
Taille du disque
La capacité minimale du disque système est de 20 Go.
-
Définir le mode de démarrage de l'image
Pour garantir la compatibilité avec les types d'instance utilisant différents modes de démarrage, configurez le mode de démarrage (BIOS ou UEFI) de votre image locale. Lors de l'importation de l'image, assurez-vous que le mode de démarrage sélectionné correspond au mode de démarrage réel de l'image.
Pour savoir comment configurer le mode de démarrage lors de la création d'une image locale, consultez la rubrique Créer une machine virtuelle et installer un système d'exploitation.
Pour savoir comment définir le mode de démarrage lors de l'importation d'une image, consultez la rubrique Importer une image personnalisée.
Consultez les modes de démarrage pris en charge par un type d'instance dans la valeur du paramètre
SupportedBootModesde la réponse de l'API DescribeInstanceTypes.
RemarqueSi votre image locale prend en charge à la fois BIOS et UEFI, définissez le mode de démarrage sur UEFI-Preferred. L'image s'adaptera alors automatiquement aux modes de démarrage de tous les types d'instance, ce qui contribue également à réduire le coût de création des images.
Logiciels et outils requis
-
Installer le pilote virtio
Avant de publier l'image, assurez-vous que le pilote virtio est installé et ajouté au système de fichiers RAM initial (initramfs). Le pilote virtio est indispensable pour que l'image s'exécute sur les instances Alibaba Cloud. Pour plus d'informations, consultez la rubrique Installer les pilotes virtio.
-
Installer le pilote NVMe
Les nouvelles générations de familles d'instances ECS, telles que ecs.g8i et ecs.g7se, montent les disques cloud via le protocole NVMe. L'image doit disposer du pilote NVMe installé, sinon les instances créées à partir de celle-ci ne pourront pas démarrer. Afin de pouvoir utiliser l'image pour créer ces types d'instances ECS, nous vous recommandons d'installer le pilote NVMe sur votre image locale. Pour obtenir des instructions, consultez la rubrique Installer le pilote NVMe pour une image personnalisée. Après avoir importé l'image, définissez la propriété Pilote NVMe de l'image sur Supported. Pour plus d'informations, consultez la rubrique Modifier les propriétés et les tags d'une image.
-
Installer cloud-init
Installez cloud-init pour initialiser les instances ECS créées à partir de l'image. Pour plus d'informations, consultez la rubrique Installer cloud-init. Nous vous recommandons d'installer cloud-init version 23.2.2 ou ultérieure afin de prendre en charge l'accès aux métadonnées en mode renforcé. Cela garantit la sécurité de l'accès aux métadonnées de l'instance.
RemarqueL'utilisation de cloud-init pour modifier un mot de passe nécessite que le noyau du système d'exploitation prenne en charge la fonctionnalité
CONFIG_FW_CFG_SYSFS. Cette fonctionnalité est prise en charge par défaut dans les versions du noyau communautaire Linux 4.6 et ultérieures, ainsi que dans les versions du noyau CentOS 3.10.0-826.el7 et ultérieures. Exécutez la commandegrep -nr CONFIG_FW_CFG_SYSFS /boot/config-$(uname -r)sur le serveur utilisant l'image. Si la sortie de la commande contientCONFIG_FW_CFG_SYSFS=y, le noyau de l'image prend en charge la fonctionnalitéCONFIG_FW_CFG_SYSFS. -
Installer Cloud Assistant
Installez l'agent Cloud Assistant lors de la création de l'image. Cloud Assistant est un outil d'automatisation natif pour ECS qui vous permet d'exécuter des commandes (telles que Shell, PowerShell et Bat) par lots sans nécessiter de mot de passe, de connexion ou de serveur de rebond. Vous pouvez utiliser Cloud Assistant pour exécuter des scripts d'exploitation et de maintenance automatisés, surveiller les processus, installer ou désinstaller des logiciels, démarrer ou arrêter des services, et installer des correctifs ou des mises à jour de sécurité. Pour plus d'informations, consultez la rubrique Installer l'agent Cloud Assistant.
-
Sécuriser le serveur
Lors de la création d'une image, nous vous recommandons d'utiliser Security Center pour sécuriser votre serveur. Security Center propose une suite complète de capacités de sécurité, notamment des notifications d'alerte, l'analyse et la suppression de logiciels malveillants, la détection et la suppression de webshells, l'autoprotection du client et l'analyse des vulnérabilités des images, afin de protéger pleinement vos actifs cloud et vos serveurs sur site.
Configuration du système
-
Configurer l'horloge
L'horloge matérielle d'une image prend en charge les fuseaux horaires UTC et LocalTime. Lors de la création d'une image, vous devez utiliser le mode Temps universel coordonné (UTC) standard. L'exemple de code suivant montre comment configurer l'horloge :
cat > /etc/adjtime << EOF 0.0 0 0.0 0 UTC EOF timedatectl set-local-rtc 0Pour plus d'informations, consultez la rubrique Heure et fuseaux horaires Linux.
-
Configurer le service SSHD
Configurez le service SSHD.
Le service SSHD est utilisé pour se connecter à distance et gérer les systèmes Linux, et utilise le protocole SSH pour les communications chiffrées. Voici un exemple de modification de la configuration dans
/etc/ssh/sshd_config:UseDNS no AddressFamily inet SyslogFacility AUTHPRIV PermitRootLogin yes PasswordAuthentication yes -
Configurer le service Chrony ou NTP
Lors de la création d'une image, nous vous recommandons de configurer soit le service Chrony, soit le service NTP.
Chrony et NTP sont des outils utilisés pour synchroniser les horloges des ordinateurs et prévenir la dérive temporelle. Les commandes suivantes sont données à titre d'exemple :
Service Chrony
chrony_file=/etc/chrony.conf cat >$chrony_file <<EOF # Use Alibaba NTP server # Public NTP # Alicloud NTP server ntp.cloud.aliyuncs.com minpoll 4 maxpoll 10 iburst server ntp.aliyun.com minpoll 4 maxpoll 10 iburst server ntp1.aliyun.com minpoll 4 maxpoll 10 iburst server ntp1.cloud.aliyuncs.com minpoll 4 maxpoll 10 iburst server ntp10.cloud.aliyuncs.com minpoll 4 maxpoll 10 iburst server ntp11.cloud.aliyuncs.com minpoll 4 maxpoll 10 iburst server ntp12.cloud.aliyuncs.com minpoll 4 maxpoll 10 iburst server ntp2.aliyun.com minpoll 4 maxpoll 10 iburst server ntp2.cloud.aliyuncs.com minpoll 4 maxpoll 10 iburst server ntp3.aliyun.com minpoll 4 maxpoll 10 iburst server ntp3.cloud.aliyuncs.com minpoll 4 maxpoll 10 iburst server ntp4.aliyun.com minpoll 4 maxpoll 10 iburst server ntp4.cloud.aliyuncs.com minpoll 4 maxpoll 10 iburst server ntp5.aliyun.com minpoll 4 maxpoll 10 iburst server ntp5.cloud.aliyuncs.com minpoll 4 maxpoll 10 iburst server ntp6.aliyun.com minpoll 4 maxpoll 10 iburst server ntp6.cloud.aliyuncs.com minpoll 4 maxpoll 10 iburst server ntp7.cloud.aliyuncs.com minpoll 4 maxpoll 10 iburst server ntp8.cloud.aliyuncs.com minpoll 4 maxpoll 10 iburst server ntp9.cloud.aliyuncs.com minpoll 4 maxpoll 10 iburst # Ignore stratum in source selection. stratumweight 0.05 # Record the rate at which the system clock gains/losses time. driftfile /var/lib/chrony/drift # Enable kernel RTC synchronization. rtcsync # In first three updates step the system clock instead of slew # if the adjustment is larger than 10 seconds. makestep 10 3 # Allow NTP client access from local network. #allow 192.168/16 # Listen for commands only on localhost. bindcmdaddress 127.0.0.1 bindcmdaddress ::1 # Disable logging of client accesses. noclientlog # Send a message to syslog if a clock adjustment is larger than 0.5 seconds. logchange 0.5 logdir /var/log/chrony #log measurements statistics tracking EOFService NTP
ntp_conf=/etc/ntp.conf cat > $ntp_conf << EOF driftfile /var/lib/ntp/drift pidfile /var/run/ntpd.pid logfile /var/log/ntp.log # Access Control Support restrict default kod nomodify notrap nopeer noquery restrict -6 default kod nomodify notrap nopeer noquery restrict 127.0.0.1 restrict 192.168.0.0 mask 255.255.0.0 nomodify notrap nopeer noquery restrict 172.16.0.0 mask 255.240.0.0 nomodify notrap nopeer noquery restrict 100.64.0.0 mask 255.192.0.0 nomodify notrap nopeer noquery restrict 10.0.0.0 mask 255.0.0.0 nomodify notrap nopeer noquery # local clock server 127.127.1.0 fudge 127.127.1.0 stratum 10 restrict ntp.aliyun.com nomodify notrap nopeer noquery restrict ntp.cloud.aliyuncs.com nomodify notrap nopeer noquery restrict ntp1.aliyun.com nomodify notrap nopeer noquery restrict ntp1.cloud.aliyuncs.com nomodify notrap nopeer noquery restrict ntp10.cloud.aliyuncs.com nomodify notrap nopeer noquery restrict ntp11.cloud.aliyuncs.com nomodify notrap nopeer noquery restrict ntp12.cloud.aliyuncs.com nomodify notrap nopeer noquery restrict ntp2.aliyun.com nomodify notrap nopeer noquery restrict ntp2.cloud.aliyuncs.com nomodify notrap nopeer noquery restrict ntp3.aliyun.com nomodify notrap nopeer noquery restrict ntp3.cloud.aliyuncs.com nomodify notrap nopeer noquery restrict ntp4.aliyun.com nomodify notrap nopeer noquery restrict ntp4.cloud.aliyuncs.com nomodify notrap nopeer noquery restrict ntp5.aliyun.com nomodify notrap nopeer noquery restrict ntp5.cloud.aliyuncs.com nomodify notrap nopeer noquery restrict ntp6.aliyun.com nomodify notrap nopeer noquery restrict ntp6.cloud.aliyuncs.com nomodify notrap nopeer noquery restrict ntp7.cloud.aliyuncs.com nomodify notrap nopeer noquery restrict ntp8.cloud.aliyuncs.com nomodify notrap nopeer noquery restrict ntp9.cloud.aliyuncs.com nomodify notrap nopeer noquery server ntp.aliyun.com iburst minpoll 4 maxpoll 10 server ntp.cloud.aliyuncs.com iburst minpoll 4 maxpoll 10 server ntp1.aliyun.com iburst minpoll 4 maxpoll 10 server ntp1.cloud.aliyuncs.com iburst minpoll 4 maxpoll 10 server ntp10.cloud.aliyuncs.com iburst minpoll 4 maxpoll 10 server ntp11.cloud.aliyuncs.com iburst minpoll 4 maxpoll 10 server ntp12.cloud.aliyuncs.com iburst minpoll 4 maxpoll 10 server ntp2.aliyun.com iburst minpoll 4 maxpoll 10 server ntp2.cloud.aliyuncs.com iburst minpoll 4 maxpoll 10 server ntp3.aliyun.com iburst minpoll 4 maxpoll 10 server ntp3.cloud.aliyuncs.com iburst minpoll 4 maxpoll 10 server ntp4.aliyun.com iburst minpoll 4 maxpoll 10 server ntp4.cloud.aliyuncs.com iburst minpoll 4 maxpoll 10 server ntp5.aliyun.com iburst minpoll 4 maxpoll 10 server ntp5.cloud.aliyuncs.com iburst minpoll 4 maxpoll 10 server ntp6.aliyun.com iburst minpoll 4 maxpoll 10 server ntp6.cloud.aliyuncs.com iburst minpoll 4 maxpoll 10 server ntp7.cloud.aliyuncs.com iburst minpoll 4 maxpoll 10 server ntp8.cloud.aliyuncs.com iburst minpoll 4 maxpoll 10 server ntp9.cloud.aliyuncs.com iburst minpoll 4 maxpoll 10 EOF -
Configurer le service MOTD
Lors de la création d'une image, nous vous recommandons de configurer le service Message of the Day (MOTD).
Le service MOTD sous Linux affiche un message après la connexion d'un utilisateur. Voici une commande exemple :
echo -e "\nWelcome to Alibaba Cloud Elastic Compute Service ! \n" > /etc/motd -
Désactiver le service Firewalld
Nous vous recommandons de désactiver le service Firewalld. Firewalld est un service qui gère les règles de pare-feu sous Linux. Vous pouvez désactiver le pare-feu local car les groupes de sécurité assurent la protection dans le cloud. Voici des commandes exemples :
systemctl stop firewalld systemctl disable firewalld -
Configurer la source pip
Si une source PIP est configurée sur votre système, nous vous recommandons d'utiliser l'adresse de la source PIP Alibaba Cloud pour obtenir les derniers packages logiciels. Le contenu du fichier
~/.pip/pip.confest le suivant :[global] index-url=http://mirrors.cloud.aliyuncs.com/pypi/simple/ [install] trusted-host=mirrors.cloud.aliyuncs.com -
Configurer le réseau
Si vous utilisez NetworkManager ou le service réseau, configurez le fichier
/etc/sysconfig/network-scripts/ifcfg-eth0comme suit :DEVICE=eth0 BOOTPROTO=dhcp ONBOOT=yesPour savoir comment configurer d'autres services réseau, consultez la rubrique Configurer une interface réseau élastique secondaire.
-
Configurer kernelopt
Vous devez configurer les paramètres de démarrage du noyau dans GRUB pour garantir le démarrage correct du système. L'exemple suivant présente les commandes pour un système Debian :
-
Dans le fichier
/etc/default/grub, ajoutez les informations suivantes à la ligneGRUB_CMDLINE_LINUX=.-
Architecture x86_64
net.ifnames=0 console=tty0 console=ttyS0,115200n8 -
Architecture Arm64
net.ifnames=0 console=tty0 console=ttyAMA0,115200n8
-
-
Exécutez la commande
sudo update-grub2pour appliquer la configuration GRUB.RemarqueLe chemin d'accès au fichier de configuration GRUB et la commande pour appliquer la configuration varient selon le système d'exploitation. Pour plus d'informations, consultez la rubrique Installer le pilote NVMe pour une image personnalisée.
-
-
Configurer sysctl
Nous vous recommandons de configurer les paramètres
sysctlafin d'ajuster et d'optimiser le comportement du noyau Linux.-
Modifiez le fichier
/etc/sysctl.confcomme suit.vm.swappiness = 0 kernel.sysrq = 1 net.ipv4.neigh.default.gc_stale_time = 120 net.ipv4.conf.all.rp_filter = 0 net.ipv4.conf.default.rp_filter = 0 net.ipv4.conf.default.arp_announce = 2 net.ipv4.conf.lo.arp_announce = 2 net.ipv4.conf.all.arp_announce = 2 net.ipv4.tcp_max_tw_buckets = 5000 net.ipv4.tcp_syncookies = 1 net.ipv4.tcp_max_syn_backlog = 1024 net.ipv4.tcp_synack_retries = 2 net.ipv4.tcp_slow_start_after_idle = 0 Exécutez la commande
sudo sysctl -ppour que les modifications des paramètres du noyau prennent effet.
-
Verrouillez le compte root. Cela empêche la connexion directe au système à l'aide du mot de passe root, même si un mot de passe est défini.
-
Désactivez la connexion par mot de passe en modifiant le paramètre SSH
PasswordAuthentication.RemarqueSi vous définissez un mot de passe root lors de l'initialisation de l'instance,
PasswordAuthenticationpour SSH peut être activé par défaut.
Paramètres du noyau
Recommandations de sécurité du système
Pour améliorer la sécurité du système, nous vous recommandons de prendre les mesures suivantes avant d'importer l'image :
Voici un exemple de code :
dst=/etc/ssh/sshd_config
sed -i 's/^SyslogFacility.*//' $dst
sed -i 's/^PermitRootLogin.*//' $dst
sed -i 's/^PasswordAuthentication.*//' $dst
echo UseDNS no >> $dst
echo SyslogFacility AUTHPRIV >> $dst
echo PasswordAuthentication no >> $dst
passwd -l root
sed -i -e 's/root:[^:]*:/root:*:/g' /etc/shadow
Nettoyage des informations de l'image
Avant de publier l'image, effacez les informations sensibles, telles que l'historique des commandes et les journaux.