Doom
Вы играете в Doom с процессором.
Я играю в Doom с использованием процессора.
Мы не похожи 😎
источник https://t.me/itmozg/9697
Вы играете в Doom с процессором.
Я играю в Doom с использованием процессора.
Мы не похожи 😎
источник https://t.me/itmozg/9697
Всем привет. Делюсь своими изысканиями по запуску виртуальных машин MacOS на процессорах AMD. Возможно кому-то будет полезным:
Предыстория: в наличии несколько виртуалок, с которыми долгое время не было никаких проблем. Версии - от Mojave до Monterey, они даже обновлялись штатно. Далее, при апдейте на Ventura/Sonoma ловим кернел панику - никакие рекомендации из интернета не помогли. Глаз пал в сторону хакинтоша, но как его конфигурировать под вмварь тоже оказалось не совсем понятным, поэтому и напишу этот гайд:
вводные - Ryzen 5950X, Windows 10, VMware Workstation 16.2 (была версия 16.0, пока не столкнулись в проблемой апдейта макоси).
Что понадобится (чем пользовался лично я):
OCAT - графический редактор plist
ProperTree - еще одна редачилка plist'a, мне через нее было удобно копипастить блок с патчем для AMD (удобно открыть patches.plist из репы, и выдернуть оттуда весь блок patch, чтоб вставить его в наш конфиг)
Рекомендация по настройке конфига под амуде
Готовые SSDT для нубасов вроде меня (насколько я понял это таблицы с ID оборудования, которое инициализируется при старте ОС. Что-то подобное можно создавать самому уже на конкретном железе. У меня стоял вопрос - а каким оно должно быть и как его создать на VMware, возможно кто-то из шарящих в теме пояснит в комментах, как это работает, и как это связано с DSDT таблицами)
Гайд по EFI драйверам и кекстам - по кекстам я ниже еще отпишу. А драйвера я оставил все, которые идут с редакцией OpenCore, но не все они обязательны.
Ну и загрузчик OpenCore собственной персоной
Кастомный .vmdk диск, с которого мы будем бутаться. (создаем сами)
Выкладываю свою версию EFI - для ЛЛ, но не факт, что именно с ней у вас все взлетит.
Теперь по OpenCore, что он из себя представляет:
Нас интересует версия X64, внутри есть папка EFI, ее в дальнейшем нужно будет закинуть на наш загрузочный раздел. При включении нашей виртуалки первым делом бутается /EFI/BOOT/BOOTx64.efi, который затем запускает /EFI/OpenCore.efi (если вы будете в firmware виртуалки указывать файл загрузчика, указывайте путь к BOOTx64.efi)
Что еще внутри папки EFI :
EFI/OC/ACPI - тут лежат SSDT/DSDT таблицы оборудования. Если удалять лишнюю, обязательно нужно проверить, чтоб не было ссылок на нее в config.plist иначе будет краш.
EFI/OC/Drivers - тут лежал драйверы .efi. OpenRuntime.efi и HfsPlus.efi обязательны, я не стал удалять лишние драйвера, но ради интереса поигрался и выяснил, что без OpenCanopy.efi, OpenLinuxBoot.efi, OpenLegacyBoot.efi - загрузчик не взлетал. Насколько я понял, эти драйвера не влияют на дальнейшую работу макоси, а сугубо отвечают за работоспособность загрузчика и его возможности.
EFI/OC/Kexts - тут валяются расширения ядра (kext - kernel extension), нужны для успешного запуска самой макоси, а так же для корректной инициализации и работы устройств.
Любой хакинтош начинается с Lilu.kext, затем должен идти фейковый SMC (я заводил тачку с VirtualSMC.kext), потом уже все остальное.
Их последовательность определяется конфигом config.plist, в каком порядке они указаны, в таком они и будут инжектиться при загрузке ОС.
Экспериментальным путем выяснено, что система не бутается без:
AppleMCEReporterDisabler.kext - Required on macOS 12.3 and later on AMD systems, and on macOS 10.15 and later on dual-socket Intel systems. *из доки по OpenCore
CryptexFixup.kext - Я так понял, что это обязательный кекст не только для AMD, но и для Intel до Haswell
NoAVXFSCompressionTypeZlib-AVXpel.kext - возможно избыточно, без него тоже бутается.
На всякий случай оставил:
VoodooHDA.kext - инициализация звука в MacOS
HibernationFixup.kext - на виртуалке проще отключить сон, но если что, возможно это будет фиксить. Дело в том, что под хакинтошами у макоси есть проблемы со сном, вернее с выходом из него)
Whatevergreen.kext - фикс инициализации графики, по идее он не нужен, т.к. есть VMWARE tools
Создаем свой .vmdk:
Для его создания я создавал новую виртуалку, "установлю потом", тип системы other, диск 0.2GB, но вмварь тогда создает диск IDE, поэтому я его удалил, и пересоздал уже как SATA. Размер выбрал с потолка, сам EFI весит около 10-15 МБ. Поэтому можете назначить меньше. Из доп. настроек нужно выбрать store virtual disk as a single file
Далее монтируем этот диск через Daemon Tools. Теперь открываем оснастку управления дисками, для этого жмем WIN+R, вводим diskmgmt.msc и enter, система тут предложит проинициализировать новый диск. Выбираем GPT, жмем ОК. Далее создаем том и форматируем в FAT32, в Label вписываем любой удобный и понятный, я так и назвал OpenCore.
Все, теперь осталось закинуть на диск папку EFI, размонтировать диск и можно с него бутаться.
Несовместимость виртуалки и vmdk диска (если подкидываем к уже готовой машине)
При попытке подсунуть загрузочный vmdk в виртуалку, которая была создана в более старой версии VMware скорее всего вылезет ошибка:
Варианта 2: либо пересоздавать новый vmdk для этой виртуалки, форматить его и засовывать туда EFI
либо конвертнуть виртуалку:
жмем по ней правой кнопкой мыши → manage → Change Hardware Compatibility
Мой первый EFI был создан в версии 16.2.x, поэтому выбираю ее, чтоб версия совпадала с той, в которой он создавался. Далее вмварь спросит, хотите склонировать или конвертировать текущую билд-тачку. Тут уже на ваше усмотрение, у меня с конвертацией проблем не возникло, но я не уверен, что их точно не будет.
После конвертации диск подцепится без ошибок)
Что дальше?
Отныне любая макось, будь то инсталлер или уже установленная версия - должны запускаться только через наш кастомный EFI. Иначе в дальнейшем у них будет паника ядра.
С чистой установкой все просто: (не буду останавливаться на том, как создать новую ВМ, как пропатчить ее unlocker'ом, как создать диск, выделить ресурсы и т.д.)
Добавляем в виртуалку наш EFI, в настройках смотрим на какой порт сата он добавился (можно сделать SATA 0:0, а можно забить - на ваше усмотрение.
В виртуальный CD добавляем .iso образ установщика макоси (можно взять с торрента, либо зашить самому, но для этого нужен отдельный гайд).
Далее в VMware выбрать Power on firmware
После этого у нас будет возможность бутануться с нужного диска, тут нам и понадобиться номер порта SATA
Выбираем диск, жмем Enter.
Далее мы попадаем в меню OpenCore:
Если нажать пробел, появятся дополнительные опции загрузки
Бутаем установщик и далее штатно проходим установку (не забываем запустить дисковую утилиту в установщике и отформатировать наш целевой vmdk в формат APFS).
Для тех, кто хочет обновить свой старенький Monterey
У вас варианта два, либо обновляться штатно, через Software Update, либо обновляться с iso (точно так же, как чистая установка в абзаце выше, но без форматирования целевого диска)
Правило одно в обоих случаях - перед апдейтом, вы должны обязательно бутаться с кастомного загрузчика. Если макось словит Kernel Panic в процессе обновления (она несколько раз рестартится пока идет процесс обновления), то ее попердолит так, что даже с подсунутым EFI она не будет бутаться.
Перед апдейтом можете снять снапшот, откат поможет в случае если что-то пойдет не так.
Какие могут быть проблемы
Если макось в процессе рестартов установщика загрузится не через OpenCore, а напрямую, и словит панику - ее уже будет не восстановить. (выше уже писал об этом, но лучше задублирую - это важно!)
Если после успешной загрузки макоси не работает мышь/клава, либо у мыши очень высокая чувствительность, что невозможно ею пользоваться - нужно проверить в настройках виртуалки версию USB контроллера. Должна быть 3.1.
доп. может понадобиться VoodooPS2Controller.kext
Проброс Bluetooth лучше убрать (там же, где настройки USB)
Перед изменением количества ядер, выделенных виртуалке, лучше править патчи в config.plist на EFI разделе. Иначе тачка будет вставать в фриз: Патчи для AMD
Без них будут проблемы. У меня зависало, если выделял больше 4х ядер.
"C:\Program Files (x86)\VMware Workstation\vmrun.exe" -T ws stop "путь к виртуалке.vmx"
ОБЯЗАТЕЛЬНО ОТКЛЮЧИТЬ TSO https://communities.vmware.com/t5/VMware-Fusion-Discussions/VMware-Fusion-Only-Upload-Internet-Speed-is-Super-Slow-compared/td-p/2955386
sysctl net.inet.tcp.tso=0 и для того, чтоб работало после рестарта - создать файл /etc/sysctl.conf и вставить «net.inet.tcp.tso=0»
Если этого не сделать, то не будет работать VNC/SCP/загрузка файлов на самбу, может что-то еще (очень низкая UPLOAD скорость для TCP соединений)
И НЕ ЗАБЫВАЕМ, ЧТО В VMX конфиг нужно прописать
cpuid.0.eax = "0000:0000:0000:0000:0000:0000:0000:1011"
cpuid.0.ebx = "0111:0101:0110:1110:0110:0101:0100:0111"
cpuid.0.ecx = "0110:1100:0110:0101:0111:0100:0110:1110"
cpuid.0.edx = "0100:1001:0110:0101:0110:1110:0110:1001"
cpuid.1.eax = "0000:0000:0000:0001:0000:0110:0111:0001"
cpuid.1.ebx = "0000:0010:0000:0001:0000:1000:0000:0000"
cpuid.1.ecx = "1000:0010:1001:1000:0010:0010:0000:0011"
cpuid.1.edx = "0000:0111:1000:1011:1111:1011:1111:1111"
ethernet0.virtualDev = "vmxnet3"
UPD: вынесу отдельно: из непофикшеного есть проблема с рестартами виртуалки. Она успешно останавливает систему и повисает
Прибить ее можно из командной строки (путь до vmrun.exe может отличаться:
"C:\Program Files (x86)\VMware Workstation\vmrun.exe" -T ws stop "путь к виртуалке.vmx"
Часть третья, собирательная. Всего понемногу.
# Компания «Выгода» на Монастырской, развлекательный бизнес-центр Серго. Развлекательный потому, что развлекаются там исключительно сотрудники компаний.
Звонит бабенция неопределённого пробега возраста, говорит: «Здравствуйте, хотели бы пригласить вас на собеседование, вся херня.»
Я говорю: «Хорошо. Куда, когда и во сколько?»
Оно: «Завтра к 11-и, на Монастырскую, бизнес-центр Серго, третий этаж, кабинет 303. Сможете подъехать?»
Я: «Хорошо. Если подъеду пораньше, ничего?»
Оно: «Ничего, ничего, мы всё равно с 9-и работаем!»
# Я с самого начала знал, что какая-то лажа, но решил удостовериться, так как было по пути.
# Прихожу в 9:30, или около того. Стучусь в дверь. Тишина. Стучусь второй раз. Слышу за дверью какое-то копошение.
# Дверь открывает тумбочка на ножках.
Я с порога говорю: «Здравствуйте.»
Оно в ответ: «ОЙ, ВЫ МЕНЯ НАПУГАЛИ!»
# Думаю, хорошо хоть не разбудили.
Оно: «Вы кто?»
Я: «Я на собеседование.»
Оно: «На какую должность?»
# Уже всё понятно.
Я: «Техническая поддержка.
Оно, вращая глазами и судорожно пытаясь сообразить что к чему, или, быть может, просто вспоминая знакомые слова: «Ааа, проходите.»
# Ну, то есть, там видимо настолько неебический поток кандидатов, что всех сразу и не вспомнишь…
# Я захожу в «офис», такой а-ля будка будочника, 3 на 3 метра. Там сидят ещё 2 бабенции и непонятно, не то жрут, не то в карты играют, не то бухают. В общем, разносторонняя компания. Сразу видно, что области деятельности неисчерпаемы.
Оно: «Ой, вы знаете руководителя нет на месте.»
# Я смотрю на неё с немым укором, молча поднимая бровь, типа: «А хуле?»
Оно: «И как мы с вами поступим?»
# Шедевр. Назначить собес и самим же его всрать. Пятёрка.
# Молча разворачиваюсь и ухожу.
# Компания U-Print на Стаханке. Офис тире call-центр тире склад тире магазин. Ещё одна транс-галактическая корпорация.
# Тут всё по классике. Увидели резюме, пригласили, прихожу.
# Захожу в офис, склад, call-центр, помещение короче. Слева горы принтеров, справа пачки с бумагой.
# Навстречу мне, из офиса, двое ребят в комбезах, отборно матерясь и кляня судьбу, выкатывают две промышленные телеги, доверху гружёные каким-то барахлом.
# Прохожу в недра, подхожу к стойке «регистратуры», хотя, на самом деле, это был просто угловой столик, где по всей видимости, завтракал, обедал, охранял космос, в общем, имитировал бурную деятельность мой будущий не состоявшийся коллега.
Задаю вопрос: «Здравствуйте! Я на собеседование. С кем можно поговорить?»
Чел: «А вон тама подойди.»
# Плавно перемещаюсь из разгрузочного дока регистратуры к первому попавшемуся столику call-центра, где, как оказалось, сидел руководитель корпорации, втайне управляющей всем миром. Хотя, может они все руководители, как это часто бывает, без разницы, подходи к любому – не ошибёшься.
Подхожу, говорю: «Здравствуйте. Я на собеседование.»
Александр, так звали моего бывшего будущего не состоявшегося шефа, говорит: «Пройдёмте в раздевалку.»
# Херасе!
# Но не спешите, раздевалкой оказалась всё та же регистратура, точнее обычная вешалка, крючки которой ломились от переизбытка норок, соболей, засаленных пуховиков и полушубков из кожи молодого дерматина.
Александр: «Проходите, садитесь.»
Я: «Куда?»
Александр: «Сюда.»
# Вы не поверите, но справа от регистратуры, у них стояла барная стойка, за которой и проходило собеседование.
# Ей богу, собеса за барной стойкой у меня ещё не было!
# Как правило, собеседования проходят в отдельном офисе, в комнате для переговоров, или, хотя бы, за столом руководителя, но не за барной доской между пачками с бумагой и тюками с какой-то хернёй.
Александр: «Вы на какую должность?»
Я: «Системный администратор.»
Александр, делая квадратные глаза и смотря на меня осуждающе-непонимающе: «У нас такой нет.»
# Браво!
Я: «А какая есть?»
Александр: «Менеджер по продажам. Сможете удержать клиента?»
# Сразу с места в карьер!
Я: «А кто ваши клиенты?»
Александр: «Наши клиенты – это все жители города Перми.»
# Теперь уже я делаю квадратные глаза, и мы оба, пребывая в лёгком ахуе недоумении смотрим друг на друга осуждающее-непонимающе.
Я: «Все жители города Перми?»
# Немедленно вспоминается любой call-центр из [ вставьте номер вашей любимой ИК ].
Александр: «Да, у нас очень большая база. В основном, это холодные звонки.»
Я: «Мне всё понятно, Александр, приятно было познакомиться.»
Конец третьей серии.
Продолжаем репортаж из нашего сумасшедшего дома на Урале.
Пару недель назад, на HeadHunter-e лежала вакансия на сис. админа в ПГНИУ
(Пермский Государственный Национальный Исследовательский Университет).
Откликаюсь, жду.
Через пару дней, пишет мне в Телегу некий Дмитрий Басов.
Я сначала подумал, что это руководитель тех. подов, оказалось, местный и ЕДИНСТВЕННЫЙ сис. админ.
Так мол и так, приходите на собес в главное здание универа такого-то числа в такое-то время.
Я говорю: «Ок, буду.»
Приезжаю специально на пару часов пораньше.
Нахожу нужный кабинет, стучусь, говорю: «Здравствуйте. Я на собеседование. Можно?»
В ответ слышу нечленораздельным, полусонным: «Подождите немного. Я занят». Времени было около 12 часов дня.
Ну, думаю, занят человек, подожду полчаса, пофиг. Сажусь на стул в коридоре, залипаю в телефон. Время идёт. Проходит час. Я всё сижу. На собес приходит ВТОРОЙ чувак.
Стучится в дверь, говорит ровно тоже самое что и я: «Здравствуйте. Я на собеседование. Можно?»
Его точно также просят подождать в коридоре. Он стоит, ждёт. Проходит ещё где-то полчаса.
Басов, уже, видимо, забыв про меня, но, каким-то чудом, вспомнив про второго чувака приглашает его зайти. Я всё сижу. Спустя ещё примерно час, дверь наконец-то открывается, чувак выходит из кабинета и уходит восвояси. Меня никто не приглашает. «Йобаныйврот» - думаю я, «откуда вы такие только лезете?»
Стучусь второй раз, повторяю трюк с вопросом о собеседовании и О ЧУДО, меня наконец-таки приглашают.
Дмитрий Басов, этот сверхчеловек, несколько минут ищет моё резюме,
а после того как находит, начинает спрашивать то, что в нём и так написано.
Басов: «Где учились? А, вот вижу! Ага, ага…»
# Все названия мест учёбы произносит неправильно. Я сижу, молчу.
Басов: «Тааак, места работы… Ыгы…»
# Все названия мест работы также произносит неправильно.
Басов: «Это что за организации?»
# Здесь становится понятно, что Басов, этот отбитый профессионал мирового уровня, видит моё резюме впервые в жизни, то есть он никогда его не открывал и не пытался даже вчитываться в то, что там написано.
Я говорю: «Аутсорсинговые компании, тех. поддержка, занимаются тем-то, и тем-то.»
Здесь Басов чисто Табаки из Маугли Киплинга выдаёт: «Чё-то вы как-то не уверенно отвечаете! Ы-хы-хы-хы, ги-ги-ги, хр, фм, и-хи-хи-хи. А? Чё это, вам не нужна работа, да?»
# Я сижу с абсолютным стоунфейсом, смотрю на него и думаю: «У тебя действие препарата на исходе, или что?»
Говорю: «Да нет, нужна. Иначе бы я, наверное, не пришёл на собеседование.»
Басов: «Ну лаааднааа, так… Сейчас нада будет пройти небольшой тест на (внимание!) адекватность.»
# Видели когда-нибудь как змея смотрит на мышь? Примерно так я смотрел на Басова в тот день…
Неведомо откуда, представитель цивилизации, опередившей время и, судя по всему пространство, достаёт (хорошо хоть не из жопы) какой-то жёваный папирус с тестом.
Тесту лет эдак 20. Почему? Потому что там были вопросы на тему FAT16, FAT32,
Windows Server 2003 и тому подобная лешая дичь.
Могу честно сказать, с таким старым софтом я никогда не работал, только читал про него. Моё знакомство с серверным оборудованием началось с Windows Server 2012 R2. Файловые системы типа FAT я застал в далёком детстве на Windows 98 и немножко на XP. Да и то, когда у меня появилась первая версия XP, я по совету старших товарищей, быстренько переставил её на NTFS, так как уже тогда, в далёкие нулевые, они сказали мне, что FAT32 – это каменный век.
В общем, тест, в силу своих познаний и опыта я сдал, молча положил Басову на стол и точно также молча вышел за двери этого «прекрасного» учреждения.
Больше мы с этим левитириующим объектом, увы, не встречались.
Может быть оно и к лучшему, хотя, как говорится, I WANT TO BELIEVE.
Конец второй серии.
Про идиотов работодателей в городе Перми.
Рассказываю про один из недавних перлов. Поехали!
Выложил резюме на HeadHunter, пошли приглашения на собесы.
Как это выглядит у идиотов?
У меня в резюме указано:
телефон,
электронная почта,
голосовая почта,
3 мессенджера
+ внутренний чат HeadHunter-a.
Звонит говорящая голова HR и, чуть ли, не выпрыгивая из штанов сообщает:
«ВАУ! Нашла ваше резюме на HeadHunter-e, бла-бла-бла, вся херня… Наш руководитель готов с вами встретиться!»
# Я никуда ехать не намерен. Знаем мы вас придурков, полдня прокатаешься, а в итоге услышишь: «Мы обязательно свяжемся с вами ЗАВТРА».
Говорю: «Хорошо. Давайте мы сначала по телефону с руководителем пообщаемся, а то вдруг я не подойду вам по скиллам.»
HR задвигает какую-то заскриптованную херню, заканчивая свою эпопею фразой: «О’кей! Я передам ваше предложение руководителю!»
Я: «Хорошо. Звоните, если что.»
HR чисто тазик с говном вареньем: «Ой, мы так рады, бла-бла-бла…»
# Чего? Зачем? Ну, думаю, хер с тобой, трубку положил и забыл, НО НЕТ!
На следующий день перезванивает и говорит: «Наш руководитель готов провести с вами видеоконференцию через Google meet.»
Я: «А просто позвонить-то никак?»
# Напоминаю, у меня телефон, голосовая почта, электронная и 3 (3, Карл!) мессенджера, но «нам» приспичило связаться через очередную модную херню. Дескать, смотри, какой я прогрессивный, Google meet знаю, не лошара какой, ёпчё.
HR: «Я уточню информацию у нашего руководителя!»
# Под аплодисменты фейспалмов кладу трубку с робкой надеждой, что этот психоделический ад наконец-то закончился.
# Через полчаса снова звонок.
HR: «Я уточнила информацию у нашего руководителя!»
# Честно говоря, ВАШ РУКОВОДИТЕЛЬ уже после второй фразы стал для меня как родной. Ну, да ладно, жги, бро…
HR: «Он НАСТАИВАЕТ на он-лайн конференции в Google meet.»
Я: «Хорошо, отправляйте ссылку. Веб-камеры у меня нет (говорю, как есть), если я со смартфона зайду, ничего?»
HR: «Ничего, ничего!»
# Дальше опять поток какой-то заскриптованной белиберды и, СЛАВА БОГУ, прощание.
И чё вы думаете?
«Собеседование» было назначено на 14.03.2024, на 14:00.
Я местный, компания местная, так что не совпасть по времени мы не могли. Тут всё окэ.
Захожу по ссылке в 13:55, сижу жду. Никого… Написано: «Вы единственный участник конференции.»
14:00. Никого.
14:10. Никого.
14:15. С чистой совестью и чувством выполненного долга покидаю конференцию и закрываю Google meet, будем надеяться, навсегда.
Слава богу, хоть не попёрся через весь город, а то опять была бы очередная дичь вроде: «Ой, а вы знаете, нашего руководителя нет на месте. Вы не могли бы перезаписаться на другой день и приехать (на двух, или трёх транспортах) ещё раз?»
Спонсором данного поста является компания Метафракс Групп. Она, как говорится, make my day!
Конец.
источник https://t.me/tipsysdmin/2257
Одна вакансия, два кандидата. Сможете выбрать лучшего? И так пять раз.
Сбер: теперь можно платить в магазинах улыбкой без карты и телефона!
Моя улыбка:
источник https://t.me/itumor/11544