Back to home page

LXR

 
 

    


0001 .. _changes:
0002 
0003 Minimal requirements to compile the Kernel
0004 ++++++++++++++++++++++++++++++++++++++++++
0005 
0006 Intro
0007 =====
0008 
0009 This document is designed to provide a list of the minimum levels of
0010 software necessary to run the 4.x kernels.
0011 
0012 This document is originally based on my "Changes" file for 2.0.x kernels
0013 and therefore owes credit to the same people as that file (Jared Mauch,
0014 Axel Boldt, Alessandro Sigala, and countless other users all over the
0015 'net).
0016 
0017 Current Minimal Requirements
0018 ****************************
0019 
0020 Upgrade to at **least** these software revisions before thinking you've
0021 encountered a bug!  If you're unsure what version you're currently
0022 running, the suggested command should tell you.
0023 
0024 Again, keep in mind that this list assumes you are already functionally
0025 running a Linux kernel.  Also, not all tools are necessary on all
0026 systems; obviously, if you don't have any ISDN hardware, for example,
0027 you probably needn't concern yourself with isdn4k-utils.
0028 
0029 ====================== ===============  ========================================
0030         Program        Minimal version       Command to check the version
0031 ====================== ===============  ========================================
0032 GNU C                  3.2              gcc --version
0033 GNU make               3.80             make --version
0034 binutils               2.12             ld -v
0035 util-linux             2.10o            fdformat --version
0036 module-init-tools      0.9.10           depmod -V
0037 e2fsprogs              1.41.4           e2fsck -V
0038 jfsutils               1.1.3            fsck.jfs -V
0039 reiserfsprogs          3.6.3            reiserfsck -V
0040 xfsprogs               2.6.0            xfs_db -V
0041 squashfs-tools         4.0              mksquashfs -version
0042 btrfs-progs            0.18             btrfsck
0043 pcmciautils            004              pccardctl -V
0044 quota-tools            3.09             quota -V
0045 PPP                    2.4.0            pppd --version
0046 isdn4k-utils           3.1pre1          isdnctrl 2>&1|grep version
0047 nfs-utils              1.0.5            showmount --version
0048 procps                 3.2.0            ps --version
0049 oprofile               0.9              oprofiled --version
0050 udev                   081              udevd --version
0051 grub                   0.93             grub --version || grub-install --version
0052 mcelog                 0.6              mcelog --version
0053 iptables               1.4.2            iptables -V
0054 openssl & libcrypto    1.0.0            openssl version
0055 bc                     1.06.95          bc --version
0056 Sphinx\ [#f1]_         1.2              sphinx-build --version
0057 ====================== ===============  ========================================
0058 
0059 .. [#f1] Sphinx is needed only to build the Kernel documentation
0060 
0061 Kernel compilation
0062 ******************
0063 
0064 GCC
0065 ---
0066 
0067 The gcc version requirements may vary depending on the type of CPU in your
0068 computer.
0069 
0070 Make
0071 ----
0072 
0073 You will need GNU make 3.80 or later to build the kernel.
0074 
0075 Binutils
0076 --------
0077 
0078 Linux on IA-32 has recently switched from using ``as86`` to using ``gas`` for
0079 assembling the 16-bit boot code, removing the need for ``as86`` to compile
0080 your kernel.  This change does, however, mean that you need a recent
0081 release of binutils.
0082 
0083 Perl
0084 ----
0085 
0086 You will need perl 5 and the following modules: ``Getopt::Long``,
0087 ``Getopt::Std``, ``File::Basename``, and ``File::Find`` to build the kernel.
0088 
0089 BC
0090 --
0091 
0092 You will need bc to build kernels 3.10 and higher
0093 
0094 
0095 OpenSSL
0096 -------
0097 
0098 Module signing and external certificate handling use the OpenSSL program and
0099 crypto library to do key creation and signature generation.
0100 
0101 You will need openssl to build kernels 3.7 and higher if module signing is
0102 enabled.  You will also need openssl development packages to build kernels 4.3
0103 and higher.
0104 
0105 
0106 System utilities
0107 ****************
0108 
0109 Architectural changes
0110 ---------------------
0111 
0112 DevFS has been obsoleted in favour of udev
0113 (http://www.kernel.org/pub/linux/utils/kernel/hotplug/)
0114 
0115 32-bit UID support is now in place.  Have fun!
0116 
0117 Linux documentation for functions is transitioning to inline
0118 documentation via specially-formatted comments near their
0119 definitions in the source.  These comments can be combined with the
0120 SGML templates in the Documentation/DocBook directory to make DocBook
0121 files, which can then be converted by DocBook stylesheets to PostScript,
0122 HTML, PDF files, and several other formats.  In order to convert from
0123 DocBook format to a format of your choice, you'll need to install Jade as
0124 well as the desired DocBook stylesheets.
0125 
0126 Util-linux
0127 ----------
0128 
0129 New versions of util-linux provide ``fdisk`` support for larger disks,
0130 support new options to mount, recognize more supported partition
0131 types, have a fdformat which works with 2.4 kernels, and similar goodies.
0132 You'll probably want to upgrade.
0133 
0134 Ksymoops
0135 --------
0136 
0137 If the unthinkable happens and your kernel oopses, you may need the
0138 ksymoops tool to decode it, but in most cases you don't.
0139 It is generally preferred to build the kernel with ``CONFIG_KALLSYMS`` so
0140 that it produces readable dumps that can be used as-is (this also
0141 produces better output than ksymoops).  If for some reason your kernel
0142 is not build with ``CONFIG_KALLSYMS`` and you have no way to rebuild and
0143 reproduce the Oops with that option, then you can still decode that Oops
0144 with ksymoops.
0145 
0146 Module-Init-Tools
0147 -----------------
0148 
0149 A new module loader is now in the kernel that requires ``module-init-tools``
0150 to use.  It is backward compatible with the 2.4.x series kernels.
0151 
0152 Mkinitrd
0153 --------
0154 
0155 These changes to the ``/lib/modules`` file tree layout also require that
0156 mkinitrd be upgraded.
0157 
0158 E2fsprogs
0159 ---------
0160 
0161 The latest version of ``e2fsprogs`` fixes several bugs in fsck and
0162 debugfs.  Obviously, it's a good idea to upgrade.
0163 
0164 JFSutils
0165 --------
0166 
0167 The ``jfsutils`` package contains the utilities for the file system.
0168 The following utilities are available:
0169 
0170 - ``fsck.jfs`` - initiate replay of the transaction log, and check
0171   and repair a JFS formatted partition.
0172 
0173 - ``mkfs.jfs`` - create a JFS formatted partition.
0174 
0175 - other file system utilities are also available in this package.
0176 
0177 Reiserfsprogs
0178 -------------
0179 
0180 The reiserfsprogs package should be used for reiserfs-3.6.x
0181 (Linux kernels 2.4.x). It is a combined package and contains working
0182 versions of ``mkreiserfs``, ``resize_reiserfs``, ``debugreiserfs`` and
0183 ``reiserfsck``. These utils work on both i386 and alpha platforms.
0184 
0185 Xfsprogs
0186 --------
0187 
0188 The latest version of ``xfsprogs`` contains ``mkfs.xfs``, ``xfs_db``, and the
0189 ``xfs_repair`` utilities, among others, for the XFS filesystem.  It is
0190 architecture independent and any version from 2.0.0 onward should
0191 work correctly with this version of the XFS kernel code (2.6.0 or
0192 later is recommended, due to some significant improvements).
0193 
0194 PCMCIAutils
0195 -----------
0196 
0197 PCMCIAutils replaces ``pcmcia-cs``. It properly sets up
0198 PCMCIA sockets at system startup and loads the appropriate modules
0199 for 16-bit PCMCIA devices if the kernel is modularized and the hotplug
0200 subsystem is used.
0201 
0202 Quota-tools
0203 -----------
0204 
0205 Support for 32 bit uid's and gid's is required if you want to use
0206 the newer version 2 quota format.  Quota-tools version 3.07 and
0207 newer has this support.  Use the recommended version or newer
0208 from the table above.
0209 
0210 Intel IA32 microcode
0211 --------------------
0212 
0213 A driver has been added to allow updating of Intel IA32 microcode,
0214 accessible as a normal (misc) character device.  If you are not using
0215 udev you may need to::
0216 
0217   mkdir /dev/cpu
0218   mknod /dev/cpu/microcode c 10 184
0219   chmod 0644 /dev/cpu/microcode
0220 
0221 as root before you can use this.  You'll probably also want to
0222 get the user-space microcode_ctl utility to use with this.
0223 
0224 udev
0225 ----
0226 
0227 ``udev`` is a userspace application for populating ``/dev`` dynamically with
0228 only entries for devices actually present. ``udev`` replaces the basic
0229 functionality of devfs, while allowing persistent device naming for
0230 devices.
0231 
0232 FUSE
0233 ----
0234 
0235 Needs libfuse 2.4.0 or later.  Absolute minimum is 2.3.0 but mount
0236 options ``direct_io`` and ``kernel_cache`` won't work.
0237 
0238 Networking
0239 **********
0240 
0241 General changes
0242 ---------------
0243 
0244 If you have advanced network configuration needs, you should probably
0245 consider using the network tools from ip-route2.
0246 
0247 Packet Filter / NAT
0248 -------------------
0249 The packet filtering and NAT code uses the same tools like the previous 2.4.x
0250 kernel series (iptables).  It still includes backwards-compatibility modules
0251 for 2.2.x-style ipchains and 2.0.x-style ipfwadm.
0252 
0253 PPP
0254 ---
0255 
0256 The PPP driver has been restructured to support multilink and to
0257 enable it to operate over diverse media layers.  If you use PPP,
0258 upgrade pppd to at least 2.4.0.
0259 
0260 If you are not using udev, you must have the device file /dev/ppp
0261 which can be made by::
0262 
0263   mknod /dev/ppp c 108 0
0264 
0265 as root.
0266 
0267 Isdn4k-utils
0268 ------------
0269 
0270 Due to changes in the length of the phone number field, isdn4k-utils
0271 needs to be recompiled or (preferably) upgraded.
0272 
0273 NFS-utils
0274 ---------
0275 
0276 In ancient (2.4 and earlier) kernels, the nfs server needed to know
0277 about any client that expected to be able to access files via NFS.  This
0278 information would be given to the kernel by ``mountd`` when the client
0279 mounted the filesystem, or by ``exportfs`` at system startup.  exportfs
0280 would take information about active clients from ``/var/lib/nfs/rmtab``.
0281 
0282 This approach is quite fragile as it depends on rmtab being correct
0283 which is not always easy, particularly when trying to implement
0284 fail-over.  Even when the system is working well, ``rmtab`` suffers from
0285 getting lots of old entries that never get removed.
0286 
0287 With modern kernels we have the option of having the kernel tell mountd
0288 when it gets a request from an unknown host, and mountd can give
0289 appropriate export information to the kernel.  This removes the
0290 dependency on ``rmtab`` and means that the kernel only needs to know about
0291 currently active clients.
0292 
0293 To enable this new functionality, you need to::
0294 
0295   mount -t nfsd nfsd /proc/fs/nfsd
0296 
0297 before running exportfs or mountd.  It is recommended that all NFS
0298 services be protected from the internet-at-large by a firewall where
0299 that is possible.
0300 
0301 mcelog
0302 ------
0303 
0304 On x86 kernels the mcelog utility is needed to process and log machine check
0305 events when ``CONFIG_X86_MCE`` is enabled. Machine check events are errors
0306 reported by the CPU. Processing them is strongly encouraged.
0307 
0308 Kernel documentation
0309 ********************
0310 
0311 Sphinx
0312 ------
0313 
0314 The ReST markups currently used by the Documentation/ files are meant to be
0315 built with ``Sphinx`` version 1.2 or upper. If you're desiring to build
0316 PDF outputs, it is recommended to use version 1.4.6.
0317 
0318 .. note::
0319 
0320   Please notice that, for PDF and LaTeX output, you'll also need ``XeLaTeX``
0321   version 3.14159265. Depending on the distribution, you may also need
0322   to install a series of ``texlive`` packages that provide the minimal
0323   set of functionalities required for ``XeLaTex`` to work.
0324 
0325 Other tools
0326 -----------
0327 
0328 In order to produce documentation from DocBook, you'll also need ``xmlto``.
0329 Please notice, however, that we're currently migrating all documents to use
0330 ``Sphinx``.
0331 
0332 Getting updated software
0333 ========================
0334 
0335 Kernel compilation
0336 ******************
0337 
0338 gcc
0339 ---
0340 
0341 - <ftp://ftp.gnu.org/gnu/gcc/>
0342 
0343 Make
0344 ----
0345 
0346 - <ftp://ftp.gnu.org/gnu/make/>
0347 
0348 Binutils
0349 --------
0350 
0351 - <ftp://ftp.kernel.org/pub/linux/devel/binutils/>
0352 
0353 OpenSSL
0354 -------
0355 
0356 - <https://www.openssl.org/>
0357 
0358 System utilities
0359 ****************
0360 
0361 Util-linux
0362 ----------
0363 
0364 - <ftp://ftp.kernel.org/pub/linux/utils/util-linux/>
0365 
0366 Ksymoops
0367 --------
0368 
0369 - <ftp://ftp.kernel.org/pub/linux/utils/kernel/ksymoops/v2.4/>
0370 
0371 Module-Init-Tools
0372 -----------------
0373 
0374 - <ftp://ftp.kernel.org/pub/linux/kernel/people/rusty/modules/>
0375 
0376 Mkinitrd
0377 --------
0378 
0379 - <https://code.launchpad.net/initrd-tools/main>
0380 
0381 E2fsprogs
0382 ---------
0383 
0384 - <http://prdownloads.sourceforge.net/e2fsprogs/e2fsprogs-1.29.tar.gz>
0385 
0386 JFSutils
0387 --------
0388 
0389 - <http://jfs.sourceforge.net/>
0390 
0391 Reiserfsprogs
0392 -------------
0393 
0394 - <http://www.kernel.org/pub/linux/utils/fs/reiserfs/>
0395 
0396 Xfsprogs
0397 --------
0398 
0399 - <ftp://oss.sgi.com/projects/xfs/>
0400 
0401 Pcmciautils
0402 -----------
0403 
0404 - <ftp://ftp.kernel.org/pub/linux/utils/kernel/pcmcia/>
0405 
0406 Quota-tools
0407 -----------
0408 
0409 - <http://sourceforge.net/projects/linuxquota/>
0410 
0411 DocBook Stylesheets
0412 -------------------
0413 
0414 - <http://sourceforge.net/projects/docbook/files/docbook-dsssl/>
0415 
0416 XMLTO XSLT Frontend
0417 -------------------
0418 
0419 - <http://cyberelk.net/tim/xmlto/>
0420 
0421 Intel P6 microcode
0422 ------------------
0423 
0424 - <https://downloadcenter.intel.com/>
0425 
0426 udev
0427 ----
0428 
0429 - <http://www.freedesktop.org/software/systemd/man/udev.html>
0430 
0431 FUSE
0432 ----
0433 
0434 - <http://sourceforge.net/projects/fuse>
0435 
0436 mcelog
0437 ------
0438 
0439 - <http://www.mcelog.org/>
0440 
0441 Networking
0442 **********
0443 
0444 PPP
0445 ---
0446 
0447 - <ftp://ftp.samba.org/pub/ppp/>
0448 
0449 Isdn4k-utils
0450 ------------
0451 
0452 - <ftp://ftp.isdn4linux.de/pub/isdn4linux/utils/>
0453 
0454 NFS-utils
0455 ---------
0456 
0457 - <http://sourceforge.net/project/showfiles.php?group_id=14>
0458 
0459 Iptables
0460 --------
0461 
0462 - <http://www.iptables.org/downloads.html>
0463 
0464 Ip-route2
0465 ---------
0466 
0467 - <https://www.kernel.org/pub/linux/utils/net/iproute2/>
0468 
0469 OProfile
0470 --------
0471 
0472 - <http://oprofile.sf.net/download/>
0473 
0474 NFS-Utils
0475 ---------
0476 
0477 - <http://nfs.sourceforge.net/>
0478 
0479 Kernel documentation
0480 ********************
0481 
0482 Sphinx
0483 ------
0484 
0485 - <http://www.sphinx-doc.org/>