michaelmelanson / michaelmelanson/panda-os

Service manager step 9: Service config files and boot integration test

Open
#35 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

enhancement userspace
Dominant language
Rust
Stars
0
Forks
0
PR merge metrics
No merged PRs in 30d

Description

## Summary

Add service config files for built-in services (starting with terminal) and verify the system boots correctly with the new service manager replacing the hardcoded process spawning in `init`.

This is step 9 (final step) of the service manager implementation (#26). Depends on all previous steps.

## Desired behaviour

- Add `rootfs/config/services/terminal/config.toml` (and any other built-in services)
- Remove hardcoded process spawning from `init/src/main.rs`
- System boots using the service manager: reads configs, resolves dependencies, starts services
- Terminal launches and is functional as before

## Key files

- `rootfs/config/services/terminal/config.toml` — terminal service config
- `userspace/init/src/main.rs` — replace hardcoded spawns with service manager boot
- Initrd/tarfs packaging in `Makefile` — include config files

## Example terminal config

```toml
[service]
binary = "/initrd/terminal"
dependencies = []
restart = "always"
protocol = "console"
```

## Testing

- Boot integration test: system starts, terminal is running, user can interact
- Verify `svcctl list` shows terminal as running
- Verify `svcctl stop terminal` + `svcctl start terminal` works
- Verify terminal auto-restarts if killed (restart = "always")
- Regression: ensure all existing tests still pass

## Documentation

- Add example configs for each built-in service
- Create `docs/SERVICES.md` with complete documentation
- Update README with service manager overview

Part of #26

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start with userspace/init/src/main.rs, rootfs/config/services/terminal/config.toml, and the Makefile packaging rules. Review the service manager work from steps 1–8, then run the existing tests and boot the system to check terminal startup, svcctl operations, restart behavior, and config inclusion. Done means the boot integration checks pass and the requested service examples, docs/SERVICES.md, and README update are present.

Written by the indexing model from the issue text.

Assessment

Tech stack
rust
Domain
build-system, documentation, operating-systems, testing
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.