cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

changes.rst (13770B)


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