5
May
Salı günü Bahadır'ın geliştirici arkadaşları için Wordpress blog satışlarında halk günü yapması ile beraber, ben de artık http://developer.pardus.org.tr/people/metin adresine taşınmış bulunuyorum. Bundan sonra yazarsam oraya yazıyor olacağım. Sonra "vay efendim ben duymadım, bilmiyordum" olmasın.
11
Kas
Daha üniversitenin ilk yıllarında, hatta ilk aylarında, geliştirici ekipten S. Çağlar Onur ve Ali Erdinç Köroğlu'nun katılımıyla gerçekleştirilen bir etkinlikle Pardus'un geliştirilme sürecini başından itibaren takip etme imkanımız olmuştu. Takip eden Mayıs ayında da aynı heyecanla ODTÜ'deki Özgür Yazılım Şenliği'ne katılmıştık Çanakkale'den bir otobüs dolusu öğrenci olarak.

Bunu izleyen dönemlerde Pardus için daha çok kullanıcı ve dolayısıyla tüketici konumundaydım. Ta ki, 2009 yazına kadar. Özgür yazılımı yaygınlaştırmak ve desteklemek amacıyla öğrencilere staj imkanı sağlayan Pardus'ta 2009 ağustos ayında staj yaparak hem geliştirici ekibi hem de projeyi daha yakından tanıma fırsatını elde ettim.

Pardus'a katkı verme süreci, Necdet Yücel'in 2009 temmuzunda duyurduğu ve takip eden ekim ayında kendisinin danışmanlığında başladığımız "Pardus'un 64-bit Mimarisine Port Edilmesi" bitirme projesi ile devam etti. Ulusal dağıtımımızın 64-bit mimarili işlemciler üzerinde de koşabilmesi için gerçekleştirdiğimiz çalışmalar, TÜBİTAK ve Çanakkale On Sekiz Mart Üniversitesi arasında imzalanan işbirliği protokolü ile Pardus tarafından da resmen desteklenerek, Pardus'un kullanabileceği bir ürün halini aldı. Ayrıca bu çalışmaları bir düzineye yakın üniversitede çeşitli etkinliklerde anlatmaya çalışarak, yaptığımız işin benzeri üniversite-Pardus işbirliği çerçevesinde, başka projelerin de teşviki olabileceğini ümit ettik, hala ediyoruz.

Ve, 21 haziranda On Sekiz Mart Üniversitesi, Bilgisayar Mühendisliği bölümünden mezun olarak lisans eğitimime noktayı koymuş oldum. Geçen Eylül ayında da TÜBİTAK/UEKAE'de Pardus geliştiricisi olarak işe başladım.

Çanakkale hakkında da birkaç şey söylemeden edemeyeceğim. "Özgür yazılımcının yeşerdiği topraklardan biridir Çanakkale" Necdet Hoca'mızın deyimiyle. Projeye ve özgür yazılıma hatırı sayılır katkı vermiş ÇOMÜ'lü abi ve ablalarımızın yaptıklarını duymak, onları takip etmek her zaman heyecanlandırmıştı bizi. Tıpkı daha öncekiler ve Pardus 64-bit'te olduğu gibi, ÇOMAK projesinin de duyurulması ile beraber ÇOMÜ'de bu geleneğin daimi olacağından emin olmak gurur verici.
26
Mar

Pardus Tanıtım ve Geliştirme Günleri'nin ikincisi bu sene Bilkent Üniversitesi'nde düzenlendi.

Özgür yazılım ve Pardus dolu sunumların yer aldığı etkinlikte, Tübitak/UEKAE ekibi Pardus teknolojileri ve karşılaştırmalı Pardus ile katılımcıları Pardus hakkında bilgilendirirken, "Nasıl Pardus Geliştiricisi Olunur ?" ile bu özgür yazılım hareketinin aktif bir parçası olma metodlarından bahsettiler. Bununla birlikte yazılımları test etme ve Pardus'ta test süreçlerinin ele alındığı sunum ile bir diğer "Nasıl katkı veririm ?" sorusunun cevabı verilmeye çalışıldı.

"Özgürlük İçin" ekibi ise Pardus'ta topluluk süreçlerinin ele alındığı sunumu ile özgür yazılım camiasında topluluk olmanın önemini anlattılar.

Meltem ve Mete ile beraber biz de "64-bit Pardus’un Öyküsü" başlıklı bir sunum gerçekleştirdik. Akademik Bilişim ve Bilmök etkinliklerine nazaran daha az teknik olmasını planladığımız bu sunumda, daha çok bu özgür yazılım projesinin nasıl ortaya çıktığı ve üniversiteler ile Pardus'un ortak bir çalışma ve işbirliği içerisinde nasıl yer alabileceği hakkında fikir vermeye çalıştık. Projenin ortaya çıkışı, karşılıklı görüşmeler ve çalışmaların ilerleyişinden bahsettiğimiz bu etkinlik ile benzeri projeleri teşvik edebilmeyi umuyor ve yakın gelecekte daha fazla işbirliği örnekleri görmeyi ümit ediyoruz.

Bu etkinlik için sınav vb. sorumlulukları içerisinde koşturarak, uykusuz kalıp özveri ile çalışan Bilkent ekibine teşekkürler.

Bir sonraki özgür yazılım etkinliğinde görüşmek üzere ...

10
Oca

Kurulabilir CD'sine doğru yol aldığımız Pardus64 üzerinde birkaç performans testleri yapmak istedik. Daha kök dosya sistemini (RootFS) çıkarmadan yaptığımız [1] adresindeki testlerin üzerinden oldukça zaman geçti ve o günden bu yana sisteme birçok bileşen eklenerek depodaki [2] paket sayımız 4 haneli rakamları buldu. Bu yüzden yeni bir test yapmak iyi bir fikir gibi geldi.

Verilerin imza ve şifreleme işlerini gerçekleştiren GnuPG ile ses ve görüntü mevzularında (özellikle format dönüştürme) pek yetenekli olan ffmpeg uygulamalarını test ettim.

Test ortamımdaki bilgisayarın şöyle özellikleri var:

* Intel(R) Core(TM)2 CPU T5500 @ 1.66GHz

* 2.5 GB RAM


Uygulamaların sürüm numaraları da şöyle :

* ffmpeg-0.5.1_20091020-62

* gnupg-2.0.11-26

İlk testi ffmpeg ile 701 MB 'lik .avi dosyasını .mpg formatına dönüştürerek gerçekleştirdim. Çevrilen dosyanın özellikleri:

$ ffmpeg -i input.avi

Seems stream 0 codec frame rate differs from container frame rate: 23.98 (65535/2733) -> 23.98 (24000/1001)

Input #0, avi, from 'input.avi':

Duration: 02:06:36.21, start: 0.000000, bitrate: 773 kb/s

Stream #0.0: Video: mpeg4, yuv420p, 528x288 [PAR 1:1 DAR 11:6], 23.98 tbr, 23.98 tbn, 23.98 tbc

Stream #0.1: Audio: mp3, 48000 Hz, 2 channels, s16, 128 kb/s

At least one output file must be specified


FFMpeg çalışma zamanı (sn):

$ time ffmpeg -i input.avi output.mpg


Bu çıktılar bize ffmpeg uygulamasının 64bit Pardus üzerinde 32bit Pardus'a göre %18 gibi bir oranda daha hızlı çalıştığını gösteriyor.

İkinci testi 687 MB'lik Pardus.iso dosyasını gnupg ile şifreliyerek gerçekleştirdim:

GnuPG Çalışma Zamanı :

$ time gpg --encrypt --recipient 'Metin Akdere' pardus.iso

Bu çıktılar ise bize GnuPG uygulamasının 64bit Pardus üzerinde 32bit Pardus'a göre %24 gibi bir oranda daha hızlı çalıştığını gösteriyor.


Sonuç şu ki; 64bit ile hem daha büyük bellek uzayına hem de gözle görülür bir performans artışına sahip oluyoruz; ama 64 bitte uygulamalar 32 bite göre iki kat hızlı çalışacak gibi bir durum yok :) Performansı etkileyen bir çok parametre var; işlemci mimarisi bunlardan sadece birisi. Çalıştırdığımız komutların veri bağımlılığı var, kontrol bağımlılığı var. Ne çok büyük bellekler, ne de çok güçlü işlemciler tek başına sistemin performansı üzerinde etkili değil; uygulamaların da sistemi en verimli kullanacak şekilde yazılmış olması gerekiyor. Daha önceki test çalışmamızda paralel programlanan uygulamaların gerçek bir performans farkı ortaya koyduğuna şahit olduk.

Pardus64 çalışmalarındaki son durumdan da bahsetmek istiyorum. Elimizde 1700 civarında 64bite taşınmış paket sayısı var. Sadece system.base ve system.devel'den oluşan kök dosya sisteminin ardından, kurulan CD için çalışıyoruz. Ayrıca, 64bite port sürecinde paketlere yapılan tüm değişiklikleri bir betikte toplama gibi bir çalışmamız da var. Bu sayede aynı depo ve farklı derleme çiftlikleri ile farklı mimariler için (şimdilik en azından 32/64 bit) paketler oluşturulabilecek diye planlıyoruz.


[1] http://nyucel.blogspot.com/2009/11/64-bit-pardusun-ilk-performans-test.html
[2] http://x86-64.comu.edu.tr
9
Oca

Bu yazının asıl amacı kısa bir süre önce duyurduğumuz Pardus64'ü [1] sanal makineler üzerinde kullanmak isteyen kullanıcılara, bunu denemeden önce bilinmesi faydalı olabilecek bazı detaylar hakkında bilgi verebilmektir.

Sanallaştırma, kullandığımız işletim sistemi çalışıyor haldeyken aynı anda başka başka işletim sistemlerini de koşturmamızı sağlayan bir teknoloji. Çalışan tüm bu işletim sistemleri (guest) üzerinde koştukları bilgisayarın (host) aynı donanımını paylaşır. Performans ise donanım ile yakından ilgili. Sanallaştırma denilince akla ilk gelen uygulama Virtualbox olmakla beraber Xen, VMVare de diğer sanal makine uygulamaları arasındadır.

Pardus64'ü sanal makine üzerinde deneyebilmek için öncelikle işlemcinizin donanımı sanallaştırabilme özelliğini test etmeniz gerekiyor:

egrep '(vmx|svm)' --color=always /proc/cpuinfo

Eğer, yukarıdaki komut bir çıktı veriyorsa işlemciniz sanallaştırma teknolojisini destekliyor. Sanallaştırmayı destekleyen işlemci modellerinin listelendiği [2] linki ziyatret edebilirsiniz. Bununla beraber Pardus64 için işlemcinizin 64 bit işletim sistemi koşturabilme yeteneğinin de olması gerekiyor. Bunu öğrenmek için aşağıdaki komut ile işlemci bayrakları arasında "lm" değerini arıyoruz:

grep ' lm ' /proc/cpuinfo

'lm' 'Long Mode' ifadesini belirtiyor, bu da işlemcinizin 64 bit olduğunun göstergesi oluyor.

Bu noktadan sonra 64 bit bir dağıtım üzerinde Virtualbox kurduktan sonra isterseniz sanal bir disk [3] oluşturarak isterseniz de tüm diskinizi sanal makineye göstererek [4] (daha önceden ayrılmış bir disk bölümüne Pardus64'ü yerleştirdiğinizi varsayıyorum) Pardus64 bulunan disk bölümünü boot edebilirsiniz. Unutmayınız ki 32 bit host üzerinde sanallaştırma teknolojisi ile sadece 32 bit guest koşturabiliriz; 64 bit hostlar üzerinde ise hem 32 bit hem de 64 bit guestler koşturabilmemiz mümkün.

Son olarak elinizdeki dağıtımın 32 bit ya da 64 bit çekirdek kullandığını "uname -m"komutunun çıktısından anlayabilirsiniz: x86_64 ise bol Pardus64'lü günler dileriz :)

[1] http://members.comu.edu.tr/nyucel/pardus-corporate2-rootfs-0.42.tar.bz2

[2] http://wiki.xensource.com/xenwiki/HVM_Compatible_Processors

[3] http://www.virtualbox.org/manual/UserManual.html#storage

[4] http://www.virtualbox.org/manual/UserManual.html#rawdisk

30
Ara

Ekim ayı itibari ile 64bit'e port çalışmalarını sürdürdüğümüz Pardus üzerinde gerekli KDE (ve daha birçok Pardus) bileşenlerinin de 64bit paketlenmesi ile artık Pardus64 üzerinde masaüstü ortamına kavuştuk. Hatırlatmak gerekirse çalışmalarımızı Corporate2 sürümünü baz alarak gerçekleştirdiğimizden ve de Corporate2 nin KDE3.5 kullanacak olmasından dolayı biz de aynı KDE sürümünü 64bit ortamına taşıdık ("KDE 4x varken, 64bit üzerinde neden KDE 3x ?" gibi bir soru varsa diye). Paketleme sürecinde paketlerde yapılan işlemleri detayları ile şurada yazmaya çalıştık.

Kalan birkaç paket olmasıyla beraber artık bir kurulum CD'si oluşturmak istiyoruz (bkz. Pardusman). Daha önce bahsettiğim gibi, GRUB önyükleyicisi 64bit derlenemiyor; diğer dağıtımlarda 32-bit static derlenerek kullanılıyor. Bu yüzden, biz de aynı yöntemi izleyerek GRUB'ı derledikten sonra elimizdeki paketlerden oluşan, kurulan bir Pardus64 oluşturacağız.

27
Ara

Cuma günü Necdet Hoca, Meltem ve Mete ile beraber Bursa'ya Uludağ Üniversitesi'ne gittik. Uludağ Bilişim Topluluğu, Bilgi Teknolojileri ve Eğitim Derneği ve LKD işbirliğiyle düzenlenen Bursa Linux etkinliğine konuşmacı olarak katıldık. Necdet Hoca, konuşmacı olarak davet edildiği seminerde bizim de KDE masaüstü uygulamaları hakkında küçük bir sunum yapmamız konusunda yeterince ikna ediciydi :) İlk defa konuşmacı olmanın heyecanı ile birlikte camiadan pek değerli kişilerle tanışmak, onlarla sohbet etmek de yeterince güzel vakit geçirmemizi sağladı. Mustafa Akgül Hocanın "Internet, Açık Kaynak Kod Yazılımı", Enver Altın'ın "Linux ve Linux üzerinde Programlama" sunumlarının ardından Necdet Hocanın "Pardus'a Giriş ve Avantajları" sunumu yer aldı. Ardından da bizim KDE masaüstü uygulamalarından bahsettiğimiz sunum gerçekleşti.


Bu ilk seminer deneyimimiz ile dinleyicileri özgür yazılım hakkında bir nebze olsun bilgilendirip, Pardus/Linux kullanımına teşvik edebildiysek ne mutlu bize!

30
Kas

Yaklaşık iki aydır üzerinde çalıştığımız, Pardus'u 64bit işlemcilere port etme sürecinde çalışmalar artık 64bit pisi paketleri yapma seviyesine geldi. Dün değerli paket yöneticimiz PISI ve onun bağımlılıkları, chroot yaptığımız 64bit temel sistem üzerinde derlenerek sisteme başarılı bir şekilde kuruldu. Uzun zamandır 64bit derleme ile iç içe olmamıza rağmen, Pardus'a özel bileşenlerin (PISI, COMAR, MUDUR, piksemel ...) 64bit derlenerek sisteme kurulması bi başka mutlu etti bizi. Pardus 64bit geliştirme süreci paketleme işlemleri ile son sürat devam ediyor. Paket yöneticisi sayesinde de artık "workaround", patch yapma, actionsAPI okuma gibi görevleri de PISI'ye devrediyoruz.

16
Kas

Artık temel sistemi oluşturmak için çalışıyoruz. Buraya gelmeden önce, hazırladığımız geçici sistemi 64bit debian üzerine taşıyarak, orada bu geçici sisteme chroot yapmıştık. Bundan sonra da bu 64bit chroot ortamında, temel bir sistemin ihtiyaç duyacağı uygulamaları (tabi ki Pardus sürümleri ile uyumlu olacak şekilde) 64bit derlediğimiz araçları kullanarak, (kısmen Pardus derleme parametrelerine bağımlı kalarak) 64bit derleyeceğiz. Chroot yaptıktan sonra, geçici sistem üzerinde FSH'ye (File System Hierarchy) bağlı kalarak gerekli dosya yapısını oluşturduk. Daha sonra da bazı uygulamaların ihtiyaç duyduğu sembolik linkleri oluşturduk. Şu anda bu sembolik linklerin bir kısmı /tools dizini altını gösteriyor. Bu sembolik linkler sistem üzerinde paketler tekrar tekrar derlendikçe silinecek, yerini kararlı sistemin kullandığı, olması gerektiği gibi olan linkler alacak (/tools dizini sistemden silinecek).

Şu anda sistemdeki tek kullanıcı olan root'un başarılı bir şekilde login işlemini gerçekleştirebilmesi için /etc/passwd ve /etc/group dosyaları oluşturuldu. Ardından da yeni oluşturulan dosya yapısı üzerinde ekstra kernel dosya sistemleri (tmpfs, devpts) bağlandı. Bu aşamadan sonra temel sistemin oluşturulmasına geçmeden önce test takımı araçları yüklendi. Bu sayede sisteme kuracağımız araçların kurulumunu test edebilecek durumda olacağız. Bu amaçla da chroot yaptığımız sistem üzerine sırasıyla TCL, Expect, DejaGNU paketlerini kurduk. Test araçlarını başarılı bir şekilde kurduktan sonra temel sistemi kurma aşamasına gelmiştik. Burada ilk önce Perl paketinin geçici bir kurulumunu gerçekleştiriyoruz. Ardından da Linux-headers ve Man Pages'ı da sorunsuz bir şekilde kurup Glibc'ye geçiyoruz. Glibc'nin kurulumu esnasında birkaç hata ile başetmek durumunda kaldık. Glibc ile ilgili ilk hatayı yapılandırma betiğini çalıştırdığımızda aldık:

/tools/lib/gcc/x86_64-unknown-linux-gnu/4.3.3/../../../../x86_64-unknown-linux-gnu/bin/ld:

/source/glibc-build/elf/librtld.os: relocation R_X86_64_PC32 against undefined hidden symbol`_begin' can not be used when making a shared object

Bu hatayı, Glibc'nin build dizini içerisindeki libc/elf/Makefile dosyasının şu satırlarını değiştirerek aştık :

— libc/elf/Makefile 2008/10/31 20:35:11 1.330

+++ libc/elf/Makefile 2009/01/31 00:20:55 1.331

- -e ’s/\. = 0 + SIZEOF_HEADERS;/& _begin = . - SIZEOF_HEADERS;/’ \

+ -e ’s/\. = .* + SIZEOF_HEADERS;/& _begin = . - SIZEOF_HEADERS;/’ \

Bunun ardında make hatasız çalıştı; ancak make install dediğimiz zaman şu hata ile karşılaşıyoruz :

[some lines stripped]

Offending line of ldd output: libgcc_s.so.1 => /tools/lib/libgcc_s.so.1

[some lines stripped]

Bu hatanın çözümü için sembolik linkleri tekrar oluştursak da, Glibc libgcc_s düzgün bir şekilde kurulamadığından şikayet ederek hata veriyordu. Bu hata libgcc_s.so.1 için birincil kütüphane olarak link oluşturulabilmesi için sadece /lib ya da /usr/lib altını geçerli kabul ettiğinden (şu anda /tools altına link verilmiş durumda) ve de binutils ve gcc kurulumlarında bu linkleme işlemlerinden kurtulacağımız için ilerlemeye devam ettik.

Glibc'nin kurulumu ardından GCC spec dosyalarını, yeni dinamik bağlayıcıyı gösterecek şekilde ayarlıyoruz. Bunun ardından da GMP, MPFR ve ZLib kurulumunu başarılı bir şekilde gerçekleştiriyoruz. Sıra Binutils kurulumuna geldiğinde daha ilk satırda PTY'lerin (pseudo terminals) doğru bir şekilde çalışıp çalışmadığı kontrolü expect -c "spawn ls" komutuyla yapılıyordu; ancak şu hata ile karşılaştık :

The system has no more ptys.Ask your system administrator to create more.

Daha sonra bu hatayı düzeltmek için araştırma yaptığımızda şuraya ulaşıyoruz :

http://www.linuxfromscratch.org//lfs/faq.html#no-ptys

Buradan yola çıkarak, testler için gerekli olan, daha fazla sayıda terminal elde etmek için üzerinde chroot yaptığımız debian çekirdeğin yeniden yapılandırılması gerekiyordu. Bu yüzden üzerinde çalıştığımız, host sistem görevini üstlenen debian-5 lenny üzerinde çekirdek kaynak kodu indirip, config dosyasında şu değerleri ayarladıktan sonra tekrar yapılandırıp, derliyoruz :

CONFIG_UNIX98_PTYS=y

CONFIG_DEVPTS_FS=y

Bu derleme işleminde oluşan çekirdeği kullanarak boot ettiğimiz debian üzerinde, temel sisteme tekrar chroot yaparak expect -c "spawn ls" komutunu verdiğimizde aynı hatayı almaya devam ediyorduk. Bu durumda derleme işleminin başarısız olduğunu düşünüp, tekrar derleme yapıp aynı komutları çalıştırdığımızda yine hata alınca, bu komutları direkt debian üzerinde çalıştırmayı denedik ve hatasız çalıştı. Çekirdeğin derlenmesi ile ilgili bir problem olmadığını gösteren bu durum, bizi chroot yaptığımızda kernel dosya sistemlerinin bağlanması sırasında bir hata olabileceği ihtimaline yönlendirdi. Sonuçta da kernel (sanal) dosya sistemleri chroot yapmadan önce olması gerektiği gibi bağlanmıyordu.

mount -f -vt devpts -o gid=4,mode=620 devpts ${CLFS}/dev/pts komutunun "-f" parametresi ile "fake" mount yapılıyordu, Bu da /dev/pts nin chroot ortamı üzerinde gerçekten mount olmamasına sebep olup, chroot içersinde de çalıştırdığımız komutun no more ptys hatası ile sonuçlanıyordu. Artık çekirdeği tekrar derlemeye gerek olmadan kernel dosya sistemlerini (/dev/pts ile tmpfs) bağladıktan sonra geçici sisteme chroot yapıp, Binutils kurulumuna devam ettik. Ardından da [1] de listelenen geri kalan paketleri sırasıyla chroot yaptığımız temel sistem üzerinde kurduk.

Temel sistemin kurulumu sona erdikten sonra artık genel Linux kurulumları ile ilgili kısmın da sonuna gelmiştik. Bundan sonra artık daha Pardus ağırlıklı bir yol izleyeceğiz. Öncelikle COMAR ve PISI'nin bu 64bit temel sistem üzerinde ayağa kaldırılması için çalışacağız. Bunun için de PISI ve COMAR'ın bağımlılıklarını çıkarıp, bunları chroot yaptığımız temel sistem üzerinde 64bit derlemek için çalışmalara devam ediyoruz. Bu amaçla önce bir bağımlılık ağacı oluşturduk. Hemen ardından bu veriler doğrultusunda toolchain olarak adlandırdığımız kernel-headers, glibc, binutils ve gcc'yi (ilave olarak make'i) chroot yaptığımız temel sistem üzerinde, pspec.xml ile belirtilmiş yamaları uygulayıp, actions.py'de yazan direktiflerle derleyerek (tabi 64bit için gerekli parametreleri uygulayarak) sisteme tekrar kurduk. Burada da amacımız bu temel araçların Pardus üzerinde çalıştığı şekilde oluşturulması ve bağımlılıkların minimuma indirilmesiydi. Bu işlemleri tüm araçların yeni derlenmiş halleri ile birbirini derleyip, tüm bağımlılıklardan kurtuluncaya kadar devam edeceğiz.

[1]http://tr.pardus-wiki.org/X86_64-64_Mimarisine_Port_Edilmesi#K.C3.B6k_Dosya_Sisteminin_Haz.C4.B1rlanmas.C4.B1

9
Kas
Bu akşam Serhat abimizi memleketi Antalya'ya yolcu ettik. Artık o da aralık ayında vatani görevini yapmak üzere birliğine teslim olacak. Gideceğini her ne kadar bilsek de, daha uzun süre gitmeyecek, aramızda kalacak diye hissediyorduk. Bugün, "Artık üç kişi kaldık." diyince, gerçekten de ekipten birinin ayrılacağı gerçeği daha bi su yüzüne çıktı. Bir aydan biraz uzun bir süredir kendisiyle eğlenceli, bir o kadar da verimli bir çalışma ortamında bulunduk. Geldiğimiz noktada onun da büyük emeğinin geçtiğini belirterek, kendisine herşey için teşekkür ediyoruz.

Yolun açık olsun diyor; askerlik hayatında başarılar diliyoruz.
8
Kas
Yaklaşık 1 aydır üzerinde çalıştığımız projenin, hedeflediğimiz doğrultuda ilk sonucuna dün akşam ulaştık. Şu anda, 64bit Pardus için hazırladığımız geçici sisteme, 64bit Debian (Debian 5 - Lenny) üzerinde chroot gerçekleştirebiliyoruz.

Derleme araçlarını ve geçici sistemi oluştururken izleyeceğimiz yol ve yöntemler birkaç kez değişmek zorunda kaldı aslında. Çalışmalara başlamadan önce nasıl ilerleyeceğimiz konusunda, geçici bir sistem oluşturup, ardından da bu ortama chroot yaparak çalışmalara devam edeceğimizi düşünüyorduk. Çünkü; üzerinde 64bit paket derlenebilecek, chroot edilebilir geçici bir sistem oluşturmak paket derleyecek arkadaşlar için daha rahat bir geliştirme ortamı sunacaktı. Çalışmalar ilerledikçe bunun bizim planladığımız geliştirme ortamı açısından mümkün olamayacağını öğrendik. Çalışmaları üzerinde yürüttüğümüz sistem ile oluşturacağımız hedef sistem farklı mimari olacağından, chroot yapmak mümkün olmayacaktı. Oluşturulacak sistemin boot edilebilir şekilde geliştirilmesi gerekiyordu. Ardından da bu yönde ilerlemeye devam ettik. Bu arada, çalışmalara Pardus 2008'in portu için başlamışken, daha sonra kurumsal sürümün Pardus 2009 olmasından dolayı biz de yönümüzü o tarafa çevirdik. Aslında değişen pek de fazla bir şey olmadı; çünkü henüz geçici sistem aşamasındaydık. Bu yüzden de daha önceden yaptığımız işlemleri Pardus 2009 için tekrarlamış olduk bir kez daha.

Boot etme doğrultusunda çalışmalarımızı sürdürürken, neredeyse bir haftadan uzun bir süredir geçici sistemi boot etmeye çalışıyorduk. Oluşturduğumuz geçici sistem üzerindeki tüm araçlar çapraz derlenmiş 64bit derleyiciler ile oluşturulmuş ve çalıştırabilir dosyalar da statik olarak bağlanmıştı. Ancak; boot etme süreci başarısızlıkla sonuçlanıyordu. Boot için oluşturduğumuz initramfs üzerindeki init biraz oynayıp, debug bilgileri elde edince coolplug isimli, donanımı inceleyerek gerekli çekirdek modüllerini yükleyerek nodları oluşturan Pardus aracından kaynaklı bi hata olduğunu yakalayıp onu düzeltmeye çalıştık. Coolplug olması gerektiği şekilde 64bit ve statik bağlanarak derlenememişti. Bir süre bununla uğraşmak durumunda kaldık; çünkü bir çok bağımlılığı vardı. Coolplug'ı derlemek için klcc'yi (ve onun da bağımlılıklarını hallettikten sonra) çapraz derleme yapabilecek şekilde derledikten sonra, onu kullanarak coolplug'ı derlememiz gerekiyordu. Ancak, tüm bağımlılıkları 64bit ortam için sağlayasak bile, coolplug'ı derlemek için elimizdeki geçici sistemi kullanamazdık; çünkü henüz boot edemiyorduk (zaten sorun da buydu (:). İşleri daha da seri hale getirebilmek için 64bit Debian üzerinde klcc kullanarak, coolplug'ı statik bağlayıp derledik ve bu çalıştırabilir coolplug'ı geçici sistemde yerine koyduk. Artık boot edebilmeliyiz derken, coolplug hatası bizi yine üzdü. Uzun uğraşlara rağmen bu hatayı aşamadığımızdan dolayı, chroot yapabilmeyi denedik; hatta "bugün, chroot yapmadan gitmeyelim !" dedik (:

Öncelikle util-linux-ng'yi (dosya sistemleri, konsollar, disk bölümleri gibi yerleri yönetmek için çeşitli araçları içeren koleksiyon) chroot için özelleştirerek, tekrar derleyip ardından da elimizdeki geçici sistemi 64bit Debian üzerine taşıdık. /proc ve /sys'yi bağladık. Chroot için ilk denememizde "libgcc_s.so.1" bulunamadı şeklinde bir hata aldık. Bunun sebebi de geçici sistem üzerinde "lib64" isimli bir dizinden yapılan sembolik linkin hata vermesiydi. lib64 içeriğini lib içine kopyalarak chroot yapmayı denediğimizde, artık kendimizi geçici sistem üzerinde "root" kullanıcısı olarak görebiliyorduk (:

Rootfs oluşturma çalışmalarına artık bu chroot ortamı üzerinden devam edeceğiz.
7
Kas
Bugün bölümde hiç bir sınıfın dersi olmamasına rağmen bir grup bilgisayar mühendisliği öğrencisi olarak okuldaydık. Geçen haftalarda daha küçük bir toplulukla gerçekleştirdiğimiz Pardus 64bit geliştirme süreci toplantısının bir diğerini bugün yaptık. Her sınıftan arkadaşın yer aldığı, 50'ye yakın gönüllü ile bir araya gelerek, hem onları çalışmaların gidişatı konusunda bilgilendirmek hem de belirlediğimiz yol haritası boyunca, beraber neyi nasıl yapacağımız üzerine faydalı bir toplantı gerçekleştirdik. Üzerinde çalışacağımız projenin ne olduğunu herkes muhakkak biliyordu ama; artık biraz da teknik detayları (biz de zamanla öğrendikçe (: ) vermenin zamanı gelmişti: Pardus'un 64 bit portunu yapmaya çalışıyoruz. Bunun için kuluçka bir dağıtım üzerinden ilerleyerek (ki o da Pardus), çapraz derleme ile geçici ve temel bir sistem oluşturup, ardından da üzerinde 32 bit paketleri 64 bit olarak derleyebileceğimiz bir rootfs oluşturma çabasındayız. Tabi, bundan sonra işlerin daha da ivme kazanması gerekiyor. Çünkü; sadece kararlı depoda 2000++ paket olduğunu düşünürsek, bunların şu anki ekip eşliğinde tekrar paketlenmesi işinin oooldukça uzun zaman alacağı aşikar (: Üstelik, belirlediğimiz bir takvim var ve buna uyarak zamanında sürüm çıkarmak konusunda gayet kararlıyız. Bu amaçla bugün beraber olduğumuz arkadaşlara Meltem ve Mete ile beraber (maalesef Serhat arkadaşımız bize katılamadı sağlık problemlerinden dolayı, kendisine buradan da çok geçmiş olsun demek istiyoruz ) PISI paketi yapımı, yama nedir, nasıl yapılır, SVN kullanımı, diğer dağıtımların çalışmalarının incelenmesi ve bu süreç boyunca proje ile ilgili olarak nasıl daha etkili araştırma yapabilecekleri üzerine, elimizden geldiğince, bilgi vermeye çalıştık. (Bu sayede ilk seminerimizi de vermiş olduk.)

Şimdi, temel sistemi çıkarmaya 16 gün kala, arkadaşların anlattıklarımız üzerine bol pratik yapıp, sonrasında rootfs üzerinde paket yapım işlerine hep beraber, hızlı bir başlangıç yapmayı umut ediyoruz. Bu süreç elbette zorlu olacak, çok çalışmamız gerekecek, bir çok konuya yabancıyız ama; biz de zaten bu işi öğrenmek için yapıyoruz. Her sınıftan arkadaşın bu projenin içinde yer alacak olması, herkesin aynı hızda ilerlemesi açısından dezavantaj olarak görünse de, projenin devamlılığını göz önüne aldığımız zaman, bunun bize büyük bir avantaj olarak geri dönecek olmasının düşüncesi daha bi heyecan verici.
21
Eki
Çanakkale 18 Mart Üniversitesi, bilgisayar mühendisliği son sınıf öğrencilerinden biri olarak, Necdet Yücel hocamızın önderliğinde, yaz başlarında duyurulan Pardus'un 64bit portunu hazırlama çalışmalarına birkaç hafta önce başladığımızı duyurmak istiyorum. Şu anda iki grup olarak yürütmeyi planladığımız çalışmaların ilk grubunda Meltem Parmaksız, Serhat İrem Ersel ve de Mete Bilgin ile beraber gerçekten verimli ve bir o kadar da eğlenceli bir ortamda çalışmalara devam ediyoruz. Öncelikle şunu söylemeliyim ki, bu proje ile bu kadar kısa bir sürede bile bir çok şey öğrendiğimize ve de daha öğreneceğimiz bir çok şey olduğuna inanıyoruz. Yaptığımız çalışmaları belgelendirip, neler ile uğraştığımızı iyi bir şekilde açıklayabilmek amacıyla çalışmalar üzerinde her adımı tartışıp, detaylar üzerinde uzun uzun konuşmamak kaçınılmaz oluyor doğal olarak. Kimi zaman derlenecek araçların beklenmedik bağımlılıkları çıkıyor; o bağımlılıkların da başka başka bağımlılıkları. Ve üstüne üstlük uygun sürüm arayışı da işin içine girince, bazen çalışma tahtamızda nokta koyacak kadar bile yer kalmadığını fark ediyoruz. Belki de okuldan daha fazla vakit geçirdiğimiz, ki gerçekten öyle, çalışma masamızda neler ile uğraştığımızı fırsat buldukça da paylaşmaya çalışacağız.

Geliştirme sürecinde nasıl bir yol izlememiz gerektiğini CLFS (Cross-Compiled Linux From Scratch ) belgesinden takip ediyoruz. "O da ne?" diyen arkadaşlara, bu belgenin içeriği ile ilgili güzel ve detaylı bir yazı dizisi hazırlayan Serhat arkadaşımızın günlüğüne bakmalarını tavsiye ediyorum.

Geçen süre zarfında çalışmalarımızın temelini oluşturan ve en çok yaptığımız işlem ise çapraz derleme (cross-compile). Hakkında detaylı bilgiye buradan ulaşabileceğiniz çapraz derleme, özet olarak üzerinde çalıştığımız mimariden (host), farklı bir mimari (target) için derleme yapma işi. Çapraz derlemede uygulamalar "host" üzerinde derleniyor; ancak "target" üzerinde çalıştırılabiliyor. Örneğin, eğer isterseniz x86 mimari üzerinde çapraz derleme ile PowerPC için sistem geliştirebilirsiniz; zaten dağıtımların günümüzde birçok mimariyi destekleyen paketleri yapma işi de bu şekilde gerçekleştiriliyor. Gömülü sistemler için geliştirme yapılırken de çapraz derlemeden yararlanıldığını görüyoruz. Pardus'u 64bit'e port etme sürecinde Pardus-2008'i kuluçka sistem olarak kullanacağız. Bu yüzden oluşturacağımız hedef sistem üzerindeki tüm araçlar da Pardus-2008'de hangi kararlı sürümü ile kullanılıyorsa o sürümü ile oluşturulacak. Ancak, çapraz derleme araçlarında böyle bir zorunluluk bulunmuyor; sonuçta onlar sadece hedef sistemi oluşturmak için geçici sistem üzerinde kullanılacak ve daha sonra silinecekler. Ancak; biz yine de bu çalışmalarımızda sürüm uyumunun her aşamada korunmasında bir sakınca görmedik.

Gelelim 3. haftasını geride bıraktığımız çalışmalarda neler yaptığımıza ve Pardus-64bit geliştirme sürecinde nerede olduğumuza. Pardus-2008'i kuluçka sistem olarak alıp, onun üzerinde önce çapraz derleme araçlarını oluşturup (gcc,glibc,binutils, ...), ardından da bu çapraz derleme araçlarını kullanarak, temel ve geçici bir sistem oluşturmayı başarabildik. Bu geçici sistem (sadece gcc, make, bash gibi komutların olduğunu düşünürsek) şu anda çok minimal bir ortam olmakla beraber, hedeflediğimiz şekilde üzerinde Pardus-64bit sistemi geliştirebileceğimiz, 32bit paketleri 64bit olarak hazırlayabileceğimiz bir ortam olacak. Ama; bunun için henüz erken tabi ki. Şimdi bu minimal sistemi nasıl kullanmamız gerektiği üzerinde çalışıyoruz: Bu minimal sisteme "chroot" yapmak ya da makineyi bu sistem ile "boot" etmek? Bu konu üzerinde uzun süre kafa yorduk."chroot" yapılan bir ortam sağlamak paket yapma işinde çalışma ortamını çok kolaylaştıran bir seçenek olmakla beraber, daha sonra bunun mümkün olamayacağını öğreniyoruz. Çünkü; farklı bir mimari için sistem geliştiriyorsak, yani "host" sistem ile "target" sistem birbirinden farklı mimariler ise "chroot" yapılamıyor. "chroot" seçeneğinin, üzerinde çalışılan mimari ile geliştirilecek mimari benzer olduğunda ve de aynı sürüm çekirdek kullandığında mümkün olduğunu öğreniyoruz. Biraz daha ayrıntıya girmek gerekirse, "chroot" seçeneği için GCC 3.0 (veya daha yeni bir sürüm) ile derlenmiş Linux 2.6.x çekirdeği gerekiyor. Bu sağlanmadığı zaman Binutils'de TLS (thread-local storage) desteği inşa edilemiyor ve NPTL (Native POSIX Threading Library) test takımı segmentasyon hatası ile sonuçlanıyor. Bu yüzden, bundan sonra artık bizim izlememiz gereken yol ise makineyi elimizdeki minimal sistem ile "boot" etmek ve geliştirme sürecine bu şekilde devam etmek. Şimdilerde elimizdeki sistemi "boot" edilebilir hale getirmek için uğraşıyoruz. Daha sonraki aşamalarda da bu minimal sistemin, üzerinde paket derlenebilir hale getirilmesi için çalışmalara devam edeceğiz.

Son olarak, kısa bir süre içerisinde, elimizdeki çalışan minimal sistemi "boot" edebilme hedefimizi gerçekleştirerek, devamında da daha detaylı bir yol haritası sunmayı planladığımızı belirtmek istiyorum.