구형 인텔 맥에 최신 OSX 설치
설치전에 먼저, 아래 방법은 문제가 발생하여 기존에 설치된 데이터를 모두 날려먹거나 부팅이 안될 수도 있으니 반드시 데이터는 백업 받거나 아예 다른 HDD 를 하나 구해서 기존 HDD 를 제거하고 설치한 후 테스트를 한 후에 적용하여야 한다.
얼마전에 MacPro 1.1 을 구했다. 사양은 http://www.everymac.com/systems/apple/mac_pro/specs/mac-pro-quad-2.66-specs.html 에서 볼 수 있듯이 현 시점에서 보기에도 그다지 딸리지는 않는다. 메모리가 Registered DDR2-5300F 정도로 일반적으로 구하기 쉽지 않다는 정도를 뺀다면 ..
일단 방법은 그다지 어렵진 않다. 귀찮을 뿐 ..
준비할 것은 OSX 설치 매체다. 그게 USB 든 DVD 든 .. 웬만하면 USB 가 좋다. 요세미티 베타버전이 나오기는 했지만 현시점에서는 매버릭스가 최신 버전이고, http://macnews.tistory.com/1645 를 참조하면 어렵진 않다.
준비할 것을 정리하자면,
- 8 GB 이상 남아 있는 USB 메모리에 설치된 OSX 설치 이미지
- boot.efi 파일 - http://forums.macrumors.com/showthread.php?t=1598176&page=2 에서 tiamo 라는 ID 가 쓴 글을 보면 첨부파일로 boot.zip 파일이 있는데, 여기서 나오는 boot.efi 파일
- 수정된 OSInstall.mpkg 파일
- 약간의 삽질
이다.
일단 OSX 설치 이미지가 준비되었다면,
다운로드 받은 boot.efi 파일을 USB 로 복사하자. USB 에 있는 아래 디렉터리로 두곳에 복사하면 된다. 다만, 기존 boot.efi 파일은 boot.efi.ORIGINAL 정도로 미리 다른 이름으로 복사해두자.
System/Library/CoreServices/boot.efi usr/standalone/i386/boot.efi
USB (아마도 /Volumes/Install OS X Mavericks 라는 디렉터리에 위치할 거다.) 에 저 두 파일을 다운받은 boot.efi 로 대체하면 된다.
그 다음에는 OSInstall.mpkg 파일을 손 보아야 한다.
USB 메모리 깊숙한 곳에 있는 OSInstall.mpkg 파일을 /Users/akpil/Desktop 정도로 꺼내자.
cp OSInstall.mpkg /Users/akpil/Desktop
물론, 작업하기 편한 아무곳에나 꺼내도 무방하다.
다음의 명령어를 입력하자.
pkgutil --expand ./OSInstall.mpkg ./OSInstall
그러면 OSInstall 이라는 디렉터리가 보이고, 거기로 들어가면 Distribution 이라는 이라는 파일이 보일텐데, 저 아래에 있는 것으로 대체하면 된다. 수정할 부분은 3곳이다.
var minRam = 2048; 에서 2048 을 1024 로 변경 function isVirtualMachine() 함수에서 return true 로 되어 있는 것을 return false 로 변경 function isSupportedPlatform() 함수에서 return false 로 되어 있는 것을 return true 로 변경
그 뒤에
pkgutil --flatten ./OSInstall ./OSInstall.mpkg
명령으로 OSInstall.mpkg 파일을 다시 만들어주자. 그리고 원래 있던 곳으로 복사해 넣으면 된다.
자 이렇게 만들어진 USB 로 설치하자. 대략 1시간 이상 걸린다. 그리고 운 나쁘면 부팅이 안되고 물음표가 계속 나올 수도 있다. VGA 카드 바이오스 문제 등등 여러가지가 있으므로 이럴 땐 열심히 구글링해서 뭔가 또 삽질을 해야 한다. 케이스 바이 케이스라서 워낙 많은 경우가 있을 수 있으니 그건 나중에 알아보자…
- Distribution
<?xml version="1.0" standalone="yes"?> <installer-gui-script minSpecVersion="1"> <options eraseOptionAvailable="true" hostArchitectures="i386" allow-external-scripts="yes" osVersion="10.9.3" osBuildVersion="13D65"/> <title>MacOSX_Title</title> <license file="License.rtf"/> <conclusion file="Conclusion.rtfd"/> <script> var minRam = 1024; function checkSupportedMachine(machineType) { return true; } function checkSupportedBootRom(machineType) { return true; } function hasAtLeastRam(RAM) { var requiredRAM = (RAM * 1024 * 1024); var actualRAM = system.sysctl('hw.memsize'); return (actualRAM > (requiredRAM - 1)); } function is64bit() { var is64bit =system.sysctl('hw.cpu64bit_capable'); return is64bit; } function isVirtualMachine(){ var cpuFeatures = system.sysctl( 'machdep.cpu.features' ); cpuFeatures=cpuFeatures.split(" "); for( var i = 0; i < cpuFeatures.length; i++ ){ if( cpuFeatures[i] == "VMM" ){ return false; } } return false; } function isSupportedPlatform(){ if( isVirtualMachine() ){ return true; } var platformSupportValues=["Mac-031B6874CF7F642A","Mac-F2268DC8","Mac-50619A408DB004DA","Mac-F2218EA9","Mac-F42D86A9","Mac-F22C8AC8","Mac-F22586C8","Mac-AFD8A9D944EA4843","Mac-942B59F58194171B","Mac-F226BEC8","Mac-7DF2A3B5E5D671ED","Mac-35C1E88140C3E6CF","Mac-77EB7D7DAF985301","Mac-2E6FAB96566FE58C","Mac-7BA5B2794B2CDB12","Mac-031AEE4D24BFF0B1","Mac-00BE6ED71E35EB86","Mac-4B7AC7E43945597E","Mac-F22C89C8","Mac-F22587A1","Mac-942459F5819B171B","Mac-F42388C8","Mac-F223BEC8","Mac-F4238CC8","Mac-F222BEC8","Mac-F227BEC8","Mac-F2208EC8","Mac-66F35F19FE2A0D05","Mac-F4238BC8","Mac-189A3D4F975D5FFC","Mac-C08A6BB70A942AC2","Mac-8ED6AF5B48C039E1","Mac-F2238AC8","Mac-FC02E91DDD3FA6A4","Mac-6F01561E16C75D06","Mac-F60DEB81FF30ACF6","Mac-F2268EC8","Mac-F22589C8","Mac-3CBD00234E554E41","Mac-F22788AA","Mac-F42C86C8","Mac-F221BEC8","Mac-942C5DF58193131B","Mac-F2238BAE","Mac-F22C86C8","Mac-F2268CC8","Mac-F221DCC8","Mac-F2218FC8","Mac-742912EFDBEE19B3","Mac-27ADBB7B4CEE8E61","Mac-F65AE981FFA204ED","Mac-F42D89C8","Mac-F22587C8","Mac-F42D89A9","Mac-F2268AC8","Mac-F42C89C8","Mac-942452F5819B1C1B","Mac-F2218FA9","Mac-F42D88C8","Mac-94245B3640C91C81","Mac-F42D86C8","Mac-4BC72D62AD45599E","Mac-F2268DAE","Mac-2BD1B31983FE1663","Mac-7DF21CB3ED6977E5","Mac-F42C88C8","Mac-94245A3940C91C80","Mac-F42386C8","Mac-C3EC7CD22292981F","Mac-942B5BF58194151B","Mac-F2218EC8"]; var boardID = system.ioregistry.fromPath('IOService:/')['board-id']; if( !boardID || platformSupportValues.length == 0 ) { return false } for( var i = 0; i < platformSupportValues.length; i++ ){ if( boardID == platformSupportValues[i] ){ return true; } } return true; } function isSupportedFirmware(){ var property = system.sysctl("hw.model"); if (property && (property == "MacBookAir5,1") || (property == "MacBookAir5,2") ) { var reg; try { reg = system.ioregistry.matchingName('IOAHCIDevice'); for( var i = 0 ; i < reg.length ; i++ ) { var childrenArray = system.ioregistry.childrenOf(reg[i]); for( var j = 0 ; j < childrenArray.length ; j++ ) { var model = childrenArray[j]['Model']; var revision = childrenArray[j]['Revision']; if( null != model && null != revision ) { if( model.match(/TS064E/) && (revision.match(/TPSABBF0/) || revision.match(/TPVABBF0/))) { return false; } if( model.match(/TS128E/) && (revision.match(/TPSABBF0/) || revision.match(/TPVABBF0/))) { return false; } } } } } catch(err) { return false; } } return true; } function installCheckScript(){ try{ var machineType = system.ioregistry.fromPath('IODeviceTree:/')['compatible']; if (typeof(isFNI) == "undefined" && typeof(hwbeInstallCheck) != "undefined") { if (!hwbeInstallCheck()) { return false; } } if(!is64bit()){ my.result.message = system.localizedStringWithFormat('IC_Unsupported_Processor'); my.result.type = 'Fatal'; return false; } if(!isSupportedPlatform()){ my.result.message = system.localizedStringWithFormat('IC_Unsupported_Platform'); my.result.type = 'Fatal'; return false; } if(!hasAtLeastRam(minRam)){ my.result.message = system.localizedStringWithFormat('IC_RAM_message'); my.result.type = 'Fatal'; return false; } if(!isSupportedFirmware()){ my.result.title = system.localizedStringWithFormat('IC_UnsupportedFirmware_Title'); my.result.message = system.localizedStringWithFormat('IC_UnsupportedFirmware'); my.result.type = 'Fatal'; return false; } if (system.compareVersions(system.version.ProductVersion, '10.9') < 0 && system.env.COMMAND_LINE_INSTALL) { my.result.message = system.localizedStringWithFormat('IC_Command_Line_message', '10.9'); my.result.type = 'Fatal'; return false; } if( system.compareVersions(my.target.systemVersion.ProductVersion, '10.9') >= 0 && system.compareVersions(my.target.systemVersion.ProductVersion, '10.10') < 0){ my.result.message = system.localizedStringWithFormat('IC_Redownload_message', system.version.ProductVersion); my.result.type = 'Warn'; return false; } if (typeof(findBJPrinters) != "undefined") findBJPrinters(); } catch (e) { system.log('installCheckScript threw exception ' + e); } return true; } function volCheckScript(){ var target = my.target; var destSystemVersion = target['systemVersion']; if(system.files.fileExistsAtPath(my.target.mountpoint + "/Backups.backupdb")) { my.result.message = system.localizedString('VC_Backup_message'); my.result.type = 'Fatal'; return false; } if(my.target.systemVersion){ if( system.compareVersions(my.target.systemVersion.ProductVersion, '10.10') >= 0){ my.result.message = system.localizedString('VC_Newer_message'); my.result.type = 'Fatal'; return false; } } if (destSystemVersion) { // Don't allow upgrades on volumes less than 10.6.6 if (-1 == system.numericalCompare(destSystemVersion['ProductVersion'], '10.6.6')) { my.result.message = system.localizedString('VC_Upgrade_message'); my.result.type = 'Fatal'; return false; } } //FDE CHECKS var plist = system.files.plistAtPath('/System/Library/Extensions/CoreStorage.kext/Contents/Info.plist'); if(plist){ var plistKeyValue = plist['CoreStorageDiskFormatVersion']; if((system.ioregistry.matchingClass('CoreStorageGroup').length != 0) && (system.compareVersions(plistKeyValue, '1') != 0) ){ my.result.message = system.localizedString('CS_message'); my.result.type = 'Fatal'; return false; } } return true; } function language_running(langKey){ var appleLanguages = system.defaults['AppleLanguages']; if(!appleLanguages || (appleLanguages.length == 0)) return ((langKey == 'English') || (langKey == 'en')) return (langKey == appleLanguages[0]); } gLanguageRequired = { }; //Function returns true if the langKey is required, it uses a cache so that the logic doesn't //have to be run hundreds of times function language_required(langKey){ if(! (gLanguageRequired[langKey])){ var required = false; if(language_running(langKey)){ required = true; } gLanguageRequired[langKey] = required; } return gLanguageRequired[langKey]; } function language_enabled(langKey){ var enabled = !(language_required(langKey)); if(false == enabled){ my.choice.tooltip = system.localizedString('TT_Language_Required_message'); } return enabled; } function language_selected(langKey){ var selected = my.choice.selected || language_required(langKey); return selected; } function verCompare(checkVer){ var sysVer = my.target['systemVersion']; if (sysVer) { return system.numericalCompare(sysVer['ProductVersion'],checkVer); } return -1; } function upgrade_allowed(){ var argv = upgrade_allowed.arguments; var upgradable = true; var upgradeAction = my.choice.packageUpgradeAction; if(argv.length > 0) { upgradeAction = eval('choices.' + argv[0] + '.packageUpgradeAction'); } if((upgradeAction == 'downgrade') || (upgradeAction == 'mixed')){ my.choice.tooltip = system.localizedString('TT_Newer_Package_Installed_message'); upgradable = false; } return upgradable; } function systemHasDVD(){ var obj = system.ioregistry.matchingClass("IODVDBlockStorageDriver"); if (obj) { return true; } var obj2 = system.ioregistry.matchingName("ApplePlatformEnabler","IOService"); if (obj2 ) { if ( obj2[0]['DVDSupported'] ) { return true; } } return false; } function hasNetInfo() { var path = my.target.mountpoint + "/private/var/db/netinfo/local.nidb"; if (system.files.fileExistsAtPath(path)) { return true; } return false; } function needsX11redirect() { var sysVer = my.target['systemVersion']; if (!sysVer) { return true; } var path = my.target.mountpoint + "/private/var/db/receipts/com.apple.pkg.X11redirect.plist"; if (system.files.fileExistsAtPath(path) || system.compareVersions(my.target.systemVersion.ProductVersion, '10.8') < 0) { return true; } return false; } </script> <installation-check script="installCheckScript()"/> <volume-check script="volCheckScript()"/> <choices-outline> <line choice="EssentialSystemSoftware"> <line choice="EssentialSystemSoftwareGroup"/> <line choice="AdditionalEssentials"/> <line choice="AdditionalSpeechVoices"/> <line choice="AsianLanguagesSupport"/> <line choice="MediaFiles"/> <line choice="JavaEssentials"/> <line choice="OxfordDictionaries"/> <line choice="X11"/> </line> <line choice="OSInstallScripts"/> </choices-outline> <choice id="EssentialSystemSoftware" title="EssentialSystemSoftware_title" description="EssentialSystemSoftware_description" start_enabled="false" start_visible="false"/> <choice id="EssentialSystemSoftwareGroup" start_visible="false" start_selected="true"> <pkg-ref id="com.apple.pkg.BaseSystemBinaries"/> <pkg-ref id="com.apple.pkg.BaseSystemResources"/> <system-image id="com.apple.dmg.MacOSX"/> <pkg-ref id="com.apple.mpkg.OSInstall"/> <pkg-ref id="com.apple.pkg.Essentials"/> <pkg-ref id="com.apple.pkg.BSD"/> <pkg-ref id="com.apple.pkg.JavaTools"/> </choice> <choice id="AdditionalEssentials" start_visible="false" start_selected="true"> <pkg-ref id="com.apple.pkg.AdditionalEssentials"/> <pkg-ref id="com.apple.pkg.OSUpgrade" active="!my.target.ignoreContents && hasNetInfo() && verCompare(10.3) >= 0"/> </choice> <choice id="AsianLanguagesSupport" start_visible="false" start_selected="true"> <pkg-ref id="com.apple.pkg.AsianLanguagesSupport"/> </choice> <choice id="JavaEssentials" start_visible="false" start_selected="true"> <pkg-ref id="com.apple.pkg.JavaEssentials"/> </choice> <choice id="MediaFiles" start_visible="false" start_selected="true"> <pkg-ref id="com.apple.pkg.MediaFiles"/> </choice> <choice id="OxfordDictionaries" start_visible="false" start_selected="true"> <pkg-ref id="com.apple.pkg.OxfordDictionaries"/> </choice> <choice id="OSInstallScripts" start_visible="false" start_selected="true"> <pkg-ref id="com.apple.pkg.OSInstall"/> </choice> <choice id="AdditionalSpeechVoices" start_visible="false" start_selected="true"> <pkg-ref id="com.apple.pkg.AdditionalSpeechVoices"/> </choice> <choice id="X11" start_selected="true" start_visible="false"> <pkg-ref id="com.apple.pkg.X11redirect" active="needsX11redirect()"/> </choice> <pkg-ref id="com.apple.pkg.AdditionalSpeechVoices" auth="root" installKBytes="286664" version="10.9.0.1.1.1306847324">AdditionalSpeechVoices.pkg</pkg-ref> <pkg-ref id="com.apple.pkg.AsianLanguagesSupport" auth="root" installKBytes="3924" version="10.9.0.1.1.1306847324">AsianLanguagesSupport.pkg</pkg-ref> <pkg-ref id="com.apple.pkg.BaseSystemBinaries" auth="root" installKBytes="543702" version="10.9.0.1.1.1306847324">BaseSystemBinaries.pkg</pkg-ref> <pkg-ref id="com.apple.pkg.BaseSystemResources" auth="root" installKBytes="357886" version="10.9.0.1.1.1306847324">BaseSystemResources.pkg</pkg-ref> <pkg-ref id="com.apple.pkg.BSD" auth="root" installKBytes="711545" version="10.9.0.1.1.1306847324">BSD.pkg</pkg-ref> <pkg-ref id="com.apple.pkg.Essentials" auth="root" installKBytes="4601561" version="10.9.0.1.1.1306847324">Essentials.pkg</pkg-ref> <pkg-ref id="com.apple.pkg.AdditionalEssentials" auth="root" installKBytes="160106" version="10.9.0.1.1.1306847324">AdditionalEssentials.pkg</pkg-ref> <pkg-ref id="com.apple.pkg.OSUpgrade" auth="root" installKBytes="0" version="10.9.0.1">OSUpgrade.pkg</pkg-ref> <pkg-ref id="com.apple.pkg.JavaEssentials" auth="root" installKBytes="6509" version="10.9.0.1.1.1306847324">JavaEssentials.pkg</pkg-ref> <pkg-ref id="com.apple.pkg.MediaFiles" auth="root" installKBytes="229893" version="10.9.0.1.1.1306847324">MediaFiles.pkg</pkg-ref> <pkg-ref id="com.apple.pkg.OSInstall" auth="root" installKBytes="0" version="10.9.0.1">OSInstall.pkg</pkg-ref> <pkg-ref id="com.apple.pkg.OxfordDictionaries" auth="root" installKBytes="99895" version="10.9.0.1.1.1306847324">OxfordDictionaries.pkg</pkg-ref> <pkg-ref id="com.apple.pkg.X11redirect" auth="root" installKBytes="3391" version="10.9.0.1.1.1306847324">X11redirect.pkg</pkg-ref> <pkg-ref id="com.apple.pkg.JavaTools" auth="root" installKBytes="92" version="10.9.0.1.1.1306847324">JavaTools.pkg</pkg-ref> <pkg-ref id="com.apple.mpkg.OSInstall" auth="root" version="10.9.0">OSInstall.mpkg</pkg-ref> <system-image id="com.apple.dmg.MacOSX">InstallESD.dmg<pkg-ref id="com.apple.mpkg.OSInstall" auth="root" version="10.9.0"/></system-image> <system-image id="com.apple.dmg.MacOSX" version="10.9.0.1.1.1306847324" sha1="9feada4340901e67094f3b1edb420f9af9c4c000"/> </installer-gui-script>