@ecmaos/kernel 0.2.5 → 0.2.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +22 -9
- package/package.json +9 -5
package/README.md
CHANGED
|
@@ -79,10 +79,6 @@ The goal is to create a kernel and supporting apps that tie together modern web
|
|
|
79
79
|
- The main idea is that data and custom code can be loaded into it from the OS for WASM-native performance, as well as providing various utilities
|
|
80
80
|
- Confusingly, the Kernel loads the BIOS — not the other way around
|
|
81
81
|
|
|
82
|
-
- `Core`
|
|
83
|
-
- Core modules provide the system's essential functionality; this includes the kernel itself
|
|
84
|
-
- Other core modules include BIOS, Jaffa, Metal, SWAPI, as well as the main `@ecmaos/types` package
|
|
85
|
-
|
|
86
82
|
- `Commands`
|
|
87
83
|
- Commands are small utilities that aren't quite full Apps, provided by the shell
|
|
88
84
|
- Some builtin commands that exist now will be moved into separate apps over time
|
|
@@ -136,8 +132,8 @@ The goal is to create a kernel and supporting apps that tie together modern web
|
|
|
136
132
|
- See the [./MODULES.md](./MODULES.md) file for a list of community modules; submit a PR to add your module!
|
|
137
133
|
- Modules are dynamically loaded into the kernel at boot and can be enabled or disabled
|
|
138
134
|
- They are specified during build via the `VITE_KERNEL_MODULES` environment variable
|
|
139
|
-
- e.g. `VITE_KERNEL_MODULES=@ecmaos-modules/boilerplate@0.1.
|
|
140
|
-
- Versions must be
|
|
135
|
+
- e.g. `VITE_KERNEL_MODULES=@ecmaos-modules/boilerplate@0.1.0,@your/package@1.2.3`
|
|
136
|
+
- Versions must be pinned and are mandatory - you cannot use NPM version specifiers
|
|
141
137
|
- They can provide additional functionality, devices, commands, etc.
|
|
142
138
|
- They offer a [common interface](./core/types/modules.ts) for interacting with the kernel
|
|
143
139
|
- Generally they should be written in [AssemblyScript](https://www.assemblyscript.org), but this isn't required
|
|
@@ -161,6 +157,20 @@ The goal is to create a kernel and supporting apps that tie together modern web
|
|
|
161
157
|
- `Utils`
|
|
162
158
|
- Utilities and configuration used during development
|
|
163
159
|
|
|
160
|
+
## Important Files and Directories
|
|
161
|
+
|
|
162
|
+
- `/bin/`: Built-in commands
|
|
163
|
+
- `/bios/`: The BIOS filesystem
|
|
164
|
+
- `/boot/init`: A script that runs on boot
|
|
165
|
+
- `/dev/`: All devices are here
|
|
166
|
+
- `/etc/packages`: A list of installed packages to load on boot
|
|
167
|
+
- `/home/`: Contains user home directories
|
|
168
|
+
- `/proc/`: A directory containing various dynamic system information
|
|
169
|
+
- `/root/`: The home directory for the root user
|
|
170
|
+
- `/usr/bin/`: Executable packages get linked here
|
|
171
|
+
- `/usr/lib/`: All installed packages are here
|
|
172
|
+
- `/var/log/kernel.log`: The kernel log
|
|
173
|
+
|
|
164
174
|
## Command Examples
|
|
165
175
|
|
|
166
176
|
```sh
|
|
@@ -252,8 +262,9 @@ Things to keep in mind:
|
|
|
252
262
|
- Things have changed a lot since the tests were written, so they need to be updated and fixed
|
|
253
263
|
- The kernel is designed to be run in an environment with a DOM (i.e. a browser)
|
|
254
264
|
- Many features are only available on Chromium-based browsers, and many more behind feature flags
|
|
265
|
+
- There will be a lot of technical challenges to overcome, and many things will first be implemented in a non-optimal way
|
|
255
266
|
- Command interfaces won't match what you might be used to from a traditional Linux environment; not all commands and options are supported. Over time, Linuxish commands will be fleshed out and made to behave in a more familiar way.
|
|
256
|
-
- Globbing doesn't work in the terminal yet
|
|
267
|
+
- Globbing doesn't work in the terminal yet, [but is supported at the filesystem level](https://zenfs.dev/core/functions/fs.promises.glob.html)
|
|
257
268
|
|
|
258
269
|
## Development
|
|
259
270
|
|
|
@@ -269,9 +280,9 @@ git clone https://github.com/ecmaos/ecmaos.git
|
|
|
269
280
|
cd ecmaos && pnpm install
|
|
270
281
|
|
|
271
282
|
# Run the dev server
|
|
272
|
-
pnpm run dev
|
|
283
|
+
pnpm run dev:kernel
|
|
273
284
|
|
|
274
|
-
# Run the docs server
|
|
285
|
+
# Run the docs server (optional)
|
|
275
286
|
pnpm run dev:docs
|
|
276
287
|
|
|
277
288
|
# Build
|
|
@@ -285,7 +296,9 @@ pnpm run test:bench
|
|
|
285
296
|
pnpm run test:ui
|
|
286
297
|
|
|
287
298
|
# Generate modules
|
|
299
|
+
turbo gen app # generate a new app template
|
|
288
300
|
turbo gen device # generate a new device template
|
|
301
|
+
turbo gen module # generate a new module template
|
|
289
302
|
```
|
|
290
303
|
|
|
291
304
|
Also see [turbo.json](./turbo.json) and [CONTRIBUTING.md](./CONTRIBUTING.md) for more information.
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ecmaos/kernel",
|
|
3
3
|
"description": "ecmaOS: Micro-kernel and framework for web technologies",
|
|
4
|
-
"version": "0.2.
|
|
4
|
+
"version": "0.2.6",
|
|
5
5
|
"license": "MIT+Apache-2.0",
|
|
6
6
|
"homepage": "https://ecmaos.sh",
|
|
7
7
|
"repository": "https://github.com/ecmaos/ecmaos",
|
|
@@ -30,7 +30,11 @@
|
|
|
30
30
|
"Lots of unfinished work; watch your step"
|
|
31
31
|
],
|
|
32
32
|
"tips": [
|
|
33
|
-
"
|
|
33
|
+
"If it ever fails to boot, check your logs or try clearing all data",
|
|
34
|
+
"You can run some devices that offer a CLI - e.g. '/dev/battery --help'",
|
|
35
|
+
"Use the 'install' command to install packages - e.g. 'install @ecmaos-apps/news'",
|
|
36
|
+
"Use the 'news' command to see the latest news about ecmaOS",
|
|
37
|
+
"Type 'ls /bin' to see all built-in commands"
|
|
34
38
|
],
|
|
35
39
|
"type": "module",
|
|
36
40
|
"files": [
|
|
@@ -164,16 +168,16 @@
|
|
|
164
168
|
"winbox": "^0.2.82",
|
|
165
169
|
"@ecmaos/bios": "^0.1.1",
|
|
166
170
|
"@ecmaos-devices/audio": "^0.0.2",
|
|
167
|
-
"@ecmaos-devices/gamepad": "^0.0.2",
|
|
168
171
|
"@ecmaos-devices/battery": "^0.0.2",
|
|
169
|
-
"@ecmaos-devices/geo": "^0.0.2",
|
|
170
172
|
"@ecmaos-devices/bluetooth": "^0.0.2",
|
|
173
|
+
"@ecmaos-devices/gamepad": "^0.0.2",
|
|
174
|
+
"@ecmaos-devices/geo": "^0.0.2",
|
|
171
175
|
"@ecmaos-devices/gpu": "^0.0.2",
|
|
172
176
|
"@ecmaos-devices/hid": "^0.0.2",
|
|
173
177
|
"@ecmaos-devices/midi": "^0.0.2",
|
|
174
178
|
"@ecmaos-devices/presentation": "^0.0.2",
|
|
175
|
-
"@ecmaos-devices/serial": "^0.0.2",
|
|
176
179
|
"@ecmaos-devices/sensors": "^0.0.2",
|
|
180
|
+
"@ecmaos-devices/serial": "^0.0.2",
|
|
177
181
|
"@ecmaos-devices/usb": "^0.0.2",
|
|
178
182
|
"@ecmaos-devices/webgl": "^0.0.2"
|
|
179
183
|
},
|