PRERELEASE
система вышла из бета, и вошла в пререлиз, убедильная просьба, все кому не лень хорошо протестировать likeOS и liked, о багах и ошибках репортить в тему, в лс тоже можно, то тогда другим людям не будет что почитать)) так что лучше в тему
создания прошивки для робота на ядре likeOS
скачиваем файлы likeOS
добавляем файл main.lua(это будет основной файл прошивки)
так же можно добавить файл реестра по умолчанию(например на случай, если нужно запретить работу recovery) /system/registry.dat
так же можно добавить свой логотип, который будет отображаться при загрузке и printText, для этого скопируйте файл /system/core/logo.lua в /system/logo.lua и отредактируйте его как вашей душе угодно
выводить состояния можно методом printText, если нужен более продвинутый режим, то используйте api graphic
для понимания масштабов PRERELEASE чекаем коммиты:
https://github.com/igorkll/likeOS
https://github.com/igorkll/liked
фишки ос
оболочка отдельно от ядра ос, вы можете поставить только ядро и добавить туда автозагрузочный скрипт, а можете поставить дистрибутив liked
много поточность
мульти мониторность(относиться скорее к дистрибутиву liked)
очень малый расход оперативной памяти, зачёт того что многие функции операционной системе лежит на hdd и подгружаться только в момент использования
оптимизированные функции getDeviceInfo и getKeyboards(потому что ос использует их очень часто)
авто выгрузка некоторых библиотек
liked
сможет работать на планке t2,5 даже с двумя мониторами
этот gui дистрибутив который использует api graphic ядра для работы с графикой
в liked предусмотрен dev mode для создания собственных приложений, для его активации задержите стрелку вверх
в магазине liked есть irc клиент!
как работает мульти мониторность
дистрибутив liked выводит рабочий стол только на мониторы начиная с уровня 2
на разным мониторах ос будет работать почти как разным компьютеры
для работы не требуется несколько видео карт, хотя это желательно
вы сможете запустить разные программы на разных мониторах
ос сама разберётся какую gpu к какому монитору подключить, и когда подбиньдить
отличия dev mode от user mode
dev mode
при переименовании файла расширения не переходит от пред идущего
при создании текстового файла ему автоматически не присваивается расширения txt
вы можете присвоить расширения папке
вы можете указать расширения при переименовании файла
вы получаете доступ к корню диска
вы получаете возможность заходит внутрь пакетных приложений
вы получаете возможность редактировать lua скрипты
user mode
вы не можете указывать расширения сами, оно везде присваивается автоматически
при переименовании расширения переходит от старого имени
вы не можете изменить расширения
установка ос:
для начала необходимо создать установочную дискету, запустив команду wget https://raw.githubusercontent.com/igorkll/likeOS/main/installer/openOS.lua /tmp/asd -f && /tmp/asd в openOS
затем необходимо загрузиться с дискеты на том устройстве на которое желаете поставить likeOS - liked
так же вы можете загрузиться туда через улититу install обычный openOS, просто установить дискету как обычную, но вместо установки компьютер после выбора дискеты туда загрузиться
выберите online mode/offline mode(первый загружает ос из интернета, второй с самой дискеты)
выберите дистрибутив(liked это графический дистрибутив, core only это чистая likeOS которая нечего не выведет на монитор а просто крашнеться с ошибкой computer halted)
выберите диск
согласитесь
подождите
ос установлена
предупреждения
внимания подгруздка библиотеки thread может привести в увеличению расхода энергии!
у ос очень большое потребления энергии в целом, планшет высаживает на щитаные минуты
рекомендации liked
на скорость рендера, очень сильно влеяет уровень процессора, и видеокарты, но не монитора, по этому по возможности лучще будет установить видеокарту t3 даже в планшет/компьютер с вторым монитором, и процессор t3
фишки дистрибутива liked
возможность поставить иконку на любую папку(создайте картинку с именем icon)
смена обоев рабочего стола
смена цветовой палитры монитора
показ реального времени в углу
в планах
сеть библиотека likenet создана
программа для перебрасывания файлов и папок между устройствами (частично реализовано в виде программы чат)
проверка на вмешательства в системные файлы
возможность поставить обои отдельно для конкретной папки
клиент для ocelot online
структура файловой системы
/init.lua - инициализационный файл, скоро будет содержать recovery menu для восстановления любого устройства с likeOS на основе(если recovery menu не будет отключено в реестре(реестр скоро будет добавлен))
/system - файлы дистрибутива
/system/core - файлы ядра
/system/autoruns - автозагрузка дистрибутива(для скриптов не требующих взаимодействия)
/system/main.lua - тоже автозагрузка, но предназначена для программ выполняемых в бесконечном цикле
/systen/bin - программы дистрибутива
/system/lib - библиотеки дистрибутива
/system/calls - hdd функции дистрибутива
/system/core/boot,lua - загрузчик ос
структура _ENV(может быть сложно для понимания новичкам, сложно для понимания новичкам, читать не обязательно)
_ENV в большинстве ситуаций личная, а _G общая, исключения hdd функции в которых _ENV и _G это одна таблица, и так же исключениям является рабочий стол liked который делит _ENV между рабочими столами на разных мониторах
соответственно глобалы созданные таким образом (value = 2) будут личными, а таким (_G.value = 2) общими
функция printText
функцию не будет работать если в реестре есть ключ disableLogo!
данная функцию выводит строчку на экран c использования логотипа ос
выводит изображения на все подключённые мониторы, однако использует не api graphic а прямую запись в мониторы
функцию выполняется долго, так как "рисует" одной видеокартой
функция НЕ будет работать если вы переконфигурируете графическую системму
идеально подойдёт для вывода состояния устройства прошивка которого создана на базе likeOS core
реестер:
нужен для быстрого сохранения хранения параметров на жесткий диск, которые в последствии смогут быть использованы в других программах или же самой ос
например добавив ключ реестра disableRecovery вы отключите возможность войти в recovery, а кличем disableLogo запретите работать функции printText
редактирования реестра осуществляется с использования библиотеки ядра registry, самый простой способ использования, это использовать ее как таблицу и писать значения прямо в таблицу библиотеки, а она сама запишет это на жесткий диск
RECOVERY MENU
это меню есть в ядре likeOS в следствии чего его можно будет использовать почьти во всех дистрибутивах
для входа в меню нужно нажать R при старте
это меню можно отключить добавив в реестер(lua табличка на жестком диске(/data/registry.dat)) пару ключ значения (disableRecovery = true)
в нем можно стереть данные
прошить afpx архив(главное чтоб он лежал не на сис. диске и имел расширения afpx)
запустить lua script, api из opencomputers + gpu. заранее сконфигурированная уже лежит в _ENV
посмотреть логи системы
документация(пока что не полная):
api calls
calls.call - вызов функции лежащей на hdd
calls.load - погрузка функции лежачих на hdd
calls.loaded - кеш функций, сам не заполняется, но может быть использован в некоторых случаях
calls.paths - таблица с путями по которым идет погрузка
api package
_G.require - подключить библиотеку
package.loaded - кеш библиотек
package.paths - тиблица с путями по которым идет подгрузка библиотек
api graphic
graphic.findGpu(screen) - ишет gpu для нужного экрана и подкючает ее, искать gpu нужно заного после кажного прерывания, так как она может быть "украдена"
graphic.createWindow(screen, x, y, sizeX, sizeY):windown- создает НЕ буферизированое окно на нужном экране
window:clear(color) - залить окно нужным цветов
window:write(str) - запись данных в окно
window:read(x, y, sizeX, background, foreground, preStr, crypto) - стения данных из окна, если ввод был отменен вернет true
window:uploadEvent(eventData:table):eventData:table - загружает event в окно и возврашает измененный ответ или nil
window:set(x, y, background, foreground, data) - записать строку
window:fill(x, y, sizeX, sizeY, background, foreground, char) - заливка
window:copy(x, y, sizeX, sizeY, offsetX, offsetY) -- копирует участок окна
window:setCursor/window:getCursor тоже есть, и управляют функцией write
все цвета нужно брать из таблицы gui_container.colors иначе их поведения будет неправильным(актуально для liked(gui_container это главная системная библиотека liked))
интерфейс liked