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

kmutil

kmutil — macOS komut satırı aracı.

Synopsis

       kmutil <subcommand>
       kmutil <load|unload|showloaded>
       kmutil <find|libraries|print-diagnostics>
       kmutil <create|inspect|check|log|dumpstate>
       kmutil <clear-staging|trigger-panic-medic>
       kmutil -h

Description

kmutil, disk üzerindeki çekirdek uzantılarını (kexts) ve kext koleksiyonlarını yönetmek için çok amaçlı bir araçtır. Bir alt komut ve bazıları birden fazla komut için ortak olan bir dizi seçenek alır.

kmutil, kext'leri yüklemek, kaldırmak ve teşhis etmek için KernelManagement alt sistemiyle etkileşime girer. Ayrıca bir kext koleksiyonunun içeriğini incelemek, yükleme bilgilerini sorgulamak için çekirdekle etkileşime girmek, diskte kext'leri ve kext bağımlılıklarını bulmak, yeni kext koleksiyonları oluşturmak ve diğer teşhis bilgilerini görüntülemek için de kullanılabilir.

Collections

macOS 11'den başlayarak, çekirdek uzantıları disk üzerinde 3 farklı yapıda (artifact) bulunur. Her bir yapı önyükleme (boot) sırasında tam olarak bir kez yüklenir ve bir kext'in kullanılabilmesi için bu üç yapıdan birine bağlanmış olması gerekir.

• Boot kext koleksiyonu (boot kext collection), işletim sistemini başlatmak ve hazırlamak (bootstrap) için gerekli olan çekirdeği ve tüm sistem kext'lerini içerir. /System/Library/KernelCollections konumunda değiştirilemez (immutable) bir yapıdır. Apple Silicon Mac'lerde bu yapı yalnızca Preboot bölümünde tutulur.

• System kext koleksiyonu (system kext collection), kullanılırsa, işletim sistemi tarafından ihtiyaç duyulan diğer tüm sistem kext'lerini içerir ve önyüklemeden sonra yüklenir. Boot kext koleksiyonuna önceden bağlanmıştır (prelinked) ve aynı zamanda /System/Library/KernelCollections konumunda değiştirilemez bir yapıdır. Apple Silicon Mac'lerde sistem kext koleksiyonunun bulunmadığını unutmayın.

• Auxiliary kext koleksiyonu (auxiliary kext collection), oluşturulursa, /Library/Extensions konumuna yerleştirilen kext'leri ve sistemde yüklü diğer tüm üçüncü taraf kext'lerini içerir. kernelmanagerd(8) tarafından dinamik olarak oluşturulur ve boot kext koleksiyonuna ve eğer varsa system kext koleksiyonuna önceden bağlanır. Apple Silicon Mac'lerde auxiliary kext koleksiyonu Preboot bölümünde yer alır. Üçüncü taraf kext'lerinin auxiliary kext koleksiyonuna yüklenmesi hakkında daha fazla bilgi için INSTALLING bölümüne bakın.

Installing

macOS 11 itibarıyla bir kext, yalnızca kernelmanagerd(8) tarafından auxiliary kext koleksiyonuna dahil edilip oluşturulduktan ve sistem yeniden başlatıldıktan sonra yüklenebilir hale gelir. Önyükleme sırasında, kernelmanagerd(8) bu koleksiyonu çekirdeğe yükleyerek koleksiyondaki tüm kext'lerin eşleşmesine ve yüklenmesine olanak tanır. Eğer kmutil load, kextload(8) veya herhangi bir KextManager işlevi çağrısı henüz yüklenebilir olmayan bir kext'i yüklemeye çalışırsa, kernelmanagerd(8) kext'i korumalı bir konuma hazırlar (stage), doğrular ve kullanıcıdan auxiliary kext koleksiyonunun yeniden oluşturulmasını onaylamasını ister. Doğrulama ve yeniden oluşturma başarılı olursa, kext bir sonraki önyüklemede kullanılabilir olacaktır.

Commands

Komutlar ve bunlara özgü seçenekler aşağıda listelenmiştir. Çoğu komut için ortak olan diğer seçenekler için OPTIONS bölümüne bakın.

• create: Sağlanan seçeneklere göre yeni bir kext koleksiyonu oluşturur. Bu komut yalnızca özel çekirdekleri araştıran veya boot kext koleksiyonunun ya da system kext koleksiyonunun içeriğini değiştiren geliştiriciler tarafından kullanılmalıdır. macOS 13.0 itibarıyla, yeni bir boot veya system kext koleksiyonu oluşturmak için bir KDK gereklidir. Halihazırda bir koleksiyonda bulunan kext'leri yüklemek veya kaldırmak için load ve unload alt komutlarına bakın.

-n, --new <boot|sys|aux> Bir seferde bir veya daha fazla koleksiyon oluşturmak için boot, sys veya aux seçeneklerinden birini veya birkaçını belirtin.

-L, --no-system-collection Bir auxiliary koleksiyon oluştururken, system kext koleksiyonunu aramayın veya oluşturmayın.

-s, --strip Bir kext bir koleksiyon içinde oluşturulduktan sonra sembol bilgilerini ayıklamak için none, all veya allkexts (varsayılan: none) değerlerinden birini belirtin.

-k, --kernel Boot kext koleksiyonunu oluştururken çekirdeğin yolunu belirtin. Eğer -V belirtilirse, kmutil varyant uzantısını sonuna ekleyecektir.

-x, --explicit-only Yalnızca açıkça belirtilen paket kimliklerini (bundle identifiers) ve yollarını, bağımlılıklarıyla birlikte dikkate alın.

--compress Sonuçları LZFSE algoritmasını kullanarak sıkıştırın.

--img4-encode Koleksiyonu bir img4 veri yükü (payload) olarak kodlayın.

• inspect: Sağlanan seçeneklere göre bir kext koleksiyonunun içeriğini inceleyerek görüntüler.

--show-mach-header Koleksiyondaki (koleksiyonlardaki) mach başlığını (başlıklarını) yazdırın. İç dosya kümesi (fileset) girdilerinin içeriğini de görüntülemek için --verbose ile birlikte kullanın.

--show-fileset-entries Yalnızca dosya kümesi alt girdilerinde bulunan mach başlığı bilgilerini yazdırın. Bu, koleksiyondaki bir kext hakkında ön yükleme adreslerini (prelink addresses) ve diğer yükleme bilgilerini belirlemek için yararlıdır.

--show-kext-load-addresses Varsayılan çıktı görüntülenirken, kext'lerin yükleme adreslerini satır içi olarak dahil edin.

--show-kext-uuids Çıktıya her bir kext'in UUID'sini dahil edin.

--show-kernel-uuid Koleksiyonda mevcutsa çekirdeğin UUID'sini (ve sürümünü) yazdırın. Belirtilen koleksiyonda (koleksiyonlarda) bir çekirdek bulunamazsa bu seçenek hiçbir şey çıktılamaz.

--show-kernel-uuid-only Koleksiyonda mevcutsa çekirdeğin UUID'sini yazdırın ve varsayılan kext bilgilerini gizleyin.

--show-prelink-info Koleksiyonun (koleksiyonların) ham __PRELINK_INFO segmentini dökün.

--show-collection-metadata Koleksiyonun (koleksiyonların) ön yükleme UUID'leri (prelink uuids), bağlandıkları koleksiyonların UUID'leri ve koleksiyonu üreten yapım sürümü (build version) gibi meta verilerini yazdırın.

--show-mach-boot-properties Koleksiyonun (koleksiyonların) türetilmiş Mach-O önyükleme özelliklerini yazdırın.

--json Bölüm düzenini JSON olarak çıktılayın.

• load: -b veya -p ile belirtilen uzantıyı (uzantıları) yükler. Uzantı henüz auxiliary kext koleksiyonunda değilse, bir sonraki yeniden başlatmada kullanılmak üzere koleksiyon kernelmanagerd(8) tarafından dinamik olarak yeniden oluşturulacaktır. Daha fazla bilgi için INSTALLING bölümüne bakın. Halihazırda boot, system veya auxiliary kext koleksiyonunda bulunan kext'ler için load alt komutu, kext henüz başlatılmamışsa kext'i başlatacaktır.

Çoğu kext için load alt komutu süper kullanıcı (root) olarak çalıştırılmalıdır. /System/ altında yüklü olan ve OSBundleAllowUserLoad özelliği true olarak ayarlanmış kext'ler, root olmayan kullanıcılar tarafından load alt komutu aracılığıyla yüklenebilir.

macOS 10.6, Apple geliştirici belgelerinde açıklanan, kext yüklemek için KextManagerLoadKextWithIdentifier() ve KextManagerLoadKextWithURL() C işlevlerini tanıtmıştır. Bu işlevler macOS 11 itibarıyla desteklenmeye devam etmektedir.

-P, --personality-name Bu kext halihazırda yüklüyse, belirtilen kimliği (personality) kataloğa gönderin.

-e, --no-default-repositories Kext'ler için varsayılan depoları kullanmayın. Bu seçeneği kullanırsanız, yüklenen veya üzerinde çalışılan kext'in tüm bağımlılıklarını açıkça belirtmeniz ya da --repository seçeneğini kullanmanız gerekir.

--load-style Uzantıyı yükleme isteğinin yükleme stilini kontrol edin. Geçerli seçenekler:

• start-and-match: Çekirdek uzantısını başlatın ve ayrıca eşlik eden tüm kimliklerle (personalities) eşleştirmeye başlayın. (varsayılan)

• start-only: Belirtilen çekirdek uzantılarını başlatın ancak bu uzantılar tarafından sağlanan kimliklerle (personalities) eşleştirmeye başlamayın (onlar için eşleştirme zaten başlatılmadıysa).

• match-only: Verilen çekirdek uzantılarından hiçbirini açıkça başlatmayın, ancak onlar tarafından sağlanan IOKit kimlikleriyle (personalities) eşleştirmeye başlayın. Bu, daha önce start-only ile yüklenmiş olan uzantıların artık eşleşmeye başlamasını sağlamak için yararlıdır.

• unload: -b veya -p ile belirtilen uzantıyı (uzantıları) kaldırır (unload). Uzantı daha önce bir kext koleksiyonuna bağlanmış ve KernelManagement sistemi tarafından yüklenmiş olmalıdır. Unload alt komutuna yapılan başarılı bir çağrı kext'in stop işlevini çağıracak ve kext'in IOKit yaşam döngüsünü sonlandıracaktır, ancak kext yüklendiği kext koleksiyonunun bir parçası olarak çekirdek belleğinde kalmaya devam eder. Uzantı, auxiliary kext koleksiyonu da dahil olmak üzere hiçbir koleksiyondan kaldırılmayacaktır ve yeniden başlatma gerektirmeden yüklenmeye hazır olmaya devam edecektir.

Yüklü başka bir kext'in kaldırılmakta olan kext'e bağımlılığı varsa, kaldırma işlemi başarısız olur. showloaded alt komutunu kullanarak bir kext'in bağımlıları olup olmadığını belirleyebilirsiniz.

-c, --class-name IOService sınıfının tüm örneklerini sonlandırın, ancak kext'ini veya kimliklerini (personalities) kaldırmayın.

-P, --personalities-only Yalnızca hizmetleri sonlandırın ve kimlikleri (personalities) kaldırın; kext'leri kaldırmayın.

• libraries: Belirtilen kext'leri bağlamak (link) için gereken sembolleri tanımlayan boot kext koleksiyonundaki ve system kext koleksiyonundaki (varsa) kitaplık kext'lerini arayarak bunların paket kimliklerini ve sürümlerini yazdırır. Bulunamayan sembollerle ilgili bilgiler, her mimari için kitaplık kext bilgilerinden sonra yazdırılır.

libraries alt komutunun kullanışlı bir yolu, onu yalnızca --xml bayrağıyla çalıştırmak ve çıktıyı pbcopy(1) komutuna yönlendirmektir. Çıkış durumu sıfırsa (tanımlanmamış veya birden fazla tanımlanmış sembol olmadığını gösterir), kext'inizin Info.plist dosyasını bir metin düzenleyicide açabilir ve kitaplık bildirimlerini OSBundleLibraries özelliğinin üzerine yapıştırabilirsiniz.

Diğer koleksiyonlardaki bağımlılıkları da aramak için libraries alt komutuyla başka koleksiyonlar da belirtebilirsiniz.

--all-symbols Bulunan, bulunamayan veya birden fazla kez bulunan tüm sembolleri listeleyin.

--onedef-symbols Bulunan tüm sembolleri, bulundukları kitaplık kext'i ile birlikte listeleyin.

--multdef-symbols Birden fazla kez bulunan tüm sembolleri, kitaplık kext'leri ile birlikte listeleyin.

--undef-symbols Hiçbir kitaplıkta bulunamayan tüm sembolleri listeleyin.

--unsupported Semboller için desteklenmeyen kext'lerde arama yapın.

-c, --compatible-versions Mevcut sürümler yerine kitaplık kext uyumlu sürümlerini kullanın.

--xml Yapıştırmaya uygun XML parçası yazdırın.

• showloaded: Sistemde yüklü çekirdek uzantılarının durumunu/bilgilerini sağlanan seçeneklere göre görüntüler. Varsayılan olarak, her kext için aşağıdakiler gösterilir:

Index kext'in yükleme dizini (bağlantı referanslarını izlemek için kullanılır). Listedeki boşluklar, kaldırılmış kext'leri gösterir.

Refs Bu kext'e diğer kext'ler tarafından yapılan referans sayısı. Sıfır değilse, kext kaldırılamaz.

Address kext'in çekirdek alanında yüklendiği adres.

Size kext'in kapladığı çekirdek belleğinin bayt sayısı. Bu sıfırsa, kext, kext'ler arasındaki bağımlılıkları çözmek için bir kext olarak girdisi olan çekirdeğin yerleşik bir parçasıdır.

Wired kext'in kapladığı kilitli (wired) çekirdek belleğinin bayt sayısı.

Architecture kext'in mimarisi, yalnızca --arch-info seçeneği kullanılıyorsa görüntülenir.

Name kext'in CFBundleIdentifier değeri.

Version kext'in CFBundleVersion değeri.

Bu kext'in referans verdiği diğer tüm kext'lerin dizin numaraları.

showloaded komutu için aşağıdaki seçenekler mevcuttur:

--show-mach-headers Yüklü uzantıların ve/veya --show-kernel belirtilmişse çekirdeğin mach başlıklarını gösterin.

--show <loaded|unloaded|all> Çıktıyı belirli bir yükleme durumuyla sınırlandırın.

--collection <boot|sys|aux|codeless> Yükleme bilgisini belirli bir türle sınırlandırın. Belirtilmemişse varsayılan olarak kodsuz (non-codeless) olmayan tüm kext'leri gösterir. Çekirdeğin bildiği kodsuz kext'ler ve dext'ler hakkındaki bilgileri görüntülemek için --collection codeless --show all kullanın.

--sort Çıktıyı dizine göre değil, her uzantının yükleme adresine göre sıralayın.

--list-only İlk satırdaki başlığı atlayarak yalnızca uzantı listesini yazdırın.

--arch-info Çıktıya mimari bilgisini dahil edin.

--no-kernel-components Çıktıda çekirdek bileşenlerini göstermeyin.

--show-kernel Çıktıda çekirdek hakkındaki yükleme bilgilerini gösterin. Çekirdek mach başlığını görüntülemek için --show-mach-headers ile birlikte kullanın.

• dumpstate: kernelmanagerd(8)'nin durumu hakkında teşhis bilgilerini görüntüler.

• find: Filtre kriterleriyle eşleşen kext'lerin (veya koleksiyonlardaki kext'lerin) yollarını bulur ve yazdırır. Filtreleme hakkında daha fazla bilgi için FILTERING OPTIONS bölümüne bakın. Aramalar, kmutil'in diğer yerlerinde kullanılan kext yönetim mantığıyla gerçekleştirilir; buna göre yalnızca repository veya bundle seçenekleriyle belirtilen kext'ler uygundur; bu özellikle kapsamlı, özyinelemeli (recursive) bir dosya sistemi araması değildir.

• check: Sistemdeki yükleme bilgilerinin ve/veya kext koleksiyonlarının tutarlı olduğunu kontrol eder.

--collection-linkage Sistemdeki her bir koleksiyonun ön yükleme bilgisi (prelink info) bölümündeki UUID meta verilerini inceleyerek, sistemdeki koleksiyonların birbirine düzgün şekilde bağlanıp bağlanmadığını kontrol edin.

--load-info Çekirdekteki yükleme bilgilerinin diskteki koleksiyonları düzgün bir şekilde yansıtıp yansıtmadığını kontrol edin. Başka bir seçenek belirtilmezse bu varsayılan eylemdir.

--kernel-only Yükleme bilgilerini kontrol ediyorsanız, diğer kext'leri değil, yalnızca çekirdeğin eşleştiğini kontrol edin.

--collection <boot|sys|aux>: Tutarlılık kontrolünü belirtilen koleksiyon türlerinden biri (veya daha fazlası) ile sınırlandırın. Belirtilmemişse varsayılan olarak tümünü kontrol edin.

• log: Çekirdek uzantısı yönetim alt sistemi hakkındaki günlük (logging) bilgilerini görüntüler. Bu, yalnızca kernelmanagerd ve kmutil günlüklerini göstermek için önceden tanımlanmış bir yüklem (predicate) içeren sistem log(1) komutunun bir sarmalayıcısıdır.

• print-diagnostics: Bir veya daha fazla kext üzerinde tüm olası testleri gerçekleştirir ve kext'in bir koleksiyona başarıyla dahil edilip edilemeyeceğini belirtir. Kext ile ilgili sorunlar bulunursa, sorunu yalıtmaya ve çözmeye yardımcı olabilecek teşhis bilgileri rapor edilir. Bazı testlerin root yetkisi gerektirdiğini unutmayın. Özel koleksiyonların, varyantların ve mimarilerin GENERIC ve COLLECTION kmutil seçenekleriyle belirtilebileceğini unutmayın.

-p, --bundle-path Bu yolda belirtilen paket için teşhis bilgilerini yazdırın (birden fazla kez belirtilebilir).

-Z --no-resolve-dependencies kext bağımlılıklarını çözmeyin.

-D --diagnose-dependencies -p ile belirtilen her bir kext'in tüm kext bağımlılıklarını özyinelemeli olarak teşhis edin. -Z mevcut olduğunda yoksayılır.

--plugins -p ile belirtilen kext'lerin PlugIns dizininde bulunan her bir kext'i teşhis edin.

--do-staging SIP korumalı konumuna kext hazırlama (staging) işlemini gerçekleştirin. Bu test root ayrıcalıkları gerektirir.

• clear-staging: kernelmanagerd(8) ve kmutil(8) tarafından yönetilen hazırlama (staging) dizinini temizler.

• migrate: Bir yazılım güncellemesi sırasında kullanılan sistem alt komutudur.

• install: Boot ve System kext koleksiyonlarını güncellemek için kullanılan sistem alt komutudur.

• rebuild: Bir Yardımcı (Auxiliary) kext koleksiyonunun yeniden oluşturulmasını denemek için kullanılan sistem alt komutudur. Bu komut, geçerli Auxiliary kext koleksiyonunu değişiklikler açısından değerlendirir; bu değişiklikler yeni onaylanmış üçüncü taraf kext'leri ekleyebilir ve daha önce yüklenmiş olan ve o zamandan beri silinmiş veya yüklü oldukları konumdan taşınmış kext'leri kaldırabilir.

Bir kext'i Auxiliary kext koleksiyonundan kaldırmak (uninstall) için:

  1. Kaldırılacak kext paketini (paketlerini) yüklü oldukları konumdan silin veya taşıyın.

  2. Terminal'den “kmutil rebuild” komutunu çalıştırın ve Auxiliary kext koleksiyonu değişikliklerini onaylayın.

  3. Auxiliary kext koleksiyonunun yeniden oluşturulmasını yetkilendirin.

  4. Değişikliklerin geçerli olması için sistemi yeniden başlatın.

Recovery Commands

Aşağıdaki komutlar yalnızca Kurtarma Modunda çalıştırılabilir.

• trigger-panic-medic: Auxiliary kext koleksiyonunu kaldırır ve bir sonraki önyüklemede tüm kext onaylarını kaldırır. Bu alt komut yalnızca Kurtarma Modunda kullanılabilir. Bu komut, sistemi çekirdek paniğine (kernel panic) neden olan bir kext'ten kurtarmak için kullanılabilir. trigger-panic-medic çağrıldıktan sonra, daha önce yüklenmiş olan tüm kext'ler yüklendiklerinde veya kurulduklarında kullanıcıdan bunları yeniden onaylamasını isteyecektir.

• configure-boot: Özel bir önyükleme nesnesi ilkesi yapılandırır. Bu komut, sistemin önyükleme yapacağı özel bir mach-o dosyasını yüklemek için kullanılabilir. Özel önyükleme nesnelerini yüklemek için öncelikle Kurtarma Modunda Startup Security Utility kullanarak Düşük Güvenlik (Reduced Security) moduna geçmeniz gerekir. Özel bir önyükleme nesnesi ayarlamak, sistem güvenliğini daha da düşürerek İzin Verici Güvenlik (Permissive Security) seviyesine indirecektir ve bu eylemi onaylamanız istenecektir.

-c, --custom-boot-object Önyükleyicinin (booter) yükleyeceği ve başlatacağı Mach-O. Dosya isteğe bağlı olarak sıkıştırılabilir ve bir img4 içine sarılabilir.

-C, --compress Özel önyükleme nesnesini sıkıştırın

-v, --volume Belirtilen birim için özel önyükleme nesnesini kurun

--raw Özel önyükleme nesnesine kurulacak ham bir dosya olarak muamele edin. Nesne, –lowest-virtual-address ve –entry-point parametrelerinden türetilen özel Mach-O önyükleme özellikleriyle kurulacaktır.

--lowest-virtual-address Ham önyükleme nesnesinin en düşük sanal bellek adresi. (iBoot ham önyükleme nesnesini bu sanal adreste eşleyecektir)

--entry-point Ham önyükleme nesnesine giriş noktasının sanal bellek adresi

Options

GLOBAL OPTIONS Aşağıdaki seçenekler çoğu kmutil alt komutu için geneldir.

-a, --arch Belirtilen uzantılar veya koleksiyonlar için kullanılacak mimariyi belirtin. Varsayılan olarak mevcut çalışan mimariyi kullanır.

-V, --variant-suffix Sürüm varsayılanları yerine tercih edilecek uzantıların veya koleksiyonların bir varyantını (yani development, debug veya kasan) belirtin.

-z, --no-authentication Bir eylem gerçekleştirirken uzantıların hazırlanmasını (staging) ve doğrulanmasını devre dışı bırakın.

-v, --verbose Ayrıntılı çıktıyı etkinleştirin.

-r, --repository Uzantıları içeren dizinlerin yolları. Eğer -R belirtilirse, birim kökü otomatik olarak başına eklenecektir.

-R, --volume-root Üzerinde çalışılacak hedef birimi belirtin. Varsayılan olarak / değerini alır.

FILTERING OPTIONS Aşağıdaki seçenekler, girdilerini veya çıktılarını filtrelemek için belirli kmutil komutlarında kullanılabilir.

-p, --bundle-path Bu yolda belirtilen paketi sonuçlara dahil edin. Bulunamazsa bir hata döndürün.

-b, --bundle-identifier Sonuçlarda bu tanımlayıcıyı arayın ve/veya dahil edin. Bulunamazsa bir hata döndürün.

--optional-identifier Mümkünse sonuçlarda bu tanımlayıcıyı arayın ve/veya dahil edin.

--elide-identifier Bu tanımlayıcıyı sonuçlara dahil etmeyin.

-f, --filter Girdi veya çıktıya dahil edilecek bir uzantının özellikleriyle eşleşmesi gereken, yüklem (predicate) sözdiziminde bir filtre belirtin. Bu argüman, uzantıları belirtmek ve dahil etmek için kullanılan diğer argümanlar tarafından geçersiz kılınabilir.

-F, --filter-all Girdi veya çıktıya dahil edilecek bir uzantının özellikleriyle eşleşmesi gereken, yüklem (predicate) sözdiziminde bir filtre belirtin. Bu argüman, uzantıları belirtmek ve dahil etmek için kullanılan diğer argümanlar tarafından geçersiz kılınamaz.

–kdk Yeni bir boot veya sys kext koleksiyonu oluştururken kext'leri keşfetmek için kullanılacak KDK yolu.

–build Dikkatli kullanın. Bu seçenek, kext'leri keşfederken ve kext koleksiyonları oluştururken kullanılacak yapım sürüm numarasını belirtir. Hiçbir yapım sürümü belirtilmezse, mevcut sistem yapım sürüm numarası kullanılır.

Yüklem (predicate) filtre sözdizimi hakkında daha fazla bilgi için Apple geliştirici belgelerinde bulunan yüklem programlama kılavuzuna bakın.

COLLECTION OPTIONS Aşağıdaki seçenekler, kext koleksiyonlarını işlemek için yolları ve seçenekleri belirtmek amacıyla kullanılabilir. Belirtilmemişse, koleksiyon yolları varsayılan olarak sistem kext koleksiyonlarının varsayılan yollarına ayarlanacaktır.

-B, --boot-path Boot kext koleksiyonunun yolu.

-S, --system-path System kext koleksiyonunun yolu.

-A, --aux-path Auxiliary kext koleksiyonunun yolu.

-M, --allow-missing-collections Varsa, bir koleksiyon eksik olduğunda sorunsuz bir şekilde kurtarın.

Examples

       Sistem kext koleksiyonlarının içeriğini inceleyin:

	      $ kmutil inspect -v --show-mach-header -B /System/Library/KernelCollections/BootKernelExtensions.kc
	      $ kmutil inspect --show-fileset-entries --bundle-identifier com.apple.kernel

       Kext'leri yükleyin ve kaldırın:

	      $ kmutil load -b com.apple.filesystems.apfs
	      $ kmutil load -p /Library/Extensions/foo.kext
	      $ kmutil unload -p /System/Library/Extensions/apfs.kext

       Kext'ler hakkında yükleme bilgilerini gösterin:

	      $ kmutil showloaded --show-mach-headers --bundle-identifier com.example.foo
	      $ kmutil showloaded --show-kernel --collection boot
	      $ kmutil showloaded --show unloaded --filter "'CFBundleVersion' == '15.2.13'"

       Kext'lerin bağımlılıklarını bulun:

	      $ kmutil libraries -p /Library/Extensions/foo.kext --xml | pbcopy

       Özel kext koleksiyonları oluşturun:

	      $ kmutil -n boot -B myboot.kc -k mykernel --elide-identifier com.apple.filesystems.apfs

	      $ kmutil -n boot sys -B myboot.kc -S mysys.kc -V debug

	      $ kmutil -n boot -B myboot.kc -k mykernel
	      $ kmutil -n sys -B myboot.kc -S mysys.kc -F "'OSBundleRequired' == 'Safe Boot'" -s stripkexts

	      $ kmutil -n aux -r /Library/Extensions -L

Diagnostics

kmutil başarı durumunda sıfır durumuyla çıkar. Hata durumunda kmutil bir hata mesajı yazdırır ve ardından sıfır olmayan bir durumla çıkar.

Bilinen çıkış kodları:

• 3 : kext kaldırılmaya çalışılırken eksik olduğu için kmutil başarısız oldu.

• 27 : Kullanıcı onayı gerektiği için kmutil başarısız oldu.

• 28 : Yeniden başlatma gerektiği için kmutil başarısız oldu.

Completions

Sık kullananlar için, kmutil şu komutu çalıştırarak bir kabuk tamamlama (shell completion) betiği oluşturabilir:

$ kmutil --generate-completion-script

Bu seçenek zsh(1), bash(1) ve fish kabuklarını destekler. Herhangi bir kabuk belirtilmezse, o anda çalışan kabuk için bir tamamlama betiği oluşturulacaktır.

SEE ALSO kernelmanagerd(8)

2025-02-12 KMUTIL(8)