Forum: PC-Programmierung Linux kernel - Programm ausführen


von Max (Gast)


Lesenswert?

Hallo.
Ist es möglich nur den Linux-Kernel auf einen PC zu installieren, der 
dann ein selbstgeschriebenes Programm ausführt?
Wenn ja, wie funktioniert es?

mfg Max

von Peter II (Gast)


Lesenswert?

Max schrieb:
> Ist es möglich nur den Linux-Kernel auf einen PC zu installieren, der
> dann ein selbstgeschriebenes Programm ausführt?
> Wenn ja, wie funktioniert es?

einfach den Paramter init übergeben "kernel init=/bin/programm" Dann 
startet nur dein Programm mehr nicht.

von Lukas K. (carrotindustries)


Lesenswert?

Max schrieb:
> Hallo.
> Ist es möglich nur den Linux-Kernel auf einen PC zu installieren, der
> dann ein selbstgeschriebenes Programm ausführt?
> Wenn ja, wie funktioniert es?
>
> mfg Max

Was soll es denn genau werden? Wenn es eine kleine einfachst-Anwendung 
ist, dann bietet es sich an, die Anwendung in die initrd einzubauen. 
Ansonsten dem Kernel
1
init=/pfad/zu/deiner/anwendung
 beim booten mit auf den Weg geben. Wenn sich die Anwendung dann 
beendet, gibt's ne kernel panic.
Falls deine Anwendung noch einige andere Daemons zum Funktionieren 
benötigt, dann sorge dafür, dass init diese Anwendung startet. Wie das 
geht, steht im Handbuch der Distro.

von Max (Gast)


Lesenswert?

D.h. so wäre es möglich ein kleines "eigenes" Linux-basierendes 
Betriebssystem zu erstellen... :D
Es ging um das Verständnis, wie der Kernel arbeitet ;)
Vielen Dank.
mfg Max

von Andreas B. (andreas_b77)


Lesenswert?

Am besten noch einen Emulator oder Virtualisierer installieren, um sowas 
auszuprobieren ohne dauerndes Neustarten.

Per initrd ist sowas gut möglich, ohne dass man eine Partition auf der 
Platte für Linux reservieren müsste, die initrd wird vom Bootloader 
mitgeladen und von Linux in ein tmpfs (ein RAM Dateisystem) geladen und 
darauf dann das Programm /init ausgeführt. Nur: Ohne eine existierende 
Linux-Installation als Entwicklungsumgebung wird es sehr umständlich.

Sonst zur Vorgehensweise: Man wird meist noch irgendwie mit dem Kernel 
irgendwas machen müssen (andere Dateisysteme mounten, Netzwerk 
konfigurieren) und da man das kaum alles noch mal implementieren will, 
nimmt man die BusyBox, die einen riesigen Haufen Tools in einem Programm 
vereint und so Platz spart. Eine initrd ist ein cpio-Archiv im 
newc-Format, generell noch gzip-komprimiert.

Wird bei embedded-Boxen die auf eine Anwendung spezialisiert sind gern 
so gemacht, also auch bei ganz vielen von den DSL-Routern für zuhause.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.