Diagnose van hardware en kernel
FAQ › EUZOS Desktop › Diagnose · English
Wat is het?
EUZOS heeft geen externe hulpmiddelen: elke blik in de pc is een consoleopdracht van de kernel zelf. Deze pagina behandelt de diagnose van de hardware (PCI, USB, chipset, ACPI/AML, accu, SDIO), van de kernel (threads, geheugen, kernen, prestaties, processen, het log, de klok, CMOS) en van onbekende apparaten (DriverEnricher), plus de opstartdiagnose en de waakhond voor vergrendelingen. De meeste opdrachten bestaan in beide edities; de uitzonderingen zijn aangegeven.
Je typt ze in de console, of via SSH (ssh <pc> '<opdracht>'; zie Console).
Hoe doe ik…?
Hoe zie ik welke hardware de pc heeft?
pci toont elk PCI-apparaat (netwerk- en wifichips gemarkeerd). usb toont elk USB-apparaat per poort, met snelheid, vendor:product en driver; usbports toont de ruwe toestand van elke USB-poort. chipset toont de PCIe-poorten van een Intel-chipset (serie 7/8/9, via RCBA).
Hoe zoek ik uit waarom een apparaat niet werkt?
drivers toont de apparaten zonder driver, precies wat DriverEnricher aan EUZOS meldt. drivers text toont de melding zoals die wordt verstuurd; drivers send verstuurt haar nu. Voor een USB-aanwijsapparaat (aanraakscherm, pen, muis) gebruik je usb hid (met all of fields voor meer). Voor ACPI-apparaten evalueert aml <pad> een object zoals \_SB.PCI0.SDHC._STA.
Hoe controleer ik de accu?
battery toont lading, toestand (laden/ontladen), stroom, spanning, resterende/volle/ontwerpcapaciteit, gezondheid, laadcycli en de netvoeding. battery read leest hem nu opnieuw; battery ec toont de bytes van de embedded controller.
Hoe zie ik wat de kernel doet?
ps toont de kernelthreads en hun toestand (met SMP een kolom core en een regel per kern). mem toont RAM, heap, threads en processen; mem processes toont per proces RAM, gedeeld geheugen, CPU-tijd en soort (handig voor Chromium). log [n] toont de laatste n regels van het log (standaard 30; via SSH alles).
Hoe gebruik ik alle processorkernen?
Die staan standaard aan (x86-64; ARM64 gebruikt één kern). smp boot off schrijft off in \EOS\FW\SMP.TXT: vanaf de volgende start één kern; smp boot on verwijdert het bestand weer. smp on start de andere kernen nu. smp toont de toestand en de reden. Start een pc niet door SMP, houd dan S ingedrukt bij het aanzetten: één kern voor die ene start, er wordt niets geschreven (docs/SMP.md, "Rescue"). Alleen x86-64.
Hoe start ik een testprogramma?
run <naam> laadt \EOS\BIN\<NAAM>.ELF van de stick en start het (hooguit 8 letters/cijfers). Zet het programma daar met ssh <pc> 'put EOS/BIN/NAAM.ELF'. process <naam> [n] start een van de ingebouwde testprogramma's in ring 3. kill <id> stopt een proces.
Hoe zet ik de klok goed?
date toont datum en tijd (UTC) en de bron (NTP of de RTC, eventueel gecorrigeerd met \EOS\FW\TIME.TXT, oude naam TIJD.TXT). date ntp haalt de tijd opnieuw van het netwerk.
Wat doe ik als een pc blijft hangen bij het opstarten?
Zet \EOS\FW\BOOTDIAG.TXT op de stick: de bootloader en de kernel tekenen dan na elke vroege fase een gekleurd blokje, zodat een foto laat zien waar het opstarten stopt. Een proefkernel (try) die 20 s op een vergrendeling vastzit, schrijft een rapport naar \EOS\HANG.TXT en start vanzelf opnieuw met de vastgezette kernel; de volgende start zet het in het log. Zie Opstarten.
Hoe herstart ik of schakel ik netjes uit?
reboot brengt elk apparaat stap voor stap tot rust, toont elke stap en bewaart de laatste in een CMOS-byte; poweroff doet hetzelfde en daarna ACPI S5. cmos toont alle CMOS-bytes en de instellingen voor herstarten. Reageert er niets meer, houd dan Ctrl+Alt+Esc 3 seconden vast: een noodherstart, die op een PS/2-toetsenbord de meeste van die stappen overslaat. Een toets loslaten breekt af, en kort indrukken doet niets.
Details
Netjes herstarten en uitschakelen
restart::before_reboot brengt de pc tot rust zoals Windows en Linux dat doen: de threads die hardware aanraken stoppen, eventueel _TTS(5), de stick wegschrijven, invoerapparaten en I2C-controllers in slaap, wifi en SDHC uit, eventueel _PTS(5), xHCI, AHCI en PCI-busmastering stoppen, interrupts uit, dan de resetmethoden. Het nummer van de laatst bereikte stap gaat in een CMOS-byte (standaard 0x7E) en wordt bij de volgende start gemeld; zo zie je of de pc voor of na de reset uitviel. poweroff leest SLP_TYPa/b uit \_S5, doet dezelfde stappen, wist de wekbronnen en schrijft PM1a/b_CNT (of het slaapregister bij hardware-reduced ACPI; PSCI SYSTEM_OFF op ARM64). Is de pc na 3 s niet uit, dan zegt het scherm dat je de aan/uit-knop ingedrukt moet houden.
DriverEnricher
Apparaten zonder werkende driver (PCI, USB, ACPI, wifichips die herkend maar niet aangestuurd worden) plus het apparaatmodel (SMBIOS), de processor en de build gaan naar de profielserver, zodat EUZOS er drivers voor kan maken. Nooit serienummers, MAC-/IP-adressen of gebruikersnamen. Eén willekeurig inventaris-id per installatie staat in \EOS\FW\DRIVERS.TXT. De thread drivers wacht 30 s na de start, op een netwerkadres en op een login (de server accepteert alleen een geldig pc-token), en verstuurt alleen als de inventaris veranderd is; opnieuw na 1, 5, 15 en 60 minuten. Automatisch melden staat standaard aan in sandbox en lokaal, uit in productie (daar alleen na toestemming, Instellingen › Privacy › "Onbekende apparaten melden aan EUZOS (DriverEnricher)").
Hardware zonder driver (alleen tellingen)
Los van DriverEnricher, en uit tenzij je het aanzet (Instellingen › Privacy › "Hardware zonder driver melden (alleen tellingen)", of drivers missing on). Eén keer per dag per id stuurt een aangemelde pc alleen de USB- of PCI-codes voor fabrikant, apparaat en klasse van hardware zonder driver: geen serienummers, namen, inventaris-id, build of model. De profielserver controleert het pc-token maar bewaart alleen een telling per code per dag, 180 dagen lang, zonder koppeling met een account of pc. drivers missing toont de melding precies zoals die verstuurd wordt. Zie docs/DRIVER-FACTORY.md.
Waakhond voor vergrendelingen
kernel/src/watchdog.rs bekijkt elke seconde de belangrijkste vergrendelingen van de kernel (scherm, netwerk, browsernetwerk, heap, fysieke pagina's, scheduler, console, log, terminal). Wordt er een 10 metingen achter elkaar door dezelfde houder op dezelfde plek vastgehouden: een rapport in het log (vergrendeling, houder, plek, wachtenden). Een vergrendeling die opnieuw wordt aangevraagd, gaat ook naar het scherm. Een proefkernel die 20 s vastzit, schrijft \EOS\HANG.TXT en herstart. Met SMP meldt een NMI-waakhond een kern die met interrupts uit blijft draaien.
Prestatieschakelaars (perf set)
perf set priority|app|grid|copy on|off schakelt opties van scheduler en compositor die gebruikt worden bij het meten van video (docs/CHROMIUM.md, "Choppy video"); perf alleen toont ze. perf set app on haalt ook de noodrem van de scheduler eraf.
Naslag
Consoleopdrachten
| Opdracht | Argumenten | Wat het doet |
|---|---|---|
pci | — | Alle PCI-apparaten; netwerk- en wifichips gemarkeerd |
usb | — | Alle USB-apparaten (xHCI en EHCI): poort, snelheid, vendor:product, naam, driver, slot; apparaten zonder driver; USB-wifi; toetsenborden, muizen, HID-aanwijsapparaten; fouten per slot |
usb hid | [all|fields] | USB-HID-aanwijsapparaten (aanraakscherm, pen, muis) in report protocol: descriptor, velden, reports, fouten; interfaces in boot protocol. Oude aliassen: alles, velden |
usbports | — | Ruwe toestand van elke USB-poort. Oude alias: usbpoorten |
chipset | — | Toestand van de PCIe-poorten (Intel-chipset met RCBA, serie 7/8/9) |
aml | — | Samenvatting van de ACPI-bytecode: tabellen, objecten, _OSI-vragen |
aml | <pad> | Een AML-object evalueren, bv. aml \_SB.PCI0.SDHC._STA (waarde, resources, tijd) |
aml log | — | De laatste 40 regels van het AML-log |
acpi | — | SCI, GPE's, EC-gebeurtenissen (_Qxx, Notify), aan/uit-knop, deksel |
battery | — | Toestand van accu en lader |
battery read | — | De accu nu opnieuw lezen. Oude alias: battery lees |
battery ec | — | De bytes van de embedded controller tonen |
sdio | — | De SD/SDIO-controller aanzetten (_STA, _PS0) en de kaart herkennen (alleen Desktop) |
smp | — | Kernen volgens de MADT, actieve kernen, trampoline, instelling bij de start, TLB-shootdowns, waakhondmeldingen, per kern (x86-64) |
smp on | — | De andere kernen nu starten. Oude alias: smp aan |
smp boot | on|off | off: off in \EOS\FW\SMP.TXT schrijven (vanaf de volgende start één kern); on: het bestand verwijderen (de standaard: alle kernen). Oude aliassen: smp opstart aan|uit |
ps | — | Kernelthreads en hun toestand |
mem | — | RAM, heap, threads, processen (en per kern met SMP) |
mem processes | — | Per proces: pid, ouder, MiB, gedeelde MiB, CPU-ms, naam, soort (x86-64). Oude alias: mem processen |
perf | — | De prestatieschakelaars tonen, daarna de startmeting |
perf video | [1-600] | Video s seconden meten (standaard 30): frames, geluid, wachttijden, pieken |
perf power | [1-3600] | Vermogen per domein (package, core, graphics, DRAM) over s seconden (standaard 1): min/gem/max watt; alleen Intel-pc's |
perf start | — | De start van Chromium meten |
perf yt | — | Diagnose van de speler in Chromium in het log (Desktop, x86-64) |
perf net | on|off | Mislukte verzoeken van Chromium in het log (Desktop, x86-64). Oude aliassen: aan, uit |
perf play | — | De video (met geluid) in Chromium starten (Desktop, x86-64). Oude alias: perf speel |
perf set | priority|app|grid|copy on|off | Een prestatieoptie schakelen. Oude aliassen: zet, voorrang, raster, kopie, aan, uit |
counter | [s] | Testthread die s seconden telt (standaard 30, max. 3600). Oude alias: teller |
counter state | — | De stand van de teller. Oude alias: counter stand |
counter busy | [s] | s seconden rekenen zonder pauze (standaard 10, max. 600; vereist een timer die threads onderbreekt). Oude alias: counter druk |
run | [+jit] [+camera] [+mic] <naam> [argumenten] | \EOS\BIN\<NAAM>.ELF starten; Linux-programma's krijgen argv; +jit, +camera, +mic geven een recht (alleen Linux-programma's, tests) (x86-64) |
process | <hello|counter|fault|cli|wx|leak|fpu|stack> [n] | Ingebouwd testprogramma in ring 3, n tegelijk (1–4) (x86-64). Oude namen: hallo, teller, fout, lek. Oude alias van de opdracht: proces |
kill | <id> | Een proces stoppen (id uit ps) (x86-64) |
package | [list] | App-pakketten in het RAM: naam, items, MiB, gebruikers, SHA-256. Oude aliassen: pakket, lijst |
package load | <naam> | \EOS\APP\<NAAM>.PAK van de stick laden. Oude alias: laad |
package receive | <naam> | Alleen via SSH: ssh <pc> 'package receive <naam>' < X.PAK. Oude alias: ontvang |
package remove | <naam> | Uit de lijst halen (weg zodra geen proces het meer gebruikt). Oude alias: weg |
package content | <naam> [map] | De bestanden in een pakket tonen. Oude alias: inhoud |
package start | <naam> <programma> [argumenten] | Een programma uit een pakket starten (glibc, dynamisch laden) |
linuxtrace | off|errors|all | Systeemaanroepen van Linux-programma's in het log. Oude aliassen: linuxspoor; uit, fouten, alles |
log | [n] | De laatste n regels van het log (standaard 30; via SSH alles) |
date | [ntp] | Datum en tijd (UTC) en hun bron; ntp: opnieuw van het netwerk halen. Oude alias: datum |
cmos | — | Alle CMOS-bytes en de instellingen voor herstarten |
reboot | — | Herstarten, elke stap op het scherm, de laatste in CMOS (nood: Ctrl+Alt+Esc 3 s vasthouden). Oude alias: herstart |
poweroff | — | ACPI S5 na dezelfde nette stappen. Oude alias: uitzetten |
drivers | — | Apparaten zonder driver, meldtoestand, model, BIOS, processor |
drivers text | — | De melding precies zoals ze wordt verstuurd. Oude alias: tekst |
drivers send | — | Nu melden (ook als automatisch melden uit staat). Oude alias: stuur |
drivers on / drivers off | — | Automatisch melden aan/uit. Oude aliassen: aan, uit |
drivers forget | — | Nieuw inventaris-id (de server ziet een nieuwe pc). Oude alias: vergeet |
Verwante diagnose op andere pagina's: ahci, nvme, disks in Opslag; input, i2c in Invoer; sound in Geluid; camera, privacy in Camera; ip, net, e1000, rtl8168, bcm in Netwerk; stick, try, commit in Opstarten.
Functies en modules
| Functie / module | Rol |
|---|---|
crate::run_command (kernel/src/main.rs) | De dispatcher van elke consoleopdracht |
crate::print_pci, crate::print_usb, crate::print_chipset | pci, usb, chipset |
crate::usb::hid_lines, crate::usb::port_lines | usb hid, usbports |
crate::pci_intel::{inspect, describe} | PCIe-poorten van een Intel-chipset |
crate::aml::command, crate::aml::bring_up_sdio | aml, sdio |
crate::sci::command | acpi |
crate::battery::command | battery |
crate::arch::smp::command | smp |
crate::sched::command, crate::sched::print_cpus | ps, regels per kern |
crate::proc::{processes_command, command, kill_command, run_command} | mem processes, process, kill, run |
crate::perf::command | perf |
crate::linux::package::command | package |
crate::linux::TRACE | Niveau van linuxtrace (0 uit, 1 fouten, 2 alles) |
crate::console::log_text | log |
crate::rtc::command, crate::net::ntp::sync | date |
crate::restart::{before_reboot, before_power_off, report_previous, configure, cmos_command} | Netjes herstarten/uitschakelen, de laatste stap van de vorige herstart melden, woorden uit RESET.TXT lezen, cmos |
crate::power_off::command | poweroff |
crate::driverenricher::{command, inventory, pci_claimed, rescan} | DriverEnricher |
crate::boot_diag::{begin, step} | Blokjes van de opstartdiagnose |
crate::watchdog | Waakhond voor vergrendelingen, HANG.TXT |
libs/driverenricher (coverage, privacy) | Wat als gedekt telt; privacyfilter; het meldingsformaat |
Configuratiebestanden
| Bestand | Sleutel / inhoud | Waarden | Betekenis |
|---|---|---|---|
\EOS\FW\SMP.TXT | inhoud | off (oud uit), on (oud aan) | off: één kern (geschreven door smp boot off). Ontbreekt, on of onbekende inhoud: alle kernen |
\EOS\FW\DRIVERS.TXT | report (oud melden) | on, off (oud aan, uit; geen regel: aan in sandbox/lokaal, uit in productie) | Automatisch melden door DriverEnricher |
\EOS\FW\DRIVERS.TXT | id | 32 hexcijfers | Willekeurig inventaris-id per installatie |
\EOS\FW\DRIVERS.TXT | missing | on, off (geen regel: uit, in elke omgeving) | Tellingen van hardware zonder driver |
\EOS\FW\DRIVERS.TXT | missing-day, missing-sent | Unix-dag; usb:vvvv:dddd (herhaald) | Wat deze pc vandaag al verstuurde |
\EOS\FW\DRIVERS.TXT | sent (oud verstuurd) | SHA-256 in hex | Vingerafdruk van de laatst verstuurde inventaris |
\EOS\FW\RESET.TXT | woorden in willekeurige volgorde | acpi kbd cf9 cf9full efi (resetmethoden), pts, tts, old, cmos=0xNN, cmos=off (oud oud, cmos=uit) | Gedrag bij herstarten: volgorde van de resetmethoden, _PTS(5), _TTS(5), de nieuwe ruststappen overslaan, CMOS-byte voor het stapnummer |
\EOS\FW\TIME.TXT (oude naam TIJD.TXT) | inhoud | minuten, bv. -120 | Verschil tussen de RTC en UTC |
\EOS\FW\BOOTDIAG.TXT | ebs=, pause=, reboot= | ebs=0..7, ms, s | Modus van de opstartdiagnose (zie docs/BOOT-DIAGNOSTICS.md) |
\EOS\HANG.TXT | (geschreven door de kernel) | tekstrapport | Rapport van een vastgelopen proefkernel; bij de volgende start gelezen en verwijderd |
\EOS\BIN\<NAAM>.ELF | — | ELF | Programma's voor run |
\EOS\APP\<NAAM>.PAK | — | pakket | App-pakketten voor package load |
Sinds 27-10-2026 schrijft EUZOS Engelse namen voor configuratiebestanden, sleutels, waarden en bevestigingswoorden (bijvoorbeeld
WIPE-…,environment=inPROFILE.TXT); de oude Nederlandse namen (hier oud genoemd) worden nog gelezen en geaccepteerd (docs/ENGLISH.md).
API-eindpunten (aangeroepen door de kernel)
| Methode | Pad | Gebruikt voor |
|---|---|---|
POST | /api/driverenricher/melding?token=<pc-token> | Melding van DriverEnricher. Oude Nederlandse route, die de kernel nog aanroept; Engelse route: /api/driverenricher/report (zie API) |
Protocolberichten en formaten
Melding van DriverEnricher (regelformaat, versie 1), text/plain; charset=utf-8; de sleutels zijn draadformaat en blijven Nederlands:
driverenricher=1
id=<inventaris-id>
build=<build>
arch=x86_64
cpu=<merknaam van de processor>
model-fabrikant=<fabrikant>
model-product=<product>
model-bios=<BIOS>
apparaat=pci|usb|acpi|wifi (één blok per apparaat)
vendor=… device=… subvendor=… subdevice=… klasse=… subklasse=… progif=… revisie=… bars=…
(usb: product=, bcd=, usbversie=, snelheid=, fabrikant=, naam=, interface=, rapport=)
Zonder geldig pc-token antwoordt de server 401 en leest hij niets. Volledig formaat, grenzen en de API voor de agent: docs/DRIVERENRICHER.md.
EUZOS