kahverengi :: kişisel web sitesi / makale/amazon-ec22/adim-adim-slackware-amazon-ami-hazirlama.html
Adım adım slackware amazon AMI hazırlama 16-06-2014
One may find the english version of the document at this link: http://www.kahverengi.com/EN/article/amazon-ec22/slackware-custom-amazon-ami-from-scratch.html
Amazon EC2 leri ilk incelemeye başladığımda Slackware imajının olmadığını görmek beni biraz hayal kırıklığına uğratmıştı. Sonraları araya başka bir sürü iş girince bu konuyu unuttum. Yakın tarihte tekrar incelediğimde bu konuda değişen bir şey olmadığını gördüm. Dahası İnternette araştırdığımda bu işlemin nasıl yapıldığını anlatan güncel bir örnek te bulamadım. Gerçi farklı sürümler için yardım bilgileri mevcuttu. Hatta Slackware için imaj oluşturma v.s. bilgileri de mevcuttu. Ama maalesef Slackware Amazon AMI imaj hazırlama ile ilgili bir bilgi yoktu. En azından ben bulamadım diyelim. Ben de bu işlemi kendim yapmaya karar verdim. Aşağıda Slackware Amazon AMI imajı oluşturmak için adım adım neler yapılması gerektiğini yazdım. Aşağıdaki adımların tümümün gerekli olduğunu iddia edemem ama tümünü tek tek atlamadan yapmak çalışır bir AMI oluşturmak için yeterli olacaktır.
Linux çalışma makinesi; Slackware 13.1 yükleme dosyaları (yani DVD veya ISO olabilir), Amazon AWS hesabı, çalışır durumda Amazon API and AMI araçları
1. Çalışma ortamını hazırla
2. İşletim sisteminin yükleneceği alanı oluştur
Yaklaşık 8Gb büyüklüğünde imaj dosyası oluştur
# dd if=/dev/zero of=/tmp/amiworks/img-slackware bs=16M count=$((64*8))
Bu imajın üzerine dosya yapısı yarat
# mke2fs -F -j /tmp/amiworks/img-slackware
Eşleme(bağlama) noktası yarat ve bu noktayla imajı eşle (bağla)
# mount -o loop /tmp/amiworks/img-slackware /tmp/amiworks/fs-slackware
Bağladığımız döngü bağlantısını (loop device) bölümle (partition). İşlemin etkinleşmesi için yeniden bağla
# mount -o remount /tmp/amiworks/fs-slackware
3. Slackware kurulumu
Yükleme ortamını (DVD) bilgisayarınıza koyabilir yada yükleme iso dosyasını bağlama noktasına bağlayabilirsiniz. (Ben ilk seçeneği kullandım. DVD nin olduğu yerde Slackware dizinine gittim. )
# cd [path to SlackDVD]/slackware
ROOT yolunu değiştirip (bu adım son derece önemli. Bu adımda hata yaparsanız üzerinde çalıştığınız sistemi kullanılmaz hale getirebilirsiniz.) gereken paketleri yukarıda yarattığımız imaj dosyasının üzerine kurmaya başla. Yüklenecek paket grupları için "full install" seçilmeli. A: Gereken paket grupları: a ap d f k l n t tcl and x. Bazıları gereksiz görünebilir ancak xen kernelinin ve dom0 scriptinin sorunsuzca yüklenmesi için ben bu şekilde ilerledim. Zamanım olsa sadece zorunlu olan paketleri filtreleye bilirdim. Ama uğraşamadım (Belki gelecekte tekrar bu noktaya döner ve filtreleme yaparım).
# export ROOT=/tmp/amiworks/fs-slackware/
# for i in `ls -F1 | grep /`; do cd $i && ./install-packages && cd ..; done
grup ön-yükleyiciyi kur ve imaj ortamından çık.
# cd ../extra/grub
# installpkg grub-0.97-i486-9.txz
# unset ROOT
4. xen kernel kurulumu
Çalışma ortamını hazırla
# mkdir /tmp/amiworks/xen-kernel
# cd /tmp/amiworks/xen-kernel
xen kernel'ını kurmadan önce tüm gerekli dosyaları internetten indirmemiz ve kuruluma hazır hale getirmemiz gerekiyor. Gereken dosyalar: 13.1 için xen paketi slackbuild.org adresinden edinilebilir. acpica paketi de (ki bu paket xen kernel için gerekli bir uygulamadır) slackbuild.org adresinden indirilebilir.
Ayrıca dom0 kurulum scriptinin çalışması için gereken dosyalar.
Bu aşamada herhangi bir kurulumu gerçekleştirmeyelim. Kurulum işlemlerini sonraki adımlarda direk imajın üzerinde yapacağız. Bunun nedeni çalışma makinesi ile imajın üzerine kurulu işletim sistemler ve sürümleri farklı olabilir. Örneğin ben imaj için 13.1 kullanıyorken kendi çalışma makinemde 14.0 kurulu.
# wget http://slackbuilds.org/slackbuilds/13.1/development/acpica.tar.gz
# tar zxvf acpica.tar.gz
# wget http://www.acpica.org/download/acpica-unix-20100915.tar.gz
# wget http://slackbuilds.org/slackbuilds/13.1/system/xen.tar.gz
# tar zxvf xen.tar.gz
# wget http://bits.xensource.com/oss-xen/release/4.0.1/xen-4.0.1.tar.gz
Şimdi de dom0 için gereken iki adet dosyayı indirelim (dom0 klasörünün içindeki readme dosyasında hangi dosyaların hangi adreslerden indirilebileceği yazıyor.)
# cd dom0/
# wget http://gentoo-xen-kernel.googlecode.com/files/xen-patches-2.6.34-6.tar.bz2
# wget http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.34.7.tar.bz2
Tüm bu dosyaları bir bütün olarak imaja aktaralım.
# mv /tmp/amiworks/xen-kernel/ /tmp/amiworks/fs-slackware/tmp/
chroot ile çalışılacak dizini değiştirelim. PATH çevre değişkenini güncelleyelim.
# chroot /tmp/amiworks/fs-slackware/ /bin/bash
Artık xen paketini kurabiliriz
# cd /tmp/xen-kernel/acpica
# installpkg /tmp/acpica-20100915-i486-1_SBo.tgz
# cd ../xen
# installpkg /tmp/xen-4.0.1-i486-1_SBo.tgz
Şimdi dom0 kurulum scriptini çalıştıralım.
# tar -C /usr/src/ -jxf linux-2.6.34.7.tar.bz2
# BOOTLOADER=grub sh ./kernel-xen.sh
5. Kurulum sonrası işlemler.
root şifresini belirleyelim az önce değiştirdiğimiz çalışma dizininden çıkalım.
imaj üzerindeki /etc/rc.d/rc.inet1 dosyasını açalım ve DHCP nin aktif olduğundan emin olalım (USE_DHCP="YES" olmalı. Sadece bu yeterli.)
/etc/ altında fstab isimli dosya yaratalım ve aşağıdaki satırları bu dosyaya kopyalayalım.
İmaj üzerindeki tüm geçici çalışma dosyalarını temizleyelim.
# rm -r /tmp/amiworks/fs-slackware/tmp/xen*
# rm /tmp/amiworks/fs-slackware/tmp/acpica-20100915-i486-1_SBo.tgz
# rm -r /tmp/amiworks/fs-slackware/tmp/SBo/
# umount -d /tmp/amiworks/fs-slackware/
6. Amazon imajının hazırlanması
Bu adımdaki işlemleri için amazon ec2 ami ve api araçlarına ihtiyaç vardır. Ayrıca amazon AWS hesabınızın olması gerekmektedir. Hesap numarası şu şekilde kullanılmalı 111222333444 yani orijinal hesap numarasının aralarındaki çizgileri kaldırarak kullanmak gerekiyor. private key ve certificate dosyalarına da ihtiyaç var ki bunlarda AWS hesabınızı yönettiğiniz web ekranlarından temin edilebilir. ( access credential menüsü).
# ec2-bundle-image -i /tmp/amiworks/img-slackware -k pk-privatekeyfile.pem -c cert-certificatefile.pem -u 111111111111
specify a value for arch [unknown]:
Yukarıdaki komut sizden arch tipini beritmenizi ister. Ben i386 yazıp dedim.(i686 da denebilir.Ama ben denemedim)
Hazırlanan dosyaları Amazon AWS ye aktarmadan önce S3 servisinde bir bucket yaratılması gerekiyor (klasör yaratmak gibi). Benim yaratıp kullandığım bucket in ismi "slackware-images". access ve secret key leri yine AWS yönetim panelinizden edinebilirsiniz. En sonunda da aktarılan imaj register edilir. (imaj dosyalarının AWS ye aktarılması son derece uzun sürüyor. Dile kolay 8Gb dosya aktarılıyor)
# ec2-upload-bundle -b slackware-images -m /tmp/img-slackware.manifest.xml -a -s
# ec2-register slackware-images/img-slackware.manifest.xml -n slackware-13.1-v.1
Çalışma dosyalarını temizle
Not: Bu imajı kullanarak yeni bir instance yaratırken herhangi bir aki kerneli kullanamazsınız. Ben "aki-f5cbe081" isimli kerneli kullandım. Diğerlerinin hepsini denemedim ama iki üç tanesi çalışmadı.
Bu yukarıda hazırladığım imajı yakın zamanda public hale getirip AWS EC2 de yayınlamayı düşünüyorum. Ama lütfen şunu unutmayın ki bu imaj sadece keyfi amaçla yapılmıştır yani gerçek üretim ortamı için kulanılmaya henüz uygun değildir.
- Building a root Slackware filesystem from scratch for the User-Mode Linux through loopback devices
- Bundling Amazon S3-Backed Linux/UNIX AMIs From a Loopback