mirror of
https://github.com/cirosantilli/linux-kernel-module-cheat.git
synced 2026-01-26 03:31:36 +01:00
This commit is contained in:
@@ -5,7 +5,7 @@
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<meta name="generator" content="Asciidoctor 2.0.11">
|
||||
<meta name="description" content="The perfect emulation setup to study and develop the <<linux-kernel>> v5.9.2, kernel modules, <<qemu-buildroot-setup,QEMU>>, <<gem5-buildroot-setup,gem5>> and x86_64, ARMv7 and ARMv8 <<userland-assembly,userland>> and <<baremetal-setup,baremetal>> assembly, <<c,ANSI C>>, <<cpp,C++>> and <<posix,POSIX>>. <<gdb>> and <<kgdb>> just work. Powered by <<about-the-qemu-buildroot-setup,Buildroot>> and <<about-the-baremetal-setup,crosstool-NG>>. Highly automated. Thoroughly documented. Automated <<test-this-repo,tests>>. "Tested" in an Ubuntu 20.04 host.">
|
||||
<meta name="description" content="The perfect emulation setup to study and develop the <<linux-kernel>> v5.9.2, kernel modules, <<qemu-buildroot-setup,QEMU>>, <<gem5-buildroot-setup,gem5>> and x86_64, ARMv7 and ARMv8 <<userland-assembly,userland>> and <<baremetal-setup,baremetal>> assembly, <<c,ANSI C>>, <<cpp,C++>> and <<posix,POSIX>>. EVERYTHING is built from source. <<gdb>> and <<kgdb>> just work. Powered by <<about-the-qemu-buildroot-setup,Buildroot>> and <<about-the-baremetal-setup,crosstool-NG>>. Highly automated. Thoroughly documented. Automated <<test-this-repo,tests>>. "Tested" in an Ubuntu 20.04 host.">
|
||||
<title>Linux Kernel Module Cheat</title>
|
||||
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Open+Sans:300,300italic,400,400italic,600,600italic%7CNoto+Serif:400,400italic,700,700italic%7CDroid+Sans+Mono:400,700">
|
||||
<style>
|
||||
@@ -495,17 +495,33 @@ git -C "$(./getvar linux_source_dir)" checkout -
|
||||
<div class="paragraph">
|
||||
<p>To run both kernels simultaneously, one on each QEMU instance, see: <a href="simultaneous-runs.html">Section 38.12, “Simultaneous runs”</a>.</p>
|
||||
</div>
|
||||
<div class="paragraph">
|
||||
<p>You can also build <a href="kernel-modules.html">Kernel modules</a> against a specific prebuilt kernel with:</p>
|
||||
</div>
|
||||
<div class="literalblock">
|
||||
<div class="content">
|
||||
<pre>./build-modules --linux-build-id v4.16</pre>
|
||||
</div>
|
||||
</div>
|
||||
<div class="paragraph">
|
||||
<p>This will then allow you to insmod the kernel modules on your newly built kernel.</p>
|
||||
</div>
|
||||
<div class="paragraph">
|
||||
<p>Note that for this build to work the Linux kernel must remain checked out at the same version as it was built from, because the build dir which modules build against via the <code>M=</code> argument points to the absolute path of the Linux kernel source from which the headers are taken. For this reason, if you are going to be building kernel modules against a specific kernel version, it is a good idea to use a <a href="linux-worktree.html">Linux worktree</a> to ensure that the source for a build is always there.</p>
|
||||
</div>
|
||||
<div class="ulist">
|
||||
<ul>
|
||||
<li>
|
||||
<p><a href="linux-worktree.html">Linux worktree</a></p>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
<div class="paragraph nav-footer">
|
||||
<p>↑ Up: <a href="build-variants.html">Build variants</a> | ⌂ Home: <a href="README.html">Linux Kernel Module Cheat</a> | Next: <a href="qemu-build-variants.html">QEMU build variants</a> →</p>
|
||||
<p>↑ Up: <a href="build-variants.html">Build variants</a> | ⌂ Home: <a href="README.html">Linux Kernel Module Cheat</a> | Next: <a href="linux-worktree.html">Linux worktree</a> →</p>
|
||||
</div>
|
||||
</div>
|
||||
<script>
|
||||
<!-- Google Analytics, AKA selling my soul to Google for some backlinks. -->
|
||||
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
|
||||
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
|
||||
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
|
||||
@@ -513,5 +529,12 @@ m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
|
||||
ga('create', 'UA-47867706-1', 'auto');
|
||||
ga('send', 'pageview');
|
||||
</script>
|
||||
<script async src="https://www.googletagmanager.com/gtag/js?id=G-DEE2HEJW9X"></script>
|
||||
<script>
|
||||
window.dataLayer = window.dataLayer || [];
|
||||
function gtag(){dataLayer.push(arguments);}
|
||||
gtag('js', new Date());
|
||||
gtag('config', 'G-DEE2HEJW9X');
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
Reference in New Issue
Block a user