Компания Assured Information Security представила (https://www.ainfosec.com/2016/06/30/bareflank-new-hypervisor/) новый открытый проект Bareflank (http://bareflank.github.io/hypervisor/), в рамках которого развивается гипервизор, ориентированный на использование в качестве прототипа для быстрой разработки собственных специализированных гипервизоров. В отличие от других гипервизоров Bareflank написан на языке C++, поддерживает C++ STL и предоставляет собственную библиотеку размотки исключений (unwind). Модульная архитектура Bareflank позволят легко расширять имеющиеся возможности гипервизора и создавать собственные варианты гипервизоров, как работающих поверх оборудования (как Xen), так и запускаемых в имеющемся программном окружении (как VirtualBox). Код проекта распространяется (https://github.com/Bareflank/hypervisor) под лицензией LGPL 2.1.
Основные особенности:- Поддержка Linux на 64-разрядных CPU Intel. В будущем ожидается поддержка Windows, macOS и UEFI, а также возможность работы на платформах ARM и AMD;
- Поддержка одноядерных систем (на многоядерных CPU гипервизор пока привязывается к core 0). Появление пддержки многоядерных систем запланировано на сентябрь 2016 года;
- Возможность написания расширений с использованием элементов, определённых в спецификациях C++11/14 (например, умных указателей и сложных типов);
- Применение технологии Intel VT-x для аппаратного разделения ресурсов виртуальных машин;
- Предоставление собственной runtime-библиотеки для поддержки применения конструкторов/деструкторов и регистрации обработчиков исключений;
- Собственный драйвер для загрузки VMM (Virtual Machine Manager) и собственный ELF-загрузчик для загрузки модулей VVM;
- Наличие приложения bfm для управления гипервизором из пространства пользователя;
- Собственная unwind-библиотека, которая может применяться на уровне ядра;
- Выполнение операционной системы хост-окружения в отдельной виртуальной машине;
- Собственное сборочное окружение. Руководство по созданию сборочных окружений и драйверов подготовлено (https://github.com/Bareflank/hypervisor/tree/master/bfdriver...) для Ubuntu, Debian и Fedora;
- Полный набор unit-тестов.URL: https://www.ainfosec.com/2016/06/30/bareflank-new-hypervisor/
Новость: http://www.opennet.me/opennews/art.shtml?num=44829
Толком ничего не умеет, но написан на C++.
Это успех.
Если бы был написан на руби, умел бы всё и сразу. Руби даёт +100500 к умениям.
Просто удивляет когда описание гипервизора выглядит так:1) написан на модном С++14 (и чо ?)
2) использует стильные смартпойнтеры и контейнеры (и чо ?)
3) у нас своя молодежная система сборки (свсм упрлс ?)
4) у нас есть замечательные юнит-тесты (ну да, гипервизору без них прям не жиздь)
5) SMP не поддерживается, как-нибудь потом сделаем (блджад !?!?!?!)
6) наш главный разработчик носит зелёные кеды, зашнуровываемые до колена.
Это кстати многое объясняет.
>> носит зелёные кеды, зашнуровываемые до коленаЕще у него дом, машина, яхта и очередь на 100 лет вперёд из желающих сманить его на бОльшую зарплату.
А что у тебя? Билетик на траннвай?
> Еще у него дом, машина, яхта и очередь на 100 лет вперёд
> из желающих сманить его на бОльшую зарплату.А ты что, из налоговой? Или просто язык длинный, в соответствии с ником?
>>> носит зелёные кеды, зашнуровываемые до колена
> Еще у него дом, машина, яхта и очередь на 100 лет вперёд
> из желающих сманить его на бОльшую зарплату.
> А что у тебя? Билетик на траннвай?ага и проблемы с самооценкой, отчего для компенсации грабель с самореализацией и моральным фоном - ему приходится извергать нечто подобное на ни в чем не повинных окружающих безсистемно ;)
> Просто удивляет когда описание гипервизора выглядит так:
>
> 1) написан на модном С++14 (и чо ?)
> 2) использует стильные смартпойнтеры и контейнеры (и чо ?)
> 3) у нас своя молодежная система сборки (свсм упрлс ?)
> 4) у нас есть замечательные юнит-тесты (ну да, гипервизору без них прям не жиздь)Я в новости вижу вещи посущественнее, но даже если и так, то почему бы и нет?
Когда проект стартует, там на самом деле надо решить хренову кучу вопросов микроменеджмента:
Как хранить параметры? Какие из них сделать конфигурируемыми извне?
Как устроить логгирование? В каждом месте пуст каждый сам решает, как рапортовать об ошибке, или напишем модуль для группировки оных?
Как собирать проект? Иногда в существующих системах сборки обнаруживается какая-нибудь неприятная особенность, с которой после некоторого времени уже никак нельзя смириться, так что иногда можно и свою замутить. Хотя в случае C++ я не уверен, почему бы не взять существующую.
Обвешивать ли всё юнит-тестами сразу, или воплотить сначала идею, отшлифовать, а уже потом тесты сделать?..И так далее, далее... Все эти вопросы - часть архитектуры проекта, и в совокупности своей довольно немаленькая.
И в общем-то, поскольку это первая версия, а стало быть, прототип, именно эти вопросы и имеют первостепенную важность для тех, кто будет сейчас вливаться в проект. Это - внимание к мелочам.
> Когда проект стартуетНу так убавьте пафаса. Нечего в новости писать? Сделайте мининовость. Зачем эти школьные отписки и вода
> Обвешивать ли всё юнит-тестами сразу, или воплотить сначала идею, отшлифовать, а уже потом тесты сделать?..забить в процессе разработки, а под конец написать один интеграционный с over9000 ассёртов
>> Обвешивать ли всё юнит-тестами сразу, или воплотить сначала идею, отшлифовать, а уже потом тесты сделать?..
> забить в процессе разработки, а под конец написать один интеграционный с over9000
> ассёртовУдачи. :)
Чтоб вам месяц сидеть на гипервизоре, у котого не было юнит-тестов в цикле разработки!
Еще один нашедший серебряную пулю :(Основные проблемы в низкоуровневом софте лежат в области взаимодействия c железом со всеми его ерратами, а в случае гипервизора еще и с гостевыми ОС каждая из которых со своей особой придурью. Ну что сынку, помогли тебе твои юнит-тесты ?
> Чтоб вам месяц сидеть на гипервизоре, у котого не было юнит-тестов в
> цикле разработки!Видал я как-то софт обложенный юниттестами. Это не помешало ему релизнуться с критичными багами.
бедонщик Васько?
Там же написано, что это прототип. Ты его берешь за основу и дописываешь все, что тебе нужно, с блэкджеком и школьницами.
> Там же написано, что это прототип. Ты его берешь за основу и
> дописываешь все, что тебе нужно, с блэкджеком и школьницами..... и получаешь - ТАДААААА! - 2049й дистр линя!
>> Толком ничего не умеет, но написан на C++.Размотка исключений, Полиграф Полиграфович.
Тут объяснять бесполезно
Раньше студент программист-системщик начинал с написания собственной ОС. Теперь, видимо, с написания собственного гипервизора.
Меняются времена. И мода меняется...
Нынешние нестудденты ноуют, что какие-то студенты хоть что-то пишут, а они не могут...
Опеннет уже не тот...
Раньше (во второй половине 90ых) школьники начинали изучать C, чтобы написать собственную игруху - тогда игры были гораздо проще и разработка собственной выглядела более-менее реалистично. Поэтому на форумах регулярно появлялся школьник, собирающийся запилить наиновейшую супер-пуппер-мегаигру, в которой "бандиты набигают и можно грабить корованы" (цэ).
Аналогично с системами: линукс был молодым, а сеть была телефон (у кого она была), поэтому у всех была коварная виндуза и - у ряда передовых гиков - полуось.
Поэтому написанием "систем" студенты/старшешкольники занимались до года этак 2005го - одни из таких "системы" переходили в защищённый режим из-под доса (как ранние виндузы) и выводили на экран точку в графическом режиме - графический api сильно трудозатратен, поэтому редкая система доживала даже до точки; другие ограничивались "мощным" бутлодером, который в 512 байтах кроме самого бутлодера содержит ещё и менюху загружаемых систем (и интерфейс навигации по ней), и на саму систему разработчика уже не хватало.
Сейчас все системы - это линукс, фря или openbsd; все браузеры - хромиум; игры реализуемы только табуном специалистов; языков - великое множество и каждый обладает некоторым множеством юных изучателей, искренне верящих во всемогущество этого языка и инвалидность всех остальных.
Поэтому вот как-то так...
> Раньше (во второй половине 80ых) школьники начинали изучать C, чтобы написать собственную игруху -fixed.
нет, именно 90ых, потому что именно тогда в школах уже стояли старые 286ые, на которых можно было сделать что-то цветное и более-менее интересное. и уже преподавали трубопаскаль (turbo pascal 5.5, ближе к 2000ым поставили tp7.0), а энтузиасты умели ставить turbo c 2.0.
Неэнтузиасты, правда в НИИ при универе, ещё в начале 1990-х умели ставить Borland C++ под DOS. ;)
возможно, не каждый комментатор здесь осведомлён, но между школьником-энтузиастом и штатным сотрудником НИИ обычно есть небольшая разница, в среднем составляющая 8 лет образования.
В относительных единицах ещё круче - разница во времени работы с компом между ними была тогда примерно раз в 5. Сейчас, кстати, только раза в два-три, так что толковые школьники (коих мало, увы) к концу школы умеют столько же, сколько многие сотрудники НИИ 10-летней давности.
> другие ограничивались "мощным" бутлодером, который в 512 байтах кроме самого бутлодера
> содержит ещё и менюху загружаемых систем (и интерфейс навигации по ней),
> и на саму систему разработчика уже не хватало.Это не так уж и мало, если учитывать отсутствие возможности скопипаст^W черпать вдохновение из сети )
Да что там "вдохновение" — банально документацию найти не так-то и просто, если доступ в сеть дорог (и его, в зависимости от места проживания, сперва нужно где-то найти, потом по быстрому искать и качать).Да и при ошибках не "загуглишь" что да как, а ведь даже в банальном загрузчике нужна пара-тройка костылей для некоторых байосов.
А еще — о виртуалках никто слыхом не слыхивал, да и второй "писюк" тоже роскошь, так что все тесты с перезагрузкой, нормально дебажить тоже нельзя …
В общем, это сейчас можно довольно просто написать "классический" загрузчик для x86, а тогда "обычный школьник" вполне мог этим гордиться )
Да, ладно! Раньше было проще т.к. предметная область была обозримой. Документации, может быть, было меньше (документация на MASM/NASM и т.д. были, Interrupt List резидентный, по CGA/EGA/VGA/SVGA документации тоже навалом было (по EGA уж точно)), зато и информационного шума было меньше. Опять же интернет был не у всех, а в FIDO было порядка больше и размазанность ресурсов меньше. Люди, как правило, дорожили своей репутацией и отвечали по существу.PS:
С игрух начинали писатели на Pascal/C/C++, а начинавшие с ассемблера (или приходившие с синклера) начинали с резидентов (руссификаторов со своими крютыми шрифтами), загрузчиков и демок.
> Да, ладно! Раньше было проще т.к. предметная область была обозримой. Документации, может
> быть, было меньше (документация на MASM/NASM и т.д. были, Interrupt List
> резидентный, по CGA/EGA/VGA/SVGA документации тоже навалом было (по EGA уж точно)),
> зато и информационного шума было меньше.Так-то да, скачал Ralf Brown's Interrupt List и считай что половина нужных доков у тебя есть.
Но это если уже знаешь, что именно нужно искать. Ведь даже той же википедии не было (в которой все же можно довольно быстро получить представление о том, куда копать дальше).> Опять же интернет был не
> у всех,Как и телефон. Возможность поиска нужной информации от силы пару раз в неделю, если не реже, все же очень не хилый тормоз/отсевающий фактор.
> С игрух начинали писатели на Pascal/C/C++, а начинавшие с ассемблера
Гм, у меня в книжке по паскалю были и ассемблерные вставки (для считывания клавиатуры и быстрого/прямого копирования "отрисованного" в видеопамять), видимо поэтому первыми "шыдеврами" были тетрис и "самодостаточный" (т.е. способный грузиться биосом напрямую и занимющий аж 2048 байт, т.е. примерно столько, сколько занимают одни только хидеры и выравнивания в современных бинарниках) heх-просмотрщик дисков )
А ведь таки и было. Потому как программер по образованию и выпуск 1999.
Презентации в pptx на 25 Мб в репозитории это мощно
Да, хоть 10 dvd болванок.
Гипервизор для гипервизоров... Или гипервизор гипервизоров.
Это как терминатор терминаторов, только гипервизор.
Полез проверять код "собственной размотки исключений", ожидая увидеть грабли со stream, так и есть. Почему все подобные велосипеды наступают на эти грабли ?
У них же "полный набор юнит-тестов", никаких граблей быть не может по определению!
> Полез проверять код "собственной размотки исключений", ожидая увидеть грабли со stream,
> так и есть.А что за грабли, если не секрет?