2022-08-04

vak: (Default)
Глянул статистику на гитхабе по своим проектам. Отдельно количество посетителей и количество клонеров за две недели.
Project             Visitors
----------------------------
dmrconfig 121
RetroBSD 107
4.4BSD-Lite2 75
uos-embedded 62
LiteBSD 51
pic32prog 47
vak-opensource 21
besm6.github.io 18
bash-commander 18
mesm6 14
baoclone 14
dispak 4
besm6/simh 4
micro-besm 3
bkunix 2
m20 0
Project             Cloners
---------------------------
pic32prog 238
RetroBSD 22
LiteBSD 20
4.4BSD-Lite2 16
dmrconfig 13
mesm6 6
dispak 5
bash-commander 5
vak-opensource 3
besm6.github.io 3
uos-embedded 2
micro-besm 2
m20 2
bkunix 1
besm6/simh 1
baoclone 1

RetroBSD продолжает вызывать живой интерес, как ни странно.

vak: (Default)
Все знают утилиту Wine, которая запускает бинарные программы Windows на Линуксе. Интеловский бинарный код выполняется как родной, а обращения к операционной системе (системные вызовы) перехватываются и обрабатываются. То же самое делает noah, позволяя выполнять линуксные бинарники на MacOS.

На картинке показано, как под noah стартует линуксный bash, а из него запускаются линуксные приложения xeyes, xclock, xfwrite и компилятор gcc.



Утилита глюкавая, и если вызвана неправильно, падает со странными ошибками. Но её исходник может служить источником ценной информации, как правильно работать с маковским гипервизором. К примеру, если вы соберёте noah из исходников на последней версии MacOS, программа будет падать с ошибкой:
!!PANIC!!
perror is "Undefined error: 0" if it is valid
could not create the vm: error code fae94007
Это означает, что нет прав доступа к гипервизору. Надо разрешить доступ командой:
codesign -s - --entitlements app.entitlements --force noah
При этом в файле app.entitlements должно находиться следующее содержимое:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>com.apple.security.hypervisor</key>
    <true/>
</dict>
</plist>
Большой минус noah: она понимает только бинарники 64-битного линукса для архитектуры x86_64. Запустить бинарники i386 не удаётся.