Pardus'un X86 64-64 Mimarisine Port Edilmesi
PardusWiki sitesinden
Giriş
Bu belge Pardus'un i386 mimarisinden diğer bir işlemci mimarisinde çalışacak sürümünün hazırlanmasında izlenen yolu anlatır. Takip edebilmek için temel Linux ve programlama bilgisi gerekir.
Yöntem
Bu işlem için iki farklı yol izlenebilir:
- 64-bit kararlı sürümü olan bir Linux dağıtımı kuluçka dağıtım olarak kullanılarak 64-bit Pardus paketlerinin hazırlanacağı bir kök dosya sistemi oluşturularak burada mevcut pisi paketlerinin 64-bit sürümleri hazırlanabilir. Bu yöntemin avantajı kök dosya sistemini hazırlarken kullanılacak araçların mevcut durumda 64-bit ikilik dosyalar üretebiliyor olmasıdır. Böyle olacağından çapraz derleme yapmaya gerek kalmayacaktır. Olumsuz olabilecek durum ise kullanılacak kuluçka dağıtım ile 64-bit için temel alınan Pardus Kurumsal 2'de bulunan programların sürümleri arasında çıkabilecek uyumsuzluklar olacaktır.
- Kuluçka dağıtım olarak Pardus Kurumsal 2 kullanılarak onun üzerinde önce hem 32-bit hem de 64-bit kod derleyebilen programlar ve onların bağımlılıkları, ardından da bu araçları kullanarak 64-bit paketlerin hazırlanacağı kök dosya sistemi'nin hazırlanacağı geçici kök dosya sistemi oluşturulabilir.
Biz kuluçka dağıtım ile Pardus arasında karşılaşabileceğimiz sorunlarla uğraşmamak için ikinci yolu tercih ettik. Kök dosya sistemi bu yolla hazırlandığında onun üzerinde çalışabilmek için ya onu kullanarak sistemi açmak ya da o alana chroot yapmak gereklidir.
Burada karşımıza çıkan üçlü yol ayrımı ise şöyle oldu:
- Pek mümkün görünmese de 32-bit çalışan bir işletim sistemi üzerinde 64-bit çalışacak bir dosya sistemine chroot yapmak.
- Kök dosya sistemini boot edebilir hale getirmek. Bu seçenek sadece 64-bit destekli bir çekirdek hazırlamakla sınırlı değil. Pardus'un kendi geliştirdiği teknolojilerin boot süreci ile ilgili olanlarının da bu aşamada 64-bit mimari için derlenmiş olmasını gerektiriyor.
- 32-bit çalışan sistem üzerinde çapraz derleme araçları kullanılarak oluşturulan bu geçici kök dosya sistemini 64-bit çalışan bir başka Linux dağıtımına taşıyarak orada chroot yapmak.
Burada da çalışmayı en kısa yoldan hedefe götürebilecek yol üçüncüsü olarak göründüğünden onu tercih ettik.
Çapraz Derleme Araçlarının Hazırlanması
Çapraz derleme; derleyicinin çalıştığı platformdan başka bir platform için kod derleyebilmesidir. Mikro denetleyiciler gibi işletim sistemini desteklemeyen platformlarda veya kod derlemenin daha az verimli olduğu platformlar için ikilik dosya üretiminde kullanılır.
Pardus'un 32-bit platformunda çalışan derleyicileri öntanımlı olarak sadece bu platform için ikilik dosyalar üretebilir. Bu programların 64-bit platformunda çalışacak kodlar derleyebilmeleri için aşağıdaki paketlerin bu parametrelerle yeniden kurulmaları gerekmektedir.
- Kernel-headers, File, Ncurses, GMP, Mpfr, Binutils, Glibc, Gcc
Bu ve bundan sonraki programların son sürümleri değil Pardus corporate2'nin kullandığı sürümleri kullanılmıştır.
Geçici Kök Dosya Sisteminin Hazırlanması
Çapraz derleme araçları kullanılarak aşağıdaki programların 64-bit olarak derlendiği geçici kök dosya sistemi hazırlanmıştır:
- Gmp, Mpfr, Zlib, Binutils, Gcc, Ncurses, Bash, Bison, Bzip2, Coreutils, Diffutils, Findutils, File, Flex, Gawk, Gettext, Grep, Gzip, M4, Make, Patch, Sed, Tar, Texinfo, Vim
Kök Dosya Sisteminin Hazırlanması
Geçici kök dosya sistemi hazırlandıktan sonra yapılacak işlem bu dosya sistemindeki araçları kullanarak bir kök dosya sistemi oluşturulmasıdır. Yukarıda da belirtildiği gibi bu işlem için seçtiğimiz yöntem Pardus Kurumsal 2 üzerinde hazırlanan bu geçici sistemi 64-bit kararlı sürümü olan bir Linux dağıtımına taşıyıp o dağıtım üzerinde bu alana chroot yapmak yönünde oldu. Bu dağıtımı [debian] olarak belirledik. Bu noktada seçilen dağıtım için tek önemli nokta çekirdeğinde aşağıdaki desteklerin belirtildiği gibi olmasıdır:
- CONFIG_INOTIFY_USER = y
- CONFIG_SIGNALFD = y
- CONFIG_SYSFS_DEPRECATED = n
- CONFIG_SYSFS_DEPRECATEDv2 = n
- CONFIG_UNIX98_PTYS = y
- CONFIG_DEVPTS_FS = y
Hazırlanan geçici sistemi debian üzerine taşıdıktan ve chroot işlemini gerçekleştirdikten sonra sırasıyla aşağıdaki test araçları kuruldu:
- Tcl, Expect, DejaGNU
Bu sistemin 64-bit'te sorunsuz çalışması için aşağıdaki programların kurulumları yapıldı:
- Perl, Linux-headers, Man pages, Glibc, GMP, MPFR, Zlib, Binutils, Gcc, Sed, Ncurses, Util-linux-ng, E2fsprogs, Coreutils, M4, Bison, Procps, Libtool, Flex, IPRoute2, Readline, Autoconf, Automake, Bash, Bzip2, Diffutils, File, Findutils, Gawk, Gettext, Grep, Groff, Gzip, IPutils, Kbd, Less, Make, Man, Module-Init-Tools, Patch, Psmisc, Shadow, Rsyslog, Sysvinit, Tar, Texinfo, Udev, Vim, XZ-Utils
Bu aşamaya gelindiğinde henüz Pardus'a özel bir şey (programların Pardus'ta kullanılan sürümlerinin seçilmesi sayılmazsa) yapmamış olmakla birlikte 64-bit çalışan bir sistem hazırlanmış bulunmaktadır. Buradan sonra daha önce kurulmuş olanlar dahil, programların Pisi paketlerinde kullanılan yamaları ve parametreleri kullanılarak tekrar derlenmesi gereklidir. Bu aşama birbirine bağlı paketlerin istenilen halleri elde edilene dek birkaç kez tekrar edilmelidir.
- Kernel-headers, Glibc, GMP, Mpfr, Zlib, Binutils, Gcc, Make
Kök dosya sistemi hazırlığı tamamlandığında Pardus'un paket yöneticisi PiSi'nin ve onun bağımlılıklarının kurulumuna geçilebilir.
Paket Yöneticisinin Kurulması
Paket yöneticisinin kurulması için öncelikle paket yöneticisinin bağımlılık ağacı çıkarılması gereklidir. Ardından diğer dağıtımlar incelenerek bu paketlerin 64bit'e geçirilmesi için, 64bit'e özel bir yama ya da derleme parametresi olup olmadığı belirlenmeli ve bu paketlere Pardus'un kullandığı yamalar ile beraber, eğer varsa, 64bit'e özel yamalar uygulanmalıdır. Bundan sonra da bu paketler 64bit derleme parametreleri ile (Pardus derleme parametrelerini de göz önüne alarak) sisteme kurulmalıdır.
Paketlerin kurulumuna kök dosya sistemindeki programlarından başka bağımlılığı olmayan paketlerden başlanarak, devamında bu paketlere bağımlı olan üst bileşenlere (COMAR, PISI, MUDUR,vb.) ulaşmak hedeflenmelidir. Bu süreç [bağımlılık ağacı] takip edilerek sürdürülmüştür. Pardus ekibi tarafından geliştirilen teknolojilerin 64-bit'te ortaya çıkan sorunları programların geliştiricileriyle haberleşilerek giderilmiştir.
Şekilde ortada bulunan PiSi'nin sisteme kurulmasıyla birlikte bir aşama daha geçilmiş olur. Bundan sonraki hedef yine aynı bağımlılık ağacını takip ederek uçlardan merkeze doğru gelerek PiSi'nin ve onun bağımlılıklarının paketlerinin hazırlanmasıdır.
Paket Yöneticisinin Paketlenmesi
Yeni sisteme PiSi'nin problemsiz kurulması için gereken bütün programlar zaten PiSi paketlerindeki yama ve parametrelerle kurulduğundan sadece Pardus'un paketleme süreci ile ilgili geliştirdiği teknolojilerin bu yeni mimaride gerektiği gibi çalışıp çalışmadığının kontrolünün yapılması yeterli olmuştur. Gerektiği gibi çalışmayan programların geliştiricileriyle irtibata geçilerek ihtiyaç duyulan düzenlemelerin yapılması sağlandıktan sonra PiSi ve tüm bağımlılıkları paketlenmiştir.
Bu aşamadan sonra çözülmesi gereken iki bağımlılık ağacı kalmış bulunmaktadır. Bunlar system.base ve system.devel bileşenleridir. Bir paketin bu bileşenlerde yeralan başka bir pakete kurulum ve/veya çalışma bağımlılığı mevcut olması durumunda bu bağımlılık pspec.xml dosyasına yazılmadığından bu bileşenlerdeki paketlerin öncelikle hazırlanarak sisteme kurulması gereklidir. Bu iki bileşenin de tamamen paketlenmesinin ardından geliştiricilerin en çok kullandıkları iki araç olan vi ve subversion da paketlendiğinde artık 64bit PiSi paketi hazırlayacak geliştiricilerin en temel ihtiyaçları karşılanmış olacaktır. Geliştiricilere sunulacak sürümün hazırlanması bir sonraki bölümde anlatılacaktır.
Geliştiricilere sunulacak sürümün hazırlanması
System.base, system.devel ve boot bileşenlerinin tüm içerikleri paketlendiğinde işletim sisteminin açılış (boot) için eksiği kalmamış olur. Hazırlanan bu paketler PiSi paket yöneticisinin -D parametresi kullanılarak uygun bir dizine kurulur. Bu işlem tüm paketleri bir dizine toplayıp
pisi it *.pisi -D /rootfs
komutunu çalıştırarak yapılabilir. Bu dizini arşivleyip geliştiricilere vermeden önce içine eklenmesi gereken dosyalar bulunuyor:
- /etc/passwd
- /etc/shadow
- /etc/group
- /etc/fstab
- /etc/mtab
- /etc/resovl.conf
- /root
Bu dosyalar normalde kurulum sırasında oluşturulan ama geliştiricilerin sistemlerini boot edebilmesi ve oturum açması için gerekli dosyalardır. Bunlardan fstab ve mtab dosyalarını her geliştirici kendi sistemine uygun hale getirmelidir. Diğerleri uygun şekilde oluşturulmalı ve root kullanıcısına atanan parola geliştiricilere bildirilmelidir. /etc/pardus-release dosyasının da hazırlanan portu belirtecek şekilde düzenlenmesi düşünülebilir.
Gerekli düzenlemelerin yapılmasının ardından üzerinde çalışılan dizin arşivlenip şıkıştırılarak geliştiricilere dağıtılmaya hazır hale gelir.
Paketlerin X86_64 Mimarisine Taşınmasında Yapılması Gerekenler
Corporate 2 Sürümünün PiSi paketlerinin derlenmesinde kullanılan bayraklar sistemdeki /etc/pisi/pisi.conf dosyasından merkezi bir şekilde alındığı için depodaki programların büyük çoğunluğunun yeniden paketlenmesinde bu dosyada yapılanlar haricinde bir değişikliğe ihtiyaç duyulmamıştır. Bu paketlerin sadece uygun kök dosya sisteminde yeniden oluşturulmaları yeterli olmuştur. Aşağıda x86_64 mimarisine taşınması sırasında değişiklik gerektiren durumlar ve bu durumlara hangi paketlerde karşılaşıldığı listelenmiştir:
- farklı parametrelerle derlenen paketler
- ilave yamalar gerektiren paketler
- x86_64 için farklı kaynak dosyasına ihtiyaç duyan paketler
- dosyalarını farklı dizinlerde bulunduran paketler
- x86_64 mimarisinde karşılığı bulunmayan paketler
- x86_64 mimarisinde derlenemeyen fakat x86'da statik derlenerek kullanılabilen paketler
- x86_64 mimarisinde paketi oluşturulabilen fakat kurulamayan paketler
Bu durumların ve karşılık gelen çözümlerin tespit edilmesini ardından paket yöneticisinde yapılan iyileştirilmelerle aynı inşa dosyasından farklı mimarilerde farklı paketler oluşturulması sağlanmıştır. --- Bu bölüm detaylandırılmalı...
Derleme Çiftliğinin Hazırlanması
x86-64 için tüm paketlerde yapılması gerekenler yapıldıktan sonra sıra artık ikilik paketlerden bir depo oluşturmaya gelmiştir. Bu işlemi otomatikleştirmek için derleme çiftliği kullanılması deponun sürdürülebilirliği açısından çok önemli olacaktır.
Kurulan CD'nin Hazırlanması
İkilik paketlerden oluşan deponun hazırlanmasının ardından son aşama olan kurulan cd'nin hazırlanmasına gelinmiş olur. Bu işlem için Pardus teknolojilerinden biri olan pardusman programı kullanılmıştır.

