Русский
Русский
English
Статистика
Реклама

Mac

Перевод Собираем Mac mini на Raspberry Pi Zero

07.03.2021 12:13:35 | Автор: admin

Несколько лет назад я увидел собранный Джоном Ликом из RetroMacCast миниатюрный Macintosh, размер которого был в три раза меньше реального. Меня одолела завистьЯ очень хотел собрать аналогичный, но тогда был слишком ограничен в ресурсах. Однако время шло, и технологии не стояли на месте. Появление более компактных и дешевых компонентов существенно облегчило задуманный тогда проект, и в итоге он воплотился в жизнь.

Сегодня я подробно расскажу вам все детали этого процесса, чтобы и вы могли собрать себе такое же чудо. Единственный нюанс это необходимость доступа к 3D-принтеру, остальные детали легко доступны.





Необходимое оборудование


Raspberry Pi


  • Raspberry Pi Zero W. W-версия оснащена WiFi.
  • 40-контактная гребенка.
  • Теплоотвод (рекомендуется).
  • Совместимый источник питания (желательно модель со встроенным выключателем On/Off).
  • Кабель mini HDMI HDMI (для настройки).

На Amazon предлагается множество комплектов, в которых все это уже есть. Я использовал этот. Мини-корпус для Raspberry не обязателен, но будет не лишним и позволит защитить его в процессе сборки и настройки.

Другие компоненты


  • ЖК-дисплей 640x480.
  • Короткий GPIO-шлейф мама-мама. Я взял 6-дюймовый экземпляр. Более длинный будет сложно втиснуть в корпус.
  • Клавиатура и мышь. Клавиатура потребуется только для настройки, так что можно просто взять от подручного ПК, а вот беспроводная мышь пригодится в принципе.
  • Небольшой microUSB-хаб без питания.
  • Монитор с HDMI-входом и соответствующим кабелем. Он понадобится только для начальной настройки.
  • MicroSD-карта на 32Гб.
  • Bluetooth-колонка (необязательно).

Обратите внимание, что проект реализован с конкретным дисплеем. Клавиатура нужна только для настройки и после можно будет ее отключить. Это уже будет зависеть от того, как вы планируете использовать готовый мини-Mac. А вот отдельная мышь определенно будет нужна.

Для корпуса




Инструменты


  • Шестигранный торцовый ключ 2.5мм. Вот полный набор под метрическую систему и под английский стандарт.
  • Наждачная бумага с зерном 150.


Этап 1. Изготовление корпуса








Собирается он из четырех деталей. Все эти детали печатались с высотой слоя 0.20мм на принтере Prusa I3 MK3S. В качестве основы я выбрал гладкую пластину. Переднюю и заднюю части я спроектировал с учетом удобства последующего удаления поддержки. Это облегчило дальнейшую шлифовку.

  • MiniMacBack.stl печатался на задней стенке с поддержкой только непосредственно над рабочим столом (Support on build plate only). Материал: бежевый PLA.
  • MiniMacFont.stl печатался вертикально, для чего потребовался поддержка в режиме Везде (Everywhere), а также поля. Материал: бежевый PLA.
  • MiniMacDisk.stl и MiniMacToggle.stl печатались без поддержки. Материал: черный PLA.

У MiniMacFront.stl есть дополнительная поддержка, идущая вдоль задней стенки. После печати она обрезается, а поверхность зашлифовывается.

После удаления всех поддержек переднюю и заднюю часть я обработал наждачной бумагой, стараясь стесать все неровности и сделать поверхность однородной. Отдельное внимание стоит обратить на передний край заготовки MiniMacBack.stl. Нам нужна гладкая поверхность, чтобы эта часть стыковалась с задней вплотную или с минимумом неровностей. Я не стал использовать более мелкую наждачку, так как ранние модели Mac как-раз изготавливались из текстурированного пластика. Если вы захотите покрасить детали, то на Instructables.com есть отдельное руководство по сглаживанию PLA-изделий.

Этап 2. Монтаж гаек








После печати и шлифовки можно вставлять гайки. Для этого у нас заготовлено 3 штуки М3 под шестигранник. Два паза располагаются на внутренней губе и один в нижней части. Аккуратно расположите гайки вровень с пазами и небольшим усилием вдавите. Затем переверните корпус и еще раз продавите каждую гайку какой-нибудь твердой поверхностью. Постарайтесь, чтобы в итоге они оказались заподлицо с корпусом. При необходимости вкрутите с обратной стороны винт и осторожно подтяните гайку. Не прилагайте слишком много силы и постарайтесь не провернуть ее.

Теперь нужно прикрепить к основанию фиксатор для платы Raspberry Pi. Толстыми пальцами это будет сделать непросто. Вставьте винт M3x12мм с плоской стороны фиксатора и прикрутите его к основанию корпуса. Затем осторожно вставьте в винт шестигранный ключ и подтяните, но до конца не затягивайте. На одной из фотографии показан прикрепленный фиксатор и торцевая часть вставленного в него ключа. Плотность затяжки должна позволять повернуть его на 90 градусов, то есть с позиции 3 часа в позицию 6 часов. После установки Pi фиксатор мы повернем на 90 градусов против часовой стрелки к позиции 3 часа. В итоге он окажется сверху над краем Pi и после затяжки надежно его зафиксирует.

Этап 3. Подготовка диска







Отрежьте узкую полоску малярного скотча шириной 22мм. Я сделал это на твердой рабочей поверхности. Готовой полоской я осторожно обернул по центру макет диска и обрезал остатки канцелярским ножом. Затем я также аккуратно обрезал внутренний нахлест скотча (см. фото). Так диск будет выглядеть более естественно. После я слегка вдавил вставку с обратной стороны. Если паз окажется слишком узким, осторожно подшлифуйте края наждачкой. В идеале макет должен входить плотно. Если же он, наоборот, будет болтаться, то можно зафиксировать его буквально каплей суперклея. Обратите внимание на фотографии.

Этап 4. Настройка Raspberry Pi Zero






Перед настройкой наш Raspberry Pi Zero W нужно подготовить. Если по умолчанию он не оснащен 40-контактной гребенкой ввода/вывода, то потребуется ее припаять. Опять же, на сайте Instructables есть инструкция по пайке. Если для вас это затруднительно, то следует сразу купить Pi с уже установленной гребенкой. На этой же стадии мы крепим теплоотвод.

Я не буду описывать процесс записи операционной системы PI на SD карту. Программы для загрузки образа находятся на сайте Raspberry вместе с инструкциями. Дополнительно можно посмотреть видео. Скажу лишь, что нужно использовать рекомендованную ОС, так как вам понадобится система с графическим UI.

После подготовки карты с ОС вставьте ее в Raspberry Pi Zero W и подключите монитор с помощью HDMI-адаптера. У Pi один microUSB порт выделен для питания и один для данных. В этом случае нужно использовать второй. Присоедините к концентратору клавиатуру и мышь, после чего подключите питание.

Сначала идет этап начальной настройки. Выберите Country, Language, Timezone и Keyboard. Далее система попросит придумать пароль. Мы включим удаленный доступ по SSH, использовать который без хорошего пароля не рекомендуется. Выберите сеть и введите ее пароль. Далее на определенной стадии нужно будет обновить систему, на что уйдет какое-то время.

Теперь нужно внести изменения в настройки по умолчанию. Нажмите иконку Raspberry в левом верхнем углу. Выберите Preferences -> Raspberry Pi Configuration. В диалоговом окне перейдите во вкладку Interfaces и выберите Enable SSH. Нажмите OK, чтобы закрыть окно.
По завершению обновления нажмите Restart.

Этап 5. Укомплектовка ПО


Хочется отметить немаловажный труд Пола К. Прэтта, создателя Gryphel Project. Он реализовал проект по сохранению ПО, разработанного для ранних компьютеров Macintosh. Пол создал эмуляторы для работы в нескольких разных средах: MacOS, Windows 10 и Linux, включая вариант для процессоров ARM, используемых в Raspberry Pi. Для загрузки доступно несколько стандартных версий таких эмуляторов. Помимо этого, он предлагает сервис для создания специализированных версий, которым я и воспользовался, так как под наши требования готовые варианты не подходят.

Можно скачать все файлы непосредственно на Pi Zero, но имейте в виду, что это будет очень медленно. Данный девайс для подобных задач слабоват. Другой вариант скачать файлы на ПК, и перенести файлы через терминал с помощью утилиты scp или программы для FTP. Я использую CyberDuck, которая доступна и для Mac, и для Windows.

Сборка файлов


Создайте на жестком диске каталог Mini_vMac, куда нужно будет поместить все файлы. Этот каталог затем вы скопируете на Pi.

С помощью сервиса Gryphel я создал 2 исполняемых файла ARM. Можете скачать их с моего ящика на dropbox. Первый файл, Mini_vMac_ARM запускает программу в полном разрешении экрана, а второй, Mini_vMac_ARM_2x удваивает пиксели для более отчетливого отображения. Поместите эти файлы в каталог Mini_vMac.

Вам понадобится образ ПЗУ, который можно скачать отсюда. Берите файл 9779D2C4 Macintosh II.7z. Распакуйте его и переименуйте в MacII.ROM, после чего поместите в тот же каталог Mini_vMac.

На ToughDev есть отличное руководство по установке системного ПО для Mini vMac. Оттуда мы и скачаем файлы (ссылка будет расположена чуть ниже в середине страницы).

После скачивания распакуйте архив, и у вас получится каталог сжатых файлов под названием old_mac_softs. Их тоже нужно распаковать. При этом файл hfs500M.dsk, извлеченный из hfs500M.rar, следует переименовать в disk1.dsk. Это будет виртуальный жесткий диск. Если диски правильно проименованы, то Mini vMac монтирует их автоматически. Не обращайте внимание на hfv500M_sys755_clean.dsk. Это образ с установленным ПО системы, но нас он не интересует.

Переместите в каталог Mini_vMac следующие файлы:

  • disk1.dsk, образ жесткого диска 500M;
  • Mac701, каталог, содержащий 6 образов дисков;
  • mac753.img, установочный диск Mac OS 7.5.3;
  • mac755up.img, установочный диск Mac OS 7.5.5.


Этап 6: Перенос файлов на Pi с помощью CyberDuck








Запустите CyberDuck. Сначала нужно создать ссылку на Pi. Обратите внимание на первое фото. В нижней левой части экрана нажмите + для добавления закладки (Bookmark). Во всплывающем диалоговом окне измените протокол на SFTP. В качестве имени сервера введите raspberrypi.local. В поле имени пользователя укажите pi. Далее введите установленный при настройке Raspberry пароль. Закройте окно.

Дважды кликните по созданной закладке должно произойти подключение к Pi. Теперь можно передавать файлы. Нас интересуют:

  • Mini_vMac_ARM версия 640x480, скачанная с Dropbox;
  • Mini_vMac_ARM_2x версия 320x240, также скачанная с Dropbox;
  • MacII.ROM, скачанный из репозитория ПЗУ и переименованный;
  • disk1.dsk, образ жесткого диска 500M;
  • Каталог Mac701, содержащий 6 образов дисков для установки системы 7.0.1;
  • mac753.img, установочный диск Mac OS 7.5.3;
  • mac755up.img, установочный диск Mac OS 7.5.5.


Используя CyberDuck, дважды кликните по закладке. Если появится окно с вопросом о предоставлении разрешения одобрите. Далее откроется подключение к Pi. Перед вами будет список каталогов и файлов в директории /home/pi/. Откройте каталог Desktop.
Нам нужна новая директория. Создайте ее через контекстное меню и назовите Mini vMac. Откройте эту директорию и перетащите в нее все перечисленные выше элементы. На этом этап копирования завершен.

Этап 7. Настройка Mini vMac на Pi













Теперь мы переходим к Raspberry Pi. На рабочем столе у вас должен быть каталог Mini vMac со следующими файлами:

  • Mini_vMac_ARM;
  • Mini_vMac_ARM_2x;
  • MacII.ROM;
  • disk1.dsk;
  • каталог Mac701 с 6 образами дисков;
  • mac753.img;
  • mac755up.img.

Исполняемый файл Mini_vMac_ARM работает с нативным разрешением дисплея 640x480. Рабоатать с мелкими изображениями может быть не очень удобно, но смотрится круто. Версия Mini_vMac_ARM_2 работает с вдвое меньшим разрешением 320x240. В этом случае все видно куда лучше, но не для каждой программы оно подойдет.

Сначала нужно разобраться с этими исполняемыми файлами. Выберите их, нажмите правой кнопкой и зайдите в пункт Properties. Далее перейдите во вкладку Permissions и измените Execute на Everyone.

Чтобы упростить настройку мы будем делать ее для версии с нативным разрешением. Поскольку изменения будут вноситься в образ жесткого диска, то настройка одного файла сработает и для второго. В последствии же вы сможете запускать любой вариант.

Дважды кликните по Mini_vMac_ARM и выберите Execute. Окно развернется на весь экран, и вы увидите мигающую иконку диска. Для выхода из полноэкранного режима нажмите Ctrl+F.

Обратите внимание, что Mini vMac содержит ряд параметров управления, список которых можно вызвать через нажатие Ctrl+H. За более подробной информацией обратитесь к документации.

Откройте каталог Mac701 на Pi и перетащите Install1.image в окно Mini vMac. В результате диск смонтируется, и загрузится экран установки.

Вернитесь к Pi и, перейдя на уровень каталогов выше, перетащите disk1.dsk. На экране должно возникнуть уведомление об установке Mac500M. Выберите Install.
В процессе установки система попросит вставить Install2.image, сделайте это и далее аналогичным образом вставьте все оставшиеся диски. По завершении выйдите из режима установки (Quit) и выберите Restart.

Появится мигающая иконка диска. Снова перетащите в окно disk1.img, после чего загрузится система 7.0.1.

Примечание: для Shutdown/Quit всегда нужно переходить в меню Special и выбирать Shutdown.

Этап 8. Дополнительный апгрейд системы





Вы можете остановиться и на этом этапе, так как у вас уже будет рабочая система Mac 7.0.1.
Если же вы захотите обновить ее до версии 7.5.3, то перетащите в эмулятор mac753.img. В открывшемся окне нового диска дважды кликните по файлу System 7.5.3 01 of 19.smi. Программа проверит и смонтирует виртуальный диск.

Этот диск отобразится на рабочем столе как System 7.5 V7.5.3. CD inst. Дважды кликните по этому образу и в открывшемся диске запустите Installer, следуйте инструкциям. Примите последующее предложение Restart. Перетащите в эмулятор disk1.dsk.

Для последующего перехода с версии 7.5.3 в 7.5.5 перетащите mac755up.img, откройте диск, перейдите в каталог System 7.7.5 Update и запустите Installer, после чего следуйте инструкциям.

Этап 9. Добавление ПО










Несколько сайтов с ПО



Монтировать диски в Mini vMac можно двумя способами:

  1. Перетаскивая .DSK или .IMG файл в окно.
  2. Изменив имя .DSK файла. Диски монтируются по порядку, и эмулятор будет искать их соответственно. Вы уже видели пример этого при изменении имени образа жесткого диска disk1.DSK. Важно отметить, что если в нумерации будет разрыв, то автоматическое монтирование на нем остановится. То есть, если у вас есть disk2.DSK и disk4.DSK, но отсутствует disk3.DSK, то монтирование остановится на disk2.DSK.

Поскольку мы будем копировать файлы на жесткий диск, нам не понадобится каждый раз монтировать новые диски. Я буду использовать первый метод.

Если вы находитесь в полноэкранном режиме выйдите из него, нажав Ctrl+F. Перетащите образ диска в окно приложения, и он появится на рабочем столе. (Для извлечения образа нужно перетащить его в корзину). В случае с простым приложением или игрой нужно просто перетащить иконку Disk на жесткий диск. В результате будет создана директория с именем диска, содержащая иконку для запуска приложения.

Пример с игрой


Я буду устанавливать Lemmings, для чего заранее скачал архив lemmings_1_5_2.zip. Кстати, по опыту рекомендую избегать .SIT файлов и стараться находить .DSK или .IMG. Это упростит работу.

Я распаковал архив и перетащил образ диска в эмулятор. После появления иконки диска на рабочем столе нужно просто перетащить этот образ на жесткий диск, где все файлы будут скопированы в новый каталог. Далее останется только открыть этот каталог и запустить программу.

Экранная заставка


Я выбрал заставку After Dark, и в качестве установочного файла взял After Dark 2.0x (1993) для эмуляторов, поскольку нас интересуют именно zip-архивы или файлы DSK/IMG. Я распаковал архив и с помощью CyberDuck поместил файл .img в одну директорию с приложением Mini vMac. Опять же, нужно перетащить образ диска в эмулятор для монтирования диска. Далее перетащите приложение After Dark 2.0x и сопутствующий каталог в директорию System/Control Panels. Выполните Restart и перетащите образ disk1.dsk обратно в окно Mini vMac. Можете настраивать заставку.

Этап 10. Настройка VGA-экрана




На этом этапе я советую вам сначала сделать резервную копию SD-карты.
Помните, что данная настройка заточена именно под выбранный мной дисплей.
Его производитель прилагает PDF-руководство по работе с ПО, где также прописана инструкция по деинсталляции.

Я приведу самое необходимое.

Откройте на Raspberry Pi новое окно терминала и введите:

cd ~/git clone https://github.com/tianyoujian/MZDPI.git<br>cd MZDPI/vgasudo chmod +x mzdpi-vga-autoinstall-onlinesudo ./mzdpi-vga-autoinstall-online

По завершении установки выключите Raspberry Pi. Можно помещать его и дисплей в корпус.

Этап 11. Сборка Mini Mac















Снимите с дисплея защитную пленку и вставьте его в лицевую панель. Верхний и нижний край должны плотно прилегать к фиксирующим кромкам. Если возникнут затруднения, прошлифуйте места фиксации наждачной бумагой. После установки посмотрите на экран спереди и убедитесь, что он установлен по центру.

Осторожно подключите шлейф к верхней части дисплея. Убедитесь, что он оделся равномерно и до конца. Второй конец шлейфа подключите к Pi. Обратите внимание на фото, где показано его правильное подключение. Не забудьте вынуть SD-карту, так как с ней Pi в корпус не войдет.

Вставьте Pi в корпус, совместив выходы с отверстиями в задней стенке. Убедитесь в равномерном расположении SD-слота относительно встречного гнезда в корпусе и вставьте карту.

Придерживая Pi, поверните защелку и затяните винт торцевым ключом 2.5мм. Осторожно сверните шлейф в корпусе и совместите лицевую часть с задней. Вставьте оставшиеся винты 3мм снизу лицевой панели и аккуратно затяните. Старайтесь не выдавить гайки из выступа.

Разверните Mac и подключите беспроводной концентратор к левому порту, а в правый вставьте провод питания.

Этап 12. Загружаем!









При запуске загружается рабочий стол Raspberry Pi. Откройте каталог Mini vMac. Здесь у вас два исполняемых файла, оба из которых запускают один образ жесткого диска.

Файл Mini_vMac_ARM запускает версию с полным разрешением 640x480.
А Mini_vMac_ARM_2x запускает версию с разрешением 320x240.

Если вы хотите еще больше приблизить свое творение к оригинальному Mac Plus, можете переключить цветовую схему на оттенки серого. Это делается в разделе Monitors панели управления.

Не забывайте, что выключать Mini vMac нужно только через меню Special и выбор опции Shutdown. После возвращения на рабочий стол Raspberry Pi можете выключить устройство обычным способом, то есть через иконку Raspberry в верхнем левом углу -> Logout -> Shutdown. Теперь можно отключить питание.

Развлекайтесь!

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

Mac в дата-центрах

08.02.2021 12:21:23 | Автор: admin

Недавно компания Apple представила Mac с процессорами Apple Silicon M1, которые произвели настоящий фурор. Мы решили изучить, как домашний Mac может поселиться в дата-центрах.

Mac Mini M1 (источник ilounge.ua)

Какие сложности?


Для большинства повседневных рабочих задач хватает серверов на Linux и Windows Server. Но, если вы вовлечены в разработку под macOS или iOS, то сервер сборки должен быть на macOS. Единственный Mac, который устанавливается в стойку Mac Pro, который может быть избыточным. Подходящий вариант более бюджетный Mac Mini, но официальных стоечных решений для него нет.

Mac Mini предлагает скромные возможности для модернизации: заменить можно только SSD-накопитель и оперативную память; платы расширения PCIe можно подключить в ThunderBolt-адаптеры. Более того, Mac Mini не предоставляет интерфейсов для удаленного управления платформой (BMC, IPMI), что значительно усложняет эксплуатацию Mac Mini в условиях дата-центра. Mac Mini также предоставляет вредный для безопасности в дата-центре Bluetooth и Wi-Fi.

Тем не менее, Mac Mini используют в дата-центрах.

Доступные решения


Высота корпуса Mac Mini 3.6 сантиметра, что позволяет ему занять один юнит стойки, который составляет 4.44 сантиметра. Стоечные корпусы для Mac Mini достаточно разнообразны. Самые простые это полки, на которых располагаются Mac. Более сложные это корпусы с переходником ThunderBolt PCI Express, позволяющие устанавливать карты расширения.

Стоечные решения для Mac Mini (источник sonnettech.com)

Подобные решения хороши, когда серверов Mac мало. Но что делать, когда их количество превышает сотни и тысячи?

Как это сделано в Облаке?


Недавно у одного известного облачного провайдера стали доступны Mac Mini в качестве bare metal инстансов (пока только на Intel, без Apple Silicon).

Так как в Selectel мы активно развиваем выделенные серверы, нам стало интересно посмотреть как это реализовано в железе.

Готового шасси для Mac Mini нет, поэтому провайдеру его потребовалось разрабатывать с нуля самостоятельно. Примечательно, что Wi-Fi и Bluetooth в ОС недоступны. Согласно статье на iFixIt соответствующий модуль распаян на плате и его нельзя просто отключить. Можно предположить, что его отключают аппаратно или через конфиг FW.

Следующий интересный момент удаленное управление. Каждый провайдер решает эту проблему по-своему. Mac Mini сообщает, что к нему подключен монитор D-1, но в клиентской панели нет доступа к KVM-сервера. Можно сделать вывод, что это используется исключительно для внутренних нужд. Для доступа к рабочему столу клиентам предлагается использовать SSH и VNC.

Команда для включения VNC-сервера через SSH в macOS
sudo /System/Library/CoreServices/RemoteManagement/ARDAgent.app/Contents/Resources/kickstart -activate -configure -allowAccessFor -allUsers -privs -all -clientopts -setmenuextra -menuextra yes

Конечному пользователю доступно только управление питанием. В данном шасси управление питанием производится через сервопривод, который нажимает на кнопку включения.

Дальше еще интереснее, посмотрим как им удалось интегрировать в облачную инфраструктуру Mini, который нельзя ни переконфигурировать, ни подключить к нему карты расширения. В шасси установлена I/O-карта собственной разработки, выполняющая эти функции. Физически к Mac она подключается через Thunderbolt, а наружу смотрит сетевыми портами.

Этот модуль обеспечивает подключение виртуальных (!) дисков в виде блочных устройств. Подключенные накопители видны в системе как физические PCIe-диски, а внутренний SSD по умолчанию не используется. Получается, что на I/O-карте работает некая прошивка, которая подключается по сети в инфраструктуру провайдера, забирает оттуда виртуальные диски и отдает их в Mac через эмуляцию PCIe-диска. На рынке мы естественно не нашли подобных готовых решений, но технология очень похожа на NVMe over Fabric, которую предоставляют несколько вендоров продвинутых сетевых карт. Пишите в комментариях идеи, как бы вы это реализовали сами?

Для размещения macOS используется внешний диск

Один виртуальный диск создается вместе с инстансом и используется для размещения операционной системы. Все виртуальные диски отображаются на соответствующей вкладке в ПУ и их функциональность полностью такая же как и для обычных виртуальных инстансов.

Помимо дисков эта же I/O Card реализует в себе сетевую карту на 25 Гбит/с, которая используется для подключения к локальным сетям и интернету. Максимум, который нам удалось получить 7 Гбит/с на загрузку. Однако, нельзя быть уверенным в том, что узкое место находится со стороны облачного провайдера, так как другие ближайшие серверы Speedtest показывали худшие результаты.



Заключение


Эксплуатация Mac Mini в дата-центрах сопряжена с определенными трудностями. Но, при должном подходе из них можно сделать платформы, незначительно отличающиеся по использованию от привычных серверных или даже облачных решений.

Подробнее..

Секрет формы иконок iOS это сквиркл? Разбор

01.09.2020 14:23:02 | Автор: admin
Давайте сыграем в игру. У нас есть два ряда знакомых всем пользователям iOS-иконок. На первый взгляд иконки сверху и снизу одинаковые. Но это не так. В одном ряду вы видите настоящие иконки, а в другом подделку.





Можете ли вы определить, где какие? Не торопитесь, посмотрите внимательно? Ну что, выбрали?

Настоящие иконки находятся сверху. Думаю многие из вас заметили, что с нижними иконками что-то не так. По какой-то причине их форма выглядят не аккуратно, будто где-то был отрезан лишний пиксель. Почему так происходит?

Дело в том, что поддельные иконки по форме это квадраты с закруглёнными углами, ну и прямоугольник если говорить о серой подложке.

Но! В интерфейсе iOS нет ни одного квадрата с закруглёнными углами. Все элементы в iOS, это не квадраты и прямоугольники это суперэллипсы!

Сегодня мы поговорим про секреты в дизайнах продуктов Apple. Что такое суперэллипс? В чём магия формы иконок? И почему HomePod это суперяйцо.





Продукты Apple часто получаются противоречивыми и не лишенными недостатков. Но думаю никто не будет спорить, что в плане дизайна Apple заморачиваются наверное больше всех на рынке. И даже форма иконок в iOS взята не с потолка, а вычислена математически.

Она называется суперэллипсом или кривой Ламе, в честь математика Габриеля Ламе, который в 19 веке внёс большой вклад в теорию упругости, разработал общую теорию криволинейных координат, и придумал суперэллипсы. Что же это такое?

Это геометрическая кривая, которая строится при помощи уравнения вот такого вида:



Это уравнение задаёт замкнутую кривую, ограниченную прямоугольником. При этом меняя значение n мы можем регулировать степень выпуклости каждого угла (можно поиграться тут). При n меньше единицы, мы получаем вогнутые стороны, а форма напоминает звезду.



Увеличивая значение n, форма становится всё более выпуклой. При n=2 получается ровный круг. А при n равной 4 или 5 мы получаем привычную всем форму иконки.



У такой формы даже есть своё название сквиркл. И, нет, сквиркл это не ваш любимый раздел на PornHub. Это производное от слов square и circle. Т.е. по русски сквиркл это квадрокруг или квадратный круг.

Кстати, формула описывающая иконку iOS выглядит вот так:



Т.е. иконка в iOS это и не круг и не квадрат, а математически это что-то среднее между ними.

Кольцо и суперяйцо


Историческая справка. Популяризировал суперэллипсы и сквирклы датский ученый Пит Хейн. В 60-х годах он спроектировал транспортное кольцо в Стокгольме в виде суперэллипса со значениями n = 2.5, a/b = 6/5.



Форма развязки стала хитом. И он начал делать, столы, посуду, но вершиной его творчества стало суперяйцо. Как понимаете это трёхмерный суперэллипс, по форме похожий на яйцо.



Кстати, трехмерные суперэллипсы это суперэллипсоиды. А всякие неправильные суперэллипсоиды это суперквадрики.

Непрерывность кривизны


Но вернёмся к иконкам! Чем всё-таки квадрокруг отличается от скругленного квадрата? И чем он не угодил дизайнерами Apple? Давайте посмотрим!

Если сравнить настоящие иконки с фейковыми, мы увидим, что закругление у квадрокруга начинается раньше и степень закругления нарастает постепенно.








Лучше всего это можно визуализировать при помощи вот таких гребней кривизны.



Казалось бы, разница пара пикселей. Но плавные переходы, позволяют добиться так называемой непрерывности кривизны. И это даёт потрясающий эффект форма объекта из искусственной, как бы собранной из разных форм становится естественной и завершенной.

Именно поэтому Apple очень активно использует суперэллипсы не только в интерфейсе, но и в дизайне всех своих продуктов.

Mac Mini, Apple TV, iPhone, iPad, MacBook и конечно HomePod своего рода всё это суперэллипсы. Даже в их новом кампусе нет ни одной прямой стены.

Плавное перетекание форм и отсутствие резких переходов делает продукты Apple не только привлекательными внешне. На этот счёт есть отличная статья Николая Геллара, которую я процитирую:

Вместо того, чтобы напоминать нам о промышленных цепочках поставок, конвейерном производстве и химических лабораториях, эти более мягкие формы напоминают о красоте природы. Это кажется органичным и вызывает приятные ощущения.

Например если сравнить по дизайну HomePod и Яндекс.Станцию, становится понятно в почему станция выглядит менее привлекательно, её как будто только выпустили с завода. А HomePod будто нашел в своём саду японский мастер суйсэки искусства любования камнями.





Хотя сама Яндекс.Станция девайс отличный. А HomePod красивый, но туповатый (русского не знает).

Примеры


Но, конечно, Apple тоже не сразу к этому пришли. Например, иконки и другие элементы интерфейса стали суперэллипсами только в начиная с iOS 7.



Такая же история с Apple Watch. В Series 4 увеличили не только дисплей, но и обновили форму. Да-да, Apple Watch с четвёртой версии это тоже суперэллипс (как сам экран).




Другие компании


Естественно, не только Apple играется с суперэллипсами. Те же иконки в One UI на смартфонах Samsung, гораздо более явные квадрокруги, чем у Apple. Но, на мой взгляд, у Samsung выбранная форма не работает.

Во-первых, потому, что иконки закруглены уж очень сильно, из-за чего они выглядят неустойчиво, как будто в любой момент они могут укатиться с рабочего стола. Кстати, в физическом мире такой же ошибкой грешит колонка от Mail.ru, она просто неустойчивая.



Но это не самое главное. Основная проблема в интерфейсе Samsung. Я говорю про отсутствие единства. Плавные суперэллипсы тут соседствуют с грубоватыми скруглёнными. Как внутри интерфейса так и в дизайне самих девайсов.



А именно единство подхода начиная от самого простого элемента интерфейса, заканчивая дизайном всей линейки продуктов, делает устройства Apple такими привлекательными и доставляющими в использовании.Да, наверное, это звучит рекламно. Но, мне пофиг, просто хочется отдать должное дотошности подхода ребят из Купертино.

Эти чуваки показали миру, что красивыми могут быть не только автомобили и предметы роскоши, но обычные ноутбуки и и телефоны. Поэтому вся техника щас так круто выглядит.
Подробнее..

Перевод Управление несколькими JDK в Mac OS, Linux и Windows WSL2

23.06.2020 16:19:11 | Автор: admin
И снова здравствуйте. В преддверии старта курса Разработчик Java подготовили для вас перевод интересной статьи.



Если вам, как и мне, приходится одновременно работать с несколькими проектами (как с легаси, так и с современными), а возможно, вы разрабатываете какую-то библиотеку или утилиту для пользователей с разными версиями Java, то вы поймете проблему с переключением между разными JDK.



В наши дни установка, управление и переключение между JDK при разработке становится непростой задачей, потому что большое количество разработчиков все еще работает с Java 8, хотя многие уже переходят на Java 11. Эта проблема может быть решена разными способами. В этой статье мы рассмотрим некоторые из них.

Ручной способ


Вы можете скачать дистрибутивы с сайта вендора JDK и установить их все вручную (или просто распаковать их в какую-нибудь папку вроде $user/jdks) и все. Но тогда вам придется каждый раз проверять и обновлять JAVA_HOME, чтобы там была нужная вам JDK.

Это можно сделать с помощью bash-скриптов, bash-функций и т. д. В чем же тогда проблема? Вы просто можете забыть вызвать скрипт / функцию и поймете, что что-то пошло не так, только когда увидите UnsupportedClassVersionError.

Если вы предпочитаете все делать вручную, то можете покопаться в интернете для поиска решений. И это может быть хорошим вариантом для продвинутых пользователей. Но я использую для этого пару утилит. Итак, давайте посмотрим на них.

Лучший способ


На мой взгляд, идеальным решением будет объединение двух open source инструментов, которые существуют уже довольно давно, и возможно, вы знакомы, по крайней мере, с одним из них. Но что вы не знаете, так это то, что их можно использовать вместе.



Давайте посмотрим на их совместное использование.

Установка нескольких JDK



После установки SDKMAN! наберите:

$ sdk list java


Найдите нужного вендора, версию и введите:

$ sdk install java <id>


Давайте установим четыре JDK: две последние версии Oracle OpenJDK и две LTS-версии AdoptOpenJDK.

При установке не выбирайте JDK по умолчанию.

  1. AdoptOpenJDK сборка OpenJDK 8u252 LTS
  2. AdoptOpenJDK сборка OpenJDK 11.0.7 LTS
  3. Oracle OpenJDK 14 Последний GA
  4. Oracle OpenJDK 15 Early Access сборка


Эти четыре версии должны отвечать вашим потребностям для легаси-проектов на Java 8, для современных проектов на Java 11, а также для экспериментов с нововведениями в Java 14 и Java 15.

Отлично. У вас есть четыре JDK, установленные локально с помощью SDKMAN! Я думаю, что эта утилита действительно удобна для установки JDK и, я надеюсь, она вам тоже понравилась.

Все установленные JDK можно найти в следующем каталоге:

$ cd /Users/bruno/.sdkman/candidates/java$ ls11.0.7.hs-adpt  14.0.1-open     15.ea.20-open   8.0.252.hs-adpt


Если у вас нет необходимости часто переключаться между разными JDK, то этого будет достаточно. Вы можете использовать SDKMAN! для выбора JDK:

$ sdk current javaUsing java version 15.ea.19-open$ sdk default java 15.ea.20-openDefault java version set to 15.ea.20-open


На этом можно остановиться и использовать только SDKMAN!, но рано или поздно, вы забудете переключить JDK точно так же как при ручном подходе. Поэтому я предпочитаю автоматическое переключение JDK.

Управление несколькими JDK с помощью jEnv




Несмотря на то что SDKMAN! удобен для установки JDK, но он не помогает при автоматическом переключении между разными JDK при переходе от одного проекта к другому. Здесь нам поможет jEnv.

После того как вы установите несколько JDK, с помощью SDKMAN! или любыми другими способами, вам нужно будет добавить их в jEnv:

$ cd ~/.sdkman/candidates/java$ ls -111.0.7.hs-adpt 14.0.1-open    15.ea.20-open8.0.252.hs-adpt$ jenv add 15.ea.20-openopenjdk64-15-ea added15-ea added15-ea added...$ jenv versions system 1.8 1.8.0.252 11.0 11.0.7 14.0 14.0.1* 15-ea (set by /Users/bruno/.jenv/version) openjdk64-1.8.0.252 openjdk64-11.0.7 openjdk64-14.0.1 openjdk64-15-ea


Повторите команду jenv add для оставшихся трех версий JDK.

jEnv особенно удобен для тех, кто постоянно использует командную строку. Он позволит вам:

  1. Установить версию Java глобально для вашей системы.
  2. Установить версию Java для текущего каталога / проекта, в котором вы находитесь.
  3. Установить версию Java для текущего shellа.


jEnv использует shim и автоматически управляет переменной окружения JAVA_HOME. Таким образом, после того как вы настроите вашу систему, jEnv будет переключать версию JDK на наиболее подходящую, на основе вышеуказанных приоритетов и текущей директории. Круто! У него есть и другие полезные функции дополнительную информацию смотрите на сайте.

Автоматическое переключение между JDK


Теперь у вас установлены Java 8, 11, 14 и 15-EA. Итак, как же переключаться между ними? Давайте настроим версии и протестируем переключение.

Сначала нужно указать дефолтную глобальную JDK в системе. Для этого я обычно использую ранние сборки (Early Access). Всякий раз, когда я начинаю работать с новым проектом, я автоматически использую предстоящий релиз, что помогает мне выявить потенциальные проблемы, которые я могу сообщить в проект OpenJDK. Вы же тоже так делаете

$ jenv global 15


Теперь для любой папки, в которой вы находитесь, при выполнении java -version вы получите OpenJDK 15 EA.
Если у вас есть проект, который должен использовать Java 8, то перейдите в папку и запустите:

$ jenv local 1.8


В результате будет создан файл под названием .java-version со следующим содержимым:

$ cat .java-version1.8


Этот файл сообщает jEnv, какую JDK использовать, когда вы находитесь в этой папке.

Наконец, если вы и хотите временно переключиться на другую версию JDK, то используйте jenv shell.

Здесь есть демо, которое может пояснить все вышеописанное и как работает автопереключение.

После публикации статьи на Reddit были несколько интересных комментариев, о которых стоит здесь сказать:

  • SDKMAN! с версии 5.8.1+ поддерживает sdk env и там тоже доступно автоматическое переключение.
  • direnv очень хорош и не привязан к java. Делает то же самое, что и jEnv, за исключением того, что не помогает вам легко переключать JDK. Вы должны редактировать файлы вручную.
  • autoenv еще одна альтернатива direnv с теми же ограничениями.
  • jabba наиболее перспективная альтернатива сочетанию SDKMAN + jEnv, поскольку поддерживает весь их функционал и работает в Windows (PowerShell), что не поддерживается другими, упомянутыми выше, инструментами.

Надеюсь, вам понравилось прочитанное. Если у вас есть вопросы, просто свяжитесь со мной в Твиттере.



УПРАВЛЯЕМ ВЕРСИЯМИ БАЗ ДАННХ ЧЕРЕЗ FLYWAY




Еще по теме


Подробнее..

Новые возможности Microsoft 365 для Mac

24.12.2020 10:15:09 | Автор: admin


Недавно мы анонсировали ряд улучшений для Mac, в частности новые версии приложений Microsoft 365 для компьютеров Mac на базе процессора M1. Благодаря этому повысится производительность офисных приложений Microsoft на последних моделях MacBook Air, MacBook Pro и Mac mini. Новые приложения Office являются универсальными, поэтому также будут работать на компьютерах Mac на базе процессоров Intel. Интерфейс новых версий приложений оптимизирован в соответствии со стилем операционной системы macOS Big Sur.

  • Обновленная версия интерфейсаOfficeStart. Новая версия приложений Word, Excel, PowerPoint и OneNote для Mac будет включать в себя элементы дизайна Fluent UI, а также операционной системы macOS Big Sur. Новый интерфейс Office Start станет доступен в следующем месяце.
  • Перевод данных таблиц из фотографий вExcel. Благодаря приложению Data from Picture пользователи смогут фотографировать таблицы на iPhone и превращать их в данные, которые можно редактировать в Excel для Mac.



  • Настройка представления листа вExcelдляMac. Функция позволит настраивать представление листа для других пользователей во время сортировки и фильтрации данных, чтобы не нарушать отображение информации для коллег во время совместной работы над файлами.
  • Обновленное окно поиска в офисных приложенияхпозволит быстро перейти к необходимым инструментам Office, просто введя нужный запрос в Word, Excel, PowerPoint или OneNote для Mac.
  • Поддержка учетных записейiCloudв новомOutlookдляMac. Благодаря этому пользователи смогут организовать работу с личными и рабочими электронными письмами, контактами и календарями в одном приложении. Новая функция появится в приложении в ближайшие недели.

Подробнее на английском языке
Подробнее..

Перевод Прекращайте покупать Макинтоши с процессором от Intel

25.06.2020 14:15:14 | Автор: admin

По нашему мнению, Apple будет осуществлять техподдержку Mac на процессоре Intel не более пяти лет




В понедельник появились новости от Apple компания отказывается от использования Intel x86 CPU в пользу собственных чипов ARM. В результате для всех, кто не хочет остаться за бортом, это означает лишь одно: не покупайте Mac.

Вы можете подумать, что это очередной спор по поводу того, что лучше x86 или ARM. Или вы можете решить, что тут что-то не сходится, и что Apple несмотря на почти бесконечные ресурсы и деньги не сможет обогнать AMD, Intel и Nvidia.

Однако есть ещё и практическая, реальная причина того, почему вы не должны тратить на новый Мас от $1500 до $4500 вас просто оставят за бортом.

Делая анонс, Тим Кук сказал, что Apple будет продолжать поддержку Мас на Intel годами. Но, зная Apple, мы можем предположить, что это может означать и два года, и две сотни лет.

Если прошлое это лишь пролог, то можно изучать вопрос последнего большого перехода Apple, с PowerPC на Intel x86. В Вики указано, что о переходе объявили 6 июня 2005. Мас на базе Intel представили в феврале 2006, а первый MacBook на базе Intel в апреле 2006. Позднее в 2006 году Apple объявила об окончании перехода.

Последний релиз OS X 10.5 с поддержкой PowerPC вышел в октябре 2007. Через два года спустя, когда в августе 2009 вышла OS X 10.6 Snow Leopard, она уже не поддерживала Мас на PowerPC.

К 2011 году Apple отказалась от проекта Rosetta, переводившего код старых приложений PowerPC с тем, чтобы их можно было запускать на Intel. Apple закончила всю поддержку для Мас на PowerPC. В итоге получается четыре года поддержки ОС и шесть лет поддержки в принципе для PowerPC перед тем, как Apple всё прекратила.


Вот так, возможно, будет выглядеть ваше любимое приложение для x86, если его постигнет та же судьба, что и у PowerPC после того, как Apple отключила проект Rosetta.

Будете ли вы использовать свой компьютер дольше пяти лет?


Любой пользователь винтажного PowerPC PowerBook знает, что через пять лет после анонса Apple они стали практически бесполезными. Не знаю, как вы, но мне хочется использовать компьютер дольше пяти лет я не люблю увеличивать свалки. Я знаю многих людей, продолжающих использовать, допустим, семилетние MacBook Air 13, и не собирающихся покупать новый.

Вы, конечно, скажете, что Мас на базе Intel будет прекрасно работать и по окончанию перехода. Однако ситуация для пользователей устаревших Intel MacBook ещё хуже (да, они теперь устаревшие), чем была при переходе от PowerPC к Intel. В 2010 году атаки вредоносных программ, направленные специально на OS X, были редким событием. Сегодня MacOS является лакомым кусочком для киберпреступников. Без постоянного обновления безопасности в ОС и UEFI эти Мас на Intel превратятся в дома с выбитыми дверями и окнами во время зомби-апокалипсиса.

И, нет если вы думаете, что Apple уж наверно продолжит поддержку моего нового Мас за $3000, то вы явно не следили за историей компании. Apple уже перенесла Mac Pro 2012 года в раздел винтажных, и текущая Mac OS Catalina их уже не поддерживает.

8-летний компьютер кажется древним, однако в Mac Pro 2012 года стояли процессоры Intel Core i7 6-core Nehalem/Westmere. Это до сих пор приличная платформа, мой сын использует её для игр. На его компьютере работает Windows 10, и обновления ОС приходят до сих пор.

Apple могла бы предложить поддержку ОС для всех старых Мас на базе x86, но не хочет. Кроме расходов на поддержку старого железа, вся история компании подтверждает тот факт, что Apple любит выкидывать более старое оборудование, чтобы освобождать место для нового. И эта судьба постигнет и ваш новенький блестящий Мас, если вы решите приобрести его сегодня.
Подробнее..

Mac Mini на M1 взгляд изнутри

26.02.2021 18:20:16 | Автор: admin

Ранее мы говорили про Mac Mini в дата-центрах. В этой статье мы заглянем под капот новейшего mac на базе SoC M1 в прямом и переносном смыслах.

Как известно, гостей встречают по одежке. Наш сегодняшний гость, новый Mac Mini, минимально отличается от своего предшественника 2018 года. Первое отличие заключается в предоставляемых интерфейсах ThunderBolt. Старое поколение имеет 4 порта, а новое всего 2. Второе заметное отличие касается окраса Mac Mini. Устройства с процессорами Intel поставляются в цвете Space Gray, а c M1 в цвете Silver.

Вероятно, Apple таким образом смещает акцент в сторону внутреннего содержимого Mac Mini. Минимальные различия во внешнем виде разных поколений побуждают уделить больше внимания их производительности. Бонусом снижение рисков, сроков и расходов на разработку новых комплектующих.

Мы пойдем на поводу у желания посмотреть внутрь Mac Mini и разберем его.

Внутренний мир


Mac Mini 2020
Mac Mini 2018 (источник ifixit.com)

Ключами к внутреннему миру Mac Mini являются отвертки Torx: T5, T6 и T8. Как и в предыдущем поколении, за пластиковой заглушкой находится алюминиевая крышка, прикрученная шестью болтами. Легко заметить, что в новом Mac Mini очень много пустого пространства. Снимаем вентилятор.

Mac Mini 2020 без вентилятора

На соединение материнской платы наклеена черная полоска, похожая на изоленту. Снятие данной наклейки лишает гарантии. В новом Mac Mini нет модернизируемых частей, поэтому поводов извлекать основную плату из корпуса тоже нет.

Основная плата вне корпуса

Материнская плата без передней панели и динамика

Материнская плата без корпуса, передней панели и динамика выглядит невероятно миниатюрной. На переднем плане видно два железных компонента без опознавательных знаков, которые, скорее всего, являются накопителем. Самое интересное ждет под воздуховодом и радиатором. Откручиваем оставшиеся 8 болтов и получаем доступ к сердцу Mac Mini.


Под радиатором можно увидеть сразу три чипа, помеченных логотипом Apple. Однако известный M1 узнается сразу. Рядом с основным кристаллом процессора находятся два модуля оперативной памяти LPDDR4X. Множество чипов не маркированы, тем не менее, узнаются следующие:

  • MegaChips MCDP2920A4, конвертер DisplayPort 1.4 в HDMI 2.0;
  • Broadcom BCM57782, гигабитный Ethernet-контроллер;
  • 2x Intel JHL8040R, ретаймер ThunderBolt 4;
  • Apple 1096 и 1097.


Микросхемы на обратной стороне материнской платы:

  • 2x Texas Instruments CD3217B12;
  • Renesas 501CR0B;
  • Fresco Logic FL1100SX, контроллер PCIe-to-USB;

Близкое расположение всех компонентов способствует повышению скорости обмена информацией, но это лишь теория. Протестируем Mac Mini на практике и сделаем собственные выводы.

Производительность


Процессор M1 состоит из 8 ядер на архитектуре ARM64. Однако это не обычные ядра. Половина из них высокопроизводительные ядра FireStorm, а остальные энергоэффективные IceStorm. Официальной информации по TDP процессора нет, но по оценкам тепловыделение не превышает 21 ватта.

Установка транслятора Rosetta 2

Первый тест в нашем плане GeekBench5, быстрый тест производительности процессоров. На Mac с M1 бенчмарк можно запустить нативно и через транслятор x86 в arm64. Последний по умолчанию отсутствует в системе, но его можно легко установить с помощью следующей команды:

softwareupdate --install-rosetta

Операционная система также предложит установить транслятор при запуске старого приложения.

Главное окно GeekBench5

При наличии Rosetta 2 в GeekBench5 можно выбрать архитектуру Intel. Это позволит измерить производительность Mac Mini на неадаптированных классических приложениях.
Архитектура приложения Single-Core Score Multi-Core Score
Apple Silicon 1742 7577
Intel 1297 6012
Intel Core i5-10500 1176 5979
Intel Core i9-9900 1246 7687
Производительность приложений x86_64 на M1 ниже нативных всего на 20%. Если оценивать по архитектуре Intel, то Apple M1 показывает результат на уровне 65-ваттного Intel Core i5-10500, а в исполнении нативного кода немного отстает от Intel Core i9-9900.
Графический ускоритель OpenCL Compute Score
Apple M1 19465
GeForce GTX 970M 19743
Графический ускоритель Metal Compute Score
Apple M1 22022
NVIDIA GeForce GTX 980 21820
В GeekBench есть секция Compute, которая измеряет производительность графического ускорителя. В этом Mac Mini графическим ускорителем выступают ядра процессора. Мы провели тесты на доступных для M1 технологиях: OpenCL и Metal. Процессор Apple показывает хороший результат, даже в сравнении с внешними видеокартами.

В Apple M1 присутствует 16-ядерная система Neural Engine для работы с нейронными сетями и машинным обучением. Нам хотелось провести тестирование с помощью AI Benchmark, однако данный тест не запускается из-за ошибки определения процессора.

Поэтому мы выбрали более простой тест обучение сверточной нейронной сети (CNN) для классификации рукописных цифр на датасете MNIST. Мы применили скрипт, адаптированный для использования с форком Tensorflow для macOS. В данном тесте три ключевых параметра:

  • среднее время прохождения эпохи;
  • среднее время прохождения шага эпохи;
  • точность полученной модели.

Мы провели тесты не только на подопытном Mac Mini, но и на некоторых видеокартах и процессорах для дата-центров. Вот что у нас получилось:
Устройство Среднее время эпохи, с Среднее время шага, мс Точность модели
Apple M1 (CPU) 15 33 99.81%
Apple M1 (GPU) 19 40 99.36%
Nvidia GeForce GTX1080 3 6 99.85%
Intel Xeon Gold 6240 9 17 99.86%
Nvidia Tesla A100 3 3 99.87%
Nvidia Tesla V100 3 3 99.94%
Nvidia Tesla P40 3 5 99.89%
Настольный компьютер не может порвать видеокарты из серверного сегмента, но если взять во внимание низкое энергопотребление, Apple M1 показывает себя как серьезного конкурента.

Заключение


Новый Mac Mini на M1 навевает мысли о том, что скоро настольные компьютеры перейдут на архитектуру ARM64. Apple сделала устройство, которое преподносит пользователю что-то новое и непривычное, но не отбирает старое и привычное, позволяя запускать приложения, созданные под другую архитектуру.

Как вы думаете, сможет ли архитектура ARM полностью вытеснить x64?

Хотите попробовать новый Mac Mini в работе? Дадим его на тест бесплатно!
Просто переходите по ссылке.
Подробнее..

Как установить Ubuntu на Apple M1 и ничего не сломать

10.03.2021 16:14:14 | Автор: admin

Команда разработчиков Corellium выпустила порт Ubuntu на Mac Mini с процессором Apple M1. Публикации по теме рассказывают только про успех умельцев, но не раскрывают подробности. Я решил на собственном опыте проверить, как установить и использовать. Ubuntu на Mac Mini, и описал все существующие подводные камни.

Авторы порта Ubuntu под Mac, компания Corellium, занимается виртуализацией на ARM64. У них есть опыт и желание, чтобы делать такие смелые вещи.
Corellium ранее работала над проектом Project Sandcastle, который позволяет установить ОС Android на iPhone 7 благодаря уязвимости checkm8. Установкой Android на iPhone не занимались со времени iDroid Project и iPhone 3G. Как и iDroid Project, Project Sandcastle не предоставляет ОС для повседневного использования, это скорее масштабный Proof-of-Concept с открытым исходным кодом.
Подобные проекты очень трудоемки с точки зрения разработки, сложны для эксплуатации обычными пользователями и вряд ли будут использоваться широкой аудиторией. Тем не менее, стоит воспользоваться возможностью посмотреть все своими глазами.

В чем сложность


Наиболее подробно в соответствующей статье в блоге Corellium.

Ни для кого не секрет, что Apple отступается от принятых стандартов и часто использует собственные решения. Для начала отметим, что macOS загружается несколько иначе, чем операционные системы семейств Windows и *nix. В качестве загрузчика в яблочных устройствах используется iBoot. Он загружает ядро в формате Mach-O, которое может быть сжато, подписано и лежать в контейнере IMG4.

Более сложные вещи начинаются, когда появляется необходимость запустить остальные ядра процессора. В обычных ARM64-процессорах это производится через интерфейс Power State Coordination Interface (PSCI). Но в M1 другие ядра запускаются со смещения, которое указано в соответствующем Memory-mapped I/O (MMIO) регистре.

Но даже это еще не все. Apple создали свой собственный контроллер прерываний, который не соответствует ни одному стандарту ARM Generic Interrupt Controller (GIC). Также прерывания, генерируемые таймером, используют специальный тип запросов FIQ (Fast Interrupt Request) вместо IRQ, что пока не поддерживается ядром Linux.

Для взаимодействия процессорных ядер между собой используются специальные прерывания Inter-Processor Interrupt (IPI), которые в M1 формируются также с помощью FIQ. Таким образом, поддержка FIQ один из наиболее важных моментов в этом порте.

Ядро Linux на M1 (источник twitter.com)

Сотрудникам Corellium пришлось разработать собственный драйвер для обработки прерываний через FIQ, написать обертку, которая позволила бы запустить все ядра, и решить еще несколько аппаратных проблем. Только после этого они смогли запустить ядро Ubuntu.

Впрочем, запуск ядра это только начало. Для успешной эксплуатации необходимо подключить устройства ввода, такие как клавиатура и мышь. Есть три способа: использовать USB-хост в чипе M1 (для ThunderBolt/USB Type-C), использовать xHСI-хост (для USB Type-A) или воспользоваться Bluetooth.

Bluetooth работает на нестандартном PCIe-подобном протоколе, поэтому разработка собственного модуля ядра для неизвестного протокола могла затянуться. В Corellium приняли решение настроить USB, и через пару дней работы им удалось подключить устройства ввода.

На момент написания статьи уже доступен Proof-of-Concept, который можно попробовать самостоятельно. Учтите, что все дальнейшие действия вы можете делать исключительно на свой страх и риск.

Установка Ubuntu


Для начала использования Ubuntu нам потребуется следующее:

  • Mac с процессором Apple M1 (поддерживаются Mac Mini, Macbook Pro и Macbook Air);
  • флешка с разъемом USB Type-C объемом от 16 ГБ;
  • USB-клавиатура и USB-мышь.

В качестве флешки я использовал Kingston DataTraveler microDuo 3C объемом 32 ГБ, поддерживающую USB Type-A и USB Type-C. Инструкция Corellium настаивает на использовании Type-C флешки, так как загрузка с Type-A не поддерживается на момент написания данной статьи. Мышь и клавиатуру я подключал по USB Type-A.

Есть и менее очевидные требования. Во-первых, на Mac Mini должна быть установлена macOS 11.2 или выше. В старых версиях ОС в утилите kmutil отсутствует команда configure-boot, необходимая для корректной подмены ядра.

Также необходимо отвязать Mac от Find My Mac. Наличие привязки не позволяет отключить системы безопасности в полной мере и выполнить все необходимые команды.

В первую очередь подготовим образ для флешки. Скачиваем, а затем распаковываем архив. Подготовку следует выполнять в терминале Mac, на котором планируем запустить Ubuntu.

tar -xjvf ubuntu-20.10-preinstalled-desktop-arm64+raspi.img.bz2

Далее разворачиваем образ на флешку:

sudo dd if=ubuntu-20.10-preinstalled-desktop-arm64+raspi.img of=/dev/rYOURUSBDISK bs=1m

Обратите внимание, что необходимо указать именно флешку, а не раздел на ней. Например, /dev/rdisk6. Далее копируем драйвера на Wi-Fi:

cp -RLav /usr/share/firmware/wifi /Volumes/system-boot

Если вы используете проводное подключение к Интернету, то флешку можно подготовить на компьютере под управлением ОС Linux.
Далее подключаем флешку в USB Type-C порт и перезагружаемся в Recovery OS, известную как 1TR (the One True Recovery), и открываем терминал. На новых Mac это происходит следующим образом:

  1. Выключаем Mac;
  2. Удерживаем кнопку включения до появления текста Загрузка параметров запуска;
  3. Выбираем опцию Параметры и нажимаем Продолжить;
  4. В верхнем меню открываем Утилиты Терминал.

Обратите внимание, что Recovery при запуске не должен просить ввести пароль от ОС или от Apple ID. Если он все же просит, то необходимо отключить Find My Mac в настройках macOS.
Устанавливаем ядро Ubuntu:

bash -c "$(curl -fsSL https://downloads.corellium.info/linuxusbboot.sh)"

Содержимое скрипта
#!/bin/shbputil -d | grep "CustomerKC" | grep -v "absent"KC=$?if [ $KC -eq 1 ]then  bputil -n -k -c -a -s  csrutil disable  csrutil authenticated-root disableficurl https://downloads.corellium.info/linux.macho > linux.machokmutil configure-boot -c linux.macho -v /Volumes/Macintosh\ HD/echo "Kernel installed. Please reboot";


Данный скрипт проверяет политики загрузки (BootPolicy) и отключает системы проверки целостности macOS, если это необходимо. После этого скрипт загружает ядро Linux в формате Mach-O в корень системного диска и настраивает iBoot на ядро Linux.

В процессе выполнения скрипта будет запрос пароля для получения прав суперпользователя macOS. Выполняемые команды также предупредят вас о том, что выполняемые действия значительно снижают безопасность Mac. Но если вы хотите запустить Ubuntu, то придется принять это как должное.

После завершения скрипта можно перезагрузить Mac, далее начнется загрузка Ubuntu 20.04.

Опыт использования


Первый запуск Ubuntu будет не очень быстрым. В логах загрузки упадет четыре-пять сервисов и еще шесть подвиснут. Ubuntu загружается относительно долго: несколько минут. Более того, первое время отзывчивость ОС будет очень низкой. Запуск новых приложений, даже без графической оболочки, может занимать минуты. Эта проблема самоустраняется вскоре после загрузки.


Нетрудно заметить, что образ сделан на основе Ubuntu для Raspberry Pi. Поэтому в системе пользователи root и pi имеют пароль raspberry. К сожалению, сделать красивый и показательный скриншот с выводом screenfetch не получается. ОС не определяет модель процессора, поэтому в выводе лишь безликое Unknown.

Вывод lscpu
Architecture:                    aarch64CPU op-mode(s):                  64-bitByte Order:                      Little EndianCPU(s):                          8On-line CPU(s) list:             0-7Thread(s) per core:              1Core(s) per socket:              8Socket(s):                       1Vendor ID:                       0x61Model:                           1Stepping:                        0x1CPU max MHz:                     3204.0669CPU min MHz:                     600.0030BogoMIPS:                        48.00Vulnerability Itlb multihit:     Not affectedVulnerability L1tf:              Not affectedVulnerability Mds:               Not affectedVulnerability Meltdown:          Not affectedVulnerability Spec store bypass: Mitigation; Speculative Store Bypass disabled via prctlVulnerability Spectre v1:        Mitigation; __user pointer sanitizationVulnerability Spectre v2:        Not affectedVulnerability Srbds:             Not affectedVulnerability Tsx async abort:   Not affectedFlags:                           fp asimd evtstrm aes pmull sha1 sha2 crc32 atomics fphp asimdhp cpuid asimdrdm jscvt fcma lrcpc dcpop sha3 asimddp sha512 asimdfhm dit uscat ilrcpc flagm ssbs sb dcpodp flagm2 frint


То, что это образ ОС для RPi, будет заметно при попытке установить ПО из пакетного менеджера. Он попытается установить не только требуемый администратором софт, но и обновление ОС с созданием initramfs для малинки. Подобные действия приведут к появлению ошибок в логах, несмотря на успешность установки запрошенного ПО.

Как и ожидалось, в ОС присутствует минимально необходимый набор драйверов. Звуковая карта, модуль Bluetooth и графический ускоритель не поддерживаются. Большинство системных утилит, таких как lspci, lsusb и lshw, выдают очень скудную информацию о железе.

Несмотря на множество ограничений, я решил провести тест sysbench.
Устройство Количество вычислений в секунду
Mac Mini (Ubuntu 20.10) 838
Lenovo ThinkPad E14 (Ubuntu 20.04) 483
Хотя данный тест нельзя считать идеальным и показательным, восьмиядерный Apple M1 в два раза превосходит восьмиядерный Intel Core i5-1045U. К сожалению, мне не удалось запустить sysbench на macOS.

Заключение


Установка альтернативных операционных систем на Mac это всегда увлекательный с технической точки зрения процесс. Новые процессоры Apple M1 стали отличным вызовом для энтузиастов.

А вам приходилось использовать Windows или Linux на Mac?

Хотите попробовать новый Mac Mini в работе? Дадим его на тест бесплатно!
Просто переходите по ссылке.
Подробнее..

Категории

Последние комментарии

  • Имя: Макс
    24.08.2022 | 11:28
    Я разраб в IT компании, работаю на арбитражную команду. Мы работаем с приламы и сайтами, при работе замечаются постоянные баны и лаги. Пацаны посоветовали сервис по анализу исходного кода,https://app Подробнее..
  • Имя: 9055410337
    20.08.2022 | 17:41
    поможем пишите в телеграм Подробнее..
  • Имя: sabbat
    17.08.2022 | 20:42
    Охренеть.. это просто шикарная статья, феноменально круто. Большое спасибо за разбор! Надеюсь как-нибудь с тобой связаться для обсуждений чего-либо) Подробнее..
  • Имя: Мария
    09.08.2022 | 14:44
    Добрый день. Если обладаете такой информацией, то подскажите, пожалуйста, где можно найти много-много материала по Yggdrasil и его уязвимостях для написания диплома? Благодарю. Подробнее..
© 2006-2024, personeltest.ru