Máy chủ Ubuntu 16.04, Buildroot 2017.02
Buildroot hiện tại có gói X11 giúp chúng tôi "dễ dàng" hơn: https://github.com/buildroot/buildroot/tree/2016.05/package/x11r7
Repo này xây dựng toàn bộ hệ thống cho bạn trong một lệnh duy nhất: https://github.com/cirosantilli/linux-kernel-module-cheat/tree/b134f3958884ce1fce2dd9d31d19ab0c0fbe9089#x11
Ngoài ra, đây là một .config
tệp được chuẩn bị trước : https://github.com/cirosantilli/buildroot-configs/blob/44b45b5c7f68e44abcda360a2b980f8301901a9a/qemu_x86_64_x11_dconfig
Đây là cấu hình cụ thể X11 tối thiểu mà tôi quản lý có được là:
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
Đây là cách bạn có thể thêm các tùy chọn đó vào tài khoản hiện có của mình .config
: Có thể sử dụng các đoạn cấu hình với .config của Buildroot không? | Tràn ngăn xếp
Làm thế nào tôi tìm thấy các tùy chọn ra: make menuconfig
, tìm tên tùy chọn với /
, sau đó ngược làm việc dependes
từ xeyes
.
Thật không may, bạn vẫn cần phải biết những gì bạn đang làm, chủ yếu là do các tình huống trong đó hai gói khác nhau thực hiện một giao diện (ví dụ: X.Org Modular vs KDrive cả hai đều triển khai máy chủ X11) và không có gói nào được chọn theo mặc định.
Bài viết này đã giúp rất nhiều:
Xây dựng Hệ thống Linux X.Org nhỏ bằng Buildroot | agentoss.wordpress.com
Sau đó, chỉ là bình thường:
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
Và từ bên trong QEMU:
root
startx
Kích thước hình ảnh: 28M.
Kết quả
Một hệ thống X11 cổ xưa!
Và nó hoạt động giống như trên video này: https://upload.wikidia.org/wikipedia/commons/transcoding/5/52/TWM_without_configuration.ogv/TWM_without_configuration.ogv.480p.webm
Cụ thể, trình quản lý cửa sổ cổ này không có nút đóng X trên các thanh menu: bạn phải:
- bấm vào màn hình
- chọn "giết" từ menu
- chọn cửa sổ bạn muốn giết
startx
sau đó chuyển /etc/X11/xinit/xinitrc
đến xinit
, gọi nó sau khi khởi động GUI. Mặc định xinitrc
chứa:
twm &
xclock -geometry 50x50-1+1 &
xterm -geometry 80x50+494+51 &
xterm -geometry 80x20+494-0 &
exec xterm -geometry 80x66+0+0 -name login
sẽ khởi động trình quản lý cửa sổ của chúng tôi twm
(thử thay đổi nó cho một trong những trình quản lý khác mà Buildroot có các gói) và các chương trình chúng ta thấy trên màn hình. TODO exec xterm
phần đó là gì? Tại sao exec
?
x11vnc
Khi bạn di chuyển từ trình giả lập sang một thiết bị thực, sẽ không x11vnc
cho bạn mua màn hình: nó sẽ mở màn hình dưới dạng cửa sổ trong máy chủ của bạn và thậm chí có thể gửi các nhấp chuột đến thiết bị.
Kích hoạt x11vnc
gói trên Buildroot và xây dựng lại.
Để kiểm tra trên QEMU trước tiên, hãy sử dụng các tùy chọn (xem thêm Cách SSH từ máy chủ đến khách bằng cách sử dụng QEMU? | Unix & Linux Stack Exchange
):
-net nic,model=virtio \
-net user,hostfwd=tcp::5901-:5900
sau đó vào khách startx
và chạy:
x11vnc
Và trở lại máy chủ:
sudo apt-get install vinagre
vinagre localhost::5901
Kết quả:
- ở bên trái, QEMU chạy X11, x11vnc và glmark2
- bên phải, vinagre trên máy chủ, hiển thị chính xác điều tương tự
- Tôi có thể nhấp và tương tác với một trong hai và các bản cập nhật khác ngay lập tức
Xem thêm: Làm cách nào để thiết lập Raspberry Pi mà không cần màn hình? | Trao đổi ngăn xếp Raspberry Pi
Trình quản lý hiển thị (không thành công)
Nếu bạn muốn quên hoàn toàn thiết bị đầu cuối, cũng kích hoạt:
- Gói mục tiêu
- Thư viện đồ họa và ứng dụng
X.Org X Window System
: cả hai lần nhấp y
và sau đó enter
đi vào
X11R7 Applications
xconsole
(chạy xdm
theo mặc định)
xdm
Bây giờ khi bạn bắt đầu QEMU, bạn sẽ thấy một màn hình đăng nhập đồ họa như các bản phân phối "hiện đại":
TODO: không thể đăng nhập. Tên người dùng root
/ mật khẩu trống đã hoạt động với tôi trong một thử nghiệm khác với các gói ALL X11 được cài đặt. xdm
đặt các bản ghi bên dưới /var/log/xdm.log
và bạn có thể lấy một vỏ TTY để kiểm tra nó với: Làm thế nào tôi có thể ctrl-alt-f # để đến TTY trong một phiên QEMU? | Hỏi Ubuntu
Chuỗi cuộc gọi bắt đầu trình quản lý hiển thị là:
/init
(được cung cấp bởi BusyBox)
/etc/inittab
hàng ::sysinit:/etc/init.d/rcS
/etc/init.d/rcS
/etc/init.d/S99xdm
/usr/bin/xdm