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