diff --git a/core/includes/update.inc b/core/includes/update.inc
index 508e01b..ee026f9 100644
--- a/core/includes/update.inc
+++ b/core/includes/update.inc
@@ -634,6 +634,13 @@ function update_fix_d8_requirements() {
     // picture upgrade path.
     update_module_enable(array('file'));
 
+    // Views module is required to convert all previously existing listings into
+    // views configurations.
+    // Like any other module APIs and services, Views' services are not available
+    // in update.php. Existing listings are migrated into configuration, using
+    // the limited standard tools of raw database queries and config().
+    update_module_enable(array('views'));
+
     update_variable_set('update_d8_requirements', TRUE);
   }
 }
@@ -670,6 +677,27 @@ function update_module_enable(array $modules) {
     // updates since the module's inception are executed in a core upgrade.
     $schema_store->set($module, 0);
 
+    // Copy the default configuration of the module into the active storage.
+    // The default configuration is not altered in any way, and since the module
+    // is just being installed, none of its configuration can exist already, so
+    // this is a plain copy operation from one storage to another.
+    $module_config_path = drupal_get_path('module', $module) . '/config';
+    if (is_dir($module_config_path)) {
+      $module_filestorage = new FileStorage($module_config_path);
+      $config_storage = drupal_container()->get('config.storage');
+      foreach ($module_filestorage->listAll() as $config_name) {
+        // If this file already exists, something in the upgrade path went
+        // completely wrong and we want to know.
+        if ($config_storage->exists($config_name)) {
+          throw new ConfigException(format_string('Default configuration file @name of @module module unexpectedly exists already before the module was installed.', array(
+            '@module' => $module,
+            '@name' => $config_name,
+          )));
+        }
+        $config_storage->write($config_name, $module_filestorage->read($config_name));
+      }
+    }
+
     // system_list_reset() is in module.inc but that would only be available
     // once the variable bootstrap is done.
     require_once DRUPAL_ROOT . '/core/includes/module.inc';
diff --git a/core/modules/system/system.install b/core/modules/system/system.install
index 68dd422..0f76f57 100644
--- a/core/modules/system/system.install
+++ b/core/modules/system/system.install
@@ -2195,25 +2195,6 @@ function system_update_8045() {
 }
 
 /**
- * Enable Views if the node listing is set as the frontpage.
- */
-function system_update_8046() {
-  $front_page = config('system.site')->get('page.front');
-  if (!isset($front_page) || $front_page == 'node') {
-    update_module_enable(array('views'));
-
-    // Register views to the container, so views can use it's services.
-    $module_list = drupal_container()->getParameter('container.modules');
-    drupal_load('module', 'views');
-
-    drupal_container()->get('kernel')->updateModules(array_keys($module_list), array('views' => 'core/modules/views/views.module'));
-
-    // This does not fire a hook just calls views.
-    config_install_default_config('module', 'views');
-  }
-}
-
-/**
  * @} End of "defgroup updates-7.x-to-8.x".
  * The next series of updates should start at 9000.
  */
diff --git a/core/modules/views/views.install b/core/modules/views/views.install
index 8bda10e..364257c 100644
--- a/core/modules/views/views.install
+++ b/core/modules/views/views.install
@@ -8,19 +8,14 @@
 use Drupal\Core\Database\Database;
 
 /**
- * Implements hook_install().
- */
-function views_install() {
-  module_set_weight('views', 10);
-}
-
-/**
  * Implements hook_schema().
  */
 function views_schema() {
-  $schema['cache_views_info'] = drupal_get_schema_unprocessed('system', 'cache');
+  $cache_schema = drupal_get_schema_unprocessed('system', 'cache');
+
+  $schema['cache_views_info'] = $cache_schema;
 
-  $schema['cache_views_results'] = drupal_get_schema_unprocessed('system', 'cache');
+  $schema['cache_views_results'] = $cache_schema;
   $schema['cache_views_results']['description'] = 'Cache table for views to store pre-rendered queries, results, and display output.';
   $schema['cache_views_results']['fields']['serialized']['default'] = 1;
 
@@ -30,13 +25,17 @@ function views_schema() {
 /**
  * Provide an initial schema.
  *
- * @see update_module_enable().
+ * @see update_module_enable()
  */
 function views_schema_0() {
   module_load_install('system');
-  // Add the cache_views_info and cache_views_results tables.
   $cache_schema = system_schema_cache_8007();
+
   $schema['cache_views_info'] = $cache_schema;
+
   $schema['cache_views_results'] = $cache_schema;
+  $schema['cache_views_results']['description'] = 'Cache table for views to store pre-rendered queries, results, and display output.';
+  $schema['cache_views_results']['fields']['serialized']['default'] = 1;
+
   return $schema;
 }
