blob: 73fcdcd52b879132872b6f8ad062a672dd68cf0f [file] [log] [blame]
rjw1f884582022-01-06 17:20:42 +08001.. _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
36kmod 13 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
144Mkinitrd
145--------
146
147These changes to the ``/lib/modules`` file tree layout also require that
148mkinitrd be upgraded.
149
150E2fsprogs
151---------
152
153The latest version of ``e2fsprogs`` fixes several bugs in fsck and
154debugfs. Obviously, it's a good idea to upgrade.
155
156JFSutils
157--------
158
159The ``jfsutils`` package contains the utilities for the file system.
160The following utilities are available:
161
162- ``fsck.jfs`` - initiate replay of the transaction log, and check
163 and repair a JFS formatted partition.
164
165- ``mkfs.jfs`` - create a JFS formatted partition.
166
167- other file system utilities are also available in this package.
168
169Reiserfsprogs
170-------------
171
172The reiserfsprogs package should be used for reiserfs-3.6.x
173(Linux kernels 2.4.x). It is a combined package and contains working
174versions of ``mkreiserfs``, ``resize_reiserfs``, ``debugreiserfs`` and
175``reiserfsck``. These utils work on both i386 and alpha platforms.
176
177Xfsprogs
178--------
179
180The latest version of ``xfsprogs`` contains ``mkfs.xfs``, ``xfs_db``, and the
181``xfs_repair`` utilities, among others, for the XFS filesystem. It is
182architecture independent and any version from 2.0.0 onward should
183work correctly with this version of the XFS kernel code (2.6.0 or
184later is recommended, due to some significant improvements).
185
186PCMCIAutils
187-----------
188
189PCMCIAutils replaces ``pcmcia-cs``. It properly sets up
190PCMCIA sockets at system startup and loads the appropriate modules
191for 16-bit PCMCIA devices if the kernel is modularized and the hotplug
192subsystem is used.
193
194Quota-tools
195-----------
196
197Support for 32 bit uid's and gid's is required if you want to use
198the newer version 2 quota format. Quota-tools version 3.07 and
199newer has this support. Use the recommended version or newer
200from the table above.
201
202Intel IA32 microcode
203--------------------
204
205A driver has been added to allow updating of Intel IA32 microcode,
206accessible as a normal (misc) character device. If you are not using
207udev you may need to::
208
209 mkdir /dev/cpu
210 mknod /dev/cpu/microcode c 10 184
211 chmod 0644 /dev/cpu/microcode
212
213as root before you can use this. You'll probably also want to
214get the user-space microcode_ctl utility to use with this.
215
216udev
217----
218
219``udev`` is a userspace application for populating ``/dev`` dynamically with
220only entries for devices actually present. ``udev`` replaces the basic
221functionality of devfs, while allowing persistent device naming for
222devices.
223
224FUSE
225----
226
227Needs libfuse 2.4.0 or later. Absolute minimum is 2.3.0 but mount
228options ``direct_io`` and ``kernel_cache`` won't work.
229
230Networking
231**********
232
233General changes
234---------------
235
236If you have advanced network configuration needs, you should probably
237consider using the network tools from ip-route2.
238
239Packet Filter / NAT
240-------------------
241The packet filtering and NAT code uses the same tools like the previous 2.4.x
242kernel series (iptables). It still includes backwards-compatibility modules
243for 2.2.x-style ipchains and 2.0.x-style ipfwadm.
244
245PPP
246---
247
248The PPP driver has been restructured to support multilink and to
249enable it to operate over diverse media layers. If you use PPP,
250upgrade pppd to at least 2.4.0.
251
252If you are not using udev, you must have the device file /dev/ppp
253which can be made by::
254
255 mknod /dev/ppp c 108 0
256
257as root.
258
259Isdn4k-utils
260------------
261
262Due to changes in the length of the phone number field, isdn4k-utils
263needs to be recompiled or (preferably) upgraded.
264
265NFS-utils
266---------
267
268In ancient (2.4 and earlier) kernels, the nfs server needed to know
269about any client that expected to be able to access files via NFS. This
270information would be given to the kernel by ``mountd`` when the client
271mounted the filesystem, or by ``exportfs`` at system startup. exportfs
272would take information about active clients from ``/var/lib/nfs/rmtab``.
273
274This approach is quite fragile as it depends on rmtab being correct
275which is not always easy, particularly when trying to implement
276fail-over. Even when the system is working well, ``rmtab`` suffers from
277getting lots of old entries that never get removed.
278
279With modern kernels we have the option of having the kernel tell mountd
280when it gets a request from an unknown host, and mountd can give
281appropriate export information to the kernel. This removes the
282dependency on ``rmtab`` and means that the kernel only needs to know about
283currently active clients.
284
285To enable this new functionality, you need to::
286
287 mount -t nfsd nfsd /proc/fs/nfsd
288
289before running exportfs or mountd. It is recommended that all NFS
290services be protected from the internet-at-large by a firewall where
291that is possible.
292
293mcelog
294------
295
296On x86 kernels the mcelog utility is needed to process and log machine check
297events when ``CONFIG_X86_MCE`` is enabled. Machine check events are errors
298reported by the CPU. Processing them is strongly encouraged.
299
300Kernel documentation
301********************
302
303Sphinx
304------
305
306Please see :ref:`sphinx_install` in ``Documentation/doc-guide/sphinx.rst``
307for details about Sphinx requirements.
308
309Getting updated software
310========================
311
312Kernel compilation
313******************
314
315gcc
316---
317
318- <ftp://ftp.gnu.org/gnu/gcc/>
319
320Make
321----
322
323- <ftp://ftp.gnu.org/gnu/make/>
324
325Binutils
326--------
327
328- <https://www.kernel.org/pub/linux/devel/binutils/>
329
330OpenSSL
331-------
332
333- <https://www.openssl.org/>
334
335System utilities
336****************
337
338Util-linux
339----------
340
341- <https://www.kernel.org/pub/linux/utils/util-linux/>
342
343Kmod
344----
345
346- <https://www.kernel.org/pub/linux/utils/kernel/kmod/>
347- <https://git.kernel.org/pub/scm/utils/kernel/kmod/kmod.git>
348
349Ksymoops
350--------
351
352- <https://www.kernel.org/pub/linux/utils/kernel/ksymoops/v2.4/>
353
354Mkinitrd
355--------
356
357- <https://code.launchpad.net/initrd-tools/main>
358
359E2fsprogs
360---------
361
362- <http://prdownloads.sourceforge.net/e2fsprogs/e2fsprogs-1.29.tar.gz>
363
364JFSutils
365--------
366
367- <http://jfs.sourceforge.net/>
368
369Reiserfsprogs
370-------------
371
372- <http://www.kernel.org/pub/linux/utils/fs/reiserfs/>
373
374Xfsprogs
375--------
376
377- <ftp://oss.sgi.com/projects/xfs/>
378
379Pcmciautils
380-----------
381
382- <https://www.kernel.org/pub/linux/utils/kernel/pcmcia/>
383
384Quota-tools
385-----------
386
387- <http://sourceforge.net/projects/linuxquota/>
388
389
390Intel P6 microcode
391------------------
392
393- <https://downloadcenter.intel.com/>
394
395udev
396----
397
398- <http://www.freedesktop.org/software/systemd/man/udev.html>
399
400FUSE
401----
402
403- <http://sourceforge.net/projects/fuse>
404
405mcelog
406------
407
408- <http://www.mcelog.org/>
409
410Networking
411**********
412
413PPP
414---
415
416- <ftp://ftp.samba.org/pub/ppp/>
417
418Isdn4k-utils
419------------
420
421- <ftp://ftp.isdn4linux.de/pub/isdn4linux/utils/>
422
423NFS-utils
424---------
425
426- <http://sourceforge.net/project/showfiles.php?group_id=14>
427
428Iptables
429--------
430
431- <http://www.iptables.org/downloads.html>
432
433Ip-route2
434---------
435
436- <https://www.kernel.org/pub/linux/utils/net/iproute2/>
437
438OProfile
439--------
440
441- <http://oprofile.sf.net/download/>
442
443NFS-Utils
444---------
445
446- <http://nfs.sourceforge.net/>
447
448Kernel documentation
449********************
450
451Sphinx
452------
453
454- <http://www.sphinx-doc.org/>