Chapter 1. The Linux Kernel

Table of Contents

1. Configuration
2. Compilation
3. Installation

Linux is a clone of the operating system Unix, written from scratch by Linus Torvalds with assistance from a loosely-knit team of hackers across the Net. It aims towards POSIX and Single UNIX Specification compliance.

1. Configuration

Make sure you have no stale .o files and dependencies lying around:

make mrproper

Run the text based color menus, radiolists & dialogs kernel configuration tools:

make menuconfig

Configure the kernel based on arch/x86/configs/i386_defconfig and the following recommandations:

  • Stack utilization instrumentation: disable to avoid messages like "lvm used greatest stack depth: 5956 bytes left"

    Symbol: DEBUG_STACK_USAGE [=n]
    Prompt: Stack utilization instrumentation
      Depends on: DEBUG_KERNEL
      Location:
        -> Kernel hacking
  • Kernel .config support

    Symbol: IKCONFIG [=y]
    Prompt: Kernel .config support
      Location:
        -> General setup
    Symbol: IKCONFIG_PROC [=y]
    Prompt: Enable access to .config through /proc/config.gz
      Depends on: IKCONFIG && PROC_FS
      Location:
        -> General setup
          -> Kernel .config support (IKCONFIG [=y])
  • Universal TUN/TAP device driver support

    Symbol: TUN [=y]
    Prompt: Universal TUN/TAP device driver support
      Depends on: NETDEVICES
      Location:
        -> Device Drivers
          -> Network device support (NETDEVICES [=y])
      Selects: CRC32
  • KVM

    Symbol: KVM [=n]
    Prompt: Kernel-based Virtual Machine (KVM) support
      Depends on: VIRTUALIZATION && HAVE_KVM && PCI
      Location:
        -> Virtualization (VIRTUALIZATION [=y])
      Selects: PREEMPT_NOTIFIERS && MMU_NOTIFIER && ANON_INODES
    Symbol: KVM_INTEL [=y]
    Prompt: KVM for Intel processors support
      Depends on: VIRTUALIZATION && KVM
      Location:
        -> Virtualization (VIRTUALIZATION [=y])
          -> Kernel-based Virtual Machine (KVM) support (KVM [=y])
    Symbol: KVM_AMD [=y]
    Prompt: KVM for AMD processors support
      Depends on: VIRTUALIZATION && KVM
      Location:
        -> Virtualization (VIRTUALIZATION [=y])
          -> Kernel-based Virtual Machine (KVM) support (KVM [=y])
    Symbol: VIRTIO_PCI [=n]
    Prompt: PCI driver for virtio devices (EXPERIMENTAL)
      Depends on: VIRTUALIZATION && PCI && EXPERIMENTAL
      Location:
        -> Virtualization (VIRTUALIZATION [=y])
      Selects: VIRTIO && VIRTIO_RING
    Symbol: VIRTIO_BALLOON [=n]
    Prompt: Virtio balloon driver (EXPERIMENTAL)
      Depends on: VIRTUALIZATION
      Location:
        -> Virtualization (VIRTUALIZATION [=y])
      Selects: VIRTIO && VIRTIO_RING
    Symbol: VIRTIO_BLK [=n]
    Prompt: Virtio block driver (EXPERIMENTAL)
      Depends on: BLK_DEV && EXPERIMENTAL && VIRTIO
      Location:
        -> Device Drivers
          -> Block devices (BLK_DEV [=y])
    Symbol: VIRTIO_NET [=y]
    Prompt: Virtio network driver (EXPERIMENTAL)
      Depends on: NETDEVICES && EXPERIMENTAL && VIRTIO
      Location:
        -> Device Drivers
          -> Network device support (NETDEVICES [=y])
    Symbol: VIRTIO_CONSOLE [=y]
    Prompt: Virtio console
      Depends on: VIRTIO
      Location:
        -> Device Drivers
          -> Character devices
      Selects: HVC_DRIVER
      Selected by: LGUEST_GUEST && PARAVIRT_GUEST && X86_32 && !X86_PAE
    Symbol: HW_RANDOM_VIRTIO [=y]
    Prompt: VirtIO Random Number Generator support
      Depends on: HW_RANDOM && VIRTIO
      Location:
        -> Device Drivers
          -> Character devices
            -> Hardware Random Number Generator Core support
    Symbol: KVM_CLOCK [=y]
    Prompt: KVM paravirtualized clock
      Depends on: PARAVIRT_GUEST
      Location:
        -> Processor type and features
          -> Paravirtualized guest support (PARAVIRT_GUEST [=y])
      Selects: PARAVIRT && PARAVIRT_CLOCK
    Symbol: KVM_GUEST [=y]
    Prompt: KVM Guest support
      Depends on: PARAVIRT_GUEST
      Location:
        -> Processor type and features
          -> Paravirtualized guest support (PARAVIRT_GUEST [=y])
      Selects: PARAVIRT
  • RAID Support

    Symbol: MD_LINEAR [=y]
    Prompt: Linear (append) mode
      Depends on: MD && BLK_DEV_MD
      Location:
        -> Device Drivers
          -> Multiple devices driver support (RAID and LVM) (MD [=y])
            -> RAID support (BLK_DEV_MD [=y])
    Symbol: MD_RAID0 [=y]
    Prompt: RAID-0 (striping) mode
      Depends on: MD && BLK_DEV_MD
      Location:
        -> Device Drivers
          -> Multiple devices driver support (RAID and LVM) (MD [=y])
            -> RAID support (BLK_DEV_MD [=y])
    Symbol: MD_RAID1 [=y]
    Prompt: RAID-1 (mirroring) mode
      Depends on: MD && BLK_DEV_MD
      Location:
        -> Device Drivers
          -> Multiple devices driver support (RAID and LVM) (MD [=y])
            -> RAID support (BLK_DEV_MD [=y])
    Symbol: MD_RAID10 [=y]
    Prompt: RAID-10 (mirrored striping) mode (EXPERIMENTAL)
      Depends on: MD && BLK_DEV_MD && EXPERIMENTAL
      Location:
        -> Device Drivers
          -> Multiple devices driver support (RAID and LVM) (MD [=y])
            -> RAID support (BLK_DEV_MD [=y])
    Symbol: MD_RAID456 [=y]
    Prompt: RAID-4/RAID-5/RAID-6 mode
      Depends on: MD && BLK_DEV_MD
      Location:
        -> Device Drivers
          -> Multiple devices driver support (RAID and LVM) (MD [=y])
            -> RAID support (BLK_DEV_MD [=y])
      Selects: MD_RAID6_PQ && ASYNC_MEMCPY && ASYNC_XOR
  • Device Mapper

    Symbol: DM_CRYPT [=y]
    Prompt: Crypt target support
      Depends on: MD && BLK_DEV_DM
      Location:
        -> Device Drivers
          -> Multiple devices driver support (RAID and LVM) (MD [=y])
            -> Device mapper support (BLK_DEV_DM [=y])
      Selects: CRYPTO && CRYPTO_CBC
    Symbol: DM_SNAPSHOT [=y]
    Prompt: Snapshot target
      Depends on: MD && BLK_DEV_DM
      Location:
        -> Device Drivers
          -> Multiple devices driver support (RAID and LVM) (MD [=y])
            -> Device mapper support (BLK_DEV_DM [=y])
    Symbol: DM_MULTIPATH [=y]
    Prompt: Multipath target
      Depends on: MD && BLK_DEV_DM && (SCSI_DH || !SCSI_DH)
      Location:
        -> Device Drivers
          -> Multiple devices driver support (RAID and LVM) (MD [=y])
            -> Device mapper support (BLK_DEV_DM [=y])
  • VLAN Support

    Symbol: VLAN_8021Q [=y]
    Prompt: 802.1Q VLAN Support
      Depends on: NET
      Location:
        -> Networking support (NET [=y])
          -> Networking options
  • Bridge Support

    Symbol: BRIDGE [=y]
    Prompt: 802.1d Ethernet Bridging
      Depends on: NET
      Location:
        -> Networking support (NET [=y])
          -> Networking options
      Selects: LLC && STP
  • Bonding Support

    Symbol: BONDING [=y]
    Prompt: Bonding driver support
      Depends on: NETDEVICES && INET && (IPV6 || IPV6=n)
      Location:
        -> Device Drivers
          -> Network device support (NETDEVICES [=y])
  • RealTek RTL-8139 C+ (KVM default NIC)

    Symbol: 8139CP [=y]
    Prompt: RealTek RTL-8139 C+ PCI Fast Ethernet Adapter support (EXPERIME
      Depends on: NETDEVICES && NET_ETHERNET && NET_PCI && PCI && EXPERIMEN
      Location:
        -> Device Drivers
          -> Network device support (NETDEVICES [=y])
            -> Ethernet (10 or 100Mbit) (NET_ETHERNET [=y])
      Selects: CRC32 && MII
  • EXT4

    Symbol: EXT4_FS [=y]
    Prompt: The Extended 4 (ext4) filesystem
      Depends on: BLOCK
      Location:
        -> File systems
      Selects: JBD2 && CRC16
  • ReiserFS

    Symbol: REISERFS_FS [=y]
    Prompt: Reiserfs support
      Depends on: BLOCK
      Location:
        -> File systems
      Selects: CRC32
  • JFS

    Symbol: JFS_FS [=y]
    Prompt: JFS filesystem support
      Depends on: BLOCK
      Location:
        -> File systems
      Selects: NLS && CRC32
  • XFS

    Symbol: XFS_FS [=y]
    Prompt: XFS filesystem support
      Depends on: BLOCK
      Location:
        -> File systems
      Selects: EXPORTFS
  • NTFS

    Symbol: NTFS_FS [=y]
    Prompt: NTFS file system support
      Depends on: BLOCK
      Location:
        -> File systems
          -> DOS/FAT/NT Filesystems
      Selects: NLS