LINUX.ORG.RU

Запуск Java-приложения в VirtualBox без предустановленной OS

 , ,


0

4

Доброго вечера. Поставили задачу, запустить приложение на java 8 на виртуалке в VirtualBox без предустановленной на нём операционки. Как это можно реализовать? GraalVM SDK для 8-ки пробовал, не канает.



Последнее исправление: Karamelka (всего исправлений: 1)

Ответ на: комментарий от Karamelka

Я бы оттуда бежал бросив зарплату. Лучше бомжевать на вокзале, чем тратить кусочек жизни на удовлетворение амбиций абсолютно сумасшедших людей.

Shadow ★★★★★
()
Ответ на: комментарий от EXL

Вау, круто. Но и тут — нужна ОС для ПО. Это просто аппаратные ускорители для запуска ПО на определенных языках, как и те же видеокарты.

Вскоре, чую, ещё и аппаратные ускорители веба будут. Видеокарты его уже умеют ускорять, но не всегда корректно.

Vsevolod-linuxoid ★★★★★
()
Ответ на: комментарий от Karamelka

Касательно GraalVM, я имел в виду именно утилиту native-image, которая в неё входит, позволяющая скомпилированный java-класс скомпилировать ещё раз, но уже в байт-код

Оно компилирует тебе Java в машкоды и встраивает SubstrateVM в Linux-бинарь. Но, не для bare-metal код же!

Короче задача, которую тебе поставили некомпетентные начальники представляет собой типичные «семь красных линий», попробуй объяснить начальству о том, что JavaVM, любая, HotSpot или SubstrateVM должна под собой иметь OS для реализации всех системных вещей: потоков, сокетов, сети, файловых систем и т. д.

Если они не поймут – шли их в хер и иди стримить код хобби-проектов на OnlyFans, там платят больше.

EXL ★★★★★
()
Ответ на: комментарий от EXL

Как я понимаю, начальство хочет свою доверенную ОС для этого.

Задача реальная, вполне. Но не для джунов.

К слову, может вот тут наработки KolibriOS пригодятся…

Vsevolod-linuxoid ★★★★★
()
Последнее исправление: Vsevolod-linuxoid (всего исправлений: 1)
Ответ на: комментарий от Vsevolod-linuxoid

Возможно,начальник не шарит в IT, но наслушался про всякие уязвимости, и при этом он еще и параноик, вот и надо все свое, шоб безопасна было. Учитывая то,что у них своя реализация ssh, похоже на правду.

Dog ★★★
()
Ответ на: комментарий от Vsevolod-linuxoid

Как я понимаю, начальство хочет свою доверенную ОС для этого.

Задача реальная, вполне. Но не для джунов.

Нереальная она ни для джунов, ни для мидлов, ни для сеньоров. Подобные задачи решают компании и команды самых разных специалистов. Хороший пример – KasperskyOS. Возможно там есть порт JVM, но и то это вилами по воде. И это годы и месяцы разработки, а не «на всё у тебя неделя» как у ТС.

Даже если он соберёт кучу индусов и за месяц они родят какую-нибудь собственную TinyOS с портом JVM поверх, какого уровня там будет доверенность? Доверенность обеспечивается аудитами, а не мисками риса. Да и какого уровня там будет порт JVM, сможет ли он обеспечить ту стабильность и функциональность, которая достигнута тысячами человекочасов в портах JVM под Linux?

Задача, которую ТС озвучил просто невыполнима. А срок неделя смехотворен.

EXL ★★★★★
()
Последнее исправление: EXL (всего исправлений: 1)
Ответ на: комментарий от Vsevolod-linuxoid

Или еще вариант, возможно что (ТС,прости, просто гадаю, надеюсь все не так) начальство очень хочет уволить ТС’а (ну тупо характером не нравится,или музыку не такую слушает,или еще что), но не могут формальный повод найти. Вот и дали невыполнимую задачу.

Dog ★★★
()
Ответ на: комментарий от Dog

Х.з, ни их антивирем, ни этой OS я никогда не пользовался, это просто удачный пример в случае задачи ТС:

Самостоятельно написанная OS с реализацией POSIX, на которую наверняка без проблем водружается JVM.

EXL ★★★★★
()
Последнее исправление: EXL (всего исправлений: 1)
Ответ на: комментарий от EXL

JVM даже на alpine водружается с проблемами. А ты про какую-то левую ОС. Не, водрузить, думаю, можно, но «без проблем» это ты преувеличил. За пару человеколет порт сделать реально.

vbr ★★★
()
Ответ на: комментарий от Karamelka

А тот кто разробатывал как запускали? Тоже на голом железе?
Ну как вариант решения, взять buildroot, собрать в нем минимальную ОС с JDK и впихнуть чудо-приложение, настроить автозапуст без логина/пароля.

Kolins ★★★★
()
Ответ на: комментарий от Karamelka

Это же «операционная система»

попроси разработчиков продемонстрировать что это именно ОС и ее можно загрузить на голом железе (я конечно верю, что такое может быть, но ресурсов и времени на разработку нужно много), а нет под lxc каким-нибудь. Думаю у вас в конторе просто недопонимание вышло

Kolins ★★★★
()
Ответ на: комментарий от Karamelka

вариант какой-нибудь ultra-lightweight линукс найти

Может OSv?

OSv is an open-source versatile modular unikernel designed to run single unmodified Linux application securely as microVM on top of a hypervisor.
OSv has been designed to run unmodified x86-64 and aarch64 Linux binaries as is, which effectively makes it a Linux binary compatible unikernel (for more details about Linux ABI compatibility please read this doc). In particular OSv can run many managed language runtimes including JVM, Python, Node.JS, Ruby, Erlang, and applications built on top of those runtimes.
OSv can run on many hypervisors including QEMU/KVM, Firecracker, Cloud Hypervisor, Xen, VMWare, VirtualBox and Hyperkit as well as open clouds like AWS EC2, GCE and OpenStack.

mydibyje ★★★
()

«Запуск Java-приложения в VirtualBox без предустановленной OS»

Странная постановка задачи. Правильная постановка задачи - запуск Java-приложения без Java, без ОС, без виртуализации и без компьютера. Решается элементарно с помощью libastral

tm4ig
()
Последнее исправление: tm4ig (всего исправлений: 3)

для такого надо скомпилровать JVM с встроенным ядром линукса (али иной подходящей операционки) бибилиотеками, иксами/вейлендом по вкусу если джава-проги с гуём.
получится тот же велосипед только вид сбоку.
имхо постановитель задачи не особо сечёт в компутерах, для среднепостсоветского завода это рабочая ситуация. нередко основы компутерной грамотности приходиться объяснять «на кошечках»…

pfg ★★★★★
()

Вот так и появится второй Линус Торвальдс. Почему-то кажется что подобные задачи теперь могут ставить часто. И где-то они даже правы.

tommy ★★★★★
()
Ответ на: комментарий от Karamelka

Ну тогда смело иди к тому кто тебе задачу не поставил и говори: на голом железе нельзя, могу предложить <списко дистрибутивов что тут насоветовали, кроме ubuntu>

Kolins ★★★★
()

а в задаче таки и написано: «без предустановленной ОС»? Если да, то ты можешь использовать вообще любою ОС, главное чтобы ставил ты её самостоятельно, а не тебе передали образ ВМ с уже установленной ОС.

tm4ig
()
Ответ на: комментарий от tm4ig

Фишка в том, что это приложение и есть операционная система. И на эту операционную систему будет писаться софт и много чего другого поверх. И тут либо нужно скрыть сам факт, что это работает поверх линукса, например, либо как-то упаковать всю эту историю в исошник, где бутится OSv и в цикле запускает только это java-приложение.. Пока рассматриваю основных три варианта: OSv и Alpine Linux, если они не вытягивают, то попробую поверх ArchLinux поставить. Уже списался с DevOps’ом, он говорит что впринципе, урезать на Архе вообще всё что только можно, чтобы он только приложение запускал, более-менее реальная задача

Karamelka
() автор топика
Ответ на: комментарий от Karamelka

Фишка в том, что это приложение и есть операционная система.

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

Вообще веселая у тебя работа.

попробую поверх ArchLinux поставить

не надо так, это ж роллинг там при любом обновлении все отвалиться может

Kolins ★★★★
()
Ответ на: комментарий от Karamelka

дык это давно уж всё продумано и обделано. изучай kiosk-mode - их мильён и два вагона применений, хоть на линухе, хоть на андроиде…

pfg ★★★★★
()
Последнее исправление: pfg (всего исправлений: 2)
Ответ на: комментарий от Kolins

Отвалится и отвалится.. Когда посыпятся гневные звонки из местных организаций и органов самоуправления, может техдиру хоть жопа подскажет, что к таким задачам нужно прикреплять кого-то по-серьёзнее, чем одного junior java developer’а :/

Karamelka
() автор топика
Ответ на: комментарий от Karamelka

кернелу глубоко нас*ать на проблемы юзверского интерфейса - он им не занимается никак :)
в кернеле вообще нет интерфейсов работы с пользователем (за исключением одной уарт-консоли, да и то отладочной) это же ядро, а не операционка.
так что киоск-моде делается на каком-либо граф.интерфейсе пользователя. поищи описания их кучу делали. обычно это загрузка иксов и загрузка какого либо DE в котором загружается одно приложение на весь экран. закрытие приложения перезагружает систему, все остальные входы закрыты.

pfg ★★★★★
()

Почитал весь тред. Так а в чем проблема?

Надо просто понимать - есть ОС, а есть ядро ОС!

Хорошо, допустим что вот эта твоя хтонь на java - это ОС. И она по заданию не должна быть Ubuntu, Astra или каким-то еще стандартным дистрибутивом линукса.

Но никто же не говорил, что ваша ОС не может работать на ~ядре~ linux.

Вот и впили туда ядро linux, минимальный набор библиотек, и жабу.

А тех кто скажет что это - ОС Linux, можно смело слать на юг, доказывать что на всех Андроид телефонах оказывается линукс установлен, а не андроид!

James_Holden ★★★
()
Ответ на: комментарий от James_Holden

Собственно, это сейчас и делаю. Собираю два билда: на OSv и Alpine. На альпине будет собранный через граалевский native-image бинарник крутиться, с OSv немного проще, там поддержка JVM прямая. Посмотрю, что из этого заработает, то и отдам

Karamelka
() автор топика

есть еще такая возможность

сделать простенький докер контейнер с твоей прожкой (Alpine + OpenJDK + программа) и сконвертировать готовый контейнер в диск для виртуальной машины.

вот что по быстрому нашел

Build virtual machine image from Docker images: https://github.com/linka-cloud/d2vm

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

kontranik
()

Как это можно реализовать?

Никак =) Разве что твоё приложение это микроОС со своим загрузчиком, внутри которой джава поверх которой жава код. Но я чёт сомневаюсь.

Накатывай ОС поверх джаву, поверх приложение. Или загрузчик + ядро и прям им запустить всё остальное https://www.opennet.ru/opennews/art.shtml?num=14033

Удачи…

За неделю… Жесть конечно.

LINUX-ORG-RU ★★★★★
()
Последнее исправление: LINUX-ORG-RU (всего исправлений: 1)
Ответ на: комментарий от Vsevolod-linuxoid

ЕМНИП, на SPARC процессорах планировали делать аппаратную поддержку JVM.

Они планировали Java процессоры MAJC или ещё они назывались UltraJava, но не взлетело. Кстати они были VLIW :)

vasya_pupkin ★★★★★
()

Судя по симптомам, тебе нужно ставить Астру в минимальном окружении, она умеет в режим киоска, правда, не знаю, прикручивается ли к этому киоску Java. Начальству объясняешь, что совсем без ОС не получится, но можно сделать, чтобы ОС была «не видна». Если будут упорствовать, можешь писать ПСЖ.

hobbit ★★★★★
()
Последнее исправление: hobbit (всего исправлений: 1)