Hyper-v üzerinde çalışan linux virtual sistemler de (Redhat,Suse,Centos) time sekronizasyon problemi oluşmaktaydı.Uzun süre önce Microsoft, bu durumu düzeltmek adına Linux Integration Services isimli bir patch yayınlandı.Belirttiğim güncelleme linux sisteme geçilip reboot edildikten sonra host ve linux virtual makinalar arasındaki saat sekronizasyonu sync edilebiliyordu.Vmware sanallaştırma teknolojilerini kullanmak varken neden Hyper-V üzerinde linux sanallaştırayım diyebilirsiniz.Açıkcası, hyper-v üzerinde çalışan linux sistemler için sık sık time sekronizasyonu ve diğer servislerin uyumsuz çalıştığını görüyorum.Bu sebeple benzeri bir problemin çözümünü detaylıca bu sayfa üzerinde anlatmak istedim. “Linux Integration Services” ayarları yapıldıktan sonra “seth0″ ismin de bir sync interface ve kernel’e eklenen bir kaç adet  modül geliyor ki içlerinde gereksiz olanlar da mevcut.Eğer eklenilen modüller build edilmemişse update veya upgrade edilmiş kernel, reboot edildikten sonra time sekronizasyonu için eklenenmiş modulleri load edemiyor dolayısıyla filesystem boot olamayıp operating sistem de açılamıyor.(Kernal Hard Panic)

En azından operating sistemin tekrar açılıp kaldığı yerden devam etmesi için  ilgili virtual sistemin reboot edilip bir önceki kernel(eski olan) ile  boot edilmesi durumu ortaya çıkıyor.Microsoft, ilgili problemin çözümü için DKMS(Dynamic Kernel Module Support) ile daha evvel linux integration services ile gelen modüllerin  yukarıda bahsettiğimiz gibi build edilmesi gerektiğini belirtmiş.Bize düşen, ilgili modullere ait libraryleri compile edip güncel olan kernel ile problemsiz çalışmasını ve sistemin doğal haliyle boot olmasını sağlamaktır.
Not: Aşağıda anlatılan bilgiler, Redhat 5.x ve Centos 5.x isletim sistemlerini kapsıyor.
Öncelikle rpm komutu ile kernel-devel paketinin kurulu olup olmadığını kontrol ediyoruz.

rpm -qa kernel-devel | grep devel
kernel-devel-2.6.18-238.9.1.el5
kernel-devel-2.6.18-238.12.1.el5

Şuanda core yapınız  için uygun olan DKM paketini sistem üzerine kurmanız gerekli. Aşağıdaki rpm arsivlerinde uygun olan dkm’yi wget komutu ile herhangi bir dizine cekip gpg key’ini doğruladıktan sonra rpm -i  komutu ile install etmelisiniz.

Centos 6:
i686 http://packages.sw.be/rpmforge-release/rpmforge-release-0.5.2-2.el6.rf.i686.rpm
x86_64 http://packages.sw.be/rpmforge-release/rpmforge-release-0.5.2-2.el6.rf.x86_64.rpm
Centos 5:
i386 http://packages.sw.be/rpmforge-release/rpmforge-release-0.5.2-2.el5.rf.i386.rpm 
x86_64 http://packages.sw.be/rpmforge-release/rpmforge-release-0.5.2-2.el5.rf.x86_64.rpm

Örnek:

wget http://packages.sw.be/rpmforge-release/rpmforge-release-0.5.2-2.el5.rf.x86_64.rpm
rpm --import http://apt.sw.be/RPM-GPG-KEY.dag.txt

Doğrulama anahtarını import ettikten sonra indirilen paketi check edelim.

rpm -K rpmforge-release-0.5.2-2.el5.rf.*.rpm && echo $?
rpmforge-release-0.5.2-2.el5.rf.x86_64.rpm: (sha1) dsa sha1 md5 gpg OK
 0

Şuanda dkm’yi edineceğimiz rpm deposu yüklenip gereksimim duyulan paket kurulacak.

rpm -i rpmforge-release-0.5.2-2.el5.rf.*.rpm

Eğer herhangi bir problem oluşmadıysa repository bölümüne “rpmforge.repo”  isimli yeni bir repo eklendiğini görmelisiniz.

ls -l /etc/yum.repos.d/rpmforge.repo
 -rw-r--r-- 1 root root 1113 Nov 13  2010 /etc/yum.repos.d/rpmforge.repo

Yum ile dkms’yi install ediyoruz.

 yum install dkms -y

Dkms yüklendiği için kendisine ait konfigurasyon dosyalarını rpm -qcl komut seçeneği ile listelenebilir.

rpm -qcl dkms /etc/bash_completion.d/dkms
/etc/dkms/framework.conf
/etc/dkms/template-dkms-mkrpm.spec
/etc/kernel/postinst.d/dkms
/etc/kernel/prerm.d/dkms
/etc/rc.d/init.d/dkms_autoinstaller

/usr/src/ altında linuxic-2.1 isimli bir dizi oluşturup daha evvel cdrom’un mount edildiği dizindeki dosyaları yeni klasör altına kopyalıp ilgili dizin altına geçiyoruz.

[root@x01 ~]# mkdir /usr/src/linuxic-2.1

[root@x01 ~]#  cp -R /opt/linux_ic_v21_rtm/ /usr/src/linuxic-2.1
[root@x01 ~]#  cp /usr/src/linuxic-2.1/scripts/dkms.conf /usr/src/linuxic-2.1/

Yukarıdaki işlemler sonrası herhangi bir text editörü ile /etc/modprobe.conf isimli dosyayı açıp içerisine aşağıdaki satırları girmelisiniz.

alias scsi_hostadapter1 vmbus
alias scsi_hostadapter2 blkvsc
alias scsi_hostadapter3 storvsc
alias scsi_hostadapter4 netvsc

Şimdi sırasıyla aşağıdaki komutlaro çalıştırılip ilgili modullerin built edilmesini sağlayacağız.

[root@x01 ~]# dkms add -m linuxic -v 2.1

Creating symlink /var/lib/dkms/linuxic/2.1/source ->
                 /usr/src/linuxic-2.1

DKMS: add Completed.
[root@x01 ~]# dkms build -m linuxic -v 2.1
Kernel preparation unnecessary for this kernel.  Skipping...
Building module:
cleaning build area...
/usr/bin/env make install.......................
cleaning build area...
DKMS: build Completed.
[root@x01 ~]# dkms install --force -m linuxic -v 2.1
vmbus.ko:
 Running module version sanity check.
 - Original module
 - Found /lib/modules/2.6.18-238.9.1.el5/kernel/drivers/vmbus/vmbus.ko
 - Storing in /var/lib/dkms/linuxic/original_module/2.6.18-238.9.1.el5/x86_64/
 - Archiving for uninstallation purposes
 - Installation
 - Installing to /lib/modules/2.6.18-238.9.1.el5/extra/
netvsc.ko:
 Running module version sanity check.
 - Original module
 - Found /lib/modules/2.6.18-238.9.1.el5/kernel/drivers/vmbus/netvsc.ko
 - Storing in /var/lib/dkms/linuxic/original_module/2.6.18-238.9.1.el5/x86_64/
 - Archiving for uninstallation purposes
 - Installation
 - Installing to /lib/modules/2.6.18-238.9.1.el5/extra/
storvsc.ko:
Running module version sanity check.
 - Original module
 - Found /lib/modules/2.6.18-238.9.1.el5/kernel/drivers/vmbus/storvsc.ko
 - Storing in /var/lib/dkms/linuxic/original_module/2.6.18-238.9.1.el5/x86_64/
 - Archiving for uninstallation purposes
 - Installation
 - Installing to /lib/modules/2.6.18-238.9.1.el5/extra/
blkvsc.ko:
Running module version sanity check.
 - Original module
 - Found /lib/modules/2.6.18-238.9.1.el5/kernel/drivers/vmbus/blkvsc.ko
 - Storing in /var/lib/dkms/linuxic/original_module/2.6.18-238.9.1.el5/x86_64/
 - Archiving for uninstallation purposes
 - Installation
 - Installing to /lib/modules/2.6.18-238.9.1.el5/extra/
 Adding any weak-modules
 Modulefile is /etc/modprobe.conf
 Modulefile is /etc/modprobe.conf
 Modulefile is /etc/modprobe.conf
 Modulefile is /etc/modprobe.conf
depmod.....
DKMS: install Completed.

İşlemler bittiğine göre yapılan işlemleri test etmek adına operating sistem reboot edilebir.

[root@x01 ~]#init 6

Reboot sonrasi yeni kernel’ın normal şekilde boot olduğunu görmelisiniz.Tekrar shell aldıktan sonra built edilen 4 adet module ait detaylı bilfiyi görüntülemek için aşağıdaki komutu kullanabilirsiniz.

modinfo vmbus blkvsc storvsc netvsc
filename:       /lib/modules/2.6.18-238.9.1.el5/extra/vmbus.ko
version:        2.1.25
license:        GPL
srcversion:     3C1899C419665CB2514F2D0
depends:
vermagic:       2.6.18-238.9.1.el5 SMP mod_unload gcc-4.1
parm:           vmbus_irq:int
parm:           vmbus_loglevel:int
filename:       /lib/modules/2.6.18-238.9.1.el5/extra/blkvsc.ko
version:        2.1.25
license:        GPL
srcversion:     F83F5BFB642CF459920A9F5
depends:        scsi_mod,vmbus
vermagic:       2.6.18-238.9.1.el5 SMP mod_unload gcc-4.1
parm:           blkvsc_ringbuffer_size:int
filename:       /lib/modules/2.6.18-238.9.1.el5/extra/storvsc.ko
version:        2.1.25
license:        GPL
srcversion:     E4EE20F8B5ABE2FBCF8C7D7
depends:        scsi_mod,vmbus
vermagic:       2.6.18-238.9.1.el5 SMP mod_unload gcc-4.1
parm:           storvsc_ringbuffer_size:int
filename:       /lib/modules/2.6.18-238.9.1.el5/extra/netvsc.ko
version:        2.1.25
license:        GPL
srcversion:     0C185C24BD58FAC714FC7A3
depends:        vmbus
vermagic:       2.6.18-238.9.1.el5 SMP mod_unload gcc-4.1
parm:           promisc_mode:Set network to 0 (normal mode) or 1 (promiscuous mode) (short)
parm:           netvsc_ringbuffer_size:int

Ek bilgi:  Hardware clock’un time ayarını sistemin time dilimi ile aşağıdaki komutu kullanarak set edebilirsiniz.

hwclock --systohc && hwclock --show
 Wed 06 Jul 2011 01:09:27 AM EEST  -0.316175 seconds

Refaranslar:
http://support.microsoft.com/kb/2387594
http://wiki.centos.org/HowTos/BuildingKernelModules

Yazan: Uğur Engin
Share on Facebook

Leave a reply

required

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>