diff --git a/core/modules/system/system.install b/core/modules/system/system.install
index 614ad9e..4303cb0 100644
--- a/core/modules/system/system.install
+++ b/core/modules/system/system.install
@@ -245,6 +245,38 @@ function system_requirements($phase) {
     $requirements['php_extensions']['value'] = t('Enabled');
   }
 
+  // Missing modules.
+  if ($phase == 'runtime') {
+    $extension_config = \Drupal::config('core.extension');
+    $core_extension = $extension_config->getRawData();
+    $module_data = system_rebuild_module_data();
+    $nonexistent_modules = array_keys(array_diff_key($core_extension['module'], $module_data));
+
+    $options = [];
+    foreach ($nonexistent_modules as $module) {
+      $options[] = t('%module module is missing. Put the code back in the original place and uninstall it.', ['%module' => $module]);
+    }
+
+    $requirements['missing_modules'] = [
+      'title' => t('Missing modules'),
+    ];
+
+    $description = [
+      '#type' => 'inline_template',
+      '#template' => '{{ configuration_error_list }}',
+      '#context' => [
+        'configuration_error_list' => [
+          '#theme' => 'item_list',
+          '#items' => $options,
+        ],
+      ],
+    ];
+
+    $requirements['missing_modules']['value'] = t('Not found');
+    $requirements['missing_modules']['severity'] = REQUIREMENT_ERROR;
+    $requirements['missing_modules']['description'] = $description;
+  }
+
   if ($phase == 'install' || $phase == 'runtime') {
     // Check to see if OPcache is installed.
     if (!OpCodeCache::isEnabled()) {
