Jak zbudować od podstaw niestandardowy system operacyjny dla Raspberry pi?

10

Jestem nowy w jądrze i wbudowanym Linuksie. Niedawno kupiłem Raspberry Pi i uruchomiłem go za pomocą Raspbian. Byłem zafascynowany Pi, aby dowiedzieć się więcej o Embedded postanowiłem stworzyć system automatyki domowej. Chciałem użyć własnego jądra i ułożyć w stos. tzn. nie chcę używać żadnego systemu operacyjnego.

W tym celu mam pobrać jądro, target_fs, firmware i łańcuch narzędzi z oficjalnego github. Skompilowałem jądro za pomocą łańcucha narzędzi.

Teraz nie wiem, jak umieścić to na nowej karcie SD (sformatowanej na nowy początek). Na co muszę uważać, zanim uruchomię swój stos? Ponieważ nie umieściłem serwera / klienta ssh ani telnet, skąd mam wiedzieć, że rozruch się powiódł. Gdzie mogę uzyskać demona ssh / telnet dla pi? Moim celem jest uruchomienie tylko jądra (lub absolutnego minimum) w Raspberry Pi.

Centaur
źródło
2
To jest herkulesowe zadanie i nie sądzę, żebyś miał wystarczająco dużo doświadczenia. Zastanawiasz się nad dostosowaniem istniejącej dystrybucji i zaoszczędzeniem 99% czasu?
Thorbjørn Ravn Andersen
Zdaję sobie sprawę, że jest to trochę stare, ale ostatnio dowiedziałem się o MLL, który jest innym sposobem na zbudowanie minimalnego systemu Linux. Jako neofita Linuksa uważam, że MLL ma zasadnicze znaczenie w nauce tego procesu. Obecnie badam proces włączania sterowników Raspberry Pi do kompilacji. MLL minimal.linux-bg.org/#home Powodzenia!
Rob

Odpowiedzi:

9

Jądro oczekuje dwóch rzeczy: głównego systemu plików i initrezydującego w nim demona. Inicjatywa dołączona do raspbian to system w stylu sysV . Nie jesteś do tego przywiązany - inne systemy inicjujące powszechnie używane w Linuksie (pamiętaj: jądro to linux ) są systemdi upstart- ale potrzebujesz jakiegoś systemu inicjującego.

Można również umieścić initw sposób initramfs i to wbudowana w jądro , w którym to przypadku można uciec bez głównego systemu plików, ale to wydaje się pozbawione sensu w tym przypadku.

initjest jedyną aplikacją użytkownika, uruchomioną przez jądro. Zwykle następnie uruchamia procesy, które otwierają tty z logowaniem, a następnie inne usługi, które mogą uruchomić menedżera wyświetlania, sshd itp. Może nie potrzebujesz loginu, ale prawdopodobnie chcesz tty; zamiast tego możesz po prostu uruchomić sshd bezpośrednio.

Gdzie mogę uzyskać demona ssh / telnet dla pi?

Zdobądź to z tego samego miejsca, co raspbian, z górnego źródła. Żadna z tych rzeczy nie została napisana specjalnie dla pi. A przynajmniej bardzo mało. Został on wykorzystany w wielu różnych systemach.

Jeśli chcesz jeden wstępnie skompilowany dla pi ... cóż, to raspbian itp. 1

nie wiem, jak to umieścić na nowej karcie SD

Będziesz musiał użyć programu ładującego specyficznego dla pi, który znajduje się na /bootpartycji obrazu raspbian.


1. Mówiąc brutalnie, myślę, że bierzesz udział w ogromnie quiksotycznej wyprawie, która w oparciu o wiedzę wynikającą z twojego pytania praktycznie nie ma nadziei na ukończenie tego roku, chyba że rzucisz pracę i poświęcisz się nauce w pełnym wymiarze godzin, oraz nawet wtedy Twoja szansa na porażkę jest bardzo wysoka i osiągnięcie miesięcy, w których masz szansę na sukces, potrwa miesiące . To nie jest proste. To nie jest łatwe. To powiedziawszy, nawet jeśli zawiedziesz, prawdopodobnie po drodze nauczysz się kilku przydatnych rzeczy. Lepiej jednak poświęcić czas na naukę zrozumienia istniejącej dystrybucji (np. Raspbian) i korzystania z niej do stworzenia systemu automatyki domowej.

Złotowłosa
źródło
1
donkiszotyczny ? Jesteś jedną z niewielu osób, które znam, które rutynowo podważają moje słownictwo. +1 za to sam.
Jacobm001
7

Na początek myślę, że masz niewłaściwą koncepcję korzystania z komputerów wbudowanych (szczególnie na poziomie Raspberry Pi). Jeśli naprawdę chcesz zbudować niestandardowy system operacyjny, sugeruję zacząć od Linuksa od Scratch, LFS, http://www.linuxfromscratch.org/, ale jeśli chcesz zrozumieć przetwarzanie wbudowane, zacznij od Googling „systemy wbudowane”, Wikipedia lub Embedded Linux Wiki http://elinux.org/Main_Page .

Joe Zilch
źródło
1
+1 dla BAEL. Chciałbym to jednak zrobić w środowisku kompilacji krzyżowej!
Złotowłosa
-1

Miałem ten sam problem. Właśnie w tym celu stworzyłem kolekcję skryptów powłoki.

http://www.dettus.net/detLFS

Thomas Dettbarn
źródło
Witamy w Raspberry Pi! Chociaż teoretycznie może to odpowiedzieć na pytanie, lepiej byłoby zawrzeć tutaj istotne części odpowiedzi i podać odnośnik.
Steve Robillard,