Немає фреймбуферного пристрою: як це ввімкнути?


23

Я намагаюся зробити так, щоб тюнер PCMCIA працював на домашньому сервері без голови, запускаючи Debian Squeeze. Тепер, оскільки у мене дуже великі проблеми з пошуком правильного командного рядка для захоплення, перекодування кінцевого потокового потоку відео в мережу за допомогою VLC, я вирішив піти крок за кроком і попрацювати спочатку на локальному виході.

Ось тут і виникає проблема: начебто немає пристрою фреймбуфера (/ dev / fb0) для доступу для відображення графіки на доданому екрані! І справді я помітив, що у мене немає завантаження пінгвінів Linux під час завантаження (не звертав уваги до того, як додається екран, але завжди вимкнено, і все одно комп'ютер завжди увімкнений).

Оскільки я не дуже знайомий з графікою Linux, я хотів би зрозуміти:

  • Чи пов’язано це з моїм конкретним обладнанням (див. Нижче)? Або це специфічно для Debian Squeeze / версія ядра / ...?
  • Чи є якийсь драйвер, який мені потрібно встановити / завантажити вручну?

Тепер кілька загальних відомостей:

  • На комп’ютері немає спеціальної графічної картки, але вбудований графічний чіпсет (Intel G31 Express), вбудований на материнську плату (Gigabyte G31M-ES2L)
  • Я не хочу встановлювати повнофункціональний X-сервер, просто маю пристрій Framebuffer для цього тесту

Якісь ідеї / коментарі до цього питання?


1
Після того, як ви почнете /dev/fb0працювати, будь ласка, прийміть мою відповідь. Рідко люди, які мають фактичний досвід роботи з менш поширеною темою, обходяться, щоб дати відповідь на штаб. Вони існують на UNIX-SE, її відносно рідкісна тема, тому існує менше експертів.
Дж. М. Бекер

Відповіді:


36

Я можу вирішити ваше питання, попередньо працюючи з Linux FB.

Як Linux робить свій FB.

  1. Спочатку вам потрібно мати підтримку FrameBuffer у вашому ядрі, що відповідає вашому обладнання. Більшість сучасних дистрибутивів підтримують модулі ядра. Не має значення, якщо ваш дистрибутив попередньо налаштований з логотипом завантаження, я не використовую його та маю підтримку FB.

  2. Не має значення, чи є у вас спеціальна відеокарта, інтегрована буде працювати до тих пір, поки підтримується апаратний фреймбуфер.

  3. Вам не потрібен X, що є найбільш привабливим аспектом наявності FrameBuffer. Деякі люди не знають кращого, тому вони виступали за певну форму X, щоб вирішити свої непорозуміння.

  4. Вам не потрібно працювати безпосередньо з ФБ, про що багато людей неправильно припускають. Дуже дивовижна бібліотека для розробки за допомогою FrameBuffer - DirectFBце навіть якась основна підтримка прискорення. Я завжди пропоную принаймні перевірити це, якщо ви починаєте повнофункціональний проект на базі FB (Веб-браузер, гра, графічний інтерфейс ...)

Специфічні для вашого обладнання

  1. Використовуйте Vesa Generic FrameBuffer, його модулі називаються vesafb. Ви можете завантажити його, якщо у вас є, за допомогою команд modprobe vesafb. багато дистрибутивів попередньо налаштували його вимкнено, ви можете зареєструватися /etc/modprobe.d/. blacklist vesafbможливо , необхідно закомментировать з #, в blacklist-framebuffer.confабо інших чорному списку файлів.

  2. Найкращий варіант - це апаратний драйвер KMS. Основним для Intel є Intel GMA, не впевнений, як названі його модулі. Вам потрібно буде прочитати про це у своїх документах дистрибуції. Це найкращий варіант FB, я особисто завжди ходив би KMS, якщо це можливо.

  3. Використовуйте спеціальні драйвери FB, встановлені для апаратних засобів, не рекомендується, оскільки вони інколи бувають помийними. Я б уникну цього варіанту, якщо не потрібно крайнього випадку.

Я вважаю, що це стосується всіх ваших запитань, і має надати інформацію, щоб отримати доступ до цього /dev/fb0пристрою. Що-небудь більш конкретне потребуватиме детальної інформації про розповсюдження, і якщо ви дещо досвідчені, RTFM має бути всім, що вам потрібно. (прочитавши це).

Я сподіваюся, що я допоміг, Ваш щасливий, що ви запитали одну з моїх тем! Це занедбаний предмет у UNIX-SE, оскільки не всі (свідомо) використовують Linux FrameBuffer.

ПРИМІТКА: UvesaFB чи VesaFB?

Можливо, ви читали, що люди користуються uvesafbбільше vesafb, оскільки це було кращою продуктивністю. Це ВЗАЄМО загально вірно, але не в сучасному стилі з сучасним обладнанням. Якщо ваше графічне обладнання підтримує захищений режим VESA (VESA> = 2.0), і у вас є кілька останніх ядер vesafb, тепер кращий вибір.


1
Велике спасибі за вашу відповідь !!! Це далеко поза тим, що я очікував з точки зору глибини та якості !! Я дуже вдячний, коли я можу знайти публікації / відповіді на кшталт ваших, тому що вони не тільки дають рішення з конкретного питання, але, що ще важливіше, вони дають загальну інформацію про внутрішню роботу, яка може бути корисною іншим для тих же або пов'язаних ситуацій !!
Федеріко

1
Що стосується мого питання, я розгляну його на основі ваших даних та звітуйте тут, як тільки я отримаю задовольняючі результати ...
Федеріко

3
Тому я спробував modprobe vesa(що я пам’ятаю, намагався, перш ніж задати питання тут), який не вдається, оскільки модуль не існує в моїй системі ( FATAL: Module vesafb not found.) -> доведеться розуміти, чи пов’язано це з моїм обладнанням або моїм дистрибутивом Linux (Debian Squeeze ). Хороша новина в тому, що modprobe uvesafbпрацює і створює /dev/fb0пристрій. Однак тепер, коли я прочитав вашу відповідь, я спробую налаштувати речі належним чином і знайти драйвера KMS ...
Федеріко

1
Я голосував за ваші коментарі, я схвильований, що можу допомогти! Щоб вирішити ваш останній коментар, ви неправильно ставитесь до рішення 2. Ви можете АБСОЛЮТНО отримати KMS без X, але, як я вже сказав, реальні відповіді буквально тонуть у смітті. Назва правильного апаратного модуля називається inteldrmfb, я виявив це, зробивши кілька швидких досліджень. У мене завжди є ATI, тому підтримка Intel GPU не є моїм найсильнішим моментом. Можливо, вам доведеться встановити пакет, але я побачу, чи зможу це дізнатися.
Дж. М. Бекер

1
О зачекайте, я помилився ... Я щойно перевірив свій нетбук Intel і модуль є i915, але він завантажує Framebuffer, відомий як inteldrmfb. Можливо, вам доведеться встановити пакет libdrm-intel1або перевірити, чи встановлений він.
Дж. М. Беккер

10

Я нарешті знайшов рішення своєї проблеми !!

Перш за все, велике спасибі всім, хто зробив свій внесок, зокрема TechZilla та детальному поясненню, яке він дав, без якого, я думаю, я би дав давно!

Тому в основному все, що потрібно зробити, це включити modesetting ( modeset=1), коли i915модуль ядра завантажується. Це можна зробити звичайними способами:

  • через параметр ядра GRUB,
  • через конфігураційний файл в /etc/modprobe.d
  • або в командному рядку:

    # rmmod i915
    # modprobe i915 modeset=1
    

Насправді вам нічого не потрібно робити, якщо встановити пакет xserver-xorg-video-intel, який створює /etc/modprobe.d/i915-kms.confвміст options i915 modeset=1. Однак якщо хтось не хоче встановити X (як у моєму випадку), KMS не вмикається автоматично, що пояснює, чому пристрій FrameBuffer не створено ...


2
Ви все-таки повинні прийняти мою відповідь, тому що "як увімкнути KMS при натисканні" не було вашим початковим питанням. Я вважаю, що я відповів на ваш початковий і вказав вам на намічений шлях. З іншої причини, ви отримуєте лише бали за нагороду відповідей "інших" людей. Навіть незважаючи на те, що добре себе присуджувати, якщо ніхто не наближається, в цьому випадку це не має сенсу. Хоча ви добре залишаєте свою відповідь розміщеною або інтегруйте інформацію, про яку йдеться. Будь-який спосіб буде добре. дуже радий, що я допоміг! Я дуже радий, що рішення KMS працювало, оскільки воно повинно бути швидшим, ніж звичайна VESA.
Дж. М. Бекер

1
Я просто змінив прийняту відповідь на вашу! Будучи тут щось новим, я не знав точно, що робити: поставити рішення в самому питанні, в коментарі до прийнятої відповіді або опублікувати як нову відповідь. Я подумав, що, створюючи нову прийняту відповідь, люди читатимуть спочатку запитання, потім Ваша відповідь, яка надходить вгорі, оскільки вона має більше відгуків, а потім моя відповідь ...
Федеріко

Хоча інша відповідь ґрунтовна, це має бути прийнятою відповіддю. Незалежно від того, наскільки красномовно благає автор.
Moog

-2

Ви можете спробувати віртуальний фреймбуфер, наприклад Xvfb (X віртуальний фреймбуфер).

Опис пакета xvfb у стислі


1. це "віртуальний" FrameBuffer, а не фактичний прямий апаратний FrameBuffer. 2. Це X-сервер, а конкретніше запитання не було X.
JM Becker

-2

Поки це стандартна установка debian без нічого фантазії і стандартне ядро, ви повинні мати можливість найняти консоль VGA, яка використовує пристрій framebuffer з параметром ядра, таким як "vga = 792" (що становить 24 біт 1024 × 768 ). Впевнений, ядро ​​повідомляє про нього як застаріле, але воно працює.

Див. Http://www.kernel.org/doc/Documentation/kernel-parameters.txt для параметрів ядра. Цікаво, що параметр «vga =» не відображається як застарілий.

Переконайтеся, що після зміни повторно запустіть update-grub (2) та лайки.

Також погляньте на http://packages.debian.org/squeeze/svgalib-bin, це не ідеально, але дозволяє робити якісь фантазійні графічні речі на консолі.


3
Ні, це вже не працює, ЗА МНОГО обставин. Це відповідь, про яку я завжди говорю. Якщо ви використовуєте GRUB2, це працює лише під час завантаження застарілих 16уповільнень. Це також застаріло, що, принаймні, ви визнаєте, прагматично це означає НЕ РОБИТИ НОВІ НАСТРОЙКИ З НЕЮ. Старий vga=смітник не завантажиться, якщо у вас відключені апаратні модулі, /etc/modprobe.d/і багато дистрибутивів заздалегідь налаштовані як такі.
Дж. М. Бекер

Тож наступна проблема, svgalib-bin - це бібліотека, а не пристрій '/ dev / fb0'. Все, що хоче svgalib, потрібно розробляти за допомогою svgalib. Його можна використовувати для заміни ФБ, але він не "буквально" замінює ФБ. Я фактично зробив помилку останній коментар, коли я сказав "не вдалося завантажити", я мав на увазі "не вдалося завантажити FB, швидше за все, повернуться до стандартної vga"
JM Becker

3
Це насправді навіть не винна, наша громада залишає жахливо застарілу документацію. Усі мавпи старі відповіді в Інтернеті, що ускладнює сучасне розуміння у звірі. Дуже багато людей навіть просто здаються, бо справжня відповідь нова і похована під роками ухвалення застарілих рішень.
Дж. М. Бекер

1
Параметр "vga =" працює при використанні стискання. Я просто запропонував це, оскільки це легко швидко виправити, а не досліджувати, чим його замінено. kernel.org/doc/Documentation/kernel-parameters.txt не показує "vga =" як застаріле. Єдина причина, яку я знаю, пов’язана з швидким ледве читабельним завантажувальним повідомленням ядром ... виникає плутанина ... тому відповідно до тексту на kernel.org "vga =" НЕ застарілий. У що ми віримо?
асек

1
До речі, моя пропозиція використовувати svgalib полягає в тому, що користувач не хоче використовувати X. Я розумію винуватців svgalib, але є мало інших варіантів.
асек
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.