"Couldn't allocate runtime area" Hatasının Çözümü

montezuma

MASTER YODA
Yönetici
19 Eki 2016
24,542
5,842
4,401
Başlıksız-1.png

Genelde Hackintosh kurulumunda gelen bu hatanın ilk olarak ne olduğunu bilmek gerekiyor. macOS sistemlerde (ve Linux'ta) KASLR ( Kernel address space layout randomization) kullanılmakta. Bunun amacı kernel çekirdeği ve diğer önemli bileşenleri sistem içinde sabit adreslerde tutmak yerine rastgele adreslere koyarak sisteme erişmeye çalışanların bu kodlara ulaşmasını engellenmesi amaçlanır.
Bunun bir sorun haline geldiği nokta ise, küçük bellek haritaları olan veya çok fazla aygıt barındıran cihazlarda bunun tanıtılması zorlaşmakta. Kısaca: Çekirdeğin çalışması için yer vardır, ancak bu yer çekirdeğin sığacağı kadar büyük değildir. Bunun içinde Slide = xxx komutu kullanarak MacOS'un her önyüklemede çalışacak rastgele bir alan seçmesine izin vermek yerine, çekirdeğin sorunsuzca sığacağı bir yer ayarlayıp sorunsuzca boot etmesini sağlayacağız.

Yukarıda da bahsettiğim üzere, bu sorunu yaşarsanız genelde önyükleme yaparken buna benzer bir hatayla karşılaşırsınız:
Kod:
Error allocating 0x1197b pages at 0x0000000017a80000 alloc type 2
Couldn't allocate runtime area
Ya da bunun gibi:
Kod:
Only 244/256 slide values are usable!
Ya da Boot esnasında macOS çöktüğünde:
Kod:
panic(cpu 6 caller 0xffffff801fc057ba): a freed zone element has been modified in zone kalloc.4096: expected 0x3f00116dbe8a46f6 but found 0x3f00116d00000000
Bu hatalar bazen rastgele gelmekte ve sistemi bir çok kez yeniden başlatıldığında geçici olarak çözülmekte.

Genel olarak bunun için AptioFix dosyaları kullanılması yeterli olabiliyor:
ANcak bunlar ile de sorunun çözülmediği zaman hata veren sayfanın start değerini bulup config içine girerekte sorun çözülebilir. Burada anlatılan metot Clover ve OpenCore kullanıcıları için de aynıdır.

Gerekenler
  • Clover kullanıcıları:
    • AptioMemoryFix ( Aptiofix'leri beraber kullanmayın. Yine aynı şekilde OsxAptioFixDrvX kullanmayın. Zira bu rehber için geçerli olan Aptiomemoryfix)
    • Clover Shell (çoğu kullanıcının EFI / CLOVER / Tools için de bu zaten bulunmakta. Genellikle shell64.efi veya bazı varyasyonlarıdır)
  • OpenCore Kullanıcıları:
    • FwRuntimeServices
    • OpenCoreShell ( Root->Misc->Tools altında bunu aktif etmeyi unutmayın)
    • Open Core- Config.plist ayarları:
      • AvoidRuntimeDefrag: UEFI runtime servislerini düzeltir. Tarih, saat, NVRAM vs.
      • DevirtualiseMmio: Stolen Memory değerini azaltır. Böylece slayt değerleri için daha fazla seçenek sunulur.
      • DisableVariableWrite: NVRAM'i nvram.plist'e yönlendirir. NVRAM desteklemeyen bAzı sistemler için bu gereklidir.
        (B360, B365, H310, H370, Q370, Z390).
        Ve C612, X79, X99, X299 gibi sistemlerde buna ihtiyaç duyar.
      • EnableSafeModeSlide: Slide'ı güven'i modda kullanmanıza olanak sağlar. BU sayede farklı sorunlar yaşadığınızda bu yine aktif olarak çalışır.
      • EnableWriteUnprotector: Ürün yazılımının kilitlediği belirli alanlara, özellikle CR0 kaydına yazmamızı sağlar.
      • ProvideCustomSlide: Herhangi bir gerçek iş yapmak için buna ihtiyaç var.
      • SetupVirtualMap: MacOS ile bellek haritanız arasında daha fazla destek ve daha az güvenli yazma olasılığı için bir katman oluşturur
      • ShrinkMemoryMap: X99 ve X299 platformları ve bazen Z390 için çok kullanışlı olan çok büyük bellek haritalarıyla ilgili sorunları giderir.

BIOS Ayarları

Yapacağımız ayarların sebebi bellek haritasını sıfırlayarak daha belirleyici olmasını sağlamak, gereksiz aygıtları kapatmak ve ön yüklemede daha az varyasyon oluşturması amaçlamak.. Bu sayede daha az sorun alınması sağlanabilir.

  • BIOS güncel olduğundan emin olun. Özellikle Z390 gibi erken üretim kartlarda bellek haritası sorunu çok sıklıkla karşılaşılmakta. BU yüzden BIOS'un güncel olması önemli.
  • Clear CMOS yapın.
  • BIOS içinde yapılması gerekli ayarlar:
    • Above4GDecoding: Bu, cihazların 4GB üzerindeki bellek bölgelerini kullanmasına izin verir, yani macOS'un sığması için daha fazla alan olacaktır, Ancak bu ayar bazı X99, X299'da sorunlu olabilir ve bu nedenl kafi ve devre dışı olarak denenmesi önerilir.
    • Boot Options -> Windows8.1/10 mode: Bu eski sistemlerin yüklenmesine engel olur. Ek bilgi. Other OS seçeneği sadece eski Windows sürümlerinin kurulmasına izin veren bir ayardır. Farklı mimariye sahip işletim sistemleri için bir ayar değildir.
  • BIOS içinde gerekmeyen aygıtları devre dışı bırakın (Bunun faydası bu, her önyüklemede haritada daha az değişiklik olacağı için önyüklemede daha az sorunla karşılaşılır).
    • CSM: Legacy desteği içindir ancak bununla gereksiz bir çok data eklenir. O yüzden bunu devre dışı bırakın.
    • Intel SGX: Software Guard Uzantıları, çok fazla yer kaplar ve macOS'ta gereksizdir.
    • Parallel Port: BU da macOS ile gerekli değil.
    • Serial Port: Buda devre dışı olsun.
    • IGPU: GErekmedikçe kullanmayın.
    • Thunderbolt: Çoğu Hackintosh üzerinde bu aygıt tanıtmak sorunlu. Eğer kullanmıyorsanız devre dışı bırakın.
    • Led Lighting: Devre dışı bırakın.
    • Legacy USB: Devre dışı bırakın.

SLIDE Değerini bulmak:

Kendimize uygun Slide değerini ayarlayabilmemiz için sistemi EFI Shell ile boot edip memmap komutunu kullanıp bütün sayfaların ve bunların boyutlarının listelendiği raporu çıkartacağız.
Bunun içinde Clover Boot Menü içinde klavyeden sağ sol tuşlarını kullanıp alttaki seçeneklerden EFI shell mode seçip boot edin. Eğer bunu seçtikten sonra sadece boş bir sayfa görürseniz aşağıda verdiğim driver'ı EFI / CLOVER / Drivers / UEFI içine koyup tekrar deneyin.
EnglishDxe.efi.zip
Şimdi EFI shell içinde memmap komutunu kullandıktan sonra size şu şekilde bir liste sunulacaktır.

Type​
Start​
End​
# Pages​
Attributes​
RT_Data​
0000000000000000​
0000000000000FFF​
0000000000000001​
800000000000000F​
Available​
0000000000001000​
0000000000057FFF​
0000000000000057​
000000000000000F​
Reserved​
0000000000058000​
0000000000058FFF​
0000000000000001​
000000000000000F​
Available​
0000000000059000​
000000000008FFFF​
0000000000000037​
000000000000000F​
RT_Code​
0000000000090000​
0000000000090FFF​
0000000000000001​
800000000000000F​
Available​
0000000000091000​
000000000009DFFF​
000000000000000D​
000000000000000F​
Reserved​
000000000009E000​
000000000009FFFF​
0000000000000002​
000000000000000F​
Available​
0000000000100000​
000000005B635FFF​
000000000005B536​
000000000000000F​
BS_Data​
000000005B636000​
000000005B675FFF​
0000000000000040​
000000000000000F​
Available​
000000005B676000​
000000006AF77FFF​
000000000000F902​
000000000000000F​
LoaderCode​
000000006AF78000​
000000006B155FFF​
00000000000001DE​
000000000000000F​
BS_Data​
000000006B156000​
000000006B523FFF​
00000000000003CE​
000000000000000F​
ACPI_NVS​
000000006B524000​
000000006B524FFF​
0000000000000001​
000000000000000F​
BS_Data​
000000006B526000​
000000006B625FFF​
0000000000000100​
000000000000000F​
Available​
000000006B626000​
000000006B634FFF​
000000000000000F​
000000000000000F​

Burada yapacağımız işlemler oldukça kolay. Bizim ilgilendiğimiz Start sütunundaki en büyük Available değerini hesap makinesi kullanarak ondalık değere dönüştürüceğiz.
Şimdi macOS Hesap Makinesi açın ve ⌘+3 ile programcı moduna alın.
Örnek olarak yukarıda en büyük değer 000000006B626000 olarak görünüyor. Bunu hesap makinesine kopyalarsak bu şekilde görünecek.
Ekran Resmi 2020-01-15 01.05.07.png

Şimdi kullanacağımız formül şu:
  • 000000006B626000 - 0x100000 =0x6B526000 / 0x200000 = 0x35A
  • Ve bunun doğru olduğunu doğrulamak için sağlamasında:
    0x100000 + (0x35A * 0x200000) = 0x6B500000
Buradaki doğrulamada döndürülen değer orijinaldeki ile aynı çıkmadığında (0x6B500000 <-> 0x6B626000), sizin final slide değerine +1 ekleme yapın. Bu şekilde gerekli değeri buluruz.
Çıkan bu sonucu daha sonra ondalık yapmak için hesap makinesinde 10 seçeceğini seçtiğinizde istediğimiz ondalık slide değerini görebilirsiniz. Bu da 858 olacak.
Ekran Resmi 2020-01-15 01.14.14.png

Ancak benim bu verdiğim örnekte slide değeri çok büyük ve Above4gdecoding içeren sektörler bu değerleri kullanamaz. Slide değeri için kullanılabilecek maksimum değer 255 olmalıdır. Bu yüzden tekrar tabloya dönmeli ve available içeren start sütünü altından diğer değerleri hesaplayıp bize en küçük değeri vereni bulmalıyız.
Bizim için bu tabloda kullanacağımız değer 0000000000100000 olur.

Formülü tekrar açıklamak gerekirse:
  • (HEX - 0x100000)/0x200000 = HEX olarak Slide değeri
  • 0x100000 + ( HEX olarak Slide değeri * 0x200000) = Orijinal Slide değeri ( Eğer sağlamada farklı çıkarsa değere +1 ekleyin)
Bundan sonra Config dosyasını açıp bu slide değerini boot argümanları içine girmek kalıyor. ( Bizim bu rehberde 0x100000 kullandığımız için bu slide=0 olacak). Eğer bu değer ile hata alınırsa yapılması gereken ikinci büyük start değeri ile yeniden Slide değeri oluşturmak gerekir.

Kimi zaman slide değeri hesaplaması yapıldığında slide değeri slide=-0.379150390625 gibi ufak bir değer çıkabilir. Bu durumda slide=0 olarak girilmesi gerekir.
Not: EFU Shell içinde memmap sonucunu text edit olarak kaydetmek isterseniz aşağıdaki komutları EFI Shell içinde sıra ile girin.
Kod:
shell> fs0: //FSO yerine uygun sürücü girin.

fs0:\> dir //bunun doğru dizin olduğunu doğrulayın.

Directory of fs0:\
01/01/01 3:30p   EFI

fs0:\> memmap > memmap.txt
 

Ekli dosyalar

Son düzenleme:
Anakart Modeli
Asus Z170 Deluxe
İşlemci Modeli
Intel i7 6700K
Grafik Kartı
8 GB Sapphire RX 580 & HD 530
Ses Kartı Modeli
ALC 1150
Ağ Aygıtları
Broadcom BCM43xx - I211 Gigabit Ethernet
Disk ve RAM
500GB NVMe & 32 GB DDR4

KaoS

USTA YODA
MODERATOR
DENEYİMLİ ÜYE
1 Eki 2017
8,090
1,950
4,351
35
Güzel rehber olmuş ellerine sağlık.
 
Laptop Modeli
Lenovo IdeaPad 300-15isk
Anakart Modeli
Asus P8H61
İşlemci Modeli
i5-2340
Grafik Kartı
RX 570VR
Ses Kartı Modeli
Realtek ALC888B
Ağ Aygıtları
Realtek RTL8169
Disk ve RAM
240 GB SSD & 1000 GB HDD & 16 GB DDR3 1600 MHz

shell32

PADAVAN
25 Kas 2018
173
18
271
30
Z390D için BIOS'tan yerleşik ekran kartı ram miktarı default olarak 64MB ayarlı. Bunu 32MB yaptığımızda sıkıntı ortadan kalkıyor. Bu anakartı kullanan arkadaşlar için bilgilendirme.
 
  • Like
Tepkiler: montezuma

cellojaan

JEDI
20 Eki 2017
258
93
251
Anakart Modeli
ASUS PRIME Z390-A
İşlemci Modeli
Intel Core i9 9900KF
Grafik Kartı
Shappire RX 5700 XT Nitro+
Ses Kartı Modeli
Realtek ALC 1220
Disk ve RAM
128 + 500 + 500 GB SSD, 16GB DDR4 3200MHz

ICEMAN

APPRENTICE
21 Mar 2020
19
2
21
BURSA
selamlar bu hatayı alıyorum bir kere acmayı basardım kurulum yaptım sonrasında acamadım
AptioMemoryFix.efi nasıl kullanırım nasıl bu fix uygulayabilirim
 

montezuma

MASTER YODA
Yönetici
19 Eki 2016
24,542
5,842
4,401
selamlar bu hatayı alıyorum bir kere acmayı basardım kurulum yaptım sonrasında acamadım
AptioMemoryFix.efi nasıl kullanırım nasıl bu fix uygulayabilirim
Rehberde anlatıyorum. Drivers içindeki mevcut olanı kaldırıp farklı Aptiofix versiyonlarını koyup deneme yapacaksın. Bunlarla olmaz ise rehberin kalanı zaten adım adım rehber.
 
Anakart Modeli
Asus Z170 Deluxe
İşlemci Modeli
Intel i7 6700K
Grafik Kartı
8 GB Sapphire RX 580 & HD 530
Ses Kartı Modeli
ALC 1150
Ağ Aygıtları
Broadcom BCM43xx - I211 Gigabit Ethernet
Disk ve RAM
500GB NVMe & 32 GB DDR4

cellojaan

JEDI
20 Eki 2017
258
93
251
Valla ben ne yaptıysam çözemedim. Paso reset atıyorum 😁😁
 
Anakart Modeli
ASUS PRIME Z390-A
İşlemci Modeli
Intel Core i9 9900KF
Grafik Kartı
Shappire RX 5700 XT Nitro+
Ses Kartı Modeli
Realtek ALC 1220
Disk ve RAM
128 + 500 + 500 GB SSD, 16GB DDR4 3200MHz

KaoS

USTA YODA
MODERATOR
DENEYİMLİ ÜYE
1 Eki 2017
8,090
1,950
4,351
35
Kurulum aşamasında mı alıyorsun bu hatayı ve kullandığın sistem intel olan mı yoksa AMD sistemlerde mi ?
 
Laptop Modeli
Lenovo IdeaPad 300-15isk
Anakart Modeli
Asus P8H61
İşlemci Modeli
i5-2340
Grafik Kartı
RX 570VR
Ses Kartı Modeli
Realtek ALC888B
Ağ Aygıtları
Realtek RTL8169
Disk ve RAM
240 GB SSD & 1000 GB HDD & 16 GB DDR3 1600 MHz
AD Engelleyici Tespit Edildi

Anlıyoruz, reklamlar can sıkıcı!

Elbette, reklam engelleme yazılımı reklamları engelleme konusunda harika bir iş çıkarsa da, web sitemizin faydalı özelliklerini de engeller. En iyi site deneyimi ve bize destek olmak için lütfen AdBlocker’ınızı devre dışı bırakın.

AD Reklam Engelleyiciyi Devre Dışı Bıraktım    Hayır teşekkürler