Penguin
Annotated edit history of KernelNotes version 31, including all changes. View license author blame.
Rev Author # Line
27 AristotlePagaltzis 1 !!! Updating the [Kernel] SourceCode without reconfiguring from scratch
2
3 Download and unpack the latest [Kernel] TarBall (ie from [http://kernel.org/]). Copy the <tt>.config</tt> file from the previous [Kernel]'s directory to the fresh one. From the new directory, run <tt>make oldconfig</tt> to pick up the old configuration, then <tt>make menuconfig</tt> to change any options for the new [Kernel].
4
5 To update the symlink:
6
7 <pre>
8 ls -l /usr/src/linux
9 rm /usr/src/linux
10 cd /usr/src
11 ln -s linux-''version'' linux
12 </pre>
13
14 DebianLinux users will want to read KernelPackageNotes for information on using make-kpkg(1) to build a [Kernel] [Deb]. If not, they can follow the same steps, using
15
16 <pre>
17 apt-cache search kernel-source # to find out the latest version
18 apt-get kernel-source-''version''
19 </pre>
20
21 to download the latest source.
28 CraigBox 22
23 !!! Updating your source tree to the latest version
24
25 patch-2.6.17 applies against 2.6.16, so if you have 2.6.16.n, you'll have to first remove the 2.6.16.n patch.
26
29 AristotlePagaltzis 27 Use [ketchup|http://kerneltrap.org/node/2976], a [Python] utility to handle this patching for you.
28 CraigBox 28
29 AristotlePagaltzis 29 A good command line for [NZ] users:
28 CraigBox 30
31 <pre>
32 ketchup -G -k ftp://ftp.nz.kernel.org/pub/linux/kernel -r 2.6
33 </pre>
34
29 AristotlePagaltzis 35 Only use <tt>-G</tt> if you trust the mirror!
27 AristotlePagaltzis 36
25 AristotlePagaltzis 37 !!! Compiler Version
23 AristotlePagaltzis 38
26 AristotlePagaltzis 39 The [Kernel] can be sensitive to the version of [GCC] in use. F.ex. 2.4 and early 2.6 kernels did not work with [GCC] 3.x. They contained the following snippet in <tt>README</tt>:
20 DanielLawson 40
23 AristotlePagaltzis 41 <verbatim>
20 DanielLawson 42 COMPILING the kernel:
43
44 - Make sure you have gcc 2.95.3 available. gcc 2.91.66 (egcs-1.1.2) may
45 also work but is not as safe, and *gcc 2.7.2.3 is no longer supported*.
23 AristotlePagaltzis 46 </verbatim>
20 DanielLawson 47
25 AristotlePagaltzis 48 OTOH kernels since about 2.6.15 require [GCC] 3.x. Read the file to find the versions of compilers and other tools you need. Make sure to check the <tt>README</tt> and <tt>Documentation/Changes</tt> files to find out which version you need. Of course you always read the compile instructions for software you download, right? :)
20 DanielLawson 49
31 IanMcDonald 50 To compile a kernel with a specific compiler, you can say eg. <tt>make CC=gcc-2.95 bzImage</tt> to make the <tt>bzImage</tt> target using the <tt>gcc-2.95</tt> compiler. See also [DistCC]
20 DanielLawson 51
27 AristotlePagaltzis 52 !!! Linking fails with <tt>bootsplash</tt> compiled into your kernel
20 DanielLawson 53
25 AristotlePagaltzis 54 Compiling aborts with the following message:
20 DanielLawson 55
25 AristotlePagaltzis 56 <verbatim>
57 LD .tmp_vmlinux1
58 drivers/built-in.o(.text+0xa898a): In function `splash_getraw':
59 : undefined reference to `con2fb_map'
60 drivers/built-in.o(.text+0xa918c): In function `splash_verbose':
61 : undefined reference to `con2fb_map'
62 drivers/built-in.o(.text+0xa9670): In function `splash_status':
63 : undefined reference to `con2fb_map'
64 drivers/built-in.o(.text+0xa97a4): In function `splash_read_proc':
65 : undefined reference to `con2fb_map'
66 drivers/built-in.o(.text+0xa997d): In function `splash_write_proc':
67 : undefined reference to `con2fb_map'
68 make: *** [.tmp_vmlinux1] Error 1
69 </verbatim>
20 DanielLawson 70
31 IanMcDonald 71 You need to have framebuffer console support compiled in. It can't be a module! Set <tt>CONFIG_FRAMEBUFFER_CONSOLE=y</tt> in the <tt>.config</tt>. NB This sounds like a one off bug that has probably been long fixed.
20 DanielLawson 72
25 AristotlePagaltzis 73 !!! ModuleInitTools
20 DanielLawson 74
23 AristotlePagaltzis 75 Starting with 2.5.51, modules have a different format. The extension has also changed from <tt>.o</tt> to <tt>.ko</tt>, for kernel object. To work with modules, you need a completely rewritten set of module tools (modprobe(8), insmod(8), lsmod(8)), collectively called <tt>module-init-tools</tt>. They can coexist with the 2.4.x-specific tools. __Note, however__ that <tt>module-init-tools</tt> no longer reads <tt>modules.conf</tt> and instead uses a new file called modprobe.conf(5) which has a different syntax. <tt>man 5 modprobe.conf</tt> will be your friend here. It's possible to set <tt>modprobe.conf</tt> to handle modules for both 2.4.x and 2.5.x kernels, which is pretty cool if you're a dual-booter.
20 DanielLawson 76
26 AristotlePagaltzis 77 !!! nVidia and LinuxKernel 2.6
20 DanielLawson 78
25 AristotlePagaltzis 79 [nVidia drivers|http://www.nvidia.com/linux] version 1.0-6106 and up support all 2.4 and 2.6 kernels, including kernels with the new 2.6 option for 4k stacks.
30 BenStaz 80
81 !!! Kconfig files
82
83 These are kernel configuration files. When the kernel configuration application is run, it reads the main kernel configuration file, located in /source/dir/arch/<your architecture>/Kconfig. This main configuration file then includes other configuration files from the different subdirectories in the kernel directory tree.
20 DanielLawson 84
31 IanMcDonald 85 Don't edit these Kconfig files directly unless you are doing [KernelDevelopment]. These files are driven from .config file mentioned earlier in this article.
20 DanielLawson 86
31 IanMcDonald 87 In the 2.4 series, you could read <tt>Documentation/Configure.help</tt> to get the equivalent information.
20 DanielLawson 88
23 AristotlePagaltzis 89 !!! See also
20 DanielLawson 90
23 AristotlePagaltzis 91 * TroubleshootingStartUp has help for some problems while booting kernels
92 * KernelTweaking
93 * [Safe remote kernel install howto | http://groups.google.com/group/fa.linux.kernel/msg/75497a47b0dd2b6b] describes a strategy for testing a new kernel on a remote machine without shutting yourself out even if it doesn't work
20 DanielLawson 94
95 ----
96 CategoryKernel

PHP Warning

lib/blame.php:177: Warning: Invalid argument supplied for foreach() (...repeated 5 times)