Penguin
Blame: make-kpkg(1)
EditPageHistoryDiffInfoLikePages
Annotated edit history of make-kpkg(1) version 6, including all changes. View license author blame.
Rev Author # Line
3 perry 1 MAKE-KPKG
2 !!!MAKE-KPKG
3 NAME
4 SYNOPSIS
5 DESCRIPTION
6 OPTIONS
7 TARGETS
8 ENVIRONMENT VARIABLES
9 FILES
10 SEE ALSO
11 AUTHOR
12 ----
13 !!NAME
14
15
16 make-kpkg - build Debian kernel packages from Linux kernel sources
17 !!SYNOPSIS
18
19
20 __make-kpkg__ ''[[options]'' [[target [[target
21 ...]]
22 !!DESCRIPTION
23
24
25 This manual page explains the Debian __make-kpkg__
26 utility, which is used to create the kernel related Debian
27 packages. This utility needs to be run from a top level
28 Linux kernel source directory.
29 !!OPTIONS
30
31
32 __--help__ Print out a usage message.
33
34
35 __--revision__ number
36
37
38 Changes the Debian revision number for the packages produced
39 to the argument __number.__ This has certain constraints:
40 the --revision option only has an effect during the
41 configure phase (in other words, if a file called
42 ''stamp-configure'' exists, this option has no effect --
43 run __make-kpkg clean__ or manually remove
44 ''stamp-configure'' and ''stamp-debian'' for it to
45 have an effect -- I strongly suggest you run __make-kpkg
46 clean__ unless you know what you are doing). Additionally,
47 official source package maintainers provide their own
48 version numbers and data for the official uploads, and hence
49 a number of things, including the __Debian__ revision, is
50 not modified by __make-kpkg.__ If you happen to have an
51 official source, (that would mean that the file
52 ''debian/official'' exists), and want to use your own
53 revision number, make sure you remove ''debian/official''
54 before running __make-kpkg clean__ for this option to
55 have an effect. So, if you want to re-run __make-kpkg__
56 with a different revision number, you have to make sure you
57 start with a clean slate. Secondly, the version may contain
58 only alphanumerics and the characters + . (full stop and
59 plus) and must contain a digit. (Look at the Policy manual
60 for details). ''Actually, that is a lie: official kernel
61 and modules maintainers have special dispensation to use
62 hyphens, but it is strongly deprecated for most people,
63 since no sanitization of the version number is done, and
64 dpkg and friends may choke on it at the end of the compile
65 unless one knows what one is doing.'' Optionally, you may
66 prepend the revision with a digit followed by a colon (:).
67 The default is __1.00.Custom__ unless the env variable
68 __DEBIAN_REVISION_MANDATORY__ is set, in which case an
69 error is generated if the revision is not set on the command
70 line or the config file.
71
72
73 __--append-to-version__ foo
74
75
76 __--append_to_version__ foo
77
78
79 This argument ( __foo__ ) is appended to the value of the
80 EXTRAVERSION variable present in the kernel Makefile. Since
81 EXTRAVERSION is a component of the kernel version, it is
82 also added to the Debian package name, and, as such must
83 obey the policy governing the package name. That means it
84 may contain only __lowercase__ alphanumerics and the
85 characters - + . (full stop, hyphen, and plus). Uppercase
86 letters are not permitted under the Policy for a new
87 package. This over rides the environment variable
88 __APPEND_TO_VERSION__ Please note that you
89 __must__ run a __make-kpkg__
90 ''clean'' after configuring the kernel using ''make
91 (x|menu)?config,'' since that creates the file
92 ''include/linux/version.h'' __without__ the
93 ''append_to_version'' data (foo). This file won't be
94 updated by the make-kpkg run (make-kpkg creates version.h if
95 it doesn't exist, but doesn't touch if exists), so the final
96 kernel will _not_ have the append_to_version data in its
97 version number it shall look for the modules and symbols in
98 all the wrong places. The simpliest solution is either to
99 remove include/linux/version.h after configuring and before
100 compiling, or running __make-kpkg clean__ after
101 configuring, before compiling. __Note__ also that once
102 you use __--append_to_version__ foo for configuring, or
103 building the kernel-image, you need to also use the same
104 option in any later invocation of make-kpkg (say, for
105 building stand alone modules, or something).
106 __make-kpkg__ does not remember the argument foo in
107 between invocations (this is different from the behaviour of
108 --revision, which we do remember in between invocations). If
109 you are annoyed by make-kpkg whining about using
110 __--append_to_version__ and there already being a file
111 from before, you can set the environment variable
112 __VERSION_H_OK__ which shall shut off the
113 warning.
114
115
116 __--flavour foo__
117
118
119 This option is now deprecated in favour of
120 __--append_to_version.__ Sets the kernel flavour to the
121 argument __foo__. The flavour is also appended to the
122 package name. You need a patched Makefile to make this work
123 properly (see /usr/share/doc/kernel-package/
124 Flavours .gz). It may contain only
125 __lowercase__ alphanumerics and the characters - + .
126 (full stop, hyphen, and plus). Uppercase letter are not
127 permitted under the Policy for a new package.
128 __NOTE__ : Hyphens are discouraged. (Look
129 at Chapters 4 of the Policy manual for details). Please note
130 that you shall need to __make-kpkg__ ''clean''
131 __FIRST__ if you wish to recompile the kernel-image using
132 a flavour.
133
134
135 __--added-modules foo__
136
137
138 __--added_modules foo__
139
140
141 The argument should be a comma separated list of additional
142 add-on modules (not in the main kernel tree) that you wish
143 to build when you invoke the modules_blah targets. You may
144 give full path names of the directory the modules reside in,
145 or just the module name if it can be found in
146 __MODULE_LOC,__ which defaults to
147 ''/usr/src/modules.'' The default is that all modules in
148 __MODULE_LOC,__ are compiled when the modules_blah
149 targets are invoked.
150
151
152 __--added-patches foo__
153
154
155 __--added_patches foo__
156
157
158 The argument should be a comma separated list of additional
159 patches to the kernel sources. This requires the
160 ''patch_the_kernel'' configuration option to be set to
161 YES (this, in turn, can be overridden by the environment
162 variable __PATCH_THE_KERNEL__ ).
163
164
165 Unlike the treatment of the modules, you may only give the
166 patch name (not the full path name of the patch file). It
167 shall be applied during the configure phase (and removed in
168 the clean phase) if it can be found in the directories
169 __ALL_PATCH_DIR/{apply,unpatch}/,__ which defaults to a
170 subdirectory of ''/usr/src/kernel-patches/.'' The default
171 is that all patches are applied if requested (Either by
172 setting the configuration option __patch_the_kernel__ or
173 the env variable __PATCH_THE_KERNEL__ to YES). Please
174 note that the patches are uninstalled from the source when
175 you run the clean target. This cleanup can be prevented by
176 setting the env variable
177 __NO_UNPATCH_BY_DEFAULT__
178
179
180 Some times it would be convenient to have the patches
181 applied when one asks for specific patches using this
182 option, without also having to explicitly set the
183 envirnonment variable. Since setting the environment
184 variable __PATCH_THE_KERNEL__ to YES could be dangerous,
185 (for in that case all patches may be installed when you want
186 none, and did not specify the applied_pacthes option), You
187 may also set the variable PATCH_THE_KERNEL to ''AUTO,''
188 in which case PATCH_THE_KERNEL shall be set to YES for you
189 when you invoke __--added-patches foo,__ but not
190 otherwise.
191
192
193 __--arch foo__
194
195
196 This is useful for setting the architecture when you are
197 cross compiling. If you are not cross compiling, the
198 architecture is determined automatically. The same effect
199 can be achieved by setting the environment variable
200 __KPKG_ARCH__
201
202
203 __--cross-compile foo__
204
205
206 __--cross_compile foo__
207
208
209 This is useful for setting the target string when you are
210 cross compiling. The same effect can be achieved by setting
211 the environment variable __CROSS_COMPILE__
212
213
214 __--subarch foo__
215
216
217 Some architectures (the Alpha, and the m68k) require a
218 different kernel for each subarchitecture. This option
219 provides a way of specifying it as an argument to
220 __make-kpkg__. __Please note__ that additional support
221 for subarchitectures may be required in the kernel sources
222 to actually make this do anything. The same effect can be
223 achieved by setting the environment variable
224 __KPKG_SUBARCH__
225
226
227 __--arch-in-name__
228
229
230 __--arch_in_name__
231
232
233 This option uses an extended name for the kernel image
234 package by embedding the subarchitecture in the image name,
235 so one could write a script to create multiple
236 subarchitectures one after the other. You may also do this
237 by setting the environment variable __ARCH_IN_NAME. Please
238 note__ that only the package ''name'' is affected, not
239 modules locations etc.
240
241
242 __--pgpsign__ name
243
244
245 Set the string used to sign the __changes__ file for any
246 external modules in ''/usr/src/modules/'' using PGP. This
247 option will override the builtin default and the site wide
248 customizations stored in the file
249 ''/etc/kernel-pkg.conf'' or
250 ''~/.kernel-pkg.conf.''
251
252
253 __--config__ target
254
255
256 Change the type of configure done from the default
257 oldconfig. ''target'' must be one of
258 oldconfig, config, menuconfig,
259 xconfig; or old, menu, or
260 x. This option is particularly useful when using
261 PATCH_THE_KERNEL if some of the patches
262 change what configuration options are
263 available.
264
265
266 __--targets__
267
268
269 Prints out a list of known targets. See the Section
270 __Targets__ below.
271
272
273 __--noexec__
274
275
276 Pass a __-n__ option to the ''make'' process so that
277 commands are merely printed to the screen but not actually
278 executed. This is very useful for debugging.
279
280
281 __--initrd__
282
283
284 If __make-kpkg__ is generating a ''kernel-image''
285 package, perform any actions necessary for a kernel loaded
286 using __initrd.__ This may include extra dependencies,
287 and modifications to maintainer scripts. It has no effect
288 when __make-kpkg is not making a__ ''kernel-image''
289 package. The same effect can be achieved by setting the
290 environment variable __INITRD__ to any non empty value.
291 To avoid a warning at install time, please read
292 kernel-img.conf(5), and add a ''warn_initrd'' directive
293 in that file.
294
295
296 __--zimage__
297
298
299 Makes a zImage kernel rather than a bzImage kernel (the
300 default). Useful for people having problems with bzImage
301 kernels.
302
303
304 __--bzimage__
305
306
307 Makes a bzImage kernel. Useful for people who want a bzImage
308 kernel on sites where the default is zImage
309 kernels.
310
311
312 __--rootcmd foo__
313
314
315 The command that provides a means of gaining super user
316 access (for example, `sudo' or `fakeroot') as needed by
317 dpkg-buildpackages' -r option.
318
319
320 __--us__
321
322
323 This option is passed to dpkg-buildpackage, and directs that
324 package not to sign the source. This is only relevant for
325 the buildpackage target.
326
327
328 __--uc__
329
330
331 This option is passed to dpkg-buildpackage, and directs that
332 package not to sign the changelog. This is only relevant for
333 the buildpackage target.
334
335
336 The options maybe shortened to the smallest unique string,
337 and may be entered with either a - or a -- prefix, and you
338 may use a space or an = symbol between an option string and
339 a value. You may also use the form option=value; for details
340 these and other variant forms supported, please read man
341 Getopt::Long (3perl).
342 !!TARGETS
343
344
345 __clean__
346
347
348 Cleans the kernel source directory of all files created by
349 target __build,__ and runs a make distclean. (Please look
350 at a Linux kernel Makefile for details). Please note that
351 although we take care of the list of current kernel
352 configuration contained in the file ''.config,'' the file
353 ''include/linux/autoconf.h'' is not
354 preserved.
355
356
357 __buildpackage__
358
359
360 This target runs the targets __clean,__ and
361 __binary,__ and produces the complete package using
362 __dpkg-buildpackage__
363
364
365 __binary__
366
367
368 This target produces all four Debian kernel packages by
369 running the targets __kernel_source, kernel_headers,
370 kernel_doc__ and __kernel_image.__
371
372
373 __kernel_source__
374
375
376 This target produces a debianised package of the Linux
377 kernel sources.
378
379
380 __kernel_headers__
381
382
383 This target produces a Debian package containing the header
384 files included in the Linux kernel.
385
386
387 __kernel_doc__
388
389
390 This target produces a Debian package containing the
391 documentation included in the Linux kernel.
392
393
394 __kernel_image__
395
396
397 This target produces a Debian package of the Linux kernel
398 source image, and any modules configured in the kernel
399 configuration file ''.config.'' If there is no
400 ''.config'' file in the kernel source directory, a
401 default configuration is provided similar to the one used to
402 create the __Debian__ boot-floppies. At install time, it
403 updates symbolic links in the symlink destination directory
404 (the root directory by default) to point to the new kernel
405 image in the image directory, which is nominally
406 ''/boot.'' If the symbolic link already points to the
407 current kernel image, no action is taken. If a prior
408 symbolic link exists, it is rotated out with a suffix.old,
409 and a new symbolic link, properly updated is installed in
410 its place (the variable minimal_swap in
411 ''/etc/kernel-img.conf'' further modifies this
412 behaviour). On installation, it also offers to run the Linux
413 loader, ''LILO'' (or alternates like ''loadlin, SILO,
414 QUIK, VMELILO, ZIPL, yaboot, PALO'' or ''GRUB'' ),
415 creating a configuration file for supported boot loaders if
416 needed. At that time it also offers to put the new kernel on
417 a floppy, formatting the floppy if needed. On deletion, the
418 package checks the version of the kernel running, and
419 refuses to delete a running kernel. ''grub'' rates a
420 special mention here, since grub may not need to be rerun
421 after installing a kernel image, though an automated change
422 to the menu list would be nice on install and removal of
423 kernel image packages. Please see the documentation about
424 hooks in __kernel-img.conf(5).__ These hooks are
425 variables that can be pointed to scripts that add or remove
426 a line from the grub menu list at kernel image install and
427 remove times. A sample script to add lines to a grub menu
428 file is included in the dir
429
430
431 __build__
432
433
434 This target, used by target __kernel_image__ above,
435 compiles the Linux kernel image.
436
437
438 __modules__
439
440
441 This target allows you to build all add-on modules and
442 packages that are very dependent on the precise kernel
443 version they are compiled for at the same time you build
444 your kernel image. This target expects to find the modules
445 or packages under /usr/src/modules, and, for all such
446 directories, changes to /usr/src/modules/x, and runs the
447 __kdist__ rule in the local ''debian.rules'' file.
448 This target should create the __Debian__ module
449 package(s), and may also produce a compressed tar file, and
450 a compressed diff file, with ''md5sums'' recorded in a
451 changes file using __dpkg-genchanges.__ The file is
452 signed by the same identity that would be used to sign the
453 kernel packages. This option is used by maintainers
454 uploading the package to the Debian archives.
455
456
457 __modules_config__
458
459
460 This target allows you to configure all packages under
461 __/usr/src/modules.__ This is useful if you need to
462 manually modify some aspects of the configuration, or if you
463 want to manually compile the add on modules.
464
465
466 __modules_image__
467
468
469 This target allows you to build all packages under
470 __/usr/src/modules,__ but does not create the source or
471 diff files, and does not create and sign a changes file.
472 This is the only modules related option you need if you just
473 want to compile the add on modules image files for
474 installation on one or more machines. Generally called
475 inconjunction with __kernel_image,__ especially if also
476 using the option __append_to_version__ (prevents spurious
477 warnings).
478
479
480 __modules_clean__
481
482
483 This target allows you to clean all packages under
484 __/usr/src/modules,__ and this sould be all that is
485 needed to undo the effect of any of the other modules_
486 targets.
487
488
489 __configure__
490
491
492 This target runs configure (actually, __config_target,__
493 set by __--config__ which defaults to ''oldconfig'' )
494 early, so you may edit files generated by __make config__
495 in the kernel source directory and not have them stomped by
496 __make-kpkg__ later.
497
498
499 __debian__
500
501
502 This target creates the ''./debian'' directory, and
503 optionally patches the source. This is called by the
504 __configure__ target. You may use this target to have the
505 sources patched, and then manually run the configuration
506 step.
507
508
509 __libc-kheaders__
510
511
512 This is a special target for the libc-dev maintainer, who
513 can use it to create the headers package that libc needs.
514 Please note that it is dangerous to create a libc-kheaders
515 package that is different fomr the headers libc was compiled
516 with; it is __known__ to subtly break systems. Please
517 look at ''/usr/share/kernel-package/README.headers'' for
518 details. Creating and installing a self created
519 libc-kheaders package may break your system unless you know
520 what you are doing. You have been warned.
521 !!ENVIRONMENT VARIABLES
522
523
524 The following variables (documented aboce) affect
525 __make-kpkg:__ ''DEBIAN_REVISION_MANDATORY
526 APPEND_TO_VERSION VERSION_H_OK PATCH_THE_KERNEL
527 NO_UNPATCH_BY_DEFAULT KPKG_ARCH CROSS_COMPILE KPKG_SUBARCH
528 ARCH_IN_NAME INITRD''
529 !!FILES
530
531
532 Apart from the runtime options, the ''debian.rules'' file
533 run by __make-kpkg__ also looks for a per user
534 configuration file ''~/.kernel-pkg.conf.'' Failing that,
535 it looks for site-wide defaults in the file
536 ''/etc/kernel-pkg.conf.'' The default configuration
537 allows there to be a site wide override for the full name
538 and email address of the person responsible for maintaining
539 the kernel packages on the site, but the
540 ''/etc/kernel-pkg.conf'' (or ''~/.kernel-pkg.conf.'' )
541 file is actually a Makefile snippet, and any legal make
542 directives may be included in there. __Note:__ Caution is
543 urged with this file, since you can totally change the way
544 that the make is run by suitably editing this file. Please
545 look at ''/usr/share/doc/kernel-package/Problems.gz'' for
546 a list of known problems while compiling kernel images.
547 Extensive tutorial like documentation is also available in
548 ''/usr/share/doc/kernel-package/README.gz'' and it is
549 recommended that one read that before using this
550 utility.
551 !!SEE ALSO
552
553
4 perry 554 kernel-pkg.conf(5), __kernel-img.conf__(5),
555 Getopt::Long(3perl), __dpkg-deb__(1),
556 dpkg-source(1), make(1), __The Programmers
3 perry 557 manual, The GNU Make manual,__ and the extensive
558 documentation in the directory
559 __/usr/share/doc/kernel-package__
560 !!AUTHOR
561
562
563 This manual page was written by Manoj Srivastava
564 ----
5 EthanGlasserCamp 565
6 RobSharp 566 make-kpkg builds packages with files which have root ownership and so forth. Therefore, to use make-kpkg, you need to either have root permissions, or use fakeroot. Here's kind of a walkthrough: http://www.differentpla.net/node/view/153
5 EthanGlasserCamp 567
568 --EthanGlasserCamp
This page is a man page (or other imported legacy content). We are unable to automatically determine the license status of this page.