GNU/Linux >> Tutoriels Linux >  >> Linux

Linux - Comment installer X11 sur le propre système Linux Buildroot ?

J'ai développé mon propre petit système de fichiers Linux en utilisant buildroot et busybox . J'ai utilisé le noyau linux-2.6.38.8 configuré et compilé de manière croisée pour le système cible (X86) en fonction des besoins. Maintenant, le système de fichiers est construit mais il n'a qu'un shell busybox et il ne prend pas en charge l'interface graphique. Il n'a pas de package-manager aussi.Maintenant, je veux activer l'interface graphique dessus. J'ai vérifié /etc mais il n'y avait pas de x11 répertoire ou x11.conf fichier.Il ne prend pas en charge startx aussi.

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

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

Comment cela peut-il être réalisé ?

Réponse acceptée :

Hébergeur Ubuntu 16.04, Buildroot 2017.02

Buildroot actuel a un package X11 qui nous facilite les choses :https://github.com/buildroot/buildroot/tree/2016.05/package/x11r7

Ce référentiel construit l'ensemble du système pour vous en une seule commande :https://github.com/cirosantilli/linux-kernel-module-cheat/tree/b134f3958884ce1fce2dd9d31d19ab0c0fbe9089#x11

Alternativement, voici un .config prépararé fichier :https://github.com/cirosantilli/buildroot-configs/blob/44b45b5c7f68e44abcda360a2b980f8301901a9a/qemu_x86_64_x11_defconfig

Voici les configurations minimales spécifiques à X11 avec lesquelles j'ai réussi à m'en tirer :

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

Voici comment vous pouvez ajouter ces options à votre .config existant :Est-il possible d'utiliser des fragments de configuration avec le .config de Buildroot ? | Débordement de pile

Comment j'ai trouvé les options :make menuconfig , rechercher les noms d'options avec / , puis marche arrière dependes de xeyes .

Malheureusement, vous devez toujours savoir ce que vous faites, principalement en raison de situations où deux packages différents implémentent une interface (par exemple, X.Org Modular vs KDrive, qui implémentent tous deux un serveur X11), et aucun n'est sélectionné par défaut.

Cet article m'a beaucoup aidé :Construire un petit système Linux X.Org en utilisant Buildroot | agentoss.wordpress.com

Ensuite, comme d'habitude :

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

Et depuis QEMU :

root
startx

Taille de l'image :28M.

Résultat

Un système X11 archaïque !

Et il se comporte exactement comme sur cette vidéo :https://upload.wikimedia.org/wikipedia/commons/transcoded/5/52/TWM_without_configuration.ogv/TWM_without_configuration.ogv.480p.webm

En particulier, ce gestionnaire de fenêtres archaïque n'a pas de bouton de fermeture X sur les barres de menus :il fallait :

  • cliquez sur le bureau
  • sélectionnez "tuer" dans un menu
  • sélectionnez la fenêtre que vous voulez tuer

startx puis passe /etc/X11/xinit/xinitrc à xinit , qui l'appelle après le démarrage de l'interface graphique. Le xinitrc par défaut contient :

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

qui démarre notre gestionnaire de fenêtres twm (essayez de le changer pour l'un des autres gestionnaires pour lesquels Buildroot a des packages), et les programmes que nous voyons à l'écran. TODO qu'est-ce que c'est exec xterm partie? Pourquoi le exec ?

x11vnc

Lorsque vous vous éloignez de l'émulateur vers un appareil réel, x11vnc vous dispense d'acheter un écran :il ouvre l'écran comme une fenêtre dans votre hébergeur, et peut même envoyer des clics de souris à l'appareil.

Activer le x11vnc package sur Buildroot et reconstruire.

Pour tester d'abord sur QEMU, utilisez les options (voir aussi How to SSH from host to guest using QEMU? | Unix &Linux Stack Exchange ):

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

puis sur l'invité startx , et exécutez :

x11vnc

Et de retour sur l'hôte :

sudo apt-get install vinagre
vinagre localhost::5901

Résultat :

  • à gauche, QEMU exécutant X11, x11vnc et glmark2
  • à droite, vinaigre sur l'hôte, montrant exactement la même chose
  • Je peux cliquer et interagir avec l'un ou l'autre, et l'autre se met à jour instantanément
En relation :Analyser XML à partir d'un script shell ?

Gestionnaire d'affichage (tentative infructueuse)

Si vous voulez oublier complètement le terminal, activez également :

  • Packages cibles
    • Bibliothèques et applications graphiques
      • X.Org X Window System :les deux cliquent sur y puis enter entrer
        • X11R7 Applications
          • xconsole (exécuté par xdm par défaut)
          • xdm

Maintenant, lorsque vous démarrez QEMU, vous êtes présenté avec un écran de connexion graphique comme les distributions "modernes" :

À FAIRE :impossible de se connecter. Nom d'utilisateur root / le mot de passe vide fonctionnait pour moi sur un autre test avec TOUS les packages X11 installés. xdm place les journaux sous /var/log/xdm.log , et vous pouvez obtenir un shell TTY pour l'inspecter avec :Comment puis-je ctrl-alt-f# pour accéder à un TTY dans une session QEMU ? | Demandez à Ubuntu

La chaîne d'appel qui lance le gestionnaire d'affichage est :

  • /init (fourni par BusyBox)
  • /etc/inittab ligne ::sysinit:/etc/init.d/rcS
  • /etc/init.d/rcS
  • /etc/init.d/S99xdm
  • /usr/bin/xdm

Linux
  1. Comment vérifier la version du système d'exploitation et de Linux

  2. Comment installer ManageEngine OpManager sous Linux

  3. Comment changer l'identité d'un système Linux

  4. Comment installer R 3.3.1 dans le propre répertoire ?

  5. Comment installer 'convert' sur un système Linux ?

Comment installer le client VPN Surfshark dans le système Linux

Comment installer et utiliser YouTube-DL sur le système Linux

Comment installer et configurer AnyDesk sur le système Linux

Comment installer et configurer Django sur le système Linux

Comment installer et configurer PrestaShop sur le système Linux

Comment installer et configurer Elasticsearch sur le système Linux