Linux Boots

olarak çıkıyor, önyükleme işlemi için fazla bir şey yok:

1. Bir önyükleyici, diskte çekirdek görüntüsünü bulur belleğe yükler ve başlatır.
2. Çekirdek cihazları ve onun sürücüleri başlatmak.
3. çekirdek kök dosya sistemini bağlar.
4. Çekirdek Program Adında init başlar.
5. init hareket Süreçlerin kalan ayarlar.
6. önyükleme sırası parçası olarak başlar init son Süreçler giriş için izin verir.

Önyükleme sürecinin her aşamasında belirlenmesi önyükleme sorunları gidermek ve bir bütün olarak sistemin anlamada ölçülemez. CYBE açılışta kendini sınama, çalıştırmak için hangi işletim sistemi sonra bilgisayarı başlatmak sıfıra yılında önyükleyici üzerine, başlangıç ​​ekranı Hangi ya da almak isteyecek için soran yok. Bir seçim yaptıktan sonra, önyükleyici çekirdeğe sisteminin kontrolü Handing, Linux çekirdeği çalışır.

Başka bir yerde bu kitapta hangi bu makaleden alınmıştır çekirdeğin ayrıntılı bir tartışma vardır. Bu makalede yer almaktadır Çekirdek başlatma aşamasıÇekirdek sistemde donanım mevcut hakkında bir sürü mesaj yazdırır sahne. Çekirdek bu çekirdek monte yitirmiş ilan eden bir mesaj görüntüler hemen sonra init başlar kök dosya sistemi:

VFS: Atlı Kök (ext2 dosya sistemi) salt okunur.

Kısa bir süre sonra, sistem hizmeti başlatma mesajları ile TAKİP init başlangıç ​​hakkında bir mesaj görecek, ve nihayet bir giriş Bazı tür istemi olsun.

NOT üzerinde Red Hat Linux, Init notu o size "Memnuniyetle" Çünkü, özellikle açıktır "Red Hat Linux." Tüm iletiler daha sonra ekranın sağ tarafında parantez içinde başarı veya başarısızlık gösterir.

o olan önyükleme sırası bir parçası olduğundan init Bu bölümün çoğu, en kontrole sahip.
init

init hakkında özel bir şey yok. Bu sadece Linux sistemi diğerleri gibi bir program olduğunu ve diğer sistem ikililer birlikte / sbin içinde bulacaksınız. init temel amacı başlatmak ve belirli bir sırayla diğer Programları durdurmaktır. Bu dizi nasıl çalıştığını bilmek zorunda tek şey.

Orada bir BİRKAÇ farklı varyasyonlar, ama çoğu Linux dağıtımı burada tartışılan Sistem V stilini kullanır. Bazı dağıtımlar BSD init benzer basit bir sürümünü kullanın, ancak bu pek mümkün karşılaşmak zorunda.

çalışma_seviyeleri

Bir Linux sistemi üzerinde Any Given zamanda, Süreçlerinin Un belirli baz seti çalışıyor. Makinenin Bu durum ITS çalışma seviyesi olarak adlandırılan edilir ve içinden 0 bir sayı 6 ile ifade edilir. Sistem tek bir çalışma seviyesinde CYBE çoğu zaman harcıyor. aşağı makineyi kapattı Ancak, init yılında sistem hizmetleri için farklı bir çalışma seviyesine geçer düzenli moda sona erdi ve durdurmak için çekirdek anlatmak için. Yine başka bir çalışma seviyesi daha sonra tartışılacaktır tek kullanıcı modu içindir.

çalışma_seviyeleri ele almak için en kolay yolu init yapılandırma dosyasını, / etc / inittab incelemektir. GMT gibi bir satırı arayın:

id: 5: initdefault:

Bu sistem öntanımlı açılış seviyesinde hat 5 olduğu anlamına gelir. inittab dosyasındaki tüm satırlar GMT sırayla meydana gelen iki nokta üst üste ayrılmış dört alanlarla, bu formu almak:
# Benzersiz bir tanımlayıcı (kısa bir dize, bu tür önceki örnekte kimliği gibi)
# Uygulanabilir çalışma seviyesi numara (lar)
# Eylemde olmamalı init (önceki örnekte, varsayılan eylem 5 için çalışma seviyesi ayarlamak için)
# Bir komut yürütmek için (isteğe bağlı)

Komut varsayılan çalışma seviyesi ayarlama bağlamında anlam ifade etmiyor çünkü initdefault Yukarıdaki örnekte çalıştırmak için komutu yoktur. Eğer böyle bir satır görünceye kadar, inittab daha aşağı biraz zaman bak:

l5: 5: wait: 5 /etc/rc.d/rc

Bu hat rc * .d ve init.d dizinleri ile sistem yapılandırmasına ve hizmetlerin en tetikler. Sen init 5 5 /etc/rc.d/rc Aranan zaman çalışma seviyesi bir komutu çalıştırmak için ayarlanmış görebiliyor olduğunu. Bekleme eylemi anlatır ne zaman ve init komutu çalıştırır nasıl: çalıştırma rc 5 5 kez çalışma seviyesi girilmesi ve bu komut başka bir şey yapmadan önce bitirmek için bekleyin zaman.

Orada initdefault ve özellikle güç yönetimi ile ilgili, beklemek yanı sıra birçok farklı eylem vardır ve inittab (5) kılavuz sayfası onlardan ilgili tüm söyler. olanları GMT bölümlerde Açıklaması karşılaşmak zorunda Yani en olasılıkla konum.

respawn

respawn eylem takip komutu çalıştırmak üzere init neden olur ve Cilası komutu çalıştırarak eğer, tekrar çalıştırmak için. Sen inittab dosyasında bu satıra benzer bir şey görmek Muhtemel konum:

1: 2345: respawn: / sbin / mingetty tty1

Getty Programları giriş istemleri sağlayın. önceki satır, gördüğünüz bir ALT-CONTROL-ALT-F1 veya F1 bastığınızda (/ dev / tty1) ilk sanal konsol içindir. Oturumu sonra respawn eylem giriş istemi geri getirir.

ctrlaltdel

ctrlaltdel eylem bir sanal konsol üzerinde KONTROL-ALT-DELETE tuşuna bastığınızda sistem ne kontrol eder. Çoğu sistemde, bu kapatma komutunu kullanarak yeniden başlatma komutu Bazı tür.

sysinit

sysinit eylem herhangi bir runlevels Girmeden Önce, başladığında init çalıştırmak kullanmamalıydın ilk şeydir.

Nasıl çalışma seviyesinde Süreçler başlar

Bunu giriş sağlar hemen önce, şimdi init sistem hizmetleri başlar öğrenmek için hazırız. Daha önce bu inittab hattı dan hatırlayın:

l5: 5: wait: 5 /etc/rc.d/rc

Bu küçük hat diğer birçok Programlar tetikler. RC çalıştırmak komutları duruyor ve insanlar scriptler, programlar veya hizmetler gibi komutları bakın Hear olacaktır. Peki, nerede BU komutlar zaten vardır?

Çalışma seviyesi 5 için, bu örnekte, komutlar muhtemelen ya /etc/rc.d/rc5.d ya /etc/rc5.d var. Çalışma seviyesi, rc1.d 1 kullanan 2 çalışma seviyesi rc2.d böylece kullanır ve. Dizinde rc5.d GMT öğeleri bulabilirsiniz:

S10sysklogd S20ppp S99gpm
S12kerneld S25netstd_nfs S99httpd
S15netstd_init S30netstd_misc S99rmnologin
S18netbase S45pcmcia S99sshd
S20acct S89atd
S20logoutd S89cron

Komut GMT komutları çalıştırarak bu dizindeki 5 rc çalışma seviyesi Programları başlar:

S10sysklogd ev
S12kerneld ev
S15netstd_init ev
S18netbase ev
...
S99sshd ev

Her komutun başlangıç ​​argümanı dikkat edin. komut ismi S should başlangıç ​​modunda komutunu çalıştırın anlamına gelir ve dizi rc olan komutu başladığı numarası (00 99 aracılığıyla) belirler.

komutlarını .d rc * genellikle / sbin veya / usr / sbin That Başlat Programlar komut kabuk. Normalde,-komutların biri aslında az ya da çağrı cihazı başka bir program ile komut bakarak ne olduğunu anlamaya.

Bunları hizmetlerden biri eliyle başlayabilir miyim. Elle httpd Web sunucusu yazılımını başlatmak ister Örneğin, S99httpd başlangıç ​​çalıştırın. Hiç hizmetler makine açıkken, sen-can durdurma argümanı ile rc * .d dizininde komutunu çalıştırın birini öldürmek gerekiyor Benzer şekilde, (S99httpd örneğin, dur).

Bazı rc * .d dizinleri (için "öldürmek" veya durdurma modunda) komutları K ile başlayan bu CONTAIN. Bu durumda, rc YERİNE ev argümanı ile durma komutu çalıştırır. Büyük Olasılıkla Sen K kapatma sistemi çalışma_seviyeleri komutları karşılaşmak zorunda.

hizmet ekleme ve kaldırma

Sen rc * .d dizinleri hizmet, ekleme, silme veya değiştirmek için İstiyorsan, içeride dosyalara İÇİN yakından bakmak gerekir alır. Uzun bir liste böyle bir yapı ortaya koymaktadır:

lrwxrwxrwx. . . S10sysklogd -> ../init.d/sysklogd
lrwxrwxrwx. . . S12kerneld -> ../init.d/kerneld
lrwxrwxrwx. . . S15netstd_init -> .. / init.d / netstd_init
lrwxrwxrwx. . . S18netbase -> .. / init.d / netbase
...

Rc *. D dizin, aslında init.d yıl dizinindeki dosyalara simgesel bağlantılar olduğunu Genellikle / etc veya / etc / rc.d. yıl komutları Hepsi çalışma_seviyeleri için aynı başlangıç ​​komut dosyalarını kullanın böylece bu bağlantılar Linux dağıtımları İÇERİR. Bu kongre hiç bir gereksinimi anlamına gereğidir, ama genellikle biraz daha kolay organizasyon yapar.

Belirli bir çalışma seviyesinde çalışmasını init.d dizininde komutlardan birini önlemek için, UYGUN rc *. D dizinine sembolik bağ kaldırarak düşünüyorum olabilir. Bu çalışır, ANCAK Eğer bir hata yaparsanız ve hiç geri yerine link koymak için ihtiyacınız varsa, bağlantının tam adını Hatırlamak sorun olabilir. . Bu nedenle, rc * D dizinleri bağlantıları kaldırmak gerekir, ama doğrusu, bu gibi bağlantı adı Başındaki için (_) alt çizgi ekleyin:

mv S99httpd _S99httpd

O Ayrıca S veya K ile başlamıyor Çünkü önyükleme zamanda, rc _S99httpd yoksayar, orijinal adı hala açıktır ve bir tutam konum ve elle başlatmak için ihtiyacınız eğer komuta hızlı erişim var.

Bir hizmet eklemek için, init.d dizininde diğerleri gibi bir komut dosyası oluşturmak ve SONRA doğru rc *. D Rehberde bir sembolik bağlantı yapmak gerekir. Bir senaryo yazmak için en kolay yolu zaten init.d betikleri incelemek, anlamak bu tek bir kopyasını yapmak ve kopya değiştirebilirsiniz.

Bir servis eklerken, hizmeti başlatmak için önyükleme sırasını gibi O yıl UYGUN seçtiğinizden emin olun. Hizmeti çok yakında başlarsa, diğer bazı hizmet bağımlılığı nedeniyle çalışmayabilir. Zorunlu olmayan hizmetler için, bir çok sistem yöneticileri sistemi ile bu kam hizmetlerin en sonra, 90s numaraları tercih.

Genellikle Linux dağıtımları rc * hizmetleri etkinleştirmek ve devre dışı bırakmak için bir komut ile birlikte gelir. D dizinleri. Örneğin, Debian, komut update-rc.d ve Red Hat Linux, chkconfig komutunu olduğunu. Grafiksel kullanıcı arayüzleri de mevcuttur. Kullanımı Bu programlar başlatma dizinleri tutarlı tutmak HELPS ve yükseltmeleri ile HELPS.

İPUCU: En yaygın Linux yükleme sorunlarından biri hatalı yıl Yapılandırılmış sunucu XFree86 Yani üzerinde sinema ve kapalı, konsol sistemi kullanılamaz hale. Tek kullanıcı moduna Bu davranış, önyükleme durdurmak ve çalışma seviyesi veya runlevel hizmetleri değiştirmek için. Rc * yılında xdm, gdm veya kdm içerenler şey için bak. D dizinler, ya da / etc / inittab.

Init denetleme

Bazen, inittab dosyasını tekrar okumak, ya da sadece sistem kapatmaya, runlevels geçmek için bunu söylemek init küçük bir tekme vermek gerekiyor. Init her sistemde ilk işlem olduğundan, CYBE süreç kimliği hep 1 olduğunu.

Siz kereviz ile init CAN kontrolü. Eğer runlevel 3 geçmek istiyorsanız Örneğin, bu komutu kullanın:

telinit 3

Çalışma seviyeleri arasında geçiş yaparken, init herhangi Süreçleri öldürmek için çalışır Bu yeni çalışma seviyesinde inittab dosyasında aren'ta. Bu nedenle, runlevels değiştirme konusunda dikkatli olmalıdırlar.

Ekle veya Kaldır respawning işleri veya inittab dosyasına başka bir değişiklik yapmak için ihtiyacınız olduğunda, değişiklik hakkında init'in ve dosyayı yeniden okumaya neden olmalıdır. Bazı insanlar bunu yapmak için init söylemek kill-HUP 1 kullanın. Bu geleneksel yöntem, doğru yazın sürece, Unix çoğu sürümleri üzerinde çalışır. Ancak, aynı zamanda bu telinit komutu çalıştırabilir miyim:

telinit q

Bunları da tek kullanıcı moduna geçmek için telinit ler kullanabilir miyim.

Kapatma

Ayrıca init sistem kapanır nasıl kontroller ve yeniden başlatılır. Bir Linux makine kapatmaya uygun şekilde kapatma komutunu kullanmaktır.

Kapatma kullanmak için iki temel yolu vardır. Eğer sistemi durdurmak, bu makineyi kapatır ve aşağı tutar. Hemen makineyi durdurmak yapmak için bu komutu kullanın:

shutdown-h artık

Linux makul son sürümleri ile en modern makinelerde, durma makinenin gücünü keser. Bunları da makineyi yeniden olabilir. Bir yeniden başlatma için, kullanım-r yerine-h.

Kapatma işlemi birkaç saniye sürer. Bu aşamada makine kapalı sıfırlamak veya güç asla GEREKMEKTEDİR.

Yukarıdaki örnekte, şimdi kapatmaya zamanı. Bu argüman zorunludur, Fakat belirtilmesi pek çok yolu var. Eğer ileride aşağı gitmek makine istiyorsanız, bir şekilde kullanmak için + n ITS işe ÖNERİ yapmadan önce dakikada kapanma bekleme sayısı n vardır. Diğer seçenekler için, kapatma (8) kılavuz sayfasına bakmalısınız.

Sistem 10 dakika yeniden yapmak için bu komutu çalıştırın:

shutdown-r + 10

Linux'ta, kapatma makinesi aşağı gidiyor oturum herkes bildirir, Ama biraz gerçek çalışır. Şimdi Dışındaki bir zaman belirtirseniz, Aranan kapatma dosyası / etc / nologin oluşturur. Bu dosya mevcut olduğunda, sistem süper dışında kimse tarafından girişler yasaklamaktadır.

Sistem kapatma zamanı nihayet geldiğinde, kapatma yeniden başlatma için bir durma ve çalışma seviyesini 0 için runlevel'a 6 geçmek için init söyler. : Init Sen rc0.d ve rc6.d içindeki betikleri bakarak doğrulayın miyim runlevel 0 veya 6, ardından bütün gibi Alır girdiğinde

1. init İşte bu (başka bir çalışma seviyesine geçerken olarak Would) mümkün olan her süreci öldürür.

# İlk rc0.d / rc6.d komutları yerine sistem dosyaları kilitleme ve kapatma için diğer hazırlıkları yaparak çalıştırın.
Kök Daha dosya sistemlerini ayırır diğer rc0.d # sonraki rc6.d / komutları.
# Daha rc0.d / komutları remount kök dosya sistemini salt okunur rc6.d.
# Hala daha rc0.d / rc6.d komutları tüm eşitleme programı ile dosya sistemi için dışarı arabelleğe yazma.
# Son rc0.d / rc6.d komutları yeniden başlatma, durdurmak veya poweroff program ile yeniden başlatın veya durdurmak için kernele söylemek.

Reboot ve halt programları Potansiyel karışıklık Neden, her çalışma seviyesi için farklı davranır. Varsayılan olarak, Bu programlar-r veya-h seçeneği ile kapatma aramak, ANCAK sistemi durdurmak veya yeniden başlatma runlevel zaten ise, programların kendisini hemen kapatmak için kernele söylemek. Eğer gerçekten bir acele (Olası düzensiz bir kapatma herhangi bir zarar göz ardı) makinenizi kapatmaya istiyorsanız,-f seçeneğini kullanın.

Leave a Comment