Ho sviluppato il mio minuscolo file system linux usando buildroot e casella occupata . Ho usato il kernel linux-2.6.38.8 configurato e compilato in modo incrociato per il sistema di destinazione (X86) in base alle esigenze. Ora il filesystem è compilato ma ha solo la shell busybox e non supporta la GUI. Non ha alcun gestore di pacchetti anche. Ora voglio abilitare la GUI su di esso. Ho controllato /ecc ma non c'era nessun x11 directory o x11.conf file.Non supporta startx anche.
How can I install x11(XFree86 or Xorg) on my system Explicitly.
I also want to install a package-manager for my system.
Come si può raggiungere questo obiettivo?
Risposta accettata:
Host Ubuntu 16.04, Buildroot 2017.02
L'attuale Buildroot ha un pacchetto X11 che ci rende le cose "facili":https://github.com/buildroot/buildroot/tree/2016.05/package/x11r7
Questo repository crea l'intero sistema per te in un unico comando:https://github.com/cirosantilli/linux-kernel-module-cheat/tree/b134f3958884ce1fce2dd9d31d19ab0c0fbe9089#x11
In alternativa, ecco un .config
pre-parato file:https://github.com/cirosantilli/buildroot-configs/blob/44b45b5c7f68e44abcda360a2b980f8301901a9a/qemu_x86_64_x11_defconfig
Questa è la configurazione specifica minima di X11 con cui sono riuscito a farla franca:
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
Ecco come puoi aggiungere queste opzioni al tuo .config
esistente :È possibile utilizzare frammenti di configurazione con .config di Buildroot? | Stack Overflow
Come ho scoperto le opzioni:make menuconfig
, cerca i nomi delle opzioni con /
, quindi torna indietro dependes
da xeyes
.
Sfortunatamente, devi ancora sapere cosa stai facendo, principalmente a causa di situazioni in cui due diversi pacchetti implementano un'interfaccia (ad es. X.Org Modular vs KDrive che implementano entrambi un server X11) e nessuno è selezionato per impostazione predefinita.
Questo articolo ha aiutato molto:costruire un piccolo sistema Linux X.Org usando Buildroot | agentoss.wordpress.com
Poi solo il solito:
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
E dall'interno di QEMU:
root
startx
Dimensione immagine:28 M.
Risultato
Un sistema X11 arcaico!
E si comporta proprio come in questo video:https://upload.wikimedia.org/wikipedia/commons/transcoded/5/52/TWM_without_configuration.ogv/TWM_without_configuration.ogv.480p.webm
In particolare, questo gestore di finestre arcaico non ha un pulsante di chiusura X sulle barre dei menu:dovevi:
- fai clic sul desktop
- seleziona "uccidi" da un menu
- seleziona la finestra che vuoi eliminare
startx
quindi passa /etc/X11/xinit/xinitrc
a xinit
, che lo chiama dopo aver avviato la GUI. Il valore predefinito xinitrc
contiene:
twm &
xclock -geometry 50x50-1+1 &
xterm -geometry 80x50+494+51 &
xterm -geometry 80x20+494-0 &
exec xterm -geometry 80x66+0+0 -name login
che avvia il nostro window manager twm
(prova a cambiarlo per uno degli altri gestori per i quali Buildroot ha pacchetti) e i programmi che vediamo sullo schermo. TODO cos'è quel exec xterm
parte? Perché exec
?
x11vnc
Quando ti sposti dall'emulatore a un dispositivo reale, x11vnc
ti dispensa dall'acquisto di un display:apre lo schermo come una finestra nel tuo host e può persino inviare clic del mouse al dispositivo.
Abilita il x11vnc
pacchetto su Buildroot e ricostruisci.
Per testare prima su QEMU, usa le opzioni (vedi anche Come eseguire l'SSH da host a guest usando QEMU? | Unix e Linux Stack Exchange ):
-net nic,model=virtio
-net user,hostfwd=tcp::5901-:5900
quindi su guest startx
ed esegui:
x11vnc
E di nuovo sull'host:
sudo apt-get install vinagre
vinagre localhost::5901
Risultato:
- a sinistra, QEMU con X11, x11vnc e glmark2
- a destra, vinagre su host, che mostra esattamente la stessa cosa
- Posso fare clic e interagire con uno o l'altro e gli altri aggiornamenti all'istante
Gestione display (tentativo fallito)
Se vuoi dimenticare completamente il terminale, abilita anche:
- Pacchetti target
- Librerie e applicazioni grafiche
X.Org X Window System
:entrambi fanno clic suy
e poienter
per entrareX11R7 Applications
xconsole
(gestito daxdm
per impostazione predefinita)xdm
- Librerie e applicazioni grafiche
Ora, quando avvii QEMU, ti viene presentata una schermata di accesso grafica come le distribuzioni "moderne":
TODO:impossibile accedere. Nome utente root
/ la password vuota funzionava per me su un altro test con TUTTI i pacchetti X11 installati. xdm
mette i log in /var/log/xdm.log
e puoi ottenere una shell TTY con cui ispezionarla:come posso ctrl-alt-f# per arrivare a un TTY in una sessione QEMU? | Chiedi a Ubuntu
La catena di chiamate che avvia il display manager è:
/init
(fornito da BusyBox)/etc/inittab
riga::sysinit:/etc/init.d/rcS
/etc/init.d/rcS
/etc/init.d/S99xdm
/usr/bin/xdm