diff --git a/fake_hardware.h b/fake_hardware.h
index 06f1c30..e5d2e75 100644
--- a/fake_hardware.h
+++ b/fake_hardware.h
@@ -19,6 +19,7 @@
   FakeHardware()
     : kernel_device_("/dev/sdz4"),
       boot_device_("/dev/sdz5"),
+      is_boot_device_removable_(false),
       kernel_devices_({"/dev/sdz2", "/dev/sdz4"}),
       is_official_build_(true),
       is_normal_boot_mode_(true),
@@ -34,6 +35,10 @@
 
   virtual std::string BootDevice() const override { return boot_device_; }
 
+  virtual bool IsBootDeviceRemovable() const override {
+    return is_boot_device_removable_;
+  }
+
   virtual std::vector<std::string> GetKernelDevices() const override {
     return kernel_devices_;
   }
@@ -73,10 +78,14 @@
   virtual std::string GetECVersion() const override { return ec_version_; }
 
   // Setters
-  void SetBootDevice(const std::string boot_device) {
+  void SetBootDevice(const std::string& boot_device) {
     boot_device_ = boot_device;
   }
 
+  void SetIsBootDeviceRemovable(bool is_boot_device_removable) {
+    is_boot_device_removable_ = is_boot_device_removable;
+  }
+
   void SetIsOfficialBuild(bool is_official_build) {
     is_official_build_ = is_official_build;
   }
@@ -111,6 +120,7 @@
  private:
   std::string kernel_device_;
   std::string boot_device_;
+  bool is_boot_device_removable_;
   std::vector<std::string>  kernel_devices_;
   std::map<std::string, bool> is_bootable_;
   bool is_official_build_;
diff --git a/hardware.cc b/hardware.cc
index 5d5492f..441e066 100644
--- a/hardware.cc
+++ b/hardware.cc
@@ -60,6 +60,10 @@
   return boot_path;
 }
 
+bool Hardware::IsBootDeviceRemovable() const {
+  return utils::IsRemovableDevice(utils::GetDiskName(BootDevice()));
+}
+
 bool Hardware::IsKernelBootable(const std::string& kernel_device,
                                 bool* bootable) const {
   CgptAddParams params;
diff --git a/hardware.h b/hardware.h
index fdcdf13..99c0803 100644
--- a/hardware.h
+++ b/hardware.h
@@ -20,6 +20,7 @@
   // HardwareInterface methods.
   virtual std::string BootKernelDevice() const override;
   virtual std::string BootDevice() const override;
+  virtual bool IsBootDeviceRemovable() const override;
   virtual std::vector<std::string> GetKernelDevices() const override;
   virtual bool IsKernelBootable(const std::string& kernel_device,
                                 bool* bootable) const override;
diff --git a/hardware_interface.h b/hardware_interface.h
index bc7fee3..83db8a2 100644
--- a/hardware_interface.h
+++ b/hardware_interface.h
@@ -26,6 +26,9 @@
   // Returns the currently booted rootfs partition. "/dev/sda3", for example.
   virtual std::string BootDevice() const = 0;
 
+  // Return whether the BootDevice() is a removable device.
+  virtual bool IsBootDeviceRemovable() const = 0;
+
   // Returns a list of all kernel partitions available (whether bootable or not)
   virtual std::vector<std::string> GetKernelDevices() const = 0;
 
diff --git a/mock_hardware.h b/mock_hardware.h
index a996896..574f1f7 100644
--- a/mock_hardware.h
+++ b/mock_hardware.h
@@ -22,6 +22,9 @@
     ON_CALL(*this, BootDevice())
       .WillByDefault(testing::Invoke(&fake_,
             &FakeHardware::BootDevice));
+    ON_CALL(*this, IsBootDeviceRemovable())
+      .WillByDefault(testing::Invoke(&fake_,
+            &FakeHardware::IsBootDeviceRemovable));
     ON_CALL(*this, GetKernelDevices())
       .WillByDefault(testing::Invoke(&fake_,
             &FakeHardware::GetKernelDevices));
@@ -56,6 +59,7 @@
   // Hardware overrides.
   MOCK_CONST_METHOD0(BootKernelDevice, std::string());
   MOCK_CONST_METHOD0(BootDevice, std::string());
+  MOCK_CONST_METHOD0(IsBootDeviceRemovable, bool());
   MOCK_CONST_METHOD0(GetKernelDevices, std::vector<std::string>());
   MOCK_CONST_METHOD2(IsKernelBootable,
                bool(const std::string& kernel_device, bool* bootable));
diff --git a/update_check_scheduler.cc b/update_check_scheduler.cc
index 45a28ae..0f3d960 100644
--- a/update_check_scheduler.cc
+++ b/update_check_scheduler.cc
@@ -41,7 +41,7 @@
     LOG(WARNING) << "Non-official build: periodic update checks disabled.";
     return;
   }
-  if (IsBootDeviceRemovable()) {
+  if (system_state_->hardware()->IsBootDeviceRemovable()) {
     LOG(WARNING) << "Removable device boot: periodic update checks disabled.";
     return;
   }
@@ -58,11 +58,6 @@
   ScheduleCheck(kTimeoutInitialInterval, kTimeoutRegularFuzz);
 }
 
-bool UpdateCheckScheduler::IsBootDeviceRemovable() {
-  return utils::IsRemovableDevice(utils::GetDiskName(
-      system_state_->hardware()->BootDevice()));
-}
-
 guint UpdateCheckScheduler::GTimeoutAddSeconds(guint interval,
                                                GSourceFunc function) {
   return g_timeout_add_seconds(interval, function, this);
diff --git a/update_check_scheduler.h b/update_check_scheduler.h
index 6e95add..a2dc41a 100644
--- a/update_check_scheduler.h
+++ b/update_check_scheduler.h
@@ -65,7 +65,6 @@
   FRIEND_TEST(UpdateCheckSchedulerTest, ComputeNextIntervalAndFuzzPriorityTest);
   FRIEND_TEST(UpdateCheckSchedulerTest, ComputeNextIntervalAndFuzzTest);
   FRIEND_TEST(UpdateCheckSchedulerTest, GTimeoutAddSecondsTest);
-  FRIEND_TEST(UpdateCheckSchedulerTest, IsBootDeviceRemovableTest);
   FRIEND_TEST(UpdateCheckSchedulerTest, RunBootDeviceRemovableTest);
   FRIEND_TEST(UpdateCheckSchedulerTest, RunNonOfficialBuildTest);
   FRIEND_TEST(UpdateCheckSchedulerTest, RunTest);
@@ -84,9 +83,6 @@
   // Wraps GLib's g_timeout_add_seconds so that it can be mocked in tests.
   virtual guint GTimeoutAddSeconds(guint interval, GSourceFunc function);
 
-  // Wrappers for utils functions so that they can be mocked in tests.
-  virtual bool IsBootDeviceRemovable();
-
   // Returns true if an update check can be scheduled. An update check should
   // not be scheduled if periodic update checks are disabled or if one is
   // already scheduled.
diff --git a/update_check_scheduler_unittest.cc b/update_check_scheduler_unittest.cc
index 608b6a6..74daaf3 100644
--- a/update_check_scheduler_unittest.cc
+++ b/update_check_scheduler_unittest.cc
@@ -40,7 +40,6 @@
         fake_system_state_(fake_system_state) {}
 
   MOCK_METHOD2(GTimeoutAddSeconds, guint(guint seconds, GSourceFunc function));
-  MOCK_METHOD0(IsBootDeviceRemovable, bool());
 
   FakeSystemState* fake_system_state_;
 };
@@ -164,17 +163,10 @@
   g_main_loop_unref(loop_);
 }
 
-TEST_F(UpdateCheckSchedulerTest, IsBootDeviceRemovableTest) {
-  // Invokes the actual utils wrapper method rather than the subclass mock.
-  EXPECT_FALSE(scheduler_.UpdateCheckScheduler::IsBootDeviceRemovable());
-}
-
 TEST_F(UpdateCheckSchedulerTest, RunBootDeviceRemovableTest) {
   scheduler_.enabled_ = true;
   fake_system_state_.fake_hardware()->SetIsOfficialBuild(true);
-  EXPECT_CALL(scheduler_, IsBootDeviceRemovable())
-      .Times(1)
-      .WillOnce(Return(true));
+  fake_system_state_.fake_hardware()->SetIsBootDeviceRemovable(true);
   scheduler_.Run();
   EXPECT_FALSE(scheduler_.enabled_);
   EXPECT_EQ(NULL, attempter_.update_check_scheduler());
@@ -195,9 +187,7 @@
             &interval_min,
             &interval_max);
   fake_system_state_.fake_hardware()->SetIsOfficialBuild(true);
-  EXPECT_CALL(scheduler_, IsBootDeviceRemovable())
-      .Times(1)
-      .WillOnce(Return(false));
+  fake_system_state_.fake_hardware()->SetIsBootDeviceRemovable(false);
   EXPECT_CALL(scheduler_,
               GTimeoutAddSeconds(AllOf(Ge(interval_min), Le(interval_max)),
                                  scheduler_.StaticCheck)).Times(1);
