xref: /linux/Documentation/Changes (revision aa23aa55166c2865ac430168c4b9d405cf8c6980)
1.. _changes:
2
3Minimal requirements to compile the Kernel
4++++++++++++++++++++++++++++++++++++++++++
5
6Intro
7=====
8
9This document is designed to provide a list of the minimum levels of
10software necessary to run the 4.x kernels.
11
12This document is originally based on my "Changes" file for 2.0.x kernels
13and therefore owes credit to the same people as that file (Jared Mauch,
14Axel Boldt, Alessandro Sigala, and countless other users all over the
15'net).
16
17Current Minimal Requirements
18****************************
19
20Upgrade to at **least** these software revisions before thinking you've
21encountered a bug!  If you're unsure what version you're currently
22running, the suggested command should tell you.
23
24Again, keep in mind that this list assumes you are already functionally
25running a Linux kernel.  Also, not all tools are necessary on all
26systems; obviously, if you don't have any ISDN hardware, for example,
27you probably needn't concern yourself with isdn4k-utils.
28
29====================== ===============  ========================================
30        Program        Minimal version       Command to check the version
31====================== ===============  ========================================
32GNU C                  4.6              gcc --version
33GNU make               3.81             make --version
34binutils               2.21             ld -v
35flex                   2.5.35           flex --version
36bison                  2.0              bison --version
37util-linux             2.10o            fdformat --version
38kmod                   13               depmod -V
39e2fsprogs              1.41.4           e2fsck -V
40jfsutils               1.1.3            fsck.jfs -V
41reiserfsprogs          3.6.3            reiserfsck -V
42xfsprogs               2.6.0            xfs_db -V
43squashfs-tools         4.0              mksquashfs -version
44btrfs-progs            0.18             btrfsck
45pcmciautils            004              pccardctl -V
46quota-tools            3.09             quota -V
47PPP                    2.4.0            pppd --version
48isdn4k-utils           3.1pre1          isdnctrl 2>&1|grep version
49nfs-utils              1.0.5            showmount --version
50procps                 3.2.0            ps --version
51oprofile               0.9              oprofiled --version
52udev                   081              udevd --version
53grub                   0.93             grub --version || grub-install --version
54mcelog                 0.6              mcelog --version
55iptables               1.4.2            iptables -V
56openssl & libcrypto    1.0.0            openssl version
57bc                     1.06.95          bc --version
58Sphinx\ [#f1]_	       1.3		sphinx-build --version
59====================== ===============  ========================================
60
61.. [#f1] Sphinx is needed only to build the Kernel documentation
62
63Kernel compilation
64******************
65
66GCC
67---
68
69The gcc version requirements may vary depending on the type of CPU in your
70computer.
71
72Make
73----
74
75You will need GNU make 3.81 or later to build the kernel.
76
77Binutils
78--------
79
80Binutils 2.21 or newer is needed to build the kernel.
81
82pkg-config
83----------
84
85The build system, as of 4.18, requires pkg-config to check for installed
86kconfig tools and to determine flags settings for use in
87'make {g,x}config'.  Previously pkg-config was being used but not
88verified or documented.
89
90Flex
91----
92
93Since Linux 4.16, the build system generates lexical analyzers
94during build.  This requires flex 2.5.35 or later.
95
96
97Bison
98-----
99
100Since Linux 4.16, the build system generates parsers
101during build.  This requires bison 2.0 or later.
102
103Perl
104----
105
106You will need perl 5 and the following modules: ``Getopt::Long``,
107``Getopt::Std``, ``File::Basename``, and ``File::Find`` to build the kernel.
108
109BC
110--
111
112You will need bc to build kernels 3.10 and higher
113
114
115OpenSSL
116-------
117
118Module signing and external certificate handling use the OpenSSL program and
119crypto library to do key creation and signature generation.
120
121You will need openssl to build kernels 3.7 and higher if module signing is
122enabled.  You will also need openssl development packages to build kernels 4.3
123and higher.
124
125
126System utilities
127****************
128
129Architectural changes
130---------------------
131
132DevFS has been obsoleted in favour of udev
133(http://www.kernel.org/pub/linux/utils/kernel/hotplug/)
134
13532-bit UID support is now in place.  Have fun!
136
137Linux documentation for functions is transitioning to inline
138documentation via specially-formatted comments near their
139definitions in the source.  These comments can be combined with ReST
140files the Documentation/ directory to make enriched documentation, which can
141then be converted to PostScript, HTML, LaTex, ePUB and PDF files.
142In order to convert from ReST format to a format of your choice, you'll need
143Sphinx.
144
145Util-linux
146----------
147
148New versions of util-linux provide ``fdisk`` support for larger disks,
149support new options to mount, recognize more supported partition
150types, have a fdformat which works with 2.4 kernels, and similar goodies.
151You'll probably want to upgrade.
152
153Ksymoops
154--------
155
156If the unthinkable happens and your kernel oopses, you may need the
157ksymoops tool to decode it, but in most cases you don't.
158It is generally preferred to build the kernel with ``CONFIG_KALLSYMS`` so
159that it produces readable dumps that can be used as-is (this also
160produces better output than ksymoops).  If for some reason your kernel
161is not build with ``CONFIG_KALLSYMS`` and you have no way to rebuild and
162reproduce the Oops with that option, then you can still decode that Oops
163with ksymoops.
164
165Mkinitrd
166--------
167
168These changes to the ``/lib/modules`` file tree layout also require that
169mkinitrd be upgraded.
170
171E2fsprogs
172---------
173
174The latest version of ``e2fsprogs`` fixes several bugs in fsck and
175debugfs.  Obviously, it's a good idea to upgrade.
176
177JFSutils
178--------
179
180The ``jfsutils`` package contains the utilities for the file system.
181The following utilities are available:
182
183- ``fsck.jfs`` - initiate replay of the transaction log, and check
184  and repair a JFS formatted partition.
185
186- ``mkfs.jfs`` - create a JFS formatted partition.
187
188- other file system utilities are also available in this package.
189
190Reiserfsprogs
191-------------
192
193The reiserfsprogs package should be used for reiserfs-3.6.x
194(Linux kernels 2.4.x). It is a combined package and contains working
195versions of ``mkreiserfs``, ``resize_reiserfs``, ``debugreiserfs`` and
196``reiserfsck``. These utils work on both i386 and alpha platforms.
197
198Xfsprogs
199--------
200
201The latest version of ``xfsprogs`` contains ``mkfs.xfs``, ``xfs_db``, and the
202``xfs_repair`` utilities, among others, for the XFS filesystem.  It is
203architecture independent and any version from 2.0.0 onward should
204work correctly with this version of the XFS kernel code (2.6.0 or
205later is recommended, due to some significant improvements).
206
207PCMCIAutils
208-----------
209
210PCMCIAutils replaces ``pcmcia-cs``. It properly sets up
211PCMCIA sockets at system startup and loads the appropriate modules
212for 16-bit PCMCIA devices if the kernel is modularized and the hotplug
213subsystem is used.
214
215Quota-tools
216-----------
217
218Support for 32 bit uid's and gid's is required if you want to use
219the newer version 2 quota format.  Quota-tools version 3.07 and
220newer has this support.  Use the recommended version or newer
221from the table above.
222
223Intel IA32 microcode
224--------------------
225
226A driver has been added to allow updating of Intel IA32 microcode,
227accessible as a normal (misc) character device.  If you are not using
228udev you may need to::
229
230  mkdir /dev/cpu
231  mknod /dev/cpu/microcode c 10 184
232  chmod 0644 /dev/cpu/microcode
233
234as root before you can use this.  You'll probably also want to
235get the user-space microcode_ctl utility to use with this.
236
237udev
238----
239
240``udev`` is a userspace application for populating ``/dev`` dynamically with
241only entries for devices actually present. ``udev`` replaces the basic
242functionality of devfs, while allowing persistent device naming for
243devices.
244
245FUSE
246----
247
248Needs libfuse 2.4.0 or later.  Absolute minimum is 2.3.0 but mount
249options ``direct_io`` and ``kernel_cache`` won't work.
250
251Networking
252**********
253
254General changes
255---------------
256
257If you have advanced network configuration needs, you should probably
258consider using the network tools from ip-route2.
259
260Packet Filter / NAT
261-------------------
262The packet filtering and NAT code uses the same tools like the previous 2.4.x
263kernel series (iptables).  It still includes backwards-compatibility modules
264for 2.2.x-style ipchains and 2.0.x-style ipfwadm.
265
266PPP
267---
268
269The PPP driver has been restructured to support multilink and to
270enable it to operate over diverse media layers.  If you use PPP,
271upgrade pppd to at least 2.4.0.
272
273If you are not using udev, you must have the device file /dev/ppp
274which can be made by::
275
276  mknod /dev/ppp c 108 0
277
278as root.
279
280Isdn4k-utils
281------------
282
283Due to changes in the length of the phone number field, isdn4k-utils
284needs to be recompiled or (preferably) upgraded.
285
286NFS-utils
287---------
288
289In ancient (2.4 and earlier) kernels, the nfs server needed to know
290about any client that expected to be able to access files via NFS.  This
291information would be given to the kernel by ``mountd`` when the client
292mounted the filesystem, or by ``exportfs`` at system startup.  exportfs
293would take information about active clients from ``/var/lib/nfs/rmtab``.
294
295This approach is quite fragile as it depends on rmtab being correct
296which is not always easy, particularly when trying to implement
297fail-over.  Even when the system is working well, ``rmtab`` suffers from
298getting lots of old entries that never get removed.
299
300With modern kernels we have the option of having the kernel tell mountd
301when it gets a request from an unknown host, and mountd can give
302appropriate export information to the kernel.  This removes the
303dependency on ``rmtab`` and means that the kernel only needs to know about
304currently active clients.
305
306To enable this new functionality, you need to::
307
308  mount -t nfsd nfsd /proc/fs/nfsd
309
310before running exportfs or mountd.  It is recommended that all NFS
311services be protected from the internet-at-large by a firewall where
312that is possible.
313
314mcelog
315------
316
317On x86 kernels the mcelog utility is needed to process and log machine check
318events when ``CONFIG_X86_MCE`` is enabled. Machine check events are errors
319reported by the CPU. Processing them is strongly encouraged.
320
321Kernel documentation
322********************
323
324Sphinx
325------
326
327Please see :ref:`sphinx_install` in :ref:`Documentation/doc-guide/sphinx.rst <sphinxdoc>`
328for details about Sphinx requirements.
329
330Getting updated software
331========================
332
333Kernel compilation
334******************
335
336gcc
337---
338
339- <ftp://ftp.gnu.org/gnu/gcc/>
340
341Make
342----
343
344- <ftp://ftp.gnu.org/gnu/make/>
345
346Binutils
347--------
348
349- <https://www.kernel.org/pub/linux/devel/binutils/>
350
351Flex
352----
353
354- <https://github.com/westes/flex/releases>
355
356Bison
357-----
358
359- <ftp://ftp.gnu.org/gnu/bison/>
360
361OpenSSL
362-------
363
364- <https://www.openssl.org/>
365
366System utilities
367****************
368
369Util-linux
370----------
371
372- <https://www.kernel.org/pub/linux/utils/util-linux/>
373
374Kmod
375----
376
377- <https://www.kernel.org/pub/linux/utils/kernel/kmod/>
378- <https://git.kernel.org/pub/scm/utils/kernel/kmod/kmod.git>
379
380Ksymoops
381--------
382
383- <https://www.kernel.org/pub/linux/utils/kernel/ksymoops/v2.4/>
384
385Mkinitrd
386--------
387
388- <https://code.launchpad.net/initrd-tools/main>
389
390E2fsprogs
391---------
392
393- <http://prdownloads.sourceforge.net/e2fsprogs/e2fsprogs-1.29.tar.gz>
394
395JFSutils
396--------
397
398- <http://jfs.sourceforge.net/>
399
400Reiserfsprogs
401-------------
402
403- <http://www.kernel.org/pub/linux/utils/fs/reiserfs/>
404
405Xfsprogs
406--------
407
408- <ftp://oss.sgi.com/projects/xfs/>
409
410Pcmciautils
411-----------
412
413- <https://www.kernel.org/pub/linux/utils/kernel/pcmcia/>
414
415Quota-tools
416-----------
417
418- <http://sourceforge.net/projects/linuxquota/>
419
420
421Intel P6 microcode
422------------------
423
424- <https://downloadcenter.intel.com/>
425
426udev
427----
428
429- <http://www.freedesktop.org/software/systemd/man/udev.html>
430
431FUSE
432----
433
434- <https://github.com/libfuse/libfuse/releases>
435
436mcelog
437------
438
439- <http://www.mcelog.org/>
440
441Networking
442**********
443
444PPP
445---
446
447- <ftp://ftp.samba.org/pub/ppp/>
448
449Isdn4k-utils
450------------
451
452- <ftp://ftp.isdn4linux.de/pub/isdn4linux/utils/>
453
454NFS-utils
455---------
456
457- <http://sourceforge.net/project/showfiles.php?group_id=14>
458
459Iptables
460--------
461
462- <http://www.iptables.org/downloads.html>
463
464Ip-route2
465---------
466
467- <https://www.kernel.org/pub/linux/utils/net/iproute2/>
468
469OProfile
470--------
471
472- <http://oprofile.sf.net/download/>
473
474NFS-Utils
475---------
476
477- <http://nfs.sourceforge.net/>
478
479Kernel documentation
480********************
481
482Sphinx
483------
484
485- <http://www.sphinx-doc.org/>
486