Hi !
Ich habe ein etwas seltsames Verhalten:
Wenn ich diesen C code benutze um brutal ein Power off zu triggern funktioniert das bei laufendem Linux, aber nicht wenn das binary beim booten als init ersatz direkt vom kernel gestartet wird:
int do_halt()
{
sync();
fprintf(stderr,"nfiwrite is halting ...\n");
sleep(2);
sync();
sleep(2);
// reboot(RB_HALT_SYSTEM);
reboot(RB_POWER_OFF);
// reboot(RB_HALT_SYSTEM | RB_POWER_OFF );
sleep(5);
return 0;
}
Alles anzeigen
Ein reboot funktioniert aber sehr wohl:
int do_reboot()
{
sync();
fprintf(stderr,"nfiwrite is rebooting ...\n");
sleep(2);
sync();
sleep(2);
reboot(RB_AUTOBOOT);
return 0;
}
/sys /proc und /dev mountet sich das Binary auch, weil es vorher noch schnell ein nfi image flasht, nur wenn es fertig ist sollte es eben die box abdrehen, im bootlog kommt aber nur das:
p, li { white-space: pre-wrap; }
nfiwrite is halting ...
[ 80.784000] sd 0:0:0:0: [sda] Synchronizing SCSI cache
[ 80.785000] sd 0:0:0:0: [sda] Stopping disk
[ 81.225000] Power down.
Die hardddisk wird dabei auch abgedreht so wie es da steht und der kernel kriegt auch das Power Down - nur macht er es eben nicht, box und OLED bleiben an.
Macht man den selben code bei laufendem linux/enigma2 oder auch mit einem poweroff Befehl in telnet dann wird wirklich abgedreht so wie es sein sollte.
Scheinbar bin ich zu blöde zu erkennen was ich da falsch mache - Hilfe ist also willkommen.
LG
gutemine