/[gentoo]/xml/htdocs/doc/en/genkernel.xml
Gentoo

Diff of /xml/htdocs/doc/en/genkernel.xml

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

Revision 1.27 Revision 1.35
1<?xml version="1.0" encoding="UTF-8"?> 1<?xml version="1.0" encoding="UTF-8"?>
2<!-- $Header: /var/cvsroot/gentoo/xml/htdocs/doc/en/genkernel.xml,v 1.27 2007/05/18 15:01:48 rane Exp $ --> 2<!-- $Header: /var/cvsroot/gentoo/xml/htdocs/doc/en/genkernel.xml,v 1.35 2011/01/20 07:51:37 nightmorph Exp $ -->
3<!DOCTYPE guide SYSTEM "/dtd/guide.dtd"> 3<!DOCTYPE guide SYSTEM "/dtd/guide.dtd">
4 4
5<guide link="/doc/en/genkernel.xml"> 5<guide>
6<title>Gentoo Linux Genkernel Guide</title> 6<title>Gentoo Linux Genkernel Guide</title>
7 7
8<author title="Author"> 8<author title="Author">
9 <mail link="plasmaroo@gentoo.org">Tim Yamin</mail> 9 <mail link="plasmaroo@gentoo.org">Tim Yamin</mail>
10</author> 10</author>
11
12<!-- folajimi@speakeasy.net --> 11<!-- folajimi@speakeasy.net -->
13<author title="Contributor"> 12<author title="Contributor">
14 Jimi Ayodele 13 Jimi Ayodele
15</author> 14</author>
16
17<!-- thseiler@gmail.com --> 15<!-- thseiler@gmail.com -->
18<author title="NFS Support"> 16<author title="NFS Support">
19 Thomas Seiler 17 Thomas Seiler
20</author> 18</author>
19<author title="Editor">
20 <mail link="nightmorph"/>
21</author>
22<author title="Contributor">
23 <mail link="sping"/>
24</author>
21 25
22<abstract> 26<abstract>
23This guide intends to provide a reference of all the functions provided by 27This guide intends to provide a reference of all the functions provided by
24genkernel. 28genkernel.
25</abstract> 29</abstract>
26 30
31<!-- The content of this document is licensed under the CC-BY-SA license -->
32<!-- See http://creativecommons.org/licenses/by-sa/2.5 -->
27<license/> 33<license/>
28 34
29<version>1.4.3</version> 35<version>5</version>
30<date>2005-12-16</date> 36<date>2011-01-19</date>
31 37
32<chapter> 38<chapter>
33<title>Introduction</title> 39<title>Introduction</title>
34<section> 40<section>
35<title>Rationale</title> 41<title>Rationale</title>
36<body> 42<body>
37 43
38<p> 44<p>
39For users who are not privy to kernel compilation, genkernel is a tool to 45For users who don't want to manually compile their kernels, genkernel is a tool
40automate this process. It can help you create a kernel image akin to those 46to automate this process. It can help you create a kernel image akin to those
41available on Gentoo Installation CDs, which are designed to auto-detect the 47available on Gentoo Installation CDs, which are designed to auto-detect the
42hardware configuration of your system. Some users may also be interested in 48hardware configuration of your system. Some users may also be interested in
43using genkernel for hardware requiring initialization and a working kernel 49using genkernel for hardware requiring initialization and a working kernel
44before the system starts up. Since genkernel automatically compiles your kernel 50before the system starts up.
45modules, you can use hardware that may require certain module parameters to be
46loaded for proper operation.
47</p> 51</p>
48 52
49</body> 53</body>
50</section> 54</section>
51<section> 55<section>
73<section> 77<section>
74<title>Installing genkernel</title> 78<title>Installing genkernel</title>
75<body> 79<body>
76 80
77<p> 81<p>
78To obtain genkernel, run <c>emerge genkernel</c> from the command line. If you 82To obtain genkernel, run <c>emerge genkernel</c> from the command line. Consult
79are using the <uri
80link="/doc/en/handbook/2005.1/hb-install-about.xml#doc_chap2_sect1">Gentoo
81Reference Platform</uri> (GRP), remember to install binary packages by passing
82the <c>-k</c> flag to emerge. Since the GRP is bundled with an older version of
83genkernel, the flags may be different. In any case, consult <c>genkernel
84--help</c> for help on how to use the version of genkernel installed on your 83<c>genkernel --help</c> for help on how to use the version of genkernel
85system. 84installed on your system.
86</p> 85</p>
87 86
88</body> 87</body>
89</section> 88</section>
90</chapter> 89</chapter>
103and may increase compile time. Below is an illustration of a more efficient 102and may increase compile time. Below is an illustration of a more efficient
104approach, achieved by passing certain flags to genkernel as root: 103approach, achieved by passing certain flags to genkernel as root:
105</p> 104</p>
106 105
107<pre caption="Running genkernel (with flags)"> 106<pre caption="Running genkernel (with flags)">
108# <i>genkernel --bootsplash --no-install --no-clean --menuconfig all</i> 107# <i>genkernel --splash --no-install --no-clean --menuconfig all</i>
109</pre> 108</pre>
110 109
111<p> 110<p>
112The above operation causes genkernel to create a bootsplash-enabled kernel 111The above operation causes genkernel to create a framebuffer splash-enabled
113(<c>--bootsplash</c>) that will have to be manually installed 112kernel (<c>--splash</c>) that will have to be manually installed
114(<c>--no-install</c>). While preparing the kernel source tree, genkernel will 113(<c>--no-install</c>). While preparing the kernel source tree, genkernel will
115refrain from cleaning out any preexisting object files present in the source 114refrain from cleaning out any preexisting object files present in the source
116tree (<c>--no-clean</c>). A menu-driven kernel configuration utility will be 115tree (<c>--no-clean</c>). A menu-driven kernel configuration utility will be
117displayed that allows the user to select which modules will be built for the 116displayed that allows the user to select which modules will be built for the
118system (<c>--menuconfig</c>). 117system (<c>--menuconfig</c>).
119</p> 118</p>
120 119
121<p> 120<p>
122There are other flags which alter the result provided by genkernel. For 121There are other flags which alter the result provided by genkernel. For
123instance, replacing <c>--no install</c> with the <c>--install</c> flag allows 122instance, replacing <c>--no-install</c> with the <c>--install</c> flag allows
124genkernel to automatically install the new kernel in the <path>/boot</path> 123genkernel to automatically install the new kernel in the <path>/boot</path>
124directory, and will create symlinks for you if <c>--symlink</c> is specified.
125directory. Using the <c>--mountboot</c> flag allows genkernel to mount your 125Using the <c>--mountboot</c> flag allows genkernel to mount your
126<path>/boot</path> partition automatically, if necessary. 126<path>/boot</path> partition automatically, if necessary.
127</p> 127</p>
128 128
129<p> 129<p>
130Remember, genkernel is designed to make kernel compilation easy and 130Remember, genkernel is designed to make kernel compilation easy and
135there are flags that affect kernel assembling, packaging and even kernel 135there are flags that affect kernel assembling, packaging and even kernel
136initialization. 136initialization.
137</p> 137</p>
138 138
139<p> 139<p>
140The rest of this chapter examines the functionality of various flags and 140The rest of this chapter examines the functionality of various flags,
141actions available for genkernel. Some of the flags have variants which perform 141configuration variables, and actions available for genkernel. For a more
142completel list, please refer to <c>man genkernel</c> and the comments in
143<path>/etc/genkernel.conf</path>. Some of the flags have variants which
142a converse operation. The converse variants carry the <b><c>no-</c></b> prefix, 144perform a converse operation. The converse variants carry the <b><c>no-</c></b>
143and their effects are enclosed within the square brackets, []. 145prefix, and their effects are enclosed within the square brackets, [].
144</p> 146</p>
145 147
146</body> 148</body>
147</section> 149</section>
148<section> 150<section>
256 install</c> command, which installs your new kernel image, configuration 258 install</c> command, which installs your new kernel image, configuration
257 file, initrd image and system map onto your mounted boot partition. Any 259 file, initrd image and system map onto your mounted boot partition. Any
258 compiled modules will be installed as well. 260 compiled modules will be installed as well.
259 </li> 261 </li>
260 <li> 262 <li>
261 <b>--<c>no-</c>initrdmodules</b>: Refrains from copying any modules to the 263 <b>--no-ramdisk-modules</b>: Refrains from copying any modules to the
262 genkernel-created initrd image. This flag is an exception to the rule about 264 genkernel-created initrd image. This flag is an exception to the rule about
263 the <c>no-</c> prefix; omission of this prefix creates an invalid genkernel 265 the <c>no-</c> prefix; omission of this prefix creates an invalid genkernel
264 flag. 266 flag.
267 </li>
268 <li>
269 <b>--all-ramdisk-modules</b>: Copies all available modules to the
270 genkernel-created initrd image.
265 </li> 271 </li>
266 <li> 272 <li>
267 <b>--genzimage</b>: Creates the initrd image, prior to the kernel image. 273 <b>--genzimage</b>: Creates the initrd image, prior to the kernel image.
268 (This hack currently applies only to PPC Pegasos systems.) 274 (This hack currently applies only to PPC Pegasos systems.)
269 </li> 275 </li>
345amount of information reported, as well as the presentation of said data. 351amount of information reported, as well as the presentation of said data.
346</p> 352</p>
347 353
348<ul> 354<ul>
349 <li> 355 <li>
350 <b>--debuglevel=<c>verblevel</c></b>: Controls the level of verbosity for 356 <b>--loglevel=<c>verblevel</c></b>: Controls the level of verbosity for
351 information provided by genkernel. The variable <c>verblevel</c> is an 357 information provided by genkernel. The variable <c>verblevel</c> is an
352 integer between 0 and 5. The level '0' represents minimal output, while '5' 358 integer between 0 and 5. The level '0' represents minimal output, while '5'
353 provides as much information as possible about genkernel's activities 359 provides as much information as possible about genkernel's activities
354 during the kernel compilation process. 360 during the kernel compilation process.
355 </li> 361 </li>
356 <li> 362 <li>
357 <b>--debugfile=<path>/path/to/outputfile</path></b>: Ignores the value set 363 <b>--logfile=<path>/path/to/outputfile</path></b>: Ignores the value set
358 by the <c>--debuglevel</c> argument, and sends <b>all</b> debugging data 364 by the <c>--loglevel</c> argument, and sends <b>all</b> debugging data
359 produced by genkernel to the specified output file, which is located at 365 produced by genkernel to the specified output file, which is located at
360 <path>/var/log/genkernel.log</path> by default. 366 <path>/var/log/genkernel.log</path> by default.
361 </li> 367 </li>
362 <li> 368 <li>
363 <b>--no-color</b>: Activates <e>[or deactivates]</e> colored output of 369 <b>--no-color</b>: Activates <e>[or deactivates]</e> colored output of
378enabling certain features on the system. 384enabling certain features on the system.
379</p> 385</p>
380 386
381<ul> 387<ul>
382 <li> 388 <li>
383 <b>--<c>no-</c>bootsplash</b>: Activates <e>[or deactivates]</e> support
384 for <uri link="http://www.bootsplash.org/">bootsplash</uri> in the
385 genkernel-built initrd image. The bootsplash feature is supported on a
386 limited number of architectures, and a kernel that supports bootsplash is
387 also required.
388 </li>
389 <li>
390 <b>--<c>no-</c>gensplash</b>: Activates <e>[or deactivates]</e> support for 389 <b>--<c>no-</c>splash</b>: Activates <e>[or deactivates]</e> support for
391 <uri 390 <uri link="http://fbsplash.berlios.de/wiki/doku.php">framebuffer
392 link="http://dev.gentoo.org/~spock/projects/gensplash/">gensplash</uri> 391 splash</uri> support in the genkernel-built initrd image. To override the
393 support in the genkernel-built initrd image. The gensplash utility is 392 default theme used by fbsplash, use <b>--splash=<c>PreferredTheme</c></b>
394 intended to be a replacement for bootsplash, and is designed for use with 393 (where <c>PreferredTheme</c> is the title of one of the directories inside
395 2.6.x series kernels. To override the default theme used by gensplash, use 394 the <path>/etc/splash/</path> directory.
396 <b>--gensplash=<c>PreferredTheme</c></b> (where <c>PreferredTheme</c> is
397 the title of one of the directories inside the <path>/etc/splash/</path>
398 directory.
399 </li>
400 <li> 395 </li>
396 <li>
401 <b>--gensplash-res=<c>PreferredResolution</c></b>: This flag allows you to 397 <b>--splash-res=<c>PreferredResolution</c></b>: This flag allows you to
402 select which splash screen resolutions will be supported in the initrd 398 select which splash screen resolutions will be supported in the initrd
403 during the start-up of the system. This is useful for two reasons: First, 399 during the start-up of the system. This is useful for two reasons: First,
404 you are able to select only the splash screen resolution(s) relevant to 400 you are able to select only the splash screen resolution(s) relevant to your
405 your system. Second, you avoid the unnecessary increase in the disk space 401 system. Second, you avoid the unnecessary increase in the disk space
406 required by initrd (since the initrd does not have to support resolutions 402 required by initrd (since the initrd does not have to support resolutions
407 that are irrelevant for your system configuration.) However, you may want 403 that are irrelevant for your system configuration.) However, you may want to
408 to omit this flag if the kernel is being compiled for an Installation CD; 404 omit this flag if the kernel is being compiled for an Installation CD; this
409 this allows gensplash support for all possible resolutions. 405 allows splash support for all possible resolutions.
410 </li> 406 </li>
411 <li> 407 <li>
412 <b>--do-keymap-auto</b>: Force keymap selection during the boot sequence. 408 <b>--do-keymap-auto</b>: Force keymap selection during the boot sequence.
413 </li> 409 </li>
414 <li> 410 <li>
435 utility which creates RAID mappings using the kernel device-mapper 431 utility which creates RAID mappings using the kernel device-mapper
436 subsystem. DMRAID discovers, activates, deactivates and displays properties 432 subsystem. DMRAID discovers, activates, deactivates and displays properties
437 of software RAID sets (ATARAID, for example) and contained DOS partitions. 433 of software RAID sets (ATARAID, for example) and contained DOS partitions.
438 </li> 434 </li>
439 <li> 435 <li>
436 <b>--luks</b>: Includes support for <uri
437 link="http://luks.endorphin.org/">Linux Unified Key Setup</uri> or LUKS.
438 This will allow you to use a device encrypted by LUKS which contains the
439 root filesystem. On the bootloader, you then set that encrypted device as
440 the value of crypt_root (and real_root shall be the unencrypted device LUKS
441 creates).
442 </li>
443 <li>
444 <b>--disklabel</b>: Adds support for disk label and UUID support to your
445 initrd.
446 </li>
447 <li>
448 <b>--iscsi</b>: Adds support for iSCSI to your initrd.
449 </li>
450 <li>
451 <b>--multipath</b>: Adds support for <uri
452 link="/doc/en/multipath.xml">Multipath</uri> to your initrd.
453 </li>
454 <li>
440 <b>--linuxrc=/path/to/your/linuxrc</b>: Specifies a user-created 455 <b>--linuxrc=/path/to/your/linuxrc</b>: Specifies a user-created
441 <e>linuxrc</e> &mdash; a script that is initialized during the start-up 456 <e>linuxrc</e> &mdash; a script that is initialized during the start-up
442 stage of the kernel, prior to the actual boot process. (A default linuxrc 457 stage of the kernel, prior to the actual boot process. (A default linuxrc
443 script should be in the <path>/usr/share/genkernel/</path> directory.) This 458 script should be in the <path>/usr/share/genkernel/</path> directory.) This
444 script allows you to boot into a small, modularized kernel and load the 459 script allows you to boot into a small, modularized kernel and load the
495An action tells genkernel what to build. Currently, the following actions are 510An action tells genkernel what to build. Currently, the following actions are
496supported: 511supported:
497</p> 512</p>
498 513
499<ul> 514<ul>
500 <li><c>initrd</c>: Only builds the initrd image</li> 515 <li>
516 <c>all</c>: Builds all stages &mdash; the initrd, kernel image and modules.
517 </li>
501 <li><c>bzImage</c>: Only builds the kernel image</li> 518 <li><c>bzImage</c>: Only builds the kernel image</li>
502 <li><c>kernel</c>: Only builds the kernel image and modules</li> 519 <li><c>kernel</c>: Only builds the kernel image and modules</li>
503 <li> 520 <li><c>initramfs</c>: Only builds the initramfs/ramdisk image</li>
504 <c>all</c>: Builds all stages &mdash; the initrd, kernel image and modules. 521 <li><c>ramdisk</c>: Only builds the initramfs/ramdisk image</li>
505 </li>
506</ul> 522</ul>
507 523
508<p> 524<p>
509The last action, <c>all</c>, is recommended for most users since it builds the 525The first action, <c>all</c>, is recommended for most users since it builds the
510stages required for a functional kernel. Remember, an <e>action</e> simply 526stages required for a functional kernel. Remember, an <e>action</e> simply
511tells genkernel what to <e>build</e>, not <e>install</e>. 527tells genkernel what to <e>build</e>, not <e>install</e>.
512</p> 528</p>
513 529
514</body> 530</body>
522be applied to the bootloader's configuration file: 538be applied to the bootloader's configuration file:
523</p> 539</p>
524 540
525<ol> 541<ol>
526 <li> 542 <li>
527 Add <c>root=/dev/ram0</c> and <c>init=/linuxrc</c> to the kernel parameters
528 passed to the kernel image.
529 </li>
530 <li>
531 Add <c>real_root=/dev/hda3</c>, for example, to the kernel parameters 543 Add <c>real_root=/dev/sda3</c>, for example, to the kernel parameters
532 passed to the kernel image, if <path>/dev/hda3</path> contains your root 544 passed to the kernel image, if <path>/dev/sda3</path> contains your root
533 partition. 545 partition.
534 </li> 546 </li>
535 <li> 547 <li>
536 If you are using bootsplash, add a suitable mode line such as 548 If you are using splash, add a suitable mode line such as <c>vga=0x317</c>
537 <c>vga=0x317</c> to the parameters passed to the kernel and also add 549 to the parameters passed to the kernel and also add <c>splash=verbose</c> or
538 <c>splash=verbose</c> or <c>splash=silent</c> depending on the verboseness 550 <c>splash=silent</c> depending on the verboseness you require from your
539 you require from your bootloader. 551 bootloader.
540 </li> 552 </li>
541 <li> 553 <li>
542 Add the initrd information as required by the bootloader. Consult the <uri 554 Add the initrd information as required by the bootloader. Consult the <uri
543 link="/doc/en/handbook/handbook-x86.xml?part=1&amp;chap=10">Bootloader 555 link="/doc/en/handbook/handbook-x86.xml?part=1&amp;chap=10">Bootloader
544 Configuration Chapter</uri> of the Gentoo Handbook for details on how to 556 Configuration Chapter</uri> of the Gentoo Handbook for details on how to
560Passing flags to genkernel from the command line can be cumbersome, especially 572Passing flags to genkernel from the command line can be cumbersome, especially
561if you have about a dozen flags: 573if you have about a dozen flags:
562</p> 574</p>
563 575
564<pre caption="Running genkernel (overloaded with flags)"> 576<pre caption="Running genkernel (overloaded with flags)">
565# <i>genkernel --debuglevel=5 --no-color --no-mrproper --clean --gensplash \ 577# <i>genkernel --loglevel=5 --no-color --no-mrproper --clean --splash \
566--kerneldir=/path/to/alternate/kernel/sources --install --menuconfig \ 578--kerneldir=/path/to/alternate/kernel/sources --install --menuconfig \
567--kernel-config=/path/to/preferred/configfile --save-config --mountboot all</i> 579--kernel-config=/path/to/preferred/configfile --save-config --mountboot all</i>
568</pre> 580</pre>
569 581
570<p> 582<p>
571Fortunately, there is a configuration file where most of the basic options can 583Fortunately, there is a configuration file where most of the basic options can
572be set (or changed) as necessary. What follows is a rundown of the more 584be set (or changed) as necessary: <path>/etc/genkernel.conf</path>. What follows
573relevant options: 585is a rundown of the more relevant options:
574</p> 586</p>
575 587
576<ul> 588<ul>
577 <li> 589 <li>
578 <b>MENUCONFIG=<c>[yes|no]</c></b>: This option is equivalent to the 590 <b>MENUCONFIG=<c>[yes|no]</c></b>: This option is equivalent to the
618 <b>USECOLOR=<c>[yes|no]</c></b>: Setting this option to 'yes' is equivalent 630 <b>USECOLOR=<c>[yes|no]</c></b>: Setting this option to 'yes' is equivalent
619 to the <c>--color</c> flag, which colors genkernel's output to ease 631 to the <c>--color</c> flag, which colors genkernel's output to ease
620 debugging (when needed.) 632 debugging (when needed.)
621 </li> 633 </li>
622 <li> 634 <li>
623 <b>DEBUGLEVEL=<c>[0|1|2|3|4|5]</c></b>: This option is for adjusting the 635 <b>LOGLEVEL=<c>[0|1|2|3|4|5]</c></b>: This option is for adjusting the
624 verbosity of the output produced by genkernel &mdash; setting this option to 636 verbosity of the output produced by genkernel &mdash; setting this option to
625 '0' with <c>--debuglevel=0</c> will suppress all output produced by 637 '0' with <c>--loglevel=0</c> will suppress all output produced by
626 genkernel; setting this option to '5' with <c>--debuglevel=5</c> provides 638 genkernel; setting this option to '5' with <c>--loglevel=5</c> provides
627 the user with all output produced by genkernel. 639 the user with all output produced by genkernel.
628 </li> 640 </li>
629</ul> 641</ul>
642
643<note>
644More options are described in <path>/etc/genkernel.conf</path>.
645</note>
630 646
631<p> 647<p>
632By choosing the appropriate options in <path>/etc/genkernel.conf</path>, you 648By choosing the appropriate options in <path>/etc/genkernel.conf</path>, you
633can halve the number of flags passed to genkernel from the command line: 649can halve the number of flags passed to genkernel from the command line:
634</p> 650</p>
635 651
636<pre caption="Running genkernel (with flags), after employing genkernel.conf"> 652<pre caption="Running genkernel (with flags), after employing genkernel.conf">
637# <i>genkernel --gensplash --kerneldir=/path/to/alternate/kernel/sources \ 653# <i>genkernel --splash --kerneldir=/path/to/alternate/kernel/sources \
638--kernel-config=/path/to/preferred/configfile --install all</i> 654--kernel-config=/path/to/preferred/configfile --install all</i>
639</pre> 655</pre>
640 656
641<p> 657<p>
642Identical results are obtained from both approaches, but the latter has most of 658Identical results are obtained from both approaches, but the latter has most of
783the <c>modules-X.Y.Z.tar.gz</c> archive to the <path>/nfs/livecd/add/</path> 799the <c>modules-X.Y.Z.tar.gz</c> archive to the <path>/nfs/livecd/add/</path>
784directory. 800directory.
785</p> 801</p>
786 802
787<pre caption="Preparing the NFS share"> 803<pre caption="Preparing the NFS share">
788<comment>(This assumes that /nfs/livecd is a exported NFS share)</comment> 804<comment>(This assumes that /nfs/livecd is an exported NFS share)</comment>
789# <i>mount /tmp/gentoo-livecd.iso /mnt/cdrom -o loop</i> 805# <i>mount /tmp/gentoo-livecd.iso /mnt/cdrom -o loop</i>
790# <i>cp -p /mnt/cdrom /nfs/livecd</i> 806# <i>cp -p /mnt/cdrom /nfs/livecd</i>
791# <i>umount /mnt/cdrom</i> 807# <i>umount /mnt/cdrom</i>
792 808
793<comment>(Copy the modules.tar.gz into /add)</comment> 809<comment>(Copy the modules.tar.gz into /add)</comment>
870</p> 886</p>
871 887
872</body> 888</body>
873</section> 889</section>
874</chapter> 890</chapter>
875
876</guide> 891</guide>

Legend:
Removed from v.1.27  
changed lines
  Added in v.1.35

  ViewVC Help
Powered by ViewVC 1.1.20