/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.6.X 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 서버와 통신해야 합니다. .

관련 정보