User Tools

Site Tools


start

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
Next revision Both sides next revision
start [2017-01-21 22:30]
joshtriplett Fix typo.
start [2020-07-06 21:24]
joshtriplett Drop instructions for kernels older than 3.17-rc1,
Line 7: Line 7:
 ====== Building a tiny kernel ====== ====== Building a tiny kernel ======
  
-With Linux 3.17-rc1 and newer, ''​make tinyconfig''​ will produce a minimal kernel. ​ You can then turn on the minimal set of options you need. +With current ​Linux (since ​3.17-rc1 and newer, ''​make tinyconfig''​ will produce a minimal kernel. ​ You can then turn on the minimal set of options you need.
- +
-On previous kernels, you'll need to take a few additional steps to make the kernel as small as possible: +
- +
-  * Prior to 3.15-rc1, ''​make allnoconfig''​ did not turn off options behind CONFIG_EXPERT or CONFIG_EMBEDDED,​ so you'll have to do so manually. +
-  * Change the allocator from SLUB to SLOB +
-  * Change the kernel compression method from GZIP to XZ +
-  * Disable HIGHMEM4G, using NOHIGHMEM instead +
-  * Set ''​CONFIG_OPTIMIZE_INLINING=y''​ +
-  * Set ''​CONFIG_CC_OPTIMIZE_FOR_SIZE=y''​+
  
 You'll want to target the most code-size-efficient architecture supported by your target machine; for instance, on x86 systems, build a 32-bit kernel rather than a 64-bit kernel. ​ On current kernels, ''​make allnoconfig''​ should do this automatically. You'll want to target the most code-size-efficient architecture supported by your target machine; for instance, on x86 systems, build a 32-bit kernel rather than a 64-bit kernel. ​ On current kernels, ''​make allnoconfig''​ should do this automatically.
Line 31: Line 22:
  
 You can find the latest tinification changes in Josh Triplett'​s tree at https://​git.kernel.org/​cgit/​linux/​kernel/​git/​josh/​linux.git/​ , in the tiny/* branches. ​ Note that tiny/next gets reset for each new merge window, and other tiny/* branches may be recreated or rebased. You can find the latest tinification changes in Josh Triplett'​s tree at https://​git.kernel.org/​cgit/​linux/​kernel/​git/​josh/​linux.git/​ , in the tiny/* branches. ​ Note that tiny/next gets reset for each new merge window, and other tiny/* branches may be recreated or rebased.
 +
 +====== Searching for tinification opportunities ======
 +On a built kernel, try running ''​nm --size-sort vmlinux''​. ​ This will show all the symbols in vmlinux, sorted by size.
  
 ====== Use Cases ====== ====== Use Cases ======
 See the [[Use Cases]] page. See the [[Use Cases]] page.
start.txt · Last modified: 2020-07-06 21:27 by joshtriplett