Ubuntu Sistem Başlangıç Betikleri (boot scripts)

Başlatan ufuk_k, 08 Temmuz 2008 - 08:06:56

« önceki - sonraki »

0 Üyeler ve 1 Ziyaretçi konuyu incelemekte.

ufuk_k

Ubuntu'da sistem başlarken /etc/init.d altında bulunan betikleri, /etc/rc.d altında hangi çalışma düzeyinde (runlevel) bağlantılara sahipse, ona göre çalıştırılır.

init'in çalışma seviyeleri şunlardır:

0: Halt (Sistem kapama)

1: Single user mode (tek kullanıcı kipi)

2-5: Çoklu kullanıcı kipleri (farkları vardır, ancak temelde aynıdır. Örneğin init 5, tüm özelliklerle donatılmış X Window sistemini belirtir)

6: Reboot (yeniden başlama)

Mesela, normalde sistemin grafik ekrana mı (gdm, kdm) yoksa konsola mı boot edeceği /etc/inittab dosyasından ayarlanır:

# Default runlevel. (Do not set to 0 or 6)
id:3:initdefault:


id:3 değerini 4 yaparsak, gdm ya da kdm giriş ekranına boot etmiş oluruz. Fakat Ubuntu /etc/inittab dosyası barındırmaz. Eğer biz yaratırsak, Ubuntu bunu görür ve kullanır. Ubuntu bunu kullanmadan nasıl iş yapar ve hangi çalışma düzeyine açılacağını anlar? İlk başta söylediğim gibi /etc/rc.X.d (X, numaraya denk gelir) içindeki linkler ile upstart adında bir servis kullanır.

Örneğin GDM, Ubuntu'da runlevel 2 (çalışma düzeyi) olarak ayarlanmıştır. Bunu kaldırmak ve konsola boot etmek istiyorsak:

/etc/rc2.d/S30gdm dosyasını /etc/rc2.d/K70gdm olarak değiştiririz.  Buradaki K ve S ne demektir?
S start yani başlatma, K ise durdurma anlamına gelir.

Aslında Ubuntu'da bu işleri yapmanın daha kolay yolları var.

1. Yol: update-rc.d komutudur. update-rc.d ile başlangıç seviyesi betiklerini ekleyebilir, kaldırabilir ve istediğimiz gibi ayarlayabiliriz.

Örnek:
sudo update-rc.d -f remove apparmor ile apparmor servisini başlangıçtan kaldırabiliriz. Bu komutun yapabilecekleri epey fazladır. Sistem betiği eklemek için de çeşitli kullanım yolları bulunur. Fakat biraz çetrefillidir. Ekleyeceğimiz sistem betiğinin, az önce yukarıda belirttiğim 0-6 çalışma düzeylerinden hangilerinde çalışması gerektiğini bilmemiz ve ona göre eklememiz gerekir. O nedenle, her komutta olduğu gibi bu komutun da ayrıntılı kullanım alanlarını:

man update-rc.d ile man sayfasını okuyarak öğrenebiliriz.

2. Yol: sysv-rc-conf uygulamasıdır. Bu uygulama sistem servislerinin çalışma düzeylerini tek tek değiştirmemizi ve ayarlamamızı sağlar.

sudo aptitude install sysv-rc-conf komutu ile yükleriz.

sudo sysv-rc-conf ile çıkan ekranda, servisler ve çalışma düzeyleri vardır. Burada yukarı-aşağı, sağ-sol yön tuşları ile servisler ve çalışma düzeyleri arasında gezinebilir, space tuşu ile istediğimiz çalışma düzeyine "X" koyarak ya da kaldırarak ayarlama yapabiliriz.

Sistem betiklerinden işimize yaramayacak, gereksiz olanlar olabilir. Ancak bu ayarları dikkatli bir şekilde kurcalamalıyız. Çünkü başlaması gerekli bir servisi durdurursak sıkıntı çekebiliriz, hele de hangisinin hangi ayarını değiştirdiğimizi unutursak, iyice can sıkıcı olabilir.

Bu nedenle eğer ayarlarla gerçekten oynamak istiyorsanız:

-Servislerin ne işe yaradığını tam olarak öğrenin. Bunun için google en iyi arkadaşınızdır. Ubuntu belgelerini ve forumlarını da araştırabilirsiniz. Ayrıca çoğu servis ortak olduğundan, genel linux belgelerinden de çok şey öğrenmeniz mümkündür.

-Neyi değiştirdiğinizi bir metin dosyasına ve not defterine not alın. Bu benim mutlaka kullandığım yöntemdir. Eğer bir sistem betiğini değiştirirsem, önceki halini (değiştirmeden önce) yani hangi çalışma düzeylerinde çalıştığını ismiyle birlikte not alırım.

Umarım bu bilgiler yardımcı olur şimdilik. Daha sonra genişleteceğim.

Kaynaklar:

http://www.tldp.org/LDP/sag/html/index.html
http://www.linuxquestions.org/questions/ubuntu-63/since-we-have-no-etcinittab-506281/
http://www.howtoforge.com/perfect-server-ubuntu8.04-lts


DeFacto

Çok iyi bir çalışma olmuş. Tebrik ederim. Birşey de ben ekleyeyeyim ufak da olsa :) inittab dosyası ubuntu gibi yeni dağıtımlarda bulunmuyor fakat debian ve daha eskisinde bu dosya mevcuttu.

ufuk_k

#2
Evet, belirtmiştim zaten "barındırmaz" diye. Hemen hemen tüm dağıtımlarda inittab dosyası var. Ubuntu'daki farklılık da yine Debian'ın testing dalından geliyor olabilir, emin değilim ama kullanmadım.

erginemr

#3
Sağ ol Ufuk, ağzına sağlık. Çok güzel ve faydalı bir yazı olmuş. Bir hediye paketi de sana...  ;)

Ubuntu, Linux'un geleneksel inittab mantığından çok farklı çalışıyor:
# Default runlevel. (Do not set to 0 or 6)
id:5:initdefault:


Verdiğin bu güzel bilgiler sayesinde, dileyen arkadaşlar Ubuntu'yu komut satırından da başlatabilecek.

Yazına ek olarak bir iki notum olacak:

1. Çoğu servisi başlatıp durdurmak için konsoldan şu komutlar kullanılabilir:
sudo /etc/init.d/servis_ismi start
sudo /etc/init.d/servis_ismi stop


2. sysv-rc-conf'un benzeri işi yapan bir grafik program da BUM (boot-up-manager):
http://www.marzocca.net/linux/bum.html

3. Faydalı ve gereksiz servisleri seçmek ve açılışı hızlandırmak için:
http://www.extremetech.com/article2/0,1697,2114124,00.asp
http://ubuntuforums.org/showthread.php?t=89491

4. Genel sistem performansını arttırmak için:
http://lifehacker.com/software/linux/make-your-linux-system-leaner-with-10-tweaks-333798.php
http://ubuntuforums.org/showthread.php?t=712625

aynshtein

Faydalı bilgiler için teşekkürler... Linux'un ne kadar özelleştirilebildiğini görmek beni duygulandırıyor :) (Penguen dergisinde Alpay Erdem'i okuyanlar varsa anlamıştır herhalde :)
Linux: Bilgisayarını bilgi saymaktan başka işlerde kullanmak isteyenler için...
Günlük: http://www.multimeyda.com/

DeFacto

Uykusuz ezer :D Neyse verilen linklerdeki bilgiler benim işime yaradı bayağı. Yine klas bir paylaşım. Teşekkürler @erginemr teşekkürler Türkiye :)

heartsmagic

Hem @ufuk_k'a hem de @erignemr'a teşekkürler.
Hayattan çıkarı olmayanların, ölümden de çıkarı olmayacaktır.
Hayatlarıyla yanlış olanların ölümleriyle doğru olmalarına imkân var mıdır?


Böylece yalan, dünyanın düzenine dönüştürülüyor.

marjinal1st

Üstatlar bişi dicem. Ben yanlışlıkla şu komutu verdim:

sudo update-rc.d -f gdm remove

Şimdi bu GDM servisinin tekrar başlaması için ne yapmalıyım?
Bugün özgür yazılım için ne yaptın? :)

bytan

Umut en büyük kötülüktür; işkenceyi uzatır. - F.N.


Bir şey ne ise odur, bu kadar. Öyleyse, iki şey arasında bağdaşıklık varsa, bu aralarında iletişim kuruyorlar demek değildir.
"... kavrayışını bilgi ile derinleştir ..."
PF @ ST

marjinal1st

Teşekkürler, benim asıl yapmak istediğim init seviyesini 3'e düşürüp bilgisayarın masaüstüne gelmeden komut satırında kalmasıydı, fakat biraz fazla kurcalayınca fena oldu :) Şimdilik gerekli komutları Pardus üzerinden chroot ile bağlanıp verdim, birazdan denerim  :D Bide niyeyse CTRL+ALT+F6 tuşlarına basınca düzgün bir konsol açılması gerekirken ekran sapıtıyor, F7 ile tekrar normale döndürüyorum.
Bugün özgür yazılım için ne yaptın? :)

bytan

/etc/init/rc-sysinit.conf dosyasından da init değerini düzenleyebilirsin.
Umut en büyük kötülüktür; işkenceyi uzatır. - F.N.


Bir şey ne ise odur, bu kadar. Öyleyse, iki şey arasında bağdaşıklık varsa, bu aralarında iletişim kuruyorlar demek değildir.
"... kavrayışını bilgi ile derinleştir ..."
PF @ ST

erginemr

Ubuntu'da konsol için init seviyesi, standarttan farklı olarak 3 olmayabilir. Örneğin, masaüstü standartta "init 5" iken, Ubuntu'da farklı (2 olabilir).

Ubuntu'nun konsolda açılması konusunu eskiden ben de araştırmıştım. Bunun kolay bir yolu yok. İnternet'te bulduğum bir kaynakta bayağı dolambaçlı yollardan bunu başarmışlardı ama tabii, simdi o yöntem demode (geçersiz) olmuştur.

Ctrl+Alt+Fx ile ulaşılan sanal terminal ekranlarının bozuk çıkması, ekran kartınızın sürücüsü ile alakalı bir durum olabilir. Bu bir "framebuffer" sorunu da olabilir ve Grub açılış parametrelerine "vga=...." şeklinde ek bir parametre eklenerek -belki- çözülebilir:
https://wiki.ubuntu.com/FrameBuffer

hitokiri