LINUX.ORG.RU

Сообщения X512

 

Зачем видеодрайвера в Линуксе засунули в ядро?

Форум — Talks

Вначале же было хорошо сделано с DDX драйверами и установкой видеорежима в X.Org, что более портабельно, безопасно и надёжно (падение видеодрайвера не приводит к kernel panic и его можно перезапустить). Потом зачем-то выдумали DRM-KMS с миллионами строк кода видеодрайверов в ядре прибитые гвоздями к внутренностям Линукса, так что в *BSD/Solaris и др. приходится проводить много работы чтобы портировать этот код на своё ядро. Зачем так надо было делать и вставлять палки в колёса другим ОС?

В Haiku например основная часть видеодрайвера – это динамически загружаемый модуль в пользовательском пространстве. Ядерный драйвер небольшой и отвечает за определение видеокарты, управление видеопамяти и предоставление доступа к видеокарте из пространства пользователя. Ядро не умеет устанавливать видеорежим и начальный видеорежим устанавливается загрузчиком через VESA/EFI GOP.

В Windows значительная часть видеодрайверов работает в пользовательском режиме и может быть прозрачно перезапущена с сохранением открытых окон. Из новых открытых систем в Fushia видеоподсистема работает в пространстве пользователя и реализовано аппаратное ускорение для некоторых видеокарт. В Линуксе самый устаревший и монолитный подход.

 , , ,

X512 ()

Ядро Линукс на C++

Форум — Talks

Тут человек с нуля написал своё ядро Линукс на C++ вместе со своей виртуальной машиной (и поддержкой динамической трансляции по заверению автора всего в 2-3 раза медленнее нативного кода) чтобы запустить Wine на разных платформах. До чего же Wine непортабельный что проще оказалось заморочиться с написанием своего Линукса… Проект называется Boxedwine и он достаточно портабельный чтобы запускаться на Haiku, Android, WASM, Windows.

 , , ,

X512 ()

Haiku на RISC-V плате HiFive Unmatched и ЛОРом в NetSurf

Галерея — Скриншоты

Сегодня открылся ЛОР в NetSurf в Haiku RISC-V.

С начала этого года делаю порт свободной UNIX-like операционной системы Haiku на процессорную архитектуру RISC-V (64 бит) (подробнее: My Haiku RISC-V port progress, My progress on real RISC-V hardware). Сейчас система уже неплохо работает на реальном RISC-V железе HiFive Unmatched, есть графика, сеть WiFi, поддержка многоядерности (SMP), пакеты портов собираются на самом железе, работает воспроизведение видео.

RISC-V — полностью открытая и свободная от каких либо отчислений процессорная архитектура, конкурирующая с ARM. Архитектура довольно новая и свободная от легаси вроде четырёх несовместимых наборов команд в ARM, разных MMU, и т.п.. Также архитектура очень простая и выразительная: я написал дизассеблер за два дня и минимально работающий порт Haiku за несколько недель. Для Haiku это первый рабочий порт на не x86-совместимую архитектуру. Остальные порты находятся в зачаточном состоянии без рабочего userland более 10 лет.

Компания SiFive производит открытые ядра RISC-V и готовые платы с полностью открытым программным обеспечением включая драйверы и прошивки. Я использую плату HiFive Unmatched. На плате есть шина PCIe так что можно использовать многие существующие драйвера Haiku без изменений.

Железо выглядит как-то так: раз, два.

Используемое железо:

  • Мат. плата: HiFive Unmatched.
  • Диск: Silicon Power SSD 256GB 3D TLC NAND M.2 2280 PCIe3.0×4 NVMe1.3 P34A60
  • Сеть: Intel AC 9260 M.2 WiFi
  • Видеокарта: AMD Radeon R7 250

>>> Просмотр (1920x1080, 263 Kb)

 , ,

X512 ()

Взаимодействие между программным и аппаратным рендерингом

Форум — Development

Как в тулкитах совмещается программный и аппаратный рендеринг так чтобы не было тормозов при копировании из/в видеопамять и чтобы не было избыточных буферов/копирования? Далеко не всё рисование в тулкитах делается через GPU. Можно примеры на места в коде реализации тулкитов.

В частности интересно возможно ли нарисовать буфер в RAM на OpenGL рендербуфере с клиппингом без дополнительных буферов и копирований? Буфер в RAM можно выделить с необходимым выравниванием и прочими параметрами если требуется.

 , ,

X512 ()

Bash и переменные с пробелами

Форум — Development
> export SYSLIBPATHS="-L/Haiku 64 (USB)/home/Tests/MinApp (riscv64)/sdk-riscv64/lib"
> clang "${SYSLIBPATHS}"
clang-9: error: no input files

> clang ${SYSLIBPATHS}
clang-9: error: no such file or directory: '64'
clang-9: error: no such file or directory: '(USB)/home/Tests/MinApp'
clang-9: error: no such file or directory: '(riscv64)/sdk-riscv64/lib'
clang-9: error: no input files

> export SYSLIBPATHS="\"-L/Haiku 64 (USB)/home/Tests/MinApp (riscv64)/sdk-riscv64/lib\""
> clang ${SYSLIBPATHS}
clang-9: error: no such file or directory: '"-L/Haiku'
clang-9: error: no such file or directory: '64'
clang-9: error: no such file or directory: '(USB)/home/Tests/MinApp'
clang-9: error: no such file or directory: '(riscv64)/sdk-riscv64/lib"'
clang-9: error: no input files

> clang "-L/Haiku 64 (USB)/home/Tests/MinApp (riscv64)/sdk-riscv64/lib"
clang-9: error: no input files

Почему строка в кавычках внутри переменной не работает и как сделать чтобы работало?

 

X512 ()

Генератор библиотек линковки с заглушками из .so ELF файлов

Форум — Development

Хотелось бы из *.so библиотеки сгенерировать другую библиотеку с такой же динамической таблицей символов, но без содержимого и с пустыми секциями для того чтобы использовать при компиляции программ, использующих эту библиотеку без самой библиотеки. Примерно как *.lib в Windows. Я конечно могу сам сделать, но перед тем как делать велосипед интересно узнать о существующих решениях. Также было бы неплохо, чтобы был ещё текстовый формат объявления символов и версий, чтобы из него можно было собрать библиотеку для линковки.

 , ,

X512 ()

Легковесный редактор исходного кода C++ с деревом объявлений

Форум — Development

Существуют ли такие? Для Haiku есть Pe, но под другими системами он не работает.

Требования:

  1. Быстрый запуск. Легковесность.

  2. Подсветка синтаксиса C++.

  3. Навигация по объявлениям. Должна работать для файлов вне проекта, без настроек путей заголовочных файлов и т.п.. Список должен быть в порядке объявления без сортировки по именам. Ещё хотелось бы разделитель, если между функциями две пустых строки и вывод специально форматированных комментариев (//#pragma mark <section name> в Pe).

  4. Поддержка hiDPI.

  5. Больше ничего не надо.

Не предлагать: Vim-подобное, Electron, GTK 3+, требующие онлайн аккаунты, онлайн редакторы.

Что не подходит:

  1. Notepad++. Медленно работает навигация по объявлениям, всё вешается во время генерации списка объявлений.

  2. VS Code. Часто вообще не работает навигация по объявлениям.

  3. Geany. Медленно открывает файлы. Не нашёл настройки так чтобы всегда объявления сортировались по позиции в коде, а не по имени.

  4. Kate. Нет навигации по коду. Может быть плохо искал?

  5. QtCreator. Требует аккаунт для установки. Может быть есть сторонние сборки в том числе под Windows? Что-то странное происходит при hiDPI.

  6. Netbeans/Eclipse. Запускаются целую вечность. Не работает навигация вне проекта.

 , ,

X512 ()

Противники Столлмана травят его в рабочее время, а сторонники делают больше коммитов в свободные проекты

Форум — Talks

https://habr.com/ru/post/554724/

Кампания за отмену Столлмана управляется из одного центра

Инициатива сторонников, по-видимому, децентрализована. Этим можно объяснить медленный темп набора звезд в начале и то, что звезды до сих пор добавляются - новости расходятся от свежих вовлеченных участников.

Противники Столлмана ведут кампанию в основном в рабочие дни

Противники Столлмана чаще имеют заполненные профили социальных сетей

Противники Столлмана не коммитят в гитхаб на выходных (сотрудники корпораций?)

Выходит что травлей Столлмана занимаются корпорации в рабочее время, а те, кто пишут свободный код, за Столлмана.

 , , ,

X512 ()

Предложение: добавить модераторам возможность удалять изменения заглавного поста со снятием скора

Форум — Linux-org-ru

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

Работает так: модератор удаляет изменение и возвращается предыдущая версия сообщения.

 

X512 ()

Избегание дублирования кода в Makefile

Форум — Development

Делаю эксперименты с RISC-V, написал мини-ОС на C++, которая работает в эмуляторе TinyEMU в Haiku, выглядит так. Для сборки и запуска написал Makefile:

CC = clang
CXX = clang++
AS = clang
LD = ld.lld -nostdlib

TARGETFLAGS = -target riscv64-linux -march=rv64imafdc -mcmodel=medium
CXXFLAGS += -fno-exceptions -fno-rtti -Iheaders -Ilibc/headers -I/boot/system/develop/tools/x86/lib/gcc/i586-pc-haiku/8.3.0/include/c++ -I/boot/system/develop/tools/x86/lib/gcc/i586-pc-haiku/8.3.0/include/c++/i586-pc-haiku
ASFLAGS += $(TARGETFLAGS)


Startup.bin: Startup
	llvm-objcopy -O binary Startup Startup.bin

Startup: Startup.ld objs/Startup.o objs/Vecs.o objs/Graphics.o objs/Font.o objs/Virtio.o objs/Threads.o objs/Timers.o libc/objs/setjmp.o libc/objs/string.o libc/objs/memcpy.o libc/objs/memset.o libc/objs/malloc.o Startup.ld
	$(LD) -T Startup.ld --export-dynamic objs/Startup.o objs/Vecs.o objs/Graphics.o objs/Font.o objs/Virtio.o objs/Threads.o objs/Timers.o libc/objs/setjmp.o libc/objs/string.o libc/objs/memcpy.o libc/objs/memset.o libc/objs/malloc.o -o Startup

objs/%.o: src/%.cpp
	$(CXX) $(TARGETFLAGS) $(CXXFLAGS) -MF"deps/$*.d" -MD -c $< -o $@
objs/%.o: src/%.S
	$(AS) $(TARGETFLAGS) $(ASFLAGS) -MF"deps/$*.d" -MD -c $< -o $@
libc/objs/%.o: libc/src/%.cpp
	$(CXX) $(TARGETFLAGS) $(CXXFLAGS) -MF"libc/deps/$*.d" -MD -c $< -o $@
libc/objs/%.o: libc/src/%.S
	$(AS) $(TARGETFLAGS) $(ASFLAGS) -MF"libc/deps/$*.d" -MD -c $< -o $@

run: Startup.bin
	temu -rw tinyemu.cfg

-include deps/*.d libc/deps/*.d

clean:
	rm -f objs/* deps/* libc/objs/* libc/deps/* Startup Startup.bin

В нём много дублирования кода. Есть способы сокращения дублирования? Autotools не предлагать.

 

X512 ()

Перестала работать индикация новых сообщений в теме

Форум — Linux-org-ru

Это у одного меня так? Вроде бы браузер не обновлял, настроек не менял. Под индикацией я понимаю появление ссылки «Обновить» внизу при появлении новых сообщений.

 

X512 ()

Выключить в Firefox переход в полноэкранный режим через JavaScript

Форум — Desktop

Я почти никогда не пользуюсь полноэкранным режимом в том числе для игр. Некоторые веб-видеоплееры (YouTube и т.п.) переходят в полноэкранный режим по двойному клику, я хочу это выключить ибо раздражает. Как это сделать?

 ,

X512 ()

Отправить патч через Git без изменений файлов

Форум — Development

Есть проект куда патчи принимаются только через Git, проект на Gerrit. Возможно ли отправить патч не изменяя локальные файлы? Изменение локальных файлов ломает инкрементальную сборку, сборка с нуля занимает примерно 2 часа а инкрементальная сборка 1-2 минуты. Делать копию исходников не вариант, исходники занимают несколько гигабайт и уже используется sparse checkout. Проект использует линейную историю без веток, все патчи rebase’ятся. Отправлять текущую ветку напрямую нельзя, т.к. там есть коммиты, которые не надо отправлять.

Сейчас делается как-то так:

git checkout publish
git reset --hard origin/master
git am <patch list>
git push origin HEAD:refs/for/master
git checkout master

 , ,

X512 ()

Как работают композиторы

Форум — Development

Есть ли статьи описывающие работу композиторов в Линуксе (Wayland и т.п.)? Интересует механизм синхронизации отрисовки (vsync), как происходит перерисовка (обмен (swap) буферами или копирование заднего буфера в передний, перерисовывается всё при каждом изменении или отслеживается изменяемая область), обмен буферами между процессами, взаимодействие с Mesa.

 , , ,

X512 ()

Разрешённые символы в /etc/passwd

Форум — Development

Экспериментируя с поддержкой нескольких пользователей в Haiku обнаружил что если в полях пользователя есть символ «:», то создаётся битый файл /etc/passwd (#16611). Система не должна допускать порчу базы пользователей при создании пользователя. Есть ли список запрещённых символов в /etc/passwd, есть механизмы экранирования? В man не могу ничего найти по этой теме кроме того, что почему-то в имени пользователя запрещены большие буквы.

 ,

X512 ()

Собрать X.Org с окном SDL в качестве экрана

Форум — Development

Как собрать X.Org так, чтобы его можно было запустить в окне, а не на физическом экране? Окно желательно SDL, но можно и что-нибудь другое. В зависимостях, включая зависимости сборки, не должно быть libdrm, libpciaccess, mesa и т.п.. Поддержка OpenGL и аппаратного ускорения не обязательна.

Поиск в основном даёт вариант наоборот: сборку SDL под X11.

 ,

X512 ()

Зачем придумали GTK3?

Форум — Talks

Почему нельзя было развивать GTK2? Какие в нём были проблемы, требующие фундаментальной переработки с потерей совместимости? Выпуск GTK3 привёл к расколу GUI программ. У меня тоже есть программы на GTK2.

В Windows почему-то умеют поддерживать обратную совместимость. Программы для Windows 1.0 до сих пор работают на Windows 10 (на 32 битах нативно, а на 64 битах требуется 16 битный эмулятор winevdm). В WinApi не было фундаментальных изменений с времён Windows 1.0, даже соответствующим образом написанные 16 битные программы можно перекомпилировать под 64 бита. При этом он намного гибче всех Линуксовских тулкитов, можно обрабатывать окна в разных потоках, вставлять дочерние окна из другого процесса, рекурсивно вызывать цикл обработки сообщений.

Qt в целом выглядит стабильнее GTK. Большинство программ с минимальными изменениями можно перенести на новую версию.

Перемещено leave из desktop

 , , ,

X512 ()

Медленно масштабируются X11 окна

Форум — Desktop

Программы на голом протоколе X11 или Motif (xclock, acme, nedit) медленно меняют размер окна и содержимое дёргается. С программами на Qt/GTK такого не наблюдается. Кто нибудь знает, чем это вызвано? X.Org сломали?

openSUSE, KDE

 ,

X512 ()

Зачем компилировать ядро?

Форум — General

Часто пишут про компилирование ядра для поддержки разного оборудования. Зачем это делать если есть динамически загружаемые модули ядра и можно собрать только необходимые модули, а ядро оставить как есть? Когда вообще возникает необходимость компилировать ядро кроме сборки или обновления системы из исходников?

 , ,

X512 ()

Форумная система не на основе Web

Форум — Talks

Бывает ли такая система, что есть сервер с темами и сообщениями и клиент приложение (обычное GUI приложение, не Web), которое показывает сообщения на сервере а также позволяет писать сообщения после регистрации?

Электронная почта позволяет читать только сообщения своего аккаунта. Списки рассылки не позволяют читать сообщения в клиенте до момента подписки, а также они неэффективно устроены.

Предполагается центральный сервер и возможность анонимного доступа. Сообщения публично доступны, шифрование кроме SSL не требуется.

 , ,

X512 ()

RSS подписка на новые темы