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