Mac OS X

О Хакинтошах: Оглавление

Читаю логи сайта, вижу как мечутся по моему уютному бложику пришедшие с поисковиков по "хакинтошным" запросам. Кажется полезной идеей сделать оглавление и поместить ссылку на него в основные посты раздела. То же самое будет со временем сделано и для других больших тематик, собственно я сам постепенно начинаю путаться (но поиск спасает).

Предуведомление: если у вас процессор не Intel Core, а более старый Intel, Intel Atom или AMD, то вы попали не по адресу, скорее всего вам...

Из говна и палок

На поведение Windows при вставлении-вынимании флешки я уже жаловался: событие не прилетает, нужно поллить. Потом жаловался и на OS X - событие прилетает, но до того, как устройство появляется в списке томов. Тоже поллинг.

Но действительность на OS X превосходит ожидания.

Если мы размонтируем устройство сами, через FSUnmountVolumeSync(), то поллинг работает нормально: прилетает callback, дальше по таймеру несколько раз читаем список томов, из списка размонтированный том пропадает, все отлично.

А вот если размонтировать через Finder, то жизнь ГОРАЗДО...

WM_DEVICECHANGE на OS X

Продолжение к WM_DEVICECHANGE и все все все (потому и заголовок такой), только на маке.

На OS X, казалось бы, все хорошо, там есть такое:

DARegisterDiskAppearedCallback(m_session, kDADiskDescriptionMatchVolumeMountable, mountCallback2, this);

Ну и дальше в том же духе. И на всовывание USB-карточки прилетает callback.

Дальше мы хотим узнать, что же нам всунули, идем получать список маунтов:

CFURLEnumeratorRef enumerator = CFURLEnumeratorCreateForMountedVolumes(...

Загадка DPI

Вот значит вроде порешал проблему:
  • Все шрифты теперь в pt, а не в px
  • Практически все иконки - в SVG (осталась, буквально, одна, но отчего-то в Qt stylesheets не работает svg, хотя по доке - должна, ну соберусь с силами и буду генерировать ее на скаку)
  • Размеры окон, там где надо (автомат работает так, что мне не нравится) - в em
  • чего-то еще вылезло, но вот не могу уже вспомнить
И все на винде заработало прилично. Несу на мак. Собираю. Ой.

И вот гложет меня теперь вопрос:

Отчего на одинаковом мониторе (виртуальном, 1920x1200, никакого HiDPI, никаких специальных настроек, операционки поставлены по дефолту) 9pt шрифт на винде (приблизительно) соответствует по размеру 14pt на маке?. Один и тот же шрифт. Тахома.

Я прийшов, тебе нема

Вот есть такой вызов, strnlen:

     size_t
     strnlen(const char *s, size_t maxlen);

DESCRIPTION
     The strnlen() function attempts to compute the length of s, but never scans beyond the
     first maxlen bytes of s.
И он есть, например, в Mac OS X 10.7 и новее.

Берем код с этим вызовом, собираем с -mmacosx-version-min=10.5 (должен получиться совместимый c 10.5 код, да?) на 10.8, несем на 10.6, запускаем.

Все падает.

И ладно бы падало с внятным сообщением, вот не могу залинковать такое. Нет, SIGSEGV, нулевой указатель (на функцию?).

После этого начинаешь любить Win32 особенно остро.

Про Mac OS X и совместимость (и ленивый линкер)

По случаю выхода XCode5 взялся я проверять, а что у этой штуки с backward compatibility, не сломалось ли чего, будет ли работать на Mac OS 10.5, к примеру...

И, надо сказать, результаты меня расстроили (помимо необъяснимой проблемы с VMWare

Для начала я наткнулся на широко известную проблему с ___bzero, на которую все кто мог уже наступили:

dyld: lazy symbol binding failed: Symbol not found: ___bzero
...

Q: mDNSResponder/Bonjour через роутер

Было у меня все тихо-мирно: в одной локальной сети жили несколько Ma/Hackintosh-ей, был в сети AppleTalk-сервер на FreeBSD, сервисы на котором анонсировались через mDNSResponder.

И все работало. В частности, и Time Machine и Макосовский инсталлятор видели тома на сервере (бонжуром) и все было прекрасно.

Но. Настал день, когда топологию сети пришлось поменять. Сейчас некоторых Ma/Hackинтоши живут в другом сабнете, роутятся через роутер (через который раньше ходили в интернет, а теперь ходят в мой LAN, я его развернул внутрь).

Естественно, на роутере все NAT-ы и файрволлы теперь повыключены, он прозрачен.

Но, естественно же, мультикасты или что там еще ходило от mDNSResponder - сами по себе в другой сабнет не проходят.

Вопрос: а как добиться счастья? Может Port Forwarding какой нужен? Или конкретные какие-то мультикасты фигачить в другой сабнет (правда, этот Netgear, кажется, мультикасты не умеет форвардить). Что ему надо то?

Пока бэкаплюсь на конкретный том, бэкапы работают, а вот при необходимости с бэкапа подняться - будет неудобно, инсталлятор, насколько я помню, возможности скормить свой afp://-том не дает.

Q: mmap() ?

А я вот извиняюсь, а Windows умеет mmap()-ать файлы с сетевого диска?

А макос?

Ну то есть у меня какое-то ощущение из прошлого, что нет, нельзя, но в доках такого ограничения не нашел.

Про Mac и 32 бита

Ваяю потихоньку новый варез для фотографов (пока не скажу какой). Делаю его на Qt5, вот так вот решил.

В связи с этим встает вот такой вот вопрос:

  • Qt5 не билдится как Universal Binary, обещают починить, но там есть препятствие в лице v8 (насколько понял из чтения мейлинг-листов).
  • Qt5 поддерживает Mac OS X начиная с 10.6. Эта самая 10.6 вроде бы требует 64-bit capable CPU (это по комментариям в Qt-шном багтрекере, где обсуждают отсутствие UB). Хотя в Википедии пишут, что 64-bit only - только с 10.7
  • Посмотрел в статистике RawDigger: 32-битных Маков 1%. Не от числа вообще компьютеров а от числа маков. У меня, понятно, статистика смещенная и кривая, но какая уж есть.
Собственно, вопрос: а что будет, если я в мак-версии дропну 32-битность? Целевая аудитория вареза - фотографы, как обычно. Теоретически, это заденет модели 2006-го года и некоторые макмини 2007, но их же должен быть вот тот самый 1%?

По-моему, этот вопрос мы уже обсуждали в этом бложике "вообще", но может у кого есть объемная статистика?

Q: OS X 10.7.5 + Time Machine?

Граждане маководы!

А кто-нибудь из вас уже столкнулся с Time Machine is broken after 10.7.5 update и подобным?

В том смысле, что вот тайм-машина перестала нормально работать, а затем выключение Spotlight помогло?

Я пока в первой фазе: TimeMachine не работает, а выключение Spotlight - не помогло. Ну вот буквально, за последние минут 10 сбэкапило аж 434 килобайта из тех 4.5Gb, кои собирается бэкапить.

И это я делаю чистый эксперимент: поставил 10.7.4 (на отдельный раздел на хакинтошной машине), успешно ее побэкапил за какое-то человеческое время (не замерял, но это были не часы, а может минут 10 на полный бэкап), накатил 10.7.5 Combo и сижу, наслаждаюсь этими 434кб за 10 минут.

Бэкаплюсь на AFP, подключен по гигабиту, мегабайт 50 в секунду файлового IO там есть.

Кто виноват, что делать и где водка?

Про Look and Feel

Пользователи мак-версии RawDigger вероятно заметили уже, что окошко гистограмм очень широкое.

А широкое оно оттого, что контролов много. Окну же сказано уменьшаться только до тех пор, пока все контролы видны.

А вот как это отрисовывает Qt под разными ОС (окно завернуто в минимальную ширину):

По клику откроется полный размер.

Сверху вниз:

RawDigger 0.9.10 - версия для Mac

Продублирую анонс на radigger.ru тут, с небольшими комментариями.

Обещал Mac-версию в течение марта? получите.

Это альфа-версия, потому что ей от роду - неделя (даже меньше). Ее, конечно, тестировали, под оный мак немножко правили, но бетой ей раньше чем через месяц-два не быть, просто не по понятиям. Кроме того, маковская специфика (хоткеи, например) в документации не отражена, просто не успели.

Отличия от Windows-версии:

  • Функциональность соответствует версии 0.9.10 для Windows за исключением Drag-n-Drop на иконку приложения
  • ...

Картинка дня

Кто не понял про что это - смотрите теги :)

Qt - рулит. Ну то есть я не разобрался (пока?) с динамическими библиотеками, Frameworks и прочими страшными словами, поэтому с LibRaw слинковался статикой.

Ну, естественно, повылезало всякого, но умеренно:

  • Явная установка лимитов размеров элементов. Где-то слишком мало оказалось (преимущественно), где-то, наоборот, слишком много. Шрифты все-таки совсем другие. Приходится доделывать (и на скриншоте видно, что еще не закончил).

    Без таковой установки все может выглядеть немножко слишком просторно или слишком резиново,но почти гарантированно не будет ужасно

  • Qt Designer - полный и абсолютный трэш и угар. Диалоги, которые он делает - и на винде то плохо переживают шрифт 150%, а на Mac - полная катастрофа. Пока, временно, растянул на побольше, но придется руками переделывать.
  • С Shortcuts - ожидаемые и неожиданные приколы. Например Preferences (Ctrl-P в виндовой версии) стала Command-, (как положено), но Command-P тоже работает. Но что-то и отвалилось, скажем Ctrl-H не стала Command-H (Hide).
  • QGroupBox, который на винде выглядит отлично, на Маке смотрится плохо, а заменить нечем.
  • Ну и, так как инсталлятора нет, то ExifTool придется класть внутрь .app, а значит как-то научиться его там найти. Но, похоже, второе реально несовместимое с виндой место.
  • А первое несовместимое место - это обращение с нелатинскими именами файлов. Виндовый wfopen (и подобные) хочет wchar_t*, а Мак - UTF-ную строку в char*

Qt+Xcode = ?

Делаем так:

qmake -spec macx-xcode somefile.pro
Дальше напускаем туда (на получившийся pbproj) Xcode 4.2, Xcode с грохотом падает. Ну то есть известная проблема, как выясняется, но ведь ей минимум полгода?

Качаю Xcode 3.2 (4гига однако, еще где-то час).

Чтобы два раза не вставать. Я правильно понимаю, что если я соберу некий варез как 64-битный, то он не будет работать на Intel Macs с Core Solo (т.е. на очень старых Mac Mini) ну и естественно на PPC. А на всех остальных - будет, независимо от битности ОС, верно?

Q: переносимые имена файлов в локальных кодировках (C++)

А вот, извиняюсь, вопрос.

Вот есть имя файла в национальной кодировке и я его хочу fopen(). На Винде и на Маке одним куском кода (хе-хе).

Насколько я сумел это изучить, ситуация такая:

  • Win32: или я отдаю в fopen() 8-битную кодировку (1251), или в _wfopen() в wchar_t (UCS-16?)
  • Mac: отдаем в fopen() UTF-8 и нам щастье
  • Linux: не знаю, пока руки не дошли.
Но это все с русским, который представим в виде 8-бит. А с китайским? Сдается мне, что в винде это только через _wfopen() получится.

Вопрос: есть какой-то совместимый способ, одинаковый на всех помянутых системах, или так и придется #ifdef WIN32...?

Hackintosh 10.7: восстановление с Time Machine

[Оглавление раздела Hackinthosh]

С восстановлением OS X целиком с Time Machine backup на родных Маках никаких проблем нет: Time Machine должна быть видна через mDNS (Bonjour), грузимся с инсталляционного диска/флэшки (можно даже с того, с которого на данном маке поставиться нельзя) и все восстанавливаем.

С Хакинтошами все выглядит сложнее:

  • Загружаемый на PC инсталляционный диск с OS X Lion - на сегодня не существует.
  • Кроме восстановления системы, нужно еще восстанавливать загрузчик.
В результате экспериментов, родился...

Time Machine server на FreeBSD: backup, restore, полный restore...

[Оглавление раздела Hackinthosh]

Как многие знают, Time Machine на Mac OS X 10.7 не поддерживает SMB

Пришлось осилить AFP и к нему mDNSResponder. И если с AFP все тривиально, то с mDNSResponder пришлось помудохавозиться, ибо документации к нему в сети сыскать не удалось, исключительно методом тыка разбирался.

Идеальное решение должно уметь:

  • Бэкап TimeMachine на FreeBSD-сервер.
  • Пофайловое восстановление с TimeMachine за нужную дату.
  • Накатка целого бэкапа из инсталлятора Lion/Snow Leopard

Нижеприведенный текст...

Mac OS X 10.7 Lion: Hackintosh

[Оглавление раздела Hackinthosh]

Поапгрейдить штатными средствами Хакинтош на OS X 10.7 нельзя, сделать инсталляционный диск/флэшку для 10.7 и обычного PC вроде бы тоже пока нельзя (? я не нашел).

Чтение форумов дает кучу весьма противоречивой информации, из которой скомпилировалось следущее (за основу взято вот это: xMove + MultiBeast: Install OS X 10.7 Lion on any Supported Intel Core 2 or Core i based PC).

У меня (но на вполне mainstream-железе) оно сработало.

  • Нужен
  • ...

Магия: VMWare + Hackintosh + Sandy Bridge

[Оглавление раздела Hackinthosh]

Чтобы Mac OS X работал под VMWare под новыми интеловскими горшками, надо в .VMX-файл добавить строчку:

cpuid.1.eax = "0000:0000:0000:0001:0000:0110:1010:0101"

Установка Snow Leopard на PC с помощью USB-флэшки

[Оглавление раздела Hackinthosh]

hackintosh1.jpg На неделю позже, чем обещал, но я добил этот текст!

После успешной установки Snow Leopard на PC я оказался завален почтой, общая суть которой сводилась к тому, что Prasys пишет не очень понятно, да и английского не розумию, напиши пожалуйста на русском (если честно, то после чтения Хакинтошных форумов у меня тоже временами складывается впечатление, что я тоже...

Pages

Subscribe to Mac OS X