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