2014-01-16 10 views
-1

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

Недавно я заинтересовался созданием собственного дистрибутива Linux (возможно, только для семьи и друзей). Я подробно исследовал, следует ли настраивать существующий дистрибутив (например, Arch Linux, Debian) или строить с нуля (LFS). Я пришел к выводу, что построение с нуля лучше всего соответствует моим потребностям (Im без ограничений времени).

Мой главный вопрос:

Можно ли создать приложение, которое функционирует как полноценная ОС, а просто программировать дистрибутиве, чтобы запустить его на старте?

Второй главный вопрос:

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

Проблемы я вижу в этом:

-Если я использую язык как C#, это будет работать? или это требует оконных туземцев?

-Если я использую java (возможно, нет), но если бы я хотел, мне пришлось бы упаковать JRE с дистрибутивом?

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

-Does Java или C# использовать специальные методы файловой системы? Мне нужно, чтобы база Linux создала файловую систему для использования языка VM? Или я могу все это устроить в макете?

-Производительные проблемы с языками VM?

-Есть ли какие-либо юридические проблемы с упаковкой таких вещей, как JRE, или если я нахожу способ использования оконных туземцев?

Дополнительные примечания:

-I нет никакого беспокойства по времени, даже если только файловая система занимает у меня 3-х лет.

-Если это было с нуля, это было бы невозможно, смогу ли я настроить дистрибутив, чтобы так работать?

-Понимаю, что мне придется делать такие вещи, как аппаратные драйверы linux, потому что общение с аппаратными средствами не является чем-то моим футбольным полем. Значит ли это, что я должен настроить что-то вроде Arch Linux?

Мне очень жаль, что в этом так много вопросов, и если бы у меня хватило репутации, чтобы добавить 500 репрессий, я бы это сделал.

+3

Это похоже на то, что вы говорите о создании приложения, работающего на ОС, а не о создании реальной ОС. – itsme86

+0

@ itsme86: Я думаю, он просто хочет построить ОС, но не имеет дело с драйверами, и не понимает, что это то, о чем он спрашивает. – Magus

+0

Я не понимаю, что вы хотите сделать, но я не уверен, что вы это сделаете. – Casey

ответ

1

Короткий ответ добавьте в командной строке ядра:

init=/path/to/my/application 

Обычно первый процесс ядра Linux начнет это init process.init заботится о запуске сценариев запуска для всего остального, который должен запускаться при загрузке - например. модули ядра, демоны, консольный вход/x рабочий стол.

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

Хотя, скорее всего, вы хотите редактировать сценарии запуска, чтобы просто запустить одно приложение (Ваш текст приложения или X на основе?)

В качестве альтернативы вы можете взломать ядро ​​для запуска приложения в пространстве ядра , и, возможно, даже не запускать какие-либо процессы. Но это будет кошмар для отладки/поддержки.

2

Операционная система - действительно огромное предприятие. Были попытки создать систему для создания пользовательских ОС на C# под названием Cosmos, которые я рассмотрел несколько раз. Однако в большинстве случаев приложения, вероятно, должны быть специально созданы для ОС. На самом деле я могу беспокоиться, теперь ты напомнил мне.

Очевидно, что результатом будет не Linux, а скорее пользовательская ОС, построенная с использованием Cosmos. Скорее всего, это самое близкое, что вы можете использовать с помощью C#.

Итак, в целом: Если ваша цель состоит в том, чтобы выполнить управляемый код на машине на самом базовом уровне, Cosmos - это, вероятно, то, что вы хотите. Вы все равно будете делать почти все, но у вас будет какая-то изоляция от настоящих кишок машины.

EDIT: Альтернативы включают Mosa, который не использует Visual Studio, и Singularity, который можно использовать только для исследований, но был подготовлен Microsoft напрямую.