← man/security_and_auth
kextcache — man kextcache — 80×24
ugur@toprak:~/man/security_and_auth$man kextcache
Bölüm 8 Güvenlik & Kimlik

kextcache

kext önbellek dosyaları oluşturma

Synopsis

     kextcache -prelinked-kernel filename [options] [--] [kext_or_directory ...]
     kextcache -system-prelinked-kernel [options] [--] [kext_or_directory ...]
     kextcache -system-caches [options]
     kextcache -update-volume os_volume [options]

Deprecated

kextcache yardımcı aracı kullanımdan kaldırılmıştır. Artık kullanılması gerekmemelidir. Bkz. kmutil(8)

Description

kextcache programı, kext yükleme işlemlerini hızlandıran kext önbellekleri oluşturur. Sistem önbelleklerini yeniden oluşturmak için gerektiğinde otomatik olarak çağrılır.

Dikkat: kextcache'in yanlış kullanımı, bir birimin (volume) başlatılamaz hale gelmesine neden olabilir. Yükleyiciler ve yöneticiler, sistem kext önbelleklerini güncellemek için bu programı kullanmamalıdır. Bunun yerine, işleri bittikten sonra yükleme hedef biriminin /System/Library/Extensions/ dizini üzerinde touch(1) komutunu çalıştırmalıdırlar; bu işlem mevcut önbellekleri geçersiz kılar ve sistemin gerekli tüm kext önbelleklerini güncellemesine neden olur. Bu sürecin tamamlanmasını beklemek için kextcache -update-volume kullanılabilir. macOS'in önceki sürümlerinde kext önbelleklerinin güncellenmesi hakkında bilgi için “Apple Developer Technical Q&A QA1319: Installing an I/O Kit Kext Without Rebooting” dokümanına bakın.

kextcache birkaç tür kext önbelleği oluşturur. İlki, çekirdek kodunu ve rastgele bir kext kümesi için temel dosyaları (bilgi sözlüğü ve yürütülebilir dosya) içeren ve kext yürütülebilir dosyaları çalışma zamanı konumları için bağlanmış olan önceden bağlanmış çekirdektir (ayrıca “prelinkedkernel” olarak da bilinir). Önceden bağlanmış bir çekirdek, önyükleyicinin (booter) bulması için bu birçok dosyayı tek bir yerde toplayarak ve her bir kext'in yerinde bağlanmış ve gerektiğinde başlatılmaya hazır olmasını sağlayarak sistemin erken başlangıcını hızlandırır. Önceden bağlanmış bir çekirdek oluşturmak veya güncellemek için -prelinked-kernel veya -system-prelinked-kernel seçeneğini kullanın.

Diğer kext önbellekleri, kext'lerin bilgi sözlüklerinden belirli verileri toplar. Belirli veri alt kümeleri için birçok bağımsız önbellek vardır; bunlara topluca sistem bilgi önbellekleri (system info caches) denir. Bu önbellekler, sistemin geç başlangıcı ve sonrasında kext'lerle çalışırken disk I/O işlemlerini optimize etmek için kullanılır. Kök birim için sistem kext bilgi önbelleklerini güncellemek için -system-caches seçeneğini kullanın.

Primary Options

kextcache'in herhangi bir işlem yapması için bu seçeneklerden birini belirtmelisiniz:

-c [filename], -prelinked-kernel [filename] Önceden bağlanmış bir çekirdek oluşturun. Bu seçenek son argüman olmadığı sürece filename parametresi zorunludur. Eğer bu seçenek son argümansa ve filename verilmemişse, sistem için başlangıç önceden bağlanmış çekirdeği oluşturulur. Ayrıca -all-loaded seçeneğine bakın.

-system-prelinked-kernel Bu seçenek, şimdiye kadar yüklenmiş olan /System/Library/Extensions ve /Library/Extensions dizinlerindeki tüm kext'lerle birlikte, kök birimde başlangıç için kullanılan önceden bağlanmış çekirdeği güncellemek için sağlanan bir kolaylıktır. Bu seçenek -all-loaded seçeneğini gerektirir.

-system-caches Kök birimdeki sistem kext'leri için bilgi önbelleklerini yeniden oluşturun.

-i os_volume, -invalidate os_volume Eski önbellekleri yeniden oluşturun ve os_volume ile ilişkili tüm yardımcı bölümleri (helper partitions) güncelleyin.

Bu seçenek, os_volume üzerinde sudo touch /System/Library/Extensions komutunu taklit eder. kextcache, os_volume/usr/standalone/bootcaches.plist dosyasını bulamazsa veya anlamlandıramazsa, birime hiçbir önbelleğin güncellenmesi gerekmiyormuş gibi muamele edilir ve başarı durumu döndürülür.

-u os_volume, -update-volume os_volume Eski önbellekleri yeniden oluşturun ve os_volume ile ilişkili tüm yardımcı bölümleri güncelleyin. os_volume/System/Library/Caches/com.apple.bootstamps/ dizini, yardımcı bölümlerden gelen meta verilerin önbelleği olarak kullanılır. Ayrıca -caches-only ve -force seçeneklerine bakın.

Hangi önbelleklerin yeniden oluşturulacağı, os_volume üzerinde yüklü olan macOS sürümüne bağlıdır. kextcache, os_volume/usr/standalone/bootcaches.plist dosyasını bulamazsa veya anlamlandıramazsa, birime hiçbir önbelleğin güncellenmesi gerekmiyormuş gibi muamele edilir ve başarı durumu döndürülür.

-U os_volume Herhangi bir güncelleme gerekliyse ve başarıyla yapıldıysa EX_OSFILE (72) durumuyla çıkın. -U, sistem başlangıcında, şu anda çalışan çekirdeğin yüklendiği önbelleğin eski olup olmadığını kontrol etmek için kullanılır. Sistem başlangıcı, bir EX_OSFILE çıkış kodunu, sistemin hemen daha yeni çekirdek önbelleğinden yeniden başlatılması gerektiği şeklinde yorumlar.

  • -Boot: Hangi önbelleklerin güncellenmesi gerektiğini sınırlamak gibi erken önyükleme davranışlarını etkinleştirmek için -U ile birlikte kullanılır.

-e, -system-mkext Bu seçenek geçmişe dönük uyumluluk için sağlanmıştır ve yalnızca -system-prelinked-kernel seçeneğinin bir takma adıdır.

-clear-staging Hazırlanan tüm içerikleri kaldırarak çekirdek uzantısı hazırlama (staging) alanını temizler.

-prune-staging Orijinal konumlarında artık mevcut olmayan tüm çekirdek uzantılarını kaldırarak çekirdek uzantısı hazırlama (staging) alanını budar.

Prelinked Kernel Filtering Options

Bu seçenekler, önceden bağlanmış bir çekirdeğe hangi kext'lerin dahil edileceğini sınırlandırır. -arch ve -bundle-id seçenekleri kext'leri desteklenen mimariye ve paket tanımlayıcısına göre seçer; geri kalan filtreleme seçenekleri ise kext'leri OSBundleRequired özelliklerinin değerine göre seçer. Bu seçenekler belirtilirse, önbellek yalnızca OSBundleRequired özelliği bu seçeneklerden herhangi biriyle eşleşen ya da OSBundleRequired özelliği “Root” veya “Console” olan kext'leri içerecektir.

Yerel bir diskten başlatma için tasarlanmış önceden bağlanmış bir çekirdek önbelleği -local-root seçeneğiyle oluşturulmalı, ağdan başlatma için tasarlanmış bir önbellek ise -network-root seçeneğiyle oluşturulmalıdır. Önceden bağlanmış bir çekirdek oluşturulurken, -all-loaded seçeneği belirtilirse, çekirdek tarafından talep edilen kext'ler bu filtreleme seçeneklerinden bağımsız olarak her zaman dahil edilir.

-a arch, -arch arch Önceden bağlanmış bir çekirdeğe yalnızca arch üzerinde yüklenebilir kext'leri dahil edin ve dahil etmeden önce yürütülebilir dosyaları bu mimariye göre inceltin (thinning). Birden fazla mimariye izin verilir; bu durumda, belirtilen mimarilerin her biri için gömülü bir önbellek içeren çok mimarili (multi-architecture) bir dosya oluşturulur. Hiçbir mimari belirtilmezse, mevcut macOS sürümü (Mac OS X 10.6 ve üzeri) tarafından desteklenen varsayılan bir mimari kümesi kullanılır.

-b identifier, -bundle-id identifier Bilinen kext'ler ve depo dizinleri arasında CFBundleIdentifier değeri identifier olan kext'i bulun ve önceden bağlanmış çekirdeğe dahil edin. Verilen tanımlayıcıya sahip en yüksek CFBundleVersion değerine sahip kext kullanılır; sürüm eşitliği durumunda komut satırında belirtilen en son kext kullanılır. Bu seçenek birden fazla kez belirtilebilir; bu durumda belirtilen paket tanımlayıcıları, tüm adı geçen depolardan ve kext'lerden bir alt küme seçer ve ardından bu bölümde açıklanan kalan filtreler bu alt kümeye uygulanır.

-l, -local-root Dizin argümanları için yalnızca yerel disk önyüklemesi için gerekli uzantıların önbelleğe dahil edilmesini belirtir. Adı veya tanımlayıcısı açıkça belirtilen kext'ler koşulsuz olarak dahil edilir; bu filtreyi tüm kext'lere uygulamak için -local-root-all seçeneğini kullanın.

-L, -local-root-all Bir depo dizininden olup olmadıklarına veya adı ya da tanımlayıcısıyla açıkça belirtilip belirtilmediklerine bakılmaksızın, yalnızca yerel disk önyüklemesi için gerekli uzantıların önbelleğe dahil edilmesini belirtir. Bu kısıtlamayı yalnızca depo dizinlerindeki kext'lere uygulamak için -local-root seçeneğini kullanın.

-n, -network-root Dizin argümanları için yalnızca ağ diski önyüklemesi için gerekli uzantıların önbelleğe dahil edilmesini belirtir. Adı veya tanımlayıcısı açıkça belirtilen kext'ler koşulsuz olarak dahil edilir; bu filtreyi tüm kext'lere uygulamak için -network-root-all seçeneğini kullanın.

-N, -network-root-all Bir depo dizininden olup olmadıklarına veya adı ya da tanımlayıcısıyla açıkça belirtilip belirtilmediklerine bakılmaksızın, yalnızca ağ diski önyüklemesi için gerekli uzantıların önbelleğe dahil edilmesini belirtir. Bu kısıtlamayı yalnızca depo dizinlerindeki kext'lere uygulamak için -network-root seçeneğini kullanın.

-s, -safe-boot Dizin argümanları için yalnızca güvenli modda önyükleme için gerekli uzantıların önbelleğe dahil edilmesini belirtir. Adı veya tanımlayıcısı açıkça belirtilen kext'ler koşulsuz olarak dahil edilir; bu filtreyi tüm kext'lere uygulamak için -safe-boot-all seçeneğini kullanın.

-S, -safe-boot-all Bir depo dizininden olup olmadıklarına veya adı ya da tanımlayıcısıyla açıkça belirtilip belirtilmediklerine bakılmaksızın, yalnızca güvenli modda önyükleme için gerekli uzantıların önbelleğe dahil edilmesini belirtir. Bu kısıtlamayı yalnızca depo dizinlerindeki kext'lere uygulamak için -safe-boot seçeneğini kullanın.

Other Options And Arguments

kext_or_directory Önceden bağlanmış bir çekirdeğe dahil edilmek üzere değerlendirilecek bir kext paketi veya kext içeren bir depo dizini. “Prelinked Kernel Filtering Options” başlığı altında açıklanan filtreleme seçenekleri, arşive dahil edilecek bağımsız kext'leri seçer. Hiçbir filtreleme seçeneği belirtilmezse, argüman olarak adlandırılan tüm kext'ler dahil edilir (bu muhtemelen isteyeceğiniz şey değildir).

-caches-only -update-volume ile birlikte, eski görünseler bile yardımcı bölümlerin (helper partitions) güncellenmesini atlar.

-f, -force -update-volume ile birlikte, güncel görünseler bile yardımcı bölümleri yeniden oluşturur. Eğer kextcache'in bu sürümü yardımcıları güncelleyebilmek için bootcaches.plist dosyasını yeterince anlamıyorsa, EX_OSFILE (72) durumuyla çıkar.

-Installer -update-volume ile birlikte, yardımcı bölüm güncellemelerini isteğe bağlı hale getirirken -force seçeneğini gerektirir.

  • -F: kextd(8) tarafından çatallanıp (fork) yürütüldüğündeki gibi düşük öncelikli modda çalıştırın. (Bu seçenek eskiden fiilen çatallanırdı, ancak çatallanmayı kextd(8) yönettiği için artık bunu yapmamaktadır.)

-h, -help Her bir seçenek bayrağını açıklayan bir yardım mesajı yazdırır ve komut satırındaki diğer seçeneklerden bağımsız olarak başarı sonucuyla çıkar.

-K kernel_filename, -kernel kernel_filename Önceden bağlanmış bir çekirdek dosyasının temeli olarak kullanılacak çekirdek dosyasının adı (varsayılan: /System/Library/Kernels/kernel).

-q, -quiet Sessiz mod; bilgilendirici veya hata mesajı yazdırmaz.

-r, -all-loaded Önceden bağlanmış bir çekirdek oluştururken, bu başlangıç oturumu sırasında bu komutu çalıştıran makine tarafından yüklenmiş olan /System/Library/Extensions ve /Library/Extensions dizinlerindeki tüm kext'leri dahil edin. Buna yüklenen ve daha sonra kaldırılan kext'ler de dahildir.

-compressed Önceden bağlanmış çekirdeği sıkıştırın (varsayılan olarak etkindir).

-uncompressed Önceden bağlanmış çekirdeği sıkıştırmayın. -c ile birlikte tek diğer argüman olarak belirtilirse, mevcut önceden bağlanmış bir çekirdek dosyasının sıkıştırmasını yerinde açar.

-symbols symbol_directory Önceden bağlanmış çekirdekteki her kext için semboller oluşturun ve bunları symbol_directory dizinine kaydedin. Dizin zaten mevcut olmalıdır. Sembol dosyaları, her bir kext'in CFBundleIdentifier değerine göre ve sonuna .sym uzantısı eklenerek adlandırılır.

-t, -print-diagnostics Bir kext'in doğrulama, kimlik doğrulama veya bağımlılık çözme sorunları varsa bunları yazdırın. Testlerin doğrulama (validation), kimlik doğrulama (authentication) ve bağımlılık çözme (dependency resolution) olmak üzere üç aşamada gerçekleştirildiğini unutmayın; herhangi bir aşamadaki başarısızlık, sonraki aşamalardaki testleri imkansız hale getirebilir. Bu nedenle, doğrulama hatası olan bir kext'in rapor edilmemiş kimlik doğrulama sorunları veya eksik bağımlılıkları olabilir.

-v [0-6 | 0x####], -verbose [0-6 | 0x####] Ayrıntılı mod; program çalışması hakkında bilgi yazdırır. Daha yüksek ayrıntı seviyeleri, tüm düşük seviyeleri içerir. Varsayılan olarak kextcache yalnızca uyarıları ve hataları yazdırır. 0-6 arasında bir seviye veya (kext_logging(8) içinde açıklandığı gibi) onaltılık bir günlük belirtimi belirtebilirsiniz. Ayrıntılı çıktı seviyeleri şunlardır:

0 Yalnızca hataları yazdırır (yani uyarıları gizler); ayrıca -quiet seçeneğine bakın.

1 (veya yok) Program çalışması hakkında temel bilgileri yazdırır.

2 Program ilerlemesi ve oluşturulan dosyalar hakkında temel bilgileri yazdırır.

3 Bağımsız kext'ler hakkında bilgi yazdırır; örneğin, bir arşive bir kext eklendiğinde veya arşivden çıkarıldığında.

4 Sıkıştırma ve işlenen mimariler hakkında bilgi yazdırır.

5 Dahili işlemler hakkında hata ayıklama (debug) düzeyinde bilgi yazdırır.

6 kextcache için seviye 5 ile aynıdır.

Diğer kext araçlarından farklı olarak, kextcache'deki -verbose bayrağı tüm kext'ler için geçerlidir (yani varsayılan olarak onaltılık 0x8 bitini açar). Ayrıntılı günlük kaydı hakkında daha fazla bilgi için kext_logging(8) kılavuzuna bakın.

-volume-root path Kök birim dışındaki bir birim için önbellek oluştururken, önbellek dosyasında saklanan mutlak kext yollarının başından path yolunu kaldırın. Bu, önbellekler o birimle başlangıç için kullanıldığında çekirdekte saklanan kext yollarının doğru olmasını sağlar.

-z, -no-authentication Kext'lerin kimliğini doğrulamayın. Bu seçenek önbellek dosyaları oluştururken kolaylık sağlamak içindir. Sistem tarafından kullanılabilmesi için önyüklemede kullanılan önbelleklerin uygun sahipliğe (root:wheel) ve izinlere (0644) sahip olması gerekir.

  • --: Tüm seçeneklerin sonu. Yalnızca kext veya dizin adları takip eder.

Files

/System/Library/Extensions/ Çekirdek uzantılarının standart sistem deposu.

/Library/Extensions/ Apple ürünü olmayan çekirdek uzantılarının standart deposu.

/System/Library/Caches/com.apple.kext.caches/ Bir macOS sistemi için sistem kext bilgi önbelleklerini içerir.

/System/Library/PrelinkedKernels/ Bir macOS sistemi için önceden bağlanmış çekirdeği içerir.

/System/Library/Kernels/kernel Varsayılan çekirdek dosyası.

/usr/standalone/bootcaches.plist Bir macOS birimi için belirli kext önbellek dosyalarını açıklar.

/System/Library/Caches/com.apple.bootstamps/ Kext önbellekleri hakkında zaman damgası bilgilerini içerir.

/Library/StagedExtensions/ Doğrulama ve yükleme sırasında çekirdek uzantılarının kopyalarını hazırlamak (stage) için kullanılan bir dizin.

Diagnostics

kextcache başarı durumunda sıfır durumuyla çıkar. Başarısızlık durumunda bir hata mesajı yazdırır ve sıfır olmayan bir durumla çıkar.

Bugs

Pek many tek harfli seçenek, diğer kext araçlarındaki aynı harfli seçeneklerle anlam olarak tutarsızdır (veya doğrudan çelişmektedir).

See Also

kmutil(8), kernelmanagerd(8), kext_logging(8), kextd(8), kextload(8), kextutil(8), kextstat(8), kextunload(8)

Darwin November 14, 2012 Darwin