LINUX.ORG.RU

В свежих ядрах поломали работу SDL 1 в ядерной консоли, но я собрал патч, который возвращает всё обратно

 , ,


2

2

Сабж. Ну и как мне пересматривать свои проекты если этих разработчиков ядра нельзя оставлять наедине с ядром? Хорошо хоть поломав ncurses в ядерной консоли они через некоторое время сами всё починили. Однако, это только вершина айсберга.

Такой гангрены как ядро 4.19 не было со времён ядра 4.14. И, что ещё печальнее, эту заразу же бэкпортируют на прошлые ветки ядра.

Итак. SDL 1 в ядерной консоли. Эта библиотека в ядерной консоли нужна в т.ч. для работы эмуляторов. Retro Arch, fceux, FUSE Spectrum Emulator, dosbox,... и т.д.

С какими ванильными версиями ядра это ещё работало? Это ещё работало с ванильными ядрами 4.17.19 (24-Aug-2018) и 4.18.17 (04-Nov-2018). С ядром 4.18.18 (10-Nov-2018) это уже не работает. В ветку 4.14.x эту заразу тоже бэкпортировали. С ядром 4.14.79 (04-Nov-2018) всё тоже должно работать, а вот ядро 4.14.80 уже покорёжено этой заразой.

А вот патч для ядра 4.19.9 с которым SDL 1 начинает работать как и прежде: http://saahriktu.org/downloads/patches/linux-4.19.9_make_sdl1_working_again.p... .

★★★★★
Ответ на: комментарий от robus

«Ядерная» или «ядровая» - значит, реализованная в ядре. Речь именно о ядерном drivers/tty/vt/vt.c. Да, фреймбуфер в другой подсистеме, но, во-первых, в ядре всё связано (и vt умеет работать в т.ч. и поверх фреймбуфера (а может работать и в текстовом режиме)), а, во-вторых, речь о ядерной консоли как об окружении пользователя (вместо иксов и вейланда).

saahriktu ★★★★★
() автор топика
Последнее исправление: saahriktu (всего исправлений: 1)

В свежих ядрах поломали работу SDL 1 в ядерной консоли

напиши шаги для воспроизведения бага, проверю у себя

liberty1
()
Ответ на: комментарий от EXL

жирные и неповоротливые иксы тянуть никто не хотел

это экономия на спичках
помню, у меня одна вкладка браузера выжирала больше ресурсов, чем весь иксовый сервер

liberty1
()
Ответ на: комментарий от liberty1

Просто начать запускать в ядерной консоли софтину на SDL1. Например, fceux или Retro Arch. Сразу же будет сегфолт. При этом софтина куда-нибудь напишет (особенно в verbose режиме) нечто наподобие «Can't set up console» или как там оно было. При всех повторных запусках будет тоже самое. В общем всё, приехали. А подробности я выяснял уже вычисляя версии рабочих и нерабочих ядер. А потом сравнил исходники ядер 4.18.17 и 4.18.18. И сделал патч. С которым всё снова заработало с ядром 4.19.9 бег сегфолтов и ругани.

saahriktu ★★★★★
() автор топика
Последнее исправление: saahriktu (всего исправлений: 1)
Ответ на: комментарий от liberty1

Во-первых, не все открывают много вкладок в браузере. Во-вторых, тут суть больше в унификации среды пользователя и удобстве.

saahriktu ★★★★★
() автор топика
Ответ на: комментарий от saahriktu

у меня на арче с ядрами 4.19.4 и 4.19.8 заработало без иксов
проверялось на пересобранном с sdl1 https://www.archlinux.org/packages/community/x86_64/retroarch/

~$ retroarch --features | grep -i sdl
  SDL:
		SDL input/audio/video drivers: yes
  SDL2:
		SDL2 input/audio/video drivers: no
  SDL_image:
		SDL_image image loading: no

и меню, и ромы через snes9x_libretro.so фурычат, с дефолтными настройками

liberty1
()
Ответ на: комментарий от saahriktu

я к тому, что на фоне современного разжиревшего софта иксы уже не выглядят таким монстром, особенно с учётом их полезных возможностей

liberty1
()
Ответ на: комментарий от liberty1

Странно. А драйвер фреймбуфера какой? Не vesafb случаем? Патч затронул именно подсистему DRM. И я наехал на эти грабли потому, что у меня radeondrmfb. Ещё должно было задеть, например, inteldrmfb и nouveaufb.

saahriktu ★★★★★
() автор топика
Ответ на: комментарий от liberty1

Да. Однако, юзер может посчитать, что иксы ему только мешают. Не жирностью, а тем, что они, по сути, лишняя прослойка в системе, которая лишь препятствует ему полноценно работать в консоли. Ведь, с графическими объектами нельзя работать также как с текстом. Нельзя просто так взять и выделить что угодно в окне того же GUI браузера, а потом скормить это, например, тому же awk'у. А вот из окна lynx'а можно скопировать и скормить консольным инструментам что угодно. Соответственно, юзер может решить, что в таком случае все эти вещи (иксы и GUI софт), раз они не на 100% совместимы с инструментами командной строки, и не имею никакого смысла, и лучше бы они ему и не мешались.

saahriktu ★★★★★
() автор топика
Последнее исправление: saahriktu (всего исправлений: 2)

Не всем нужен SDL в ядерной консоли

stormblastt ★★★
()
Ответ на: комментарий от saahriktu

Странно.

может в арче сам sdl удачно пропатчен, или ещё что-то, ведь арч не такой уж и ванильный

А драйвер фреймбуфера какой?

у меня интеловская встройка и, судя по логу systemd, консоль при загрузке линукса переключается с vesafb на inteldrmfb

liberty1
()
Ответ на: комментарий от dexpl

Предлагаю вариант «ядрёная», в контексте ТСа - очень подходящее слово.

Deleted
()
Ответ на: комментарий от saahriktu

А вот из окна lynx'а можно скопировать и скормить консольным инструментам что угодно.

текст, конечно, удобен, но ты же пользуешься интернет-поисковиками, сколько сайтов из поисковой выдачи сейчас нормально откроется в lynx? или ты готов лишиться полезной информации из-за неработающего софта?

liberty1
()

Че кде ломает консоль в 2019 пакетом console ? Все не иимется им все лавры что другим настроены себе прибрать

anonymous
()
Ответ на: комментарий от liberty1

Открывается почти всё. Неоткрывается только часть сайтов. Те, которые построены на JS и без него ничего не выдают. А просто информацию продолжают выкладывать на обычные страницы.

saahriktu ★★★★★
() автор топика
Ответ на: комментарий от dexpl

ЯДРОВЫЙ, ядровая, ядровое (спец.). прил. к ядро в 1 и 2 знач. Ядровая часть.
* Ядровое мыло (спец.) - лучший сорт мыла, содержащий большой процент жирных кислот.

(Толковый словарь Ушакова)

Я́ДЕРНЫЙ, ядерная, ядерное (спец.).
1. прил. к ядро в 1 и 5 знач. Ядерный сок. Ядерный вес.
2. прил., по знач. связанное с атомным ядром или с ядром клетки (физ., биол.). Ядерная физика. Ядерная структура бацилл.

(Толковый словарь Ушакова)

saahriktu ★★★★★
() автор топика
Последнее исправление: saahriktu (всего исправлений: 2)
Ответ на: комментарий от saahriktu

> cat /proc/fb

$ cat /proc/fb
0 VESA VGA

Хм. Судя по dmesg, у меня vesafb. А я думал что либо nvidiafb (карточка 7600 GT), либо nouveaufb (но у меня nouveau.ko в блэклисте). Это можно как-то выбрать, указать конкретно, что для NVIDIA там - nouveaufb, а если KMS «зарубили» то nvidiafb? И так далее для всех вендоров: для Some GPU Vendor - something-else-fb. А то похоже что у меня vesafb тупо на всё

ZenitharChampion ★★★★★
()
Ответ на: комментарий от EXL

Так ты создай багрепорт на kernel.org и прикрепи свой патч.

++

На ЛОРе-то большинству пофиг.

Дело даже не в том, что пофиг, а в том, что ЛОР — это ничтожное количество заинтересованных в вопросе пользователей.

saahriktu, нутыпонел?

mord0d ★★★★★
()
Ответ на: комментарий от ZenitharChampion

Выбрать драйвер фреймбуфера можно через командную строку ядра в загрузчике. Например:

linux /boot/linux-4.7 video=nouveaufb:1920x1080@60,mtrr=3,ywrap root=/dev/sda1
Если соответствующий модуль в блэклисте, то предварительно его, соответственно, нужно из этого блэклиста удалить.

saahriktu ★★★★★
() автор топика
Ответ на: комментарий от saahriktu

Ну, мне нужен nvidiafb, он не в блэклисте, но почему-то не «подхватился» и используется vesafb. А я думал что используется nvidiafb.
Спасибо.

ZenitharChampion ★★★★★
()
Последнее исправление: ZenitharChampion (всего исправлений: 1)
Ответ на: комментарий от saahriktu

Я поменял nouveaufb на nvidiafb, и вставил в свой конфиг. Не работает. Оказалось что # CONFIG_FB_NVIDIA is not set. Убрали из современных openSUSE - а в SLE 11 это ещё было. Ну, это и не удивительно, учитывая что nvidiafb работает максимум с GeForce 7

ZenitharChampion ★★★★★
()
Ответ на: комментарий от liberty1

Изображения в ядерной консоли если нужно можно смотреть при помощи того же fbi. Предварительно их сохранив, да.

saahriktu ★★★★★
() автор топика
Ответ на: комментарий от saahriktu

Написал же автор, что в ядре этор не работает. Значит либо оно и правда не работает, и тогда это проблема юзерспейсных приложений, которые делают дичь, либо оно по факту работает и автор ошибся.

Написать ему не пробовал?

annulen ★★★★★
()
Ответ на: комментарий от saahriktu

до меня дошло, почему у меня всё работало
нужно в конфиге ~/.config/retroarch/retroarch.cfg выставить video_driver = "sdl", тогда действительно перестанет запускаться, а по дефолту-то там gl вместо sdl стоит

liberty1
()
Ответ на: комментарий от annulen

Оно не работает на стороне ядра. А этим патчем его автор, по сути, запретил проверку доступных видеорежимов и выставление соответствующих переменных.

А свою цель автор патча выполнил. Он его внёс для того, чтобы какой-нибудь софт не начал рисовать не в том режиме, который уже соответствует актуальным видеоопциям.

saahriktu ★★★★★
() автор топика
Последнее исправление: saahriktu (всего исправлений: 1)
Ответ на: комментарий от saahriktu

А этим патчем его автор, по сути, запретил проверку доступных видеорежимов и выставление соответствующих переменных.

Значит надо было ему сразу об этом сообщить

А свою цель автор патча выполнил

Но попутно сломал нормальный сценарий использования, за такое можно даже Линусу настучать

annulen ★★★★★
()
Последнее исправление: annulen (всего исправлений: 2)
Ответ на: комментарий от ZenitharChampion

С ядром всё оказалось нормально. Это SDL1 надо было патчить. Пришлось извиняться в багзилле ядра и писать в багзиллу библиотеки SDL. Подробности здесь: Теперь дебажим SDL1; уточнение вопроса поломки работы с фреймбуфером свежих ядер .

saahriktu ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.