मैं अब तक अपनी हार्ड ड्राइव पर एक समर्पित विभाजन के लिए Apple की वर्चुअल मेमोरी स्वेपफाइल्स को स्थानांतरित करने में सक्षम रहा हूं। मैं जिस तकनीक का उपयोग कर रहा हूं उसका वर्णन मंचों पर एक सूत्र में वर्णित है । pmosxhints.com।
हालांकि, स्नो लेपर्ड के डेवलपर पूर्वावलोकन के साथ, यह विधि अब काम नहीं करती है। क्या किसी को पता है कि यह नए ओएस के साथ कैसे किया जा सकता है?
अद्यतन: मैंने dblu के उत्तर को स्वीकार कर लिया है, भले ही वह काफी काम का नहीं है क्योंकि उसने उत्कृष्ट, विस्तृत निर्देश दिए हैं और क्योंकि उसके उपयोग के सुझाव plutil
ने अंततः मुझे सही दिशा में बताया। पूर्ण, कार्यशील समाधान यहां प्रश्न में पोस्ट किया गया है क्योंकि मेरे पास स्वीकृत उत्तर को संपादित करने के लिए पर्याप्त प्रतिष्ठा नहीं है।
अद्यतन # 2: ekl की तकनीक को चित्रित करने की प्रक्रिया को बदल दिया है , जो एक मध्यवर्ती शेल स्क्रिप्ट की आवश्यकता को समाप्त करके पूरी बात को सरल करता है:
पूर्ण समाधान:
1.
टर्मिनल खोलें और Apple के डिफॉल्ट dynam_pager.plist की बैकअप प्रतिलिपि बनाएँ:
$ cd /System/Library/LaunchDaemons
$ sudo cp com.apple.dynamic_pager.plist{,_bak}
2.
बाइनरी से प्लेन को प्लेन XML में बदलें:
$ sudo plutil -convert xml1 com.apple.dynamic_pager.plist
3.
अपनी पसंद के टेक्स्ट एडिटर के साथ परिवर्तित प्लिस्ट खोलें। (मैं उपयोग करता हूं pico
, उदाहरण के लिए dblu के उत्तर को देखें vim
)
$ sudo pico -w com.apple.dynamic_pager.plist
यह इस प्रकार दिखना चाहिए:
<?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.
डायनामिक_पेजर को लॉन्च करने से पहले Wait4path शेल कमांड ( ZILjr द्वारा सुझाए गए अनुसार ) का उपयोग करने के लिए ProgramArguments ऐरे (18 से लाइनें 13) को संशोधित करें । नोट # 1 देखें कि यह क्यों आवश्यक है। निम्नलिखित उदाहरण में, मेरे विभाजन को 'स्वैप' कहा जाता है, और मैंने उस विभाजन पर एक छिपी हुई निर्देशिका में स्वैपफाइल्स को रखने के लिए चुना, जिसे '.vm' कहा जाता है, सुनिश्चित करें कि आप जिस निर्देशिका को निर्दिष्ट करते हैं वह वास्तव में मौजूद है । XML को निम्नानुसार देखना चाहिए:
<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.
प्लिस्ट को सहेजें, और टर्मिनल प्रॉम्प्ट पर लौटें। का उपयोग कर pico
, आदेश होगा:
<ctrl+o> to save the file
<enter> to accept the same filename (com.apple.dynamic_pager.plist)
<ctrl+x> to exit
6.
बाइनरी में संशोधित प्लिस्ट को वापस कन्वर्ट करें:
$ sudo plutil -convert binary1 com.apple.dynamic_pager.plist
7.
अपने मैक को पुनरारंभ करें। यदि आप मुसीबत में हैं, तो स्टार्टअप चाइम के तुरंत बाद कमांड-वी को दबाकर क्रिया मोड चालू करें। यह आपको स्टार्टअप के उन सभी संदेशों को देखने देगा जो स्टार्टअप के दौरान दिखाई देते हैं। यदि आप और भी अधिक परेशानी में हैं (यानी आप लॉगिन स्क्रीन कभी नहीं देखते हैं), इसके बजाय कमांड-एस दबाए रखें। यह कंप्यूटर को एकल-उपयोगकर्ता मोड (कोई ग्राफ़िकल यूआई, बस एक कमांड प्रॉम्प्ट) में बूट करेगा और आपको चरण 1 में किए गए com.apple.dynamic_pager.plist की बैकअप प्रतिलिपि को पुनर्स्थापित करने की अनुमति देगा।
8.
एक बार कंप्यूटर बूट करने के बाद, टर्मिनल को फायर करें और सत्यापित करें कि स्वैप फाइलें वास्तव में स्थानांतरित हो गई हैं:
$ cd /Volumes/Swap/.vm
$ ls -l
आपको कुछ इस तरह से देखना चाहिए:
-rw------- 1 someUser staff 67108864 18 Sep 12:02 swapfile0
9.
पुराने स्वेपाइल्स को हटाएं:
$ cd /private/var/vm
$ sudo rm swapfile*
10.
फायदा!
नोट 1
बिना उपयोग किए प्लास्ट में डायनेमिक_पेजर के तर्कों को संशोधित करना wait4path
हमेशा काम नहीं करता है, और जब यह विफल हो जाता है, तो यह एक शानदार चुप तरीके से ऐसा करता है। समस्या इस तथ्य से उपजी है कि डायनामिक_पेजर को स्टार्टअप प्रक्रिया में बहुत पहले लॉन्च किया जाता है। यदि डायनामिक_पेजर पहले लोड किया गया है, तो आपके स्वैप विभाजन को अभी तक माउंट नहीं किया गया है (मेरे अनुभव में, यह समय का 99% होता है), तो सिस्टम इसके माध्यम से नकली होगा। यह आपके / वॉल्यूम निर्देशिका में एक प्रतीकात्मक लिंक बनाएगा, जिसका नाम आपके स्वैप विभाजन के समान है, लेकिन डिफ़ॉल्ट स्वैप स्थान (/ निजी / var / vm) पर वापस इंगित करता है। फिर, जब आपका वास्तविक स्वैप विभाजन आरोहित होता है, तो उसे नाम Swap 1
(या YourDriveName 1
) दिया जाएगा । आप टर्मिनल खोलकर और अपने / वॉल्यूम निर्देशिका की सामग्री को सूचीबद्ध करके समस्या देख सकते हैं:
$ cd /Volumes
$ ls -l
आप कुछ इस तरह देखेंगे:
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 -> /
ध्यान दें कि यह विफलता स्पॉट करने के लिए बहुत कठिन हो सकती है । यदि आप स्टेप 12 में दिखाए गए अनुसार स्वैपफाइल्स की जांच कर रहे थे, तब भी आप उन्हें देखेंगे ! प्रतीकात्मक लिंक ऐसा लगता है जैसे कि आपके स्वैपफिल को स्थानांतरित कर दिया गया था, भले ही वे वास्तव में डिफ़ॉल्ट स्थान पर संग्रहीत किए जा रहे थे।
नोट 2
मैं मूल रूप से स्नो लेपर्ड में काम करने में असमर्थ था क्योंकि com.apple.dynamic_pager.plist को बाइनरी प्रारूप में संग्रहीत किया गया था। मैंने मूल फ़ाइल की एक प्रतिलिपि बनाई और इसे बदलने के लिए Apple के प्रॉपर्टी लिस्ट एडिटर (Xcode के साथ उपलब्ध) के साथ खोला, लेकिन इस प्रक्रिया ने plist फ़ाइल में कुछ विस्तारित विशेषताओं को जोड़ा जिससे सिस्टम इसे अनदेखा कर देता है और बस चूक का उपयोग करता है । जैसा कि dblu ने बताया, plutil
फ़ाइल को सादे XML में बदलने के लिए उपयोग करना एक आकर्षण की तरह काम करता है।
नोट 3
आप किसी भी संदेश को देखने के लिए कंसोल एप्लिकेशन की जांच कर सकते हैं जो कि स्क्रीन पर डायनामिक_पेजर_इन इकोस है। यदि आपको बार-बार निम्न पंक्तियाँ दिखाई देती हैं, तो सेटअप के साथ समस्या है। मैं इन संदेशों में भाग गया क्योंकि मैं '.vm' निर्देशिका बनाना भूल गया था जिसे मैंने डायनामिक_पेजर_इनिट में निर्दिष्ट किया था।
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
जब सब कुछ ठीक से काम कर रहा हो, तो आप उपरोक्त संदेश को एक-दो बार ही देख सकते हैं, और फिर "थ्रॉटलिंग रेस्पॉन्स" इन संदेशों से अधिक नहीं। इसका मतलब है कि सिस्टम को लोड होने के लिए इंतजार करना पड़ा, लेकिन अंत में यह सफल रहा।
wait4path
समाधान मिला , जो कि आवेदन करने वाले के लिए धन्यवाद मेरे लिए संशोधित Xupport। एक बार जब मैं पता लगाऊंगा तो मैं एक पूर्ण उत्तर पोस्ट करूंगा, लेकिन इसकी कमी अंतिम प्रोग्राम तर्क को सिर्फ नए पथ (जैसे <string>/Volumes/swap/.vm/swapfile</string>
) में बदलने के OnDemand
लिए है <true/>
, कुंजी को बदलें , और StartOnMount
मूल्य के साथ अंत में एक कुंजी जोड़ें का है <true/>
। PS यह समाधान लायन (मेरे लिए, कम से कम) में ठीक काम करता है।
StartOnMount
: झंडा के अनुसार 10.5 में जोड़ा गया mactech.com/articles/mactech/Vol.25/25.10/...