diff --git a/bin/couchdb.tpl.in b/bin/couchdb.tpl.in
index 370bdb4..eab27b5 100644
--- a/bin/couchdb.tpl.in
+++ b/bin/couchdb.tpl.in
@@ -15,7 +15,12 @@
 BACKGROUND=false
 DEFAULT_CONFIG_DIR=%localconfdir%/default.d
 DEFAULT_CONFIG_FILE=%localconfdir%/%defaultini%
-ERL_START_OPTIONS="-sasl errlog_type error +K true +A 4"
+ERL_OS_MON_OPTIONS="-os_mon \
+    start_memsup false \
+    start_cpu_sup false \
+    disk_space_check_interval 1 \
+    disk_almost_full_threshold 1"
+ERL_START_OPTIONS="$ERL_OS_MON_OPTIONS -sasl errlog_type error +K true +A 4"
 HEART_BEAT_TIMEOUT=11
 HEART_COMMAND="%bindir%/%couchdb_command_name% -k"
 INTERACTIVE=false
diff --git a/src/couchdb/couch_app.erl b/src/couchdb/couch_app.erl
index 232953d..f109780 100644
--- a/src/couchdb/couch_app.erl
+++ b/src/couchdb/couch_app.erl
@@ -20,7 +20,7 @@
 
 start(_Type, DefaultIniFiles) ->
     IniFiles = get_ini_files(DefaultIniFiles),
-    case start_apps([crypto, public_key, sasl, inets, oauth, ssl, ibrowse, mochiweb]) of
+    case start_apps([crypto, public_key, sasl, inets, oauth, ssl, ibrowse, mochiweb, os_mon]) of
     ok ->
         couch_server_sup:start_link(IniFiles);
     {error, Reason} ->
diff --git a/src/couchdb/couch_compaction_daemon.erl b/src/couchdb/couch_compaction_daemon.erl
index ab85db8..6a0f140 100644
--- a/src/couchdb/couch_compaction_daemon.erl
+++ b/src/couchdb/couch_compaction_daemon.erl
@@ -56,38 +56,15 @@ init(_) ->
     ?CONFIG_ETS = ets:new(?CONFIG_ETS, [named_table, set, protected]),
     ok = couch_config:register(fun ?MODULE:config_change/3),
     load_config(),
-    case start_os_mon() of
-    ok ->
-        Server = self(),
-        Loop = spawn_link(fun() -> compact_loop(Server) end),
-        {ok, #state{loop_pid = Loop}};
-    Error ->
-        {stop, Error}
-    end.
+    Server = self(),
+    Loop = spawn_link(fun() -> compact_loop(Server) end),
+    {ok, #state{loop_pid = Loop}}.
 
 
 config_change("compactions", DbName, NewValue) ->
     ok = gen_server:cast(?MODULE, {config_update, DbName, NewValue}).
 
 
-start_os_mon() ->
-    _ = application:load(os_mon),
-    ok = application:set_env(
-        os_mon, disk_space_check_interval, ?DISK_CHECK_PERIOD),
-    ok = application:set_env(os_mon, disk_almost_full_threshold, 1),
-    ok = application:set_env(os_mon, start_memsup, false),
-    ok = application:set_env(os_mon, start_cpu_sup, false),
-    _ = application:start(sasl),
-    case application:start(os_mon) of
-    ok ->
-        ok;
-    {error, {already_started, os_mon}} ->
-        ok;
-    Error ->
-        Error
-    end.
-
-
 handle_cast({config_update, DbName, deleted}, State) ->
     true = ets:delete(?CONFIG_ETS, ?l2b(DbName)),
     {noreply, State};
