Выполнение ядра Linux и Ubuntu на пользовательском процессоре

Я не думаю, что Вы нашли бы общий стандартный ответ на этот вопрос. Истина, только Вы знаете ответ на нее.

Некоторые случайные точки для учета:

Избегайте экзотических дистрибутивов

Существуют твердые дистрибутивы вокруг (debian, centos, opensuse, ubuntu, fedora...) к выбрал из. Никакая потребность рассмотреть получение Вашего собственного LFS или чего-то как Gobolinux. Не только основные дистрибутивы больше протестированного поля, но и они также легче получить справку для.

Что находится на Вашем сервере?

Может быть легче получить тот же дистрибутив (или debian-человечность близкого родственника, centos-мягкая-фетровая-шляпа...) к Вашим рабочим станциям. Можно ли вообразить несовместимость между ENV разработчика и рабочим сервером?

Спросите своих разработчиков

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

Рассмотрите заплаченную поддержку

Иногда, даже у самого квалифицированного гуру Linux нет времени для поддержки десятков рабочих станций. Канонический, Red Hat и столь многие другие, предложение заплатило поддержку. Даже при том, что это кажется дорогим, делегирование поддержки третьей стороне позволит Вам фокусироваться на своем основном бизнесе, что Вы прилагаете все усилия.

Постарайтесь не прокручивать выпуски

Это - маленькое изменение первой точки. Нет ничего худшего, чем поддержка продукта версии меньше. Дуга Linux, Sabayon, хинду является большими дистрибутивами, но так как они испытывают недостаток в надлежащем управлении версиями, очень легко потеряться. Помните, если Вы задаете этот вопрос здесь, Вы, вероятно, надеетесь объединять рабочую среду своих разработчиков. Версии - необходимость.

Читайте на специфических особенностях

Ваш бизнес, вероятно, полагается на некоторые определенные пакеты (как PHP, MySQL, мерзавец, memcached...). Просмотрите документацию существующего дистрибутива, ища общие/известные проблемы прежде, чем принять его.

1
19.05.2017, 15:13
2 ответа

На стороне архитектуры Вам нужны больше, чем система команд и архитектура ЭВМ. Вы также должны иметь:

  • ЦП в некоторой форме (эмулятор, FPGA, кремний …).
  • Способ загрузить тот процессор: способ получить операционную систему в память, которую процессор выполняет во время начальной загрузки. Большинство процессоров загружается для кодирования сохраненный в ROM, который или включает некоторую флэш-память и ответвления к ней, или который загружает некоторый код из некоторых носителей в RAM и ответвления к ней. Следующий этап является загрузчиком ОС.
  • Некоторые периферийные устройства — как минимум, RAM, некоторый контроллер запоминающих устройств и некоторые устройства ввода-вывода.

На стороне программного обеспечения Вам будет нужно:

  • Компилятор. Так как Вы используете архитектуру MIPS, любой существующий компилятор, предназначающийся для MIPS, должен быть достаточным. Если Ваша система команд расширяет основную систему команд MIPS (например, с дополнительными регистрами), Вы, возможно, должны расширить ассемблер соответственно.
  • Ядро. Linux для MIPS уже существует. Необходимо будет добавить поддержку того, что Вы настроили в своей архитектуре: начальная загрузка, MMU, …
  • Драйверы. Необходимо будет записать драйверы для всех частей архитектуры ЭВМ, которую Вы не взяли стандартный.
  • Загрузчик. Обычно существуют вещи в загрузчике, которые являются очень архитектурно-зависимыми, но можно, вероятно, добавить необходимую поддержку существующему загрузчику, например, путем добавления определения машины подводной лодке.
  • И это обо всех. После того как у Вас есть ядро и загрузчик, программы пространства пользователя должны просто работать. Исправьте ядро и загрузчик от существующего распределения, кросс-скомпилируйте его на своем ПК и установке. Ubuntu не поддерживает MIPS, но Debian делает (миллион операций в секунду или mipsel в зависимости от порядка байтов).
6
27.01.2020, 23:13
  • 1
    Действительно сжатый, @giles. Быстрый вопрос, все же. Так в основном это правильная последовательность операций: маленькая часть кода, сохраненного где-нибудь на процессоре, называет загрузчик ОС, который разжигает ОС?? Это означает, что ядро не называют, directly.ie. - оно просто зависимость для ОС?? –  xupv5 24.11.2012, 17:05
  • 2
    @xupv5 Да, ROM/EEPROM → U-Boot/Milo / … → ядро является обычной последовательностью (если Вы удачливы: много архитектуры имеют больше шагов). Что-то должно загрузить ядро в память. Первоначальный код не хранится на самом процессоре, но в отдельном ROM или флэш-памяти (который может быть в том же кремниевом пакете). Если Вы не знакомы с тем процессом, я рекомендую играть с существующим эмулятором или платой сначала (например, с Qemu). –  Gilles 'SO- stop being evil' 24.11.2012, 17:10

Whow, Вы имеете самостоятельно в большую работу, которую я предполагаю (Это походит на много-проект года, если Вы спрашиваете меня). Вы на самом деле не собираетесь делать все это, правильно?

Да, следующий шаг должен был бы записать (или лучше: порт), своего рода компилятор (я предполагаю сначала Вас, хотят использовать кросс-компилятор от Вашего текущего ПК).

Я' предполагаю, что портирование существующего компилятора (как gcc) могло бы быть более легкой задачей (это уже поддерживает много архитектуры, однако я никогда не делал чего-то как этот, возможно, документы внутренностей GCC помогут Вам).

После того, как у Вас есть свой компилятор и выполнение, я пошел бы с испытанием некоторых основных подобных микроконтроллеру программ (например, разрешение вовлеченному флэш-памяти портов данных, и т.д.) и некоторых программ тестирования только, чтобы видеть, работает ли все как ожидалось.

Следующий шаг мог реализовывать загрузчик, который в конечном счете загрузит Ваше ядро. Я не знаю, собирается ли Ваша архитектура использовать BIOS/EFI или что-то подобное, но это - другая вещь рассмотреть при разработке загрузчика.

После этого пора добраться до ядра. Запустите с минимальной конфигурации ядра и попытайтесь разбудить ее и выполнение. Необходимо будет портировать ядро на архитектуру (который включает конфигурирование всех зависимых от дуги заголовочных файлов, запись модулей для доступа к аппаратным средствам, последовательный драйвер так, чтобы можно было получить доступ к оболочке, и т.д.), снова довольно обширный процесс.

Btw.: Я надеюсь, что Ваша архитектура имеет единицу размещения в ОЗУ, или Вы столкнетесь с некоторой серьезной проблемой позже (если она не будет иметь, изучают µClinux, который может выполнить mmu-меньше ядра, но я серьезно сомневаюсь, что Вы смогли бы выполнить полную настольную ОС).

Вы могли бы хотеть взглянуть на андроид или ядро OpenWRT, которое оба работают на встроенных устройствах.

После того как ядро портировано (много лет с этого времени, при попытке сделать это самостоятельно), то Вы продолжите пространство пользователя. Я запустил бы с портирования busybox, компилятора и затем некоторых основных инструментов Unix как openssh, крон, и т.д.

После этого (принимающий Вы уже присоединили рабочий GPU к Вашей системе), необходимо было бы записать драйвер GPU и попытаться получить X-сервер (или его замена Уэйленд). Следует иметь в виду, что необходимо будет реализовать 2D/3D ускорение для подъема рабочего стола Ubuntu и выполнения.

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

Таким образом завершить: Вы только что провели много своего времени, разработав Вашу собственную архитектуру ЦП, но Вы просто правы в начале того, чтобы заставлять полноценный дистрибутив Linux работать на ней. Я надеюсь, что Вы просто пишете книгу о процессе и не собираетесь на самом деле делать это, потому что Вы вовлекаете себя в серьезную загрузку работы в течение следующих лет.

Однако я надеюсь, что мог дать Вам беглый взгляд в процесс (и я надеюсь, что не пропустил ничего важного).Удачи.

1
27.01.2020, 23:13
  • 1
    GCC уже поддерживает MIPS. В зависимости от того, сколько была настроена архитектуры, она может работать из поля или, возможно, нуждается в нескольких дополнительных ассемблерных инструкциях. –  Gilles 'SO- stop being evil' 24.11.2012, 16:43

Теги

Похожие вопросы