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