Jonathan's Contribution

Linux Configuration

Gateway's RedHat Linux Installation 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.
    For a masqerading firewall ensure that the firewalling and masquerading options have been selected, together with selecting the router options and ip aliasing.
    Do not copy this file and then build, it is specific to Gateway'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=y
    # CONFIG_M586 is not set
    # CONFIG_M586TSC is not set
    # 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_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 is not set
    # 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 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_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_PARIDE_PARPORT=y
    # CONFIG_PARIDE 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=y
    # CONFIG_FILTER is not set
    CONFIG_UNIX=y
    CONFIG_INET=y
    CONFIG_IP_MULTICAST=y
    CONFIG_IP_ADVANCED_ROUTER=y
    CONFIG_RTNETLINK=y
    CONFIG_NETLINK=y
    # CONFIG_IP_MULTIPLE_TABLES is not set
    # CONFIG_IP_ROUTE_MULTIPATH is not set
    # CONFIG_IP_ROUTE_TOS is not set
    CONFIG_IP_ROUTE_VERBOSE=y
    # CONFIG_IP_ROUTE_LARGE_TABLES is not set
    # CONFIG_IP_PNP is not set
    CONFIG_IP_FIREWALL=y
    CONFIG_IP_FIREWALL_NETLINK=y
    CONFIG_NETLINK_DEV=y
    CONFIG_IP_TRANSPARENT_PROXY=y
    CONFIG_IP_MASQUERADE=y
    CONFIG_IP_MASQUERADE_ICMP=y
    CONFIG_IP_MASQUERADE_MOD=y
    CONFIG_IP_MASQUERADE_IPAUTOFW=y
    CONFIG_IP_MASQUERADE_IPPORTFW=y
    CONFIG_IP_MASQUERADE_MFW=y
    # CONFIG_IP_MASQUERADE_VS is not set
    CONFIG_IP_ROUTER=y
    # 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 is not set
    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=y
    # CONFIG_AT1700 is not set
    # CONFIG_E2100 is not set
    # CONFIG_DEPCA is not set
    # CONFIG_EWRK3 is not set
    # CONFIG_EEXPRESS is not set
    # CONFIG_EEXPRESS_PRO is not set
    # CONFIG_FMV18X is not set
    # CONFIG_HPLAN_PLUS is not set
    # CONFIG_HPLAN is not set
    # CONFIG_HP100 is not set
    # CONFIG_ETH16I is not set
    CONFIG_NE2000=y
    # CONFIG_SEEQ8005 is not set
    # CONFIG_SK_G16 is not set
    # CONFIG_NET_EISA 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 is not set
    # 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 is not set
    
    #
    # 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 is not set
    # 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 is not set
    # 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 is not set
    # CONFIG_MSDOS_FS is not set
    # CONFIG_UMSDOS_FS is not set
    # CONFIG_VFAT_FS is not set
    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 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/gateway-kernel.html.