Меня часто спрашивают:
- Почему я не включил в свои сборки (MacOSXInstall_Universal_10.5.6 (1.3) и 10.5.7 (2.1, 2.2)) например, то-то и то-то?
- Почему я не сделал возможность выбора при установке тех или иных драйверов?
Причин этому несколько:
1. После удаления из Retail лишних языков и принтер-драйверов, места (до предела однослойной болванки) остается чуть более 200 Мб. Так что шибко то и не разгонишься! Да и все возможные варианты, все равно учесть не возможно! Лично у меня 4 хака, да еще 5 чужих под моим контролем! И у всех, у них различные наборы драйверов, программ и настроек! Все нужное (и то, что хотелось бы) просто не влезет!
2. То, что считается правильным сейчас, может морально устареть уже через несколько дней!
Вы посмотрите с какой невероятной скоростью, почти ежедневно все меняется! Появляются новые версии, новые технологии и подходы! Иногда перечеркивающие все, что было актуально до этого!
Ну и зачем мне дистрибутив, на наполнение которого я потратил уйму времени, и в кастомайзах которого я уже через месяц почти ничего выбирать не буду?! Или из-за ненужности для данного железа, или из-за того, что это уже морально устарело!
Я считал (и считаю), что задача такого дистрибутива быть максимально близким к ретэйлу, запускаться без лишних хлопот (флэшки, образы и пр.) и хоть как то ставиться на широкий диапазон железа! Все! Для всего остального есть форумы, голова, руки и большой, красивый бубен!
Согласитесь, что собранный по такому принципу тот же Retail 10.5.4 (+decrypt+disabler+legasy+SMBIOSEFI+PS/2) оставался бы актуальным и по сей день!
Запустился с DVD, не ломая голову над выбором установил Мак Ось, загрузился с установленной системы, накатил комбоапдейт до 10.5.7 и вперед — доводи все до ума, под текущие веяния в мире хакинтошей, и под свое, конкретное железо!
Куда проще и полезнее создавать свои наборы драйверов (и утилит), под конкретное железо, особенно если там сложная и хитрая последовательность, или еще какой геморой (те же ноуты)! Хотя бы потому, что через пол года, ты можешь просто забыть - что, и как ты делал! А тут - поставил сборку типа MacOSXInstall_Universal, обновился, накатил свой же набор (пэкэдж) драйверов и в ус не дуешь!
Именно по этому принципу, в свое время мной был создан дистрибутив (+ пэкэдж драйверов) для ноута Samsung R560 (кто читал мою тему на Applelife — знает)! И именно такой подход позволил использовать этот дистрибутив (да и пэкэдж) для успешной установки Лео и на другие модели Самсунгов (R460, R710, Q210 и пр.)!
Ну вот, собственно а теперь о том, как же создать самому такой установщик драйверов! Да просто!
Итак начнем......
А вот далее я собирался все по шагам описывать, даже начал экраны грабить, а потом подумал — а нафига!!! Долго это и муторно! К тому же это Лаборатория, и здесь тусуются люди знакомые с Мак Осью не по наслышке! Да еще как знакомые!
Вот вам мой пример проекта пэкэджа с набором драйверов для ноута Samsung R560 (ну и сам PackageMaker.app до кучи):
xttp://narod.ru/disk/10999047000/Samsung.zip.html
Тут pdf с инструкцией в картинках (спасибо Lukich):
xttp://narod.ru/disk/11196505000/Делаем%2Bсвои%2B.pkg.rar.html
Запускайте, смотрите, меняйте состав, компилируйте! Ничего сложного там нет! А я просто дам ниже свои пояснения и некоторые тонкости, которые нарыл опытным путем! Ну и отвечу потом на вопросы, если такие появятся!
1) Cчитаю не лишним предварительно уточнить — а что же конкретно будет делать наш (ваш) файл.pkg при запуске?
А вот что:
1. Вывод вступительной информации - что, зачем, какой версии и пр. (пункт не обязателен);
2. Read Me — всякие предупреждения, рекомендации и пр. (пункт не обязателен);
3. Лицензионное соглашение (если надо) и его подтверждение (пункт не обязателен);
4. Запрос пароля администратора;
5. Выбор в кастомайзах — что ставить, а что нет (если кастомайз есть);
6. Выполнение прединсталляционных действий (пункт не обязателен);
7. Последовательная (по выбранным пунктам) установка (копирование) файлов;
- а) выполнение прединсталляционого скрипта (пункт не обязателен);
- б) копированее самого файла (файлов);
- в) выполнение постинсталляционного скрипта (пункт не обязателен);
8. Выполнение постинсталляционных действий (пункт не обязателен);
Здесь интересны пункты 6 и 8! Т.е. Выполнение действий до установки драйверов (например выгрузка конкретного кекста из памяти) и после установки всех драйверов (например чистка кэшей)!
Так же интересны и важны пункты 7-а и 7-вэ! Например, для того, чтобы корректно встал IOUSBFamily.kext от Slice лучше «старый» предварительно из системы удалить, и это у меня прописано в ПРЕДинсталляционном скрипте USB_i.sh :
#!/bin/sh cd /System/Library/Extensions/ sudo rm -R IOUSBFamily.kext exit 0
Совет от Cvad: Лучше добавить еще ключ f, который отключает запрос на подтверждение, независимо от разрешения файла.
sudo rm -Rf IOUSBFamily.kext
С другой стороны, на «родные» кексты, т.е. которые изначально были в системе (то же IOUSBFamily.kext), инсталлятор сам правильно выставит все необходимые права (он их знает из системы), а вот на сторонние кексты, типа UUID.kext инсталлятор (и система) необходимых прав не знает! Их нужно выставить самому! Поэтому для того же UUID сделан ПОСТинсталляционный скрипт UUID_o.sh :
#!/bin/sh cd /System/Library/Extensions/ sudo chown -R root:wheel UUID.kext sudo chmod -R 755 UUID.kext exit 0
2) Мой пример пэкэджа не имеет кастомайза, все ставится скопом и сразу! Ну я так захотел!
3) Встанте слева на любое имя кекста и вы увидите справа свойства его установки:
Selected — выбран в кастомайзах по-умолчанию
Enabled — разрешена смена выбора (ставить или нет)
Hidden — скрыт с глаз пользователя (не виден в кастомайзах), но ставиться будет (если выбран в Selected)
4) Раскройте слева стрелочки под именами кекстов и вы увидите конкретные файлы для копирования, встаньте на них и вы увидите справа путь откуда и куда они будут копироваться! Тут лучше поставить Install как Relative to project (относительный) путь, чтобы потом проект можно было хранить и запускать в любом месте (на любом разделе или диске)!
5) Перейдите справа на вкладку Contents и вы поймете, что один крыжик в кастомайзах (один пункт) может устанавливать более одного файла (если надо)!
6) Перейдите далее на закладку Scripts и вы увидите пути до ПРЕД и ПОСТ инсталляционных скриптов!
7) Нажмите внизу кнопку Edit Interface, и вы поймете как добавить (или убрать) фоновую картинку, Informations, Read Me, лицензионное соглашение и иже с ними!
8) Т.к. мой пэкэдж не имел кастомайза, и в систему ставилось все по-умолчанию, а так же потому, что мне в лом было разбираться с «Выполнением постинсталляционных действий» самого пэкэджа, чистку кэшей я воткнул в ПОСТинсталляционный скрипт последнего из устанавливаемых кекстов (out.sh)
#!/bin/sh sudo rm -R /System/Library/Extensions/Caches sudo rm -R /System/Library/Extensions.mkext sudo rm -R /System/Library/Caches/ exit 0
Хотя и признаю — это не совсем корректно!
9) Тщательно продумайте скрипты - что вы должны сделать ДО установки конкретного кекста, и ПОСЛЕ его установки! Что может помешать работе нового кекста, и без чего он работать не будет! Например, установка Chameleonsm без удаления AppleSMBIOSEFI.kext смысла не имеет! Или установка com.apple.boot.plist с параметрами для Chameleonsm, но без самого Хама то же бессмысленна!
10) Кстати, если вы в Destination укажете какую нибудь временную папку (обязательно для каждого файла), то вы вполне можете экспериментировать с правкой и компиляцией моего проекта! При запуске этого пэкэджа он будет честно все ставить в... указанную вами папку!
Все!
Разбирайтесь, смотрите, редактируйте!
Как уже сказал, будут вопросы — отвечу!
Сообщение отредактировал dan1234: 01 Авг 2009 - 18:43

Вход
Регистрация
Помощь




Цитата



