Jonathan's Contribution

Linux Configuration

Henry's RedHat Linux Install and Kernel Build


[Home] [Up] [Prev][Next]

Initial Installation

It is most convenient is to install off a CD ROM, preferably a  the most recent release.  Here I can only comment for RedHat distro's.  With RedHat, I've found it acceptable to do install's with a not so recent release, followed by an upgrade using ftp.  Email me if you would like some suggestions on going about this.
Follow the instructions in the RedHat manual on how to do this.  Make a bootdisk (and remember where you put it, you will need it later, it is your first line of defense if things go wrong).  It is also worthwhile making a copy of the rescue disk (if it is not part of the boot disk).  The boot images can be found in the  ./i386/images/ directory of the distribution.
During the installation / upgrade, amongst others, install the following packages, it will save you going back and getting them (off the cdrom or ftp, later).
  • kernel sources and kernel headers
  • gcc, cpp, glibc, glibc-devel compiler and libraries
  • sendmail
  • wu-ftp
  • samba
  • apache
  • less
  • bind
  • xntp3
  • ncurses

  • When partitioning the hard drive, if your harddrive has more than 1024 cylinders, create a small partion about 8-10Mb near the start of the drive within the first 1024 cylinders.   Make this partition the /boot mount point.  Because of PC BIOS limitations, the boot kernel  cannot be loaded from cylinders greater than 1024, and doing this step now avoids wasting time later.

    Building the Kernel

    Building the kernel is not too onerous a task.  However it is advisable that one knows what they are doing.  Read the Kernel HOWTO, and the section on how to build a kernel from RedHat's Reference manual, in the System Administration section.
    When building a kernel, it is worthwhile to ensure that you have the latest kernel sources and headers.  I generally get them from rawhide.redhat.com, or rpmfind.net.   Once the files are retrieved log in as root, unpack the rpms:
    rpm -Uhv kernel-source* kernel-header*.
    In addition to the Kernel HOWTO, it is worthwhile looking at the following documentation.
    Then change to the appropriate source directory:
    cd /usr/src/linux
     
    Then enter one of the following commands to configure the kernel.:
    make config
    line by line script to enter the config parameters, good for masochists.
    make menuconfig
    A curses based text mode configuration tool. (my preference)
    make xconfig
    An X based configuration tool using Tk /Tcl
    Select the appropriate options so that they provide the following /usr/src/linux/.config config options.  Hint: use help a lot.  The following file is for kernel 2.2.14, and does change between versions.
    My preference is to build a monolithic kernel, specifc to the actual target hardware, with a minimum of modules.   Know your hardware, and select the appropriate drivers.  Compile the appropriate ethernet driver into the kernel, not as a module.
    Note that as this is a node on the network, the only networking option beyond basic tcp/ip is ip-aliasing. We take advantage of this for the virtual serving later on in the configurtion.
    Do not copy this file and then build, it is specific to Henry's hardware, and if it manages to compile, may not work on your hardware.  Create your own as described above.
    >>>>>>>>>>>>/usr/src/linux/.config
    #
    # Automatically generated by make menuconfig: don't edit
    #
    
    #
    # Code maturity level options
    #
    CONFIG_EXPERIMENTAL=y
    
    #
    # Processor type and features
    #
    # CONFIG_M386 is not set
    # CONFIG_M486 is not set
    # CONFIG_M586 is not set
    CONFIG_M586TSC=y
    # CONFIG_M686 is not set
    # CONFIG_M686FX is not set
    CONFIG_X86_WP_WORKS_OK=y
    CONFIG_X86_INVLPG=y
    CONFIG_X86_BSWAP=y
    CONFIG_X86_POPAD_OK=y
    CONFIG_X86_TSC=y
    # CONFIG_X86_PN_OFF is not set
    # CONFIG_X86_FX is not set
    # CONFIG_X86_CPU_OPTIMIZATIONS is not set
    # CONFIG_MATH_EMULATION is not set
    # CONFIG_MTRR is not set
    # CONFIG_SMP is not set
    CONFIG_1GB=y
    # CONFIG_2GB is not set
    
    #
    # Loadable module support
    #
    CONFIG_MODULES=y
    # CONFIG_MODVERSIONS is not set
    CONFIG_KMOD=y
    
    #
    # General setup
    #
    # CONFIG_BIGMEM is not set
    CONFIG_NET=y
    CONFIG_PCI=y
    # CONFIG_PCI_GOBIOS is not set
    # CONFIG_PCI_GODIRECT is not set
    CONFIG_PCI_GOANY=y
    CONFIG_PCI_BIOS=y
    CONFIG_PCI_DIRECT=y
    CONFIG_PCI_QUIRKS=y
    # CONFIG_PCI_OPTIMIZE is not set
    CONFIG_PCI_OLD_PROC=y
    # CONFIG_MCA is not set
    # CONFIG_VISWS is not set
    CONFIG_SYSVIPC=y
    CONFIG_BSD_PROCESS_ACCT=y
    CONFIG_SYSCTL=y
    CONFIG_BINFMT_AOUT=m
    CONFIG_BINFMT_ELF=y
    CONFIG_BINFMT_MISC=m
    # CONFIG_BINFMT_JAVA is not set
    CONFIG_PARPORT=y
    CONFIG_PARPORT_PC=y
    # CONFIG_PARPORT_OTHER is not set
    # CONFIG_APM is not set
    
    #
    # Plug and Play support
    #
    CONFIG_PNP=y
    # CONFIG_PNP_PARPORT is not set
    
    #
    # Block devices
    #
    CONFIG_BLK_DEV_FD=y
    CONFIG_BLK_DEV_IDE=y
    # CONFIG_BLK_DEV_HD_IDE is not set
    CONFIG_BLK_DEV_IDEDISK=y
    CONFIG_BLK_DEV_IDECD=y
    # CONFIG_BLK_DEV_IDETAPE is not set
    # CONFIG_BLK_DEV_IDEFLOPPY is not set
    # CONFIG_BLK_DEV_IDESCSI is not set
    CONFIG_BLK_DEV_CMD640=y
    # CONFIG_BLK_DEV_CMD640_ENHANCED is not set
    CONFIG_BLK_DEV_RZ1000=y
    CONFIG_BLK_DEV_IDEPCI=y
    CONFIG_BLK_DEV_IDEDMA=y
    # CONFIG_BLK_DEV_OFFBOARD is not set
    # CONFIG_IDEDMA_AUTO is not set
    # CONFIG_BLK_DEV_OPTI621 is not set
    # CONFIG_BLK_DEV_TRM290 is not set
    # CONFIG_BLK_DEV_NS87415 is not set
    # CONFIG_BLK_DEV_VIA82C586 is not set
    # CONFIG_BLK_DEV_CMD646 is not set
    # CONFIG_IDE_CHIPSETS is not set
    # CONFIG_BLK_DEV_LOOP is not set
    # CONFIG_BLK_DEV_NBD is not set
    # CONFIG_BLK_DEV_MD is not set
    # CONFIG_BLK_DEV_RAM is not set
    # CONFIG_BLK_DEV_XD is not set
    # CONFIG_BLK_DEV_DAC960 is not set
    CONFIG_PARIDE_PARPORT=y
    # CONFIG_PARIDE is not set
    # CONFIG_BLK_CPQ_DA is not set
    # CONFIG_BLK_DEV_HD is not set
    
    #
    # Networking options
    #
    CONFIG_PACKET=y
    CONFIG_NETLINK=y
    CONFIG_RTNETLINK=y
    CONFIG_NETLINK_DEV=y
    # CONFIG_FIREWALL is not set
    # CONFIG_FILTER is not set
    CONFIG_UNIX=y
    CONFIG_INET=y
    CONFIG_IP_MULTICAST=y
    # CONFIG_IP_ADVANCED_ROUTER is not set
    # CONFIG_IP_PNP is not set
    # CONFIG_IP_ROUTER is not set
    # CONFIG_NET_IPIP is not set
    # CONFIG_NET_IPGRE is not set
    # CONFIG_IP_MROUTE is not set
    CONFIG_IP_ALIAS=y
    # CONFIG_ARPD is not set
    CONFIG_SYN_COOKIES=y
    CONFIG_INET_RARP=y
    CONFIG_SKB_LARGE=y
    # CONFIG_IPV6 is not set
    # CONFIG_IPX is not set
    # CONFIG_ATALK is not set
    # CONFIG_X25 is not set
    # CONFIG_LAPB is not set
    # CONFIG_BRIDGE is not set
    # CONFIG_LLC is not set
    # CONFIG_ECONET is not set
    # CONFIG_WAN_ROUTER is not set
    # CONFIG_NET_FASTROUTE is not set
    # CONFIG_NET_HW_FLOWCONTROL is not set
    # CONFIG_CPU_IS_SLOW is not set
    
    #
    # QoS and/or fair queueing
    #
    # CONFIG_NET_SCHED is not set
    
    #
    # Telephony Support
    #
    # CONFIG_PHONE is not set
    # CONFIG_PHONE_IXJ is not set
    
    #
    # SCSI support
    #
    # CONFIG_SCSI is not set
    
    #
    # Network device support
    #
    CONFIG_NETDEVICES=y
    
    #
    # ARCnet devices
    #
    # CONFIG_ARCNET is not set
    CONFIG_DUMMY=y
    # CONFIG_BONDING is not set
    # CONFIG_EQUALIZER is not set
    # CONFIG_ETHERTAP is not set
    # CONFIG_NET_SB1000 is not set
    
    #
    # Ethernet (10 or 100Mbit)
    #
    CONFIG_NET_ETHERNET=y
    # CONFIG_NET_VENDOR_3COM is not set
    # CONFIG_LANCE is not set
    # CONFIG_NET_VENDOR_SMC is not set
    # CONFIG_NET_VENDOR_RACAL is not set
    # CONFIG_RTL8139 is not set
    # CONFIG_NET_ISA is not set
    CONFIG_NET_EISA=y
    # CONFIG_PCNET32 is not set
    # CONFIG_AC3200 is not set
    # CONFIG_APRICOT is not set
    # CONFIG_CS89x0 is not set
    # CONFIG_DM9102 is not set
    # CONFIG_DE4X5 is not set
    # CONFIG_DEC_ELCP is not set
    # CONFIG_DEC_ELCP_OLD is not set
    # CONFIG_DGRS is not set
    # CONFIG_EEXPRESS_PRO100 is not set
    # CONFIG_LNE390 is not set
    # CONFIG_NE3210 is not set
    CONFIG_NE2K_PCI=y
    # CONFIG_TLAN is not set
    # CONFIG_VIA_RHINE is not set
    # CONFIG_SIS900 is not set
    # CONFIG_ES3210 is not set
    # CONFIG_EPIC100 is not set
    # CONFIG_ZNET is not set
    # CONFIG_NET_POCKET is not set
    
    #
    # Ethernet (1000 Mbit)
    #
    # CONFIG_ACENIC is not set
    # CONFIG_YELLOWFIN is not set
    # CONFIG_SK98LIN is not set
    # CONFIG_FDDI is not set
    # CONFIG_HIPPI is not set
    # CONFIG_PLIP is not set
    CONFIG_PPP=y
    # CONFIG_SLIP is not set
    # CONFIG_NET_RADIO is not set
    
    #
    # Token ring devices
    #
    # CONFIG_TR is not set
    # CONFIG_NET_FC is not set
    # CONFIG_RCPCI is not set
    # CONFIG_SHAPER is not set
    
    #
    # Wan interfaces
    #
    # CONFIG_HOSTESS_SV11 is not set
    # CONFIG_COSA is not set
    # CONFIG_SEALEVEL_4021 is not set
    # CONFIG_COMX is not set
    # CONFIG_DLCI is not set
    CONFIG_SBNI=y
    
    #
    # Amateur Radio support
    #
    # CONFIG_HAMRADIO is not set
    
    #
    # IrDA subsystem support
    #
    # CONFIG_IRDA is not set
    
    #
    # ISDN subsystem
    #
    # CONFIG_ISDN is not set
    
    #
    # Old CD-ROM drivers (not SCSI, not IDE)
    #
    # CONFIG_CD_NO_IDESCSI is not set
    
    #
    # Character devices
    #
    CONFIG_VT=y
    CONFIG_VT_CONSOLE=y
    CONFIG_SERIAL=y
    CONFIG_SERIAL_CONSOLE=y
    CONFIG_SERIAL_EXTENDED=y
    CONFIG_SERIAL_MANY_PORTS=y
    CONFIG_SERIAL_SHARE_IRQ=y
    # CONFIG_SERIAL_DETECT_IRQ is not set
    # CONFIG_SERIAL_MULTIPORT is not set
    # CONFIG_HUB6 is not set
    # CONFIG_SERIAL_NONSTANDARD is not set
    CONFIG_UNIX98_PTYS=y
    CONFIG_UNIX98_PTY_COUNT=256
    CONFIG_PRINTER=y
    CONFIG_PRINTER_READBACK=y
    # CONFIG_MOUSE is not set
    
    #
    # Joysticks
    #
    # CONFIG_JOYSTICK is not set
    # CONFIG_QIC02_TAPE is not set
    # CONFIG_WATCHDOG is not set
    # CONFIG_NVRAM is not set
    CONFIG_RTC=y
    # CONFIG_AGP is not set
    
    #
    # Video For Linux
    #
    # CONFIG_VIDEO_DEV is not set
    # CONFIG_DTLK is not set
    
    #
    # Ftape, the floppy tape device driver
    #
    # CONFIG_FTAPE is not set
    
    #
    # Filesystems
    #
    CONFIG_QUOTA=y
    CONFIG_AUTOFS_FS=y
    # CONFIG_ADFS_FS is not set
    # CONFIG_AFFS_FS is not set
    # CONFIG_HFS_FS is not set
    CONFIG_FAT_FS=y
    CONFIG_MSDOS_FS=y
    # CONFIG_UMSDOS_FS is not set
    CONFIG_VFAT_FS=y
    CONFIG_ISO9660_FS=y
    CONFIG_JOLIET=y
    # CONFIG_MINIX_FS is not set
    # CONFIG_NTFS_FS is not set
    # CONFIG_HPFS_FS is not set
    CONFIG_PROC_FS=y
    CONFIG_DEVPTS_FS=y
    # CONFIG_QNX4FS_FS is not set
    # CONFIG_ROMFS_FS is not set
    CONFIG_EXT2_FS=y
    # CONFIG_SYSV_FS is not set
    # CONFIG_UFS_FS is not set
    # CONFIG_EFS_FS is not set
    
    #
    # Network File Systems
    #
    # CONFIG_CODA_FS is not set
    CONFIG_NFS_FS=y
    CONFIG_NFSD=y
    CONFIG_NFSD_SUN=y
    CONFIG_SUNRPC=y
    CONFIG_LOCKD=y
    CONFIG_SMB_FS=y
    # CONFIG_NCP_FS is not set
    
    #
    # Partition Types
    #
    # CONFIG_BSD_DISKLABEL is not set
    # CONFIG_MAC_PARTITION is not set
    # CONFIG_SMD_DISKLABEL is not set
    # CONFIG_SOLARIS_X86_PARTITION is not set
    # CONFIG_UNIXWARE_DISKLABEL is not set
    CONFIG_NLS=y
    
    #
    # Native Language Support
    #
    CONFIG_NLS_CODEPAGE_437=y
    # CONFIG_NLS_CODEPAGE_737 is not set
    # CONFIG_NLS_CODEPAGE_775 is not set
    # CONFIG_NLS_CODEPAGE_850 is not set
    # CONFIG_NLS_CODEPAGE_852 is not set
    # CONFIG_NLS_CODEPAGE_855 is not set
    # CONFIG_NLS_CODEPAGE_857 is not set
    # CONFIG_NLS_CODEPAGE_860 is not set
    # CONFIG_NLS_CODEPAGE_861 is not set
    # CONFIG_NLS_CODEPAGE_862 is not set
    # CONFIG_NLS_CODEPAGE_863 is not set
    # CONFIG_NLS_CODEPAGE_864 is not set
    # CONFIG_NLS_CODEPAGE_865 is not set
    # CONFIG_NLS_CODEPAGE_866 is not set
    # CONFIG_NLS_CODEPAGE_869 is not set
    # CONFIG_NLS_CODEPAGE_874 is not set
    CONFIG_NLS_ISO8859_1=y
    # CONFIG_NLS_ISO8859_2 is not set
    # CONFIG_NLS_ISO8859_3 is not set
    # CONFIG_NLS_ISO8859_4 is not set
    # CONFIG_NLS_ISO8859_5 is not set
    # CONFIG_NLS_ISO8859_6 is not set
    # CONFIG_NLS_ISO8859_7 is not set
    # CONFIG_NLS_ISO8859_8 is not set
    # CONFIG_NLS_ISO8859_9 is not set
    # CONFIG_NLS_ISO8859_14 is not set
    # CONFIG_NLS_ISO8859_15 is not set
    # CONFIG_NLS_KOI8_R is not set
    
    #
    # Console drivers
    #
    CONFIG_VGA_CONSOLE=y
    CONFIG_VIDEO_SELECT=y
    # CONFIG_MDA_CONSOLE is not set
    # CONFIG_FB is not set
    
    #
    # Sound
    #
    CONFIG_SOUND=y
    # CONFIG_SOUND_CMPCI is not set
    # CONFIG_SOUND_ES1370 is not set
    # CONFIG_SOUND_ES1371 is not set
    # CONFIG_SOUND_MAESTRO is not set
    # CONFIG_SOUND_EMU10K1 is not set
    # CONFIG_SOUND_ESSSOLO1 is not set
    # CONFIG_SOUND_SONICVIBES is not set
    # CONFIG_SOUND_MSNDCLAS is not set
    # CONFIG_SOUND_MSNDPIN is not set
    CONFIG_SOUND_OSS=y
    # CONFIG_SOUND_DMAP is not set
    # CONFIG_SOUND_PAS is not set
    CONFIG_SOUND_SB=y
    CONFIG_SB_BASE=220
    CONFIG_SB_IRQ=5
    CONFIG_SB_DMA=1
    CONFIG_SB_DMA2=5
    CONFIG_SB_MPU_BASE=330
    CONFIG_SB_MPU_IRQ=-1
    # CONFIG_SOUND_GUS is not set
    # CONFIG_SOUND_MPU401 is not set
    # CONFIG_SOUND_PSS is not set
    # CONFIG_SOUND_MSS is not set
    # CONFIG_SOUND_SSCAPE is not set
    # CONFIG_SOUND_TRIX is not set
    # CONFIG_SOUND_VIA82CXXX is not set
    # CONFIG_SOUND_MAD16 is not set
    # CONFIG_SOUND_WAVEFRONT is not set
    # CONFIG_SOUND_CS4232 is not set
    # CONFIG_SOUND_OPL3SA2 is not set
    # CONFIG_SOUND_MAUI is not set
    # CONFIG_SOUND_SGALAXY is not set
    # CONFIG_SOUND_AD1816 is not set
    # CONFIG_SOUND_OPL3SA1 is not set
    # CONFIG_SOUND_SOFTOSS is not set
    CONFIG_SOUND_YM3812=y
    # CONFIG_SOUND_VMIDI is not set
    # CONFIG_SOUND_UART6850 is not set
    # CONFIG_SOUND_NM256 is not set
    
    #
    # Additional low level sound drivers
    #
    # CONFIG_LOWLEVEL_SOUND is not set
    
    #
    # Kernel hacking
    #
    # CONFIG_MAGIC_SYSRQ is not set
    <<<<<<<<<<<</usr/src/linux/.config
    Before building the kernel, the brave can delete the existing compiled modules, the mere mortals, like myself, should move them aside:
    mv /lib/modules/<x.yy.zz> /lib/modules/<xx.yy.zz>.orig
    Now ensure we are in the appropriate directory as root, and we start the build.  It will take anything from in excess of four hours on a DX2-66 to under 15 minutes for today's faster machines.
    cd /usr/src/linux
    make dep clean bzImage modules modules_install
    Okay, after a cup of coffee, or a short snooze, we are ready to proceed with configuring the system to boot with the newly compiled kernel.
    The build creates the following files:

    [Home] [Up] [Prev][Next]

    Last modified: Tue Feb 8 22:00:00 PST 2000
    Copyright © Jonathan Marks, 1999, 2000. All rights reserved.
    http://jon.novatek.co.nz/linux/config/henry_kernel.html.