Làm cách nào để cài đặt X11 trên hệ thống Linux Buildroot của riêng tôi?


7

Tôi đã phát triển hệ thống tệp linux nhỏ của riêng mình bằng buildrootbusybox . Tôi đã sử dụng kernel linux-2.6.38.8 được cấu hình và biên dịch chéo cho hệ thống đích (X86) theo nhu cầu. Bây giờ hệ thống tập tin được xây dựng nhưng nó chỉ có vỏ hộp bận rộn và nó không hỗ trợ GUI. Nó không có trình quản lý gói quá. Bây giờ tôi muốn kích hoạt GUI trên nó. Tôi đã kiểm tra / etc nhưng không có bất kỳ thư mục x11 hoặc tập tin x11.conf nào. Nó cũng không hỗ trợ startx .

How can I install x11(XFree86 or Xorg) on my system Explicitly.

I also want to install a package-manager for my system.

Làm thế nào điều này có thể đạt được?


2
Có lẽ, bạn sẽ phải làm điều đó từ các nguồn.
mdpc

1
Bạn sẽ phải tự xây dựng X.
Renan

2
Bạn sẽ cần rất nhiều thời gian trong tay cho việc này .... x.org/wiki
Stephan

1
Có thể rất liên quan nhưng đây là XF86: xfree86.org
Dave C

1
@Stephan không còn nữa sau khi gói X11 được thêm vào Buildroot :-) unix.stackexchange.com/a/306116/32558
Ciro Santilli 病毒 审查 六四 事件 法轮功

Câu trả lời:


6

Máy chủ Ubuntu 16.04, Buildroot 2017.02

nhập mô tả hình ảnh ở đây

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 .configtệ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 dependestừ 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

startxsau đó chuyển /etc/X11/xinit/xinitrcđến xinit, gọi nó sau khi khởi động GUI. Mặc định xinitrcchứ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 xtermphần đó là gì? Tại sao exec?

x11vnc

nhập mô tả hình ảnh ở đây

Khi bạn di chuyển từ trình giả lập sang một thiết bị thực, sẽ không x11vnccho 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 x11vncgó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 startxvà 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)

nhập mô tả hình ảnh ở đây

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 yvà sau đó enterđi vào
        • X11R7 Applications
          • xconsole(chạy xdmtheo 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.logvà 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

5

Bạn sẽ phải tự xây dựng X. Bắt đầu bằng cách đọc mục wiki X.Org này .

Hướng dẫn này dành cho các nhà phát triển muốn xây dựng Hệ thống X Window từ nguồn. Nếu khu vực quan tâm của bạn bị giới hạn trong một gói duy nhất, như trình điều khiển hoặc ứng dụng, trước tiên hãy kiểm tra O / S của bạn để biết các cơ sở phát triển.

Đối với người quản lý gói, bạn sẽ cần chọn một, đáp ứng tất cả các phụ thuộc cần thiết và sau đó đóng gói công cụ cho nó (chỉ vì bạn đã chọn dpkg / vòng / phút / bất cứ điều gì, không có nghĩa là các gói deb / RPM / ... sẽ hoạt động một cách kỳ diệu bản phân phối của bạn). Pacman, từ Arch Linux, có vẻ dễ dàng để xây dựng.


Có thể hỗ trợ đã được thêm vào từ: github.com/buildroot/buildroot/tree/ mẹo nhưng tôi chưa quản lý để chạy nó.
Ciro Santilli 冠状 病毒 审查 事件

OK, quản lý để làm cho nó hoạt động: unix.stackexchange.com/a/306116/32558
Ciro Santilli 病毒 审查 事件
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.