8 Kasım 2009

Pardus 64bit Geçici Sisteme Chroot

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.

0 yorum:

Yorum Gönder