He desarrollado mi propio pequeño sistema de archivos Linux usando buildroot y caja ocupada . Utilicé el kernel linux-2.6.38.8 configurado y compilado de forma cruzada para el sistema de destino (X86) de acuerdo con las necesidades. Ahora el sistema de archivos está construido pero solo tiene un shell de busybox y no es compatible con GUI. No tiene ningún administrador de paquetes también. Ahora quiero habilitar la GUI en él. Revisé /etc pero no había ningún x11 directorio o x11.conf archivo. No es compatible con startx también.
How can I install x11(XFree86 or Xorg) on my system Explicitly.
I also want to install a package-manager for my system.
¿Cómo se puede lograr esto?
Respuesta aceptada:
Host de Ubuntu 16.04, Buildroot 2017.02
Buildroot actual tiene un paquete X11 que nos facilita las cosas:https://github.com/buildroot/buildroot/tree/2016.05/package/x11r7
Este repositorio crea todo el sistema para usted con un solo comando:https://github.com/cirosantilli/linux-kernel-module-cheat/tree/b134f3958884ce1fce2dd9d31d19ab0c0fbe9089#x11
Alternativamente, aquí hay un .config
preparado archivo:https://github.com/cirosantilli/buildroot-configs/blob/44b45b5c7f68e44abcda360a2b980f8301901a9a/qemu_x86_64_x11_defconfig
Estas son las configuraciones mínimas específicas de X11 con las que logré salirme con la mía:
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
Así es como puede agregar esas opciones a su .config
existente :¿Es posible usar fragmentos de configuración con .config de Buildroot? | Desbordamiento de pila
Cómo descubrí las opciones:make menuconfig
, buscar nombres de opciones con /
, luego trabaje hacia atrás dependes
de xeyes
.
Desafortunadamente, aún necesita saber lo que está haciendo, principalmente debido a situaciones en las que dos paquetes diferentes implementan una interfaz (por ejemplo, X.Org Modular vs KDrive, ambos implementan un servidor X11), y ninguno está seleccionado de manera predeterminada.
Este artículo ayudó mucho:Creación de un pequeño sistema Linux X.Org usando Buildroot | agentesoss.wordpress.com
Entonces solo lo de siempre:
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
Y desde dentro de QEMU:
root
startx
Tamaño de imagen:28M.
Resultado
¡Un sistema X11 arcaico!
Y se comporta como en este video:https://upload.wikimedia.org/wikipedia/commons/transcoded/5/52/TWM_without_configuration.ogv/TWM_without_configuration.ogv.480p.webm
En particular, este administrador de ventanas arcaico no tiene un botón de cierre X en las barras de menú:tenías que:
- haga clic en el escritorio
- seleccione "matar" de un menú
- seleccione la ventana que desea eliminar
startx
luego pasa /etc/X11/xinit/xinitrc
a xinit
, que lo llama después de iniciar la GUI. El xinitrc
predeterminado 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
que inicia nuestro administrador de ventanas twm
(prueba a cambiarlo por alguno de los otros gestores para los que Buildroot tiene paquetes), y los programas que vemos en pantalla. TODO qué es eso exec xterm
¿parte? Por qué el exec
?
x11vnc
Cuando pasa del emulador a un dispositivo real, x11vnc
te dispensa de comprar una pantalla:abre la pantalla como una ventana en tu host, e incluso puede enviar clics del mouse al dispositivo.
Habilite x11vnc
paquete en Buildroot y reconstruir.
Para probar primero en QEMU, use las opciones (vea también ¿Cómo usar SSH de host a invitado usando QEMU? | Unix &Linux Stack Exchange):
-net nic,model=virtio
-net user,hostfwd=tcp::5901-:5900
luego en invitado startx
y ejecuta:
x11vnc
Y de vuelta en el host:
sudo apt-get install vinagre
vinagre localhost::5901
Resultado:
- a la izquierda, QEMU ejecutando X11, x11vnc y glmark2
- a la derecha, vinagre en host, mostrando exactamente lo mismo
- Puedo hacer clic e interactuar con cualquiera de los dos, y el otro se actualiza instantáneamente
Administrador de visualización (intento fallido)
Si quieres olvidarte por completo del terminal, habilita también:
- Paquetes objetivo
- Bibliotecas gráficas y aplicaciones
X.Org X Window System
:ambos hacen clic eny
y luegoenter
entrarX11R7 Applications
xconsole
(ejecutado porxdm
por defecto)xdm
- Bibliotecas gráficas y aplicaciones
Ahora, cuando inicia QEMU, se le presenta una pantalla de inicio de sesión gráfica como las distribuciones "modernas":
TODO:no se puede iniciar sesión. Nombre de usuario root
/ La contraseña vacía me funcionó en otra prueba con TODOS los paquetes X11 instalados. xdm
coloca los registros en /var/log/xdm.log
, y puede obtener un shell TTY para inspeccionarlo con:¿Cómo puedo presionar ctrl-alt-f# para acceder a un TTY en una sesión de QEMU? | Pregúntale a Ubuntu
La cadena de llamadas que inicia el administrador de visualización es:
/init
(proporcionado por BusyBox)/etc/inittab
línea::sysinit:/etc/init.d/rcS
/etc/init.d/rcS
/etc/init.d/S99xdm
/usr/bin/xdm