LINUX.ORG.RU

Сообщения Doctor_Nazare

 

Создание и вывод собственных символов в BIOS/Linux

Что забавно, наверное на практике эта тема никогда не пригодится, но любопытства и развития ради спросить стоит при столь скудном(по крайней мере там, где я искал) содержании ресурсов об этой теме.

Итак, хотелось бы спросить следующее: представим гипотетическую ситуацию, что, допустим была найдена очень старая книга с языком, неизвестным до сего момента и его символика не позволяют отнести его ни к каким языкам. И, допустим, есть необходимость эти символы сохранить в какой-нибудь БД. Каким образом в Linux(или при её системных вызовах кернела) может быть реализована в следствие общения с BIOS/собственных сил отдельная…Раскладка с этим языком?

Если ставить вопрос более прямо: Каким образом задаются закрашиваемые пиксели в строке при выводе определённого вывода на клавиатуре?

  1. Как именно можно реализовать локальную раскладку клавиатуры и задать ей определённый код в ASCII? И можно ли вообще?
  2. Каким образом создавались САМЫЕ ПЕРВЫЕ символы на экране? Соурсы?

 , ,

Doctor_Nazare
()

Запуск программы без операционной системы на Low-level с помощью GAS и GCC

Вопрос скорее всего чисто технический, но всё же… До недавнего времени решил разобраться с выводом через GRUB программ на экран, как именно выводятся символы, решил поиграться с драйверами и тд.
Моим первичным руководством в этом стала вот эта статейка с Habr. Меня интересует конкретно этот кусочек кода:

losetup /dev/loop2 ./hdd.img \
    --offset    `echo \`fdisk -lu /dev/loop1 | sed -n 10p | awk '{print $$3}'\`*512 | bc` \
    --sizelimit `echo \`fdisk -lu /dev/loop1 | sed -n 10p | awk '{print $$4}'\`*512 | bc`
	losetup -d /dev/loop1

Вывод терминала в этом случае:

Mounting partition to /dev/loop4...  
(standard_in) 1: syntax error  
(standard_in) 1: syntax error  
losetup: failed to parse offset: '--sizelimit': Invalid argument

Я не очень много работал с Makefile в целом, но даже если задать определённые значения, которые я вытаскивал с помощью kpartx, выдаёт ошибку так как нужны КОНКРЕТНО ЭТИ расчёты(Хотя я не понимаю, что конкретно здесь умножается под ($$3), ведь никаких перменных не для Makefile ни для таргета нет)

Поэтому, знатоки ОС и в целом, те, кто довольно неплохо разбираются со структурой MakeFile, вот вопросы:
1.«@» в таргете image –авторское дополнение или технически уместный финт? Как он обосновывается в начале каждой команды?
2. Как работает bc в целом и что в куске кода выше происходит в целом?
3. Что конкретно принтуется под $$(-n), где (-n) - какое-то число. Откуда берётся это при отсутсвии передаваемых переменных?

Для знатоков ос:
Можете ли в целом описать процесс создания загрузочного образа ядра и сопутствующие инструменты в этом? Или соурсы?

 , , , ,

Doctor_Nazare
()

Вывод графики с помощью DRI и /dev/fb0

Меня довольно давно интересовал вопрос вывода графики на Linux и то, как ИМЕННО это реализовано. И у меня появилась мысль реализовать свою граф. библиотеку с помощью низкоуровневого взаимодействия с драйверами и DRM в целом.

Взглянув на загаловки вроде fb.h можно найти структуры позволяющие взаимодействовать с экраном и тд., но у меня остаются вопросы по взаимодействию с этим

И все примеры, коих, я нашёл не так много(возможно, потому, что искал очень мало) Беря хотя бы эту статейку с вопроса на StackOverflow «Графика на чистом c++?» http://betteros.org/tut/graphics1.php многие примеры просто не запускаются из-за ошибок с mmap, например, или неправильных определений, которые почему-то на статье признаны «рабочими». Возможно, я что-то упускаю, запуская это с ядра? САМ ВОПРОС:

Предположим, мне необходимо с помощью низкоуровневых взаимодействий из юзерспейса с помощью framebuffer сделать линию, допустим, белого цвета на экране от середины левого края до середины правого. Как именно должна выглядеть реализация? Я должен открыть сам буффер,рассчитать занимаемое место в памяти экраном и…Выделить для него место? И mmap вывести записанные данные?

  1. Как реализовывается графика на linux в целом? Как в этом участвует FrameBuffer?
  2. Каким образом X-сервер выводит данные на экран?
  3. Где можно найти документации по подобного рода вопросам?Соурсы?

P.S Первая статья на Linux.org, не судите строго, буду учиться, а конструктивной критике - буду рад :)

UPD: Спустя время, подзабыв этот вопрос, смотрю на него, как на начало-начал. Для тех, кто заинтересуется подобного рода темой:

Графический стек линукс(в целом, система и взаимосвязи графики) работает на основе ресурсов видеокарты(того, что в целом, может отображать графику, как, например, фреймбуффер(/dev/fb*)). И, на основе этого работают все графические подпрограммы(то, что отображает окна на твоей ОС), вроде X-сервер, Wayland и тд., которые и дают начало всяким GTK для прикладной отрисовки. В целом, лучшие графики, которые я смог найти по этому поводу были вот в этом квалификационном документе: https://www.google.com/url?sa=t&rct=j&q=&esrc=s&source=web&cd=&cad=rja&uact=8&ved=2ahUKEwjxipXqtr77AhWzRvEDHYjzAnAQFnoECBgQAQ&url=https%3A%2F%2Foops.math.spbu.ru%2FSE%2Fdiploma%2F2017%2Fbmo%2F444-Butrova-report.pdf&usg=AOvVaw2gPxiVBjRxUTbSj4wNOrn0

Но, если вы на данный момент находитесь на системе, которая для отрисовки использует X11(X-сервер)(За иные не ручаюсь, не смотрел), то доступа к видеопамяти он вам не даст, как и использовать фреймбуффер(Что очень очевидно, но пишу для таких же недалёких как и я, что несколько радикально и дотошно относятся к этой теме) Поэтому, Ctrl-Alt-F*, для вызова другого ОС окна(Честно говоря, не знаю, как корректно описать подобное на основе TTY драйвера) на котором все примеры из ссылки выше вполне будут работать.

Что ж…Теперь пора занятся разработкой собственной граф. подпрограммы, менеджера окон и..Пожалуй, это будет чем-то вроде наиболее низкоуровнего способа отрисовки графики(практически с нуля)(поправьте, если не прав, ведь знаю про всякие API(подчеркну, API)10h на ассемблере)

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

Вопрос закрыт

 , , , ,

Doctor_Nazare
()

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