/dev/fb0への書き込みはGUIコンソールには影響しません。

/dev/fb0への書き込みはGUIコンソールには影響しません。

私はそうXを実行する

/usr/bin/X vt07 -retro

コンソール7にGUIを配置し、灰色のグリッドを背景として使用します。

コンソール1で私は書く

while [ 1 ] ; do cat /dev/random > /dev/fb0; done

画面にランダムなカラーピクセルが表示されます。すべてのコンソールを切り替えて同じ内容を表示できますが、Xserverを有効にしてコンソール7を開くと同じグレーのグリッドが表示されます。

/dev/fb0Xが有効になっているコンソールで私が書いたものをどのように見ることができますか?

fbdevドライバを使用すると、GUIコンソールでも任意のピクセルを表示できますが、ORをxorg.conf使用する必要があります。 Xをオーバーライドするために変更する必要があるいくつかのXオプション、カーネルパラメータ、モジュールパラメータがありますか?amdgpuradeon

Xが必要なユーザーインターフェイスプログラムと所定の領域を同時に描画するプログラムを実行する必要があります。そしてビデオドライバの助けを借りて、これらのプログラムは一般的なシステムを実行して使用することができますkernel 3.9.6X Server 1.14.4fglrx

        fbfd = open("/dev/fb0", O_RDWR);
        if (fbfd == -1)
        {
                perror("Error: cannot open framebuffer device");
                exit(1);
        }
        // Get fixed screen information
        if (ioctl(fbfd, FBIOGET_FSCREENINFO, &finfo) == -1)
        {
                perror("Error reading fixed information");
                exit(2);
        }
        // Get variable screen information
        if (ioctl(fbfd, FBIOGET_VSCREENINFO, &vinfo) == -1)
        {
                perror("Error reading variable information");
                exit(3);
        }
        // Map the device to memory
        fbp = (char *) mmap(0, vinfo.yres * vinfo.pitch, PROT_READ | PROT_WRITE, MAP_SHARED, fbfd, 0);

これで、インターフェイスが実行されているコンソールに表示されないドライバkernel 5.11.21にアップグレードする必要があります。書き込みおよび描画できるバッファへのポインタが必要です。書くことができるようにシステムを変更できない場合は、Xや他のものを使って書くことができるポインタを返す関数が必要です。 。X Server 1.20.11amdgpu

ベストアンサー1

あなたはできません。 hw/xfree86/os-support/linux/lnx_init.c には VT_PROCESS と KD_GRAPHICS を設定する xf86OpenConsole() があるため、VT がアクティブな間 X サーバーを介して作成する必要があります。 fbdev(4) と連携する理由は、X ドライバーによって書かれた「下」の同じデバイスに直接書き込むからです。それ以外の場合は、カーネルモード設定またはカード固有のドライバ(Intel、Radeonなど)を介して描画するためにDRI(/ dev / dri / card0)を使用し、ハードウェアに排他的にアクセスできるXサーバーと通信する必要があります。 。

おすすめ記事