Bir kök dosya sisteminin oluşturulması
Önceki Linux Açılış Disketi NASIL Sonraki
Bir kök dosya sisteminin oluşturulması
Bir kök dosya sisteminin oluşturulması, sistemin çalışması için gerekecek dosyaları seçmeyi zorunlu kılar. Bu bölümde, sıkıştırılmış bir kök dosya sisteminin nasıl yapılacağını göreceğiz. Sıkıştırılmış dosya sistemini, doğrudan kök dosya sistemi olarak bağlanan bir disket üzerinde oluşturmanın daha az kullanılan bir diğer yöntemi Ramdisksiz kök dosya sistemleri bölümünde anlatılmaktadır.
Genel bakış
Bir kök dosya sistemi, tam bir Linux sistemi desteklemek için gerekli olan herşeyi içermelidir. Bunu yapabilmek için, bu disket bir Linux sistemde gerekli olan asgari araçları içermelidir:
  • temel dosya sistemi yapısını;
  • en azından şu dizinleri: /dev, /proc, /bin, /etc, /lib, /usr, /tmp;
  • temel araçları: sh, ls, cp, mv, vs.;
  • ayar dosyalarının en temel olanlarını: rc, inittab, fstab, vs.;
  • aygıtları: /dev/hd*, /dev/tty*, /dev/fd0, vs.;
  • araçlar tarafından kullanılan temel işlevleri sağlayan çalışma anı kütüphanelerini.
Elbette ki, herhangi bir sistem, üzerinde bir şeyler çalıştırabildiğimiz sürece işe yarardır. Bir kök disket aşağıdakileri veya bunlara benzer şeyleri yapabildiğiniz sürece bir anlam ifade eder:
  • Başka bir sürücüdeki dosya sistemini kontrol edebilmeli. Örneğin, sabit diskinizdeki kök dosya sistemini denetleyebilmeli, sistemi başka bir sürücüden açtıktan sonra, sizin orjinal kök bölümünüzü, bağlı değil iken, fsck ile denetlemenizi sağlamalı.
  • Arşivlenmiş ve/veya sıkıştırılmış orjinal kök dosya sisteminizin hepsini veya bir bölümünü cpio, gzip, tar veya ftape gibi araçlar kullanarak tekrar yükleyebilmeli.
Sıkıştırılmış dosya sistemi yapmayı burada açıklayacağız. Bu isimle anılmasını sebebi, sıkıştırılmış olması ve önyükleme işlemi sonrası ramdisk içine açılmasıdır. Sıkıştırılmış dosya sistemi kullanarak 6MB'ye yakın veriyi tek bir 1440k'lık bir diskete sığdırmak mümkündür. Dosya sistemi tek bir disketin boyutunda daha büyük olduğu için, dosya sistemini disket üzerinde hazırlamak mümkün değildir. Bu nedenle, dosya sistemini başka bir yerde hazırlamalı, orada sıkıştırıp daha sonra diskete kopyalamalıyız.
Dosya sisteminin oluşturulması
Bu tür bir kök dosya sistemi oluşturmak için, sıkıştırma öncesi bütün araç ve dosyaları içine alabilecek kadar büyük bir yere ihtiyacımız var. 4MB kadar kapasiteye sahip bir aygıta ihtiyacımız var. Bunun için çeşitli seçenekler mevcuttur:
  • Bir ramdisk (AYGIT = /dev/ram0) kullanın. Bu durumda, fiziksel bellek, bir disk sürücü gibi kullanılır. Ramdiskimiz yeterince büyük olmalıdır. Şayet LILO kullanıyorsanız, RAM içinde yaratılacak ramdiskin boyutunu sınırlayan bir satır (RAMDISK=nnn gibi) olup olmadığını /etc/lilo.conf ayar dosyası içinden kontrol edin. Öntanımlı değer 4096K'dır ve bu yeterli olacaktır. 8MB'den daha küçük RAM'i olan bir makine üzerinde böyle bir ramdisk yapmaya kalkışmayın. /dev/ram0, /dev/ram veya /dev/ramdisk gibi bir aygıta sahip olduğunuzdan emin olun. Şayet bu tür bir aygıt sisteminizde yok ise mknod kullanarak /dev/ram0 aygıtını oluşturun (ana=1, alt=0). Aygıt dosyaları yapmak için gerekli bilgiyi man mknod veya Linux Sistem Yöneticisinin Kılavuzu içinde bulabilirsiniz.
  • Şayet yeterli boyutta kullanılmayan bir disk bölümüne sahipseniz, bu da kabul.
  • Bir geridönüş aygıtı kullanın. Bu aygıt ile, bir disk dosyasına bir aygıtmış gibi davranabilirsiniz. Bir geridönüş aygıtı kullanarak, sabit diskiniz üzerinde, dosya sistemini yapmamıza yetecek kadar büyük bir dosya oluşturabilirsiniz (3MB civarı).
    Geridönüş aygıtlar hakkında bilgi almak için: man losetup. Şayet sisteminizde losetup yok ise, mount ve umount sürümleri ile uyumlu olarak ftp://ftp.win.tue.nl/pub/linux-local/utils/util-linux/ adresinden util-linux paketi içinde alabilirsiniz.
    Şayet sisteminizde bir dönüş aygıtı yok ise (/dev/loop0, /dev/loop1, vs.), ``mknod /dev/loop0 b 7 0'' komutunu kullanarak bir tane oluşturmalısınız. Özel mount ve umount çalıştırılabilirlerini de yükledikten sonra, diskiniz üzerinde yeterli kapasiteye sahip geçici bir dosya oluşturun (örneğin /tmp/fsfile). nnn blokluk bir dosya oluşturmak için şu komutu kullanabilirsiniz:
    dd if=/dev/zero of=/tmp/fsfile bs=1k count=nnn
    
    Aşağıdaki aygıt kelimesinin yerine dosya ismini koyun. Bağlama işlemi yapacağınız zaman, mount komutu ile birlikte -o loop seçeneğini kullanmanız gerekmektedir. Böylece mount uygulamasına bağlanacak şeyin bir dönüş aygıt olduğu bildirilmiş olur.
Bu seçeneklerden birisini seçtikten sonra aygıt'ı hazırlayın:
dd if=/dev/zero of=aygıt bs=1k count=4096
Bu komut aygıtı sıfırlarla doldurur.
Önemli
Bir aygıtın sıfırlarla doldurulması, dosya sistemi daha sonra sıkıştırılacağı için kritik bir öneme haizdir. Azami sıkıştırmayı sağlamak için kullanılmayan bütün bölümler sıfır ile doldurulmalıdır. Dosya sistemindeki bir dosyayı silerken veya taşırken bunu aklınızda bulundurun. Dosya sistemi blokları doğru bir şekilde tekrar yerleştirir ama onları tekrar sıfırla doldurmaz. Şayet sıklıkla silme ve kopyalama yapıyorsanız, sıkıştırılmış dosya sisteminiz ihtiyaç duyduğumuzdan daha büyük olabilir.
Daha sonra dosya sistemini oluşturun. Linux çekirdeği, ramdiske özdevinimli olarak yüklenen, iki çeşit dosya sistemi kabul eder. Bunlar minix ve ext2'dir. ext2'yi tercih etmenizi öneririz. Şayet ext2 kullanırsanız, öntanımlı değerden daha fazla dosya düğümü oluşturmak için kullanılan -N seçeneğinin oldukça işe yarar olduğunu görürsünüz. -N 2000 değerini kullanmanızı öneririm. Böylece dosya düğümü sıkıntısı yaşamazsınız. Ayrıca olarak, gereksiz /dev dosyalarını silerek de dosya düğümü tasarrufu sağlanabilir. mke2fs, öntanımlı olarak 1.44MB'lik bir diskette 360 adet dosya düğümü oluşturur. Benim yaptığım kök diskette 120 tane dosya düğümü yeterli olmuştu. Eğer /dev içindeki bütün aygıtları eklemeye niyetiniz varsa, rahatlıkla 360 düğüm sınırını geçebilirsiniz. Sıkıştırılmış bir dosya sistemi kullanmak, daha büyük bir dosya sistemine ve daha çok düğüme izin verir fakat hala ya düğüm sayısını artırmanız ya da kullandığınız dosya sayısını sınırlamanız gerekmektedir.
Bu nedenle kullanacağımız komut şuna benzer olacaktır:
mke2fs -m 0 -N 2000 aygıt
(Şayet bir geridönüş aygıtı kullanıyorsanız, aygıt yazan yerde kullandığınız dosyanın adı olmalıdır.)
mke2fs kullanılabilir alanı kendiliğinden tespit eder ve gerekli ayarlamaları yapar. ``-m 0'' parametresi root kullanıcı için alan ayrılmasını önlemiş olur ve böylece diskette daha fazla alan bulunması sağlanmış olur.
Daha sonra aygıtı bağlayın:
mount -t ext2 aygıt /mnt
(Şayet /mnt bağlantı noktası sisteminizde yoksa, bunu oluşturmak zorundasınız.) Bölümün geri kalanında hedef dizin isimleri /mnt'ye göre ayarlanacaktır.
Dosya sisteminin doldurulması
Kök dosya sisteminiz için gerekli olan mümkün en az sayıda dizin şunlardan oluşabilir[11]:
  • /dev -- aygıt dosyaları, G/Ç'lar için gereklidir.
  • /proc -- proc dosya sistemi tarafından ihtiyaç duyulan dizin
  • /etc -- sistem yapılandırma dosyaları
  • /sbin -- Kritical sistem çalıştırılabilirler
  • /bin -- sistemin parçası olarak kabul edilen çalıştırılabilirler
  • /lib -- çalışma zamanı desteği sağlayan paylaşımlı kütüphaneler
  • /mnt -- diğer disklerdeki bakım/onarım işleri için bağlantı noktası
  • /usr -- ilave araçlar ve uygulamalar
Bu dizinlerden üç tanesi boş olacaktır, bu nedenle sadece mkdir kullanarak bunları oluşturmak yeterli olacaktır. /proc dizini, proc dosya sisteminin yerleştiği bir dizindir. /mnt ve /usr dizinleri, sistem çalıştıktan sonra kullanılacak bağlantı noktalarıdır.
Geri kalan dizinler aşağıda ki bölümlerde açıklanmıştır.
/dev
Bir Linux sistemi için gerekli olan bütün aygıtların dosyalarının bulunduğu bir dizindir. Dizinin kendisi normal bir dizindir ve mkdir komutu ile normal bir şekilde oluşturulabilir. Aygıt özel dosyaları ise, mknod komutu kullanılarak özel bir yöntemle oluşturulmalıdır.
Aynı zamanda bu işi yapmanın kısa bir yolu da vardır: sabit diskinizdeki aygıt dosyalarını disketin /dev dizinine kopyalayabilirsiniz. Bu işlem esnasında yapmanız gereken tek şey -R seçeneğini kullanmaktır. Böylece, dizin içindeki dosyaların içerikleri kopyalanmadan sadece dizin kopyalanır. Örneğin:
cp -dpR /dev/fd[01]* /mnt/dev
cp -dpR /dev/tty[0-6] /mnt/dev
Disketin /mnt dizinine bağlı olduğunu varsayarsak, dp sçenekleri sembolik bağların yine bağ olarak kopyalandığından, dosya özniteliklerinin korunduğundan ve iyelik bilgilerini saklandığından emin olmamızı sağlar.
Şayet bu işi zor yoldan halletmek isterseniz, istediğiniz aygıtın ana ve alt numaralarını görebilmek için ls -l komutunu kullanın. Daha sonra disket içerisinde mknod komutunu kullanarak istediğiniz aygıtı oluşturun.
Aygıt dosyalarını oluştururken, ihtiyaç duyduğunuz özel aygıtların, diskette bulunduğundan emin olun. Örneğin; ftape dosyasını, teyp aygıtları kullanır ve şayet disketi kullanarak teyp sürücünüze erişmek istiyorsanız, teyp aygıtı dosyasını oluşturmalısınız.
Her bir özel aygıt için bir dosya düğümüne ihtiyacınız olduğunu ve disketlerde düğümlerin nadir bulunan değerli varlıklar olduğunu aklınızdan çıkarmayın. Öyle bol keseden dosya düğümü dağıtmayın. Ekleyeceğiniz aygıt dosyaları için seçici davranın. Şayet, sisteminizde SCSI diskler yok ise, /dev/sd* dosyalarını oluşturmayın. Seri portlardan iletişim sağlamayacaksanız, /dev/ttyS* aygıtlarına ihtiyacınız yok demektir.
Şayet, kök dosya sisteminizi oluştururken: aygıt içinde yer kalmadığı şeklinde bir hata iletisi görürseniz ama df komutunun çıktısı aygıtta yer olduğunu gösterirse, elinizdeki dosya düğümlerini bitirmişsiniz demektir. df -i komutu ile düğüm kullanım durumunu görebilirsiniz.
Önemli
Şu dosyaların bu dizin içinde bulunduğunda emin olun: console, kmem, mem, null, ram0 ve tty1.
/etc
/etc dizini sistem yapılandırma dosyalarını barındırır. İçeriği, hangi süreçlerin çalıştıracağınıza bağlı olarak değişir. Pek çok sistemde, bunlar, üç gruba ayrılır:
  1. Herzaman gerekli olanlar: rc, fstab, passwd, vs.
  2. Gerekli olabilecek ama asla emin olamayacaklarınız. May be required, but no one is too sure.
  3. ıvır zıvır.
Gerekli olmayan dosyalar aşağıdaki komut ile tespit edilebilir:
ls -ltru
Bu komut ile en son ulaşılan tarihten itibaren ters sıralama ile, bir dosya listesi görüntülenir. Böylece hiç erişim sağlanmamış dosyalar varsa, bunları gönül rahatlığı içinde yok sayabilirsiniz.
Benim kök disketimde, 15 taneden az ayar dosyam var. Böylece üç değişik türte dosya ile ilgilenmem gerekmekte ve yapmam gereken işler azalmakta:
  1. önyükleme ve kök sistemi için mutlaka yapılandılmaları gerekenler:
    1. rc.d/* -- sistem başlatma ve çalışma seviyesi değiştirme betikleri
    2. fstab -- bağlanacak dosya sistemlerinin listesi
    3. inittab -- init süreci için parametreler, açılış sırasında çalıştırılan ilk süreçtir.
    4. gettydefs -- login süreci için parametreler, kullanıcının sistme girişinde çalıştırılır.
  2. önyükleme ve kök sistemi için düzenlemem gerekenler:
    1. passwd -- kullanıcıların, ev dizinlerinin, vs. bilgilerin bulunduğu önemli bir liste.
    2. group -- kullanıcı grupları.
    3. shadow -- kullanıcıların parolaları. Bunu dahil etmek zorunda değilsiniz.
    4. termcap -- uçbirim yetenekleri veritabanı.
    Şayet güvenlik önemli ise passwd ve shadow dosyaları iyice budanmalı, kullanıcı parolalarının kopyalanması önlenmeli ve gereksiz girdiler çıkarılmalıdır. Böylece disketten açılış yaparken istenmeyen kullanıcı girişleri reddedilir.
    passwd dosyasında en azından root kullanıcının bulunduğundan emin olun. Şayet diğer kullanıcıların da bağlantı yapmasını isterseniz, ev dizinlerinin ve kabukların sistemde var olduğundan emin olun.
    termcap, uçbirim veritabanıdır ve yüzlerce kB'dır. Sizin önyükleme ve kök disketinizdeki sürümün, sadece işinize yarayacak olan uçbirimleri içerdiğinde emin olun: genellikle sadece linux veya linux-console girdisi yeterlidir.
  3. Ve geriye kalanlar. O an çalışıyorlardı, bu yüzden onlara dokunmadım.
Bunların haricinde, gerçekte ayarlamam gereken sadece iki dosya var ve onlarda hayret verici bir şekilde küçükler:
  • rc şunları içermeli:
    #!/bin/sh
    /bin/mount -av
    /bin/hostname Kangaroo
    
    Çalıştırma izni olduğunda emin olun, tepesinde "#!" işareti bulunduğundan emin olun ve dosya isimlerinin doğru olduğundan da emin olun. Aslında hostname'i çalıştırmanız gerekmemekte —yaparsanız hoş olur, yapmazsanız hiçbir şey olmaz.
  • fstab en azından şunları içermeli:
    /dev/ram0       /               ext2    defaults
    /dev/fd0        /               ext2    defaults
    /proc           /proc           proc    defaults
    
    Çalışan sisteminizdeki fstab girdilerini buraya kopyalayabilirsiniz, fakat sabit diskinizdeki bölümleri özdevinimli olarak bağlamaya kalkışmayın. noauto anahtar kelimesini bunların yanında kullanmayı unutmayın. Açılış disketini kullanmak zorunda kaldığınız durumlarda, sabit diskinizin kafası biraz karışmış olabilir.
inittab içindeki sysinit satırı, rc veya hangi temel betik kullanılacak ise, ona göre düzenlenmelidir. Ayrıca seri portlar üzerindeki kullanıcıların bağlanamayacaklarından emin olmak isterseniz, sonlarında ttys veya ttyS aygıtları içeren bütün getty satırlarının başına yorum işareti "#" getirin. tty portlarına dokunmayın ki, konsoldan bağlanabilesiniz.
En küçük yapıda inittab dosyası şuna benzer:
id:2:initdefault:
si::sysinit:/etc/rc
1:2345:respawn:/sbin/getty 9600 tty1
2:23:respawn:/sbin/getty 9600 tty2
Bu inittab dosyası, sistemin değişik seviyelerde çalışabileceğini/başlatılabileceğini, çoklu kullanıcı kipine geçebileceğini, vs.. tanımlar. inittab içindeki isimleri dikkatlice kontrol edin. Şayet init, bu isimleri bulamazsa, sistem açılışı gerçekleşmez ve hatta bir hata iletisi bile alamayabilirsiniz.
Unutmayın ki bazı uygulamalar olmazsa olmazdır ve başka uygulamalar bunları yerlerini bilerek çağırdığından yerleri değiştirilemez. Örneğin; benim sisteminde, /etc/shutdown /etc/reboot'u çalıştırdığından şayet reboot'u /bin/reboot'a taşırsam, bir shutdown komutu, reboot'u bulamayacağı için çalışmayacaktır.
İşin geri kalan kısmı, /etc dizinindeki tüm metin dosyalarını ve gerekli olacağından emin olmasanız bile /etc dizinindeki bütün çalıştırılabilir dosyaları kopyalamaktan ibarettir. Yardımcı olması açısından Kök dosya sistemi listesi örneği içindeki örnek listeye göz atabilirsiniz. Muhtemelen buradaki dosyalar yeterli olacaktır ama sistemler arası farklılıklar olduğu için, buradaki dosyaların, sizin sisteminizdekiler ile aynı olduğunda emin olamazsınız. Emin olmanın tek yolu inittab ile başlamak ve daha nelerin gerektiğini bulmaktır.
Pek çok sistem, değişik çalışma seviyelerine geçiş sağlayan kabuk betiklerini saklamak için /etc/rc.d/ dizinini kullanırlar. Asgari gereksinim tek bir rc betiğidir ama inittab ve /etc/rc.d dizinindekileri doğrudan diskete kopyalamak ve daha sonra bir disket ortamında işi olamayacak kabuk betiklerini temizlemek daha basit olabilir.
/bin ve /sbin
/bin dizini, temel işlemleri (ls, mv, cat ve dd gibi) yapmak için gerekli olan ilave araçları saklamak için elverişli bir dizindir. /bin ve /sbin dizininde bulunması gereken dosyaların örnek bir listesi için Kök dosya sistemi listesi örneği bölümüne bakınız. Yedekleri geri yüklemek için gereken araçların (cpio, tar ve gzip gibi) hiçbiri bu listede yoktur. Çünkü ben bu araçları başka bir uygulama disketine yerleştirdim. Amacım önyüleme ve kök disketlerinde yer tasarrufu sağlamaktı. Önyükleme ve kök disketinden açılış yapıldıktan sonra, bunların içindekiler ramdiske yüklenir ve disket sürücü başka disketler için boşalmış olur. Ben bu uygulama disketini genellikle /usr altına bağlarım.
Uygulama disketi yapımı Uygulamalar disketinin oluşturulması içinde anlatılmaktadır. Yedekleme yapmak için, yedekleme araçlarının aynı sürümdeki birer kopyasını kullanmak iyi bir fikir olacaktır. Bu sayede sizin yedeklerinizi okuyamayan araçların yeni sürümlerini yüklemek ile vakit kaybetmezsiniz. Sisteminizdeki yedekleri hangi araçlar ile yaratmış iseniz, aynı araçların aynı sürümlerini kullanarak bir uygulama disketi oluşturun.
Önemli
Şu uygulamaları yüklediğinizden emin olun: init, getty veya eşdeğeri, login, mount, rc betiklerini çalıştırabilecek bir kabuk ve sh'dan bu kabuğa bir bağ.
/lib
Bu dizine gerekli olacak paylaşımlı kütüphaneleri ve yükleyicileri koyabilirsiniz. Şayet paylaşımlı kütüphaneler /lib dizini altında bulunamazsa, sistem açılmayacaktır. Şayet şanslı iseniz, bunun sebebini söyleyen bir hata iletisi ile karşılaşabilirsiniz.
Hemen hemen bütün uygulamalar libc kütüphanesine ihtiyaç duyarlar; libc.so.N: buradaki N geçerli sürüm numarası anlamına gelir. /lib dizininizi kontrol edin. Tam sürüm adını taşıyan bir dosya ismine verilmiş olan sembolik bir bağ olarak bir libc.so.N dosyası vardır:
# ls -l /lib/libc*
-rwxr-xr-x   1 root     root      4016683 Apr 16 18:48 libc-2.1.1.so*
lrwxrwxrwx   1 root     root           13 Apr 10 12:25 libc.so.6 -> libc-2.1.1.so*
Bu durumda libc-2.1.1.so'yu kullanmamız gerekecektir. Yüklemeniz gereken diğer kütüphaneleri bulmak için, yüklemeyi planladığınız çalıştırılabilirlerin bağımlılıklarını ldd ile kontrol ediniz. Örnek:
# ldd /sbin/mke2fs
libext2fs.so.2 => /lib/libext2fs.so.2 (0x40014000)
libcom_err.so.2 => /lib/libcom_err.so.2 (0x40026000)
libuuid.so.1 => /lib/libuuid.so.1 (0x40028000)
libc.so.6 => /lib/libc.so.6 (0x4002c000)
/lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x40000000)
Sağ tarafta bulunan bütün dosyalar gereklidir. Dosya bir sembolik bağ olabilir.
Bazı kütüphanelerin oldukça büyük olduğunu ve kök dosya sisteminize sığmayabileceğini aklınızda bulundurun. Örneğin; yukarıda listelenen libc.so yaklaşık olarak 4MB'dır. Kütüphaneleri kök dosya sisteminize kopyalarken, muhtemelen onları soymanız gerekecek. Ayrıntılar için Kök dosya sistemi boyutunun küçültülmesi bölümüne bakınız.
/lib içine, kütüphaneleri yükleyecek bir yükleyici de yerleştirmelisiniz. Yükleyici ya ld.so (A.OUT kütüphaneleri içindir ve güncelliğini yitirmiştir) ya da ld-linux.so (ELF kütüphaneleri için) olmalıdır. ldd'nin yeni sürümleri hangi yükleyiciye ihtiyacınız olduğunu söyleyecektir -yukarıdaki örnekte görülebileceği üzere- fakat eski sürümler bunu yapmazlar. Şayet hangisine ihtiyaç duyduğunuzdan emin değilseniz, kütüphane için file komutunu çalıştırın:
# file /lib/libc.so.4.7.2 /lib/libc.so.5.4.33 /lib/libc-2.1.1.so
/lib/libc.so.4.7.2: Linux/i386 demand-paged executable (QMAGIC), stripped
/lib/libc.so.5.4.33: ELF 32-bit LSB shared object, Intel 80386, version 1, stripped
/lib/libc-2.1.1.so: ELF 32-bit LSB shared object, Intel 80386, version 1, not stripped
QMAGIC, 4.7.2'nin A.OUT kütüphanesi olduğunu ve ELF de, ELF ile 2.1.1'in ELF kütüphanesi olduğunu göstermektedir.
Gereken yükleyici(ler)yi, kök dosya sisteminize kopyalayın. Kütüphaneler ve yükleyicileri, içerildikleri çalıştırılabilirlere karşı dikkatlice kontrol edilmelidir. Şayet çekirdek gereken bir kütüphaneyi yükleyemezse, herhangi bir hata verilmeksizin çekirdek askıda kalabilir. Alın başınıza bela.
PAM ve NSS'in sağlanması
Sisteminiz, ldd ile görülemeyen çzdev,ml, yükelenen kütüphanelere ihtiyaç duyabilir. Şayet bunları sağlayamazsanız, sisteme bağlanma veya açılış disketini kullanma ile sorunlar yaşayabilirsiniz.
PAM (Eklemlenebilen Kimlik Kanıtlama Modülleri)
(Pluggable Authentication Modules)
Şayet sisteminizde PAM kullanılıyor ise, açılışı disketinizde bunun için bazı hazırlıklar yapmalısınız. Kısaca tanımlamak gerekirse, PAM: kullanıcıları doğrulama ve onların servislere erişimini denetleyen gelişmiş bir modüler yöntemdir denebilir. Sisteminizde PAM kullanılıp kullanılmadığını anlamanın en kolay yolu, login çalıştırılabiliri üzerinde ldd komutunu kullanmaktır. Şayet çıktıda libpam.so var ise, PAM'e ihtiyacınız var demektir.
Şans eseri, açılış disketleri için güvenlik bir sorun değildir: makinenize fiziksel erişimi olan bir kişi zaten istediği herşeyi yapabilir. Bu nedenle, kök dosya sisteminizde aşağıdakine benzer bir /etc/pam.conf dosyası oluşturup, PAM konusunu kapatabilirsiniz:
OTHER   auth       optional     /lib/security/pam_permit.so
OTHER   account    optional     /lib/security/pam_permit.so
OTHER   password   optional     /lib/security/pam_permit.so
OTHER   session    optional     /lib/security/pam_permit.so
Ayrıca /lib/security/pam_permit.so dosyasını kendi kök dosya sisteminize kopyalayın. Bu kütüphane sadece 8k'dır ve pek baş ağrıtmaz.
Bu ayarlar, herhangi bir kimsenin sisteminizdeki servis ve dosyalara erişimize izin verir. Özel sebeplerden dolayı, güvenlik, açılış disketiniz için önemli ise, sabit diskinizdeki PAM ayar dosyalarının çoğunu veya hepsini kök dosya sisteminzie kopyalamak zorundasınız. PAM belgelerini dikkatlice okuyun ve /lib/security içindeki gerekli bütün kütüphaneleri kök dosya sisteminize kopyalayın.
Ayrıca /lib/libpam.so dosyasını da önyükleme disketinize kopyalamak zorundasınız. Siz bunu zaten biliyorsunuz, ldd komutunu /bin/login üzerinde çalıştırdınız değil mi? Böylece bağımlılıkların neler olduğunu öğrenmiş oldunuz.
NSS (İsim Servisi Değiştirici)
(Name Service Switch)
Şayet glibc (nam-ı diğer libc6) kullanıyorsanız, isim servisleri için bazı düzenlemeler yapmalısınız yoksa sisteme bağlanamayabilirsiniz. /etc/nsswitch.conf dosyası, çeşitli servisleri yürüten veritabanlarını kontrol eder. Şayet ağ üzerinden servislere erişimi düşünmüyorsanız (örneğin, DNS veya NIS aramaları), aşağıdakine benzer basit bir nsswitch.conf dosyası hazırlamanız yeterli olacaktır:
passwd:     files
shadow:     files
group:      files
hosts:      files
services:   files
networks:   files
protocols:  files
rpc:        files
ethers:     files
netmasks:   files
bootparams: files
automount:  files
aliases:    files
netgroup:   files
publickey:  files
Burada bütün servislerin sadece yerel dosyaları yürütülebileceği belirtilmiştir. Ayrıca /lib/libnss_files.so.X dosyasını eklemeniz gerekmekte (burada X değeri glibc 2.0 için 1 ve glibc 2.1 için 2'dir) eklemeniz gerekmekte. Bu kütüphane, dosya aramalarını gerçekleştirmek için özdevimli yüklenecektir.
Şayet açılış disketiniz üzerinden ağa çıkmayı planlıyor iseniz, daha ayrıntılı bir nsswitch.conf dosyası oluşturmanız gerekmekte. Tanımladığınız her bir servis için bir /lib/libnss_service.so.1 dosyası eklemeniz gerekmektedir.
Modüller
Şayet modüler yapıda bir çekirdeğe sahipseniz, açılış disketi ile açılış yapıldıktan sonra hangi modüllerin yüklenmesini istediğinizi tespit etmelisiniz. Şayet yedekleriniz teyp üzerinde ise ftape ve zftape modüllerinin yüklenmesini isteyebilirsiniz veya SCSI aygıtlarınız varsa SCSI modüllerinin yüklenmesini isteyebilirsiniz. Acil durumlarda ağa erişim istiyorsanız, PPP veya SLIP modüllerini yüklemeniz kuvvetle muhtemeldir.
Bu modüller /lib/modules içinde yer alabilir. Ayrıca insmod, rmmod ve lsmod'u da eklemelisiniz. Özdevinimli yüklenmesini istediğiniz modüllere bağlı olarak modprobe, depmod ve swapout'u da ekleyebilirsiniz. Şayet kerneld kullanıyor iseniz, onu da /etc/conf.modules'e ekleyin.
Bunların yanında, modülleri kullanmanın temel faydası, kritik öneme haiz olmayan modülleri bir uygulama disketi içinde tutabilmenizdir. Bu sayede kök diskette daha çok alan size kalır. Şayet pek çok değişik aygıt ile uğraşmanız gerekecek ise; bu yaklaşım, gömülü sürücülere sahip daha büyük bir çekirdek yapmayı tercih edilebilir kılar.
Önemli
Sıkıştırılımış bir ext2 dosya sisteminden açılış yapabilmek için ramdisk ve ext2 desteğini çekirdeğe gömülü olarak vermeniz gerekir. BUNLARI MODÜL OLARAK KULLANAMAZSINIZ.
Son olarak bazı ayrıntılar
Bazı sistem uygulamaları, mesela login, /var/run/utmp dosyası ve/var/log dizini yok ise şikayet edip dururlar. Bu nedenle şu komutları verin:
# mkdir -p /mnt/var/{log,run}
# touch /mnt/var/run/utmp
En sonunda, gerekli bütün kütüphaneleri ayarladıktan sonra, kök dosya sistemindeki /etc/ld.so.cache dosyasını yeniden yapılandırmak için ldconfig komutunu kullanın. Bunun şu şekilde yapabilirsiniz:
# ldconfig -r /mnt
Paketleme
Kök dosya sistemi inşaatını bitirdimize göre, onu sistemden ayıralım ve bir dosyaya kopyalayıp sıkıştıralım:
# umount /mnt
# dd if=aygıt bs=1k | gzip -v9 > rootfs.gz
Bu işlemin sonunda rootfs.gz isimli bir dosyaya sahip olacaksınız.Bu sizin sıkıştırılmış dosya sisteminizdir. Bu dosyanın boyutunun diskete sığacağından emin olun. Şayet boyutu disket boyutundan büyük ise, geri dönmeli ve bazı dosyaları kaldırmalısınız. Kök dosya sistemini küçültmek hakkında bazı öneriler Kök dosya sistemi boyutunun küçültülmesi bölümünde bulunabilir.


[11] Burada anlatılan dizin yapısı, sadece kök disket kullanımı içindir. Gerçek Linux Sistemleri hangi dosyanın nerede bulunacağının belirlendiği daha karmaşık ve daha disiplinli bir yapıya sahiptir: Dosyasistemi Hiyerarşi Standardı.
Önceki Üst Ana Başlık Sonraki
Açılış disketleri ve önyükleme süreci Başlangıç Çekirdek Seçimi
Bir Linux Kitaplığı Sayfası