Sebelum mengimpor custom image ke Alibaba Cloud atau menerbitkannya di Alibaba Cloud Marketplace, pastikan gambar tersebut memenuhi spesifikasi dalam topik ini dan lulus uji kompatibilitas dengan tipe instans ECS. Mematuhi spesifikasi ini meningkatkan ketersediaan dan efisiensi impor custom image Anda, sehingga membantu Anda membuat Instance ECS yang disesuaikan dengan kebutuhan bisnis. Topik ini menjelaskan spesifikasi untuk membuat gambar Linux.
Disk partitions
Partisi disk harus memenuhi persyaratan berikut.
Ubah ukuran disk
Gunakan partisi fisik untuk mempartisi disk. Partisi root harus menjadi partisi terakhir untuk mencegah kegagalan saat mengubah ukuran sistem disk.
Untuk sistem yang mendukung pengubahan ukuran cloud disk secara online, gunakan perintah
growpartuntuk mengubah ukuran partisi. Untuk melakukannya, Anda harus menginstal paketcloud-utils-growpart. Untuk informasi selengkapnya, lihat Ubah ukuran partisi dan sistem file (Linux).
Swap partition
Jangan membuat swap partition.
Manajemen LVM
Jangan gunakan Logical Volume Management (LVM) untuk partisi disk.
Pemasangan disk
Anda harus menggunakan UUID untuk mengonfigurasi file
fstabdangrub. Untuk informasi selengkapnya, lihat Gunakan UUID untuk memasang disk data secara otomatis dalam file /etc/fstab dan Ubah metode identifikasi partisi disk ke UUID dalam file konfigurasi GRUB.PentingJika file
fstabdikonfigurasi secara salah, Instance ECS mungkin gagal memulai setelah restart.Ukuran disk
Kapasitas minimum sistem disk adalah 20 GiB.
Tentukan mode boot gambar
Untuk memastikan kompatibilitas dengan tipe instans yang menggunakan mode boot berbeda, konfigurasikan mode boot (BIOS atau UEFI) untuk gambar lokal Anda. Saat mengimpor gambar, pastikan mode boot yang Anda pilih sesuai dengan mode boot aktual gambar tersebut.
Untuk mengetahui cara mengonfigurasi mode boot saat membuat gambar lokal, lihat Buat VM dan instal sistem operasi.
Untuk mengetahui cara menyetel mode boot saat mengimpor gambar, lihat Impor custom image.
Anda dapat mengetahui mode boot untuk suatu tipe instans dari nilai parameter
SupportedBootModesdalam respons dari API DescribeInstanceTypes.
CatatanJika gambar lokal Anda mendukung BIOS dan UEFI, Anda dapat menyetel mode boot ke UEFI-Preferred. Gambar tersebut kemudian dapat secara otomatis menyesuaikan diri dengan mode boot semua tipe instans, yang juga membantu mengurangi biaya pembuatan gambar.
Perangkat lunak dan tool yang diperlukan
Instal driver virtio
Sebelum menerbitkan gambar, pastikan driver virtio telah diinstal dan ditambahkan ke initial RAM file system (initramfs). Driver virtio diperlukan agar gambar dapat berjalan pada instans Alibaba Cloud. Untuk informasi selengkapnya, lihat Instal driver virtio.
Instal driver NVMe
Famili instans ECS generasi terbaru, seperti ecs.g8i dan ecs.g7se, memasang cloud disk menggunakan protokol NVMe. Gambar harus memiliki driver NVMe yang diinstal, atau instans yang dibuat darinya akan gagal boot. Untuk memastikan Anda dapat menggunakan gambar tersebut untuk membuat tipe Instans ECS ini, kami menyarankan Anda menginstal driver NVMe pada gambar lokal Anda. Untuk petunjuknya, lihat Instal driver NVMe untuk custom image. Setelah Anda mengimpor gambar, atur properti NVMe Driver gambar tersebut menjadi Supported. Untuk informasi selengkapnya, lihat Ubah properti dan tag gambar.
Instal cloud-init
Anda harus menginstal cloud-init untuk melakukan inisialisasi Instance ECS yang dibuat dari gambar tersebut. Untuk informasi selengkapnya, lihat Instal cloud-init. Kami menyarankan Anda menginstal cloud-init versi 23.2.2 atau yang lebih baru untuk mendukung akses metadata dalam mode security-hardened. Hal ini memastikan keamanan akses metadata instans.
CatatanMenggunakan cloud-init untuk mengubah password mengharuskan kernel sistem operasi mendukung fitur
CONFIG_FW_CFG_SYSFS. Fitur ini didukung secara default pada versi kernel komunitas Linux 4.6 ke atas, serta pada versi kernel CentOS 3.10.0-826.el7 ke atas. Anda dapat menjalankan perintahgrep -nr CONFIG_FW_CFG_SYSFS /boot/config-$(uname -r)pada server yang menggunakan gambar tersebut. Jika output perintah tersebut berisiCONFIG_FW_CFG_SYSFS=y, berarti kernel dalam gambar tersebut mendukung fiturCONFIG_FW_CFG_SYSFS.Instal Cloud Assistant
Anda harus menginstal Cloud Assistant Agent saat membuat gambar. Cloud Assistant adalah tool otomatisasi native untuk ECS yang memungkinkan Anda menjalankan perintah (seperti perintah Shell, PowerShell, dan Bat) secara batch tanpa memerlukan password, logon, atau jump server. Anda dapat menggunakan Cloud Assistant untuk menjalankan skrip O&M otomatis, memantau proses, menginstal atau menguninstal perangkat lunak, memulai atau menghentikan layanan, serta menginstal patch atau pembaruan keamanan. Untuk informasi selengkapnya, lihat Instal Cloud Assistant Agent.
Amankan server
Saat membuat gambar, kami menyarankan Anda menggunakan Security Center untuk mengamankan server Anda. Security Center menyediakan rangkaian lengkap kemampuan keamanan, termasuk pemberitahuan peringatan, pemindaian dan penghapusan malware, deteksi dan penghapusan webshell, perlindungan mandiri client, serta pemindaian kerentanan gambar, untuk melindungi sepenuhnya aset cloud dan server on-premises Anda.
Konfigurasi sistem
Konfigurasi jam
Jam perangkat keras gambar mendukung zona waktu UTC dan LocalTime. Saat membuat gambar, Anda harus menggunakan mode Coordinated Universal Time (UTC) standar. Kode contoh berikut menunjukkan cara mengonfigurasi jam:
cat > /etc/adjtime << EOF 0.0 0 0.0 0 UTC EOF timedatectl set-local-rtc 0Untuk informasi selengkapnya, lihat Waktu dan zona waktu Linux.
Konfigurasi layanan SSHD
Anda harus mengonfigurasi layanan SSHD.
Layanan SSHD digunakan untuk login jarak jauh dan mengelola sistem Linux, serta menggunakan protokol SSH untuk komunikasi terenkripsi. Contoh modifikasi konfigurasi dalam file
/etc/ssh/sshd_configadalah sebagai berikut:UseDNS no AddressFamily inet SyslogFacility AUTHPRIV PermitRootLogin yes PasswordAuthentication yesKonfigurasi layanan Chrony atau NTP
Saat membuat gambar, kami menyarankan Anda mengonfigurasi layanan Chrony atau NTP.
Chrony dan NTP adalah tool yang digunakan untuk menyinkronkan jam komputer dan mencegah deviasi waktu. Berikut ini adalah contoh perintah:
Layanan Chrony
chrony_file=/etc/chrony.conf cat >$chrony_file <<EOF # Gunakan server NTP Alibaba # NTP Publik # NTP Alicloud 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 # Abaikan stratum dalam pemilihan sumber. stratumweight 0.05 # Catat laju perolehan/kehilangan waktu oleh jam sistem. driftfile /var/lib/chrony/drift # Aktifkan sinkronisasi RTC kernel. rtcsync # Pada tiga pembaruan pertama, langkahkan jam sistem alih-alih slew # jika penyesuaian lebih besar dari 10 detik. makestep 10 3 # Izinkan akses client NTP dari jaringan lokal. #allow 192.168/16 # Dengarkan perintah hanya pada localhost. bindcmdaddress 127.0.0.1 bindcmdaddress ::1 # Nonaktifkan pencatatan log akses client. noclientlog # Kirim pesan ke syslog jika penyesuaian jam lebih besar dari 0,5 detik. logchange 0.5 logdir /var/log/chrony #log measurements statistics tracking EOFLayanan 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 # Dukungan Kontrol Akses 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 # Jam lokal 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 EOFKonfigurasi layanan MOTD
Saat membuat gambar, kami menyarankan Anda mengonfigurasi layanan Message of the Day (MOTD).
Layanan MOTD di Linux menampilkan pesan setelah pengguna login. Berikut ini adalah contoh perintah:
echo -e "\nSelamat datang di Alibaba Cloud Elastic Compute Service! \n" > /etc/motdNonaktifkan layanan Firewalld
Kami menyarankan Anda menonaktifkan layanan Firewalld. Firewalld adalah layanan yang mengelola aturan firewall di Linux. Anda dapat menonaktifkan firewall lokal karena grup keamanan memberikan perlindungan di cloud. Berikut ini adalah contoh perintah:
systemctl stop firewalld systemctl disable firewalldKonfigurasi sumber pip
Jika sumber PIP telah dikonfigurasi pada sistem Anda, kami menyarankan Anda menggunakan alamat sumber PIP Alibaba Cloud untuk mendapatkan paket perangkat lunak terbaru. Isi file
~/.pip/pip.confadalah sebagai berikut:[global] index-url=http://mirrors.cloud.aliyuncs.com/pypi/simple/ [install] trusted-host=mirrors.cloud.aliyuncs.comKonfigurasi jaringan
Jika Anda menggunakan NetworkManager atau layanan jaringan, konfigurasikan file
/etc/sysconfig/network-scripts/ifcfg-eth0sebagai berikut:DEVICE=eth0 BOOTPROTO=dhcp ONBOOT=yesUntuk informasi tentang cara mengonfigurasi layanan jaringan lainnya, lihat Konfigurasi antarmuka jaringan elastis sekunder.
Parameter kernel
Konfigurasi kernelopt
Anda harus mengonfigurasi parameter boot kernel dalam GRUB untuk memastikan sistem dimulai dengan benar. Contoh berikut menunjukkan perintah untuk sistem Debian:
Dalam file
/etc/default/grub, tambahkan informasi berikut ke barisGRUB_CMDLINE_LINUX=.Arsitektur x86_64
net.ifnames=0 console=tty0 console=ttyS0,115200n8Arsitektur Arm64
net.ifnames=0 console=tty0 console=ttyAMA0,115200n8
Jalankan perintah
sudo update-grub2untuk menerapkan konfigurasi GRUB.CatatanJalur file konfigurasi GRUB dan perintah untuk menerapkan konfigurasi bervariasi tergantung sistem operasi. Untuk informasi selengkapnya, lihat Instal driver NVMe untuk custom image.
Konfigurasi sysctl
Kami menyarankan Anda mengonfigurasi parameter
sysctluntuk menyetel dan mengoptimalkan perilaku kernel Linux.Modifikasi file
/etc/sysctl.confsebagai berikut.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 = 0Jalankan perintah
sudo sysctl -puntuk menerapkan perubahan parameter kernel.
Rekomendasi keamanan sistem
Untuk meningkatkan keamanan sistem, kami menyarankan Anda melakukan tindakan berikut sebelum mengimpor gambar:
Kunci akun root. Hal ini mencegah login langsung ke sistem menggunakan password root, meskipun password telah ditetapkan.
Nonaktifkan login berbasis password dengan mengubah pengaturan SSH
PasswordAuthentication.CatatanJika Anda menetapkan password root selama inisialisasi instans,
PasswordAuthenticationuntuk SSH mungkin diaktifkan secara default.
Berikut ini adalah contoh kode:
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/shadowPembersihan informasi gambar
Sebelum menerbitkan gambar, hapus informasi sensitif, seperti riwayat perintah dan log.