> Спасибо! Очень интересно, познавательно и просто описано!Пожалуйста! Если вам интересно, добавлю ещё немного. Моим первым линуксом был KNOPPIX в 2004 году. У меня был вполне стандартный комп для того времени: Athlon XP и GeForce 4. Удивило, что можно загрузить систему, не устанавливая её на комп. А это - вполне себе альтернатива системной дискете Windows 98... Вот только NTFS не поддерживался на запись, а значит, можно попытаться восстановить систему только на разделе FAT32.
Там я увидел браузер Mozilla 5.0, плеер XMMS, KDE 3.2, гимп, опенофис... Одна из игр, которая была в комплекте, по необъяснимой причине тормозила. Игра Chromium B.S.U. обладала простенькой графикой (2D-битэмап), примерно на уровне другой игры, которая находилась на том же диске - Enigma. Однако Enigma нормально работала.
Затем я попробовал Mandrake 10.0. Раздражали шрифты с засечками на рабочем столе, а так - всё то же самое. KDE, XMMS для аудио, mplayer для видео... Познакомился с классной программой k3b - для записи дисков.
В какой-то момент я нашёл в местной локальной сети - Linux-версию одной игры. Это игра с простенькой графикой и открытым кодом. Мне было интересно запустить на своей системе - что-то стороннее. И я никак не мог пройти один уровень - там в туннеле FPS падал до 5-10. Наал искать в интернете решение проблемы - пишут "надо установить драйвер NVIDIA". И начался квест по установке драйвера...
Скачал run-файл. И что с ним дальше делать? Мышкой нажимаю - ничего не происходит... В интернете пишут: открыть командную строку и написать "sh имя_файла". Набираю - установка запускается и пишет "я вижу, у вас загружен графический сервер. Выключите его, прежде чем продолжать установку". Мне страшно! В консоли под линуксом я ещё не работал! Под досом - да...
Набираю "init 3". Набираю "sh имя_файла". Установка завершена. Набираю "init 5". Хм, вроде ничего не изменилось... Однако игра стала выдавать 100-150 FPS вместо 20-25. И игра Chromium B.S.U. внезапно тоже забегала бодренько! Так вот почему она тормозила... Она использовала OpenGL, который всё это время был программным. А Enigma и Frozen Bubble не использовали.
Оказалось, что драйвер NVIDIA не предустанавливается в дистрибутив Linux. Причина: законодательство США. Однако существует такая штука, как национальные дистрибутивы Linux. Alt Linux и ASP Linux в России, Kurumin в Бразилии. Там драйверы с несвободной лицензией и закрытым кодом могут быть предустановлены. Mandrake по-идее тоже национальный дистрибутив (Франция), но он претендовал на популярность, а потому не включал в себя драйвер NVIDIA в стандартной поставке (однако была версия PowerPack с платными прогпраммами - там, возможно, драйвер был доступен сразу же при установке).
Мне стало интересно: как же работало 3D до этого? Оказалось, что оно работало через Mesa. Mesa - библиотека OpenGL, которая выполняет отрисовку на процессоре. Оказалось, что на сайте OpenGL нет готовых сборок библиотеки. Там лежат только спецификации, а также заголовочные файлы. Писать код библиотеки приходится производителям операционных систем. А драйвер NVIDIA стирает библиотеку libGL.so.1, которая предустановлена в систему (пакет Mesa), и устанавливает свою. Интересно получается: разработчики Mesa сделали библиотеку "под снос", которую пользователит удаляют сразу, как устанавливают систему.
После Mandrake я попробовал SUSE. Меня там удивил более крутой центр управления - YAST вместо DrakX. Ещё там был аудиоплеер Amarok, который был красивее, чем XMMS. Однако mp3 почему-то не игралось! Оказывается, на установочный CD нельзя класть не только закрытый код, но и патентованный код... Интересно, почему тогда в Mandrake mp3 играли? В общем, в SUSE нужно было подключить репозиторий Packman, а затем открыть YAST, выбрать репозиторий Packman и нажать "перевести системные пакеты на версии из этого репозитория". Несколько пакетов (libavcodec, libxine) заменялись на них же, пересобранных с "--enable-libmad". mp3 заработали.
А вот драйвер NVIDIA, который я скачал для мандрейка почему-то не ставился. Интернет говорит, что, когда выпускается новая версия ядра Linux - надо скачивать новую версию драйвера, в которой добавили поддержку нового ядра. В Мандрейке было ядро 2.6.4, в сусе - 2.6.16. Прошлый драйвер попросту не знал о существовании ядра 2.6.16, поэтому пришлось скачать заново...
Снова интересное нововведение: программа установки драйвера заверишла установку словами "Вам нужно сгенерировать конфигурационный файл /etc/X11/xorg.conf - если вы хотите, я могу сделать это прямо сейчас. Однако вы всегда можете это сделать командой nvidia-xconfig. В случае, если у вас SUSE Linux, выполните "SaX2 -m 0=nvidia". Интересно, почему SUSE требует особенного отношения? Выполнил - открылась программа по настройке видеокарт, мышек, клавиатур и тачскринов. Я выбрал просто "применить изменения".
В сусе я впервые попробовал Wine. В системе была версия 0.9.11, в то время ходила шутка, что, когда Wine достигнет версии 1.0 - наступит [censored]. Я посмотрел, какая версия Wine является последней. 0.9.30. Что ж, [censored] откладывается. Скачал, установил, и правда больше софта заработало...
На диске от журнала Linux Format мне попался диск с Kororaa 0.2. Вот треды о нём:
https://www.linux.org.ru/news/linux-general/1302351
https://www.linux.org.ru/news/linux-general/1340074
https://www.linux.org.ru/news/opensource/1659888
Загружаю. Вижу логотип NVIDIA, значит, проприетарные драйверы - мало того, что предустановлены, так ещё и автоматически настроились! Загружается рабочий стол GNOME. Непривычно - в Mandrake и SUSE я загружал GNOME только на "посмотреть". А в остальное время пользовался KDE.
В журнале пишут "потаскайте окно из стороны в сторону - оно будет желеобразным". Попробовал - действительно. "Нажмите Alt и покрутите скролл мыши - окно станет полупрозрачным". Попробовал - и правда. "Нажмите Winkey и покрутите скролл мыши - включится экранная лупа". Включилась. "Сворачивайте и разворачивайте окно - оно будет плавно сворачиваться и разворачиваться. Откройте и закройте меню - оно будет плавно появляться и исчезать". Ну и в качестве небольшого бонуса - возможность включить дождь по Shift-F9, и порисовать водой Winkey+левая кнопка мыши.
Первая мысль "а как же в фотошопе под Wine увеличивать и уменьшать изображение? В гимпе-то это делается по Ctrl, а в фотошопе по Alt". Второй вопрос: как это запустить в SUSE? Я нажал "включить XGL" - мне ответило "ваша видеокарта не поддерживается". Оказывается, нужно было установить драйвер из rpm-пакетов, а не из run-инсталлятора. Я об этом не знал. Причём не только я:
https://www.linux.org.ru/search.jsp?q=xgl+suse&range=ALL&int...
Скачивать драйвер я не стал - трафик не резиновый... Отредактировав конфигурационный файл, отключив проверку на совместимый драйвер, я запустил-таки XGL.
Затем обновление с 10.1 на 10.2. Новое ядро 2.6.18, поддержка записи на NTFS... Однако драйвер madwifi, который прекрасно собирался под 2.6.16, отказался собираться под 2.6.18. На страничке драйвера на sourceforce выложили обнову.
Потом был скандал с когда Novell и Microsoft заключили соглашения. Они касались разработки Mono (это .NET для Linux, Майкрософт помог его улучшить), OpenOffice (Майкрософт помог улучшить поддержку макросов VBA в документах Microsoft Office), Майкрософт также решил использовать SUSE на своих серверах и рабочих местах. Казалось бы, всё же хорошо, разве нет? Однако пользователей пугало сближение этих компаний. Дело в том, что Novell обладал патентами на UNIX, и если случится так, что Microsoft ими завдалеет... Будет жопа. К счастью, всё обошлось. SCO проиграла суд, а Novell успешно защитилась.
Следующим дистром выбрал Ubuntu. Версия 6.06 имела лавинообразную популярность, когда о системе, о которой раньше никто не слышал, стали говорить. Я установил версию 7.04. В журнале писали, что эта версия "разочаровывала малым количеством инноваций!". А это - на секундочку - Upstart, Jockey... Интересно, что же было в версии 6.10, что автор статьи на её фоне сказал, что этого мало...
Убунта - гном. Пришлось привыкать. Можно было поставить Kubuntu - но опять-таки, трафик не резиновый. Кстати про трафик: в этот раз установочным носителем был CD, а не DVD, поэтому предустановленных прог было мало. Я ограничился драйверами NVIDIA и madwifi, а также кодеками mp3, которые предложил мне Jockey.
Что же насчёт 3D-эффектов рабочего стола - я с удивлением узнал, что они, оказывается, называются не XGL, а Compiz! Вот это поворот! В общем, сейчас всё объясню.
Как следует из названия, XGL это X11 поверх OpenGL. Раньше OpenGL можно было запускать _внутри_ X11, например в окне. Теперь сам сервер X11 работает поверх OpenGL.
XGL делился на два компонента: Xegl и Xglx. Первый использовал EGL и позволял сделать иксы легковесными, но так и не был закончен. Сейчас вместо него - Wayland. Второй использовал GLX и являлся временным решением: рядом с XGL стартовал классический сервер X-Server. А 3D-эффекты, это Compiz, а не XGL. Но так как информации было мало, все называли эти 3D-эффекты - XGL.
В какой-то момент, разработчики прекратили разработку XGL. Причина вот: https://www.linux.org.ru/news/opensource/1035637
Разработчик из команды Fedora Team по имени Kristian Høgsberg (который потом создаст Wayland и уйдёт работать в Intel) предложил решение, как можно запустить 3D-эффекты в обычном, не патченном X-Server. Решение называется AIGLX (Accelerated Indirect GLX). https://en.wikipedia.org/wiki/AIGLX Однако существовала серьёзная проблема: AIGLX требовал для своей работы libdrm. А проприетарные драйверы с этой библиотекой не общались. Как разработчики выходили из ситуации?
NVIDIA выпустила драйвер 9625-beta с поддержкой расширения GL_EXT_texture_from_pixmap. Фактически, NVIDIA сделала свой собственный AIGLX, но без необходимости использовать libdrm (NVIDIA не использовала её по каким-то своим причинам). Причём AIGLX требовал Xorg 7.1, а NVIDIA работала даже на Xorg 6.9, фактически сделав подарок владельцам старых систем, таких как RHEL 4.
AMD продолжала использовать XGL дальше. Ради AMD, подержку XGL дотянули до Xorg 7.3. Когда же вышел драйвер Catalyst 8.8 с поддержкой AIGLX - XGL тут же выбросили из кода Xorg. Следующая версия Xorg 7.4 была уже без него.
Ну а дальше - банкротство Sun и покупка её компанией Oracle. Появление файловой системы ext4. Появление офисного пакета LibreOffice (Oracle не была заинтересована в дальнейшей разработке OpenOffice, поэтому сообщество форкнуло Go-OO - тот самый форк OpenOffice от Novell с улучшенным VBA). Появление аппаратного ускорения в Mesa (внезапно - я всегда считал, что это чисто софтварная библиотека). Об этом расскажу подробнее.
Когда я в начале текста сказал, что Mesa это чисто софтварная библиотека - я соврал. Она поддерживала аппаратное 3D, причём всё это время. Просто наиболее популярные графические карты - NVIDIA и ATi - ей не поддерживались, поэтому я не знал. Когда я только начинал осваивать Linux, интеграшек от Intel ещё не было (или я про них просто не слышал). А их драйверы использовали именно Mesa (а не свою библиотеку, как NVIDIA), которая давала им не программную, а аппаратную отрисовку.
Всё начало меняться, когда AMD купила компанию ATi. Если раньше публиковались спецификации лишь для устаревших карт - после того, как AMD возглавила компанию, спецификации стали доступны и для новых видеокарт тоже.
На рубеже 2008-2009 годов появилась новость: R600 обзавёлся аппаратным ускорением на открытом драйвере! Для того, чтобы проверить, нужно собрать ядро из GIT, libdrm из GIT, Mesa из GIT и драйвер radeon из GIT. Я всё это сделал. Это было здорово: проприетарного драйвера нет, а 3D-ускорение есть. Впрочем, в тот момент поддержка была ещё ранняя, работало не всё, но разработка продолжалась.
У меня была проблема: после каждого обновления ядра, иксы не стартовали. Оказывается, нужно было пересобрать модуль ядра под новое ядро. Это не касалось открытых драйверов - только проприетарных. Однако как я это сделаю, если передо мной - чёрный экран? Ответ: переключиться на витруальный терминал нажатием клавиш Ctrl-Alt-F1, отредактировать /etc/X11/xorg.conf, заменив драйвер NVIDIA на nv или vesa. Первый поддерживает только 2D, а второй не поддерживает даже этого, но при этом является универсальным драйвером, выпущенным под любую видеокарту PCI, AGP или PCI-E.
А в Ubuntu 8.10 появился удобный "Безопасный режим", когда драйвер vesa включался автоматически, если что-то пошло не так.
А ещё на убунтофоруме очень не любили, когда кто-то устанавливал драйвер из run-инсталлятора. "Вы же нарушаете пакетную систему!". На форуме пубилковалась команда, которая повторно устанавливает месу (apt-get с перечислением пакетов). После чего, предлагалось устанавливать драйвер NVIDIA или AMD из пакетов.
Через некоторое время я узнал, что, при установке из run-файла, драйверы NVIDIA и AMD делают бэкап файлов, которые они затирают. Запуск инсталлятора с ключом --uninstall возвращает всё как было. Искать специальную команду для удаления драйвера NVIDIA (если вы устанавливали его при помощи инсталлятора) стало не нужно.
Ну а дальше началась гибридная графика, Bumblebee. Аппаратное ускорение VDPAU, VA-API. Компьютинг на GPU: CUDA и OpenCL. Флеш плеер с поддержкой VDPAU и CrystalHD 98% сайтов с онлайн-видео использовали именно флеш), когда энтузиаст из Уфы написал враппер, позволяющий использовать аппаратное ускорение на Intel и ATi. Написали PulseAudio, дропнули HAL, дропнули GNOME2 и KDE3, форкнули их под именами MATE и TDE. Форкнули OpenAL под названием OpenAL Soft, в котором появилась поддержка EAX на аудиокартах без поддержки оного. В том числе и под Linux. Wine 1.0, Firefox 3.0, Google Chrome, электрон, дропнули нативный скайп. Steam, Wine Staging, CSMT. Прекращение разработки Cedega. Vulkan, DXVK, Proton, Steam Deck. Андроид, Chromebook, суд Microsoft с вендорами смартфонов из-за FAT. exfat-fuse, exfat-nofuse, драйвер Paragon NTFS в ядре. Дропнули Madwifi в пользу ath5k, на основе которого создан ath9k - лучший драйвер Wi-Fi под Linux. LXC, Docker, KVM, Systemd... Впрочем, это уже совсем другая история.