Apple'ın sanal bellek takas alanlarını bugüne kadar sabit diskimdeki özel bir bölüme taşıyabiliyorum. Kullandığım teknik forums.macosxhints.com adresindeki bir konu başlığında açıklanmıştır.
Ancak, Snow Leopard'ın geliştirici önizlemesiyle, bu yöntem artık çalışmaz. Yeni işletim sistemiyle nasıl yapılabileceğini bilen var mı?
Güncelleme: Mükemmel, ayrıntılı talimatlar verdiği ve sonuçta beni önerdiği için doğru yönde işaret ettiği için dblu'nun cevabını pek işe yaramadı bile kabul edildi olarak işaretledim plutil
. Tamamlanmış, çalışma çözümü burada soruna yollanıyor çünkü kabul edilen cevabı düzenlemek için yeterli itibarım yok.
Güncelleme # 2: ekl tekniğini gösterme prosedürünü değiştirdi; bu, bir ara kabuk betiğine olan ihtiyacı ortadan kaldırarak her şeyi büyük ölçüde basitleştiriyor:
Tam çözüm:
1.
Terminal'i açın ve Apple'ın varsayılan dynamic_pager.plist dosyasının bir yedek kopyasını alın:
$ cd /System/Library/LaunchDaemons
$ sudo cp com.apple.dynamic_pager.plist{,_bak}
2.
Plist'i ikiliden düz XML'e dönüştürün:
$ sudo plutil -convert xml1 com.apple.dynamic_pager.plist
3.
Dönüştürülmüş düzeneği seçtiğiniz metin editörünüzle açın. ( pico
Kullanıyorum, dblu'nun cevabını kullanarak bir örnek için bakınız vim
):
$ sudo pico -w com.apple.dynamic_pager.plist
Aşağıdaki gibi görünmeli:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs$
<plist version="1.0">
<dict>
<key>EnableTransactions</key>
<true/>
<key>HopefullyExitsLast</key>
<true/>
<key>Label</key>
<string>com.apple.dynamic_pager</string>
<key>OnDemand</key>
<false/>
<key>ProgramArguments</key>
<array>
<string>/sbin/dynamic_pager</string>
<string>-F</string>
<string>/private/var/vm/swapfile</string>
</array>
</dict>
</plist>
4.
Dynamic_pager'ı başlatmadan önce wait4path kabuk komutunu ( ZILjr tarafından önerildiği şekilde ) kullanmak için ProgramArguments dizisini (satır 13 - 18) değiştirin . Bunun neden gerekli olduğuna ilişkin detaylar için not 1'e bakınız. Aşağıdaki örnekte bölümüme 'Takas Et' adı verildi ve takas dosyalarını o bölümdeki gizli bir dizine koymayı seçtim, '.vm' adlı, belirttiğiniz dizinin gerçekten olduğundan emin olun . XML aşağıdaki gibi görünmelidir:
<key>ProgramArguments</key>
<array>
<string>/bin/bash</string>
<string>-c</string>
<string>/bin/wait4path /Volumes/Swap/ &&
/sbin/dynamic_pager -F /Volumes/Swap/.vm/swapfile</string>
</array>
5.
Pisti kaydedin ve terminal istemine dönün. Kullanarak pico
, komutlar şöyle olurdu:
<ctrl+o> to save the file
<enter> to accept the same filename (com.apple.dynamic_pager.plist)
<ctrl+x> to exit
6.
Değiştirilen pisti tekrar ikiliye dönüştürün:
$ sudo plutil -convert binary1 com.apple.dynamic_pager.plist
7.
Mac'inizi yeniden başlatın. Başınız belaya girerse, başlangıç zilinden hemen sonra Command-v tuşunu basılı tutarak ayrıntılı başlangıç moduna geçin. Bu, başlangıç sırasında görüntülenen tüm başlangıç iletilerini görmenizi sağlar. Daha da kötüsü ile karşılaşırsanız (yani giriş ekranını hiç göremezsiniz), bunun yerine Command tuşlarını basılı tutun. Bu, bilgisayarı tek kullanıcılı modda önyükler (grafik kullanıcı arabirimi yok, yalnızca bir komut istemi) ve 1. adımda yaptığınız com.apple.dynamic_pager.plist dosyasının yedek kopyasını geri yüklemenizi sağlar.
8.
Bilgisayar önyüklendikten sonra Terminal'i ateşleyin ve takas dosyalarının gerçekten taşındığını doğrulayın:
$ cd /Volumes/Swap/.vm
$ ls -l
Böyle bir şey görmelisin:
-rw------- 1 someUser staff 67108864 18 Sep 12:02 swapfile0
9.
Eski takas dosyalarını silin:
$ cd /private/var/vm
$ sudo rm swapfile*
10.
Kar!
Not 1
Argümanlardaki kullanmadan dinamik_pager parametresini değiştirmek wait4path
her zaman işe yaramaz ve başarısız olduğunda bunu olağanüstü sessiz bir şekilde gerçekleştirir. Sorun, dynamic_pager'ın başlangıç işleminde çok erken başlatılmasından kaynaklanıyor. Takas bölümünüz henüz dynamic_pager ilk yüklendiğinde henüz monte edilmediyse (deneyimlerime göre, bu zamanın% 99'u oluyor), o zaman sistem kendi yolunu izleyecektir. / Ciltler dizininde, takas bölümünüzle aynı ada sahip, ancak varsayılan takas dosyası konumuna (/ private / var / vm) işaret eden sembolik bir bağlantı oluşturur. Ardından, gerçek takas bölümünüz monte edildiğinde, ona ad Swap 1
(veya YourDriveName 1
) verilir. Terminal'i açıp / Volumes dizininizin içeriğini listeleyerek sorunu görebilirsiniz:
$ cd /Volumes
$ ls -l
Bunun gibi bir şey göreceksiniz:
drwxrwxrwx 11 yourUser staff 442 16 Sep 12:13 Swap -> private/var/vm
drwxrwxrwx 14 yourUser staff 5 16 Sep 12:13 Swap 1
lrwxr-xr-x 1 root admin 1 17 Sep 12:01 System -> /
Bu hatanın tespit edilmesinin çok zor olabileceğini unutmayın . 12. adımda gösterdiğim gibi swapfilfilerine bakacak olsanız, hala göreceksiniz ! Sembolik bağlantı, takas dosyalarınız taşınıyormuş gibi görünmesini sağlar, aslında varsayılan konumda depolanmış olsalar bile.
Not 2
Com.apple.dynamic_pager.plist ikili biçimde saklandığından başlangıçta bunun Snow Leopard'da çalışmasını sağlayamadım. Orijinal dosyanın bir kopyasını yaptım ve değişiklik yapmak için Apple'ın Özellik Listesi Düzenleyicisiyle (Xcode ile mevcut) açtım, ancak bu işlem sistemin onu görmezden gelmesine ve sadece varsayılanları kullanmasına neden olan plist dosyasına bazı genişletilmiş özellikler ekledi . Dblu'nun işaret ettiği gibi plutil
, dosyayı düz XML'e dönüştürmek bir tılsım gibi çalışır.
Not 3
Konsol uygulamasını, dynamic_pager_init ekrana yansıyan mesajları görmek için kontrol edebilirsiniz. Aşağıdaki satırların tekrar tekrar tekrarlandığını görüyorsanız, kurulumda bir sorun vardır. Bu mesajları koştum, çünkü dynamic_pager_init'te belirttiğim '.vm' dizinini oluşturmayı unuttum.
com.apple.launchd[1] (com.apple.dynamic_pager[176]) Exited with exit code: 1
com.apple.launchd[1] (com.apple.dynamic_pager) Throttling respawn: Will start in 10 seconds
Her şey düzgün çalıştığında, yukarıdaki mesajı yalnızca birkaç kez görebilir ve daha sonra "Throttling respawn" mesajlarından daha fazlasını göremezsiniz. Bu, sistemin bölmenin yüklenmesini beklemek zorunda kaldığı, ancak sonuçta başarılı olduğu anlamına gelir.
wait4path
Applicorn’in ne olduğuna göre bir çözüm buldum Xupport benim için değiştirildi. Nasıl yapılacağına karar verdikten sonra tam bir cevap göndereceğim, ancak bunun kısaca son program argümanını sadece yeni yola (örn. <string>/Volumes/swap/.vm/swapfile</string>
) Değiştirmek, OnDemand
anahtarı olarak değiştirmek ve sonuna bir değer <true/>
eklemek için bir StartOnMount
anahtar eklemek. arasında <true/>
. PS Bu çözüm Lion'da gayet iyi çalışıyor (benim için en azından).
StartOnMount
: Bayrak göre 10.5 eklenmiştir mactech.com/articles/mactech/Vol.25/25.10/...