Буквально на днях вышел в свет очередной апдейт яблочной операционки. Обновление до предыдущего релиза 10.6.1 через встроенный system updater прошло без проблем, чего я, собсвтенно, ожидал и от новой версии 10.6.2. Однако, не все прошло так гладко, как хотелось...
В релизе 10.6.2 обновилось ядро системы (kernel) до 10.2.0. Ну и что, спросите вы... а то, что в хакинтошах присутствует ряд неродных kext-ов, котороые и заставляют ОСь работать на "инородном" железе. В них то все и дело, т.к. нет гарантии, что они все написаны грамотно, не завязаны на конкретную версию ядра системы или еще чего. В общем, после перезагрузки машины я получил Kernel Panic, причем самый противный, который только может быть - вылетал он сразу после начала загрузки системы, то есть загрузится в safe mode или single user mode не представлялось возможным. Ругалась ОСь на некий SleepEnabler.kext.
Не вопрос, подумал я. Слип на рабочей машине мне ниразу не нужен... да и не пользовался я им никогда и нигде, кроме ноутов. Чтобы исправить ситуацию, грузимся с любого загрузочного диска мак оси, открываем терминал и удаляем несчастный kext. При следующей загрузке пускаем систему с флагами -v -f, чтобы не использовались кэши кекстов и заодно, чтобы помониторить другие возможные ошибки.
В моем случае ошибок больше не было. Система загрузилась, как обычно шустро. Но это был еще не конец - опять пропал звук! Если вы читали серию предыдущих статей, посвященных установке леопарда на Intel PC, то поймете мои чувства :) Для тех, кто не читал - звук никак не хотел работать на свежеустановленной операционке, а потом еще пропал после апгрейда видео карты.
На этот раз звук вернул путем возвращения родного AppleHDA.kext от Snow Leopard 10.6, более грамотной компиляции DSDT.aml и использовании LegacyHDA.kext. Все эти файлы вы можете попробовать на своей системе, но я не гарантирую их работоспособность, особенно, если у вас звук не ALC888. Напоминаю, DSDT.aml должен лежать в корне загрузочного раздела, а LegacyHDA.kext в /Extra/Extensions.
Для самостоятельной компиляции DSDT.aml выкладываю свой кусок кода, отвечающий за аудио на базе ALC888:
{
Name (_ADR, 0x001B0000)
Method (_PRW, 0, NotSerialized)
{
Return (Package (0x02)
{
0x0D,
0x05
})
}
Method (_DSM, 4, NotSerialized)
{
Store (Package (0x0C)
{
"codec-id",
Buffer (0x04)
{
0x88, 0x08, 0xEC, 0x10
},
"layout-id",
Buffer (0x04)
{
0x78, 0x03, 0x00, 0x00
},
"device-type",
Buffer (0x07)
{
"ALC888"
},
"PinConfigurations",
Buffer (0x28)
{
/* 0000 */ 0x50, 0x41, 0x01, 0x01, 0x50, 0x40, 0x21, 0x02,
/* 0008 */ 0x30, 0x01, 0x10, 0x90, 0x20, 0x60, 0x01, 0x01,
/* 0010 */ 0x70, 0x20, 0x01, 0x01, 0xA0, 0x90, 0xA1, 0x02,
/* 0018 */ 0x10, 0x30, 0x81, 0x01, 0x40, 0x90, 0xA1, 0x01,
/* 0020 */ 0x60, 0x61, 0x4B, 0x01, 0xF0, 0x01, 0xCB, 0x01
},
"reg",
Buffer (0x28)
{
/* 0000 */ 0x00, 0xD8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
/* 0008 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
/* 0010 */ 0x00, 0x00, 0x00, 0x00, 0x10, 0xD8, 0x00, 0x02,
/* 0018 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
/* 0020 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00
},
"platformFamily",
Buffer (One)
{
0x00
}
}, Local0)
DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
Return (Local0)
}
}

Долго пытался завести звук по разным манам и с различными кекстами - ни в какую. Но благодаря этой статье всё заработало на отлично.
Спасибо!
Отправить комментарий