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
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 sury
puisenter
entrerX11R7 Applications
xconsole
(exécuté parxdm
par défaut)xdm
- Bibliothèques et applications graphiques
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