GNU/Linux >> LINUX-Kenntnisse >  >> Ubuntu

Ubuntu – Wie erstelle ich eine Shell, die in der eigenen Distribution (Linux) angezeigt wird??

Geschlossen . Diese Frage muss stärker fokussiert werden. Antworten werden derzeit nicht akzeptiert.

Möchten Sie diese Frage verbessern? Aktualisieren Sie die Frage so, dass sie sich nur auf ein Problem konzentriert, indem Sie diesen Beitrag bearbeiten.

Vor 4 Jahren geschlossen.


Verbessern Sie diese Frage

Ich interessiere mich für Linux und beschäftige mich schon eine Weile damit. Ich habe gerade gelernt, einen Linux-Kernel aus dem Quellcode zu kompilieren und ihn mit Grub zu booten, wodurch Sie mit der Shell des Kernels landen.

Sobald der Kernel nun in den Speicher geladen wird, sucht er nach dem init um es zu laden. Mein Plan ist es, eine Shell aufzurufen (die ein normaler Benutzer verwenden kann – wie bash ).

Also, wie kann ich es einbringen?

Muss ich Init konfigurieren, um die Bash-Shell zu laden, oder kann ich etwas tun?

Ich baue meine eigene Distribution und brauche nur eine Shell (Bash) und sonst nichts.

Akzeptierte Antwort:

Hmm. Dies sollte nicht kompliziert zu erreichen sein, aber es ist auch sehr komplex 🙂

Sie können einfach tun, was Alexander vorgeschlagen hat (init=/bin/bash ), und Sie werden es gut machen.

Der Init-Prozess wird vom Kernel aufgerufen und startet all Ihres Userlandes. Anmeldeterminal inklusive. Wenn Ihr Init nur dieses Bash-Terminal erzeugt, ist alles in Ordnung. Aber wenn dieses Terminal abstürzt oder beendet wird, soll init aufräumen. Wenn einige der Prozesse, die Sie vom Terminal starten, sterben, müssen Sie aufräumen. Wenn sie sterben, dann ihre Kinder brauchen einen neuen übergeordneten Prozess, es wird Ihre Init sein.

Ich empfehle dringend, 10 Minuten zu widmen, um dies zu lesen, es ist ein sehr freundlicher Überblick darüber, was init ist tut:

http://tilde.town/~elly/userland.txt

Dann werden Sie besser verstehen, was es bedeutet, Ihre eigene Init zu betreiben.

Ein relevanter Teil dieses Links lautet:

Es gibt nur eine Sache, die wir
tun müssen:eine anfängliche Binärdatei bereitstellen, die auf einem dieser Pfade gestartet werden kann:/sbin/init, /etc/init, /bin/init oder /bin/sh. Dieser Prozess (init) wird als PID 1 ausgeführt.

Der Init-Prozess muss zwei Dinge tun:

  • Nie beenden (wenn init beendet wird, gerät der Kernel in Panik)

  • Zombie-Prozesse ernten

Der Rest des Textes implementiert dann ein einfaches init.


Ubuntu
  1. Wie überprüfe ich die Linux-Kernel-Version in Ubuntu?

  2. Linux-Kernel 5.13 veröffentlicht! So installieren Sie unter Ubuntu 21.04

  3. So installieren Sie Linux Kernel 4.3 auf Ubuntu &LinuxMint

  4. Wie lässt man Ubuntu die WLAN-Netzwerkkarte erkennen?

  5. Wie kann man Ubuntu sperren lassen?

So installieren Sie GNOME unter Ubuntu Linux

So erhalten Sie Linux Kernel 5.0 in Ubuntu 18.04 LTS

So installieren Sie Linux Kernel 5.0 auf Ubuntu 18.04 LTS

So installieren Sie Linux Kernel 5.15 auf Ubuntu 20.04 LTS

So installieren Sie Linux Kernel 5.16 auf Ubuntu 20.04 LTS

So installieren Sie Linux Kernel 5.17 auf Ubuntu 20.04 LTS