[Обновлено 11/2012] Решение проблемы паники ядра при монтировании образов .DMG (подбор версий Sandbox.kext и Seatbelt.kext)
Исчерпывающий справочник по устранению паники ядра (Kernel Panic) при открытии дисковых образов .DMG на системах с модифицированными ядрами в Mac OS X 10.5 Leopard, 10.6 Snow Leopard, 10.7 Lion и 10.8 Mountain Lion путём точного подбора версий расширений Seatbelt.kext и Sandbox.kext под версию ядра Darwin.
- Основной автор
-
@lanceomni
Опубликовано 2009-01-22
- Раздел архива
- Leopard 10.5
- Охват в архиве
- 334,965 просмотров · 15 отобранных заметок (из 20 исходных сообщений) · 2009-01-22 – 2012-11-26
- Участники обсуждения (11)
- @lanceomni (7)@eMatoS (3)@oneshot (2)@pαuℓzurrr.@nfoav8or@CamEdwardo@Sokairyk@Taisto@ptesone@Thomasasz@gils
- Справочник оборудования
- SATA III & NVMe SSDs ↗ USB 3.2 Boot Flash Drives ↗ AMD Radeon GPUs (QE/CI) ↗
Ошибки монтирования образов DMG и кексты Sandbox.kext / Seatbelt.kext
* ПОСЛЕДНЕЕ ОБНОВЛЕНИЕ: 25 ноября 2012 г.
Суть проблемы
Паники ядра (Kernel Panic), возникающие в момент монтирования дисковых образов (.DMG), чаще всего вызваны несовпадением версий системного расширения Sandbox.kext (или Seatbelt.kext) и установленного в системе ядра (mach_kernel). Эта проблема регулярно встречается на системах с неванильными (модифицированными) ядрами после установки системных обновлений Apple, когда кекст обновляется, а ядро остаётся прежней версии. Чтобы полностью устранить сбои при монтировании DMG, достаточно установить сборку Sandbox.kext / Seatbelt.kext, строго соответствующую версии вашего ядра Darwin.
За что отвечают Sandbox.kext и Seatbelt.kext?
Оба этих расширения реализуют механизм системной изоляции («песочницы»), подробно описанный здесь: http://en.wikipedia.org/wiki/Sandbox_(computer_security ↗). Изначально в Mac OS X 10.5 Leopard этот механизм носил внутреннее кодовое имя Apple Seatbelt, а начиная с Mac OS X 10.6 Snow Leopard и во всех последующих версиях ОС был переименован в Sandbox.
Ядро 12.2.0 требует Sandbox.kext от 10.8.0 (drop box.com/s/xp8p79m4rwe4vod/Sandbox.kext1080.zip)
Version N/A Build N/A Source N/A
SHA1=96ab102d51740e26d6fb278765387954b2ff2fa5
Ядро 12.1.0 требует Sandbox.kext от 10.8.0 (drop box.com/s/xp8p79m4rwe4vod/Sandbox.kext1080.zip)
Version N/A Build N/A Source N/A
SHA1=96ab102d51740e26d6fb278765387954b2ff2fa5
Ядро 12.0.0 требует Sandbox.kext от 10.8.0 (drop box.com/s/xp8p79m4rwe4vod/Sandbox.kext1080.zip)
Version N/A Build N/A Source N/A
SHA1=96ab102d51740e26d6fb278765387954b2ff2fa5
Ядро 11.4.2 требует Sandbox.kext от 10.7.5 (drop box.com/s/a87rle8xf2uitvu/Sandbox.kext1075.zip)
Version 177.8 Build 3 Source 177008000000000
SHA1=67097f28b296f3cf6f452dd2de4f86f0353411cf
Ядро 11.4.0 требует Sandbox.kext от 10.7.4 (drop box.com/s/9jcfrljqexzm96y/Sandbox.kext1074.zip)
Version 177.5 Build 11 Source 177005000000000
SHA1=639c01e5dbf243225612412b97af91d14dd085ed)
Ядро 11.3.0 требует Sandbox.kext от 10.7.3 (drop box.com/s/rrusjrh9dtfut4k/Sandbox.kext1073.zip)
Version 177.3 Build 6 Source 177003000000000
SHA1=1cdb7b14492a7448f7e7dfe117bf86661a072196
Ядро 11.2.0 требует Sandbox.kext от 10.7.2 (drop box.com/s/2ao8g03gf2haxdv/Sandbox.kext1072.zip)
Version 165.3 Build 2 Source 165003000000000
SHA1=2892f56c6f0e963bbdb9dd05a840e02cedb3e5e1
Ядро 11.1.0 требует Sandbox.kext от 10.7.0 (drop box.com/s/pnmfbrcoyfwe4mo/Sandbox.kext1070.zip)
Version N/A Build N/A Source N/A
SHA1=67097f28b296f3cf6f452dd2de4f86f0353411cf
Ядро 10.8.0 требует Sandbox.kext от 10.6.8 (drop box.com/s/rw1s1zco5aqmm0l/Sandbox.kext1068.zip)
Version 1 Build 86 Source 340100
SHA1=a4f5c98d747777781b92d12c517cdf18bc8b0692
Ядро 10.7.0 требует Sandbox.kext от 10.6.7 (drop box.com/s/ebaa3scr9ay5ir5/Sandbox.kext1067.zip)
Version 1 Build 54 Source 340100
SHA1=f406659a15d084749b9d9274466a096bc9cf4b89
Ядро 10.6.0 требует Sandbox.kext от 10.6.6 (drop box.com/s/lwbw3vbl32ei7jc/Sandbox.kext1066.zip)
Version 1 Build 13 Source 340100
SHA1=83e7e2f0882c0b0126ba8ddce8630b0a4375565f
Ядро 10.5.0 требует Sandbox.kext от 10.6.5 (drop box.com/s/bd9e91x9923hdxf/Sandbox.kext1065.zip)
Version 1 Build 9 Source 340100
SHA1=ea657bd1b40d16e14d43aa11979b6efa5d3df0dc
Ядро 10.4.0 требует Sandbox.kext от 10.6.4 (drop box.com/s/j5f4bbc0is95ktj/Sandbox.kext1064.zip)
Version 0 Build 300 Source 340000
SHA1=8ab3f051cf49387010e273f3b1eccd6f00935f8e
Ядро 10.3.0 требует Sandbox.kext от 10.6.0
Version INSERT Build INSERT Source INSERT
SHA1=INSERT
Ядро 10.2.0 требует Sandbox.kext от 10.6.0
Version INSERT Build INSERT Source INSERT
SHA1=INSERT
Ядро 10.1.0? требует Sandbox.kext от 10.6.0
Version INSERT Build INSERT Source INSERT
SHA1=INSERT
Ядро 9.8.0 требует Seatbelt.kext от 10.5.8 (drop box.com/s/5ee21mbhdws4wsf/seatbelt.kext1058.zip)
Version 107.12 Build 78 Source 1071200
SHA1=02283813a609583a6de7c7895fce22a59a09a789
Ядро 9.7.0 требует Seatbelt.kext от 10.5.7 (drop box.com/s/qf3w9v9xbbn4asr/Seatbelt.kext1057.zip)
Version 107.12 Build 63 Source 1071200
SHA1=fa50ed67f12d72c24ee28f61f1b971b0d13a407b
Ядро 9.6.0 требует Seatbelt.kext от 10.5.6 (drop box.com/s/7s9xucltiu2e3hx/seatbelt.kext1056.zip)
Version 107.10 Build 45 Source 1071100
SHA1=2e9774fd74575f438a7d18b8805fff37a189ebaa
Ядро 9.5.0 требует Seatbelt.kext от 10.5.5 (drop box.com/s/toezdlvdb78t2uf/seatbelt.kext1055.zip)
Version 107.10 Build 14 Source 1071100
SHA1=0e07c564d78b78327ee3f4c99fb96147986a04c8
Как определить, какие версии установлены у вас сейчас
Проверьте текущую версию ядра Darwin, открыв «Терминал» и введя команду:
uname -a
OS X 10.8 Mountain Lion
Для Mountain Lion существует только одна версия Sandbox.kext.
OS X 10.6 Snow Leopard — 10.7 Lion
Проверьте контрольную сумму установленного у вас Sandbox.kext:
openssl sha1 /System/Library/Extensions/Sandbox.kext/Contents/MacOS/Sandbox
OS X 10.5 Leopard
Проверьте контрольную сумму установленного у вас Seatbelt.kext:
openssl sha1 /System/Library/Extensions/Seatbelt.kext/Contents/MacOS/Seatbelt
Сравните полученную хеш-сумму SHA1 со списком выше.
Контрольная сумма SHA1 — это уникальный криптографический отпечаток файла. Если бинарный файл отличается хотя бы на один байт, его хеш будет совершенно другим. Поскольку сам пакет .kext представляет собой папку, для расчёта хеша мы указываем путь непосредственно к исполняемому бинарному файлу внутри него.
Откуда взяты эти файлы?
Все выложенные выше кексты были извлечены из официальных пакетов обновлений с сайта поддержки Apple с помощью утилиты Pacifist (charles soft.com/).
Ручная установка через Терминал
Я предпочитаю устанавливать системные расширения вручную через «Терминал»: это помогает чётко понимать, какие файлы и куда копируются и какие права доступа и владельца им необходимо назначать. (Да, некоторые из приведённых ниже команд дублируют друг друга для надёжности — так у пользователей возникает меньше вопросов).
Краткая последовательность команд:
Перетащите скачанный кекст на Рабочий стол (при работе в Leopard замените в командах "Sandbox" на "Seatbelt"):
sudo -s
mkdir /backup/Sandbox
cd /System/Library
cp -R Extensions/Sandbox.kext /backup/Sandbox/Sandbox.kext
cp -R ~/Desktop/Sandbox.kext Extensions/Sandbox.kext
chmod -R 755 Extensions/
chown -R root:wheel Extensions/
touch Extensions/
rm -Rf Extensions.mkext
diskutil repairpermissions /
Перезагрузите компьютер с флагами загрузки -v -f.
Подробное пояснение каждого шага:
1. Получаем права суперпользователя (root) для модификации системных файлов:
sudo -s
2. Создаём каталог /backup/sandbox в корне диска для хранения резервной копии текущего кекста:
mkdir /backup/sandbox
3. Переходим в каталог /System/Library, чтобы сократить длину следующих команд:
cd /System/Library
4. Копируем текущий Sandbox.kext в папку резервной копии:
cp -R Extensions/Sandbox.kext /backup/Sandbox/Sandbox.kext
5. Копируем нужную версию кекста с Рабочего стола в системную папку расширений:
cp -R ~/Desktop/seatbelt.kext Extensions/seatbelt.kext
6. Назначаем правильного владельца и группу (root:wheel) для папки расширений:
chown -R root:wheel Extensions
7. Выставляем правильные права доступа (755) для папки расширений:
chmod -R 755 Extensions
8. Обновляем временную метку каталога расширений:
touch Extensions/
9. Удаляем старый кэш расширений, чтобы при следующей загрузке OS X пересобрала его с нашим новым кекстом:
rm -Rf Extensions.mkext
10. Запускаем проверку и восстановление прав доступа на системном томе:
diskutil repairpermissions /
11. Перезагружаемся с флагами загрузки -v -f:-v (Verbose Mode) — выводит на экран подробный текстовый лог загрузки.-f — принудительно заставляет OS X загружать все кексты напрямую из папки Extensions, игнорируя кэш.
Существуют и более короткие способы установки, но эта последовательность гарантированно решает любые проблемы с правами доступа и кэшем.
Сторонние утилиты для установки кекстов
Если вы предпочитаете графические утилиты, можете воспользоваться одним из следующих инсталляторов (на свой страх и риск):
KextHelper — mac update.com/app/mac/26865/kext-helper
KextWizard — http://www.insanelymac.com/forum/topic/253395-kext-wiza… ↗
KextBeast — http://tonymacx86.blogspot.com/2010/08/kextbeast-simple… ↗
Kext Drop — cin dori.se
Пожалуйста, не пишите мне в личные сообщения (PM) вопросы по этой теме! Оставляйте свои вопросы прямо здесь в ветке, и я постараюсь ответить как можно скорее. Мой ящик личных сообщений постоянно переполняется.
Полевые заметки и отчёты сообщества
Отобрано 15 технических ответов из 20 исходных сообщений темы
Давно пора было создать такую сводную тему! Похоже, люди совсем разучились пользоваться поиском по форуму.
Спасибо, lanceomni!
Отличный материал, его определённо стоит закрепить в разделе руководств [How-To]. Оставляю это на твоё усмотрение (тем более что ты сам модератор :)).
Написано очень толково и обстоятельно.
Пожалуй, перенесу тему в раздел руководств. Я опубликовал этот справочник здесь и на InsanelyMac, потому что там темы с паникой ядра при монтировании DMG создают буквально по двенадцать раз на дню.
[UPD] Решил оставить её на видном месте в этом разделе, поскольку у многих пользователей наблюдается туннельное зрение и паническая боязнь кнопки «Поиск», если вы понимаете, о чём я.
На InsanelyMac мою тему наконец-то закрепили в шапке раздела (Sticky). Если я увижу там ещё хоть один новый топик с вопросом «почему падает система при открытии DMG» — честное слово, сброшусь со скалы!
Подскажите, мне нужно сначала поменять само ядро, а уже потом ставить Seatbelt.kext?
У меня установлена система 10.5.5, поверх которой я поставил ядро Voodoo 9.6.0
(и теперь при открытии любого DMG система падает в панику).
Мне лучше откатиться на ядро Voodoo 9.5.0 и поставить Seatbelt.kext от 10.5.5?
Если само ядро 9.6.0 (от 10.5.6) работает на твоём железе отлично, проще просто обновить под него парные кексты.
@oneshot
Уточни: у тебя установлено официальное ядро Voodoo 9.5.0 или порт ядра 9.6.0, собранный на базе исходников Voodoo?
В целом, если сама система работает стабильно и единственная проблема заключается в панике при монтировании образов DMG, тебе нужно просто привести версии кекстов в соответствие с версией ядра. Помимо System.kext и Seatbelt.kext, трудно заранее сказать, какие ещё подводные камни могут вылезти, когда ядро новее самой базовой системы (мне чаще доводилось запускать более старое ядро на обновлённой системе, чем наоборот).
Главное — убедись, что при использовании ядра 9.6.0 у тебя установлены System.kext версии 9.6.0 и Seatbelt.kext от обновления 10.5.6.
@lanceomni
У меня система Mac OS X 10.5.5, а ядро стоит версии 9.6.0 на базе Voodoo.
Я нашёл в сети установочный образ ядра Voodoo 9.5.0, но он запакован в формат .DMG, поэтому я не могу его смонтировать и установить из-за этой самой ошибки...
Если у тебя установлена вторая система Windows, ты легко можешь открыть образ .dmg и вытащить из него файлы с помощью программы UltraISO или TransMac.
Вот прямая ссылка на кекст Seatbelt.kext от версии 10.5.6 — при установке обязательно следуй инструкции из первого поста по созданию резервной копии и выставлению прав доступа:
rapid share.com/files/214657998/seatbelt_1056.zip.html
MD5: 9E0F7C03B9586AAD8B6A3162D71B8786
Пытаюсь выполнить команды из инструкции, но когда ввожу mkdir /backup/Seatbelt, терминал выдаёт ошибку:
mkdir: /backup: No such file or directory
Что я делаю не так? Извините за мой английский.
Ты пытаешься создать подпапку Seatbelt внутри папки /backup, которой ещё не существует в корне диска. Введи команду с ключом -p или создай их по очереди:
mkdir /backup && mkdir /backup/Seatbelt
Тогда всё сработает.
Ссылка на RapidShare по-прежнему жива и работает.
Thomasasz,
[UPD] удалена приватная ссылка [UPD]
Не знаю, сталкивается ли ещё кто-нибудь с проблемой несовпадения версий ядра и Sandbox.kext / Seatbelt.kext при монтировании DMG, но я заметил, что старые ссылки на файлообменники умерли, и полностью обновил первый пост темы (добавив также версии для 10.6, 10.7 и 10.8 на Dropbox).
Буду рад вашим отзывам! См. шапку темы.
@lanceomniНе знаю, сталкивается ли ещё кто-нибудь с проблемой несовпадения версий ядра и Sandbox.kext / Seatbelt.kext при монтировании DMG, но я заметил, что старые ссылки на файлообменники умерли, и полностью обновил первый пост темы...
Привет!
Проверил — все новые ссылки работают отлично!
Источники и реестр соавторов (указано участников: 11 · Тема #1992)
| Участник | Роль в досье | Сообщений | Период активности |
|---|---|---|---|
| @lanceomni | Основной автор | 7 | 2009-01-22 → 2012-11-26 |
| @eMatoS | Ключевой участник | 3 | 2009-01-22 → 2009-03-28 |
| @oneshot | Участник | 2 | 2009-03-27 → 2009-03-28 |
| @pαuℓzurrr. | Участник | 1 | 2009-01-22 |
| @nfoav8or | Участник | 1 | 2009-01-22 |
| @CamEdwardo | Участник | 1 | 2009-04-03 |
| @Sokairyk | Участник | 1 | 2009-04-26 |
| @Taisto | Участник | 1 | 2009-04-26 |
| @ptesone | Участник | 1 | 2009-09-19 |
| @Thomasasz | Участник | 1 | 2009-11-10 |
| @gils | Участник | 1 | 2012-11-26 |