This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision | ||
tutorial:autorun_options:zh [2023/12/03 10:12] hfsr [交互式Shell启动运行脚本 (.shrc)] |
tutorial:autorun_options:zh [2023/12/03 10:20] (current) hfsr [引导启动脚本(/boot/)] |
||
---|---|---|---|
Line 85: | Line 85: | ||
下列的进入点就像“钩子”,或者脚本位置。通过这些进入点你可以在电脑启动时运行你的后台或前台应用。 | 下列的进入点就像“钩子”,或者脚本位置。通过这些进入点你可以在电脑启动时运行你的后台或前台应用。 | ||
- | ====交互式Shell启动 (.shrc)==== | + | ====交互式Shell启动(.shrc)==== |
引导启动的最后一步是加载OpenOS shell。shell会阻塞等待,直到有tty输出可用。这意味着如果没有GPU或屏幕,shell启动将会进行等待。 | 引导启动的最后一步是加载OpenOS shell。shell会阻塞等待,直到有tty输出可用。这意味着如果没有GPU或屏幕,shell启动将会进行等待。 | ||
Line 93: | Line 93: | ||
我更建议编辑`/home/.shrc`而不是`/etc/profile.lua`,仅出于有序性考虑。 | 我更建议编辑`/home/.shrc`而不是`/etc/profile.lua`,仅出于有序性考虑。 | ||
- | ====Runscripts (rc)==== | + | ====Runscripts(rc)==== |
请回顾[[api:rc:zh|RC文档]]的内容。 | 请回顾[[api:rc:zh|RC文档]]的内容。 | ||
`/bin/rc`可被用于启用开机启动脚本。RC脚本甚至在没有shell、没有GPU、没有屏幕、没有键盘的系统上也能启动。 | `/bin/rc`可被用于启用开机启动脚本。RC脚本甚至在没有shell、没有GPU、没有屏幕、没有键盘的系统上也能启动。 | ||
- | ====文件系统的Autorun脚本(autorun.lua)==== | + | ====文件系统的Autorun(autorun.lua)==== |
- | 在任何文件系统的根目录中你都可以创建名为`autorun.lua`(或者`.autorun.lua`)的文件。当文件系统组件首次被检测到,OpenOS会自动运行此文件。请注意`/home/autorun.lua`不在*rootfs*(根文件系统)的根目录中。本段所说的autorun脚本会在文件系统每次被添加到系统时都执行一次(例如,你把带有autorun脚本的软盘拔出再重新插入就会执行一次)。 | + | 在任何文件系统的根目录中你都可以创建名为`autorun.lua`(或者`.autorun.lua`)的文件。当文件系统组件首次被检测到后,OpenOS会自动运行此文件。请注意`/home/autorun.lua`不在**rootfs**(根文件系统)的根目录中。本段所说的autorun脚本会在文件系统每次被添加到系统时都执行一次(例如,你把带有autorun脚本的软盘拔出再重新插入就会执行一次)。 |
- | 此特性默认启用,并且可以在rw(可读写)模式的文件系统上禁用,方式是通过调用`filesystem.setAutorunEnabled(false)`,或者直接修改`/etc/filesystem.cfg`并加上`autorun=false`。 | + | 此特性默认启用,并且可以在安装于rw(可读写)模式文件系统的操作系统中禁用,方式是通过调用`filesystem.setAutorunEnabled(false)`,或者直接修改`/etc/filesystem.cfg`并加上`autorun=false`。 |
====引导启动脚本(/boot/)==== | ====引导启动脚本(/boot/)==== | ||
- | 此选择强烈不推荐使用,将其在此列出只是为了劝说那些不想这么做的用户放弃自己的想法。 | + | 此选择强烈不推荐使用,将其在此列出只是为了劝说那些有异议的用户放弃自己的想法。 |
OpenOS会运行`/boot/`中的引导启动脚本(按照文件名排序)供其核心操作使用。虽然可以将自定义的引导启动脚本安装到内核启动脚本中,但我们很不建议这么做。 | OpenOS会运行`/boot/`中的引导启动脚本(按照文件名排序)供其核心操作使用。虽然可以将自定义的引导启动脚本安装到内核启动脚本中,但我们很不建议这么做。 | ||
- | 安装自定义引导启动脚本(到 `/boot/` 中)会导致风险,你的引导启动脚本可能会在核心运行库还不可用时就开始运行。再当前的OpenOS版本下,我们无法保证哪怕是在你的脚本中调用 `require`的安全性,哪怕现在安全,也无法保证在未来的OpenOS更新中是否安全(因为我可能会改动引导启动顺序)。 | + | 安装自定义引导启动脚本(到`/boot/`中)会带来风险,你的引导启动脚本可能会在核心运行库还不可用时就开始运行。再当前的OpenOS版本下,我们无法保证哪怕是在你的脚本中调用`require`的安全性,哪怕现在安全,也无法保证在未来的OpenOS更新中是否安全(因为我可能会改动引导启动顺序)。 |
io功能可能没完全初始化,init进程可能也未完成初始化,甚至Lua原版库都有可能未加载完成。根据你在引导启动脚本中执行的代码不同,你甚至可能无意中绕过事件调度系统,导致系统错过组件更新。是的,引导启动过程需要负责这么多事情。 | io功能可能没完全初始化,init进程可能也未完成初始化,甚至Lua原版库都有可能未加载完成。根据你在引导启动脚本中执行的代码不同,你甚至可能无意中绕过事件调度系统,导致系统错过组件更新。是的,引导启动过程需要负责这么多事情。 | ||
- | 尽管说了这么多,此处还是给出了一些`/boot`脚本的样例,它们在当下和不远的未来可能会正常工作。在你的文件名前面加上`99_`,这样它会在引导启动流程的最后加载。如果有任何事物没能按你的预期工作(例如向stdout输出,或者从stdin读取),不意味着出现了bug而是意味着不支持。换句话说,使用 `/boot/` 脚本目录的风险自负。如果你需要stdout,你可以等待`term_available`信号。再强调一次,这不是官方支持的选择。 | + | 尽管说了这么多,此处还是给出了一些`/boot`脚本的样例,它们在当下和不远的未来可能会正常工作。请在你的文件名的开头加上`99_`,这样它会在引导启动流程的最后加载。如果有任何事物没能按你的预期工作(例如向stdout输出,或者从stdin读取),不意味着出现了bug而是意味着不支持。换句话说,使用`/boot/`脚本目录的风险自负。如果你需要stdout,你可以等待`term_available`信号。再强调一次,这不是官方支持的选择。 |
```lua | ```lua |