<?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; boot</title>
	<atom:link href="http://theapplegeek.ru/archives/tag/boot/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>Немного о Login Items</title>
		<link>http://theapplegeek.ru/archives/2342</link>
		<comments>http://theapplegeek.ru/archives/2342#comments</comments>
		<pubDate>Mon, 14 Dec 2009 15:33:30 +0000</pubDate>
		<dc:creator>ctrld</dc:creator>
				<category><![CDATA[Статьи]]></category>
		<category><![CDATA[boot]]></category>

		<guid isPermaLink="false">http://theapplegeek.ru/?p=2342</guid>
		<description><![CDATA[Вчера я зашёл под своей старой учётной записью на ноутбук, который давно не использовал. С последнего захода было много изменений, какой-то софт удалён, какой-то доставлен. Решив слегка почистить программы, которые запускаются при старте системы, я зашёл в System Preferences/Accounts/Login Items. И там я увидел отсылку на древнейшую программу Nikon View, которую снёс очень давно. Задумался [...]]]></description>
			<content:encoded><![CDATA[<p>Вчера я зашёл под своей старой учётной записью на ноутбук, который давно не использовал. С последнего захода было много изменений, какой-то софт удалён, какой-то доставлен. Решив слегка почистить программы, которые запускаются при старте системы, я зашёл в System Preferences/Accounts/Login Items.</p>
<p>И там я увидел отсылку на древнейшую программу Nikon View, которую снёс очень давно. Задумался о двух вещах – как посмотреть путь к этой программе и где эти Login Items сконфигурированы. Google мне, как обычно, помог, отослав к отличной статье MacWorld &#8220;<noindex><a rel="nofollow" href="http://theapplegeek.ru/goto/http://www.macworld.com/article/59554/2007/08/loginpaths.html" >See paths to Login Items</a></noindex>&#8220;.</p>
<p>В простой методе достаточно навести указатель мыши на программу и в подсказке покажется полный путь (но ввод этого путь непрост &#8211; его нужно вбивать вручную):</p>
<p style="clear: both"><a href="http://theapplegeek.ru/wp-content/uploads/2009/12/01_loginitems-full.png"  class="image-link" rel="lightbox[2342]"><img class="linked-to-original" src="http://theapplegeek.ru/wp-content/uploads/2009/12/01_loginitems-thumb.png" height="397" width="499" style=" text-align: center; display: block; margin: 0 auto 10px;" /></a></p>
<p><span id="more-2342"></span></p>
<p>А более правильный, но слегка &#8220;гиковский&#8221; метод – это использование <a href="http://theapplegeek.ru/archives/1026" >defaults</a>. Конечно же, Login Items описаны в логичном для этого месте &#8211; в конфигурации loginwindow (это процесс, отвечающий за вход в систему):</p>
<pre>
$ defaults read loginwindow | grep Path
<small>Path = "/Users/ctrld/Library/PreferencePanes/Hazel.prefPane/Contents/Resources/HazelHelper.app";
Path = "/Users/ctrld/Library/PreferencePanes/RedHand.prefPane/RedHand.app";
Path = "/Applications/Zooom2.app";
Path = "/Applications/Chax.app";
Path = "/Applications/Skype.app";
Path = "/Applications/Things.app";
Path = "/Applications/LaunchBar.app";
Path = "/Applications/Mailplane.app";
Path = "/Applications/Tweetie.app";
Path = "/Applications/Evernote.app/Contents/Resources/EvernoteHelper.app";
Path = "/Applications/Dropbox.app";
Path = "/Applications/SizeUp.app";</small>
</pre>
<p>Найти, где именно находятся эти Login Items, можно было на примере одного из них (я взял Hazel):</p>
<pre>
$ defaults find Hazel | grep "in domain "
<small>Found 1 keys in domain 'com.apple.Console.LSSharedFileList': {
Found 1 keys in domain 'com.apple.Console': {
Found 2 keys in domain 'com.apple.help': {
<b>Found 1 keys in domain 'com.apple.loginitems':</b> {
Found 12 keys in domain 'com.noodlesoft.Hazel': {
Found 4 keys in domain 'com.noodlesoft.HazelHelper': {
<b>Found 1 keys in domain 'loginwindow':</b> {</small>
</pre>
<p>Так как эти данные уникальны для каждого пользователя, то настройки находятся в домашнем каталоге. А именно здесь:</p>
<pre>
$ find ~ -name com.apple.loginitems\*
<small>/Users/ctrld/Library/Preferences/com.apple.loginitems.plist</small>
</pre>
<p>Как удалить конкретную программу через команду defaults, я не нашёл &#8211; по идее нужно сформировать то ли dict, то ли array, и его удалить. Проще либо удалить через настройки Login Items, то ли отредактировать файл ~/Library/Preferences/com.apple.loginitems.plist в любом редакторе.</p>
]]></content:encoded>
			<wfw:commentRss>http://theapplegeek.ru/archives/2342/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Загрузка Mac OS X в Safe Mode</title>
		<link>http://theapplegeek.ru/archives/1938</link>
		<comments>http://theapplegeek.ru/archives/1938#comments</comments>
		<pubDate>Fri, 20 Nov 2009 12:13:31 +0000</pubDate>
		<dc:creator>ctrld</dc:creator>
				<category><![CDATA[Quick Tips]]></category>
		<category><![CDATA[boot]]></category>
		<category><![CDATA[system]]></category>

		<guid isPermaLink="false">http://theapplegeek.ru/?p=1938</guid>
		<description><![CDATA[Один из методов решения проблем, связанных с влиянием разнообразных программ, является загрузка Mac OS X в режиме Safe Mode. Во время этой загрузки производятся такие операции: проверка файловой системы и исправление прав доступа (аналог Repair Permissions в Disk Utility) загружается только минимальный набор kernel extensions из /System/Library/Extensions отключаются все шрифты, кроме системных из каталога /System/Library/Fonts [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://theapplegeek.ru/wp-content/uploads/2009/11/safemode-thumb1.png" height="125" align="right" width="150" style=" display: inline; float: right; margin: 0 0 10px 10px;" /></p>
<p>Один из методов решения проблем, связанных с влиянием разнообразных программ, является загрузка Mac OS X в режиме <noindex><a rel="nofollow" href="http://theapplegeek.ru/goto/http://support.apple.com/kb/HT1455?viewlocale=ru_RU" >Safe Mode</a></noindex>.</p>
<p>Во время этой загрузки производятся <noindex><a rel="nofollow" href="http://theapplegeek.ru/goto/http://support.apple.com/kb/HT1564" >такие операции</a></noindex>:</p>
<ul>
<li>проверка файловой системы и исправление прав доступа (аналог Repair Permissions в Disk Utility)</li>
<li>загружается только минимальный набор kernel extensions из /System/Library/Extensions</li>
<li>отключаются все шрифты, кроме системных из каталога /System/Library/Fonts</li>
<li>удаляются кеш шрифтов Apple Type Services из каталогов /private/var/folders/*/*/-Caches-/com.apple.FontRegistry. Аналог &#8211; команда &#8220;atsutil databases -remove&#8221;</li>
<li>отключаются все startup и login items</li>
<li>удаляются разделяемые кеши динамического загрузчика из /var/db/dyld</li>
</ul>
<p><span id="more-1938"></span></p>
<p>Все перечисленные действия дают хороший шанс решить проблемы с программами или файловой системой. Однако следует помнить, что не все функции Mac OS X работают в Safe Mode, например, DVD Player работать не будет. Поэтому после Safe Mode нужно перегрузиться в нормальном режиме.</p>
<p>Также нужно иметь в виду, что загрузка в Safe Mode длится дольше обычной загрузки.</p>
<p>Для загрузки в Safe Mode нужно выключить компьютер, включить его, и, как только прозвучит сигнал запуска (но не раньше), нажать и удерживать клавишу Shift. Отпустить Shift можно сразу же после появления серого значка Apple и индикатора загрузки.</p>
<p>Если нажать Shift невозможно (например, операция загрузки производится удалённо), то можно запустить команду:</p>
<pre>
$ sudo nvram boot-args="-x"
</pre>
<p>Но нужно не забыть потом восстановить нормальный режим загрузки:</p>
<pre>
$ sudo nvram boot-args=""
</pre>
<p><br class='final-break' style='clear: both' /></p>
]]></content:encoded>
			<wfw:commentRss>http://theapplegeek.ru/archives/1938/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Изменение загрузочного диска</title>
		<link>http://theapplegeek.ru/archives/1672</link>
		<comments>http://theapplegeek.ru/archives/1672#comments</comments>
		<pubDate>Wed, 04 Nov 2009 10:22:34 +0000</pubDate>
		<dc:creator>ctrld</dc:creator>
				<category><![CDATA[Quick Tips]]></category>
		<category><![CDATA[boot]]></category>

		<guid isPermaLink="false">http://theapplegeek.ru/archives/1672</guid>
		<description><![CDATA[В процессе чтения &#8220;Introduction to Command-Line Administration&#8221; мне попался полезный раздел об изменении загрузочного диска через shell. Просмотр списка дисков, с которых возможна загрузка: $ sudo systemsetup -liststartupdisks /Volumes/Mac OS X 10.6 Server/System/Library/CoreServices /Volumes/Backup 2/System/Library/CoreServices /System/Library/CoreServices Установка нового загрузочного диска: $ sudo systemsetup -setstartupdisk /System/Library/CoreServices Set Startup Disk to Path: /System/Library/CoreServices Через GUI сделать эту [...]]]></description>
			<content:encoded><![CDATA[<p style="clear: both">В процессе чтения &#8220;<noindex><a rel="nofollow" href="http://theapplegeek.ru/goto/http://images.apple.com/server/macosx/docs/Intro_Command_Line_Admin_v10.6.pdf" >Introduction to Command-Line Administration</a></noindex>&#8221; мне попался полезный раздел об изменении загрузочного диска через shell.</p>
<p style="clear: both">Просмотр списка дисков, с которых возможна загрузка:</p>
<pre style="clear: both">$ sudo systemsetup -liststartupdisks
/Volumes/Mac OS X 10.6 Server/System/Library/CoreServices
/Volumes/Backup 2/System/Library/CoreServices
/System/Library/CoreServices
</pre>
<p style="clear: both">Установка нового загрузочного диска:</p>
<pre style="clear: both">$ sudo systemsetup -setstartupdisk /System/Library/CoreServices
Set Startup Disk to Path: /System/Library/CoreServices
</pre>
<p style="clear: both">Через GUI сделать эту же операцию можно в System Preferences / Startup Disk:</p>
<p style="clear: both"><a href="http://theapplegeek.ru/wp-content/uploads/2009/11/01_startupdisk-full.png"  class="image-link" rel="lightbox"><img class="linked-to-original" src="http://theapplegeek.ru/wp-content/uploads/2009/11/01_startupdisk-thumb1.png" height="295" width="500" style=" text-align: center; display: block; margin: 0 auto 10px;" /></a></p>
<p><br class="final-break" style="clear: both" /></p>
]]></content:encoded>
			<wfw:commentRss>http://theapplegeek.ru/archives/1672/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Обзор методов клонирования загрузочного диска Mac OS X</title>
		<link>http://theapplegeek.ru/archives/1664</link>
		<comments>http://theapplegeek.ru/archives/1664#comments</comments>
		<pubDate>Wed, 04 Nov 2009 09:34:54 +0000</pubDate>
		<dc:creator>ctrld</dc:creator>
				<category><![CDATA[Статьи]]></category>
		<category><![CDATA[boot]]></category>
		<category><![CDATA[disk]]></category>
		<category><![CDATA[system]]></category>

		<guid isPermaLink="false">http://theapplegeek.ru/?p=1664</guid>
		<description><![CDATA[Во время поиска информации, как склонировать систему в образ для разворачивания на другой рабочей станции или в VMWare, я наткнулся на интересную статью &#8220;How to Create a Bootable Backup of Mac OS X (Cloning Mac OS X disks)&#8220;, написанную разработчиком бесплатной утилиты &#8220;Carbon Copy Cloner&#8220;. В PDF-документе &#8220;Introduction to Command-Line Administration&#8221; Apple рекомендует три командно-строковые [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://theapplegeek.ru/wp-content/uploads/2009/11/01_backup-thumb1.png" height="72" align="right" width="150" style=" display: inline; float: right; margin: 0 0 10px 10px;" /></p>
<p>Во время поиска информации, как склонировать систему в образ для разворачивания на другой рабочей станции или в VMWare, я наткнулся на интересную статью &#8220;<noindex><a rel="nofollow" href="http://theapplegeek.ru/goto/http://www.bombich.com/mactips/image.html" >How to Create a Bootable Backup of Mac OS X (Cloning Mac OS X disks)</a></noindex>&#8220;, написанную разработчиком бесплатной утилиты &#8220;<noindex><a rel="nofollow" href="http://theapplegeek.ru/goto/http://www.bombich.com/index.html" >Carbon Copy Cloner</a></noindex>&#8220;. В PDF-документе &#8220;<noindex><a rel="nofollow" href="http://theapplegeek.ru/goto/http://images.apple.com/server/macosx/docs/Intro_Command_Line_Admin_v10.6.pdf" >Introduction to Command-Line Administration&#8221;</a></noindex> Apple рекомендует три командно-строковые утилиты для резервного копирования данных &#8211; ditto, rsync и asr. Тема мне показалась интересной, поэтому я решил испытать эти методы.</p>
<p>Перед клонированием очень желательно на исходном диске сделать <noindex><a rel="nofollow" href="http://theapplegeek.ru/goto/http://support.apple.com/kb/HT1452" >repair permissions</a></noindex> с помощью Disk Utility и удалить все данные на диске, куда будет производиться клонирование. Я переразбил внешний USB-диск, создав по одному разделу для каждого метода клонирования, но в реальной ситуации достаточно создать один раздел (не забывайте, что нужно использовать схему разделов GUID). Раздел, на который производится клонирование, называется Backup.</p>
<p><span id="more-1664"></span></p>
<h2><noindex><a rel="nofollow" href="http://theapplegeek.ru/goto/http://developer.apple.com/mac/library/DOCUMENTATION/Darwin/Reference/ManPages/man1/ditto.1.html" >ditto &#8211; copy directory hierarchies, create and extract archives</a></noindex></h2>
<p>При копировании <noindex><a rel="nofollow" href="http://theapplegeek.ru/goto/http://developer.apple.com/mac/library/DOCUMENTATION/Darwin/Reference/ManPages/man1/ditto.1.html" >ditto</a></noindex> сохраняет <noindex><a rel="nofollow" href="http://theapplegeek.ru/goto/http://en.wikipedia.org/wiki/Resource_fork" >resource forks</a></noindex>, метаданные HFS, <noindex><a rel="nofollow" href="http://theapplegeek.ru/goto/http://en.wikipedia.org/wiki/Extended_file_attributes" >расширенные файловые атрибуты</a></noindex> и <noindex><a rel="nofollow" href="http://theapplegeek.ru/goto/http://www.makemacwork.com/control-file-access-with-acls.htm" >ACL</a></noindex>. Ключ &#8220;-X&#8221; говорит о том, что не нужно копировать другие разделы, смонтированные в указанную файловую систему.</p>
<pre>
$ sudo ditto -X / /Volumes/Backup
</pre>
<p>Желающие наблюдать за ходом копирования могут включить опцию &#8220;-v&#8221; (выводить название копируемого каталога), а самые жадные до деталей &#8211; &#8220;-V&#8221; (сообщать о копировании каждого файла, симлинка и файла устройства).</p>
<p>После клонирования перезагружаемся с нажатой клавишей &#8220;Option&#8221; и выбираем нужный раздел:</p>
<p><a href="http://theapplegeek.ru/wp-content/uploads/2009/11/02_backup-full.png"  class="image-link" rel="lightbox"><img class="linked-to-original" src="http://theapplegeek.ru/wp-content/uploads/2009/11/02_backup-thumb.png" height="272" width="500" style=" text-align: center; display: block; margin: 0 auto 10px;" /></a></p>
<p>Название самого исходного раздела не скопировалось &#8211; вместо &#8220;Mac OS X 10.6 Server&#8221; раздел называется &#8220;EFI Boot&#8221;. Операционная система загрузилась, но при старте выдалось сообщение о восстановлении шрифтов:</p>
<p><a href="http://theapplegeek.ru/wp-content/uploads/2009/11/03_backup-full.png"  class="image-link" rel="lightbox"><img class="linked-to-original" src="http://theapplegeek.ru/wp-content/uploads/2009/11/03_backup-thumb.png" height="298" width="500" style=" text-align: center; display: block; margin: 0 auto 10px;" /></a></p>
<p>Ещё одна проблема &#8211; при старте, например, Terminal.app, стали выдаваться сообщения &#8220;dyld shared cache file was build against a different libSystem.dylib&#8221;:</p>
<p><a href="http://theapplegeek.ru/wp-content/uploads/2009/11/04_backup-full.png"  class="image-link" rel="lightbox"><img class="linked-to-original" src="http://theapplegeek.ru/wp-content/uploads/2009/11/04_backup-thumb.png" height="363" width="500" style=" text-align: center; display: block; margin: 0 auto 10px;" /></a></p>
<p>Это обозначает, что необходимо перестроить кеши:</p>
<pre>
$ sudo update_dyld_shared_cache
</pre>
<p>Также не помешает сделать &#8220;repair permissions&#8221;:</p>
<pre>
$ diskutil repairPermissions /
</pre>
<p>После этого система работает нормально (глубоко функционирование я не тестировал, но основные сервисы работали).</p>
<h2>Рекомендации по очистке файлов после клонирования</h2>
<p>Перед перезагрузкой можно удалить вспомогательные файлы, swap и кеши (<noindex><a rel="nofollow" href="http://theapplegeek.ru/goto/http://www.afp548.com/article.php?story=20040726230142403" >afp548</a></noindex>), но не все из них есть в Snow Leopard, поэтому нужно этот вопрос ещё проработать (пока привожу &#8220;asis&#8221;):</p>
<pre>
sudo rm /Volumes/Backup/var/db/BootCache.playlist
sudo rm /Volumes/Backup/var/db/volinfo.database
sudo rm /Volumes/Backup/System/Library/Extensions.kextcache
sudo rm /Volumes/Backup/System/Library/Extensions.mkext
sudo rm -r /Volumes/Backup/var/vm/swap*
</pre>
<h2><noindex><a rel="nofollow" href="http://theapplegeek.ru/goto/http://developer.apple.com/mac/library/documentation/Darwin/Reference/ManPages/man1/rsync.1.html" >rsync</a></noindex></h2>
<p>Отличная альтернатива &#8211; <noindex><a rel="nofollow" href="http://theapplegeek.ru/goto/http://developer.apple.com/mac/library/documentation/Darwin/Reference/ManPages/man1/rsync.1.html" >rsync</a></noindex>. В последнее время я его очень активно использую для резервного копирования. Огромное преимущество метода в том, что rsync позволяет делать обновление только изменённых с прошлого сеанса клонирования данных. Это позволяет делать инкрементальное обновление данных и иметь актуальную копию систему.</p>
<pre>
$ sudo rsync -xrlptgoEv --progress --delete / /Volumes/Backup
</pre>
<p>Ключи:</p>
<ul>
<li>-x. То же, что и -X у ditto &#8211; не копировать другие разделы. Или же не траверсировать на другие устройства. Или don&#8217;t cross filesystem boundaries. Что кому понятнее.</li>
<li>-r. Рекурсивно копировать каталоги.</li>
<li>-l. Копировать симлинки как симлинки, а не как файлы и каталоги.</li>
<li>-p. Сохранять права.</li>
<li>-t. Сохранять время (создания, модификации, etc).</li>
<li>-g. Сохранять группы, файлы устройств и специальные файлы.</li>
<li>-o. Сохранять владельца.</li>
<li>-E. Копировать расширенные атрибуты и resource forks.</li>
<li>-v. Сообщать о процессе работы (файлы, каталоги, etc).</li>
<li>&#8211;progress. Сообщать о процессе копирования. -v можно отключить, но мне интересно наблюдать за процессом.</li>
<li>&#8211;delete. Удалять файлы, отсутствующие в исходном каталоге, из каталога, в который производится копирование.</li>
</ul>
<p>После завершения клонирования перегружаемся. Точно та же картина &#8211; раздел называется &#8220;EFI Boot&#8221;, фонты восстановлены и есть проблема с кешами. Выполняем команды обновление кеша и repair permissions.</p>
<p><a href="http://theapplegeek.ru/wp-content/uploads/2009/11/05_backup-full.png"  class="image-link" rel="lightbox"><img class="linked-to-original" src="http://theapplegeek.ru/wp-content/uploads/2009/11/05_backup-thumb.png" height="253" width="500" style=" text-align: center; display: block; margin: 0 auto 10px;" /></a></p>
<h2><noindex><a rel="nofollow" href="http://theapplegeek.ru/goto/http://developer.apple.com/mac/library/documentation/Darwin/Reference/ManPages/man8/asr.8.html" >asr &#8211; Apple Software Restore; copy volumes (e.g. from disk images)</a></noindex></h2>
<p>Самый беспроблемный метод при использовании CLI &#8211; это <noindex><a rel="nofollow" href="http://theapplegeek.ru/goto/http://developer.apple.com/mac/library/documentation/Darwin/Reference/ManPages/man8/asr.8.html" >ASR</a></noindex>. При клонировании правильно был назван склонированный раздел, восстановления фонтов не было, кеши пересоздавать не пришлось. Ключи вполне понятны и без объяснения.</p>
<pre>
$ sudo asr -source / -target /Volumes/Backup -erase -noprompt
</pre>
<p><a href="http://theapplegeek.ru/wp-content/uploads/2009/11/06_backup-full.png"  class="image-link" rel="lightbox"><img class="linked-to-original" src="http://theapplegeek.ru/wp-content/uploads/2009/11/06_backup-thumb.png" height="207" width="499" style=" text-align: center; display: block; margin: 0 auto 10px;" /></a></p>
<p>Можно также посмотреть статью на сайте <noindex><a rel="nofollow" href="http://theapplegeek.ru/goto/http://www.afp548.com/article.php?story=20040726230142403" >afp548.com</a></noindex>.</p>
<h2><noindex><a rel="nofollow" href="http://theapplegeek.ru/goto/http://www.bombich.com/ccc_features.html" >Carbon Copy Cloner</a></noindex></h2>
<p>Это <noindex><a rel="nofollow" href="http://theapplegeek.ru/goto/http://www.bombich.com/ccc_features.html" >бесплатная утилита</a></noindex> (принимаются пожертвования). Все функции можно посмотреть <noindex><a rel="nofollow" href="http://theapplegeek.ru/goto/http://www.bombich.com/ccc_features.html" >на сайте разработчика</a></noindex>. Очень полезные возможности &#8211; инкрементальное клонирование (как в описанном выше rsync) и работа по расписанию.</p>
<p>Никогда с этой утилитой не работал. Мне выдалось сообщение &#8220;Backup is unsuitable given the source volume and options chosen&#8221;, так как раздел, на который я хотел клонировать свой диск, был слишком мал и протестировать я не смог.</p>
<p><a href="http://theapplegeek.ru/wp-content/uploads/2009/11/07_backup-full.png"  class="image-link" rel="lightbox"><img class="linked-to-original" src="http://theapplegeek.ru/wp-content/uploads/2009/11/07_backup-thumb.png" height="420" width="500" style=" text-align: center; display: block; margin: 0 auto 10px;" /></a></p>
<p>Под Snow Leopard нужно ставить последнюю версию (3.3 и выше).</p>
<h2><noindex><a rel="nofollow" href="http://theapplegeek.ru/goto/http://www.shirt-pocket.com/SuperDuper/SuperDuperDescription.html" >SuperDuper!</a></noindex></h2>
<p><noindex><a rel="nofollow" href="http://theapplegeek.ru/goto/http://www.shirt-pocket.com/SuperDuper/SuperDuperDescription.html" >Коммерческая программа</a></noindex> ($27.95), активно обновляется, поддержка Snow Leopard появилась сразу же в районе 28 августа. Я ею активно пользуюсь для клонирования дисков со своими проектами. На загрузочных дисках не испытывал, но должна работать без проблем.</p>
<p><a href="http://theapplegeek.ru/wp-content/uploads/2009/11/08_backup-full.png"  class="image-link" rel="lightbox"><img class="linked-to-original" src="http://theapplegeek.ru/wp-content/uploads/2009/11/08_backup-thumb.png" height="309" width="500" style=" text-align: center; display: block; margin: 0 auto 10px;" /></a></p>
<h2>Другие методы</h2>
<p>Можно клонировать диски через Disk Utility (я всегда так и делаю при апгрейде диска), но очень желательно это делать не на живой системе, а загрузиться с установочного DVD. Также я не рассматриваю <noindex><a rel="nofollow" href="http://theapplegeek.ru/goto/http://developer.apple.com/mac/library/documentation/Darwin/Reference/ManPages/man1/dd.1.html" >dd</a></noindex> &#8211; для клонирования живой системы я бы не рискнул их применять, нужно грузиться с DVD или в Single User Mode. И <noindex><a rel="nofollow" href="http://theapplegeek.ru/goto/http://developer.apple.com/mac/library/DOCUMENTATION/Darwin/Reference/ManPages/man8/dump.8.html" >dump</a></noindex> не подходит &#8211; &#8220;This copy of dump is supplied only for completeness and is expected to have deficiencies.  It will likely disappear in the future&#8221;.</p>
<h2>Выводы</h2>
<p>Все методы, описанные в обзоре, хороши. Я остановился на использовании asr для полного копирования, rsync для инкрементного из shell, и на SuperDuper! из GUI.</p>
<p><br class="final-break" /></p>
]]></content:encoded>
			<wfw:commentRss>http://theapplegeek.ru/archives/1664/feed</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>Схемы разделов в Mac OS X. GUID partition table. Часть 1 (MBR)</title>
		<link>http://theapplegeek.ru/archives/1428</link>
		<comments>http://theapplegeek.ru/archives/1428#comments</comments>
		<pubDate>Wed, 28 Oct 2009 15:57:47 +0000</pubDate>
		<dc:creator>ctrld</dc:creator>
				<category><![CDATA[Статьи]]></category>
		<category><![CDATA[boot]]></category>
		<category><![CDATA[filesystems]]></category>
		<category><![CDATA[system]]></category>

		<guid isPermaLink="false">http://theapplegeek.ru/?p=1428</guid>
		<description><![CDATA[Как я писал ранее, схема разделов Apple Partition Map не приспособлена к использованию на больших дисках &#8211; из-за 32-битных счётчиков максимальный размер диска при размере блока 512 байт может быть лишь 2 TB. Apple серьёзно прорабатывала возможность адаптации Apple Partition Map для поддержки больших дисков, однако требуемые изменения привели бы к неработоспособности всех инструментов, работающих [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://theapplegeek.ru/wp-content/uploads/2009/10/01_gpt_mbr-full.png"  class="image-link" rel="lightbox[1428]"><img class="linked-to-original" src="http://theapplegeek.ru/wp-content/uploads/2009/10/01_gpt_mbr-thumb.png" height="131" align="right" width="150" style=" display: inline; float: right; margin: 0 0 10px 10px;" /></a></p>
<p><a href="http://theapplegeek.ru/archives/1370" >Как я писал ранее</a>, схема разделов Apple Partition Map не приспособлена к использованию на больших дисках &#8211; из-за 32-битных счётчиков максимальный размер диска при размере блока 512 байт может быть лишь 2 TB.</p>
<p>Apple серьёзно прорабатывала возможность адаптации Apple Partition Map для поддержки больших дисков, однако требуемые изменения привели бы к неработоспособности всех инструментов, работающих с разделами, поэтому было принято разумное решение переключиться на принципиально новую схему. После серьёзных размышлений Apple решила использовать GPT.</p>
<p>Схема разделов <noindex><a rel="nofollow" href="http://theapplegeek.ru/goto/http://en.wikipedia.org/wiki/GUID_Partition_Table" >GUID partition table</a></noindex> (GPT) была представлена Intel как часть реализации комплексной задачи по переходу на современное firmware для Intel-совместимых компьютеров. Традиционно на них было установлено firmware <noindex><a rel="nofollow" href="http://theapplegeek.ru/goto/http://en.wikipedia.org/wiki/BIOS" >BIOS</a></noindex>, использующее схему разделов <noindex><a rel="nofollow" href="http://theapplegeek.ru/goto/http://en.wikipedia.org/wiki/Master_boot_record" >Master Boot Record</a></noindex> (MBR). Схема MBR имела большое количество ограничений, не позволяющих использовать её на современных компьютерах. Для преодоления этих ограничений компания Intel разработала современное firmware <noindex><a rel="nofollow" href="http://theapplegeek.ru/goto/http://en.wikipedia.org/wiki/Extensible_Firmware_Interface" >Extensible Firmware Interface</a></noindex> (EFI), включающее в себя новую схему разделов GPT.</p>
<p><span id="more-1428"></span></p>
<p>Одним из больших преимуществ схемы GPT было то, что она была закреплена в формальных стандартах (документы доступны для списывания):</p>
<ul>
<li><noindex><a rel="nofollow" href="http://theapplegeek.ru/goto/http://www.intel.com/technology/efi/main_specification.htm" >Extensible Firmware Interface Specification 1.10</a></noindex>, раздел 11.2.2, страница 367.</li>
<li><noindex><a rel="nofollow" href="http://theapplegeek.ru/goto/http://www.uefi.org/specs/" >UEFI Specification Version 2.3</a></noindex>, раздел 5 &#8220;GUID Partition Table (GPT) Format&#8221;, страница 91.</li>
</ul>
<p>В статье я использую такие источники:</p>
<ul>
<li>&#8220;<noindex><a rel="nofollow" href="http://theapplegeek.ru/goto/http://developer.apple.com/mac/library/technotes/tn2006/tn2166.html" >Technical Note TN2166. Secrets of the GPT.</a></noindex>&#8220;</li>
<li><noindex><a rel="nofollow" href="http://theapplegeek.ru/goto/http://osxbook.com/" >Книга &#8220;Mac OS X Internals. A Systems Approach&#8221;.</a></noindex></li>
<li><noindex><a rel="nofollow" href="http://theapplegeek.ru/goto/http://www.mactech.com/articles/mactech/Vol.23/23.03/APMtoGPT/index.html" >Apple’s Transition from Apple Partition Map to the GUID Partition Tabl</a></noindex></li>
<li>Стандарт &#8220;<noindex><a rel="nofollow" href="http://theapplegeek.ru/goto/http://www.intel.com/technology/efi/main_specification.htm" >Extensible Firmware Interface Specification 1.10</a></noindex>&#8220;</li>
<li>Стандарт &#8220;<noindex><a rel="nofollow" href="http://theapplegeek.ru/goto/http://www.uefi.org/specs/" >UEFI Specification Version 2.3</a></noindex>&#8220;</li>
</ul>
<p>Вопрос о GPT не помещается в одну статью, поэтому я разобью его на три части:</p>
<ol>
<li><a href="http://theapplegeek.ru/archives/1428" >Protective MBR</a></li>
<li>Partition Table Header</li>
<li>Partition Entry Array</li>
</ol>
<h2>Обзор GPT</h2>
<p>GPT простая, но эффективная схема разделов. Общая схема использования блоков показана в таблице (n &#8211; количество блоков на диске, b &#8211; количество блоков, использующихся для описания массива с записями о разделах, обычно 32):</p>
<p style="clear: both"><a href="http://theapplegeek.ru/wp-content/uploads/2009/10/02_gpt_mbr-full.png"  class="image-link" rel="lightbox[1428]"><img class="linked-to-original" src="http://theapplegeek.ru/wp-content/uploads/2009/10/02_gpt_mbr-thumb.png" height="228" width="366" style=" text-align: center; display: block; margin: 0 auto 10px;" /></a></p>
<p>Меня лично восхитил блок 0 &#8220;Protective MBR&#8221; &#8211; это отличная &#8220;защита от дурака&#8221;. В нём в формате MBR вся область, используемая под схему разделов GPT и разделы GPT определены, как один раздел. Таким образом программы работы с разделами, ничего не знающие о GPT, не смогут случайно ничего изменить (конечно же, от намеренного изменения никто защитить не сможет). Такие программы видят диск GPT, как диск MBR с одним разделом неизвестного типа (0xEE).</p>
<p>GPT использует логическую адресацию блоков на диске <noindex><a rel="nofollow" href="http://theapplegeek.ru/goto/http://en.wikipedia.org/wiki/Logical_block_addressing" >Logical Block Addressing</a></noindex> (LBA) в отличие от старой адресации  <noindex><a rel="nofollow" href="http://theapplegeek.ru/goto/http://en.wikipedia.org/wiki/Cylinder-head-sector" >Cylinder-Head-Sector</a></noindex> (CHS). Размер блока обычно 512 байт, но он может быть и другим. Штатных утилит для просмотра размера блока я не нашёл, <a href="http://theapplegeek.ru/archives/1390" >поэтому использую программу</a> из книги &#8220;Mac OS X Internals&#8221; &#8211; для моего диска он действительно 512 байт.</p>
<p>В графическом виде GPT <noindex><a rel="nofollow" href="http://theapplegeek.ru/goto/http://en.wikipedia.org/wiki/GUID_Partition_Table" >выглядит так</a></noindex> (128 разделов &#8211; столько зарезервировано в Windows 2003 Server, насчёт Mac OS X посмотрим дальше):</p>
<p style="clear: both"><a href="http://theapplegeek.ru/wp-content/uploads/2009/10/03_gpt_mbr-full.png"  class="image-link" rel="lightbox[1428]"><img class="linked-to-original" src="http://theapplegeek.ru/wp-content/uploads/2009/10/03_gpt_mbr-thumb.png" height="520" width="395" style=" text-align: center; display: block; margin: 0 auto 10px;" /></a></p>
<p>Для экспериментов будем использовать USB-диск со схемой разделов GPT и двумя разделами:</p>
<p style="clear: both"><a href="http://theapplegeek.ru/wp-content/uploads/2009/10/04_gpt_mbr-full.png"  class="image-link" rel="lightbox[1428]"><img class="linked-to-original" src="http://theapplegeek.ru/wp-content/uploads/2009/10/04_gpt_mbr-thumb.png" height="357" width="500" style=" text-align: center; display: block; margin: 0 auto 10px;" /></a></p>
<h2>LBA 0. Protective MBR</h2>
<p>Формат MBR описан в таблице (из Unified Extensible Firmware Interface Specification):</p>
<table cellspacing="1" cellpadding="4" border="0" id="kbtable">
<tbody>
<tr id="kbheader">
<td>Mnemonic</td>
<td>Byte</td>
<td>Length</td>
<td>Description</td>
</tr>
<tr id="odd">
<td>BootCode</td>
<td>0</td>
<td>440</td>
<td>Code used on a legacy system to select a partition record and load the first block (sector) of the partition pointed to by the partition record. This code is not executed on UEFI systems.</td>
</tr>
<tr id="even">
<td>UniqueMBRSignature</td>
<td>440</td>
<td>4</td>
<td>Unique Disk Signature, this is an optional feature and not on all hard drives. This value is always written by the OS and is never written by EFI firmware.</td>
</tr>
<tr id="odd">
<td>Unknown</td>
<td>444</td>
<td>2</td>
<td>Unknown</td>
</tr>
<tr id="even">
<td>PartitionRecord</td>
<td>446</td>
<td>16*4</td>
<td>Array of four legacy MBR partition records (смотри следующую таблицу).</td>
</tr>
<tr id="odd">
<td>Signature</td>
<td>510</td>
<td>2</td>
<td>Must be 0xaa55 (i.e., byte 510 contains 0&#215;55 and byte 511 contains 0xaa).</td>
</tr>
<tr id="even">
<td>Reserved</td>
<td>512</td>
<td>BlockSize &#8211; 512</td>
<td>The rest of the logical block, if any, is reserved.</td>
</tr>
</tbody>
</table>
<p>PartitionRecord описан в следующей таблице. В описании указан общий формат, а после пометки GPT то, что должно быть для Protective MBR.</p>
<table cellspacing="1" cellpadding="4" border="0" id="kbtable">
<tbody>
<tr id="kbheader">
<td>Mnemonic</td>
<td>Byte</td>
<td>Length</td>
<td>Description</td>
</tr>
<tr id="odd">
<td>BootIndicator</td>
<td>0</td>
<td>1</td>
<td>Not used by EFI firmware. 0&#215;80 indicates that this is the bootable legacy partition. (GPT) Must be set to zero to indicate nonbootable partition.</td>
</tr>
<tr id="even">
<td>StartingCHS</td>
<td>1</td>
<td>3</td>
<td>Start of partition in CHS address format, not used by EFI firmware. (GPT) Must be 0&#215;000200, corresponding to the StartingLBA.</td>
</tr>
<tr id="odd">
<td>OSType</td>
<td>4</td>
<td>1</td>
<td>Type of partition. 0xEF defines an EFI system partition. 0xEE is used by a protective MBR (Table 12) to define a fake partition covering the entire disk. Other values are used by legacy operating systems, and are allocated independently of the UEFI specification. (GPT) Must be 0xEE.</td>
</tr>
<tr id="even">
<td>EndingCHS</td>
<td>5</td>
<td>3</td>
<td>End of partition in CHS address format, not used by EFI firmware. (GPT) Set to the CHS address of the last logical block on the disk. Must be set to 0xFFFFFF if it is not possible to represent the value in these fields.</td>
</tr>
<tr id="odd">
<td>StartingLBA</td>
<td>8</td>
<td>4</td>
<td>Starting LBA of the partition on the disk. Used by EFI firmware to define the start of the partition. (GPT) Must be 0&#215;00000001.</td>
</tr>
<tr id="even">
<td>SizeInLBA</td>
<td>12</td>
<td>4</td>
<td>Size of the partition in LBA units of logical blocks. Used by EFI firmware to determine the size of the partition. (GPT) Size of the disk minus one. Set to 0xFFFFFFFF if the size of the disk is too large to be represented in this field.</td>
</tr>
</tbody>
</table>
<p>Первый (нулевой) блок содержит такие данные:</p>
<pre>
$ sudo dd if=/dev/disk4 of=/dev/stdout bs=512 count=1 skip=0 2&gt;/dev/null | hexdump -C
00000000  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
*
000001b0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 fe  |................|
000001c0  ff ff ee fe ff ff 01 00  00 00 af ea 42 25 00 00  |............B%..|
000001d0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
*
000001f0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 55 aa  |..............U.|
00000200
</pre>
<ul>MBR:</p>
<li>0000 440 bytes. BootCode. Все нули.</li>
<li>01B8 4 bytes. UniqueMBRSignature. 00 00 00 00.</li>
<li>01BC 2 bytes. Unknown. 00 00.</li>
<li>01BE 64 bytes. PartitionRecord (4 x 16-ти байтовых записей в формате IBM Partition Table). 00 fe ff ff ee fe ff ff 01 00 00 00 af ea 42 25</li>
<li>01FE 2 bytes. MBR signature (0xAA55). 55 AA &#8211; в обратной нотации (<noindex><a rel="nofollow" href="http://theapplegeek.ru/goto/http://en.wikipedia.org/wiki/Master_boot_record#cite_note-endianness-0" >так уж повелось</a></noindex>).</li>
<li>Если размер блока больше 512 байт, то остальное &#8211; Reserved. Для нашего случая блок &#8211; 512</li>
</ul>
<ul>Рассмотрим информацию о разделе (00 fe ff ff ee fe ff ff 01 00 00 00 af ea 42 25)</p>
<li>0&#215;00 1 byte. <i>BootIndicator (0&#215;80 = bootable/active, 0&#215;00 = non-bootable, other = invalid).</i> 00 &#8211; non-bootable.</li>
<li>0&#215;01 3 bytes. <i><noindex><a rel="nofollow" href="http://theapplegeek.ru/goto/http://en.wikipedia.org/wiki/Cylinder-head-sector" >StartingCHS</a></noindex>.</i> fe ff ff. Это древняя жуть, не будем искать разгадку &#8211; кто знает, куда нас заведёт это знание? Хорошо, что в EFI это не используется.</li>
<li>0&#215;04 1 byte. <i>OSType.</i> <noindex><a rel="nofollow" href="http://theapplegeek.ru/goto/http://www.win.tue.nl/~aeb/partitions/partition_types-1.html" >Есть хороший ресурс</a></noindex> со всеми типами разделов. 0xEE = Indication that this legacy MBR is followed by an EFI header.</li>
<li>0&#215;05 3 bytes. <i>EndingCHS.</i> fe ff ff. Аналогично.</li>
<li>0&#215;08 4 bytes. <i>StartingLBA.</i> 01 00 00 00 в обратной нотации читается как 00 00 00 01. Вспоминаем таблицу &#8211; &#8220;Must be 0&#215;00000001&#8243;.</li>
<li>0x0C 4 bytes. <i>SizeInLBA in <noindex><a rel="nofollow" href="http://theapplegeek.ru/goto/http://en.wikipedia.org/wiki/Endianness#Little-endian" >little-endian format</a></noindex>.</i> af ea 42 25 = 0x2542eaaf = 625142447 блоков</li>
</ul>
<p>Для проверки количества блоков посмотрим информацию по диску:</p>
<pre>
$ diskutil info disk4 | grep "Total Size"
   Total Size:               320.1 GB (320072933376 Bytes) (exactly 625142448 512-Byte-Blocks)
</pre>
<p>Количество блоков в разделе 625142447, один блок &#8211; MBR, что даёт требуемое количество блоков на диске 625142448. В итоге программы, знающие только об MBR будут действительно видеть диск MBR с одним разделом типа 0xEE.</p>
<p><b>To be continued&#8230;</b></p>
<p>В следующей части разберём &#8220;Partition Table Header&#8221;.</p>
]]></content:encoded>
			<wfw:commentRss>http://theapplegeek.ru/archives/1428/feed</wfw:commentRss>
		<slash:comments>15</slash:comments>
		</item>
		<item>
		<title>Apple Partition Map. Формат &#8220;Universal CD&#8221;</title>
		<link>http://theapplegeek.ru/archives/1386</link>
		<comments>http://theapplegeek.ru/archives/1386#comments</comments>
		<pubDate>Mon, 26 Oct 2009 15:08:19 +0000</pubDate>
		<dc:creator>ctrld</dc:creator>
				<category><![CDATA[Статьи]]></category>
		<category><![CDATA[boot]]></category>
		<category><![CDATA[filesystems]]></category>
		<category><![CDATA[system]]></category>

		<guid isPermaLink="false">http://theapplegeek.ru/?p=1386</guid>
		<description><![CDATA[В предыдущей статье я привёл описание раскладки разделов &#8220;Universal HD&#8221; для Apple Partition Map. Спасибо @akaDimiG &#8211; он натолнул меня на мысль посмотреть на таблицу разделов на установочном диске Mac OS X. Здесь используется раскладка APM &#8220;Universal CD&#8221;. Mac OS X 10.5 Install DVD $ pdisk /dev/rdisk3 -dump Partition map (with 2048 byte blocks) on [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://theapplegeek.ru/wp-content/uploads/2009/10/01_apm-thumb11.png" height="131" align="right" width="150" style=" display: inline; float: right; margin: 0 0 10px 10px;" /></p>
<p><a href="http://theapplegeek.ru/archives/1370" >В предыдущей статье</a> я привёл описание раскладки разделов &#8220;Universal HD&#8221; для Apple Partition Map. Спасибо <noindex><a rel="nofollow" href="http://theapplegeek.ru/goto/http://twitter.com/akaDimiG" >@akaDimiG</a></noindex> &#8211; он натолнул меня на мысль посмотреть на таблицу разделов на установочном диске Mac OS X. Здесь используется раскладка APM &#8220;Universal CD&#8221;.</p>
<h2>Mac OS X 10.5 Install DVD</h2>
<pre>
$ pdisk /dev/rdisk3 -dump

Partition map (with 2048 byte blocks) on '/dev/rdisk3'
 #:                type name       length   base    ( size )
 1: Apple_partition_map Apple          15 @ 1
 2:  Apple_Driver_ATAPI Macintosh  302596 @ 16      (591.0M)
 3:           Apple_HFS Mac_OS_X  3756752 @ 302612  (  7.2G)
 4:          Apple_Free                 4 @ 4059364

Device block size=2048, Number of Blocks=4059368 (7.7G)
DeviceType=0x0, DeviceId=0x0
</pre>
<p><span id="more-1386"></span></p>
<h2>Mac OS X 10.4 Install DVD</h2>
<pre>
$ pdisk /dev/rdisk3 -dump

Partition map (with 512 byte blocks) on '/dev/rdisk3'
 #:                type name        length   base     ( size )
 1: Apple_partition_map Apple           63 @ 1
 2:  Apple_Driver_ATAPI*Macintosh        8 @ 64
 3:           Apple_HFS Mac_OS_X  11059160 @ 72       (  5.3G)
 4:          Apple_Free                 10 @ 11059232

Device block size=512, Number of Blocks=11059242 (5.3G)
DeviceType=0x0, DeviceId=0x0
Drivers-
1:   4 @ 64, type=0x701
</pre>
<p>Обратите внимание на раздел 2 (Apple_Driver_ATAPI) &#8211; здесь располагаются драйвера под Mac OS 9 для ATAPI CD.</p>
<p><br class='final-break' style='clear: both' /></p>
]]></content:encoded>
			<wfw:commentRss>http://theapplegeek.ru/archives/1386/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Схемы разделов в Mac OS X. Apple Partition Map</title>
		<link>http://theapplegeek.ru/archives/1370</link>
		<comments>http://theapplegeek.ru/archives/1370#comments</comments>
		<pubDate>Mon, 26 Oct 2009 06:00:32 +0000</pubDate>
		<dc:creator>ctrld</dc:creator>
				<category><![CDATA[Статьи]]></category>
		<category><![CDATA[boot]]></category>
		<category><![CDATA[filesystems]]></category>
		<category><![CDATA[system]]></category>

		<guid isPermaLink="false">http://theapplegeek.ru/?p=1370</guid>
		<description><![CDATA[Тот, кто купил Мак по крайней мере в районе 2006 года, при переходе на Snow Leopard мог столкнуться с неприятным сюрпризом &#8211; Snow Leopard устанавливается только на диски со схемой разделов GUID partition table (GPT), а диск изначально был размечен под Apple Partition Map. Для меня процесс &#8220;перетасовки&#8221; жёстких дисков привычен, но даже мне пришлось [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://theapplegeek.ru/wp-content/uploads/2009/10/01_apm-thumb1.png" height="131" align="right" width="150" style=" display: inline; float: right; margin: 0 0 10px 10px;" /></p>
<p>Тот, кто купил Мак по крайней мере в районе 2006 года, при переходе на Snow Leopard мог столкнуться с неприятным сюрпризом &#8211; Snow Leopard устанавливается только на диски со схемой разделов GUID partition table (GPT), а диск изначально был размечен под Apple Partition Map. Для меня процесс &#8220;перетасовки&#8221; жёстких дисков привычен, но даже мне пришлось попотеть, занимаясь созданием на внешнем диске GPT, а затем с помощью <noindex><a rel="nofollow" href="http://theapplegeek.ru/goto/http://www.shirt-pocket.com/SuperDuper/SuperDuperDescription.html" >SuperDuper!</a></noindex> дважды переливать содержимое диска 320 GB. Процесс обновления до Snow Leopard в итоге у меня удлинился ровно на 20 часов.</p>
<p>В этой статье я хочу остановиться на схеме разделов &#8220;Apple Partition Map&#8221;, а в следующей рассмотреть GUID partition table (GPT). В процессе изучения я использовал такие материалы:</p>
<ul>
<li>&#8220;<noindex><a rel="nofollow" href="http://theapplegeek.ru/goto/http://developer.apple.com/mac/library/technotes/tn2006/tn2166.html" >Technical Note TN2166. Secrets of the GPT</a></noindex>&#8220;;</li>
<li>&#8220;<noindex><a rel="nofollow" href="http://theapplegeek.ru/goto/http://www.mactech.com/articles/mactech/Vol.23/23.03/APMtoGPT/index.html" >Apple&#8217;s Transition from Apple Partition Map to the GUID Partition Table</a></noindex>&#8220;;</li>
<li>Книга &#8220;<noindex><a rel="nofollow" href="http://theapplegeek.ru/goto/http://osxbook.com/" >Mac OS X Internals. A Systems Approach</a></noindex>&#8220;.</li>
</ul>
<p>Воспользуюсь случаем и порекомендую библиотеку O&#8217;Reilly <noindex><a rel="nofollow" href="http://theapplegeek.ru/goto/http://www.safaribooksonline.com" >Safari Books Online</a></noindex>, подписавшись на которую, вы сможете получить доступ к огромному количеству технической литературы. Книгу &#8220;Mac OS X Internals&#8221; я списал в формате PDF, так как у меня накопилось достаточное количество Download Tokens.</p>
<p style="clear: both"><a href="http://theapplegeek.ru/wp-content/uploads/2009/10/02_apm-full.png"  class="image-link" rel="lightbox"><img class="linked-to-original" src="http://theapplegeek.ru/wp-content/uploads/2009/10/02_apm-thumb.png" height="37" width="500" style=" text-align: center; display: block; margin: 0 auto 10px;" /></a></p>
<p><span id="more-1370"></span></p>
<h2>Apple Partition Map</h2>
<p>Схема разделов Apple Partition Map (APM) была представлена на Macintosh II в 1987 году. Её дизайн был хорош, и она продержалась с небольшими изменениями на протяжении двадцати лет. Но за последние годы начали проявляться её ограничения. Различные переменные, адресующие блоки, описаны как 32-битные unsigned long, в итоге со стандартным размером блока 512 байт максимальный размер диска может быть 2 TB. Диски размером 2 TB уже доступны даже в сегменте desktop-компьютеров &#8211; например, <noindex><a rel="nofollow" href="http://theapplegeek.ru/goto/http://www.seagate.com/www/en-us/products/desktops/barracuda_hard_drives/barracuda_xt/" >Barracuda XT Desktop Hard Drive</a></noindex> (SATA), и 32-битное ограничение уже достигнуто. Поэтому Apple заранее внедрил новую систему GUID partition table (GPT), о ней поговорим в следующей статье.</p>
<p>В отличие от DOS APM не содержит загрузочного кода (вспомним <noindex><a rel="nofollow" href="http://theapplegeek.ru/goto/http://en.wikipedia.org/wiki/Master_boot_record" >MBR</a></noindex> в первом секторе диска под DOS). Загрузчики Open Firmware и EFI сами содержат код для загрузки с дисков APM. Также, в отличие от DOS, APM может описывать столько разделов, сколько требуется (в DOS же есть 4 Primary partition, один из которых может быть описан как Extended partition, а у же в нём можно создавать достаточно большое количество разделов &#8211; я встречал <noindex><a rel="nofollow" href="http://theapplegeek.ru/goto/http://en.wikipedia.org/wiki/Extended_boot_record" >упоминание</a></noindex> о 670 логических разделах).</p>
<p>Работать с таблицей разделов Apple Partition Map можно с помощью утилиты <noindex><a rel="nofollow" href="http://theapplegeek.ru/goto/http://developer.apple.com/mac/library/documentation/Darwin/Reference/ManPages/man8/pdisk.8.html" >pdisk</a></noindex> (Apple partition table editor).</p>
<p>Посмотрим главу 11 книги &#8220;Mac OS X Internals&#8221;. Вот пример типичной раскладки &#8220;UNIVERSAL HD&#8221; с поддержкой Mac OS 9:</p>
<pre>
$ sudo pdisk /dev/rdisk0 -dump
<small>Partition map (with 512 byte blocks) on '/dev/rdisk0'
 #:                type name                   length   base     ( size )
 1: Apple_partition_map Apple                      63 @ 1
 2:      Apple_Driver43*Macintosh                  56 @ 64
 3:      Apple_Driver43*Macintosh                  56 @ 120
 4:    Apple_Driver_ATA*Macintosh                  56 @ 176
 5:    Apple_Driver_ATA*Macintosh                  56 @ 232
 6:      Apple_FWDriver Macintosh                 512 @ 288
 7:  Apple_Driver_IOKit Macintosh                 512 @ 800
 8:       Apple_Patches Patch Partition           512 @ 1312
 9:          Apple_Free                        262144 @ 1824     (128.0M)
10:           Apple_HFS Apple_HFS_Untitled_1 24901840 @ 263968   ( 11.9G)
11:          Apple_Free                            16 @ 25165808

Device block size=512, Number of Blocks=25165824 (12.0G)</small>
</pre>
<ul>
<li>Раздел 1, Apple_partition_map. Метаданные, относящиеся к таблице разделов. Размер 63 блока, каждый блок &#8211; 512 байт.</li>
<li>Разделы 2-7. Разделы с дисковыми драйверами под Mac OS 9. Традиционно драйвера блочных устройств (например, дисков) могли загружаться из ROM, с устройств USB и Firewire, или со специального раздела на жёстком диске. Для поддержки нескольких операционных систем или же различных видов подключения, диск мог содержать несколько драйверов, установленных каждый на своём разделе. Например, раздел Apple_Driver43 содержит драйвер для SCSI Manager 4.3, а Apple_FWDriver &#8211; для подключения по Firewire. Mac OS X не использует эти драйвера.</li>
<li>Раздел 8, Apple_Patches. Раздел, содержащий патчи, устанавливаемые на систему перед её загрузкой.</li>
<li>Разделы 9 и 11, Apple_Free. Свободное место. Основная цель &#8211; &#8220;выравнять&#8221; раздел с данными, чтобы он начинался с определённого блока.</li>
<li>Раздел 10. Здесь может уже располагаться файловая система с данными, например, HFS.</li>
</ul>
<p>Кроме раскладки &#8220;UNIVERSAL HD&#8221; был также и &#8220;UNIVERSAL СD&#8221;, содержащий драйвера для ATAPI и SCSI Manager для дисковода CD.</p>
<p>Когда о Mac OS 9 все забыли, и необходимость в её поддержке отпала, то таблица APM стала выглядеть не так внушительно (я создал таблицу разделов на внешнем диске из-под Mac OS X 10.6):</p>
<pre>
$ pdisk /dev/rdisk2 -dump
<small>Partition map (with 512 byte blocks) on '/dev/rdisk2'
 #:                type name      length   base      ( size )
 1: Apple_partition_map Apple         63 @ 1
 2:          Apple_Free           262144 @ 64        (128.0M)
 3:           Apple_HFS apm    624880224 @ 262208    (298.0G)
 4:          Apple_Free               16 @ 625142432

Device block size=512, Number of Blocks=625142448 (298.1G)
DeviceType=0x0, DeviceId=0x0</small>
</pre>
<p>Все &#8220;legacy&#8221;-разделы с драйверами Mac OS 9 не создаются. Кроме раздела с файловой системой остались только раздел 1 с метаданными и Apple_Free.</p>
<p>Схема из &#8220;Mac OS X Internals&#8221; показывает детальную схему Apple Partition Map.</p>
<p style="clear: both"><a href="http://theapplegeek.ru/wp-content/uploads/2009/10/03_apm-full.jpg"  class="image-link" rel="lightbox"><img class="linked-to-original" src="http://theapplegeek.ru/wp-content/uploads/2009/10/03_apm-thumb.jpg" height="570" width="485" style=" text-align: center; display: block; margin: 0 auto 10px;" /></a></p>
<p>Первый физический блок диска содержат двухбайтовую сигнатуру 0&#215;4552 (&#8220;ER&#8221;), затем идут 2 байта размера блока (0&#215;0200 = 512 байт) и 4 байта количества блоков на диске (0x2542eab0 = 625142448 блоков = 320072933376 байт = 298 GB при использовании базы 1024, и 320 GB при использовании 1000):</p>
<pre>
$ sudo dd if=/dev/disk2 of=/dev/stdout bs=8 count=1 2&gt;/dev/null | hexdump
0000000 45 52 02 00 25 42 ea b0
0000008
</pre>
<p>Начиная со второго блока идёт Apple_partition_map, описывающая таблицу разделов диска. Один блок &#8211; один раздел. Первый описывает себя же (Apple_partition_map). Количество разделов в APM не ограничено, но изменить их количество в дальнейшем невозможно. Подробная структура первого раздела Apple_partition_map приведена в таблице из статьи &#8220;<noindex><a rel="nofollow" href="http://theapplegeek.ru/goto/http://www.mactech.com/articles/mactech/Vol.23/23.03/APMtoGPT/index.html" >Apple&#8217;s Transition from Apple Partition Map to the GUID Partition Table</a></noindex>&#8220;:</p>
<p style="clear: both"><a href="http://theapplegeek.ru/wp-content/uploads/2009/10/04_apm-full.png"  class="image-link" rel="lightbox"><img class="linked-to-original" src="http://theapplegeek.ru/wp-content/uploads/2009/10/04_apm-thumb.png" height="385" width="500" style=" text-align: center; display: block; margin: 0 auto 10px;" /></a></p>
<p>Байты 88-91 описывают статус раздела:</p>
<p style="clear: both"><a href="http://theapplegeek.ru/wp-content/uploads/2009/10/05_apm-full.png"  class="image-link" rel="lightbox"><img class="linked-to-original" src="http://theapplegeek.ru/wp-content/uploads/2009/10/05_apm-thumb.png" height="232" width="500" style=" text-align: center; display: block; margin: 0 auto 10px;" /></a></p>
<p>Давайте посмотрим таблицу разделов на нашем USB-диске. Сначала берём вывод pdisk:</p>
<pre>
$ pdisk /dev/rdisk2 -dump
<small>Partition map (with 512 byte blocks) on '/dev/rdisk2'
 #:                type name      length   base      ( size )
 1: Apple_partition_map Apple         63 @ 1
 2:          Apple_Free           262144 @ 64        (128.0M)
 3:           Apple_HFS apm    624880224 @ 262208    (298.0G)
 4:          Apple_Free               16 @ 625142432</small>
</pre>
<p>Cчитываем раздел 1</p>
<pre>
$ sudo dd if=/dev/disk2 of=/dev/stdout bs=512 count=1 skip=1 2&gt;/dev/null | hexdump -C
00000000  50 4d 00 00 00 00 00 04  00 00 00 01 00 00 00 3f  |PM.............?|
00000010  41 70 70 6c 65 00 00 00  00 00 00 00 00 00 00 00  |Apple...........|
00000020  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000030  41 70 70 6c 65 5f 70 61  72 74 69 74 69 6f 6e 5f  |Apple_partition_|
00000040  6d 61 70 00 00 00 00 00  00 00 00 00 00 00 00 00  |map.............|
00000050  00 00 00 00 00 00 00 3f  00 00 00 03 00 00 00 00  |.......?........|
00000060  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
*
00000200
</pre>
<ul>
<li>00-01. Signature Value 0x504d</li>
<li>04-07. Total number of partitions = 00 00 00 04, да именно так, у нас есть 4 раздела.</li>
<li>08-11 (0&#215;08-0x0b). Starting sector of partition = 00 00 00 01. Да, начинается с первого сектора.</li>
<li>12-15 (0x0c-0x0f). Size of partition in sectors = 00 00 00 3f = 63.</li>
<li>16-47 (0&#215;10-0x2f). Name of partition in ASCII = &#8220;Apple&#8221;</li>
<li>48-79 (0&#215;30-0x4f). Type of partition in ASCII = &#8220;Apple_partition_map&#8221;</li>
<li>80-83 (0&#215;50-0&#215;53). Starting sector of data area in partition = 00 00 00 00</li>
<li>84-87 (0&#215;54-0&#215;57). Size of data area in sectors = 00 00 00 3f = 63</li>
<li>88-91 (0&#215;58-0x5B). Status of partition = 00 00 00 03 = 01 | 02 = &#8220;Entry is valid&#8221; | &#8220;Entry is allocated&#8221;</li>
</ul>
<p>Apple_Free слабо интересует</p>
<pre>
$ sudo dd if=/dev/disk2 of=/dev/stdout bs=512 count=1 skip=2 2&gt;/dev/null | hexdump -C
00000000  50 4d 00 00 00 00 00 04  00 00 00 40 00 04 00 00  |PM.........@....|
00000010  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
*
00000030  41 70 70 6c 65 5f 46 72  65 65 00 00 00 00 00 00  |Apple_Free......|
00000040  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
*
00000200
</pre>
<p>Разберём раздел с данными</p>
<pre>
$ sudo dd if=/dev/disk2 of=/dev/stdout bs=512 count=1 skip=3 2&gt;/dev/null | hexdump -C
00000000  50 4d 00 00 00 00 00 04  00 04 00 40 25 3e ea 60  |PM.........@%>.`|
00000010  61 70 6d 00 00 00 00 00  00 00 00 00 00 00 00 00  |apm.............|
00000020  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000030  41 70 70 6c 65 5f 48 46  53 00 00 00 00 00 00 00  |Apple_HFS.......|
00000040  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000050  00 00 00 00 25 3e ea 60  40 00 00 33 00 00 00 00  |....%>.`@..3....|
00000060  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
*
00000200
</pre>
<ul>
<li>00-01. Signature Value 0x504d</li>
<li>04-07. Total number of partitions = 00 00 00 04, всего 4 раздела.</li>
<li>08-11 (0&#215;08-0x0b). Starting sector of partition = 00 04 00 40 = 262208. Начинается с блока 262208.</li>
<li>12-15 (0x0c-0x0f). Size of partition in sectors = 25 3e ea 60 = 63. Размер 624880224 блоков = 320072933376 байт</li>
<li>16-47 (0&#215;10-0x2f). Name of partition in ASCII = &#8220;apm&#8221;. Имя раздела &#8211; &#8220;apm&#8221;</li>
<li>48-79 (0&#215;30-0x4f). Type of partition in ASCII = &#8220;Apple_HFS&#8221;. Файловая система HFS</li>
<li>80-83 (0&#215;50-0&#215;53). Starting sector of data area in partition = 00 00 00 00</li>
<li>84-87 (0&#215;54-0&#215;57). Size of data area in sectors = 25 3e ea 60</li>
<li>88-91 (0&#215;58-0x5B). Status of partition = 40 00 00 33 = 01 | 02 | 10 | 20 | 40000000 = &#8220;Entry is valid&#8221; | &#8220;Entry is allocated&#8221; | &#8220;Partition is readable&#8221; | &#8220;Automatically mount at startup&#8221;</li>
</ul>
<p>Последний Apple_Free тоже не рассматриваем:</p>
<pre>
$ sudo dd if=/dev/disk2 of=/dev/stdout bs=512 count=1 skip=4 2&gt;/dev/null | hexdump -C
00000000  50 4d 00 00 00 00 00 04  25 42 ea a0 00 00 00 10  |PM......%B......|
00000010  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
*
00000030  41 70 70 6c 65 5f 46 72  65 65 00 00 00 00 00 00  |Apple_Free......|
00000040  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
*
00000200
</pre>
<h2>Окончание</h2>
<p>Со схемой разделов Apple Partition Map мы познакомились. Это полезно, несмотря на то, что она уже почти не используется на новых системах, особенно под управлением Snow Leopard. Статья получилась достаточно большая как для одного дня, поэтому GUID partition table (GPT) я рассмотрю в следующий раз.</p>
<p><br class="final-break" style="clear: both" /></p>
]]></content:encoded>
			<wfw:commentRss>http://theapplegeek.ru/archives/1370/feed</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>Инструмент для изучения EFI (rEFIt)</title>
		<link>http://theapplegeek.ru/archives/1341</link>
		<comments>http://theapplegeek.ru/archives/1341#comments</comments>
		<pubDate>Fri, 23 Oct 2009 14:22:28 +0000</pubDate>
		<dc:creator>ctrld</dc:creator>
				<category><![CDATA[Quick Tips]]></category>
		<category><![CDATA[boot]]></category>
		<category><![CDATA[system]]></category>

		<guid isPermaLink="false">http://theapplegeek.ru/archives/1341</guid>
		<description><![CDATA[Пытаясь изучить процесс загрузки Intel Mac, я столнулся с тем, что в отличие от Power Mac, где используется OpenFirmware и есть свой shell (вызывается при загрузке при нажатии Command + Option + O + F), в EFI shell отсутствует. Но это не помеха &#8211; есть LiveCD rEFIt. rEFIt &#8211; это система, которая может запуститься после [...]]]></description>
			<content:encoded><![CDATA[<p style="clear: both">Пытаясь изучить процесс загрузки Intel Mac, я столнулся с тем, что в отличие от Power Mac, где используется OpenFirmware и есть свой shell (вызывается при загрузке при нажатии Command + Option + O + F), в EFI shell отсутствует.</p>
<p style="clear: both">Но это не помеха &#8211; есть <noindex><a rel="nofollow" href="http://theapplegeek.ru/goto/http://refit.sourceforge.net/" >LiveCD rEFIt</a></noindex>. rEFIt &#8211; это система, которая может запуститься после включения Mac (вставляется CD и выбирается через Option, или же его можно установить на постоянной основе). Она представляет собой инструментарий для любых компьютеров, поддерживающих EFI, в частности поддерживает Intel Mac.</p>
<p style="clear: both"><a href="http://theapplegeek.ru/wp-content/uploads/2009/10/screen1-full.png"  class="image-link" rel="lightbox"><img class="linked-to-original" src="http://theapplegeek.ru/wp-content/uploads/2009/10/screen1-thumb.png" height="375" width="500" style=" text-align: center; display: block; margin: 0 auto 10px;" /></a></p>
<p><br class="final-break" style="clear: both" /></p>
]]></content:encoded>
			<wfw:commentRss>http://theapplegeek.ru/archives/1341/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Процесс загрузки Apple Mac Intel, часть 1</title>
		<link>http://theapplegeek.ru/archives/1329</link>
		<comments>http://theapplegeek.ru/archives/1329#comments</comments>
		<pubDate>Thu, 22 Oct 2009 18:20:20 +0000</pubDate>
		<dc:creator>ctrld</dc:creator>
				<category><![CDATA[Статьи]]></category>
		<category><![CDATA[boot]]></category>
		<category><![CDATA[system]]></category>

		<guid isPermaLink="false">http://theapplegeek.ru/?p=1329</guid>
		<description><![CDATA[Давно хотел рассмотреть процесс загрузки Mac OS X, давайте сделаем это вместе. Предупрежу &#8211; это моя попытка разобраться, и не рассматривайте на эту статью, как истину в последней инстанции. Это первая часть, далее я буду рассматривать более детально начальную и завершающую стадии &#8211; BootROM/EFI и launchd. В процессе написания я использовал такую информацию: &#8220;System Startup [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://theapplegeek.ru/wp-content/uploads/2009/10/01_boot1-thumb1.png" height="136" align="right" width="180" style=" display: inline; float: right; margin: 0 0 10px 10px;" /></p>
<p>Давно хотел рассмотреть процесс загрузки Mac OS X, давайте сделаем это вместе. Предупрежу &#8211; это моя попытка разобраться, и не рассматривайте на эту статью, как истину в последней инстанции. Это первая часть, далее я буду рассматривать более детально начальную и завершающую стадии &#8211; BootROM/EFI и launchd.</p>
<p>В процессе написания я использовал такую информацию:</p>
<ul>
<li>&#8220;<noindex><a rel="nofollow" href="http://theapplegeek.ru/goto/http://developer.apple.com/mac/library/documentation/MacOSX/Conceptual/BPSystemStartup/Articles/BootProcess.html#//apple_ref/doc/uid/20002130-BAJJBJEG" >System Startup Programming Topics</a></noindex>&#8220;</li>
<li><noindex><a rel="nofollow" href="http://theapplegeek.ru/goto/http://developer.apple.com/mac/library/documentation/Darwin/Reference/ManPages/man8/kextcache.8.html" >man kextcache</a></noindex></li>
<li>главу &#8220;<noindex><a rel="nofollow" href="http://theapplegeek.ru/goto/http://osxbook.com/book/bonus/ancient/whatismacosx/arch_boot.html" >Booting Mac OS X</a></noindex>&#8221; из несколько устаревшей, но чрезвычайно полезной книги &#8220;Mac OS X Internals&#8221; (<noindex><a rel="nofollow" href="http://theapplegeek.ru/goto/http://twitter.com/alexmak" >@alexmak</a></noindex>, спасибо за рекомендацию).</li>
</ul>
<p><span id="more-1329"></span></p>
<p>Процесс загрузки Intel Mac (Snow Leopard):</p>
<p><b>1.</b> При включении питания запускается BootROM firmware.</p>
<p><b>1.1.</b> Выполняется POST (Power-On Self Test), инициализирующий некоторые системные интерфейсы, и проверяющий, что в системе установлено достаточное количество памяти и она находится в нормальном состоянии.</p>
<p><b>1.2.</b> Запускается <noindex><a rel="nofollow" href="http://theapplegeek.ru/goto/http://en.wikipedia.org/wiki/Extensible_Firmware_Interface" >EFI (Extensible Firmware Interface)</a></noindex>, инициализируя остальное базовое системное &#8220;железо&#8221;, и производящий выбор операционной системы.</p>
<p><b>2.</b> Управление передаётся загрузчику boot.efi , находящемуся на разделе выбранной Mac OS X. Его основная задача &#8211; подготовить всё для загрузки ядра. boot.efi находится в /System/Library/CoreServices/ (и копия &#8211; в /usr/standalone/i386/).</p>
<p><b>2.1.</b> Дисплей закрашивается светло-серым цветом.</p>
<p><b>2.2.</b> Загрузчик пытается загрузить прелинкованную версию ядра (самой ядро &#8211; /mach_kernel), включающую все драйвера, необходимые для загрузки. Из-за этого время загрузки значительно сокращается.  Каталог /System/Library/Caches/com.apple.kext.caches/Startup/, файлы вида kernelcache_i386.2B109974 (здесь указана архитектура и 8 символов контрольной суммы, вычисляемой по алгоритму <noindex><a rel="nofollow" href="http://theapplegeek.ru/goto/http://en.wikipedia.org/wiki/Adler-32" >Adler-32</a></noindex>).</p>
<p><b>2.3.</b> Появляется лого Apple и появляется вращающийся курсор.</p>
<p><b>2.4.</b> Если прелинкованная версия ядра отсутствует, устарела (например, время модификации драйвера новее, чем это ядро) или повреждена, загрузчик пытается загрузить все драйвера из кеша mkext /System/Library/Caches/com.apple.kext.caches/Startup/Extensions.mkext. Описание кеша находится в /usr/standalone/bootcaches.plist.</p>
<p><b>2.5.</b> Если кеш отсутствует, устарел или повреждён, загрузчик ищет в каталоге /System/Library/Extensions драйвера и расширения ядра, и загружает те, у которых OSBundleRequired установлено в значение, соответствующее типу загрузки (например, локальная, сетевая, etc). Детальнее можно посмотреть в &#8220;<noindex><a rel="nofollow" href="http://theapplegeek.ru/goto/http://developer.apple.com/mac/library/documentation/Darwin/Conceptual/KEXTConcept/KEXTConceptLoading/loading_kexts.html" >Loading Kernel Extensions at Boot Time</a></noindex>&#8220;. Например,</p>
<pre>
$ grep -1 OSBundleRequired /System/Library/Extensions/AppleBacklight.kext/Contents/Info.plist | tail -2
	&lt;/dict&gt;
	&lt;key&gt;OSBundleRequired&lt;/key&gt;
	&lt;string&gt;Safe Boot&lt;/string&gt;

$ grep -1 OSBundleRequired /System/Library/Extensions/AppleRAIDCard.kext/Contents/Info.plist
	&lt;/dict&gt;
	&lt;key&gt;OSBundleRequired&lt;/key&gt;
	&lt;string&gt;Local-Root&lt;/string&gt;
</pre>
<ul>Варианты OSBundleRequired:</p>
<li><b>Root</b>. This KEXT is required to mount root, regardless of where root comes from – for example, platform drivers and families, PCI, or USB.</li>
<li><b>Network-Root</b>. This KEXT is required to mount root on a remote volume—for example, the network family, Ethernet drivers, or NFS.</li>
<li><b>Local-Root</b>. This KEXT is required to mount root on a local volume – for example, the storage family, disk drivers, or file systems.</li>
<li><b>Console</b>. This KEXT is required to provide character console support (single-user mode) – for example, keyboard drivers or the ADB family.</li>
<li><b>Safe Boot</b>. This KEXT is required even during safe-boot (unnecessary extensions disabled)—for example, mouse drivers or graphics drivers.</li>
</ul>
<p><b>2.6.</b> Когда ядро и все необходимые драйвера загружены (не запущены, а именно &#8220;loaded&#8221; в память), загрузчик запускает процедуру инициализации ядра. На этой стадии загружено достаточное количество драйверов для того, чтобы было найдено устройство, на котором расположена корневая файловая система (более понятно &#8211; root device).</p>
<p><b>2.7.</b> Ядро инициализирует структуры данных Mach и BSD, а затем <noindex><a rel="nofollow" href="http://theapplegeek.ru/goto/http://developer.apple.com/mac/library/documentation/DeviceDrivers/Conceptual/IOKitFundamentals/Introduction/Introduction.html" >I/O Kit</a></noindex> (коллекцию системных фреймворков и библиотек, поддерживающих остальные драйвера устройств). I/O Kit линкует драйвера в ядро, используя дерево устройств для определения, какие именно драйвера линковать. Это дерево строилось на стадии EFI. Посмотреть его уже из загруженной системы можно так:</p>
<pre>
$ ioreg -S -p IODeviceTree -l 0 -w
<small>+-o Root  &lt;class IORegistryEntry&gt;
  | {
  |   "IOKitBuildVersion" = "Darwin Kernel Version 10.0.0: Fri Jul 31 22:47:34 PDT 2009; root:xnu-1456.1.25~1/RELEASE_I$
  |   "IOMaximumMappedIOByteCount" = 536870912
  |   "OSPrelinkPersonalityCount" = 571
  |   "OS Build Version" = "10B504"
  |   "OSKernelCPUSubtype" = 3
  |   "OSKernelCPUType" = 7
  |   "OSPrelinkKextCount" = 139
  |   "IORegistryPlanes" = {"IOACPIPlane"="IOACPIPlane","IOPower"="IOPower","IODeviceTree"="IODeviceTree","IOService"="$
  |   "IONDRVFramebufferGeneration" = &lt;0400000004000000&gt;
  |   "IOConsoleUsers" = ({"kCGSSessionConsoleSetKey"=0,"kCGSSessionOnConsoleKey"=Yes,"kSCSecuritySessionID"=3172743,"k$
  |   "IOKitDiagnostics" = {"Container allocation"=3295268,"Instance allocation"=6354490,"Pageable allocation"=20925644$
  | }
...
  +-o PCI0@0  &lt;class IOACPIPlatformDevice&gt;
  | | {
  | |   "compatible" = &lt;"PNP0A03"&gt;
  | |   "IODTPersist" = &lt;a2319300a2409300&gt;
  | |   "_STA" = 15
  | |   "IOPCIConfigured" = Yes
  | |   "acpi-address-spaces" = &lt;0200000000000000000000000000000000000000000000000000000000000000ff000000000000000000$
  | |   "#size-cells" = &lt;02000000&gt;
  | |   "acpi-pci-routing-table" = &lt;2800000000000000ffff030000000000000000005c5f53425f2e504349302e4c534d4200000000002$
  | |   "#address-cells" = &lt;03000000&gt;
  | |   "_ADR" = 0
  | |   "device-properties" = {"acpi-device"="IOACPIPlatformDevice is not serializable","acpi-path"="IOACPIPlane:/_SB$
  | |   "acpi-path" = "IOACPIPlane:/_SB/PCI0@0"
  | |   "name" = &lt;"PNP0A08"&gt;
  | |   "acpi-device" = "IOACPIPlatformDevice is not serializable"
  | | }
...</small>
</pre>
<p><b>2.8.</b> Как только найдено root device, ядро его монтирует в &#8220;/&#8221;.</p>
<p><b>3.</b> Загружаются системные сервисы и ведётся подготовка системы для использования пользователями. До версии Mac OS X 10.4 этим занимались привычные для BSD Unix процессы  mach_init и init (они запускали в том числе разнообразные системные скрипты /etc/rc), но с версии 10.4 они были заменены на <noindex><a rel="nofollow" href="http://theapplegeek.ru/goto/http://developer.apple.com/macosx/launchd.html" >launchd</a></noindex>.<br />
В дополнение к инициализации системы launchd обеспечивает вызов демонов в нужном порядке. Наподобие inetd, launchd вызывает демонов по необходимости (они могут останавливаться через определённое время неактивности и перезапускаться по необходимости).</p>
<pre>
$ cat /System/Library/LaunchDaemons/com.apple.loginwindow.plist
<small>&lt;?xml version="1.0" encoding="UTF-8"?&gt;
&lt;!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"&gt;
&lt;plist version="1.0"&gt;
&lt;dict&gt;
        &lt;key&gt;Label&lt;/key&gt;
        &lt;string&gt;com.apple.loginwindow&lt;/string&gt;
        &lt;key&gt;ProgramArguments&lt;/key&gt;
        &lt;array&gt;
		&lt;string&gt;/System/Library/CoreServices/loginwindow.app/Contents/MacOS/loginwindow&lt;/string&gt;
		&lt;string&gt;console&lt;/string&gt;
        &lt;/array&gt;
        &lt;key&gt;KeepAlive&lt;/key&gt;
        &lt;true/&gt;
&lt;/dict&gt;
&lt;/plist&gt;</small>
</pre>
<p><b>4.</b> В завершение launchd запускает loginwindow (окно входа в систему).</p>
<p>Детальнее о launchd поговорим в следующей статье.</p>
]]></content:encoded>
			<wfw:commentRss>http://theapplegeek.ru/archives/1329/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Комбинации клавиш, действующие при загрузке Intel Mac</title>
		<link>http://theapplegeek.ru/archives/1036</link>
		<comments>http://theapplegeek.ru/archives/1036#comments</comments>
		<pubDate>Fri, 16 Oct 2009 07:20:41 +0000</pubDate>
		<dc:creator>ctrld</dc:creator>
				<category><![CDATA[Quick Tips]]></category>
		<category><![CDATA[boot]]></category>

		<guid isPermaLink="false">http://ctrld.me/?p=1036</guid>
		<description><![CDATA[Я постоянно забываю клавиатурные комбинации, которые действуют при загрузке Мака. Поэтому приведу в виде шпаргалки статью &#8220;Комбинации клавиш для запуска компьютеров Mac на платформе Intel&#8220;. Нажать на указанные клавиши нужно до того, как прозвучит стартовый звук &#8220;Chime sound&#8221;. Клавиши Описание Нажмите клавишу &#171;С&#187; во время загрузки Загрузка с загрузочного CD или DVD-диска, например установочного диска [...]]]></description>
			<content:encoded><![CDATA[<p style="clear: both">Я постоянно забываю клавиатурные комбинации, которые действуют при загрузке Мака. Поэтому приведу в виде шпаргалки статью &#8220;<noindex><a rel="nofollow" href="http://theapplegeek.ru/goto/http://support.apple.com/kb/HT1533?viewlocale=ru_RU" >Комбинации клавиш для запуска компьютеров Mac на платформе Intel</a></noindex>&#8220;. Нажать на указанные клавиши нужно до того, как прозвучит стартовый звук &#8220;Chime sound&#8221;.</p>
<p style="clear: both"><img src="http://theapplegeek.ru/wp-content/uploads/2009/10/01_startup-thumb1.png" height="153" width="200" style=" text-align: center; display: block; margin: 0 auto 10px;" /></p>
<p><span id="more-1036"></span></p>
<table cellspacing="1" cellpadding="4" border="0" id="kbtable">
<tbody>
<tr id="kbheader">
<td><b>Клавиши</b></td>
<td><b>Описание</b></td>
</tr>
<tr id="odd">
<td>Нажмите клавишу &laquo;С&raquo; во время загрузки</td>
<td>Загрузка с загрузочного CD или DVD-диска, например установочного диска Mac OS X, который идет в комплекте с вашим компьютером.</td>
</tr>
<tr id="even">
<td>Нажмите клавишу &laquo;D&raquo; во время загрузки</td>
<td>Запуск тестирования аппаратного обеспечения Apple, если в накопитель компьютера вставлен установочный DVD номер 1.</td>
</tr>
<tr id="odd">
<td>Удерживайте комбинацию клавиш &laquo;Option-Command-P-R&raquo;, пока не услышите 2 звуковых сигнала.</td>
<td>Сброс параметров NVRAM</td>
</tr>
<tr id="even">
<td>Нажмите клавишу &laquo;Option&raquo; во время загрузки</td>
<td>Запуск Менеджера загрузки, который позволяет выбрать версию Mac OS X для загрузки. <b>Примечание</b>: Нажмите клавишу &laquo;N&raquo;, чтобы появился первый загрузочный сетевой том.</td>
</tr>
<tr id="odd">
<td>Нажмите клавиши &laquo;Eject&raquo;, &laquo;F12&raquo; или удерживайте кнопку мыши (трекпада)</td>
<td>Извлечение любых носителей данных (например, оптического диска).</td>
</tr>
<tr id="even">
<td>Нажмите клавишу &laquo;N&raquo; во время загрузки</td>
<td>Попытка загрузки с подходящего сетевого сервера (NetBoot).</td>
</tr>
<tr id="odd">
<td>Нажмите клавишу &laquo;T&raquo; во время загрузки</td>
<td>Загрузка в режиме внешнего диска FireWire.</td>
</tr>
<tr id="even">
<td>Нажмите клавишу &laquo;Shift&raquo; во время загрузки</td>
<td>Загрузка в безопасном режиме и временное отключение объектов входа.</td>
</tr>
<tr id="odd">
<td>Нажмите комбинацию клавиш &laquo;Command-V&raquo; во время загрузки</td>
<td>Загрузка в режиме подробных сообщений.</td>
</tr>
<tr id="even">
<td>Нажмите комбинацию клавиш &laquo;Command-S&raquo; во время загрузки</td>
<td>Загрузка в однопользовательском режиме.</td>
</tr>
<tr id="odd">
<td>Нажмите комбинацию клавиш &laquo;Option-N&raquo; во время загрузки</td>
<td>Загрузка с сервера NetBoot использованием загрузочного образа по умолчанию.</td>
</tr>
</tbody>
</table>
<p style="clear: both">В дополнение &#8211; если вы хотите постоянно видеть процесс загрузки (сообщения об оборудовании, загрузке драйверов, сервисов), то можно в консоли установить параметр &#8220;Verbose&#8221;:</p>
<pre style="clear: both">sudo nvram boot-args="-v"
</pre>
<p style="clear: both">Отключение:</p>
<pre style="clear: both">sudo nvram boot-args=""
</pre>
<p><br class="final-break" style="clear: both" /></p>
]]></content:encoded>
			<wfw:commentRss>http://theapplegeek.ru/archives/1036/feed</wfw:commentRss>
		<slash:comments>3</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 12/65 queries in 0.061 seconds using memcached
Object Caching 781/848 objects using memcached

Served from: theapplegeek.ru @ 2010-07-31 02:45:06 -->