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