Wie installiere ich X11 auf meinem eigenen Linux Buildroot-System?

7

Ich habe mein eigenes kleines Linux-Dateisystem mit Buildroot und Busybox entwickelt . Ich habe den Linux-2.6.38.8-Kernel verwendet, der je nach Bedarf für das Zielsystem (X86) konfiguriert und kompiliert wurde. Jetzt wird das Dateisystem erstellt, verfügt jedoch nur über eine Busybox-Shell und unterstützt keine GUI. Es gibt keinen Paketmanager Jetzt möchte ich die GUI darauf aktivieren. Ich überprüfte / etc , aber es gab kein x11 - Verzeichnis oder x11.conf file.It nicht unterstützt startx zu.

How can I install x11(XFree86 or Xorg) on my system Explicitly.

I also want to install a package-manager for my system.

Wie kann dies erreicht werden?

Arunesh Singh
quelle
2
Vielleicht müssen Sie es aus den Quellen tun.
mdpc
1
Sie müssen X selbst erstellen.
Renan
2
Dafür
Stephan
1
Kann sehr sehr involviert sein, aber hier ist XF86: xfree86.org
Dave C
1
@Stephan nicht mehr, nachdem ein X11-Paket zu Buildroot hinzugefügt wurde :-) unix.stackexchange.com/a/306116/32558
Ciro Santilli 28 病毒 审查 六四 事件 28

Antworten:

6

Ubuntu 16.04 Host, Buildroot 2017.02

Geben Sie hier die Bildbeschreibung ein

Aktuelles Buildroot hat ein X11-Paket, das es uns "einfach" macht: https://github.com/buildroot/buildroot/tree/2016.05/package/x11r7

Dieses Repo erstellt das gesamte System für Sie in einem einzigen Befehl: https://github.com/cirosantilli/linux-kernel-module-cheat/tree/b134f3958884ce1fce2dd9d31d19ab0c0fbe9089#x11

Alternativ finden Sie hier eine vorgefertigte .configDatei: https://github.com/cirosantilli/buildroot-configs/blob/44b45b5c7f68e44abcda360a2b980f8301901a9a/qemu_x86_64_x11_defconfig

Dies ist die minimale X11-spezifische Konfiguration, mit der ich durchgekommen bin:

BR2_PACKAGE_XAPP_TWM=y
BR2_PACKAGE_XAPP_XCALC=y
BR2_PACKAGE_XAPP_XCLOCK=y
BR2_PACKAGE_XAPP_XEYES=y
BR2_PACKAGE_XAPP_XINIT=y
BR2_PACKAGE_XDRIVER_XF86_INPUT_KEYBOARD=y
BR2_PACKAGE_XDRIVER_XF86_INPUT_MOUSE=y
BR2_PACKAGE_XDRIVER_XF86_VIDEO_CIRRUS=y
BR2_PACKAGE_XDRIVER_XF86_VIDEO_FBDEV=y
BR2_PACKAGE_XDRIVER_XF86_VIDEO_VESA=y
BR2_PACKAGE_XORG7=y
BR2_PACKAGE_XSERVER_XORG_SERVER=y
BR2_PACKAGE_XTERM=y
BR2_TOOLCHAIN_BUILDROOT_CXX=y
BR2_TOOLCHAIN_BUILDROOT_WCHAR=y
BR2_USE_WCHAR=y

So können Sie diese Optionen zu Ihren vorhandenen hinzufügen .config: Ist es möglich, Konfigurationsfragmente mit Buildroots .config zu verwenden? | Paketüberfluss

Wie ich die Optionen herausgefunden habe : make menuconfig, Suche nach Optionsnamen mit /und arbeite dann rückwärts dependesvon xeyes.

Leider müssen Sie immer noch wissen, was Sie tun, hauptsächlich aufgrund von Situationen, in denen zwei verschiedene Pakete eine Schnittstelle implementieren (z. B. X.Org Modular vs KDrive, die beide einen X11-Server implementieren) und standardmäßig keines ausgewählt ist.

Dieser Artikel hat sehr geholfen: Erstellen eines winzigen X.Org Linux-Systems mit Buildroot | agentoss.wordpress.com

Dann einfach das Übliche:

make BR2_JLEVEL=$(nproc)
qemu-system-x86_64 \
    -enable-kvm \
    -M pc \
    -m 512 \
    -kernel output/images/bzImage \
    -drive file=output/images/rootfs.ext2,if=virtio,format=raw \
    -append root=/dev/vda \
    -net nic,model=virtio \
    -net user

Und von innen QEMU:

root
startx

Bildgröße: 28M.

Ergebnis

Ein archaisches X11-System!

Und es verhält sich genauso wie in diesem Video: https://upload.wikimedia.org/wikipedia/commons/transcoded/5/52/TWM_without_configuration.ogv/TWM_without_configuration.ogv.480p.webm

Insbesondere verfügt dieser archaische Fenstermanager nicht über eine X-Schaltfläche zum Schließen in den Menüleisten: Sie mussten:

  • Klicken Sie auf den Desktop
  • Wählen Sie "töten" aus einem Menü
  • Wählen Sie das Fenster aus, das Sie beenden möchten

startxgeht dann weiter /etc/X11/xinit/xinitrczu xinit, was es nach dem Start der GUI aufruft. Die Standardeinstellung xinitrcenthält:

twm &
xclock -geometry 50x50-1+1 &
xterm -geometry 80x50+494+51 &
xterm -geometry 80x20+494-0 &
exec xterm -geometry 80x66+0+0 -name login

Dadurch wird unser Fenstermanager gestartet twm(versuchen Sie, ihn für einen der anderen Manager zu ändern, für die Buildroot Pakete enthält) und die Programme, die auf dem Bildschirm angezeigt werden. TODO was ist das für ein exec xtermTeil? Warum das exec?

x11vnc

Geben Sie hier die Bildbeschreibung ein

Wenn Sie vom Emulator zu einem realen Gerät wechseln, müssen x11vncSie kein Display kaufen: Es öffnet den Bildschirm als Fenster in Ihrem Host und kann sogar Mausklicks an das Gerät senden.

Aktivieren Sie das x11vncPaket auf Buildroot und erstellen Sie es neu.

Verwenden Sie die folgenden Optionen, um zuerst auf QEMU zu testen (siehe auch SSH vom Host zum Gast mithilfe von QEMU? | Unix & Linux Stack Exchange ):

-net nic,model=virtio \
-net user,hostfwd=tcp::5901-:5900

dann auf Gast startxund laufen:

x11vnc

Und zurück zum Gastgeber:

sudo apt-get install vinagre
vinagre localhost::5901

Ergebnis:

  • links QEMU mit X11, x11vnc und glmark2
  • rechts vinagre auf host, zeigt genau das gleiche
  • Ich kann auf eines der beiden klicken und mit ihnen interagieren, und die anderen werden sofort aktualisiert

Siehe auch: Wie richte ich Raspberry Pi ohne Monitor ein? | Raspberry Pi Stack Exchange

Display Manager (fehlgeschlagener Versuch)

Geben Sie hier die Bildbeschreibung ein

Wenn Sie das Terminal vollständig vergessen möchten, aktivieren Sie auch:

  • Zielpakete
    • Grafikbibliotheken und Anwendungen
      • X.Org X Window System: beide klicken yund dann enterhineingehen
        • X11R7 Applications
          • xconsole( xdmstandardmäßig ausgeführt)
          • xdm

Wenn Sie nun QEMU starten, wird ein grafischer Anmeldebildschirm wie "moderne" Distributionen angezeigt:

TODO: kann sich nicht anmelden. Benutzername root/ leeres Passwort funktionierte für mich bei einem anderen Test mit ALLEN installierten X11-Paketen. xdmWenn Sie Protokolle unterlegen /var/log/xdm.log, erhalten Sie eine TTY-Shell, mit der Sie sie überprüfen können: Wie kann ich mit Strg-Alt-F # in einer QEMU-Sitzung zu einem TTY gelangen? | Fragen Sie Ubuntu

Die Anrufkette, mit der der Display Manager gestartet wird, lautet:

  • /init (bereitgestellt von BusyBox)
  • /etc/inittab Linie ::sysinit:/etc/init.d/rcS
  • /etc/init.d/rcS
  • /etc/init.d/S99xdm
  • /usr/bin/xdm
Ciro Santilli 冠状 病毒 审查 六四 事件 法轮功
quelle
5

Sie müssen X selbst erstellen. Beginnen Sie mit dem Lesen dieses X.Org-Wiki-Eintrags .

Dieses Handbuch richtet sich an Entwickler, die das X Window System aus dem Quellcode erstellen möchten. Wenn Ihr Interessengebiet auf ein einzelnes Paket beschränkt ist, z. B. einen Treiber oder eine Anwendung, erkundigen Sie sich zuerst bei Ihrem O / S nach Entwicklungseinrichtungen.

Für einen Paketmanager müssen Sie einen auswählen, alle erforderlichen Abhängigkeiten erfüllen und dann Inhalte dafür verpacken (nur weil Sie dpkg / rpm / Whatever ausgewählt haben, bedeutet dies nicht, dass deb / RPM / ... -Pakete auf magische Weise funktionieren Ihre Distribution). Pacman von Arch Linux sieht einfach zu erstellen aus.

Renan
quelle
Möglicherweise wurde seitdem Unterstützung hinzugefügt: github.com/buildroot/buildroot/tree/…, aber ich habe es noch nicht geschafft, es zum Laufen zu bringen.
Ciro Santilli 14 病毒 审查 六四 事件 14
OK, hat es geschafft, es zum Laufen
Ciro Santilli 冠状 病毒 审查 六四 事件 27