Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
Last revision Both sides next revision
tutorial:custom_oses:zh [2023/12/03 10:49]
hfsr [编写自制操作系统]
tutorial:custom_oses:zh [2023/12/03 10:55]
hfsr [在 BIOS 中访问组件]
Line 5: Line 5:
 引导启动 引导启动
 ------- -------
-现在唯一内置的是用来启动BIOS的“机器”。这个“机器”包装器是一个不可编辑的 Lua 脚本,负责创建沙箱和与“主机”端的东西(即 Java / Scala)的特别底层的交互。打开计算机后,将加载并运行该脚本。在建立完成沙箱环境后,它会查找 EEPROM,并尝试将其数据作为 Lua 脚本运行。如果失败,计算机将崩溃。否则,将运行该 BIOS。对于提供的 Lua BIOS(使用 EEPROM +手册制作),它将执行以前由机器本身完成的操作:+现在唯一内置的是用来启动BIOS的“机器”。这个“机器”包装器是一个不可编辑的Lua脚本,负责创建沙箱和与“主机”端事物(即Java / Scala)的特别底层的交互。电脑上电后,将加载并运行该脚本。在建立完成沙箱环境后,它会查找EEPROM,并尝试将其数据作为Lua脚本运行。如果失败,计算机将崩溃。否则,将运行该BIOS。对于模组提供的Lua BIOS(使用 EEPROM +手册制作),它将执行以前由机器本身完成的操作:
  
   - 1.它将查找先前由`computer.setBootAddress`设定的地址对应的文件系统(可通过`computer.getBootAddress`读取此地址)。   - 1.它将查找先前由`computer.setBootAddress`设定的地址对应的文件系统(可通过`computer.getBootAddress`读取此地址)。
-  - 2.在该文件系统上,它尝试加载并执行名为 `init.lua` 的文件。 +  - 2.在该文件系统上,它尝试加载并执行名为`init.lua`的文件。 
-  - 3.如果成功了,由用户脚本接管控制权。如果失败,它将遍历所有当前文件系统,再次执行步骤2,直到成功为止。 +  - 3.如果成功了,那么任务完成,由用户脚本接管控制权。如果失败,它将遍历所有当前文件系统,再次执行步骤2,直到成功为止。 
-  - 4.如果没有找到可用的 `init.lua` 脚本。计算机将崩溃并显示 `no bootable medium found` 错误.+  - 4.如果没有找到可用的`init.lua`脚本。计算机将崩溃并显示`no bootable medium found`错误.
  
-但是,由于您可以随心所欲地对 EEPROM 进行编程,因此您也可以从网络设备启动。+但是,由于您可以随心所欲地对EEPROM进行编程,因此您也可以从网络设备启动。
  
 什么可用? 什么可用?
 ----------------- -----------------
-Wiki 上记录了一些库,它们实际上是 OpenOS 的一部分,所以当你实现自己的操作系统时这些库无法使用。最值得注意的是,包括 `io``package` 和 `filesystem` 库。有关 ​init 脚本中可用内容的明确参考,请查看系统内核或[[https://​github.com/​MightyPirates/​OpenComputers/​blob/​master-MC1.12/​src/​main/​resources/​assets/​opencomputers/​lua/​machine.lua|你当前OpenComputer模组版本对应的machine.lua脚本](英文)。 以下列表不能保证完整性与/​或时效性!+Wiki 上记录了一些库,它们实际上是 OpenOS 的一部分,所以当你实现自己的操作系统时这些库无法使用。最值得注意的是,其中包括`io``package`和`filesystem`库。要获取init脚本中可用内容的明确参考,请查看系统内核代码或[[https://​github.com/​MightyPirates/​OpenComputers/​blob/​master-MC1.12/​src/​main/​resources/​assets/​opencomputers/​lua/​machine.lua|你当前OpenComputer模组版本对应的machine.lua脚本](英文)。 以下列表不能保证完整性与/​或时效性!
  
 ```lua ```lua
Line 191: Line 191:
 ``` ```
  
-在 BIOS 中访问组件+在BIOS中访问组件
 ----------------- -----------------
-与 OpenOS 不同,BIOS没有首选组件系统。这意味着不能只写 `component.redstone.setOutput`,而是必须先手动为组件创建代理对象。出于多种原因,代理对象系统是通过机器本身提供的,因此您仍然可以使用它。若要获取代理对象,请使用 `component.proxy` 方法。此函数需要你打算包装的组件地址。 您可以手动写下来,或者用 `component.list` 来获得组件的列表并从中获取。+与OpenOS不同,BIOS没有首选组件系统。这意味着不能只写`component.redstone.setOutput`,而是必须先手动为组件创建代理对象。出于多种原因,代理对象系统是通过机器本身提供的,因此您仍然可以使用它。若要获取代理对象,请使用`component.proxy`方法。此函数需要你提供打算包装的组件地址。 您可以手动写下来,或者用`component.list`来获得组件的列表并从中获取。
  
 比如说,要获得第一个红石组件,您可以执行以下操作: 比如说,要获得第一个红石组件,您可以执行以下操作:
Line 199: Line 199:
 local r = component.proxy(component.list("​redstone"​)()) local r = component.proxy(component.list("​redstone"​)())
 ``` ```
-这行代码可以工作,因为 `component.list` 返回一个 Lua 迭代器——一个可重复调用来获得下一个元素的函数,当没有元素时返回`nil`。+这行代码可以工作,因为`component.list`返回一个 Lua 迭代器——一个可重复调用来获得下一个元素的函数,当没有元素时返回`nil`。
  
 其他东西 其他东西