Dezh OS RISC-V Review Demo Transcript
Mode: short
This transcript is generated by tools/demo/run_review_demo.py.
OpenSBI v1.7
____ _____ ____ _____
/ __ \ / ____| _ \_ _|
| | | |_ __ ___ _ __ | (___ | |_) || |
| | | | '_ \ / _ \ '_ \ \___ \| _ < | |
| |__| | |_) | __/ | | |____) | |_) || |_
\____/| .__/ \___|_| |_|_____/|____/_____|
| |
|_|
Platform Name : riscv-virtio,qemu
Platform Features : medeleg
Platform HART Count : 1
Platform IPI Device : aclint-mswi
Platform Timer Device : aclint-mtimer @ 10000000Hz
Platform Console Device : uart8250
Platform HSM Device : ---
Platform PMU Device : ---
Platform Reboot Device : syscon-reboot
Platform Shutdown Device : syscon-poweroff
Platform Suspend Device : ---
Platform CPPC Device : ---
Firmware Base : 0x80000000
Firmware Size : 317 KB
Firmware RW Offset : 0x40000
Firmware RW Size : 61 KB
Firmware Heap Offset : 0x46000
Firmware Heap Size : 37 KB (total), 2 KB (reserved), 11 KB (used), 23 KB (free)
Firmware Scratch Size : 4096 B (total), 1400 B (used), 2696 B (free)
Runtime SBI Version : 3.0
Standard SBI Extensions : time,rfnc,ipi,base,hsm,srst,pmu,dbcn,fwft,legacy,dbtr,sse
Experimental SBI Extensions : none
Domain0 Name : root
Domain0 Boot HART : 0
Domain0 HARTs : 0*
Domain0 Region00 : 0x0000000000100000-0x0000000000100fff M: (I,R,W) S/U: (R,W)
Domain0 Region01 : 0x0000000010000000-0x0000000010000fff M: (I,R,W) S/U: (R,W)
Domain0 Region02 : 0x0000000002000000-0x000000000200ffff M: (I,R,W) S/U: ()
Domain0 Region03 : 0x0000000080040000-0x000000008004ffff M: (R,W) S/U: ()
Domain0 Region04 : 0x0000000080000000-0x000000008003ffff M: (R,X) S/U: ()
Domain0 Region05 : 0x000000000c400000-0x000000000c5fffff M: (I,R,W) S/U: (R,W)
Domain0 Region06 : 0x000000000c000000-0x000000000c3fffff M: (I,R,W) S/U: (R,W)
Domain0 Region07 : 0x0000000000000000-0xffffffffffffffff M: () S/U: (R,W,X)
Domain0 Next Address : 0x0000000080200000
Domain0 Next Arg1 : 0x0000000087e00000
Domain0 Next Mode : S-mode
Domain0 SysReset : yes
Domain0 SysSuspend : yes
Boot HART ID : 0
Boot HART Domain : root
Boot HART Priv Version : v1.12
Boot HART Base ISA : rv64imafdch
Boot HART ISA Extensions : sstc,zicntr,zihpm,zicboz,zicbom,sdtrig,svadu
Boot HART PMP Count : 16
Boot HART PMP Granularity : 2 bits
Boot HART PMP Address Bits : 54
Boot HART MHPM Info : 16 (0x0007fff8)
Boot HART Debug Triggers : 2 triggers
Boot HART MIDELEG : 0x0000000000001666
Boot HART MEDELEG : 0x0000000000f4b509
____ _
| _ \ ___ ___| |__
| | | |/ _ \/_ / '_ \
| |_| | __/ / /| | | |
|____/ \___//___|_| |_|
Dezh OS - capability-secure - no ambient authority
v0 - riscv64 - 126 MiB usable - 4 services
[dezh-boot] alive on bare metal (qemu virt, riscv64, S-mode)
[dezh-boot] boot contract VALIDATED
[dezh-boot] banner: dezh-kernel-boot-v0:qemu-virtio-riscv64:services=4:usable_bytes=132120576
[dezh-boot] no ambient authority: capability seeds bound to declared services only
[dezh-boot] installing trap vector + supervisor timer...
[dezh-boot] enabling Sv39 paging (U-mode confined to its own region)...
[dezh-boot] frame allocator: 28672 x 4 KiB frames (112 MiB free)
[dezh-boot] embedded user ELFs: userprog=8952 bytes, virtio-blk=82264 bytes, dezh-bench=15592 bytes, dezh-note=7080 bytes, dezh-lab=17208 bytes, dezh-calc=10440 bytes, dezh-vault=7824 bytes
[dezh-boot] install manifest v0: root=cairn block=virtio-block marker_sector=0
[dezh-boot] service registry built from boot plan (4 services)
Dezh console. Every command requires an explicit capability.
Type 'help'. The console holds: INSPECT TIME ECHO HALT SPAWN
dezh> ipc-typed-demo
[typed-ipc] demo: typed OK, BAD_REQUEST, TIMEOUT, and DENIED
[typed-ipc] PING -> 0
[kernel] task 0 exited (code 0)
[typed-ipc] BADREQ -> 4
[kernel] task 1 exited (code 0)
[typed-ipc] RECV_TIMEOUT -> 3
[kernel] task 0 exited (code 0)
[kernel] DENIED send: task 0 holds no IPC capability
[typed-ipc] no-IPC SEND -> 1
[kernel] task 0 exited (code 0)
[typed-ipc] PASS: OK=OK, BAD_REQUEST=BAD_REQUEST, TIMEOUT=TIMEOUT, DENIED=DENIED
dezh> ipcstat
ipcstat: sends=4 receives=4 denied_sends=1 timeouts=1 queue_full=0 max_depth=1
dezh> services
[services] starting virtio-block from boot registry as task 0
[virtio-blk-daemon] started as a long-lived U-mode driver service
[virtio-blk-daemon] device + DMA capabilities accepted
[services] virtio-block Running (task 0)
runtime services (4 total):
- init Init state=Declared task=18446744073709551615 caps=0x5 grants=0x0 restarts=0 last_exit=0 started_tick=0
- cairn Cairn state=Declared task=18446744073709551615 caps=0x35 grants=0x1 restarts=0 last_exit=0 started_tick=0
- wasm-runtime WasmRuntime state=Declared task=18446744073709551615 caps=0x5 grants=0x0 restarts=0 last_exit=0 started_tick=0
- virtio-block VirtioBlock state=Running task=0 caps=0x3d grants=0x3 restarts=0 last_exit=0 started_tick=0
dezh> install --dry-run
Install Plan: Dezh Root v1
[01] Probe block service ready
[02] Validate boot manifest ready
[03] Write root marker pending
[04] Initialize app registry pending
[05] Install base apps note lab calc vault
[06] Verify root/app state pending
[07] Commit install report pending
[##------------------] 14% probe block service OK
[#####---------------] 28% validate boot manifest OK
[########------------] 42% write root marker dry-run
[###########---------] 57% initialize app registry dry-run
[##############------] 71% install base apps dry-run
[#################---] 85% verify root/app state dry-run
[####################] 100% commit install report dry-run
[install-v1] dry-run complete; disk not modified
dezh> install run
Install Plan: Dezh Root v1
[01] Probe block service ready
[02] Validate boot manifest ready
[03] Write root marker pending
[04] Initialize app registry pending
[05] Install base apps note lab calc vault
[06] Verify root/app state pending
[07] Commit install report pending
[##------------------] 14% probe block service OK
[#####---------------] 28% validate boot manifest OK
[########------------] 42% write root marker running
[services] resolved service virtio-block task=0; launching foreground client
[virtio-blk-daemon] install-init: wrote marker/root metadata status=0
[vblk-client] install-init status=0
[kernel] task 1 exited (code 0)
[###########---------] 57% initialize app registry running
[services] resolved service virtio-block task=0; launching foreground client
[installer] installed note version=0.1.0 state=Active caps=PRINT,IPC root=sector:16
[vblk-client] app-install note status=0
[kernel] task 1 exited (code 0)
[##############------] 71% install base apps running
[services] resolved service virtio-block task=0; launching foreground client
[installer] installed lab version=0.1.0 state=Active caps=PRINT,IPC root=sector:17 ui=terminal workers=2
[vblk-client] app-install lab status=0
[kernel] task 1 exited (code 0)
[services] resolved service virtio-block task=0; launching foreground client
[installer] installed calc version=0.1.0 state=Active caps=PRINT,IPC root=sector:18 compute=integer
[vblk-client] app-install calc status=0
[kernel] task 1 exited (code 0)
[services] resolved service virtio-block task=0; launching foreground client
[installer] installed vault version=0.1.0 state=Active caps=PRINT,IPC root=sector:19 storage=PrivateValue
[vblk-client] app-install vault status=0
[kernel] task 1 exited (code 0)
[#################---] 85% verify root/app state running
[install-v1] verifying root marker, metadata, and base app registry
[services] resolved service virtio-block task=0; launching foreground client
[virtio-blk-daemon] install-check: installed root marker found
[vblk-client] install-check status=0
[kernel] task 1 exited (code 0)
[services] resolved service virtio-block task=0; launching foreground client
[virtio-blk-daemon] root-status: metadata read status=0
[vblk-client] root-status status=0
[vblk-client] root metadata = "DEZHROOT v0 cairn_current=2 cairn_previous=3 metadata_sector=4
[kernel] task 1 exited (code 0)
[services] resolved service virtio-block task=0; launching foreground client
[installed] note version=0.1.0 state=Active caps=PRINT,IPC root=sector:16
[installed] lab version=0.1.0 state=Active caps=PRINT,IPC root=sector:17 ui=terminal
[installed] calc version=0.1.0 state=Active caps=PRINT,IPC root=sector:18 compute=integer
[installed] vault version=0.1.0 state=Active caps=PRINT,IPC root=sector:19 storage=PrivateValue
[vblk-client] apps installed status=0
[kernel] task 1 exited (code 0)
[####################] 100% commit install report OK
Install Report: Dezh Root v1
root marker sector 0
root metadata sector 4
app registry sectors 5..10
private data sectors 16..19
required service virtio-block
policy no ambient authority
events:
TICK ACTOR ACTION TARGET RESULT
0 console install.run root-v1 start
0 installer install.dryrun root-v1 OK
0 console install.run root-v1 start
1 console app.install note start
1 installer app.install note done
1 console app.install lab start
1 installer app.install lab done
1 console app.install calc start
1 installer app.install calc done
1 console app.install vault start
1 installer app.install vault done
1 installer install.verify root-v1 done
dezh> app-permissions lab
app permissions: lab
REQUESTED PRINT IPC
GRANTED PRINT IPC
DENIED DEVICE_VIRTIO_BLK DMA BLOCK_DIRECT MMIO
STORAGE service-mediated via virtio-block daemon
dezh> app-run lab
[services] resolved service virtio-block task=0; launching foreground client
[installer] lab is installed state=Active
[vblk-client] app-require lab status=0
[kernel] task 1 exited (code 0)
[app-run] preparing lab private storage through virtio-block service
[services] resolved service virtio-block task=0; launching foreground client
[lab-storage] lab-set status=0
[vblk-client] lab-set status=0
[kernel] task 1 exited (code 0)
[app-run] launching lab UI + workers with caps=PRINT,IPC only
+--------------------------------------------------+
| Dezh Lab :: installable app system probe |
+--------------------------------------------------+
| UI terminal dashboard |
| Runtime 3 foreground U-mode tasks |
| IPC worker -> dashboard scalar messages |
| Storage private app sector via virtio service |
| Caps PRINT,IPC only; no device/DMA grant |
+--------------------------------------------------+
[lab-ui] waiting for worker signals
[lab-worker] start id=1
[lab-worker] start id=2
[lab-worker] sent signal id=1
[kernel] task 2 exited (code 0)
[lab-worker] sent signal id=2
[kernel] task 3 exited (code 0)
[lab-ui] signal from task=2
[lab-ui] payload=701
[lab-ui] signal from task=3
[lab-ui] payload=702
[lab-ui] worker signals received=2
[lab-ui] PASS: scheduler, IPC, installer launch, and UI path cooperated
[kernel] task 1 exited (code 0)
[services] resolved service virtio-block task=0; launching foreground client
[lab-storage] lab-set status=0
[vblk-client] lab-set status=0
[kernel] task 1 exited (code 0)
[services] resolved service virtio-block task=0; launching foreground client
[lab-storage] lab-get status=0
[vblk-client] lab-get status=0
[vblk-client] lab value = "lab-run-complete
[kernel] task 1 exited (code 0)
[app-run] lab exited; console returned
dezh> calc 7 + 5
[services] resolved service virtio-block task=0; launching foreground client
[installer] calc is installed state=Active
[vblk-client] app-require calc status=0
[kernel] task 1 exited (code 0)
[calc] 7 + 5 = 12
[kernel] task 1 exited (code 0)
[services] resolved service virtio-block task=0; launching foreground client
[calc-storage] calc-set status=0
[vblk-client] calc-set status=0
[kernel] task 1 exited (code 0)
dezh> calc-history
[services] resolved service virtio-block task=0; launching foreground client
[calc-storage] calc-get status=0
[vblk-client] calc-history status=0
[vblk-client] calc last = "7 + 5 = 12
[kernel] task 1 exited (code 0)
dezh> vault-put demo-secret
[services] resolved service virtio-block task=0; launching foreground client
[installer] vault is installed state=Active
[vblk-client] app-require vault status=0
[kernel] task 1 exited (code 0)
[services] resolved service virtio-block task=0; launching foreground client
[vault-storage] vault-put status=0
[vblk-client] vault-put status=0
[kernel] task 1 exited (code 0)
dezh> vault-get
[services] resolved service virtio-block task=0; launching foreground client
[vault-storage] vault-get status=0
[vblk-client] vault-get status=0
[vblk-client] vault value = "demo-secret
[kernel] task 1 exited (code 0)
dezh> app-deny vault
[app-deny] vault has no direct block grant when launched without IPC
[vault-deny] attempting block IPC without IPC cap
[kernel] DENIED send: task 1 holds no IPC capability
[vault-deny] direct block IPC denied
[kernel] task 1 exited (code 0)
[app-deny] vault has no MMIO/device grant
[vault-deny] attempting MMIO without device grant
[kernel] task 1 DENIED: faulted on 0x50000000 (outside its grant) -- killing
[app-deny] vault device/block direct access denied; console survived
dezh> svc-stop virtio-block
[services] stopping virtio-block task=0 with typed STOP
[virtio-blk-daemon] STOP received; exiting cleanly
[kernel] task 0 exited (code 0)
[kernel] task 1 exited (code 0)
[services] svc-stop virtio-block status=0 state=Stopped
dezh> read
[services] virtio-block unavailable: service is Stopped; use `svc-restart virtio-block`
[services] virtio-block unavailable; command failed cleanly
dezh> svc-restart virtio-block
[services] starting virtio-block from boot registry as task 0
[virtio-blk-daemon] started as a long-lived U-mode driver service
[virtio-blk-daemon] device + DMA capabilities accepted
[services] virtio-block Running (task 0)
[services] svc-restart virtio-block state=Running restart_count=1
dezh> write recovered
[services] resolved service virtio-block task=0; launching foreground client
[virtio-blk-daemon] CAIRN SET via IPC status=0
[vblk-client] cairn set via registered daemon status=0
[kernel] task 1 exited (code 0)
dezh> read
[services] resolved service virtio-block task=0; launching foreground client
[virtio-blk-daemon] CAIRN GET via IPC status=0
[vblk-client] cairn get via registered daemon status=0
[vblk-client] cairn current = "recovered
[kernel] task 1 exited (code 0)
dezh> svc-fault-demo virtio-block
[services] resolved service virtio-block task=0; launching foreground client
[virtio-blk-daemon] FAULT-DEMO received; exiting with fault code
[kernel] task 0 exited (code 99)
[kernel] task 1 exited (code 0)
[services] svc-fault-demo virtio-block request_status=0 state=Faulted last_exit=99
dezh> read
[services] virtio-block unavailable: service is Faulted; use `svc-restart virtio-block`
[services] virtio-block unavailable; command failed cleanly
dezh> svc-restart virtio-block
[services] starting virtio-block from boot registry as task 0
[virtio-blk-daemon] started as a long-lived U-mode driver service
[virtio-blk-daemon] device + DMA capabilities accepted
[services] virtio-block Running (task 0)
[services] svc-restart virtio-block state=Running restart_count=2
dezh> cairn-demo
[cairn-demo] F2: versioned app state, capability-gated namespaces, rollback
[cairn-demo] 1/6 two commits into ns=note (each is an object + ref move)
[cairn] v1 store formatted: superblock sector 1600, 255 commit slots
[cairn] commit ns=note slot=0 parent=none len=7 hash=0xa7d46f4c1e286c79 actor=task1
[vblk-client] cairn-commit status=0
[kernel] task 1 exited (code 0)
[cairn] commit ns=note slot=1 parent=0 len=7 hash=0xa7d46c4c1e286760 actor=task1
[vblk-client] cairn-commit status=0
[kernel] task 1 exited (code 0)
[cairn-demo] 2/6 commit log for ns=note (newest first)
[cairn] log ns=note (newest first):
slot=1 parent=0 len=7 hash=0xa7d46c4c1e286760 actor=task1 reversible=yes
slot=0 parent=none len=7 hash=0xa7d46f4c1e286c79 actor=task1 reversible=yes
[vblk-client] cairn-log status=0
[kernel] task 1 exited (code 0)
[cairn-demo] 3/6 a bad write lands
[cairn] commit ns=note slot=2 parent=1 len=15 hash=0xc8e7037cf5e1b495 actor=task1
[vblk-client] cairn-commit status=0
[kernel] task 1 exited (code 0)
[cairn] get ns=note head=2 len=15
[vblk-client] cairn-get status=0
[vblk-client] cairn value = "corrupted-write
[kernel] task 1 exited (code 0)
[cairn-demo] 4/6 rollback one step restores the previous commit
[cairn] rollback ns=note steps=1 head 2 -> 1
[cairn] history preserved: rollback moves the ref, commits stay on disk
[vblk-client] cairn-rollback status=0
[kernel] task 1 exited (code 0)
[cairn] get ns=note head=1 len=7
[vblk-client] cairn-get status=0
[vblk-client] cairn value = "note-v2
[kernel] task 1 exited (code 0)
[cairn] verify ns=note slot=1 hash MATCH 0xa7d46c4c1e286760
[vblk-client] cairn-verify status=0
[kernel] task 1 exited (code 0)
[cairn-demo] 5/6 cross-namespace access must be DENIED
[cairn-demo] client holds CAIRN_NS_vault only and requests ns=note
[cairn] DENIED: ns=note requires capability CAIRN_NS_0 sender task=1 holds caps=0x0000000000000835
[cairn] hint: grant the namespace in the app manifest / launch caps
[vblk-client] cairn-get status=1
[vblk-client] DENIED by storage service (kernel-attested caps)
[kernel] task 1 exited (code 1)
[cairn-demo] 6/6 store status
[cairn] v1 store: commit slots used=3/255 region=sectors 1600..1855
ns=note cap=CAIRN_NS_0 head=1 commits=2
ns=lab cap=CAIRN_NS_1 head=none commits=0
ns=calc cap=CAIRN_NS_2 head=none commits=0
ns=vault cap=CAIRN_NS_3 head=none commits=0
ns=agent cap=CAIRN_NS_4 head=none commits=0
[vblk-client] cairn-status status=0
[kernel] task 1 exited (code 0)
[cairn-demo] PASS: commit/log/rollback/verify OK and cross-namespace DENIED
[cairn-demo] state is on disk: after reboot, `cairn-get note` still answers
dezh> cairn-log note
[cairn] log ns=note (newest first):
slot=1 parent=0 len=7 hash=0xa7d46c4c1e286760 actor=task1 reversible=yes
slot=0 parent=none len=7 hash=0xa7d46f4c1e286c79 actor=task1 reversible=yes
[vblk-client] cairn-log status=0
[kernel] task 1 exited (code 0)
dezh> cairn-status
[cairn] v1 store: commit slots used=3/255 region=sectors 1600..1855
ns=note cap=CAIRN_NS_0 head=1 commits=2
ns=lab cap=CAIRN_NS_1 head=none commits=0
ns=calc cap=CAIRN_NS_2 head=none commits=0
ns=vault cap=CAIRN_NS_3 head=none commits=0
ns=agent cap=CAIRN_NS_4 head=none commits=0
[vblk-client] cairn-status status=0
[kernel] task 1 exited (code 0)
dezh> halt
halting.