Vyvinul jsem svůj vlastní malý linuxový souborový systém pomocí buildroot a busybox . Použil jsem jádro linux-2.6.38.8 nakonfigurované a křížově zkompilované pro cílový systém (X86) podle potřeb. Nyní je souborový systém vytvořen, ale má pouze busybox shell a nepodporuje GUI. Nemá žádný správce balíčků taky. Nyní na něm chci povolit GUI. Zkontroloval jsem /etc ale nebyl tam žádný x11 adresář nebo x11.conf file.Nepodporuje startx taky.
How can I install x11(XFree86 or Xorg) on my system Explicitly.
I also want to install a package-manager for my system.
Jak toho lze dosáhnout?
Přijatá odpověď:
Hostitel Ubuntu 16.04, Buildroot 2017.02
Aktuální Buildroot má balíček X11, který nám vše „usnadňuje“:https://github.com/buildroot/buildroot/tree/2016.05/package/x11r7
Toto repo vám sestaví celý systém jediným příkazem:https://github.com/cirosantilli/linux-kernel-module-cheat/tree/b134f3958884ce1fce2dd9d31d19ab0c0fbe9089#x11
Alternativně je zde předpřipravený .config
soubor:https://github.com/cirosantilli/buildroot-configs/blob/44b45b5c7f68e44abcda360a2b980f8301901a9a/qemu_x86_64_x11_defconfig
Toto jsou minimální konfigurace specifické pro X11, které se mi podařilo obejít:
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
Zde je návod, jak můžete přidat tyto možnosti do vašeho stávajícího .config
:Je možné použít konfigurační fragmenty s .config Buildroot? | Přetečení zásobníku
Jak jsem našel možnosti:make menuconfig
, hledejte názvy možností pomocí /
, pak postupujte zpětně dependes
z xeyes
.
Bohužel stále potřebujete vědět, co děláte, hlavně kvůli situacím, kdy dva různé balíčky implementují rozhraní (např. X.Org Modular vs KDrive, z nichž oba implementují X11 server), a ve výchozím nastavení není vybrán žádný.
Tento článek hodně pomohl:Vytvoření malého systému X.Org Linux pomocí Buildroot | agentoss.wordpress.com
Pak už jen obvyklé:
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
A zevnitř QEMU:
root
startx
Velikost obrázku:28M.
Výsledek
Archaický systém X11!
A chová se stejně jako na tomto videu:https://upload.wikimedia.org/wikipedia/commons/transcoded/5/52/TWM_without_configuration.ogv/TWM_without_configuration.ogv.480p.webm
Konkrétně tento archaický správce oken nemá na lištách nabídek tlačítko pro zavření X:museli jste:
- klikněte na plochu
- z nabídky vyberte „zabít“
- vyberte okno, které chcete zabít
startx
poté předá /etc/X11/xinit/xinitrc
na xinit
, který jej volá po spuštění GUI. Výchozí xinitrc
obsahuje:
twm &
xclock -geometry 50x50-1+1 &
xterm -geometry 80x50+494+51 &
xterm -geometry 80x20+494-0 &
exec xterm -geometry 80x66+0+0 -name login
který spustí správce oken twm
(zkuste to změnit u některého z jiných manažerů, pro které má Buildroot balíčky) a programů, které vidíme na obrazovce. TODO co je to exec xterm
část? Proč exec
?
x11vnc
Když přejdete od emulátoru ke skutečnému zařízení, x11vnc
zbaví vás nákupu displeje:otevře obrazovku jako okno vašeho hostitele a může dokonce odesílat kliknutí myší do zařízení.
Povolte x11vnc
balíček na Buildroot a znovu sestavit.
Chcete-li nejprve otestovat QEMU, použijte možnosti (viz také Jak SSH z hostitele na hosta pomocí QEMU? | Unix &Linux Stack Exchange ):
-net nic,model=virtio
-net user,hostfwd=tcp::5901-:5900
pak na guest startx
a spusťte:
x11vnc
A zpět na hostiteli:
sudo apt-get install vinagre
vinagre localhost::5901
Výsledek:
- vlevo, QEMU se systémem X11, x11vnc a glmark2
- vpravo, vinagre na hostiteli, ukazuje přesně to samé
- Mohu kliknout a pracovat s jedním a druhý se okamžitě aktualizuje
Správce zobrazení (neúspěšný pokus)
Pokud chcete na terminál úplně zapomenout, povolte také:
- Cílit na balíčky
- Grafické knihovny a aplikace
X.Org X Window System
:oba klepněte nay
a potéenter
jít dovnitřX11R7 Applications
xconsole
(spouštíxdm
ve výchozím nastavení)xdm
- Grafické knihovny a aplikace
Nyní, když spustíte QEMU, zobrazí se vám grafická přihlašovací obrazovka jako „moderní“ distribuce:
TODO:nelze se přihlásit. Uživatelské jméno root
/ prázdné heslo mi fungovalo při dalším testu se VŠEMI nainstalovanými balíčky X11. xdm
vloží protokoly pod /var/log/xdm.log
, a můžete získat TTY shell, pomocí kterého jej můžete zkontrolovat:Jak mohu ctrl-alt-f# dostat se k TTY v relaci QEMU? | Zeptejte se Ubuntu
Řetězec volání, který spouští správce zobrazení, je:
/init
(poskytuje BusyBox)/etc/inittab
řádek::sysinit:/etc/init.d/rcS
/etc/init.d/rcS
/etc/init.d/S99xdm
/usr/bin/xdm