Jika versi sistem operasi dari gambar Linux Anda tidak didukung oleh Elastic Compute Service (ECS) dan gambar tersebut tidak dapat digunakan untuk menginisialisasi instance melalui cloud-init, maka gambar tersebut diidentifikasi sebagai dibuat dari sistem operasi yang tidak dikenali. Sebelum mengimpor gambar ke instance ECS, Anda harus menambahkan skrip penguraian ke dalam gambar untuk mengonfigurasi sistem operasi secara otomatis selama start pertama kali instance.
Gambar Linux yang tidak didukung oleh ECS dianggap sebagai gambar platform non-standar. Gambar-gambar ini dikembangkan pada platform sistem operasi standar, tetapi file konfigurasi sistem kritis, lingkungan sistem dasar, atau aplikasi dari gambar tersebut tidak sesuai dengan persyaratan sistem operasi standar ECS. Berikut adalah OS Version yang didukung dan panduan untuk mengimpor gambar platform non-standar:
Others Linux: ECS mengidentifikasi semua gambar jenis ini sebagai gambar Linux lainnya. Jika Anda mengimpor gambar Others Linux dan menggunakannya untuk membuat instance, ECS tidak akan memproses instance yang dibuat. Setelah membuat instance, Anda harus mengonfigurasi alamat IP, rute, dan kata sandi dari instance tersebut.
Customized Linux: Sebelum mengimpor gambar Customized Linux, ikuti petunjuk dalam topik ini untuk mengonfigurasi gambar Anda.
Prasyarat
Gambar Anda harus memenuhi persyaratan berikut:
Partisi pertama, biasanya /dev/sda1 atau /dev/vda1, harus dapat ditulis.
Tipe sistem file partisi pertama harus FAT32, ext2, ext3, ext4, atau UFS.
CatatanAnda dapat menggunakan perintah
blkid /dev/sdXnuntuk memverifikasi tipe sistem file, di mana sdXn mewakili nama partisi pertama, seperti /sda1.Ukuran file virtual dari gambar Linux yang dikustomisasi harus lebih besar dari 5 GiB.
CatatanAnda dapat memeriksa ukuran partisi menggunakan perintah
df -h /dev/sdXn, di mana sdXn adalah nama partisi pertama, seperti /sda1.
Prosedur
Masuk ke mesin virtual tempat gambar dibuat sebagai pengguna root.
Buat direktori
aliyun_custom_imagedi direktori root partisi pertama server tempat gambar dibuat.mkdir /aliyun_custom_imageSaat instance ECS yang dibuat dari gambar Linux yang dikustomisasi dijalankan untuk pertama kalinya, Alibaba Cloud menulis konfigurasi instance seperti nama host, kata sandi, dan server DNS ke file
os.confdi direktorialiyun_custom_image. Jika fileos.conftidak ada, Alibaba Cloud akan membuat satu.Contoh berikut menunjukkan isi file
os.conf:hostname=<yourHostName> password=<yourPassword> eth0_ip_addr=10.0.0.2 eth0_mac_addr=00:xx:xx:xx:xx:23 eth0_netmask=255.255.255.0 eth0_gateway=10.0.0.1 eth0_route="0.0.0.0/0 10.0.0.1" dns_nameserver="7.7.X.X 8.8.8.8"Tabel berikut menjelaskan parameter dalam contoh di atas. Anda dapat mengonfigurasi parameter berdasarkan kebutuhan Anda.
Parameter
Deskripsi
hostnameNama host.
passwordKata sandi pengguna root.
eth0_ip_addrAlamat IP NIC eth0.
eth0_mac_addrAlamat MAC NIC eth0.
eth0_netmaskNetmask jaringan NIC eth0.
eth0_gatewayGateway default NIC eth0.
eth0_routeRute internal eth0. Secara default, rute dipisahkan dengan spasi.
dns_nameserverDaftar alamat DNS. Secara default, alamat dipisahkan dengan spasi.
Buat skrip penguraian di dalam gambar, seperti
customized-config.service, untuk menafsirkan dan menerapkan konfigurasi sistem dari fileos.conf.Skrip ini mengotomatiskan tugas konfigurasi awal seperti mengatur nama host, kata sandi root, server DNS, dan konfigurasi jaringan saat instance ECS dijalankan untuk pertama kalinya.
Lihat contoh skrip berikut:
#!/bin/bash ### BEGIN INIT INFO # Provides: os-conf # Required-Start: $local_fs $network $named $remote_fs # Required-Stop: # Should-Stop: # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: Inisialisasi konfigurasi sistem ### END INIT INFO # Tentukan direktori untuk partisi pertama dan file os.conf first_partition_dir='/boot/' os_conf_dir=${first_partition_dir}/aliyun_custom_image os_conf_file=${os_conf_dir}/os.conf # Muat os.conf jika ada load_os_conf() { if [[ -f $os_conf_file ]]; then . $os_conf_file return 0 else return 1 fi } # Fungsi pembersihan untuk menghapus os.conf dan memastikan direktori ada cleanup() { rm $os_conf_file >& /dev/null mkdir -p $os_conf_dir } # Konfigurasikan kata sandi root config_password() { if [[ -n $password ]]; then password=$(echo $password | base64 -d) if [[ $? == 0 && -n $password ]]; then echo "root:$password" | chpasswd fi fi } # Atur nama host config_hostname() { if [[ -n $hostname ]]; then sed -i "s/^HOSTNAME=.*/HOSTNAME=$hostname/" /etc/sysconfig/network hostname $hostname fi } # Konfigurasikan pengaturan DNS config_dns() { if [[ -n $dns_nameserver ]]; then dns_conf=/etc/resolv.conf sed -i '/^nameserver.*/d' $dns_conf for i in $dns_nameserver; do echo "nameserver $i" >> $dns_conf done fi } # Tentukan apakah jaringan adalah klasik atau VPC is_classic_network() { grep -q 'eth1' $os_conf_file } # Konfigurasikan pengaturan jaringan config_network() { /etc/init.d/network stop config_interface eth0 ${eth0_ip_addr} ${eth0_netmask} ${eth0_mac_addr} config_route eth0 "${eth0_route}" if is_classic_network ; then config_interface eth1 ${eth1_ip_addr} ${eth1_netmask} ${eth1_mac_addr} config_route eth1 "${eth1_route}" fi /etc/init.d/network start } # Konfigurasikan antarmuka jaringan config_interface() { local interface=$1 local ip=$2 local netmask=$3 local mac=$4 interface_cfg="/etc/sysconfig/network-scripts/ifcfg-${interface}" cat << EOF > $interface_cfg DEVICE=$interface IPADDR=$ip NETMASK=$netmask HWADDR=$mac ONBOOT=yes BOOTPROTO=static EOF } # Atur gateway default config_default_gateway() { local gateway=$1 sed -i "s/^GATEWAY=.*/GATEWAY=$gateway/" /etc/sysconfig/network } # Konfigurasikan rute config_route() { local interface=$1 local route="$2" route_conf=/etc/sysconfig/network-scripts/route-${interface} > $route_conf echo $route | sed 's/;/\n/' | \ while read line; do dst=$(echo $line | awk '{print $1}') gw=$(echo $line | awk '{print $2}') if ! grep -q "$dst" $route_conf 2> /dev/null; then echo "$dst via $gw dev $interface" >> $route_conf fi if [[ "$dst" == "0.0.0.0/0" ]]; then config_default_gateway $gw fi done } ################## portal layanan sysvinit #################### # Mulai proses konfigurasi start() { if load_os_conf ; then config_password config_network config_hostname config_dns cleanup return 0 else echo "tidak memuat $os_conf_file" return 0 fi } RETVAL=0 # Penanganan aksi layanan case "$1" in start) start RETVAL=$? ;; *) echo "Penggunaan: $0 {start}" RETVAL=3 ;; esac exit $RETVALAtur skrip penguraian untuk dijalankan secara otomatis saat startup sistem.
Perintah sampel berikut berlaku untuk sistem Ubuntu. Modifikasi perintah startup berdasarkan sistem operasi Anda.
systemctl daemon-reload systemctl enable customized-config.serviceCatatanSaat gambar kustom dibuat berdasarkan gambar Customized Linux, skrip startup otomatis juga disertakan. Alibaba Cloud akan mengeksekusi konfigurasi file
os.confsaat instance dijalankan untuk pertama kalinya.
Referensi
Setelah mengonfigurasi gambar, Anda dapat memilih Customized Linux sebagai versi sistem operasi saat mengimpor gambar kustom. Untuk informasi lebih lanjut, lihat Impor Gambar Kustom.