linux, bilgisayarinitrd vs initramfs, yaird vs mkinitramfs: GNU/Linux geç açılma problemlerinin çıkış noktalarından biri

Oct27

          0 oy


Debian Amerikan malımıdır, insanlığa mı aittir, milli midir yoksa Red Hat’çiler daha mı milliyetçi çocuklardır? Ya da Arch Linux hakkında daha fazla yazarsam, Pamela Anderson’ı Google’da arayan kitleyi çekebilir miyim? Elbette dünya bu sorulara yanıt filan aramıyor. Senelerdir “forum” ve “liste” denen nuh nebiden kalma, çöp Internet teknolojilerini takip etmiyorum. Lütfen forum ve liste de açmayın, Internet’i çöplüğe çevirmeyin (Pozitif PC forumunu en yakın zamanda kapatıyoruz).

Gelgelelim, seneler önce forumları “magazin” anlamında zaman zaman takip etmişimdir. Debian kitlesi, UNIX aleminin “daha bir elit” adamları olarak bilinir. Artık onlar da ideolojik tartışmalardan sıkılmış görünüyorlar. Son yıllarda konular daha teknik ve “para” içerikli. Bu arada, özgür yazılım geliştiriciler rahatsız, top tüfekleri yok ama yakında Internet ve bilgisayar dünyasının (üretken olmayan) dinamizmi durma noktasına gelebilir. Bunun hakkında yazacağım, biri bana hatırlatsın!

Derdimiz “Linux geç açılıo abi”

Benim böyle bir derdim olmadı; zira uptime ortalamam 7-9 gün arası. (Bayağı sağlam bir sistem diyebilirsiniz, bu kadar uzun süre açık kalan yerli hosting firması sunucusu bile azdır herhalde). Onun için, ekstradan 10-20 saniye beklerken kanser olmuyorum. Gerçi ben MTV çocuğu da değilim.

Debian forumlarında zamanında enteresan bir tartışma vardı; enteresan diyorum, çünkü zeki görünen birçok adam, Linux kernelinin monolitik olup olmadığını uzun süre tartışmıştı. “Hem monolitik, hem modüler” diyerek kısaca noktayı koyayım. Eğer başarabilip tüm sürücüleri kernele entegre ederseniz, muhtemelen 5-6 MB boyutlarında (sıkıştırılmış) monolitik bir kerneliniz olur. Beceremezseniz, modül olarak yüklemek zorundasınız; o zamanda kerneliniz modüler olur.

Eğer Linux kerneli monolitik olsaydı, initrd ve initramfs denen şeyle uğraşmak zorunda kalmayacaktık. Hızlı açılan dağıtımla yavaş açılan dağıtım arasındaki en ciddi farklardan biri, bu initrd ya da initramfs’in ne kadar iyi oluşturulduğuyla ilgili. Bu arada, artık hemen hemen tüm dağıtımlar initramfs kullanıyor ve herhalde birsüre sonra, initrd’yi kimse hatırlamayacak. 2.4 serisiyle devam edenler hariç; zira initramfs 2.6x serisinde desteklenmekte.

initramfs ne işe yarar? Kernel kendini boot ettiği ilk anda, bootloader sıkıştırılmış kerneli RAM’de belli bir alana açar. Bu esnada kernel, sürücüler yüklü olmadığı için (bunların modül olarak derlenmiş olduğunu varsayarsak) diskinize, dolayısıyla dosya sisteminize erişememektedir. UNIX benzeri sistemlere yeni başlayanlar bunun mantığını kolayca anlayamaz; çünkü dokümanlar açık değildir. Mesela, sorulan en güzel ve mantıklı soru şudur: dosya sistemine erişemiyorsa, kernel’i nasıl okuyor? GRUB gibi bir bootloader, BIOS fonksiyonlarına erişerek, kerneli okuyabilir, zira aslında kendi içinde mini bir dosya sistemi sürücüsü bulunmaktadır. Nitekim, GRUB’daki stage’lere bakarsanız, erişebildiği dosya sistemlerine dair ipuçları yakalayabilirsiniz. GRUB, çok sayıda formatı tanısa da, örneğin GFFS gibi “sofistike” disk bölümlerine erişemez. Kernel, ham haliyle bu destekten bile yoksundur. Çok sayıda dosya sistemi olabileceğinden, dağıtım geliştiriciler kerneli büyütmemek adına bu dosya sistemlerini modül olarak derlerler.

Initramfs’in yüklenmesi, mantık olarak bootloader’ın kernel’i yüklemesine benzer. Initramfs, kısaltmadan da anlaşılacağı üzere, bir RAM disk’tir; kernel bunu ilk anda dosya sisteminin bir uzantısı olarak görmez. Initrd, initramfs gibi RAM disk kullanmanın mantığı, özellikle dosya sistemi sürücüleri (ext2,ext3,xfs,jfs,reiserfs,vs) ve disk-IDE-SATA-SCSI gibi sürücülerin bu alan içinden yüklenerek, sistemin açılmasıdır. Bahsettiğim sürücüler yüklendikten sonra, kendi içinde UNIX dizin yapısının bir kısmına sahip olan Initramfs, bağlanan / disk bölümüne mount edilir.

Inıtramfs, oldukça iyi bir sıkıştırma algoritması ile geliyor; diskinizde 6 MB gibi bir yer kaplayan initramfs dosyasını açarsanız (ki bir CPIO arşividir), muhtemelen 25 MB civarında yer kaplayacaktır. Dağıtım geliştiricilerin en büyük derdi, initramfs’i hem küçük tutmak, hem de mevcut birçok sürücüyü eklemek zorunda kalmaları. Örneğin yeni çıkan bir anakartın SATA sürücüleri initramfs içinde bulunmuyorsa -ki kernelde entegre olması çok daha düşük ihtimal- sisteminiz açılmaz.

Sorun bununla da bitmiyor. Düşününki, mevcut SATA kontrolörüm yetmedi ve ek bir SCSI kartı takarak, /home dizinimi bu karta bağlı yeni bir diske aktardım. Üstelik bu kartın sürücüsü de initramfs içinde değil. Bu durumda, sistem açılırken /home dizinimi mount edemeyecektir. (Hatta o diski bile görmeyecektir!). Normalde yapmanız gereken, initramfs’i elle açıp, sürücüyü açılan arşiv altındaki /lib/modules dizininde uygun yere koymanız. (Ki muhtemelen kerneli tekrar derleyeceksiniz; kullandığınız kernelde bu sürücü derlenmiş değilse). Ama zaman içinde bunu otomatik yapabilen araçlar çıktı; çünkü bahsettiğim işlem, bizim gibi eskiler için bile sıkıcı ve zaman alıcıyken, yeni başlayanlar için kabul edilemez derecede zor. Elbette “tam otomatik” bir mekanizma yok; ama örneğin TrekStor sürücüsünü Debian paketi olarak kuruyorsanız, paketi hazırlayanlar tembel değilse, bir “güzellik yapıp”, yeni initramfs’i otomatik oluşturacak düzenlemeleri yapıyorlar.

Debian temelli sistemlerde initramfs’i oluşturan iki araç var: yaird ve mkinitramfs.

Sorun ise, ikisinin de birbirinden beter çalışması.

Aslında, bu geliştiricilerin suçu değil. Dediğim scriptlerin işleri son derece zor; çünkü anlattığım süreç bu kadar basit de değil. Bunun içinde udev filan da var. En azından benim karşılaştığım sorun şu: mkinitramfs, eline ne geçerse, initramfs içine tıkıyor ve koca koca dosyalar oluşturuyor. Yaird, gerekli bileşenleri seçme konusunda çok daha başarılı. Gerçekten de, yaird ile yapılan bir initramfs içinde, gereksiz ıvır zıvıra nadiren rastlıyorsunuz. Gelgelelim, busybox’ı doğru kuramıyor: Komik şekilde, busybox’ı initramfs’e attıktan sonra, gerekli soft ya da hardlinkleri yaratmak yerine, bu programların orjinallerini kopyalıyor!

Sonuç olarak, iki aracında oluşturduğu initramfs, çok büyük olmakta.

İnitramfs, sistemin açılırken en çok yavaşladığı nokta. Zira yavaş sistemde bile, 1.5 MB civarındaki standart bir kernelin yüklenmesi 5 saniye civarında iken, sırf initramfs’in RAM’e açılması bile bu süreyi geçiyor. Sonra sürücüleri yüklemeye başlıyor, burada probing gecikmeleri devreye giriyor (özellikle bazı sürücülerin etkin hale gelmesi, yüklendikten sonra 3-5 saniye ek zaman alabiliyor)

Yani hızlı bir sistem açılışı için, initramfs’i elle düzenlemeniz şart. Boşu boşuna init scriptleri optimize etmeye çalışarak zaman harcamayın; zira asıl sorun orada değil, initramfs’in içinde. Ayrıca, sürücüleri donanımı geç algılayan bir bilgisayarınız varsa, ne yaparsanız yapın sisteminiz geç açılacaktır. Kısacası, Linux ve GNU, aşırı modüler yapısı yüzünden hem birçok avantajı, hem de birçok dezavantajı beraberinde getiriyor.

Popularity: 5% [?]

bilgisayarÜst sürüme geçme hastalığı

Oct26

          0 oy

Embedded bir proje hazırlıyorum; iş filan değil, kendi ihtiyacım. Emektar Via C3′ü kullanmaya karar verdim. Bu bir Via Mini ITX kart; üzerinde 256 MB RAM var. Modeli VE8000; Via C3 işlemcisi ve Samuel modeli (Bir de Ezra var).

Via C3 için standart kernel kullanmak risklidir; zira çoğu çalışmaz. Aslına bakarsanız, bu 686 sınıfı olduğunu iddia eden, ama komut setine baktığınızda 586 komut setini destekleyen tuhaf bir işlemci. Bendeki 800 Mhz olduğu halde, performansı 466 Mhz bir Intel işlemci düzeyinde. Via, düşük enerji tüketimiyle öğünse de, Watt başına performansı son derece kötü. C7′de bile durum böyle. Zaten Intel’de, özellikle ULV serisiyle Via’yı bu şekilde sıkıştırmayı düşünüyor.

Herneyse…Nedense son anda 2.6.x serisi bir kernel kullanmaya karar verdim. Tıknefes sistemlerle çalışıyorsanız, 2.6 kernelin iddia ettikleri gibi performanslı olduğunu söyleyemem. Doğrusunu isterseniz, SMP bir kernel kullanmayacaksanız, aynı anda birden fazla uygulama çalıştırmayacaksanız, Hyperthreading destekleyen bir işlemciniz yoksa, 2.6 kernel hiç de ideal bir seçim değil. Özellikle de, yer kısıtlamanız varsa: daha önce 2.4 serisi ile Via C3 için hazırladığım kernel 500k civarındaydı; şimdi 2.6 ile 970k civarındayım. 2.6′nın bana tek getirisi, initramfs kullanabilmem oldu. Şu sıra, çalışacak sistemi initramfs içinde mi bıraksam, yoksa root’a mı taşısam onu düşünmekteyim. Root’a taşımamak akıllıca görünüyor; çünkü projenin ticari bir hal alıp satılma ihtimali sözkonusu.

Gerçi bunu biraz kasarak 2.4 ile de yapabilirdim. 2.6, bana epey performans kaybı getirdi: basit işler yapan, yavaş, kaynakları kısıtlı bir sistemde, 2.6 serisi, RAM tüketiminden tutun CPU çevrimine kadar, en az %50 daha fazla sömürüyor sistemi…

Yakın zamana kadar, hatta şimdi bile, “hız” iddiasında olan bazı az sayıda masaüstü GNU/Linux dağıtımlarının 2.4.x serisi kernellerle gelmesi boşuna değil. (Puppy Linux, Damn Small Linux gibi 50-100 MB arası mini dağıtımlar hala 2.4.x serisi kerneller ile geliyorlar)

Açıkçası, 2.6′yı seçmemin hiçbir rasyonel nedeni yoktu. Belki crytoloop, belki initramfs. Ama bunlar sonradan da düşünülebilir, en azından kernel düzeyinde olmasa bile, user space programlarla üstesinden gelinebilirdi.

Demek istediğim, “üst sürüme geçme hastalığı” böyle bir zamanda bile etkisini gösterebiliyor. Bunun için, aynı işi donanım tabanlı ya da yazılım tabanlı yapabilirsem, donanım tabanlı çözümü tercih ederim. Çünkü, donanıma firmware yazmak belli bir “ciddiyet” ve planlama gerektiriyor; üstelik satılan bir anakart üstündeki BIOS’un hatalı olduğunu düşünün: bu durumda üretici anakartları geri alıp BIOS’ları değiştirmek zorunda. Onun için daha dikkatli, çok daha dikkatli davranıyorlar. Oysa yazılımda pardon demelerine bile gerek kalmıyor.

Popularity: 4% [?]

bilgisayarIntel Classmate PC: Asus eee PC, OLPC, Via Nano arasında seçim yapmak giderek zorlaşıyor

Oct20

          0 oy

intel classmate pcIntel önce OLPC projesi ile didişti, şimdi onlara CPU yapıyor. Bu arada, OLPC’ye rakip olarak çıkardığı Classmate PC’yi de öne çıkarmayı ihmal etmiyor.

Diğer ucuz laptop alternatiflerinin aksine, Intel’in Classmate’i Windows XP embedded ile gelmekte. Bu masaüstünde kullandığımız Windows XP’ye çok benzeyen, ancak daha “hafif” cihazlar için geliştirilmiş bir sürüm. Yeni birşey olmadığını da söyleyeyim; neredeyse “tam boy” Windows XP kadar eski Windows XP Embedded. Üstelik Windows CE gibi hafif de değil; vasat bir kurulum yaklaşık 400 MB civarında yer kaplıyor.

Aynı Asus eee gibi, Classmate PC’de 7 inç ve 800×480 çözünürlüğünde bir ekranla geliyor. OLPC gibi “oyuncakımsı” görünmemesi bir avantaj olsa da, bizim gibi koca koca heriflerin taşıyabileceği bir alet değil(!).

Üzerinde 915 GMS Intel chipset ve 256 MB DDRII-SO DIMM RAM mevcut. Aynı anakartın Asus eee üzerinde de olduğunu tahmin ediyorum. Üzerindeki Celeron M işlemci 900 Mhz ve Wikipedia’ya göre, L2 cache yok. Demekki, bu bir Shelton. Durum böyle olunca, Asus EEE’nin daha kuvvetli bir işlemciye sahip olduğunu görebiliyoruz.

Asus EEE ve OLPC’de olduğu gibi, Classmate PC’de de sabit disk yerine 2 GB NAND bulunuyor. Wireless bu modelde de mevcut (802.11b/g, Realtek). İki USB girişi var; aslında platform 3 USB desteklese de, Intel NAND’ı diğer USB üzerinden bağlamış. Asus EEE ise, içerideki IDE üzerinden SSD bağlamayı tercih etmiş; bu yüzden Asus’un disk performansı yönünden biraz daha üstün olduğunu tahmin ediyorum.

Classmate PC üzerine sorunsuz olarak Mandriva ve Ubuntu kuruluyormuş.

Bir de, sanırım Bahçeşehir’deki bir özel ilkokul, öğrencilerine Classmate PC dağıtmış. Zamanında gözüme böyle bir haber iliştiğini hatırlıyorum; bilgisi olan haber verirse sevinirim.

intel classmate pcintel classmate pcintel classmate pc

Ağırlık ise 1.3 kg; yani Asus eee’den 400 gr daha ağır.

Popularity: 8% [?]


1, toplam 8 sayfa12345678»
© 2007 Pozitif PC editor blogu | Mandalina teması kendim tarafından yapılmış olup, henüz beleş olarak dağıtılmamaktadır.
Kapat
E-posta ile paylaş