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