← FAQ
FAQ

Opslag, profielmap en kluis

FAQ › EUZOS Desktop › Opslag · English

Wat is het?

De regel "niets lokaal" betekent: niets lokaal dat leesbaar is zonder in te loggen. EUZOS gebruikt 8 GiB van de interne schijf voor het systeem; de rest is partitie 2, Profielen, met één versleutelde map (een vak) per gebruiker. De sleutel van die map staat niet op de pc: hij staat in de kluis van de gebruiker op de profielserver en wordt bij het inloggen opgehaald. Zonder in te loggen toont de schijf niets anders dan een onversleutelde header (hoeveel mappen, hoe groot, wanneer laatst gebruikt).

De onderdelen:

  • Schijven: AHCI (interne SATA), NVMe (interne SSD op PCIe), virtio-blk (de schijf van een virtuele machine) en USB-opslag. Lezen mag altijd; schrijven naar of wissen van een interne schijf vraagt een getypte bevestiging en kan alleen tot de volgende herstart.
  • Partities: GPT met item 1 = EUZOS-systeem (EFI), item 2 = Profielen, item 3 = EUZOS gereserveerd.
  • Profielmap (profiledir): de versleutelde map van de ingelogde gebruiker; in de Verkenner is dat Mijn bestanden.
  • Kluis (vault): kleine geheimen van de gebruiker, versleuteld op de profielserver (de gegevenssleutel van de map, Microsoft-verversingstokens).
  • apps/: een gedeeld, ondertekend, onversleuteld vak op partitie 2 voor app-pakketten zoals Chromium (zie Bureaublad en apps).

Hoe doe ik…?

Hoe zie ik welke schijven de pc heeft?

disks: alle USB-opslag (partities, labels, de opstartstick, die beschermd is, en of hij een installatiedoel mag zijn) en de interne SATA-schijven (AHCI) en NVMe-SSD's, alleen-lezen: model, serienummer, grootte, tabel. ahci en nvme tonen de controllers in detail. Op het bureaublad toont Instellingen › Hardware processor, geheugen, opslag en apparaten.

Gebruikt EUZOS UAS (USB Attached SCSI) voor USB 3-schijven?

Ja, als het kan: een USB 3-SSD of -behuizing die UAS aanbiedt (interface 08/06/62), op een SuperSpeed-poort van een xHCI-controller met bulk streams, krijgt UAS met meerdere opdrachten tegelijk (disks toont UAS na de grootte; het opstartlog toont "UAS, N streams, depth D"). Anders, en voor behuizingen waarvan bekend is dat UAS misgaat, gebruikt het apparaat Bulk-Only Transport (BOT), zoals voorheen. Op een USB 2.0-poort wordt UAS nog niet gebruikt. Gebouwd uit de clean-room-spec docs/drivers/specs/uas.md; hardwaretest volgt.

Hoe zie ik de indeling van de opstartschijf en partitie 2?

storage (of storage plan): de opstartschijf (station, model, serienummer, grootte), de GPT, de systeemeis (8 GiB: ESP + gereserveerd; profielen vanaf sector …), de header van partitie 2 (generatie, mappen, standaardquotum, grootste vrije stuk) en, als partitie 2 ontbreekt, de precieze opdracht om hem te maken.

Hoe voeg ik partitie 2 toe aan een bestaande installatie?

Een nieuwe installatie maakt alle drie GPT-items en een lege header vanzelf. Op een oudere installatie:

  1. storage plan om te zien wat er zou gebeuren;
  2. storage create CONFIRM-<serienummer> [quota=<GiB>].

De opdracht toont de GPT voor en na. Hij schrijft alleen de GPT-sectoren (LBA 1–33 en de laatste 33 sectoren: eerst de reserve, dan de primaire, elk geflusht en teruggelezen) en de header van partitie 2. Nooit LBA 0 (de beschermende MBR) en nooit iets van partitie 1. Zonder de juiste code wordt er niets geschreven. Het standaardquotum is een kwart van de partitie, hooguit 64 GiB. quotum= is de oude schrijfwijze van quota=.

Hoe ruim ik oude profielmappen op?

storage cleanup verwijdert mappen die 90 dagen niet zijn gebruikt (dat gebeurt ook bij elke opening). Hun checkpoints worden met nullen overschreven, zodat ze zelfs met de sleutel niet meer opengaan. De open map wordt nooit verwijderd; zonder geloofwaardige klok wordt niets verwijderd.

Hoe kijk ik in mijn eigen profielmap?

profiledir (of profiledir info) toont of hij open is, de generatie, het aantal bestanden en bytes, de gebruikte blokken en de vrije ruimte. profiledir usage toont de gebruikte MiB van het quotum. profiledir list [pad], read <pad> (grootte en SHA-256), stat <pad>, en de schrijfopdrachten write, mkdir, mkdirs, delete, deltree, rename, copy werken alleen op de map van de ingelogde gebruiker. Op het bureaublad toont de Verkenner bestanden/ als Mijn bestanden; apps/ en systeem/ blijven verborgen.

Hoe test ik de versleuteling op deze pc?

profiledir test maakt een tijdelijke map van 64 MiB met een willekeurige sleutel die alleen in het geheugen staat, schrijft 4 MiB, sluit en opent opnieuw, leest terug, schrijft en leest 20 MiB in brokken van 64 KiB met SHA-256, hernoemt, probeert een verkeerde sleutel en verwijdert alles weer. Hij raakt de map van de ingelogde gebruiker nooit aan en laat niets achter.

Hoe zie of wis ik wat er in mijn kluis staat?

vault (of vault list) toont de soorten geheimen die voor de ingelogde gebruiker zijn opgeslagen, zonder inhoud en zonder account-id's. vault delete <soort> wist er één. Het wissen van opslag-sleutel is crypto-shredding: de profielmap gaat dan op geen enkele pc meer open; bij de volgende login maakt de server een nieuwe sleutel, dus een nieuwe, lege map.

Waarom kan ik niet naar een interne schijf schrijven?

De AHCI- en NVMe-drivers weigeren standaard elke schrijfopdracht (euzos_ata::allowed, libs/nvme::allowed). Voor SATA: ahci unlock <poort> WIPE-<serienummer> ontgrendelt één poort tot de herstart (nooit de opstartschijf); ahci lock <poort> vergrendelt hem weer. Voor NVMe is er geen aparte ontgrendelopdracht: alleen het installatieprogramma (install … n<nr> WIPE-<serienummer> WIPE-ALL of het grafische installatieprogramma) ontgrendelt hem. Zonder de code toont ahci unlock <poort> alleen wat de code zou zijn.

Hoe wis ik een interne SATA-schijf?

Na het ontgrendelen: ahci wipe <poort> [--thorough] WIPE-<serienummer> WIPE-ALL. Zonder de woorden toont hij alleen het plan. Snel (standaard): SANITIZE, Security Erase, TRIM die nullen teruggeeft (met een steekproef), pas daarna overschrijven. Grondig (--thorough, voor een schijf die het bedrijf verlaat): alleen SANITIZE, Security Erase of overschrijven, nooit TRIM. Daarna leest hij steekproeven terug. Als een wisbeurt onderbroken is (bijv. stroomuitval) en de schijf vergrendeld is met het tijdelijke wiswachtwoord, haalt ahci wipelock <poort> dat weg. In het installatieprogramma is dezelfde keuze snel of grondig wissen (zie Installatieprogramma).

Sinds 27-10-2026 schrijft EUZOS Engelse namen voor configuratiebestanden, sleutels, waarden en bevestigingswoorden (bijvoorbeeld WIPE-…, environment= in PROFILE.TXT); de oude Nederlandse namen (hier oud genoemd) worden nog gelezen en geaccepteerd (docs/ENGLISH.md).

Details

Indeling van de interne schijf

GPT-itemBereikInhoudToegang
1. EUZOS-systeem (EFI)1 MiB – 1 GiB + 1 MiBbootloader, kernel, firmware, sleutels van de pcalleen de kernel
3. EUZOS gereserveerdeinde ESP – 8 GiBvrij voor het systeem (A/B-kernels, app-pakketten); nog niet in gebruikniemand
2. Profielen8 GiB – eindeéén versleuteld vak per gebruikeralleen de eigen map van de gebruiker, via de kernel

De kleinste ondersteunde interne schijf is 32 GB. Partities 2 en 3 hebben eigen type-GUID's (namen EUZOS-profielen, EUZOS-gereserveerd) met de attributen "vereiste partitie" en "geen block-IO-protocol", zodat geen installatieprogramma, partitieprogramma of de Verkenner de ruimte als vrij ziet.

Header van partitie 2

Blokken 0 en 1 zijn twee kopieën (A/B) van de header, elk met SHA-256 en een generatie; de geldige met de hoogste generatie telt. Erin staan het standaardquotum en tot 56 vakken: map-id, instantie, eerste blok, aantal blokken (het quotum), dag van aanmaken en laatste gebruik, soort (1 profielmap, 2 apps/). Blokken 2 en 3 bevatten het offline-kluisje (zie Inloggen). De map-id wordt met HKDF van de gegevenssleutel afgeleid, dus mapnamen verraden niets.

Bestandssysteem en versleuteling

libs/profiledir: een copy-on-write-boom met twee checkpoints, blokken van 4 KiB. Elk blok is ChaCha20-Poly1305 (RFC 8439) met een sleutel per sessie (HKDF-SHA256, RFC 5869) en een teller als nonce; de bijbehorende gegevens binden map-id, instantie, bloknummer en versie. Elke verwijzing draagt de Poly1305-tag van het blok waarnaar ze wijst (een Merkle-boom). Schrijven is een transactie; stroomuitval laat de vorige of de nieuwe toestand achter, nooit een kapotte. De generatie wordt elke minuut en bij afmelden in de kluis bewaard (opslag-versie), zodat het terugzetten van een oude kopie van de hele map wordt opgemerkt.

Openen bij inloggen (profile_dir::on_login, eigen thread): de gegevenssleutel uit de kluis halen, de map-id berekenen, het vak zoeken of maken, de generatie controleren, de boom doorlopen. Er is hooguit één map tegelijk open. Sluiten op elk afmeldpad (profile_dir::close): sleutels uit het geheugen (gewist bij Drop), generatie naar de kluis.

Wat er in de map staat

PadWat
bestanden/Mijn bestanden (Documenten, Afbeeldingen, Downloads, Bureaublad, …)
apps/<app>//data van een Linux-app (bijv. het Chromium-profiel)
systeem/microsoft/<id>verversingstoken van een Microsoft-account
systeem/mail/<hash>mailcache (begrensd)
systeem/instellingen/browsergegevenson/off (oud aan/uit wordt nog gelezen): Instellingen › Privacy › Browsergegevens bewaren op deze pc (standaard uit)
systeem/browser/geschiedenisgeschiedenis van de EUZOS-browser (alleen als browsergegevens aan staat)

Deze paden zijn namen op schijf en blijven Nederlands.

Wat wel en niet beschermd is

Beschermd: een uitgebouwde schijf lezen zonder in te loggen; een andere gebruiker op dezelfde pc; gewijzigde, verwisselde of oude blokken; de hele map terugzetten; een op de server gewiste sleutel. Niet beschermd: schade aan de header (beschikbaarheid), wat de header verraadt (aantal, grootte, dagen), het schrijfpatroon, iemand met de sleutel en schrijftoegang, een gehackte kernel of een koudgeheugenaanval terwijl iemand is ingelogd. Zie USER-STORAGE.md.

De kluis

crate::vault roept de profielserver aan met het pc-token van de sessie. Soorten:

  • opslag-sleutel: de gegevenssleutel van 32 bytes van de profielmap. De server maakt hem bij de eerste ophaling; vanaf de pc kan hij niet worden gezet.
  • opslag-versie: de generatie van de profielmap (bescherming tegen terugzetten).
  • ms-refresh:<id>: het verversingstoken van een Microsoft-account.

Een geheim is hooguit 8 KiB. Geheimen worden bewaard in een type dat zichzelf wist; het logboek krijgt hooguit de soort, nooit de inhoud of de id. Een server zonder kluis antwoordt 404 en de pc doet dan wat hij deed voordat de kluis bestond.

Schijfdrivers

  • AHCI (kernel/src/ahci.rs, libs/ata): pas bij het eerste gebruik opgezet (ahci, disks, het installatieprogramma), niet bij het opstarten. Eén opdrachtslot, een time-out op elke wachtlus; na een fout wordt de poort opnieuw gestart. Lezen (IDENTIFY, READ DMA EXT, READ VERIFY, SMART READ DATA / RETURN STATUS) mag altijd; schrijven (WRITE DMA EXT, FLUSH, TRIM) alleen met een Unlock; SANITIZE en SECURITY ERASE alleen met een WipeOrder; al het andere nooit.
  • NVMe (kernel/src/nvme.rs, libs/nvme): hetzelfde model. Schrijven (Write, Flush, Write Zeroes, Dataset Management) alleen met een Unlock; Format NVM en Sanitize alleen met een WipeOrder. Wissen bij installatie: Format NVM met cryptografisch wissen, anders wissen van gebruikersgegevens, anders Write Zeroes, daarna een steekproef (eerste en laatste 64 sectoren en 1000 willekeurige) die EMPTY moet opleveren. Blokken van 4096 bytes werken via read-modify-write. Met Intel RST (RAID-modus) is de NVMe meestal toch als eigen apparaat zichtbaar; zit hij verborgen achter RST, dan moet de firmware op AHCI worden gezet.
  • virtio-blk (kernel/src/virtio_blk.rs, libs/virtio; ondersteund sinds 28-10-2026, QEMU/KVM en cloudservers): hetzelfde model als NVMe. Schrijven alleen na WIPE-<serienummer> WIPE-ALL (een schijf zonder serienummer wordt nooit beschreven) of binnen de opstartpartitie; de opstartschijf is nooit een doel (in make run-aarch64 start EUZOS van zijn eigen image als virtio-schijf [v0]). Wissen door de installer: overschrijven met nullen, daarna de steekproef. Zie VIRTIO.md.
  • USB-opslag en de Verkenner (libs/storage): partities (GPT, MBR of een kaal volume) en één API over FAT32 en exFAT; NTFS wordt herkend maar (nog) niet gelezen. Zie Verkenner.

Naslag

Consoleopdrachten

OpdrachtArgumentenWat het doet
disks–USB-opslag, interne SATA- en NVMe-schijven (alleen-lezen); oude naam schijven
storage[plan]GPT van de opstartschijf, systeemindeling, header van partitie 2; oude naam opslag
storage createCONFIRM-<serienummer> [quota=<GiB>]partities 2 en 3 maken op een bestaande installatie; oud maak, quotum=
storage cleanup–mappen verwijderen die 90 dagen ongebruikt zijn; oud opruimen
profiledir[info]toestand van de open map; oude naam profielmap
profiledir usage–gebruikte MiB van het quotum; oud gebruik
profiledir list[pad]een map tonen (d = map); oud lijst
profiledir read<pad>grootte en SHA-256 van een bestand; oud lees
profiledir stat<pad>soort, naam, grootte
profiledir write<pad> <tekst>tekst naar een bestand schrijven; oud schrijf
profiledir mkdir<pad>één map maken; oud map
profiledir mkdirs<pad>alle mappen van het pad maken; oud mappen
profiledir delete<pad>een bestand of lege map wissen; oud wis
profiledir deltree<pad>wissen met inhoud; oud wisboom
profiledir rename<van> <naar>hernoemen; oud hernoem
profiledir copy<van> <naar>brok voor brok kopiëren; oud kopie
profiledir data–Linux-apps met /data in de map
profiledir test–zelftest met een tijdelijke map; oud proef
vault[list]soorten in de kluis; oude naam kluis, oud lijst
vault delete<soort>één geheim wissen; oud wis
ahci–overzicht van controller en poorten
ahci identify<poort>IDENTIFY-gegevens in hex
ahci read<poort> <lba> [n]n = 1..8 sectoren in hex; oud lees
ahci unlock<poort> [WIPE-<serienummer>]ontgrendelen voor schrijven tot de herstart (nooit de opstartschijf); oud ontgrendel
ahci lock<poort>terug naar alleen-lezen; oud vergrendel
ahci writetest<poort> <lba>één sector schrijven, teruglezen, herstellen (alleen ontgrendelde poort); oud schrijftest
ahci wipe<poort> [--thorough] [WIPE-<serienummer> WIPE-ALL]de hele schijf veilig wissen; zonder de woorden alleen het plan; oud wis, --grondig
ahci wipelock<poort>het tijdelijke wiswachtwoord weghalen na een onderbroken wisbeurt; oud wisslot
nvme–controller, versie, CAP/CC/CSTS, Identify, namespace, laatste fout, tellers
nvme read<nr> <sector> [n]n = 1..8 sectoren van 512 bytes in hex (n<nr> mag ook); oud lees
nvme speed<nr> [MiB]leessnelheid (standaard 256 MiB in brokken van 1 MiB); oud snelheid
vblk–virtio-schijven: features, grootte, serienummer, wachtrij, opstartschijf, tellers (beide architecturen)
vblk read<nr> <sector> [n]n = 1..8 sectoren van 512 bytes in hex
vblk speed<nr> [MiB]sequentieel lezen en 1000 willekeurige leesacties van 4 KiB
vblk check<nr>mag deze virtio-schijf een installatiedoel zijn (nooit de opstartschijf)
vblk test<nr> WIPE-<serienummer> WIPE-ALLalleen testbuild: destructieve schrijf/flush/terugleestest op een kladschijf

ahci en nvme (en dus storage/profiledir) bestaan alleen op x86-64. Installeren op een interne schijf (install <url> a<poort>|n<nr> …) staat op de pagina Installatieprogramma.

Functies en modules

Functie / moduleRol
crate::profile_dir::on_login, profile_dir::close, profile_dir::save_generationopenen bij inloggen, sluiten bij afmelden, de generatie bewaren
crate::profile_dir::read, write, list, delete, create_dir, is_open, usagekernel-API op de map van de ingelogde gebruiker
crate::profile_dir::Channel (read, write, create_dirs, list, info, create_dir, rename, delete, delete_tree), Reader, Writertoegang per sessie, streams in brokken
crate::profile_dir::command, profile_dir::storage_commandprofiledir en storage
crate::profile_dir::open_offline, install_offline, offline_tableoffline-kluisje (offline inloggen)
crate::vault::fetch, vault::store, vault::delete, vault::list, vault::commandde kluisclient
crate::ahci::command, crate::nvme::command, crate::install::disksschijfopdrachten
euzos_ata::unlock_code, euzos_ata::confirm_code, euzos_ata::WIPE_ALL, euzos_ata::GptLock, euzos_ata::WipeModebevestigingscodes en schrijfsloten
euzos_nvme::GptLock, libs/nvme::allowedschrijfslot voor NVMe
euzos_profiledir::header, block, dir, apps, offline, dir_idpartitieheader, blokversleuteling, bestandssysteem, vak apps/, offline-kluisje
euzos_disk::gpt (read, system_layout, plan_profiles)GPT lezen en plannen
euzos_storage::partitions, Volume, safe_nameUSB-opslag voor de Verkenner

Configuratiebestanden en gegevens op schijf

WaarSleutel / inhoudBetekenis
GPT-item 2 / 3type-GUID's, namen EUZOS-profielen, EUZOS-gereserveerdpartities Profielen en gereserveerd
Partitie 2, blokken 0/1header A/Bvakken en standaardquotum
Partitie 2, blokken 2/3offline-kluisje A/Boffline inloggen
systeem/instellingen/browsergegevens (in de map)on / off (oud aan / uit)browsergegevens bewaren op deze pc

Bevestigingswoorden

WoordGebruikt doorBetekenis
WIPE-<serienummer> (oud WIS-<serienummer>)ahci unlock, ahci wipe, install … a<poort>/n<nr>precies deze interne schijf ontgrendelen (letters, cijfers en - van het serienummer; minstens 4 tekens)
WIPE-ALL (oud ALLES-WISSEN)ahci wipe, installtoestemming om alles te wissen
CONFIRM-<serienummer> (oud BEVESTIG-<serienummer>)storage createtoestemming om de GPT van de opstartschijf bij te werken
--thorough (oud --grondig)ahci wipegrondig wissen (geen TRIM)

Sinds 27-10-2026 schrijft EUZOS Engelse namen voor configuratiebestanden, sleutels, waarden en bevestigingswoorden (bijvoorbeeld WIPE-…, environment= in PROFILE.TXT); de oude Nederlandse namen (hier oud genoemd) worden nog gelezen en geaccepteerd (docs/ENGLISH.md).

API-eindpunten (gebruikt door de pc)

MethodePadDoel
GET/api/kluis?token=<pc-token>de soorten tonen (regels soort=)
GET/api/kluis/<soort>?token=…een geheim ophalen (opslag-sleutel wordt bij de eerste ophaling gemaakt)
PUT/api/kluis/<soort>?token=…een geheim opslaan
DELETE/api/kluis/<soort>?token=…een geheim wissen

Dit zijn de routes die de kernel nu aanroept: het oude Nederlandse pad /api/kluis (server/profile/src/legacy.rs). De server bedient dezelfde handlers ook onder het Engelse pad /api/vault en /api/vault/{kind} (server/profile/src/lib.rs). De volledige lijst staat op de API-pagina van de profielserver. Fouten: 401 token niet meer geldig, 404 server zonder kluis, 409 vol, 413 te groot, 429.

Protocolberichten en formaten

FormaatWaarOpmerkingen
Blok (4096 bytes)libs/profiledir/src/block.rs0..8 versie, 8..24 sessie, 24..32 teller, 32..4080 ChaCha20-inhoud, 4080..4096 Poly1305-tag
Bijbehorende gegevensidemEUZOS-PM1 ‖ map-id ‖ instantie ‖ bloknummer ‖ versie
Antwoord kluislijstcrate::vault::listregels soort=<soort> (hooguit 16 gelezen)

Zie ook