Как собрать собственную ОС для Raspberry pi с нуля?

10

Я новичок в ядре и встроенном Linux. Я недавно купил Raspberry Pi и загрузил его, используя Raspbian. Я был очарован Pi, чтобы узнать больше о Embedded, я решил сделать систему домашней автоматизации. Я хотел использовать свое собственное ядро ​​и стек. т.е. я не хочу использовать любую из ОС.

Для этого я загрузил ядро, target_fs, прошивку и цепочку инструментов с официального github. Я скомпилировал ядро, используя цепочку инструментов.

Теперь я не знаю, как поместить это в новую SDCard (отформатирован для нового начала). О каких вещах я должен заботиться, прежде чем загружать свой стек? Так как я не поставил ssh или telnet сервер / клиент, как я могу узнать, что загрузка прошла успешно. Где я могу получить демон ssh / telnet для pi? Моя цель - загрузить только ядро ​​(или минимум) в Raspberry Pi.

кентавр
источник
2
Это очень сложная задача, и я не думаю, что у вас еще достаточно опыта. Рассматривается просто настройка существующего дистрибутива и экономия 99% времени?
Торбьерн Равн Андерсен
Я понимаю, что это немного устарело, однако недавно я узнал о MLL, который является еще одним способом создания минимальной ОС Linux. Будучи неофитом Linux, я обнаружил, что MLL играет важную роль в изучении этого процесса. В настоящее время я изучаю процесс включения драйверов Raspberry Pi в сборку. MLL minimal.linux-bg.org/#home Удачи!
Роб

Ответы:

9

Ядро ожидает две вещи: корневая файловая система и initдемон, который находится на ней. Init, включенный в raspbian, представляет собой систему в стиле sysV . Вы не привязаны к этому - другие системы инициализации, обычно используемые с linux (помните: ядро - это linux ), systemdи upstart- но вам нужна какая-то система инициализации.

Вы можете также поместить initв initramfs и он встроен в ядро , в этом случае можно обойтись без корневой файловой системы, но это кажется бессмысленным в данном случае.

initэто единственное пользовательское приложение, запущенное ядром. Обычно он затем запускает процессы, которые открывают ttys с помощью логина, а затем другие службы, которые могут запускать диспетчер отображения, sshd и т. Д. Вам может не потребоваться логин, но вы, вероятно, хотите tty; Вы также можете просто запустить sshd напрямую.

Где я могу получить демон ssh / telnet для пи?

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

Если вы хотите, чтобы один предварительно скомпилированный для пи ... ну, это raspbian, и т. Д. 1

я не знаю, как поставить это на новый SDCard

Вам придется использовать специфичный для pi загрузчик, который находится в /bootразделе raspbian образа.


1. Если быть откровенно честным, я думаю, что вы находитесь в массовом кихотическом квесте, который, основываясь на знаниях, вытекающих из вашего вопроса, у вас практически нет надежды выполнить этот год, если вы не уволитесь с работы и посвятите себя обучению полный рабочий день, и даже тогда ваши шансы на неудачу очень высоки, и вам потребуются месяцы, чтобы достичь точки, где у вас есть шанс на успех. Это не просто. Это не просто. Тем не менее, даже если вы потерпите неудачу, вы, вероятно, узнаете некоторые полезные вещи по пути. Однако лучше потратить время на изучение понимания существующего дистрибутива (например, raspbian) и того, как его использовать для создания вашей домашней системы автоматизации.

Златовласка
источник
1
лихорадочный ? Ты один из тех, кого я знаю, кто обычно бросает вызов моему словарному запасу. +1 за это в одиночку.
Jacobm001
7

Для начала, я думаю, у вас неправильная концепция использования встроенных компьютеров (особенно на уровне Raspberry Pi). Если вы действительно хотите создать собственную ОС, я предлагаю вам начать с Linux с Scratch, LFS, http://www.linuxfromscratch.org/, но если вы хотите понять, встраиваемые вычисления начинаются с «встроенных систем» Googling, Википедии или Embedded. Linux Wiki http://elinux.org/Main_Page .

Джо Зильч
источник
1
+1 за LFS. Я хотел бы сделать это в кросс-компиляции, хотя!
Златовласка
-1

У меня такая же проблема. Я создал коллекцию сценариев оболочки именно для этой цели.

http://www.dettus.net/detLFS

Томас Деттбарн
источник
Добро пожаловать в Raspberry Pi! Хотя это может теоретически ответить на вопрос, было бы предпочтительным включить сюда основные части ответа и предоставить ссылку для справки.
Стив Робиллард