Sorun çözmek ya da Yenilginin Acısı
Önceki Linux Açılış Disketi NASIL Sonraki
Sorun çözmek ya da Yenilginin Acısı
Açılış disketleri yapmak için giriştiğiniz ilk bir kaç sefer başarısızlıkla sonuçlanabilir. Bir kök disket yapmak için genel yaklaşım; sisteminizdeki hazır parçaları bir araya toplamak, bunları disket tabanlı bir hale sokmak ve konsoldan açılış yapmaktır. Bir kere, sizinle iletişime geçtimi, savaşın yarısını kazanmışsınız demektir. Sistem çalıştığı sürece, bağımsız sorunları çözmek mümkün olabilir. Şayet herhangi bir uyarı vermeden, sistem askıda kalırsa, bu problemi halletmek biraz zor olabilir. Sistemin sizinle iletişimi kestiği noktada meydana gelen problemleri bulmak için önerilen süreç şudur:
  • Şuna benzer bir ileti alabilirsiniz:
    Kernel panic: VFS: Unable to mount root fs on XX:YY
    
    Bu genel bir sorundur ve birkaç sebebi vardır. İlk olarak, XX:YY aygıtının kodlarını /usr/src/linux/Documentation/devices.txt dosyasındaki aygıt kodları listesi ile karşılaştırın. Şayet yanlış ise, muhtemelen rdev -R yapmamışsınız demektir veya yanlış biteşlem üzerinde işlem yapmışsınız demektir. Eğer aygıt kodu doğru ise, çekirdek içinde gömülü aygıt sürücülerini kontrol edin; bir disket sürücü, ramdisk ve ext2 dosya sistemi desteğine sahip olduğundan emin olun.
  • Şayet şuna benzer pek çok hata alırsanız:
    end_request: I/O error, dev 01:00 (ramdisk), sector NNN
    
    Bu ramdisk sürücüsünden gelen bir G/Ç hatasıdır. Genellikle çekirdeğin aygıt dışına yazmaya kalkıştığı durumlarda olur. Ramdisk, kök dosya sistemini taşımak için çok küçük gelmiştir. Açılış disketi çekirdek ilklendirme iletilerinde şuna benzer bir satır olup olmadığını kontrol edin:
    Ramdisk driver initialized : 16 ramdisks of 4096K size
    
    Bu boyutu sıkıştırılmamış kök dosya sistemi boyutu ile karşılaştırın. Şayet ramdisk yeterince büyük değilse, daha büyüğünü yapın.
  • Kök diskette, olması gereken dizinlerin olup olmadığını kontrol edin. Yanlış bir yere kopyalamış olabilirsiniz. /bin yerine elinizde /bootdisk/bin diye bir dizin olabilir (Tıpkı benim yaptığım gibi :-) -yazarın değil, çevirmenin yaptığı gibi).
  • Sabit diskinizdeki /lib dizini içinde görünen bağ ile aynı adlı bir /lib/libc.so olduğundan emin olun.
  • Sabit diskinizdeki /dev dizini altında bulunan sembolik bağların, kök dosya sisteminizde de olduğundan emin olun. Bu bağlar, sizin kök dosya sisteminize yerleştirdiğiniz aygıtlara atanmış sembolik bağlar olmak zorundadır. Özellikle /dev/console bağları pek çok durumda gerekliliktir.
  • /dev/tty1, /dev/null, /dev/zero, /dev/mem, /dev/ram ve /dev/kmem dosyalarını diskete koyduğunuzdan emin olun.
  • Çekirdek ayarlarınız kontrol edin -- kullanıcı girişi anında gerekli olan bütün özkaynaklar, çekirdeğe gömülü olmalıdır, modüler yapıda değil. Bu nedenle ramdisk ve ext2 desteği modüler olarak kullanılamaz.
  • Çekirdek kök aygıtı ve ramdisk ayarlarınızı kontrol edin.
Bu genel kaideleri geçtikten sonra, kontrol edebileceğiniz bazı belli başlı dosyalar vardır:
  1. init'in /sbin/init veya /bin/init olarak yüklendiğinden ve çalıştırılabilir olduğundan emin olun.
  2. init'in kütüphanelerini kontrol etmek için ldd init komutunu kullanın. Genelde bu sadece libc.so olur ama yine de kontrol etmekte fayda vardır.
  3. Kütüphaneler için doğru yükleyicilere sahip olduğunuzdan emin olun -- a.out için ld.so veya ELF için ld-linux.so.
  4. Açılış disketi dosya sisteminizdeki /etc/inittabgetty (veya bazı getty-benzeri uygulamalar; mesela agetty, mgetty veya getty_ps) çağrıları için kontrol edin. Sabit diskinizdeki inittab ile iki kere karşılaştırın. Kullandığınız uygulamaların man sayfalarını kontrol edin. Muhtemelen, inittab zincirin en zayıf halkasıdır: sözdizimi ve sistemin doğal yapısından dolayı. Bu sorunu çözmenin tek yolu init'in ve inittab'ın man sayfalarını okumak ve elinizdeki sistemin açılış esnasında ne yaptığını anlamaya çalışmaktır. /etc/inittab içinde sistem başlatma girdisi olup olmadığını kontrol edin. Sistem başlatma betiğini çalıştıracak bir satır olması gerekmektedir.
  5. Tıpkı init'e yaptığımız gibi, ldd komutunu getty için de çalıştırın ve onun gereksinimlerini kontrol edin. Gerekli kütüphane ve yükleyicilerin kök dosya sisteminizde bulunduğundan emin olun.
  6. rc betiklerini çalıştırma yeteneğine sahip bir kabuk programı eklediğinizden emin olun(örneğin bash veya ash).
  7. Kurtarma diskinizde bir /etc/ld.so.cache dosyası varsa, bu dosyayı tekrar oluşturun.
Şayet init başlıyor ama bunun gibi bir ileti alıyorsanız:
Id xxx respawning too fast: disabled for 5 minutes
Bunu sebebi init'dir, genelikle getty veya login'in başlar başlamaz sonlandığı anlamına gelir. getty ve login çalıştırılabilir dosyalarını ve kütüphanelerini kontrol edin. /etc/inittab içinde belirtilmiş çağrıların doğru olduğunu kontrol edin. Şayet getty'den acayip iletiler alıyorsanız, bunu anlamı /etc/inittab içinden yapılan çağrıların hatalı olabileceğidir.
Şayet bir bağlantı ekranına kadar geliyor, geçerli bir isim giriyor ama sistem sizden başka bir isim girmenizi istiyorsa, problemin kaynağı PAM veya NSS olabilir. PAM ve NSS'in sağlanması bölümüne göz atınız. Ayrıca gölgeli parolalar kullanıyor ama /etc/shadow dosyasını açılış disketinize kopyalamamış olabilirsiniz.
Şayet kurtarma disketinizdeki df gibi bazı çalıştırılabilir dosyaları deniyorsanız ve df: command not found gibi bir hata alıyorsanız; iki şeyi kontrol etmeniz gerekir:
  1. PATH içinde, dosyanın içinde bulunduğu dizinin tanımlı olduğunu,
  2. komut için gerekli olan kütüphane ve yükleyicilerin diskette bulunduğunu.
Önceki Üst Ana Başlık Sonraki
Herşeyi biraraya getirelim Başlangıç Kök dosya sistemi boyutunun küçültülmesi
Bir Linux Kitaplığı Sayfası