NUC-logo

Mini-PC'er

Projekter

Jeg er i gang med at flytte funktioner fra en gammel PC, som jeg bruger som server til små energisparende og støjsvage maskiner.

NX-bit

Både Fit-PC 2 og Lex Barebone understøtter NX-bitten, der sikrer, at data ikke kan afvikles som et program. Dette forhindrer en del potentielle sikkerhedsproblemer. Funktionen kræver, at High Memory Support (64GB) er aktiveret i Linux-kernen.

Hvis funktionen er aktiv, vil dette C-program give segmentfejl:


int main(void) {
        char a[10] = {0xc3};
        ((void (*)())a)();
        return 0;
}

Programmet virker på den måde, at tabellen a udfyldes med talkoden for instruktionen, ret, der afslutter et funktionskald. Tabellen udføres som en funktion. Dette virker fint uden NX-bit, men hvis NX-bitten er aktiv, forhindres det, at data i tabellen kan bruges som programkode. Programmet er fra AMD64 Linux kernel and the NX bit. Hvis programmet oversættes med clang i stedet for GCC, virker det ikke. Programmet fejler ikke når det skal.

Hardware watchdog

Med linuxkernen i version 3.3 er der kommet understøttelse af de indbyggede watchdog-funktioner i både Fit-PC 2 og VIA-chipsettet i Lex-barebone. En watchdog gennemtvinger en genstart af maskinen, hvis der ikke har været "livstegn" i et vist stykke tid. Driveren udstiller den specielle fil /dev/watchdog, og når der en gang er skrevet til denne fil, skal der skreves til den med korte mellemrum for at undgå en genstart af computeren.

Man kan bruge programmet Watchdog, til at aktivere en watchdog og holde maskinen i live, men jeg skrev mit eget program baseret på dette simple eksempel.


Tilbage til toppen af siden.
Tilbage til hovedsiden.