diff --git a/third_party/linux/def.bzl b/third_party/linux/def.bzl
index 21282f4..c1b3232 100644
--- a/third_party/linux/def.bzl
+++ b/third_party/linux/def.bzl
@@ -69,10 +69,10 @@
     # Tuple containing information about how to build and access the resulting
     # image.
     # The first element (target) is the make target to build, the second
-    # (output_source) is the resulting file to be copied and the last
-    # (output_name) is the name of the output that will be generated by this
+    # (image_source) is the resulting file to be copied and the last
+    # (image_name) is the name of the image that will be generated by this
     # rule.
-    (target, output_source, output_name) = {
+    (target, image_source, image_name) = {
         'vmlinux': ('vmlinux', 'vmlinux', 'vmlinux'),
         'bzImage': ('all', 'arch/x86/boot/bzImage', 'bzImage'),
     }[image_format]
@@ -80,36 +80,45 @@
     # Root of the given Linux sources.
     root = detect_root(ctx.attr.kernel_src)
 
-    output = ctx.actions.declare_file(output_name)
+    image = ctx.actions.declare_file(image_name)
+    modinfo = ctx.actions.declare_file("modules.builtin.modinfo")
     ctx.actions.run_shell(
-        outputs = [ output ],
+        outputs = [ image, modinfo ],
         inputs = [ kernel_config ] + kernel_src,
         command = '''
             kconfig=$1
             target=$2
-            output_source=$3
-            output=$4
+            image_source=$3
+            image=$4
             root=$5
+            modinfo=$6
 
             mkdir ${root}/.bin
             cp ${kconfig} ${root}/.config
             (cd ${root} && make -j $(nproc) ${target} >/dev/null)
-            cp ${root}/${output_source} ${output}
+            cp ${root}/${image_source} ${image}
+            cp ${root}/modules.builtin.modinfo ${modinfo}
         ''',
         arguments = [
             kernel_config.path,
             target,
-            output_source,
-            output.path,
+            image_source,
+            image.path,
             root,
+            modinfo.path
         ],
         use_default_shell_env = True,
     )
 
-    files = depset([output])
-    runfiles = ctx.runfiles(files=[output])
-    return [DefaultInfo(files=files, runfiles=runfiles)]
-
+    return [
+      DefaultInfo(
+        files=depset([image]),
+        runfiles=ctx.runfiles(files=[image])
+      ),
+      OutputGroupInfo(
+        modinfo = depset([modinfo])
+      )
+    ]
 
 linux_image = rule(
     doc = '''
