カスタム Linux イメージは、インポートまたは Alibaba Cloud Marketplace でのリリース前に、以下の要件を満たし、ECS インスタンスタイプとの互換性テストに合格する必要があります。
ディスクパーティション
イメージは、以下のディスクパーティション要件を満たす必要があります。
-
ディスクのサイズ変更
-
物理パーティションに基づいてディスクを論理パーティションに分割します。システムディスクパーティションの障害を防ぐため、各ディスクの最後の論理パーティションをルートパーティションとして使用してください。
-
オンラインでのディスクサイズ変更をサポートするオペレーティングシステムでは、
cloud-utils-growpartパッケージをインストールし、growpartを使用してパーティションを拡張します。詳細については、「Linux インスタンス上のディスクのパーティションとファイルシステムを拡張する」をご参照ください。
-
-
スワップ領域
スワップ領域を使用しないでください。
-
ディスクのマウント
fstab ファイルおよび grub ファイル内に UUID を設定します。詳細については、「/etc/fstab で UUID を使用してデータディスクを自動マウントする」および「GRUB で UUID を使用してディスクパーティションを識別する」をご参照ください。
重要fstab の構成が誤っていると、インスタンスが再起動後に起動しなくなる可能性があります。
-
LVM 管理
ディスクパーティションの管理に LVM を使用しないでください。
-
ディスクサイズ
システムディスクのサイズを最低でも 20 GiB に設定してください。
-
イメージのブートモード
オンプレミス環境で作成したイメージのブートモードを、ターゲットインスタンスタイプと一致するように構成してください。イメージをインポートする際に、ブートモードを指定します。
-
オンプレミスイメージを作成する際には、ブートモードの設定を行います。詳細については、「VirtualBox を使用して VM を作成し、Linux をインストールする」をご参照ください。
-
イメージをインポートする際に、ブートモードを指定します。詳細については、「カスタムイメージをインポートする」をご参照ください。
-
DescribeInstanceTypes を呼び出して
SupportedBootModes値を確認することで、インスタンスタイプのブートモードを照会できます。
説明オンプレミスイメージが BIOS および UEFI の両方をサポートしている場合は、イメージをインポートする際に UEFI-Preferred モードを指定してください。これにより、すべてのインスタンスタイプのブートモードに対応でき、イメージ作成コストを削減できます。
-
必須ソフトウェア
-
virtio ドライバーのインストール
virtio ドライバーをインストールし、イメージをリリースする前に一時ファイルシステムに追加してください。virtio ドライバーは、イメージが ECS インスタンス上で正常に動作するために必要です。詳細については、「virtio ドライバーをインストールする」をご参照ください。
-
NVMe ドライバーのインストール
ecs.g8i や ecs.g7se などの新しい ECS インスタンスファミリーは、ディスクの添付に Non-Volatile Memory Express (NVMe) プロトコルを使用します。これらのインスタンスファミリーでイメージを使用するには、NVMe ドライバーをインストールする必要があります。詳細については、「カスタムイメージに NVMe ドライバーをインストールする」をご参照ください。イメージをインポートする際には、NVMe Drive を Supported に設定してください。詳細については、「イメージのプロパティとタグを変更する」をご参照ください。
-
cloud-init のインストール
インスタンスの初期化を有効にするために cloud-init をインストールしてください。詳細については、「cloud-init をインストールする」をご参照ください。セキュリティ強化モードでインスタンスメタデータへのアクセスをサポートする cloud-init 23.2.2 の使用を推奨します。
説明cloud-init を使用してパスワードを変更するには、カーネルが
CONFIG_FW_CFG_SYSFSをサポートしている必要があります。Linux コミュニティカーネル 4.6 以降および CentOS カーネル 3.10.0-826.el7 以降は、デフォルトでこの機能をサポートしています。確認するには、ソースサーバー上でgrep -nr CONFIG_FW_CFG_SYSFS /boot/config-$(uname -r)を実行します。出力にCONFIG_FW_CFG_SYSFS=yが含まれている場合、カーネルはCONFIG_FW_CFG_SYSFSをサポートしています。 -
クラウドアシスタントのインストール
ECS 向けのネイティブな自動運用管理ツールであるクラウドアシスタントをインストールしてください。クラウドアシスタントを使用すると、パスワードやジャンプサーバーなしで ECS インスタンス上でシェル、PowerShell、バッチコマンドを一括実行できます。自動運用管理、プロセス監視、ソフトウェア管理、サービス制御、パッチインストールなどに活用できます。詳細については、「クラウドアシスタントエージェントをインストールする」をご参照ください。
-
Security Center を使用したイメージソースサーバーの保護
Security Center を使用してご利用のサーバーを保護してください。Security Center は、クラウドおよびオンプレミスサーバー向けに、アラート通知、ウイルス検出・駆除、Web シェル検出・駆除、クライアント保護、イメージスキャンを提供します。
システム構成
-
時計の構成
ハードウェアクロックを協定世界時 (UTC) に設定します。サンプルコマンド:
cat > /etc/adjtime << EOF 0.0 0 0.0 0 UTC EOF timedatectl set-local-rtc 0詳細については、「Linux の時刻とタイムゾーン」をご参照ください。
-
sshd サービスの構成
リモートアクセスのために sshd サービスを構成します。
sshd は、SSH ベースの暗号化されたリモートログインおよび Linux の管理を可能にします。
/etc/ssh/sshd_configを次のように変更します。UseDNS no AddressFamily inet SyslogFacility AUTHPRIV PermitRootLogin yes PasswordAuthentication yes -
chrony サービスまたは NTP サービスの構成
時刻同期のために chrony サービスまたは Network Time Protocol (NTP) サービスを構成します。
chrony および NTP は、システムクロックを時刻ソースと同期させることで時刻精度を確保し、時刻ずれによる問題を防止します。
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 EOFNTP サービスを構成するためのサンプルコマンド
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 -
MOTD サービスの構成
ユーザーがログインした際にメッセージを表示するよう、Message of the Day (MOTD) サービスを構成します。
サンプルコマンド:
echo -e "\nWelcome to Alibaba Cloud Elastic Compute Service ! \n" > /etc/motd -
Firewalld サービスの無効化
Firewalld サービスを無効化します。クラウド環境ではセキュリティグループがファイアウォール保護を提供するため、Firewalld は不要です。サンプルコマンド:
systemctl stop firewalld systemctl disable firewalld -
pip リポジトリの構成
pip が構成されている場合は、Alibaba Cloud pip リポジトリを使用します。
~/.pip/pip.confのサンプル内容:[global] index-url=http://mirrors.cloud.aliyuncs.com/pypi/simple/ [install] trusted-host=mirrors.cloud.aliyuncs.com -
ネットワーク設定の構成
NetworkManager またはネットワークサービスを使用している場合は、
/etc/sysconfig/network-scripts/ifcfg-eth0を次のように構成します。DEVICE=eth0 BOOTPROTO=dhcp ONBOOT=yesその他のネットワーク構成については、「セカンダリ ENI を構成する」をご参照ください。
カーネルパラメーター構成
-
kernelopt パラメーターの構成
オペレーティングシステムが正しく起動するよう、GRUB カーネルパラメーターを構成します。以下の例は Debian オペレーティングシステムを使用しています。
-
/etc/default/grub内のGRUB_CMDLINE_LINUX=行に、以下を追加します。-
x86_64 アーキテクチャ
net.ifnames=0 console=tty0 console=ttyS0,115200n8 -
Arm64 アーキテクチャ
net.ifnames=0 console=tty0 console=ttyAMA0,115200n8
-
-
sudo update-grub2を実行して GRUB 構成を適用します。説明GRUB 構成ファイルのパスおよび変更を適用するコマンドは、オペレーティングシステムによって異なります。詳細については、「カスタムイメージに NVMe ドライバーをインストールする」をご参照ください。
-
-
sysctl パラメーターの構成
Linux カーネルのランタイム動作を最適化するよう、sysctl パラメーターを構成します。
-
/etc/sysctl.confに以下を追加します。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 -
sudo sysctl -pを実行して変更を適用します。
-
システムセキュリティに関する推奨事項
カスタムイメージをインポートする前に、以下のセキュリティ強化対策を適用してください。
-
パスワードによるルートログインを防止するため、ルートアカウントをロックします。
-
パスワード認証によるログインを無効にするため、
PasswordAuthenticationを no に設定します。説明インスタンス初期化時にルートパスワードを設定する場合は、パスワード認証によるログインを有効にするため、
PasswordAuthenticationを yes に設定します。
サンプルコード:
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
イメージ情報のクリア
独立系ソフトウェアベンダー (ISV) は、イメージをリリースする前に履歴レコードおよびログをクリアできます。