Difference between revisions of "Watchdog"
(→Background information) |
|||
Line 10: | Line 10: | ||
BRSettingsHelper tellWatchdogWeAreUpAndRunning | BRSettingsHelper tellWatchdogWeAreUpAndRunning | ||
− | This function seems to reset the boot count but does not prevent the machine from rebooting.<br> | + | here is the code needed to call backrow functions. Note you must add the backrow framework to your project.<br><br> |
+ | <pre> | ||
+ | //BRSettingsHelper.h | ||
+ | #import <Cocoa/Cocoa.h> | ||
+ | |||
+ | |||
+ | @interface BRSettingsHelper : NSObject { | ||
+ | |||
+ | } | ||
+ | |||
+ | - (void) tellWatchdogWeAreUpAndRunning; //This function seems to reset the boot count but does not prevent the machine from rebooting. | ||
+ | - (void) reboot; | ||
+ | |||
+ | @end | ||
+ | </pre> | ||
+ | And now to test it: | ||
+ | <pre> | ||
+ | #import <Cocoa/Cocoa.h> | ||
+ | #include "BRSettingsHelper.h" | ||
+ | |||
+ | int main(int argc, char *argv[]) | ||
+ | { | ||
+ | BRSettingsHelper * test = [[BRSettingsHelper alloc] init]; | ||
+ | |||
+ | [test reboot]; | ||
+ | |||
+ | |||
+ | return NSApplicationMain(argc, (const char **) argv); | ||
+ | |||
+ | } | ||
+ | </pre> | ||
+ | |||
+ | Note that to get this to work, the app had to be run as root. | ||
+ | <br> | ||
There is also the key:<br> | There is also the key:<br> | ||
_kRUIAutoRestartIntervalKey<br><br> | _kRUIAutoRestartIntervalKey<br><br> |
Revision as of 17:48, 24 March 2007
What is Watchdog
Watchdog reboots the Apple TV it if the GUI isn't running.
How to disable Watchdog
Apparently BackRow.framework tells Watchdog that "we are up and running":
strings /System/Library/PrivateFrameworks/BackRow.framework/Versions/A/BackRow (...) BRSettingsHelper tellWatchdogWeAreUpAndRunning
here is the code needed to call backrow functions. Note you must add the backrow framework to your project.
//BRSettingsHelper.h #import <Cocoa/Cocoa.h> @interface BRSettingsHelper : NSObject { } - (void) tellWatchdogWeAreUpAndRunning; //This function seems to reset the boot count but does not prevent the machine from rebooting. - (void) reboot; @end
And now to test it:
#import <Cocoa/Cocoa.h> #include "BRSettingsHelper.h" int main(int argc, char *argv[]) { BRSettingsHelper * test = [[BRSettingsHelper alloc] init]; [test reboot]; return NSApplicationMain(argc, (const char **) argv); }
Note that to get this to work, the app had to be run as root.
There is also the key:
_kRUIAutoRestartIntervalKey
which is probably used in one of:
-[RUIPreferences boolForKey:]
-[RUIPreferences boolForKey:withValueForMissingPrefs:]
-[RUIPreferences canSetPreferencesForKey:]
-[RUIPreferences descriptionForKey:]
-[RUIPreferences floatForKey:]
-[RUIPreferences integerForKey:]
-[RUIPreferences objectForKey:]
-[RUIPreferences setBool:forKey:]
-[RUIPreferences setFloat:forKey:]
-[RUIPreferences setInteger:forKey:]
-[RUIPreferences setObject:forKey:]
-[RUIPreferences stringForKey:]
This seems to indicate that the auto reboot interval is stored as a key somewhere. I don't know if this is simply used for the Finder.app or if there is something else on the system that will use this.
SettingsHelper has a reference to "/sbin/shutdown -r now"
Symlinking /sbin/shutdown to /usr/bin/true makes the shutdown command do nothing
Background information
This Apple document about Watchdog may shed some light:
http://docs.info.apple.com/article.html?artnum=106588&coll=cp (However, on the Apple TV, there is no /etc/watchdog.conf, other than what this document is saying)
Watchdog is not used in Mac OS X 10.4: look at launchd. This is referring to a software watchdog and is probably unrelated to the rebooting problem.