私のLinux BuildrootシステムにX11をインストールする方法

私のLinux BuildrootシステムにX11をインストールする方法

私は独自の小さなLinuxファイルシステムを開発しました。ルートディレクトリの構築そして忙しい箱。必要に応じて、ターゲットシステム(X86)用に構成され、クロスコンパイルされたlinux-2.6.38.8カーネルを使用しました。これでファイルシステムが構築されましたが、Business Boxシェルのみがあり、GUIはサポートされていません。これでパッケージマネージャはありません。ここでGUIを有効にしたいと思います。確認しました/などしかし、何もありません。x11ディレクトリまたはx11.conf文書。サポートしていない開始xまた。

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

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

これはどのように達成できますか?

ベストアンサー1

Ubuntu 16.04ホスト、Buildroot 2017.02

ここに画像の説明を入力してください。

現在、BuildrootにはX11パッケージがあり、作業を「簡単に」しています。https://github.com/buildroot/buildroot/tree/2016.05/package/x11r7

このリポジトリは単一のコマンドでシステム全体を構築します。https://github.com/cirosantilli/linux-kernel-module-cheat/tree/b134f3958884ce1fce2dd9d31d19ab0c0fbe9089#x11

または、事前に準備された.configファイルは次のようになります。https://github.com/cirosantilli/buildroot-configs/blob/44b45b5c7f68e44abcda360a2b980f8301901a9a/qemu_x86_64_x11_defconfig

私が削除した最小限のX11固有の構成は次のとおりです。

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

既存のオプションにこれらのオプションを追加する方法は次のとおりです.configBuildrootの.configで構成フラグメントを使用できますか? |スタックオーバーフロー

オプションを見つけた方法:make menuconfigオプション名を検索して/逆さまdependesに作業しますxeyes

残念ながら、まだ2つの異なるパッケージがインターフェイスを実装している状況(X.Org ModularとKDriveの両方がX11サーバーを実装している)のため、現在実行されていることを知っておく必要があり、デフォルトでは何も選択されていません。

この記事は大きな助けになりました: Buildrootを使用した小規模なX.Org Linuxシステムの構築 agentoss.wordpress.com

そして一般的なシナリオは次のとおりです。

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

QEMU内で:

root
startx

画像サイズ:28M。

結果

古代X11システム!

このビデオのように動作します。https://upload.wikimedia.org/wikipedia/commons/transcoded/5/52/TWM_without_configuration.ogv/TWM_without_configuration.ogv.480p.webm

特に、この古代ウィンドウマネージャにはメニューバーにX閉じるボタンがありません。以下を行う必要があります。

  • デスクトップをクリック
  • メニューから「殺す」を選択してください
  • 殺したいウィンドウを選択してください

startxその後、GUIを起動した後に呼び出される/etc/X11/xinit/xinitrcに渡されます。xinit基本的には以下が含まれますxinitrc

twm &
xclock -geometry 50x50-1+1 &
xterm -geometry 80x50+494+51 &
xterm -geometry 80x20+494-0 &
exec xterm -geometry 80x66+0+0 -name login

ウィンドウマネージャtwm(Buildrootにパッケージがある他の管理者の1つに変更してみてください)と画面に表示されるプログラムが起動します。 TODO そのexec xterm部分は何ですか?なぜexec

x11vnc

ここに画像の説明を入力してください。

エミュレータから物理デバイスに移動するときにx11vncモニタを購入する必要はありません。モニタは、ホストコンピュータで画面をウィンドウに開き、マウスクリックをデバイスに送信することもできます。

Buildrootでパッケージを有効にしx11vncて再構築します。

QEMUで最初にテストするには、オプションを使用します(参照:QEMUを使用してホストからゲストにSSHをどのように接続しますか? UnixとLinuxのスタック交換 ):

-net nic,model=virtio \
-net user,hostfwd=tcp::5901-:5900

その後、ゲストで実行しますstartx

x11vnc

ホストに戻る:

sudo apt-get install vinagre
vinagre localhost::5901

結果:

  • 左側では、QEMU は X11、x11vnc、および glmark2 を実行します。
  • 右側には、ホストシステムの vinagre がまったく同じ内容を示しています。
  • 一方をクリックして対話すると、もう一方がすぐに更新されます。

また見なさい:モニターなしでラズベリーファイを設定するには?ラズベリーパイスタック交換|

ディスプレイマネージャ(試行失敗)

ここに画像の説明を入力してください。

端末を完全に忘れたい場合は、以下を有効にすることもできます。

  • ターゲットパッケージ
    • グラフィックライブラリとアプリケーション
      • X.Org X Window System: 両方をクリックyしてenterEnter
        • X11R7 Applications
          • xconsolexdmデフォルトで実行)
          • xdm

QEMUを起動すると、「最新」ディストリビューションに似たグラフィカルログイン画面が表示されます。

TODO: ログインできません。すべてのX11パッケージがインストールされている他のテストでは、ユーザー名root/空のパスワードが有効でした。xdm以下にログを入力する/var/log/xdm.logと、TTYシェルを使用して確認できます。ctrl-alt-f#を押してQEMUセッションでTTYにアクセスするには? | Ubuntuに尋ねる

ディスプレイマネージャを起動するコールチェーンは次のとおりです。

  • /init(ビジーボックス提供)
  • /etc/inittabワイヤー::sysinit:/etc/init.d/rcS
  • /etc/init.d/rcS
  • /etc/init.d/S99xdm
  • /usr/bin/xdm

おすすめ記事