logic 51 Опубликовано: 23 июня, 2022 (изменено) изначально разрабатывалась под eeprom от сюда и фичи boot to external os и много плохого кода ос была портирована на скорую руку так что извините и зарепортире если работы вдруг окажется нестабильной о любых бага просьба репортить в тему функционал установка привата на робота (ака useradd) настройка автозагрузки установка одной из 2 предустановленных тем скачивания программ по url показ документации к программам перемежения/копирования/переименования программ запуск программ установка ос на диск установка с робота: перейдите в тему мода для openOS() и откройте dev устоновшик, и устоновите им micro bios, затем введите на роботе команду: mkdir /boot/kernel; wget https://raw.githubusercontent.com/igorkll/roboOS/main/source.lua /boot/kernel/roboOS -f затем переключите ос, для этого при загрузке micro bios нажмите alt найтите диск робота и выберите /boot/kernel/roboOS установка с компьютера: устоновите диск будушего и разобраного робота в компьютер перейдите туда куда ом смонтирован (обычьно /mnt/xxx (где xxx первые три буквы uuid диска)) а зачем введите команду wget https://raw.githubusercontent.com/igorkll/roboOS/main/source.lua init.lua пример программы для данной ос(круговая копалка) local robot = component.proxy(component.list("robot")()) if gui then gui.status("to exit press ctrl+c") end local sides = { bottom = 0, top = 1, back = 2, front = 3, right = 4, left = 5, unknown = 6, down = 0, up = 1, north = 2, south = 3, west = 4, east = 5, negy = 0, posy = 1, negz = 2, posz = 3, negx = 4, posx = 5, forward = 3 } local damegeWait = 0.5 ----------------------------------------------- local function interrupt(time) local e = {computer.pullSignal(time or 0.1)} if e[1] == "key_down" and e[3] == 3 and e[4] == 46 then error("terminated", 0) end end local function delay(time) local inTime = computer.uptime() while computer.uptime() - inTime < time do interrupt(time - (computer.uptime() - inTime)) end end local oldInterruptTime = computer.uptime() local function interruptTimer() if computer.uptime() - oldInterruptTime > 1 then interrupt() oldInterruptTime = computer.uptime() end end ----------------------------------------------- local function wait(event) while not event() do interruptTimer() end end local function move(side, swing, dmg) while true do interruptTimer() local detectOk, detectOut, detectType = pcall(robot.detect, side) if not detectOk or not detectOut then if robot.move(side) then break end else if swing and (dmg or detectType ~= "entity") then robot.swing(side) if damegeWait and detectType == "entity" then delay(damegeWait) end end end end end local function swing(side, dmg) local swingCount, detectOut, detectType = 0, nil, nil while true do interruptTimer() swingCount = swingCount + 1 detectOut, detectType = robot.detect(side) if detectType == "liquid" or detectType == "air" then break elseif detectType == "entity" then if not dmg then break end if not robot.swing(side) then break end delay(damegeWait) if swingCount >= 16 then break end else if not robot.swing(side) then break end if swingCount >= 4 then break end end end end local function waitEntity(side) while select(2, robot.detect(side)) == "entity" do interruptTimer() end end ----------------------------------------------- local size = 1 while true do for i = 1, 2 do for i2 = 1, size do swing(sides.up, true) swing(sides.down, true) move(sides.forward, true, true) end robot.turn(false) end size = size + 1 end демо программа демонстрирующая работу gui local docs = {[0] = "TUT OSNOVNA DOCA A UNICODE NE PODDERHITICA POTOMU CHE EKONOMIL BYTES FOR EEPROM"} local strs = {} local funcs = {} table.insert(strs, "null") table.insert(docs, "null menu point") table.insert(funcs, false) table.insert(strs, "yesno") table.insert(docs, "yesno gui element") table.insert(funcs, function() if gui.yesno("shutdown?") then computer.shutdown() end end) table.insert(strs, "yesno") table.insert(docs, "yesno gui element") table.insert(funcs, function() if gui.yesno("shutdown?") then computer.shutdown() end end) table.insert(strs, "read") table.insert(docs, "input") table.insert(funcs, function() local data = gui.read("press ctrl+c to cancel") if data then gui.warn("msg: " .. data) end end) for i = 100, 2000, 100 do table.insert(strs, tostring(i)) table.insert(docs, "test doc for menu point " .. tostring(i)) table.insert(funcs, function() computer.beep(i, 0.1) end) end gui.setData("gui test", docs, strs) local num, scroll = 1, 0 while true do num, scroll = gui.menu(num, scroll) if funcs[num] then funcs[num]() else gui.warn("is null menu point") end end документация для пользователей программы могут располагаться на любых дисках и дискетах, автозагрузка привязывается к конкретному диску и ссылается на конкретный файл а ссылка лежит на диск с установленной автозагрузкой в /roboOS/autorun.cfg настройки ос храниться в /roboOS/settings.cfg на системном диске такая система позволяет легко поставить на робота одну автозагрузочную программу а на дискету другую, причем информация о том какая программа автозагрузочная лежит на диске а не в системе, PS если хотите создать автозагрузочную дискету то создайте на ней файл /roboOS/autorun.cfg а в нем ссылка не файл на этой же дискете, например /roboOS/programs/karer/main.lua каждая программа имеет свою папку в /roboOS/programs там должен находиться файл main.lua а так же может находиться файл doc.txt с небольшим описаниям обратите внимания что при скачивании программы по url будет скачан только файл main.lua однако при входе вы сможете скачать все необходимые файлы в программу первым аргументом передаться табличка с некими данными о этой программе а конкретнее имеет в себе 2 ключа fs proxy файловой системы от куда произошёл запуск программы и file с путем до главного файла этой программы по у автозагрузки приоритет на внешние диски при запуске автозагрузочного файла у вас есть секунда на то чтобы отменить запуск и сразу попасть в меню для этого необходимо нажать alt Изменено 23 июня, 2022 пользователем rootmaster 1 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
eu_tomat 2 154 Опубликовано: 23 июня, 2022 @rootmaster А для чего процесс установки сделан таким сложным? Эта OS имеет не настолько богатый функционал, чтобы ради её установки совершать так много действий. Идеальный процесс установки OS мне видится таким: 1. Вставляем в компьютер интернет-плату, а в дисковод вставляем дискету с OpenOS. 2. Включаем компьютер и дожидаемся появления приглашения командной строки. 3. Вводим команду: wget -f https://.../installTopOS.lua /tmp/installTopOS.lua && /tmp/installTopOS.lua А дальше программа уже сама должна прошить EEPROM, найти жёсткий диск (предложить выбрать из нескольких найденных) и докачать необходимые файлы. Примерно так и сделано в MineOS, в которую ты регулярно кидаешь камни. Разные операционные системы в Майнкрафте и так-то не особо полезны в сравнении с копалками или фермами, и поэтому игрокам требуется серьёзная мотивация, чтобы хотя бы один раз запустить очередную OS. Зато простой процесс установки заметно снижает этот барьер: игроки могут установить OS даже без серьёзной мотивации, на минимальном любопытстве. 1 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
logic Автор темы 51 Опубликовано: 23 июня, 2022 30 минут назад, eu_tomat сказал: @rootmaster А для чего процесс установки сделан таким сложным? Эта OS имеет не настолько богатый функционал, чтобы ради её установки совершать так много действий. Идеальный процесс установки OS мне видится таким: 1. Вставляем в компьютер интернет-плату, а в дисковод вставляем дискету с OpenOS. 2. Включаем компьютер и дожидаемся появления приглашения командной строки. 3. Вводим команду: wget -f https://.../installTopOS.lua /tmp/installTopOS.lua && /tmp/installTopOS.lua А дальше программа уже сама должна прошить EEPROM, найти жёсткий диск (предложить выбрать из нескольких найденных) и докачать необходимые файлы. Примерно так и сделано в MineOS, в которую ты регулярно кидаешь камни. Разные операционные системы в Майнкрафте и так-то не особо полезны в сравнении с копалками или фермами, и поэтому игрокам требуется серьёзная мотивация, чтобы хотя бы один раз запустить очередную OS. Зато простой процесс установки заметно снижает этот барьер: игроки могут установить OS даже без серьёзной мотивации, на минимальном любопытстве. лол шить eeprom необязательно, это чтобы сделать dualboot roboOS и openOS Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
eu_tomat 2 154 Опубликовано: 23 июня, 2022 46 минут назад, rootmaster сказал: лол шить eeprom необязательно, это чтобы сделать dualboot roboOS и openOS А какая фраза из твоей инструкции по установке сообщает о том, что прошивка EEPROM является необязательной операцией? 3 часа назад, rootmaster сказал: установка ос на диск установка с робота: перейдите в тему мода для openOS() и откройте dev устоновшик, и устоновите им micro bios, затем введите на роботе команду: mkdir /boot/kernel; wget https://raw.githubusercontent.com/igorkll/roboOS/main/source.lua /boot/kernel/roboOS -f затем переключите ос, для этого при загрузке micro bios нажмите alt найтите диск робота и выберите /boot/kernel/roboOS установка с компьютера: устоновите диск будушего и разобраного робота в компьютер перейдите туда куда ом смонтирован (обычьно /mnt/xxx (где xxx первые три буквы uuid диска)) а зачем введите команду wget https://raw.githubusercontent.com/igorkll/roboOS/main/source.lua init.lua Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
logic Автор темы 51 Опубликовано: 23 июня, 2022 31 минуту назад, eu_tomat сказал: @rootmaster А для чего процесс установки сделан таким сложным? Эта OS имеет не настолько богатый функционал, чтобы ради её установки совершать так много действий. Идеальный процесс установки OS мне видится таким: 1. Вставляем в компьютер интернет-плату, а в дисковод вставляем дискету с OpenOS. 2. Включаем компьютер и дожидаемся появления приглашения командной строки. 3. Вводим команду: wget -f https://.../installTopOS.lua /tmp/installTopOS.lua && /tmp/installTopOS.lua А дальше программа уже сама должна прошить EEPROM, найти жёсткий диск (предложить выбрать из нескольких найденных) и докачать необходимые файлы. Примерно так и сделано в MineOS, в которую ты регулярно кидаешь камни. Разные операционные системы в Майнкрафте и так-то не особо полезны в сравнении с копалками или фермами, и поэтому игрокам требуется серьёзная мотивация, чтобы хотя бы один раз запустить очередную OS. Зато простой процесс установки заметно снижает этот барьер: игроки могут установить OS даже без серьёзной мотивации, на минимальном любопытстве. вставляешь диск в комп переходишь туда кода он смонтирован и водишь одну команду ВСЕ Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
logic Автор темы 51 Опубликовано: 23 июня, 2022 (изменено) 1 час назад, eu_tomat сказал: А какая фраза из твоей инструкции по установке сообщает о том, что прошивка EEPROM является необязательной операцией? ну.... я думал это и так понятно Изменено 23 июня, 2022 пользователем rootmaster 2 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Bumer_32 36 Опубликовано: 24 июня, 2022 (изменено) В 23.06.2022 в 17:22, rootmaster сказал: ну.... я думал это и так понятно понятно? ты серьёзно? тебе сложно написать 1 строку что это не обязательно? я ток ничерта не понял Изменено 24 июня, 2022 пользователем Bumer_32 2 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
logic Автор темы 51 Опубликовано: 26 июня, 2022 В 24.06.2022 в 22:34, Bumer_32 сказал: понятно? ты серьёзно? тебе сложно написать 1 строку что это не обязательно? я ток ничерта не понял там 2 способа установки 1) на чистый диск, 2) на готового робота в OpenOS причем так чтобы OpenOS тоже работала, первый перепрошивки eeprom не требует сгодиться обычный lua bios второй требует Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
logic Автор темы 51 Опубликовано: 15 июля, 2022 В 23.06.2022 в 14:15, eu_tomat сказал: @rootmaster А для чего процесс установки сделан таким сложным? Эта OS имеет не настолько богатый функционал, чтобы ради её установки совершать так много действий. Идеальный процесс установки OS мне видится таким: 1. Вставляем в компьютер интернет-плату, а в дисковод вставляем дискету с OpenOS. 2. Включаем компьютер и дожидаемся появления приглашения командной строки. 3. Вводим команду: wget -f https://.../installTopOS.lua /tmp/installTopOS.lua && /tmp/installTopOS.lua А дальше программа уже сама должна прошить EEPROM, найти жёсткий диск (предложить выбрать из нескольких найденных) и докачать необходимые файлы. Примерно так и сделано в MineOS, в которую ты регулярно кидаешь камни. Разные операционные системы в Майнкрафте и так-то не особо полезны в сравнении с копалками или фермами, и поэтому игрокам требуется серьёзная мотивация, чтобы хотя бы один раз запустить очередную OS. Зато простой процесс установки заметно снижает этот барьер: игроки могут установить OS даже без серьёзной мотивации, на минимальном любопытстве. а я идеальный процесс установки вижу так: запускаешь утилиту создания установочного диска на подходящей ос создаёшь установочную дискету/ставишь установщик на диск загружаешься туда с помочью биоса и либо ставишь ос на диск и установщиком, после чего установщик с него пропадет, или ставишь ос на другой диск спойлер: моя новая ос так и будет ставиться Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
eu_tomat 2 154 Опубликовано: 15 июля, 2022 1 час назад, rootmaster сказал: а я идеальный процесс установки вижу так: запускаешь утилиту создания установочного диска на подходящей ос создаёшь установочную дискету/ставишь установщик на диск загружаешься туда с помочью биоса и либо ставишь ос на диск и установщиком, после чего установщик с него пропадет, или ставишь ос на другой диск Спасибо за развёрнутый ответ. Теперь концепция ясна. Сложновато, как по мне. Но, возможно, пользователям твоих программ этот подход покажется более удобным. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
logic Автор темы 51 Опубликовано: 15 июля, 2022 Только что, eu_tomat сказал: Спасибо за развёрнутый ответ. Теперь концепция ясна. Сложновато, как по мне. Но, возможно, пользователям твоих программ этот подход покажется более удобным. пожалуйста, но прости если запутал, эта ос ставиться не так, так как этот способ меня осенил когда я ставил винду на новый ноут(в реальной жизни), я просто ответил в этой теме, и я захотел чтобы ос в игре ставилась так же как и в жизни Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
eu_tomat 2 154 Опубликовано: 15 июля, 2022 15 минут назад, rootmaster сказал: я захотел чтобы ос в игре ставилась так же как и в жизни Я, рассуждая об идеальном процессе установки, в первую очередь имел в виду комфорт пользователя. Но жанр песочницы таких требований не налагает, а позволяет, жертвуя комфортом, воссоздавать процессы, максимально приближенные к реальной жизни. Почему бы и нет? Такие программы обычно менее интересны пользователям, но кому-то интересны именно они. 2 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах