<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>The Apple Geek &#187; vmware</title>
	<atom:link href="http://theapplegeek.ru/archives/tag/vmware/feed" rel="self" type="application/rss+xml" />
	<link>http://theapplegeek.ru</link>
	<description>Чему ты научился сегодня?</description>
	<lastBuildDate>Fri, 30 Jul 2010 13:48:39 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
<atom:link rel="hub" href="http://pubsubhubbub.appspot.com"/><atom:link rel="hub" href="http://superfeedr.com/hubbub"/>		<item>
		<title>Поиск метода установки Mac OS X под VMWare Fusion</title>
		<link>http://theapplegeek.ru/archives/747</link>
		<comments>http://theapplegeek.ru/archives/747#comments</comments>
		<pubDate>Fri, 02 Oct 2009 07:36:06 +0000</pubDate>
		<dc:creator>ctrld</dc:creator>
				<category><![CDATA[Статьи]]></category>
		<category><![CDATA[dtrace]]></category>
		<category><![CDATA[vmware]]></category>

		<guid isPermaLink="false">http://ctrld.me/?p=747</guid>
		<description><![CDATA[Если вы пытались установить под VMWare Fusion или Parallels Mac OS X, то сталкивались с отказом &#8211; есть возможность установить только Mac OS X Server. Это связано с лицензионным ограничением Apple, и, конечно же, ни VMWare, ни Parallels не хотят подвергать себя риску быть обвинёнными в нарушении Software License Agreement. Интересно самому взглянуть на соглашение, [...]]]></description>
			<content:encoded><![CDATA[<p style="clear: both"><img src="http://theapplegeek.ru/wp-content/uploads/2009/10/00_vm-thumb.png" height="150" align="right" width="150" style=" display: inline; float: right; margin: 0 0 10px 10px;" /></p>
<p>Если вы пытались установить под VMWare Fusion или Parallels Mac OS X, то сталкивались с отказом &#8211; есть возможность установить только Mac OS X Server. Это связано с лицензионным ограничением Apple, и, конечно же, ни VMWare, ни Parallels не хотят подвергать себя риску быть обвинёнными в нарушении Software License Agreement.</p>
<p>Интересно самому взглянуть на соглашение, а не просто принять это на веру &#8211; все Hardware и Software Product Agreements есть <noindex><a rel="nofollow" href="http://theapplegeek.ru/goto/http://www.apple.com/legal/sla/" >на сайте Apple</a></noindex>. Смотрим раздел 2 &#8220;Permitted License Uses and Restrictions&#8221;, жирным текстом я выделил главное.</p>
<p><b><noindex><a rel="nofollow" href="http://theapplegeek.ru/goto/http://images.apple.com/legal/sla/docs/macosx106.pdf" >Mac OS X (Snow Leopard)</a></noindex></b></p>
<blockquote>
<p>A. Single Use License. Subject to the terms and conditions of this License, unless you have purchased a Family Pack or Upgrade license for the Apple Software, you are granted a limited non-exclusive license to install, use and run <b>one (1) copy of the Apple Software on a single Apple-branded computer at a time</b>.</p>
</blockquote>
<p><b><noindex><a rel="nofollow" href="http://theapplegeek.ru/goto/http://images.apple.com/legal/sla/docs/macosx_snowleopard.pdf" >Mac OS X Server (Snow Leopard)</a></noindex></b></p>
<blockquote>
<p>A. Mac OS X Server Software. Subject to the terms and conditions of this License, you are granted a limited non-exclusive license to install and use one copy of the Mac OS X Server software (the “Mac OS X Server Software”) on a single Apple-branded computer. <b>You may also install and use other copies of Mac OS X Server Software on the same Apple-branded computer</b>, provided that you acquire an individual and valid license from Apple for each of these other copies of Mac OS X Server Software.</p>
</blockquote>
<p>Различие налицо. Можно использовать только одну копию Mac OS X на одном компьютере одновременно, а Mac OS X Server &#8211; несколько копий. Именно это и даёт возможность легальной виртуализации Mac OS X Server.</p>
<p>А теперь уйдём на тёмную сторону силы &#8211; рассмотрим, что и почему нужно делать для запуска Mac OS X в виртуальной машине (давайте сделаем вид, что не поняли пункт SLA &#8220;You agree not to install, use or run the Apple Software on any non-Apple-branded computer, or to enable others to do so&#8221; &#8211; ведь мы же работаем на родном Маке, а не Хакинтоше).</p>
<p>Сразу уточню &#8211; для установки под VMWare нужна Retail-версия Mac OS X. Версия, идущая с ноутбуком или же iMac, не подходит &#8211; Installer Mac OS X проверяет аппаратную часть, и не разрешает установку на другом оборудовании (а Model name &#8220;VMware Virtual Platform&#8221; &#8211; это совсем не &#8220;MacBook Pro&#8221;).</p>
<p><span id="more-747"></span></p>
<p><b>Предупреждение.</b> Я показываю принцип поиска, а готовый рецепт есть в статье &#8220;<noindex><a rel="nofollow" href="http://theapplegeek.ru/goto/http://www.macgeekblog.com/blog/archive/2008/09/03/hack-vmware-fusion-2-virtualize-tigerleopard.html" >Hack VMWare Fusion 2 – Virtualize Tiger/Leopard</a></noindex>&#8220;. Я попытался пофантазировать, как происходило нахождение этого рецепта.</p>
<p>Итак, приступим. В наличии &#8211; VMWare Fusion 2.0 (заметьте &#8211; лицензионная, а не &#8220;лицензионная&#8221;) и DVD с Mac OS X 10.5 Retail вставлен в привод.</p>
<p>Создаём виртуальную машину &#8220;Mac OS X Server 10.5&#8243; (все параметры стандартные). Запускаем в Terminal.app dtrace для проверки, к каким файлам обращается VMWare для проверки, сервер ли это. Нужен именно dtrace, <a href="http://theapplegeek.ru/archives/520" >fseventer</a> не подходит &#8211; он не показывает открываемые файлы.</p>
<pre>
sudo dtrace -n 'syscall::open*:entry { printf("%s %s",execname,copyinstr(arg0)); }' &gt; vmware-10.5.txt
</pre>
<p>Стартуем виртуальную машину, и получаем назидательное сообщение о том, что DVD не совсем тот:</p>
<p style="clear: both"><a href="http://theapplegeek.ru/wp-content/uploads/2009/10/01_vm.png"  class="image-link" rel="lightbox[747]"><img class="linked-to-original" src="http://theapplegeek.ru/wp-content/uploads/2009/10/01_vm-thumb.png" height="119" width="380" style=" text-align: center; display: block; margin: 0 auto 10px;" /></a></p>
<p>Останавливаем dtrace и смотрим, к каким файлам обратился VMWare на DVD:</p>
<p><small>
<pre>
$ cat vmware-10.5.txt | grep "Install DVD"
  0  18474                       open:entry mds /Volumes/Mac OS X Install DVD/
  0  18474                       open:entry mds Mac OS X Install DVD
  1  19260              open_nocancel:entry diskarbitration /Volumes/Mac OS X Install DVD/.autodiskmounted
  1  18474                       open:entry mds /Volumes/Mac OS X Install DVD
  1  18474                       open:entry Finder /Volumes/Mac OS X Install DVD/System/Library/CoreServices/SystemVersion.plist
  1  18474                       open:entry Finder /Volumes/Mac OS X Install DVD/System/Library/CoreServices/SystemVersion.plist
</pre>
<p></small></p>
<p>Содержимое файла SystemVersion.plist явно не указывает, что для проверки используется информация из него:</p>
<p style="clear: both"><a href="http://theapplegeek.ru/wp-content/uploads/2009/10/02_vm.png"  class="image-link" rel="lightbox[747]"><img class="linked-to-original" src="http://theapplegeek.ru/wp-content/uploads/2009/10/02_vm-thumb.png" height="103" width="380" style=" text-align: center; display: block; margin: 0 auto 10px;" /></a></p>
<p>Думаем, как заставить думать VMWare, что у нас серверная версия. Для запуска системы с DVD у VMWare должен быть загрузчик. Анализируя захваченные данные dtrace (отфильтровываем по vmware), в итоге находим интересные строки:</p>
<p><small>
<pre>
  0  19260              open_nocancel:entry vmware-vmx /Library/Application Support/VMware Fusion/isoimages/tools-key.pub
  0  19260              open_nocancel:entry vmware-vmx /Library/Application Support/VMware Fusion/isoimages/darwin.iso.sig
  0  19260              open_nocancel:entry vmware-vmx /Library/Application Support/VMware Fusion/isoimages/darwin.iso
</pre>
<p></small></p>
<p>Загрузчик &#8211; в iso-образе darwin.iso. Второй вариант &#8211; можно было изучить каталоги VMWare и найти iso.</p>
<pre>
cd "/Library/Application Support/VMware Fusion/isoimages/"
</pre>
<p>Открываем darwin.iso в hex-viewer&#8217;е &#8220;<noindex><a rel="nofollow" href="http://theapplegeek.ru/goto/http://ridiculousfish.com/hexfiend/" >Hex Fiend</a></noindex>&#8220;. Как обычно пишется код? Просто: сделали проверку &#8211; выдали сообщение. Если есть сравнение строк, обращение к файлам, и они не прописаны в отдельном блоке как переменные, то есть вероятность, что в ресурсах программы будет идти проверяемая строка, а затем &#8211; сообщение об ошибке.<br />
Пытаемся найти строку сообщения &#8220;The operating system is not Mac OS X Server&#8221;. И мы его находим, причём рядом видим имя файла ServerVersion.plist:</p>
<p style="clear: both"><a href="http://theapplegeek.ru/wp-content/uploads/2009/10/03_vm.png"  class="image-link" rel="lightbox[747]"><img class="linked-to-original" src="http://theapplegeek.ru/wp-content/uploads/2009/10/03_vm-thumb.png" height="225" width="500" style=" text-align: center; display: block; margin: 0 auto 10px;" /></a></p>
<p>Делаем бекап всех файлов:</p>
<pre>
sudo bash
cd "/Library/Application Support/VMware Fusion/isoimages"
mkdir original
mv darwin.iso tools-key.pub *.sig original
</pre>
<p>На установочном диске в каталоге /System/Library/CoreServices файла ServerVersion.plist нет. Может стоит его подменить на SystemVersion.plist? Правим iso в Hex Fiend (бекапы!), благо количество букв совпадает. Другой вариант, без редактирования в hexeditor&#8217;е:</p>
<pre>
perl -n -p -e 's/ServerVersion.plist/SystemVersion.plist/g' &lt; original/darwin.iso &gt; darwin.iso
</pre>
<p>Загружаем, ошибка:</p>
<p style="clear: both"><a href="http://theapplegeek.ru/wp-content/uploads/2009/10/04_vm.png"  class="image-link" rel="lightbox[747]"><img class="linked-to-original" src="http://theapplegeek.ru/wp-content/uploads/2009/10/04_vm-thumb.png" height="133" width="380" style=" text-align: center; display: block; margin: 0 auto 10px;" /></a></p>
<p>Вспоминаем о обращении к tools-key.pub и darwin.iso.sig перед открытием darwin.iso и понимаем, что файл изменился, и нужно перегенерировать цифровую подпись. Выходим из VMWare. В каталоге &#8220;/Library/Application Support/VMware Fusion/isoimages&#8221; видим не только публичный ключ tools-key.pub, но и приватный tools-priv.pem, которым производится подписывание (это не оплошность, так производится подписывание загружаемых образов). Смотрим документацию по OpenSSL и генерируем подпись (напоминаю, эти команды я взял из &#8220;<noindex><a rel="nofollow" href="http://theapplegeek.ru/goto/http://www.macgeekblog.com/blog/archive/2008/09/03/hack-vmware-fusion-2-virtualize-tigerleopard.html" >Hack VMWare Fusion 2 – Virtualize Tiger/Leopard</a></noindex>&#8220;):</p>
<pre>
sudo -s
cd "/Library/Application Support/VMware Fusion/isoimages"
openssl genrsa -out tools-priv.pem 2048
openssl rsa -in tools-priv.pem -pubout -out tools-key.pub
openssl dgst -sha1 -sign tools-priv.pem &lt; darwin.iso &gt; darwin.iso.sig
for A in *.iso ; do openssl dgst -sha1 -sign tools-priv.pem &lt; $A &gt; $A.sig ; done
</pre>
<p>Запускаем виртуальную машину. Вуаля! Установщик загрузился:</p>
<p style="clear: both"><a href="http://theapplegeek.ru/wp-content/uploads/2009/10/05_vm.png"  class="image-link" rel="lightbox[747]"><img class="linked-to-original" src="http://theapplegeek.ru/wp-content/uploads/2009/10/05_vm-thumb.png" height="285" width="380" style=" text-align: center; display: block; margin: 0 auto 10px;" /></a></p>
<p>Наслаждаемся.</p>
<p><br class='final-break' style='clear: both' /></p>
]]></content:encoded>
			<wfw:commentRss>http://theapplegeek.ru/archives/747/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

<!-- Performance optimized by W3 Total Cache. Learn more: http://www.w3-edge.com/wordpress-plugins/

Minified using memcached (user agent is rejected)
Page Caching using memcached (user agent is rejected)
Database Caching 3/10 queries in 0.003 seconds using memcached
Object Caching 417/423 objects using memcached

Served from: theapplegeek.ru @ 2010-07-31 03:01:28 -->