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