#!/bin/bash

# -- GLOBAL VARS -- #
version="0.0.1e-slack-i386-20070525"
home_dir="$PWD/build"
home_files="$PWD/packages"
oredir="/dev/tty4" #"/dev/pts/0"
makeopt="-j 2"
optflags="-Os"
# arch can have 'i386' for 32bit or 'x86_64' for 64bit
arch="i386"

# -- PRIVATE VARS -- #
bbversion="busybox-1.4.2"
dversion="dialog_1.1-20070409"
eversion="e2fsprogs-1.39"
gversion="grub-0.97"
kversion="linux-2.6.20"
iversion="syslinux-3.35"
nversion="ncurses-5.6"
tversion="tar-1.16.1"
uversion="udev-103"
utilversion="util-linux-2.12r"
zversion="gzip-1.3.12"
currpath=$PWD
name_initrd="my_initrd_image"
home_initrd="$home_dir/my_initrd"
iso="$home_dir/my_distro-$version.iso"

declare -a slack_mirror=( "http://mirrors.unixsol.org/slackware"
"http://slackware.oregonstate.edu/pub/slackware/"
"http://slackware.mirrors.tds.net/pub/slackware/"
"http://slackware.cs.utah.edu/pub/slackware/"
"http://ftp.heanet.ie/mirrors/ftp.slackware.com/pub/slackware/"
"http://ftp.gwdg.de/pub/linux/slackware/"
"http://ftp.lip6.fr/pub/linux/distributions/slackware/"
"http://mirror.pacific.net.au/linux/slackware"
"http://ftp.planetmirror.com/pub/slackware"
"http://www.slackware.at/data"
"http://ftp.belnet.be/packages/slackware"
"http://ftp.linux.cz/pub/linux/slackware"
"http://ftp.ntua.gr/pub/linux/slackware"
"http://ftp.riken.jp/Linux/slackware"
"http://ftp.man.poznan.pl/pub/linux/slackware"
"http://mirror.switch.ch/ftp/mirror/slackware" )

declare -a slack_mirror64=( "http://slamd64.he.net"
"http://anorien.warwick.ac.uk/mirrors/slamd64/"
"http://ftp.heanet.ie/pub/slamd64/"
"http://darkstar.ist.utl.pt/pub/slamd64/"
"http://ftp.slackware.pl/pub/slamd64/"
"http://mirror.vbfx.com/slamd64/"
"http://ftp.scarlet.be/pub/slamd64/"
"http://ftp.nara.wide.ad.jp/pub/Linux/Slamd64/" )

# -- FUNCTIONS -- #

exitstatus() {
	if [ $1 = 0 ]
	then
		echo "done."
	else
		echo "fail."
		exit 1
	fi
}

install_kernel() {
	echo -n "Installing Kernel: "
	cd $home_dir
	cp $kversion/arch/$arch/boot/bzImage $home_dir/distro/boot/vmlinuz
	#cp System.map $home_dir/distro/boot/System.map
	echo "done."
	echo -n "Installing Modules: "
	cd $kversion
	mkdir -p $home_initrd/lib/modules
	make modules_install INSTALL_MOD_PATH=$home_initrd > /dev/null
	cd $home_dir
	echo "done."
}

build_kernel() {
	cd $home_dir
	[ -e "$kversion.tar.bz2" -a -d $kversion ] && install_kernel && return 0
	rm -rf $kversion 2>/dev/null
	if [ ! -e "$kversion.tar.bz2" ]
	then
		echo -n "Downloading kernel: "
		wget -c "http://www.kernel.org/pub/linux/kernel/v2.6/$kversion.tar.bz2" > $oredir 2>&1
		exitstatus $?
	fi
	tar xjf $kversion.tar.bz2
	cd $kversion
	cat > .config << EOF
#
# Automatically generated make config: don't edit
# Linux kernel version: 2.6.20-my_distro
# Fri May  4 11:08:03 2007
#
CONFIG_X86_32=y
CONFIG_GENERIC_TIME=y
CONFIG_LOCKDEP_SUPPORT=y
CONFIG_STACKTRACE_SUPPORT=y
CONFIG_SEMAPHORE_SLEEPERS=y
CONFIG_X86=y
CONFIG_MMU=y
CONFIG_GENERIC_ISA_DMA=y
CONFIG_GENERIC_IOMAP=y
CONFIG_GENERIC_BUG=y
CONFIG_GENERIC_HWEIGHT=y
CONFIG_ARCH_MAY_HAVE_PC_FDC=y
CONFIG_DMI=y
CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"

#
# Code maturity level options
#
CONFIG_EXPERIMENTAL=y
CONFIG_BROKEN_ON_SMP=y
CONFIG_INIT_ENV_ARG_LIMIT=32

#
# General setup
#
CONFIG_LOCALVERSION=""
CONFIG_LOCALVERSION_AUTO=y
CONFIG_SWAP=y
CONFIG_SYSVIPC=y
# CONFIG_IPC_NS is not set
CONFIG_POSIX_MQUEUE=y
CONFIG_BSD_PROCESS_ACCT=y
CONFIG_BSD_PROCESS_ACCT_V3=y
# CONFIG_TASKSTATS is not set
# CONFIG_UTS_NS is not set
# CONFIG_AUDIT is not set
CONFIG_IKCONFIG=y
CONFIG_IKCONFIG_PROC=y
# CONFIG_SYSFS_DEPRECATED is not set
CONFIG_RELAY=y
CONFIG_INITRAMFS_SOURCE=""
CONFIG_CC_OPTIMIZE_FOR_SIZE=y
CONFIG_SYSCTL=y
CONFIG_EMBEDDED=y
CONFIG_UID16=y
CONFIG_SYSCTL_SYSCALL=y
CONFIG_KALLSYMS=y
CONFIG_KALLSYMS_ALL=y
CONFIG_KALLSYMS_EXTRA_PASS=y
CONFIG_HOTPLUG=y
CONFIG_PRINTK=y
CONFIG_BUG=y
CONFIG_ELF_CORE=y
CONFIG_BASE_FULL=y
CONFIG_FUTEX=y
CONFIG_EPOLL=y
CONFIG_SHMEM=y
CONFIG_SLAB=y
CONFIG_VM_EVENT_COUNTERS=y
CONFIG_RT_MUTEXES=y
# CONFIG_TINY_SHMEM is not set
CONFIG_BASE_SMALL=0
# CONFIG_SLOB is not set

#
# Loadable module support
#
CONFIG_MODULES=y
CONFIG_MODULE_UNLOAD=y
CONFIG_MODULE_FORCE_UNLOAD=y
# CONFIG_MODVERSIONS is not set
# CONFIG_MODULE_SRCVERSION_ALL is not set
CONFIG_KMOD=y

#
# Block layer
#
CONFIG_BLOCK=y
CONFIG_LBD=y
CONFIG_BLK_DEV_IO_TRACE=y
CONFIG_LSF=y

#
# IO Schedulers
#
CONFIG_IOSCHED_NOOP=y
CONFIG_IOSCHED_AS=y
CONFIG_IOSCHED_DEADLINE=y
CONFIG_IOSCHED_CFQ=y
# CONFIG_DEFAULT_AS is not set
# CONFIG_DEFAULT_DEADLINE is not set
CONFIG_DEFAULT_CFQ=y
# CONFIG_DEFAULT_NOOP is not set
CONFIG_DEFAULT_IOSCHED="cfq"

#
# Processor type and features
#
# CONFIG_SMP is not set
CONFIG_X86_PC=y
# CONFIG_X86_ELAN is not set
# CONFIG_X86_VOYAGER is not set
# CONFIG_X86_NUMAQ is not set
# CONFIG_X86_SUMMIT is not set
# CONFIG_X86_BIGSMP is not set
# CONFIG_X86_VISWS is not set
# CONFIG_X86_GENERICARCH is not set
# CONFIG_X86_ES7000 is not set
# CONFIG_PARAVIRT is not set
CONFIG_M386=y
# CONFIG_M486 is not set
# CONFIG_M586 is not set
# CONFIG_M586TSC is not set
# CONFIG_M586MMX is not set
# CONFIG_M686 is not set
# CONFIG_MPENTIUMII is not set
# CONFIG_MPENTIUMIII is not set
# CONFIG_MPENTIUMM is not set
# CONFIG_MCORE2 is not set
# CONFIG_MPENTIUM4 is not set
# CONFIG_MK6 is not set
# CONFIG_MK7 is not set
# CONFIG_MK8 is not set
# CONFIG_MCRUSOE is not set
# CONFIG_MEFFICEON is not set
# CONFIG_MWINCHIPC6 is not set
# CONFIG_MWINCHIP2 is not set
# CONFIG_MWINCHIP3D is not set
# CONFIG_MGEODEGX1 is not set
# CONFIG_MGEODE_LX is not set
# CONFIG_MCYRIXIII is not set
# CONFIG_MVIAC3_2 is not set
CONFIG_X86_GENERIC=y
CONFIG_X86_L1_CACHE_SHIFT=7
CONFIG_RWSEM_GENERIC_SPINLOCK=y
# CONFIG_ARCH_HAS_ILOG2_U32 is not set
# CONFIG_ARCH_HAS_ILOG2_U64 is not set
CONFIG_GENERIC_CALIBRATE_DELAY=y
CONFIG_X86_PPRO_FENCE=y
CONFIG_X86_F00F_BUG=y
CONFIG_X86_INTEL_USERCOPY=y
CONFIG_HPET_TIMER=y
CONFIG_HPET_EMULATE_RTC=y
CONFIG_PREEMPT_NONE=y
# CONFIG_PREEMPT_VOLUNTARY is not set
# CONFIG_PREEMPT is not set
CONFIG_X86_UP_APIC=y
# CONFIG_X86_UP_IOAPIC is not set
CONFIG_X86_LOCAL_APIC=y
# CONFIG_X86_MCE is not set
CONFIG_VM86=y
# CONFIG_TOSHIBA is not set
# CONFIG_I8K is not set
CONFIG_X86_REBOOTFIXUPS=y
# CONFIG_MICROCODE is not set
# CONFIG_X86_MSR is not set
# CONFIG_X86_CPUID is not set

#
# Firmware Drivers
#
CONFIG_EDD=y
# CONFIG_DELL_RBU is not set
# CONFIG_DCDBAS is not set
# CONFIG_NOHIGHMEM is not set
CONFIG_HIGHMEM4G=y
# CONFIG_HIGHMEM64G is not set
CONFIG_VMSPLIT_3G=y
# CONFIG_VMSPLIT_3G_OPT is not set
# CONFIG_VMSPLIT_2G is not set
# CONFIG_VMSPLIT_1G is not set
CONFIG_PAGE_OFFSET=0xC0000000
CONFIG_HIGHMEM=y
CONFIG_ARCH_FLATMEM_ENABLE=y
CONFIG_ARCH_SPARSEMEM_ENABLE=y
CONFIG_ARCH_SELECT_MEMORY_MODEL=y
CONFIG_ARCH_POPULATES_NODE_MAP=y
CONFIG_SELECT_MEMORY_MODEL=y
CONFIG_FLATMEM_MANUAL=y
# CONFIG_DISCONTIGMEM_MANUAL is not set
# CONFIG_SPARSEMEM_MANUAL is not set
CONFIG_FLATMEM=y
CONFIG_FLAT_NODE_MEM_MAP=y
CONFIG_SPARSEMEM_STATIC=y
CONFIG_SPLIT_PTLOCK_CPUS=4
# CONFIG_RESOURCES_64BIT is not set
# CONFIG_HIGHPTE is not set
# CONFIG_MATH_EMULATION is not set
CONFIG_MTRR=y
# CONFIG_EFI is not set
CONFIG_SECCOMP=y
# CONFIG_HZ_100 is not set
CONFIG_HZ_250=y
# CONFIG_HZ_300 is not set
# CONFIG_HZ_1000 is not set
CONFIG_HZ=250
# CONFIG_KEXEC is not set
# CONFIG_CRASH_DUMP is not set
CONFIG_PHYSICAL_START=0x100000
# CONFIG_RELOCATABLE is not set
CONFIG_PHYSICAL_ALIGN=0x100000
# CONFIG_COMPAT_VDSO is not set
CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y

#
# Power management options (ACPI, APM)
#
CONFIG_PM=y
CONFIG_PM_LEGACY=y
# CONFIG_PM_DEBUG is not set
# CONFIG_PM_SYSFS_DEPRECATED is not set
# CONFIG_SOFTWARE_SUSPEND is not set

#
# ACPI (Advanced Configuration and Power Interface) Support
#
CONFIG_ACPI=y
CONFIG_ACPI_SLEEP=y
CONFIG_ACPI_SLEEP_PROC_FS=y
# CONFIG_ACPI_SLEEP_PROC_SLEEP is not set
# CONFIG_ACPI_AC is not set
# CONFIG_ACPI_BATTERY is not set
CONFIG_ACPI_BUTTON=y
CONFIG_ACPI_VIDEO=y
# CONFIG_ACPI_HOTKEY is not set
CONFIG_ACPI_FAN=y
# CONFIG_ACPI_DOCK is not set
CONFIG_ACPI_PROCESSOR=y
CONFIG_ACPI_THERMAL=y
# CONFIG_ACPI_ASUS is not set
# CONFIG_ACPI_IBM is not set
# CONFIG_ACPI_TOSHIBA is not set
CONFIG_ACPI_BLACKLIST_YEAR=0
# CONFIG_ACPI_DEBUG is not set
CONFIG_ACPI_EC=y
CONFIG_ACPI_POWER=y
CONFIG_ACPI_SYSTEM=y
CONFIG_X86_PM_TIMER=y
# CONFIG_ACPI_CONTAINER is not set
# CONFIG_ACPI_SBS is not set

#
# APM (Advanced Power Management) BIOS Support
#
# CONFIG_APM is not set

#
# CPU Frequency scaling
#
# CONFIG_CPU_FREQ is not set

#
# Bus options (PCI, PCMCIA, EISA, MCA, ISA)
#
CONFIG_PCI=y
# CONFIG_PCI_GOBIOS is not set
# CONFIG_PCI_GOMMCONFIG is not set
# CONFIG_PCI_GODIRECT is not set
CONFIG_PCI_GOANY=y
CONFIG_PCI_BIOS=y
CONFIG_PCI_DIRECT=y
CONFIG_PCI_MMCONFIG=y
CONFIG_PCIEPORTBUS=y
# CONFIG_HOTPLUG_PCI_PCIE is not set
# CONFIG_PCIEAER is not set
# CONFIG_PCI_DEBUG is not set
CONFIG_ISA_DMA_API=y
CONFIG_ISA=y
CONFIG_EISA=y
CONFIG_EISA_VLB_PRIMING=y
CONFIG_EISA_PCI_EISA=y
CONFIG_EISA_VIRTUAL_ROOT=y
CONFIG_EISA_NAMES=y
# CONFIG_MCA is not set
# CONFIG_SCx200 is not set
CONFIG_K8_NB=y

#
# PCCARD (PCMCIA/CardBus) support
#
# CONFIG_PCCARD is not set

#
# PCI Hotplug Support
#
CONFIG_HOTPLUG_PCI=y
CONFIG_HOTPLUG_PCI_FAKE=y
CONFIG_HOTPLUG_PCI_COMPAQ=y
CONFIG_HOTPLUG_PCI_COMPAQ_NVRAM=y
CONFIG_HOTPLUG_PCI_ACPI=y
CONFIG_HOTPLUG_PCI_ACPI_IBM=y
# CONFIG_HOTPLUG_PCI_CPCI is not set
# CONFIG_HOTPLUG_PCI_SHPC is not set

#
# Executable file formats
#
CONFIG_BINFMT_ELF=y
CONFIG_BINFMT_AOUT=y
CONFIG_BINFMT_MISC=y

#
# Networking
#
CONFIG_NET=y

#
# Networking options
#
# CONFIG_NETDEBUG is not set
# CONFIG_PACKET is not set
CONFIG_UNIX=y
# CONFIG_NET_KEY is not set
# CONFIG_INET is not set
# CONFIG_NETWORK_SECMARK is not set
# CONFIG_NETFILTER is not set
# CONFIG_ATM is not set
# CONFIG_BRIDGE is not set
# CONFIG_VLAN_8021Q is not set
# CONFIG_DECNET is not set
# CONFIG_LLC2 is not set
# CONFIG_IPX is not set
# CONFIG_ATALK is not set
# CONFIG_X25 is not set
# CONFIG_LAPB is not set
# CONFIG_WAN_ROUTER is not set

#
# QoS and/or fair queueing
#
# CONFIG_NET_SCHED is not set

#
# Network testing
#
# CONFIG_NET_PKTGEN is not set
# CONFIG_HAMRADIO is not set
# CONFIG_IRDA is not set
# CONFIG_BT is not set
# CONFIG_IEEE80211 is not set

#
# Device Drivers
#

#
# Generic Driver Options
#
CONFIG_STANDALONE=y
CONFIG_PREVENT_FIRMWARE_BUILD=y
CONFIG_FW_LOADER=y
# CONFIG_DEBUG_DRIVER is not set
# CONFIG_SYS_HYPERVISOR is not set

#
# Connector - unified userspace <-> kernelspace linker
#
CONFIG_CONNECTOR=y
CONFIG_PROC_EVENTS=y

#
# Memory Technology Devices (MTD)
#
# CONFIG_MTD is not set

#
# Parallel port support
#
CONFIG_PARPORT=y
CONFIG_PARPORT_PC=y
CONFIG_PARPORT_SERIAL=y
CONFIG_PARPORT_PC_FIFO=y
CONFIG_PARPORT_PC_SUPERIO=y
# CONFIG_PARPORT_GSC is not set
# CONFIG_PARPORT_AX88796 is not set
CONFIG_PARPORT_1284=y

#
# Plug and Play support
#
CONFIG_PNP=y
# CONFIG_PNP_DEBUG is not set

#
# Protocols
#
CONFIG_ISAPNP=y
# CONFIG_PNPBIOS is not set
CONFIG_PNPACPI=y

#
# Block devices
#
# CONFIG_BLK_DEV_FD is not set
# CONFIG_BLK_DEV_XD is not set
CONFIG_PARIDE=y
CONFIG_PARIDE_PARPORT=y

#
# Parallel IDE high-level drivers
#
CONFIG_PARIDE_PD=y
CONFIG_PARIDE_PCD=y
CONFIG_PARIDE_PF=y
# CONFIG_PARIDE_PT is not set
CONFIG_PARIDE_PG=y

#
# Parallel IDE protocol modules
#
# CONFIG_PARIDE_ATEN is not set
# CONFIG_PARIDE_BPCK is not set
# CONFIG_PARIDE_BPCK6 is not set
# CONFIG_PARIDE_COMM is not set
# CONFIG_PARIDE_DSTR is not set
# CONFIG_PARIDE_FIT2 is not set
# CONFIG_PARIDE_FIT3 is not set
# CONFIG_PARIDE_EPAT is not set
# CONFIG_PARIDE_EPIA is not set
# CONFIG_PARIDE_FRIQ is not set
# CONFIG_PARIDE_FRPW is not set
# CONFIG_PARIDE_KBIC is not set
# CONFIG_PARIDE_KTTI is not set
# CONFIG_PARIDE_ON20 is not set
# CONFIG_PARIDE_ON26 is not set
# CONFIG_BLK_CPQ_DA is not set
# CONFIG_BLK_CPQ_CISS_DA is not set
# CONFIG_BLK_DEV_DAC960 is not set
# CONFIG_BLK_DEV_UMEM is not set
# CONFIG_BLK_DEV_COW_COMMON is not set
CONFIG_BLK_DEV_LOOP=y
# CONFIG_BLK_DEV_CRYPTOLOOP is not set
# CONFIG_BLK_DEV_NBD is not set
# CONFIG_BLK_DEV_SX8 is not set
# CONFIG_BLK_DEV_UB is not set
CONFIG_BLK_DEV_RAM=y
CONFIG_BLK_DEV_RAM_COUNT=16
CONFIG_BLK_DEV_RAM_SIZE=8192
CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024
CONFIG_BLK_DEV_INITRD=y
# CONFIG_CDROM_PKTCDVD is not set
# CONFIG_ATA_OVER_ETH is not set

#
# Misc devices
#
# CONFIG_IBM_ASM is not set
# CONFIG_SGI_IOC4 is not set
# CONFIG_TIFM_CORE is not set

#
# ATA/ATAPI/MFM/RLL support
#
CONFIG_IDE=y
CONFIG_IDE_MAX_HWIFS=4
CONFIG_BLK_DEV_IDE=y

#
# Please see Documentation/ide.txt for help/info on IDE drives
#
# CONFIG_BLK_DEV_IDE_SATA is not set
# CONFIG_BLK_DEV_HD_IDE is not set
CONFIG_BLK_DEV_IDEDISK=m
CONFIG_IDEDISK_MULTI_MODE=y
CONFIG_BLK_DEV_IDECD=m
# CONFIG_BLK_DEV_IDETAPE is not set
CONFIG_BLK_DEV_IDEFLOPPY=m
# CONFIG_BLK_DEV_IDESCSI is not set
CONFIG_IDE_TASK_IOCTL=y

#
# IDE chipset support/bugfixes
#
CONFIG_IDE_GENERIC=y
CONFIG_BLK_DEV_CMD640=y
CONFIG_BLK_DEV_CMD640_ENHANCED=y
CONFIG_BLK_DEV_IDEPNP=y
CONFIG_BLK_DEV_IDEPCI=y
CONFIG_IDEPCI_SHARE_IRQ=y
CONFIG_BLK_DEV_OFFBOARD=y
CONFIG_BLK_DEV_GENERIC=y
CONFIG_BLK_DEV_OPTI621=y
CONFIG_BLK_DEV_RZ1000=y
CONFIG_BLK_DEV_IDEDMA_PCI=y
CONFIG_BLK_DEV_IDEDMA_FORCED=y
CONFIG_IDEDMA_PCI_AUTO=y
CONFIG_IDEDMA_ONLYDISK=y
CONFIG_BLK_DEV_AEC62XX=y
CONFIG_BLK_DEV_ALI15X3=y
# CONFIG_WDC_ALI15X3 is not set
CONFIG_BLK_DEV_AMD74XX=y
CONFIG_BLK_DEV_ATIIXP=y
CONFIG_BLK_DEV_CMD64X=y
CONFIG_BLK_DEV_TRIFLEX=y
CONFIG_BLK_DEV_CY82C693=y
CONFIG_BLK_DEV_CS5520=y
CONFIG_BLK_DEV_CS5530=y
CONFIG_BLK_DEV_CS5535=y
CONFIG_BLK_DEV_HPT34X=y
# CONFIG_HPT34X_AUTODMA is not set
CONFIG_BLK_DEV_HPT366=y
CONFIG_BLK_DEV_JMICRON=y
CONFIG_BLK_DEV_SC1200=y
CONFIG_BLK_DEV_PIIX=y
CONFIG_BLK_DEV_IT821X=y
CONFIG_BLK_DEV_NS87415=y
CONFIG_BLK_DEV_PDC202XX_OLD=y
CONFIG_PDC202XX_BURST=y
CONFIG_BLK_DEV_PDC202XX_NEW=y
CONFIG_BLK_DEV_SVWKS=y
CONFIG_BLK_DEV_SIIMAGE=y
CONFIG_BLK_DEV_SIS5513=y
CONFIG_BLK_DEV_SLC90E66=y
CONFIG_BLK_DEV_TRM290=y
CONFIG_BLK_DEV_VIA82CXXX=y
# CONFIG_IDE_ARM is not set
CONFIG_IDE_CHIPSETS=y

#
# Note: most of these also require special kernel boot parameters
#
CONFIG_BLK_DEV_4DRIVES=y
CONFIG_BLK_DEV_ALI14XX=y
CONFIG_BLK_DEV_DTC2278=y
CONFIG_BLK_DEV_HT6560B=y
CONFIG_BLK_DEV_QD65XX=y
CONFIG_BLK_DEV_UMC8672=y
CONFIG_BLK_DEV_IDEDMA=y
# CONFIG_IDEDMA_IVB is not set
CONFIG_IDEDMA_AUTO=y
# CONFIG_BLK_DEV_HD is not set

#
# SCSI device support
#
# CONFIG_RAID_ATTRS is not set
CONFIG_SCSI=y
CONFIG_SCSI_TGT=y
CONFIG_SCSI_NETLINK=y
CONFIG_SCSI_PROC_FS=y

#
# SCSI support type (disk, tape, CD-ROM)
#
CONFIG_BLK_DEV_SD=m
# CONFIG_CHR_DEV_ST is not set
# CONFIG_CHR_DEV_OSST is not set
CONFIG_BLK_DEV_SR=m
CONFIG_BLK_DEV_SR_VENDOR=y
CONFIG_CHR_DEV_SG=m
# CONFIG_CHR_DEV_SCH is not set

#
# Some SCSI devices (e.g. CD jukebox) support multiple LUNs
#
# CONFIG_SCSI_MULTI_LUN is not set
# CONFIG_SCSI_CONSTANTS is not set
# CONFIG_SCSI_LOGGING is not set
CONFIG_SCSI_SCAN_ASYNC=y

#
# SCSI Transports
#
CONFIG_SCSI_SPI_ATTRS=y
CONFIG_SCSI_FC_ATTRS=y
CONFIG_SCSI_ISCSI_ATTRS=y
CONFIG_SCSI_SAS_ATTRS=y
CONFIG_SCSI_SAS_LIBSAS=y
# CONFIG_SCSI_SAS_LIBSAS_DEBUG is not set

#
# SCSI low-level drivers
#
CONFIG_BLK_DEV_3W_XXXX_RAID=m
CONFIG_SCSI_3W_9XXX=m
CONFIG_SCSI_7000FASST=m
CONFIG_SCSI_ACARD=m
CONFIG_SCSI_AHA152X=m
CONFIG_SCSI_AHA1542=m
CONFIG_SCSI_AHA1740=m
CONFIG_SCSI_AACRAID=m
CONFIG_SCSI_AIC7XXX=m
CONFIG_AIC7XXX_CMDS_PER_DEVICE=32
CONFIG_AIC7XXX_RESET_DELAY_MS=5000
CONFIG_AIC7XXX_PROBE_EISA_VL=y
# CONFIG_AIC7XXX_DEBUG_ENABLE is not set
CONFIG_AIC7XXX_DEBUG_MASK=0
CONFIG_AIC7XXX_REG_PRETTY_PRINT=y
CONFIG_SCSI_AIC7XXX_OLD=m
CONFIG_SCSI_AIC79XX=m
CONFIG_AIC79XX_CMDS_PER_DEVICE=32
CONFIG_AIC79XX_RESET_DELAY_MS=5000
CONFIG_AIC79XX_ENABLE_RD_STRM=y
# CONFIG_AIC79XX_DEBUG_ENABLE is not set
CONFIG_AIC79XX_DEBUG_MASK=0
# CONFIG_AIC79XX_REG_PRETTY_PRINT is not set
CONFIG_SCSI_AIC94XX=m
CONFIG_AIC94XX_DEBUG=y
# CONFIG_SCSI_DPT_I2O is not set
CONFIG_SCSI_ADVANSYS=m
CONFIG_SCSI_IN2000=m
CONFIG_SCSI_ARCMSR=m
CONFIG_MEGARAID_NEWGEN=y
CONFIG_MEGARAID_MM=y
CONFIG_MEGARAID_MAILBOX=y
# CONFIG_MEGARAID_LEGACY is not set
# CONFIG_MEGARAID_SAS is not set
# CONFIG_SCSI_HPTIOP is not set
CONFIG_SCSI_BUSLOGIC=y
# CONFIG_SCSI_OMIT_FLASHPOINT is not set
CONFIG_SCSI_DMX3191D=m
CONFIG_SCSI_DTC3280=m
CONFIG_SCSI_EATA=m
CONFIG_SCSI_EATA_TAGGED_QUEUE=y
CONFIG_SCSI_EATA_LINKED_COMMANDS=y
CONFIG_SCSI_EATA_MAX_TAGS=16
CONFIG_SCSI_FUTURE_DOMAIN=m
# CONFIG_SCSI_GDTH is not set
CONFIG_SCSI_GENERIC_NCR5380=m
CONFIG_SCSI_GENERIC_NCR5380_MMIO=m
CONFIG_SCSI_GENERIC_NCR53C400=y
# CONFIG_SCSI_IPS is not set
CONFIG_SCSI_INITIO=m
CONFIG_SCSI_INIA100=m
# CONFIG_SCSI_PPA is not set
CONFIG_SCSI_IMM=m
CONFIG_SCSI_IZIP_EPP16=y
CONFIG_SCSI_IZIP_SLOW_CTR=y
CONFIG_SCSI_NCR53C406A=m
CONFIG_SCSI_STEX=m
CONFIG_SCSI_SYM53C8XX_2=m
CONFIG_SCSI_SYM53C8XX_DMA_ADDRESSING_MODE=1
CONFIG_SCSI_SYM53C8XX_DEFAULT_TAGS=16
CONFIG_SCSI_SYM53C8XX_MAX_TAGS=64
CONFIG_SCSI_SYM53C8XX_MMIO=y
# CONFIG_SCSI_IPR is not set
CONFIG_SCSI_PAS16=m
CONFIG_SCSI_PSI240I=m
CONFIG_SCSI_QLOGIC_FAS=m
CONFIG_SCSI_QLOGIC_1280=m
CONFIG_SCSI_QLA_FC=m
CONFIG_SCSI_QLA_ISCSI=m
CONFIG_SCSI_LPFC=m
CONFIG_SCSI_SEAGATE=m
CONFIG_SCSI_SIM710=m
CONFIG_53C700_IO_MAPPED=y
CONFIG_SCSI_SYM53C416=m
CONFIG_SCSI_DC395x=m
CONFIG_SCSI_DC390T=m
CONFIG_SCSI_T128=m
CONFIG_SCSI_U14_34F=m
CONFIG_SCSI_U14_34F_TAGGED_QUEUE=y
CONFIG_SCSI_U14_34F_LINKED_COMMANDS=y
CONFIG_SCSI_U14_34F_MAX_TAGS=8
CONFIG_SCSI_ULTRASTOR=y
CONFIG_SCSI_NSP32=y
# CONFIG_SCSI_DEBUG is not set
CONFIG_SCSI_SRP=m

#
# Serial ATA (prod) and Parallel ATA (experimental) drivers
#
CONFIG_ATA=y
# CONFIG_ATA_NONSTANDARD is not set
CONFIG_SATA_AHCI=m
CONFIG_SATA_SVW=m
CONFIG_ATA_PIIX=m
# CONFIG_SATA_MV is not set
CONFIG_SATA_NV=m
CONFIG_PDC_ADMA=m
CONFIG_SATA_QSTOR=m
CONFIG_SATA_PROMISE=m
CONFIG_SATA_SX4=m
CONFIG_SATA_SIL=m
CONFIG_SATA_SIL24=m
CONFIG_SATA_SIS=m
CONFIG_SATA_ULI=m
CONFIG_SATA_VIA=m
CONFIG_SATA_VITESSE=m
CONFIG_SATA_INTEL_COMBINED=y
# CONFIG_PATA_ALI is not set
CONFIG_PATA_AMD=m
# CONFIG_PATA_ARTOP is not set
# CONFIG_PATA_ATIIXP is not set
# CONFIG_PATA_CMD64X is not set
CONFIG_PATA_CS5520=m
# CONFIG_PATA_CS5530 is not set
# CONFIG_PATA_CS5535 is not set
# CONFIG_PATA_CYPRESS is not set
CONFIG_PATA_EFAR=m
CONFIG_ATA_GENERIC=m
# CONFIG_PATA_HPT366 is not set
# CONFIG_PATA_HPT37X is not set
# CONFIG_PATA_HPT3X2N is not set
# CONFIG_PATA_HPT3X3 is not set
# CONFIG_PATA_ISAPNP is not set
# CONFIG_PATA_IT821X is not set
CONFIG_PATA_JMICRON=m
# CONFIG_PATA_LEGACY is not set
CONFIG_PATA_TRIFLEX=m
CONFIG_PATA_MARVELL=m
CONFIG_PATA_MPIIX=m
# CONFIG_PATA_OLDPIIX is not set
CONFIG_PATA_NETCELL=m
# CONFIG_PATA_NS87410 is not set
# CONFIG_PATA_OPTI is not set
# CONFIG_PATA_OPTIDMA is not set
# CONFIG_PATA_PDC_OLD is not set
CONFIG_PATA_QDI=m
# CONFIG_PATA_RADISYS is not set
CONFIG_PATA_RZ1000=m
CONFIG_PATA_SC1200=m
# CONFIG_PATA_SERVERWORKS is not set
CONFIG_PATA_PDC2027X=m
CONFIG_PATA_SIL680=m
# CONFIG_PATA_SIS is not set
CONFIG_PATA_VIA=m
CONFIG_PATA_WINBOND=m
CONFIG_PATA_WINBOND_VLB=m
CONFIG_PATA_PLATFORM=m

#
# Old CD-ROM drivers (not SCSI, not IDE)
#
# CONFIG_CD_NO_IDESCSI is not set

#
# Multi-device support (RAID and LVM)
#
CONFIG_MD=y
# CONFIG_BLK_DEV_MD is not set
CONFIG_BLK_DEV_DM=y
# CONFIG_DM_DEBUG is not set
# CONFIG_DM_CRYPT is not set
# CONFIG_DM_SNAPSHOT is not set
# CONFIG_DM_MIRROR is not set
# CONFIG_DM_ZERO is not set
# CONFIG_DM_MULTIPATH is not set

#
# Fusion MPT device support
#
CONFIG_FUSION=y
CONFIG_FUSION_SPI=y
CONFIG_FUSION_FC=y
CONFIG_FUSION_SAS=y
CONFIG_FUSION_MAX_SGE=128
CONFIG_FUSION_CTL=y

#
# IEEE 1394 (FireWire) support
#
CONFIG_IEEE1394=m

#
# Subsystem Options
#
# CONFIG_IEEE1394_VERBOSEDEBUG is not set
# CONFIG_IEEE1394_OUI_DB is not set
# CONFIG_IEEE1394_EXTRA_CONFIG_ROMS is not set
# CONFIG_IEEE1394_EXPORT_FULL_API is not set

#
# Device Drivers
#
# CONFIG_IEEE1394_PCILYNX is not set
CONFIG_IEEE1394_OHCI1394=m

#
# Protocol Drivers
#
# CONFIG_IEEE1394_VIDEO1394 is not set
CONFIG_IEEE1394_SBP2=m
# CONFIG_IEEE1394_SBP2_PHYS_DMA is not set
# CONFIG_IEEE1394_DV1394 is not set
# CONFIG_IEEE1394_RAWIO is not set

#
# I2O device support
#
CONFIG_I2O=y
CONFIG_I2O_LCT_NOTIFY_ON_CHANGES=y
CONFIG_I2O_EXT_ADAPTEC=y
# CONFIG_I2O_CONFIG is not set
CONFIG_I2O_BUS=y
CONFIG_I2O_BLOCK=y
CONFIG_I2O_SCSI=y
# CONFIG_I2O_PROC is not set

#
# Network device support
#
# CONFIG_NETDEVICES is not set
# CONFIG_NETPOLL is not set
# CONFIG_NET_POLL_CONTROLLER is not set

#
# ISDN subsystem
#
# CONFIG_ISDN is not set

#
# Telephony Support
#
# CONFIG_PHONE is not set

#
# Input device support
#
CONFIG_INPUT=y
CONFIG_INPUT_FF_MEMLESS=y

#
# Userland interfaces
#
# CONFIG_INPUT_MOUSEDEV is not set
# CONFIG_INPUT_JOYDEV is not set
# CONFIG_INPUT_TSDEV is not set
CONFIG_INPUT_EVDEV=y
# CONFIG_INPUT_EVBUG is not set

#
# Input Device Drivers
#
CONFIG_INPUT_KEYBOARD=y
CONFIG_KEYBOARD_ATKBD=y
# CONFIG_KEYBOARD_SUNKBD is not set
# CONFIG_KEYBOARD_LKKBD is not set
# CONFIG_KEYBOARD_XTKBD is not set
# CONFIG_KEYBOARD_NEWTON is not set
# CONFIG_KEYBOARD_STOWAWAY is not set
# CONFIG_INPUT_MOUSE is not set
# CONFIG_INPUT_JOYSTICK is not set
# CONFIG_INPUT_TOUCHSCREEN is not set
# CONFIG_INPUT_MISC is not set

#
# Hardware I/O ports
#
CONFIG_SERIO=y
CONFIG_SERIO_I8042=y
CONFIG_SERIO_SERPORT=y
CONFIG_SERIO_CT82C710=y
CONFIG_SERIO_PARKBD=y
CONFIG_SERIO_PCIPS2=y
CONFIG_SERIO_LIBPS2=y
# CONFIG_SERIO_RAW is not set
# CONFIG_GAMEPORT is not set

#
# Character devices
#
CONFIG_VT=y
CONFIG_VT_CONSOLE=y
CONFIG_HW_CONSOLE=y
# CONFIG_VT_HW_CONSOLE_BINDING is not set
# CONFIG_SERIAL_NONSTANDARD is not set

#
# Serial drivers
#
CONFIG_SERIAL_8250=y
CONFIG_SERIAL_8250_CONSOLE=y
CONFIG_SERIAL_8250_PCI=y
CONFIG_SERIAL_8250_PNP=y
CONFIG_SERIAL_8250_NR_UARTS=4
CONFIG_SERIAL_8250_RUNTIME_UARTS=4
CONFIG_SERIAL_8250_EXTENDED=y
CONFIG_SERIAL_8250_MANY_PORTS=y
# CONFIG_SERIAL_8250_FOURPORT is not set
# CONFIG_SERIAL_8250_ACCENT is not set
# CONFIG_SERIAL_8250_BOCA is not set
CONFIG_SERIAL_8250_EXAR_ST16C554=m
# CONFIG_SERIAL_8250_HUB6 is not set
CONFIG_SERIAL_8250_SHARE_IRQ=y
# CONFIG_SERIAL_8250_DETECT_IRQ is not set
CONFIG_SERIAL_8250_RSA=y

#
# Non-8250 serial port support
#
CONFIG_SERIAL_CORE=y
CONFIG_SERIAL_CORE_CONSOLE=y
# CONFIG_SERIAL_JSM is not set
CONFIG_UNIX98_PTYS=y
# CONFIG_LEGACY_PTYS is not set
CONFIG_PRINTER=y
CONFIG_LP_CONSOLE=y
CONFIG_PPDEV=y
# CONFIG_TIPAR is not set

#
# IPMI
#
# CONFIG_IPMI_HANDLER is not set

#
# Watchdog Cards
#
# CONFIG_WATCHDOG is not set
CONFIG_HW_RANDOM=y
CONFIG_HW_RANDOM_INTEL=y
CONFIG_HW_RANDOM_AMD=y
CONFIG_HW_RANDOM_GEODE=y
CONFIG_HW_RANDOM_VIA=y
# CONFIG_NVRAM is not set
CONFIG_RTC=y
CONFIG_DTLK=y
# CONFIG_R3964 is not set
# CONFIG_APPLICOM is not set
# CONFIG_SONYPI is not set
CONFIG_AGP=y
CONFIG_AGP_ALI=y
CONFIG_AGP_ATI=y
CONFIG_AGP_AMD=y
CONFIG_AGP_AMD64=y
CONFIG_AGP_INTEL=y
CONFIG_AGP_NVIDIA=y
CONFIG_AGP_SIS=y
CONFIG_AGP_SWORKS=y
CONFIG_AGP_VIA=y
CONFIG_AGP_EFFICEON=y
# CONFIG_DRM is not set
# CONFIG_MWAVE is not set
# CONFIG_PC8736x_GPIO is not set
# CONFIG_NSC_GPIO is not set
# CONFIG_CS5535_GPIO is not set
# CONFIG_RAW_DRIVER is not set
CONFIG_HPET=y
# CONFIG_HPET_RTC_IRQ is not set
CONFIG_HPET_MMAP=y
# CONFIG_HANGCHECK_TIMER is not set

#
# TPM devices
#
# CONFIG_TCG_TPM is not set
# CONFIG_TELCLOCK is not set

#
# I2C support
#
CONFIG_I2C=y
CONFIG_I2C_CHARDEV=y

#
# I2C Algorithms
#
CONFIG_I2C_ALGOBIT=y
CONFIG_I2C_ALGOPCF=y
CONFIG_I2C_ALGOPCA=y

#
# I2C Hardware Bus support
#
CONFIG_I2C_ALI1535=y
CONFIG_I2C_ALI1563=y
CONFIG_I2C_ALI15X3=y
CONFIG_I2C_AMD756=y
CONFIG_I2C_AMD756_S4882=y
CONFIG_I2C_AMD8111=y
CONFIG_I2C_ELEKTOR=y
CONFIG_I2C_I801=y
CONFIG_I2C_I810=y
CONFIG_I2C_PIIX4=y
CONFIG_I2C_NFORCE2=y
# CONFIG_I2C_OCORES is not set
CONFIG_I2C_PARPORT=y
CONFIG_I2C_PARPORT_LIGHT=y
CONFIG_I2C_PROSAVAGE=y
CONFIG_I2C_SAVAGE4=y
CONFIG_SCx200_ACB=y
CONFIG_I2C_SIS5595=y
CONFIG_I2C_SIS630=y
CONFIG_I2C_SIS96X=y
# CONFIG_I2C_STUB is not set
CONFIG_I2C_VIA=y
CONFIG_I2C_VIAPRO=y
CONFIG_I2C_VOODOO3=y
# CONFIG_I2C_PCA_ISA is not set

#
# Miscellaneous I2C Chip support
#
CONFIG_SENSORS_DS1337=y
CONFIG_SENSORS_DS1374=y
CONFIG_SENSORS_EEPROM=y
CONFIG_SENSORS_PCF8574=y
CONFIG_SENSORS_PCA9539=y
CONFIG_SENSORS_PCF8591=y
CONFIG_SENSORS_MAX6875=y
# CONFIG_I2C_DEBUG_CORE is not set
# CONFIG_I2C_DEBUG_ALGO is not set
# CONFIG_I2C_DEBUG_BUS is not set
# CONFIG_I2C_DEBUG_CHIP is not set

#
# SPI support
#
# CONFIG_SPI is not set
# CONFIG_SPI_MASTER is not set

#
# Dallas's 1-wire bus
#
# CONFIG_W1 is not set

#
# Hardware Monitoring support
#
# CONFIG_HWMON is not set
# CONFIG_HWMON_VID is not set

#
# Multimedia devices
#
# CONFIG_VIDEO_DEV is not set

#
# Digital Video Broadcasting Devices
#
# CONFIG_USB_DABUSB is not set

#
# Graphics support
#
CONFIG_FIRMWARE_EDID=y
CONFIG_FB=y
# CONFIG_FB_DDC is not set
CONFIG_FB_CFB_FILLRECT=y
CONFIG_FB_CFB_COPYAREA=y
CONFIG_FB_CFB_IMAGEBLIT=y
# CONFIG_FB_MACMODES is not set
# CONFIG_FB_BACKLIGHT is not set
CONFIG_FB_MODE_HELPERS=y
CONFIG_FB_TILEBLITTING=y
# CONFIG_FB_CIRRUS is not set
# CONFIG_FB_PM2 is not set
# CONFIG_FB_CYBER2000 is not set
# CONFIG_FB_ARC is not set
# CONFIG_FB_ASILIANT is not set
# CONFIG_FB_IMSTT is not set
CONFIG_FB_VGA16=y
CONFIG_FB_VESA=y
# CONFIG_FB_HGA is not set
# CONFIG_FB_S1D13XXX is not set
# CONFIG_FB_NVIDIA is not set
# CONFIG_FB_RIVA is not set
# CONFIG_FB_I810 is not set
# CONFIG_FB_INTEL is not set
# CONFIG_FB_MATROX is not set
# CONFIG_FB_RADEON is not set
# CONFIG_FB_ATY128 is not set
# CONFIG_FB_ATY is not set
# CONFIG_FB_SAVAGE is not set
# CONFIG_FB_SIS is not set
# CONFIG_FB_NEOMAGIC is not set
# CONFIG_FB_KYRO is not set
# CONFIG_FB_3DFX is not set
# CONFIG_FB_VOODOO1 is not set
# CONFIG_FB_CYBLA is not set
# CONFIG_FB_TRIDENT is not set
# CONFIG_FB_GEODE is not set
# CONFIG_FB_VIRTUAL is not set

#
# Console display driver support
#
CONFIG_VGA_CONSOLE=y
# CONFIG_VGACON_SOFT_SCROLLBACK is not set
CONFIG_VIDEO_SELECT=y
# CONFIG_MDA_CONSOLE is not set
CONFIG_DUMMY_CONSOLE=y
CONFIG_FRAMEBUFFER_CONSOLE=y
# CONFIG_FRAMEBUFFER_CONSOLE_ROTATION is not set
# CONFIG_FONTS is not set
CONFIG_FONT_8x8=y
CONFIG_FONT_8x16=y

#
# Logo configuration
#
# CONFIG_LOGO is not set
# CONFIG_BACKLIGHT_LCD_SUPPORT is not set

#
# Sound
#
# CONFIG_SOUND is not set

#
# HID Devices
#
CONFIG_HID=y

#
# USB support
#
CONFIG_USB_ARCH_HAS_HCD=y
CONFIG_USB_ARCH_HAS_OHCI=y
CONFIG_USB_ARCH_HAS_EHCI=y
CONFIG_USB=m
# CONFIG_USB_DEBUG is not set

#
# Miscellaneous USB options
#
CONFIG_USB_DEVICEFS=y
# CONFIG_USB_BANDWIDTH is not set
# CONFIG_USB_DYNAMIC_MINORS is not set
# CONFIG_USB_SUSPEND is not set
# CONFIG_USB_OTG is not set

#
# USB Host Controller Drivers
#
CONFIG_USB_EHCI_HCD=m
CONFIG_USB_EHCI_SPLIT_ISO=y
CONFIG_USB_EHCI_ROOT_HUB_TT=y
CONFIG_USB_EHCI_TT_NEWSCHED=y
# CONFIG_USB_ISP116X_HCD is not set
CONFIG_USB_OHCI_HCD=m
# CONFIG_USB_OHCI_BIG_ENDIAN is not set
CONFIG_USB_OHCI_LITTLE_ENDIAN=y
CONFIG_USB_UHCI_HCD=m
# CONFIG_USB_SL811_HCD is not set

#
# USB Device Class drivers
#
# CONFIG_USB_ACM is not set
# CONFIG_USB_PRINTER is not set

#
# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
#

#
# may also be needed; see USB_STORAGE Help for more information
#
CONFIG_USB_STORAGE=m
# CONFIG_USB_STORAGE_DEBUG is not set
CONFIG_USB_STORAGE_DATAFAB=y
CONFIG_USB_STORAGE_FREECOM=y
CONFIG_USB_STORAGE_ISD200=y
CONFIG_USB_STORAGE_DPCM=y
CONFIG_USB_STORAGE_USBAT=y
CONFIG_USB_STORAGE_SDDR09=y
CONFIG_USB_STORAGE_SDDR55=y
CONFIG_USB_STORAGE_JUMPSHOT=y
CONFIG_USB_STORAGE_ALAUDA=y
# CONFIG_USB_STORAGE_KARMA is not set
# CONFIG_USB_LIBUSUAL is not set

#
# USB Input Devices
#
CONFIG_USB_HID=m
# CONFIG_USB_HIDINPUT_POWERBOOK is not set
CONFIG_HID_FF=y
CONFIG_HID_PID=y
CONFIG_LOGITECH_FF=y
CONFIG_THRUSTMASTER_FF=y
# CONFIG_ZEROPLUS_FF is not set
CONFIG_USB_HIDDEV=y

#
# USB HID Boot Protocol drivers
#
# CONFIG_USB_KBD is not set
# CONFIG_USB_MOUSE is not set
# CONFIG_USB_AIPTEK is not set
# CONFIG_USB_WACOM is not set
# CONFIG_USB_ACECAD is not set
# CONFIG_USB_KBTAB is not set
# CONFIG_USB_POWERMATE is not set
# CONFIG_USB_TOUCHSCREEN is not set
# CONFIG_USB_YEALINK is not set
# CONFIG_USB_XPAD is not set
# CONFIG_USB_ATI_REMOTE is not set
# CONFIG_USB_ATI_REMOTE2 is not set
# CONFIG_USB_KEYSPAN_REMOTE is not set
# CONFIG_USB_APPLETOUCH is not set

#
# USB Imaging devices
#
# CONFIG_USB_MDC800 is not set
# CONFIG_USB_MICROTEK is not set

#
# USB Network Adapters
#
# CONFIG_USB_CATC is not set
# CONFIG_USB_KAWETH is not set
# CONFIG_USB_PEGASUS is not set
# CONFIG_USB_RTL8150 is not set
# CONFIG_USB_USBNET_MII is not set
# CONFIG_USB_USBNET is not set
# CONFIG_USB_MON is not set

#
# USB port drivers
#
# CONFIG_USB_USS720 is not set

#
# USB Serial Converter support
#
CONFIG_USB_SERIAL=m
CONFIG_USB_SERIAL_GENERIC=y
# CONFIG_USB_SERIAL_AIRCABLE is not set
# CONFIG_USB_SERIAL_AIRPRIME is not set
# CONFIG_USB_SERIAL_ARK3116 is not set
# CONFIG_USB_SERIAL_BELKIN is not set
# CONFIG_USB_SERIAL_WHITEHEAT is not set
# CONFIG_USB_SERIAL_DIGI_ACCELEPORT is not set
# CONFIG_USB_SERIAL_CP2101 is not set
# CONFIG_USB_SERIAL_CYPRESS_M8 is not set
# CONFIG_USB_SERIAL_EMPEG is not set
# CONFIG_USB_SERIAL_FTDI_SIO is not set
# CONFIG_USB_SERIAL_FUNSOFT is not set
# CONFIG_USB_SERIAL_VISOR is not set
# CONFIG_USB_SERIAL_IPAQ is not set
# CONFIG_USB_SERIAL_IR is not set
# CONFIG_USB_SERIAL_EDGEPORT is not set
# CONFIG_USB_SERIAL_EDGEPORT_TI is not set
# CONFIG_USB_SERIAL_GARMIN is not set
# CONFIG_USB_SERIAL_IPW is not set
# CONFIG_USB_SERIAL_KEYSPAN_PDA is not set
# CONFIG_USB_SERIAL_KEYSPAN is not set
# CONFIG_USB_SERIAL_KLSI is not set
# CONFIG_USB_SERIAL_KOBIL_SCT is not set
# CONFIG_USB_SERIAL_MCT_U232 is not set
# CONFIG_USB_SERIAL_MOS7720 is not set
# CONFIG_USB_SERIAL_MOS7840 is not set
# CONFIG_USB_SERIAL_NAVMAN is not set
# CONFIG_USB_SERIAL_PL2303 is not set
# CONFIG_USB_SERIAL_HP4X is not set
# CONFIG_USB_SERIAL_SAFE is not set
# CONFIG_USB_SERIAL_SIERRAWIRELESS is not set
# CONFIG_USB_SERIAL_TI is not set
# CONFIG_USB_SERIAL_CYBERJACK is not set
# CONFIG_USB_SERIAL_XIRCOM is not set
# CONFIG_USB_SERIAL_OPTION is not set
# CONFIG_USB_SERIAL_OMNINET is not set
# CONFIG_USB_SERIAL_DEBUG is not set

#
# USB Miscellaneous drivers
#
# CONFIG_USB_EMI62 is not set
# CONFIG_USB_EMI26 is not set
# CONFIG_USB_ADUTUX is not set
# CONFIG_USB_AUERSWALD is not set
# CONFIG_USB_RIO500 is not set
# CONFIG_USB_LEGOTOWER is not set
# CONFIG_USB_LCD is not set
# CONFIG_USB_LED is not set
# CONFIG_USB_CYPRESS_CY7C63 is not set
# CONFIG_USB_CYTHERM is not set
# CONFIG_USB_PHIDGET is not set
# CONFIG_USB_IDMOUSE is not set
# CONFIG_USB_FTDI_ELAN is not set
# CONFIG_USB_APPLEDISPLAY is not set
# CONFIG_USB_SISUSBVGA is not set
# CONFIG_USB_LD is not set
# CONFIG_USB_TRANCEVIBRATOR is not set
# CONFIG_USB_TEST is not set

#
# USB DSL modem support
#

#
# USB Gadget Support
#
# CONFIG_USB_GADGET is not set

#
# MMC/SD Card support
#
CONFIG_MMC=m
# CONFIG_MMC_DEBUG is not set
CONFIG_MMC_BLOCK=m
# CONFIG_MMC_SDHCI is not set
# CONFIG_MMC_WBSD is not set
# CONFIG_MMC_TIFM_SD is not set

#
# LED devices
#
# CONFIG_NEW_LEDS is not set

#
# LED drivers
#

#
# LED Triggers
#

#
# InfiniBand support
#
# CONFIG_INFINIBAND is not set

#
# EDAC - error detection and reporting (RAS) (EXPERIMENTAL)
#
# CONFIG_EDAC is not set

#
# Real Time Clock
#
# CONFIG_RTC_CLASS is not set

#
# DMA Engine support
#
# CONFIG_DMA_ENGINE is not set

#
# DMA Clients
#

#
# DMA Devices
#

#
# Virtualization
#
# CONFIG_KVM is not set

#
# File systems
#
CONFIG_EXT2_FS=y
CONFIG_EXT2_FS_XATTR=y
CONFIG_EXT2_FS_POSIX_ACL=y
CONFIG_EXT2_FS_SECURITY=y
# CONFIG_EXT2_FS_XIP is not set
CONFIG_EXT3_FS=m
CONFIG_EXT3_FS_XATTR=y
CONFIG_EXT3_FS_POSIX_ACL=y
CONFIG_EXT3_FS_SECURITY=y
# CONFIG_EXT4DEV_FS is not set
CONFIG_JBD=m
CONFIG_JBD_DEBUG=y
CONFIG_FS_MBCACHE=y
CONFIG_REISERFS_FS=m
# CONFIG_REISERFS_CHECK is not set
CONFIG_REISERFS_PROC_INFO=y
CONFIG_REISERFS_FS_XATTR=y
CONFIG_REISERFS_FS_POSIX_ACL=y
CONFIG_REISERFS_FS_SECURITY=y
CONFIG_JFS_FS=m
CONFIG_JFS_POSIX_ACL=y
CONFIG_JFS_SECURITY=y
# CONFIG_JFS_DEBUG is not set
CONFIG_JFS_STATISTICS=y
CONFIG_FS_POSIX_ACL=y
CONFIG_XFS_FS=m
CONFIG_XFS_QUOTA=y
CONFIG_XFS_SECURITY=y
CONFIG_XFS_POSIX_ACL=y
# CONFIG_XFS_RT is not set
# CONFIG_GFS2_FS is not set
# CONFIG_OCFS2_FS is not set
# CONFIG_MINIX_FS is not set
# CONFIG_ROMFS_FS is not set
CONFIG_INOTIFY=y
CONFIG_INOTIFY_USER=y
# CONFIG_QUOTA is not set
CONFIG_QUOTACTL=y
CONFIG_DNOTIFY=y
CONFIG_AUTOFS_FS=y
CONFIG_AUTOFS4_FS=y
# CONFIG_FUSE_FS is not set
CONFIG_GENERIC_ACL=y

#
# CD-ROM/DVD Filesystems
#
CONFIG_ISO9660_FS=y
CONFIG_JOLIET=y
CONFIG_ZISOFS=y
CONFIG_ZISOFS_FS=y
CONFIG_UDF_FS=y
CONFIG_UDF_NLS=y

#
# DOS/FAT/NT Filesystems
#
CONFIG_FAT_FS=m
# CONFIG_MSDOS_FS is not set
CONFIG_VFAT_FS=m
CONFIG_FAT_DEFAULT_CODEPAGE=437
CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
# CONFIG_NTFS_FS is not set

#
# Pseudo filesystems
#
CONFIG_PROC_FS=y
# CONFIG_PROC_KCORE is not set
CONFIG_PROC_SYSCTL=y
CONFIG_SYSFS=y
CONFIG_TMPFS=y
CONFIG_TMPFS_POSIX_ACL=y
# CONFIG_HUGETLBFS is not set
# CONFIG_HUGETLB_PAGE is not set
CONFIG_RAMFS=y
# CONFIG_CONFIGFS_FS is not set

#
# Miscellaneous filesystems
#
# CONFIG_ADFS_FS is not set
# CONFIG_AFFS_FS is not set
# CONFIG_HFS_FS is not set
# CONFIG_HFSPLUS_FS is not set
# CONFIG_BEFS_FS is not set
# CONFIG_BFS_FS is not set
# CONFIG_EFS_FS is not set
# CONFIG_CRAMFS is not set
# CONFIG_VXFS_FS is not set
# CONFIG_HPFS_FS is not set
# CONFIG_QNX4FS_FS is not set
# CONFIG_SYSV_FS is not set
# CONFIG_UFS_FS is not set

#
# Network File Systems
#

#
# Partition Types
#
CONFIG_PARTITION_ADVANCED=y
# CONFIG_ACORN_PARTITION is not set
# CONFIG_OSF_PARTITION is not set
# CONFIG_AMIGA_PARTITION is not set
# CONFIG_ATARI_PARTITION is not set
# CONFIG_MAC_PARTITION is not set
CONFIG_MSDOS_PARTITION=y
CONFIG_BSD_DISKLABEL=y
CONFIG_MINIX_SUBPARTITION=y
CONFIG_SOLARIS_X86_PARTITION=y
CONFIG_UNIXWARE_DISKLABEL=y
CONFIG_LDM_PARTITION=y
CONFIG_LDM_DEBUG=y
# CONFIG_SGI_PARTITION is not set
# CONFIG_ULTRIX_PARTITION is not set
# CONFIG_SUN_PARTITION is not set
# CONFIG_KARMA_PARTITION is not set
# CONFIG_EFI_PARTITION is not set

#
# Native Language Support
#
CONFIG_NLS=y
CONFIG_NLS_DEFAULT="iso8859-1"
CONFIG_NLS_CODEPAGE_437=y
CONFIG_NLS_CODEPAGE_737=y
CONFIG_NLS_CODEPAGE_775=y
CONFIG_NLS_CODEPAGE_850=y
CONFIG_NLS_CODEPAGE_852=y
CONFIG_NLS_CODEPAGE_855=y
CONFIG_NLS_CODEPAGE_857=y
CONFIG_NLS_CODEPAGE_860=y
CONFIG_NLS_CODEPAGE_861=y
CONFIG_NLS_CODEPAGE_862=y
CONFIG_NLS_CODEPAGE_863=y
CONFIG_NLS_CODEPAGE_864=y
CONFIG_NLS_CODEPAGE_865=y
CONFIG_NLS_CODEPAGE_866=y
CONFIG_NLS_CODEPAGE_869=y
CONFIG_NLS_CODEPAGE_936=y
CONFIG_NLS_CODEPAGE_950=y
CONFIG_NLS_CODEPAGE_932=y
CONFIG_NLS_CODEPAGE_949=y
CONFIG_NLS_CODEPAGE_874=y
CONFIG_NLS_ISO8859_8=y
CONFIG_NLS_CODEPAGE_1250=y
CONFIG_NLS_CODEPAGE_1251=y
CONFIG_NLS_ASCII=y
CONFIG_NLS_ISO8859_1=y
CONFIG_NLS_ISO8859_2=y
CONFIG_NLS_ISO8859_3=y
CONFIG_NLS_ISO8859_4=y
CONFIG_NLS_ISO8859_5=y
CONFIG_NLS_ISO8859_6=y
CONFIG_NLS_ISO8859_7=y
CONFIG_NLS_ISO8859_9=y
CONFIG_NLS_ISO8859_13=y
CONFIG_NLS_ISO8859_14=y
CONFIG_NLS_ISO8859_15=y
CONFIG_NLS_KOI8_R=y
CONFIG_NLS_KOI8_U=y
CONFIG_NLS_UTF8=y

#
# Instrumentation Support
#
# CONFIG_PROFILING is not set
# CONFIG_KPROBES is not set

#
# Kernel hacking
#
CONFIG_TRACE_IRQFLAGS_SUPPORT=y
# CONFIG_PRINTK_TIME is not set
CONFIG_ENABLE_MUST_CHECK=y
CONFIG_MAGIC_SYSRQ=y
CONFIG_UNUSED_SYMBOLS=y
CONFIG_DEBUG_FS=y
# CONFIG_HEADERS_CHECK is not set
CONFIG_DEBUG_KERNEL=y
CONFIG_LOG_BUF_SHIFT=14
# CONFIG_DETECT_SOFTLOCKUP is not set
# CONFIG_SCHEDSTATS is not set
# CONFIG_DEBUG_SLAB is not set
# CONFIG_DEBUG_RT_MUTEXES is not set
# CONFIG_RT_MUTEX_TESTER is not set
# CONFIG_DEBUG_SPINLOCK is not set
# CONFIG_DEBUG_MUTEXES is not set
# CONFIG_DEBUG_RWSEMS is not set
# CONFIG_DEBUG_LOCK_ALLOC is not set
# CONFIG_PROVE_LOCKING is not set
# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set
# CONFIG_DEBUG_KOBJECT is not set
# CONFIG_DEBUG_HIGHMEM is not set
# CONFIG_DEBUG_BUGVERBOSE is not set
# CONFIG_DEBUG_INFO is not set
# CONFIG_DEBUG_VM is not set
# CONFIG_DEBUG_LIST is not set
# CONFIG_FRAME_POINTER is not set
CONFIG_FORCED_INLINING=y
# CONFIG_RCU_TORTURE_TEST is not set
CONFIG_EARLY_PRINTK=y
# CONFIG_DEBUG_STACKOVERFLOW is not set
# CONFIG_DEBUG_STACK_USAGE is not set
# CONFIG_DEBUG_PAGEALLOC is not set
# CONFIG_DEBUG_RODATA is not set
# CONFIG_4KSTACKS is not set
CONFIG_X86_FIND_SMP_CONFIG=y
CONFIG_X86_MPPARSE=y
CONFIG_DOUBLEFAULT=y

#
# Security options
#
# CONFIG_KEYS is not set
CONFIG_SECURITY=y
# CONFIG_SECURITY_NETWORK is not set
CONFIG_SECURITY_CAPABILITIES=y
# CONFIG_SECURITY_ROOTPLUG is not set

#
# Cryptographic options
#
# CONFIG_CRYPTO is not set

#
# Library routines
#
CONFIG_BITREVERSE=y
# CONFIG_CRC_CCITT is not set
# CONFIG_CRC16 is not set
CONFIG_CRC32=y
# CONFIG_LIBCRC32C is not set
CONFIG_ZLIB_INFLATE=y
CONFIG_PLIST=y
CONFIG_IOMAP_COPY=y
CONFIG_GENERIC_HARDIRQS=y
CONFIG_GENERIC_IRQ_PROBE=y
CONFIG_X86_BIOS_REBOOT=y
CONFIG_KTIME_SCALAR=y
EOF
	if [ "$arch" = "x86_64" ]
	then
		cat > patch_config << EOF
--- .config	2007-05-10 12:09:41.000000000 +0200
+++ .config	2007-05-10 12:17:28.000000000 +0200
@@ -1,21 +1,30 @@
 #
 # Automatically generated make config: don't edit
 # Linux kernel version: 2.6.20-my_distro
-# Fri May  4 11:08:03 2007
+# Tue May  8 12:49:06 2007
 #
-CONFIG_X86_32=y
-CONFIG_GENERIC_TIME=y
+CONFIG_X86_64=y
+CONFIG_64BIT=y
+CONFIG_X86=y
+CONFIG_ZONE_DMA32=y
 CONFIG_LOCKDEP_SUPPORT=y
 CONFIG_STACKTRACE_SUPPORT=y
 CONFIG_SEMAPHORE_SLEEPERS=y
-CONFIG_X86=y
 CONFIG_MMU=y
+CONFIG_RWSEM_GENERIC_SPINLOCK=y
+CONFIG_GENERIC_HWEIGHT=y
+CONFIG_GENERIC_CALIBRATE_DELAY=y
+CONFIG_X86_CMPXCHG=y
+CONFIG_EARLY_PRINTK=y
 CONFIG_GENERIC_ISA_DMA=y
 CONFIG_GENERIC_IOMAP=y
-CONFIG_GENERIC_BUG=y
-CONFIG_GENERIC_HWEIGHT=y
 CONFIG_ARCH_MAY_HAVE_PC_FDC=y
+CONFIG_ARCH_POPULATES_NODE_MAP=y
 CONFIG_DMI=y
+CONFIG_AUDIT_ARCH=y
+CONFIG_GENERIC_BUG=y
+# CONFIG_ARCH_HAS_ILOG2_U32 is not set
+# CONFIG_ARCH_HAS_ILOG2_U64 is not set
 CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
 
 #
@@ -81,9 +90,7 @@ CONFIG_KMOD=y
 # Block layer
 #
 CONFIG_BLOCK=y
-CONFIG_LBD=y
 CONFIG_BLK_DEV_IO_TRACE=y
-CONFIG_LSF=y
 
 #
 # IO Schedulers
@@ -101,114 +108,62 @@ CONFIG_DEFAULT_IOSCHED="cfq"
 #
 # Processor type and features
 #
-# CONFIG_SMP is not set
 CONFIG_X86_PC=y
-# CONFIG_X86_ELAN is not set
-# CONFIG_X86_VOYAGER is not set
-# CONFIG_X86_NUMAQ is not set
-# CONFIG_X86_SUMMIT is not set
-# CONFIG_X86_BIGSMP is not set
-# CONFIG_X86_VISWS is not set
-# CONFIG_X86_GENERICARCH is not set
-# CONFIG_X86_ES7000 is not set
-# CONFIG_PARAVIRT is not set
-CONFIG_M386=y
-# CONFIG_M486 is not set
-# CONFIG_M586 is not set
-# CONFIG_M586TSC is not set
-# CONFIG_M586MMX is not set
-# CONFIG_M686 is not set
-# CONFIG_MPENTIUMII is not set
-# CONFIG_MPENTIUMIII is not set
-# CONFIG_MPENTIUMM is not set
-# CONFIG_MCORE2 is not set
-# CONFIG_MPENTIUM4 is not set
-# CONFIG_MK6 is not set
-# CONFIG_MK7 is not set
+# CONFIG_X86_VSMP is not set
 # CONFIG_MK8 is not set
-# CONFIG_MCRUSOE is not set
-# CONFIG_MEFFICEON is not set
-# CONFIG_MWINCHIPC6 is not set
-# CONFIG_MWINCHIP2 is not set
-# CONFIG_MWINCHIP3D is not set
-# CONFIG_MGEODEGX1 is not set
-# CONFIG_MGEODE_LX is not set
-# CONFIG_MCYRIXIII is not set
-# CONFIG_MVIAC3_2 is not set
-CONFIG_X86_GENERIC=y
+# CONFIG_MPSC is not set
+# CONFIG_MCORE2 is not set
+CONFIG_GENERIC_CPU=y
+CONFIG_X86_L1_CACHE_BYTES=128
 CONFIG_X86_L1_CACHE_SHIFT=7
-CONFIG_RWSEM_GENERIC_SPINLOCK=y
-# CONFIG_ARCH_HAS_ILOG2_U32 is not set
-# CONFIG_ARCH_HAS_ILOG2_U64 is not set
-CONFIG_GENERIC_CALIBRATE_DELAY=y
-CONFIG_X86_PPRO_FENCE=y
-CONFIG_X86_F00F_BUG=y
-CONFIG_X86_INTEL_USERCOPY=y
-CONFIG_HPET_TIMER=y
-CONFIG_HPET_EMULATE_RTC=y
-CONFIG_PREEMPT_NONE=y
-# CONFIG_PREEMPT_VOLUNTARY is not set
-# CONFIG_PREEMPT is not set
-CONFIG_X86_UP_APIC=y
-# CONFIG_X86_UP_IOAPIC is not set
-CONFIG_X86_LOCAL_APIC=y
-# CONFIG_X86_MCE is not set
-CONFIG_VM86=y
-# CONFIG_TOSHIBA is not set
-# CONFIG_I8K is not set
-CONFIG_X86_REBOOTFIXUPS=y
+CONFIG_X86_INTERNODE_CACHE_BYTES=128
+CONFIG_X86_TSC=y
+CONFIG_X86_GOOD_APIC=y
 # CONFIG_MICROCODE is not set
 # CONFIG_X86_MSR is not set
 # CONFIG_X86_CPUID is not set
-
-#
-# Firmware Drivers
-#
-CONFIG_EDD=y
-# CONFIG_DELL_RBU is not set
-# CONFIG_DCDBAS is not set
-# CONFIG_NOHIGHMEM is not set
-CONFIG_HIGHMEM4G=y
-# CONFIG_HIGHMEM64G is not set
-CONFIG_VMSPLIT_3G=y
-# CONFIG_VMSPLIT_3G_OPT is not set
-# CONFIG_VMSPLIT_2G is not set
-# CONFIG_VMSPLIT_1G is not set
-CONFIG_PAGE_OFFSET=0xC0000000
-CONFIG_HIGHMEM=y
-CONFIG_ARCH_FLATMEM_ENABLE=y
+CONFIG_X86_IO_APIC=y
+CONFIG_X86_LOCAL_APIC=y
+CONFIG_MTRR=y
+# CONFIG_SMP is not set
+CONFIG_PREEMPT_NONE=y
+# CONFIG_PREEMPT_VOLUNTARY is not set
+# CONFIG_PREEMPT is not set
 CONFIG_ARCH_SPARSEMEM_ENABLE=y
-CONFIG_ARCH_SELECT_MEMORY_MODEL=y
-CONFIG_ARCH_POPULATES_NODE_MAP=y
+CONFIG_ARCH_FLATMEM_ENABLE=y
 CONFIG_SELECT_MEMORY_MODEL=y
 CONFIG_FLATMEM_MANUAL=y
 # CONFIG_DISCONTIGMEM_MANUAL is not set
 # CONFIG_SPARSEMEM_MANUAL is not set
 CONFIG_FLATMEM=y
 CONFIG_FLAT_NODE_MEM_MAP=y
-CONFIG_SPARSEMEM_STATIC=y
+# CONFIG_SPARSEMEM_STATIC is not set
 CONFIG_SPLIT_PTLOCK_CPUS=4
-# CONFIG_RESOURCES_64BIT is not set
-# CONFIG_HIGHPTE is not set
-# CONFIG_MATH_EMULATION is not set
-CONFIG_MTRR=y
-# CONFIG_EFI is not set
+CONFIG_RESOURCES_64BIT=y
+CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y
+CONFIG_HPET_TIMER=y
+CONFIG_HPET_EMULATE_RTC=y
+# CONFIG_IOMMU is not set
+# CONFIG_CALGARY_IOMMU is not set
+# CONFIG_X86_MCE is not set
+# CONFIG_KEXEC is not set
+# CONFIG_CRASH_DUMP is not set
+CONFIG_PHYSICAL_START=0x100000
 CONFIG_SECCOMP=y
+# CONFIG_CC_STACKPROTECTOR is not set
 # CONFIG_HZ_100 is not set
 CONFIG_HZ_250=y
 # CONFIG_HZ_300 is not set
 # CONFIG_HZ_1000 is not set
 CONFIG_HZ=250
-# CONFIG_KEXEC is not set
-# CONFIG_CRASH_DUMP is not set
-CONFIG_PHYSICAL_START=0x100000
-# CONFIG_RELOCATABLE is not set
-CONFIG_PHYSICAL_ALIGN=0x100000
-# CONFIG_COMPAT_VDSO is not set
-CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y
+# CONFIG_REORDER is not set
+CONFIG_K8_NB=y
+CONFIG_GENERIC_HARDIRQS=y
+CONFIG_GENERIC_IRQ_PROBE=y
+CONFIG_ISA_DMA_API=y
 
 #
-# Power management options (ACPI, APM)
+# Power management options
 #
 CONFIG_PM=y
 CONFIG_PM_LEGACY=y
@@ -245,40 +200,22 @@ CONFIG_X86_PM_TIMER=y
 # CONFIG_ACPI_SBS is not set
 
 #
-# APM (Advanced Power Management) BIOS Support
-#
-# CONFIG_APM is not set
-
-#
 # CPU Frequency scaling
 #
 # CONFIG_CPU_FREQ is not set
 
 #
-# Bus options (PCI, PCMCIA, EISA, MCA, ISA)
+# Bus options (PCI etc.)
 #
 CONFIG_PCI=y
-# CONFIG_PCI_GOBIOS is not set
-# CONFIG_PCI_GOMMCONFIG is not set
-# CONFIG_PCI_GODIRECT is not set
-CONFIG_PCI_GOANY=y
-CONFIG_PCI_BIOS=y
 CONFIG_PCI_DIRECT=y
 CONFIG_PCI_MMCONFIG=y
 CONFIG_PCIEPORTBUS=y
 # CONFIG_HOTPLUG_PCI_PCIE is not set
 # CONFIG_PCIEAER is not set
+# CONFIG_PCI_MSI is not set
 # CONFIG_PCI_DEBUG is not set
-CONFIG_ISA_DMA_API=y
-CONFIG_ISA=y
-CONFIG_EISA=y
-CONFIG_EISA_VLB_PRIMING=y
-CONFIG_EISA_PCI_EISA=y
-CONFIG_EISA_VIRTUAL_ROOT=y
-CONFIG_EISA_NAMES=y
-# CONFIG_MCA is not set
-# CONFIG_SCx200 is not set
-CONFIG_K8_NB=y
+# CONFIG_HT_IRQ is not set
 
 #
 # PCCARD (PCMCIA/CardBus) support
@@ -290,19 +227,20 @@ CONFIG_K8_NB=y
 #
 CONFIG_HOTPLUG_PCI=y
 CONFIG_HOTPLUG_PCI_FAKE=y
-CONFIG_HOTPLUG_PCI_COMPAQ=y
-CONFIG_HOTPLUG_PCI_COMPAQ_NVRAM=y
 CONFIG_HOTPLUG_PCI_ACPI=y
 CONFIG_HOTPLUG_PCI_ACPI_IBM=y
 # CONFIG_HOTPLUG_PCI_CPCI is not set
 # CONFIG_HOTPLUG_PCI_SHPC is not set
 
 #
-# Executable file formats
+# Executable file formats / Emulations
 #
 CONFIG_BINFMT_ELF=y
-CONFIG_BINFMT_AOUT=y
 CONFIG_BINFMT_MISC=y
+CONFIG_IA32_EMULATION=y
+# CONFIG_IA32_AOUT is not set
+CONFIG_COMPAT=y
+CONFIG_SYSVIPC_COMPAT=y
 
 #
 # Networking
@@ -389,15 +327,12 @@ CONFIG_PNP=y
 #
 # Protocols
 #
-CONFIG_ISAPNP=y
-# CONFIG_PNPBIOS is not set
 CONFIG_PNPACPI=y
 
 #
 # Block devices
 #
 # CONFIG_BLK_DEV_FD is not set
-# CONFIG_BLK_DEV_XD is not set
 CONFIG_PARIDE=y
 CONFIG_PARIDE_PARPORT=y
 
@@ -415,7 +350,6 @@ CONFIG_PARIDE_PG=y
 #
 # CONFIG_PARIDE_ATEN is not set
 # CONFIG_PARIDE_BPCK is not set
-# CONFIG_PARIDE_BPCK6 is not set
 # CONFIG_PARIDE_COMM is not set
 # CONFIG_PARIDE_DSTR is not set
 # CONFIG_PARIDE_FIT2 is not set
@@ -500,7 +434,6 @@ CONFIG_BLK_DEV_TRIFLEX=y
 CONFIG_BLK_DEV_CY82C693=y
 CONFIG_BLK_DEV_CS5520=y
 CONFIG_BLK_DEV_CS5530=y
-CONFIG_BLK_DEV_CS5535=y
 CONFIG_BLK_DEV_HPT34X=y
 # CONFIG_HPT34X_AUTODMA is not set
 CONFIG_BLK_DEV_HPT366=y
@@ -519,17 +452,6 @@ CONFIG_BLK_DEV_SLC90E66=y
 CONFIG_BLK_DEV_TRM290=y
 CONFIG_BLK_DEV_VIA82CXXX=y
 # CONFIG_IDE_ARM is not set
-CONFIG_IDE_CHIPSETS=y
-
-#
-# Note: most of these also require special kernel boot parameters
-#
-CONFIG_BLK_DEV_4DRIVES=y
-CONFIG_BLK_DEV_ALI14XX=y
-CONFIG_BLK_DEV_DTC2278=y
-CONFIG_BLK_DEV_HT6560B=y
-CONFIG_BLK_DEV_QD65XX=y
-CONFIG_BLK_DEV_UMC8672=y
 CONFIG_BLK_DEV_IDEDMA=y
 # CONFIG_IDEDMA_IVB is not set
 CONFIG_IDEDMA_AUTO=y
@@ -578,16 +500,11 @@ CONFIG_SCSI_SAS_LIBSAS=y
 #
 CONFIG_BLK_DEV_3W_XXXX_RAID=m
 CONFIG_SCSI_3W_9XXX=m
-CONFIG_SCSI_7000FASST=m
 CONFIG_SCSI_ACARD=m
-CONFIG_SCSI_AHA152X=m
-CONFIG_SCSI_AHA1542=m
-CONFIG_SCSI_AHA1740=m
 CONFIG_SCSI_AACRAID=m
 CONFIG_SCSI_AIC7XXX=m
 CONFIG_AIC7XXX_CMDS_PER_DEVICE=32
 CONFIG_AIC7XXX_RESET_DELAY_MS=5000
-CONFIG_AIC7XXX_PROBE_EISA_VL=y
 # CONFIG_AIC7XXX_DEBUG_ENABLE is not set
 CONFIG_AIC7XXX_DEBUG_MASK=0
 CONFIG_AIC7XXX_REG_PRETTY_PRINT=y
@@ -601,9 +518,6 @@ CONFIG_AIC79XX_DEBUG_MASK=0
 # CONFIG_AIC79XX_REG_PRETTY_PRINT is not set
 CONFIG_SCSI_AIC94XX=m
 CONFIG_AIC94XX_DEBUG=y
-# CONFIG_SCSI_DPT_I2O is not set
-CONFIG_SCSI_ADVANSYS=m
-CONFIG_SCSI_IN2000=m
 CONFIG_SCSI_ARCMSR=m
 CONFIG_MEGARAID_NEWGEN=y
 CONFIG_MEGARAID_MM=y
@@ -614,16 +528,12 @@ CONFIG_MEGARAID_MAILBOX=y
 CONFIG_SCSI_BUSLOGIC=y
 # CONFIG_SCSI_OMIT_FLASHPOINT is not set
 CONFIG_SCSI_DMX3191D=m
-CONFIG_SCSI_DTC3280=m
 CONFIG_SCSI_EATA=m
 CONFIG_SCSI_EATA_TAGGED_QUEUE=y
 CONFIG_SCSI_EATA_LINKED_COMMANDS=y
 CONFIG_SCSI_EATA_MAX_TAGS=16
 CONFIG_SCSI_FUTURE_DOMAIN=m
 # CONFIG_SCSI_GDTH is not set
-CONFIG_SCSI_GENERIC_NCR5380=m
-CONFIG_SCSI_GENERIC_NCR5380_MMIO=m
-CONFIG_SCSI_GENERIC_NCR53C400=y
 # CONFIG_SCSI_IPS is not set
 CONFIG_SCSI_INITIO=m
 CONFIG_SCSI_INIA100=m
@@ -631,7 +541,6 @@ CONFIG_SCSI_INIA100=m
 CONFIG_SCSI_IMM=m
 CONFIG_SCSI_IZIP_EPP16=y
 CONFIG_SCSI_IZIP_SLOW_CTR=y
-CONFIG_SCSI_NCR53C406A=m
 CONFIG_SCSI_STEX=m
 CONFIG_SCSI_SYM53C8XX_2=m
 CONFIG_SCSI_SYM53C8XX_DMA_ADDRESSING_MODE=1
@@ -639,26 +548,12 @@ CONFIG_SCSI_SYM53C8XX_DEFAULT_TAGS=16
 CONFIG_SCSI_SYM53C8XX_MAX_TAGS=64
 CONFIG_SCSI_SYM53C8XX_MMIO=y
 # CONFIG_SCSI_IPR is not set
-CONFIG_SCSI_PAS16=m
-CONFIG_SCSI_PSI240I=m
-CONFIG_SCSI_QLOGIC_FAS=m
 CONFIG_SCSI_QLOGIC_1280=m
 CONFIG_SCSI_QLA_FC=m
 CONFIG_SCSI_QLA_ISCSI=m
 CONFIG_SCSI_LPFC=m
-CONFIG_SCSI_SEAGATE=m
-CONFIG_SCSI_SIM710=m
-CONFIG_53C700_IO_MAPPED=y
-CONFIG_SCSI_SYM53C416=m
 CONFIG_SCSI_DC395x=m
 CONFIG_SCSI_DC390T=m
-CONFIG_SCSI_T128=m
-CONFIG_SCSI_U14_34F=m
-CONFIG_SCSI_U14_34F_TAGGED_QUEUE=y
-CONFIG_SCSI_U14_34F_LINKED_COMMANDS=y
-CONFIG_SCSI_U14_34F_MAX_TAGS=8
-CONFIG_SCSI_ULTRASTOR=y
-CONFIG_SCSI_NSP32=y
 # CONFIG_SCSI_DEBUG is not set
 CONFIG_SCSI_SRP=m
 
@@ -690,7 +585,6 @@ CONFIG_PATA_AMD=m
 # CONFIG_PATA_CMD64X is not set
 CONFIG_PATA_CS5520=m
 # CONFIG_PATA_CS5530 is not set
-# CONFIG_PATA_CS5535 is not set
 # CONFIG_PATA_CYPRESS is not set
 CONFIG_PATA_EFAR=m
 CONFIG_ATA_GENERIC=m
@@ -698,10 +592,8 @@ CONFIG_ATA_GENERIC=m
 # CONFIG_PATA_HPT37X is not set
 # CONFIG_PATA_HPT3X2N is not set
 # CONFIG_PATA_HPT3X3 is not set
-# CONFIG_PATA_ISAPNP is not set
 # CONFIG_PATA_IT821X is not set
 CONFIG_PATA_JMICRON=m
-# CONFIG_PATA_LEGACY is not set
 CONFIG_PATA_TRIFLEX=m
 CONFIG_PATA_MARVELL=m
 CONFIG_PATA_MPIIX=m
@@ -711,7 +603,6 @@ CONFIG_PATA_NETCELL=m
 # CONFIG_PATA_OPTI is not set
 # CONFIG_PATA_OPTIDMA is not set
 # CONFIG_PATA_PDC_OLD is not set
-CONFIG_PATA_QDI=m
 # CONFIG_PATA_RADISYS is not set
 CONFIG_PATA_RZ1000=m
 CONFIG_PATA_SC1200=m
@@ -721,15 +612,9 @@ CONFIG_PATA_SIL680=m
 # CONFIG_PATA_SIS is not set
 CONFIG_PATA_VIA=m
 CONFIG_PATA_WINBOND=m
-CONFIG_PATA_WINBOND_VLB=m
 CONFIG_PATA_PLATFORM=m
 
 #
-# Old CD-ROM drivers (not SCSI, not IDE)
-#
-# CONFIG_CD_NO_IDESCSI is not set
-
-#
 # Multi-device support (RAID and LVM)
 #
 CONFIG_MD=y
@@ -776,7 +661,6 @@ CONFIG_IEEE1394_OHCI1394=m
 #
 # CONFIG_IEEE1394_VIDEO1394 is not set
 CONFIG_IEEE1394_SBP2=m
-# CONFIG_IEEE1394_SBP2_PHYS_DMA is not set
 # CONFIG_IEEE1394_DV1394 is not set
 # CONFIG_IEEE1394_RAWIO is not set
 
@@ -786,6 +670,7 @@ CONFIG_IEEE1394_SBP2=m
 CONFIG_I2O=y
 CONFIG_I2O_LCT_NOTIFY_ON_CHANGES=y
 CONFIG_I2O_EXT_ADAPTEC=y
+CONFIG_I2O_EXT_ADAPTEC_DMA64=y
 # CONFIG_I2O_CONFIG is not set
 CONFIG_I2O_BUS=y
 CONFIG_I2O_BLOCK=y
@@ -872,11 +757,6 @@ CONFIG_SERIAL_8250_NR_UARTS=4
 CONFIG_SERIAL_8250_RUNTIME_UARTS=4
 CONFIG_SERIAL_8250_EXTENDED=y
 CONFIG_SERIAL_8250_MANY_PORTS=y
-# CONFIG_SERIAL_8250_FOURPORT is not set
-# CONFIG_SERIAL_8250_ACCENT is not set
-# CONFIG_SERIAL_8250_BOCA is not set
-CONFIG_SERIAL_8250_EXAR_ST16C554=m
-# CONFIG_SERIAL_8250_HUB6 is not set
 CONFIG_SERIAL_8250_SHARE_IRQ=y
 # CONFIG_SERIAL_8250_DETECT_IRQ is not set
 CONFIG_SERIAL_8250_RSA=y
@@ -907,29 +787,19 @@ CONFIG_HW_RANDOM=y
 CONFIG_HW_RANDOM_INTEL=y
 CONFIG_HW_RANDOM_AMD=y
 CONFIG_HW_RANDOM_GEODE=y
-CONFIG_HW_RANDOM_VIA=y
 # CONFIG_NVRAM is not set
 CONFIG_RTC=y
 CONFIG_DTLK=y
 # CONFIG_R3964 is not set
 # CONFIG_APPLICOM is not set
-# CONFIG_SONYPI is not set
 CONFIG_AGP=y
-CONFIG_AGP_ALI=y
-CONFIG_AGP_ATI=y
-CONFIG_AGP_AMD=y
 CONFIG_AGP_AMD64=y
 CONFIG_AGP_INTEL=y
-CONFIG_AGP_NVIDIA=y
 CONFIG_AGP_SIS=y
-CONFIG_AGP_SWORKS=y
 CONFIG_AGP_VIA=y
-CONFIG_AGP_EFFICEON=y
 # CONFIG_DRM is not set
 # CONFIG_MWAVE is not set
 # CONFIG_PC8736x_GPIO is not set
-# CONFIG_NSC_GPIO is not set
-# CONFIG_CS5535_GPIO is not set
 # CONFIG_RAW_DRIVER is not set
 CONFIG_HPET=y
 # CONFIG_HPET_RTC_IRQ is not set
@@ -964,7 +834,6 @@ CONFIG_I2C_ALI15X3=y
 CONFIG_I2C_AMD756=y
 CONFIG_I2C_AMD756_S4882=y
 CONFIG_I2C_AMD8111=y
-CONFIG_I2C_ELEKTOR=y
 CONFIG_I2C_I801=y
 CONFIG_I2C_I810=y
 CONFIG_I2C_PIIX4=y
@@ -974,7 +843,6 @@ CONFIG_I2C_PARPORT=y
 CONFIG_I2C_PARPORT_LIGHT=y
 CONFIG_I2C_PROSAVAGE=y
 CONFIG_I2C_SAVAGE4=y
-CONFIG_SCx200_ACB=y
 CONFIG_I2C_SIS5595=y
 CONFIG_I2C_SIS630=y
 CONFIG_I2C_SIS96X=y
@@ -1051,7 +919,6 @@ CONFIG_FB_VESA=y
 # CONFIG_FB_S1D13XXX is not set
 # CONFIG_FB_NVIDIA is not set
 # CONFIG_FB_RIVA is not set
-# CONFIG_FB_I810 is not set
 # CONFIG_FB_INTEL is not set
 # CONFIG_FB_MATROX is not set
 # CONFIG_FB_RADEON is not set
@@ -1063,7 +930,6 @@ CONFIG_FB_VESA=y
 # CONFIG_FB_KYRO is not set
 # CONFIG_FB_3DFX is not set
 # CONFIG_FB_VOODOO1 is not set
-# CONFIG_FB_CYBLA is not set
 # CONFIG_FB_TRIDENT is not set
 # CONFIG_FB_GEODE is not set
 # CONFIG_FB_VIRTUAL is not set
@@ -1074,7 +940,6 @@ CONFIG_FB_VESA=y
 CONFIG_VGA_CONSOLE=y
 # CONFIG_VGACON_SOFT_SCROLLBACK is not set
 CONFIG_VIDEO_SELECT=y
-# CONFIG_MDA_CONSOLE is not set
 CONFIG_DUMMY_CONSOLE=y
 CONFIG_FRAMEBUFFER_CONSOLE=y
 # CONFIG_FRAMEBUFFER_CONSOLE_ROTATION is not set
@@ -1339,6 +1204,13 @@ CONFIG_MMC_BLOCK=m
 # CONFIG_KVM is not set
 
 #
+# Firmware Drivers
+#
+CONFIG_EDD=y
+# CONFIG_DELL_RBU is not set
+# CONFIG_DCDBAS is not set
+
+#
 # File systems
 #
 CONFIG_EXT2_FS=y
@@ -1537,7 +1409,6 @@ CONFIG_LOG_BUF_SHIFT=14
 # CONFIG_DEBUG_SPINLOCK_SLEEP is not set
 # CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set
 # CONFIG_DEBUG_KOBJECT is not set
-# CONFIG_DEBUG_HIGHMEM is not set
 # CONFIG_DEBUG_BUGVERBOSE is not set
 # CONFIG_DEBUG_INFO is not set
 # CONFIG_DEBUG_VM is not set
@@ -1545,15 +1416,9 @@ CONFIG_LOG_BUF_SHIFT=14
 # CONFIG_FRAME_POINTER is not set
 CONFIG_FORCED_INLINING=y
 # CONFIG_RCU_TORTURE_TEST is not set
-CONFIG_EARLY_PRINTK=y
+# CONFIG_DEBUG_RODATA is not set
 # CONFIG_DEBUG_STACKOVERFLOW is not set
 # CONFIG_DEBUG_STACK_USAGE is not set
-# CONFIG_DEBUG_PAGEALLOC is not set
-# CONFIG_DEBUG_RODATA is not set
-# CONFIG_4KSTACKS is not set
-CONFIG_X86_FIND_SMP_CONFIG=y
-CONFIG_X86_MPPARSE=y
-CONFIG_DOUBLEFAULT=y
 
 #
 # Security options
@@ -1580,7 +1445,3 @@ CONFIG_CRC32=y
 CONFIG_ZLIB_INFLATE=y
 CONFIG_PLIST=y
 CONFIG_IOMAP_COPY=y
-CONFIG_GENERIC_HARDIRQS=y
-CONFIG_GENERIC_IRQ_PROBE=y
-CONFIG_X86_BIOS_REBOOT=y
-CONFIG_KTIME_SCALAR=y
EOF
		echo -n "Apply Patch for x86_64: "
		patch -p0 < patch_config >$oredir 2>&1
		exitstatus $?
	fi
	VERSION=`echo $kversion | awk -F. '{print $3}'`
	extraversion=`echo $kversion |awk -F. '{print $4}'`
	if [ ! $extraversion = "" ] ; then
		extraversion=" .$extraversion"
	fi
	cat > patch_name << EOF
--- Makefile    2006-12-11 20:32:53.000000000 +0100
+++ Makefile1   2006-12-12 01:06:10.000000000 +0100
@@ -1,7 +1,7 @@
 VERSION = 2
 PATCHLEVEL = 6
 SUBLEVEL = $VERSION
-EXTRAVERSION =$extraversion
+EXTRAVERSION =$extraversion-my_distro
 NAME = Homicidal Dwarf Hamster

 # *DOCUMENTATION*
EOF
	echo -n "Apply patch on name: "
	patch -p0 < patch_name >$oredir 2>&1
	exitstatus $?
	echo -n "Building kernel: "
	make $makeopt >$oredir 2>&1
	exitstatus $?
	rm patch_name
	cd $home_dir
	install_kernel
}

install_busybox() {
	echo -n "Installing BusyBox: "
	cd $bbversion
	make install > $oredir 2>&1
	exitstatus $?
	cd $home_dir
}

build_busybox() {
	cd $home_dir
	[ -e $bbversion.tar.bz2 -a -d $bbversion ] && install_busybox && return 0
	rm -rf $bbversion 2>/dev/null
	if [ ! -e $bbversion.tar.bz2 ]
	then 
		echo -n "Downloading BusyBox: "
		wget -c "http://www.busybox.net/downloads/$bbversion.tar.bz2" > $oredir 2>&1
		exitstatus $?
	fi
	tar xjf $bbversion.tar.bz2
	cd $bbversion
	cat > .config << EOF
#
# Automatically generated make config: don't edit
# Busybox version: 1.4.2
# Thu Apr  5 18:28:46 2007
#
CONFIG_HAVE_DOT_CONFIG=y

#
# Busybox Settings
#

#
# General Configuration
#
# CONFIG_NITPICK is not set
# CONFIG_DESKTOP is not set
# CONFIG_FEATURE_BUFFERS_USE_MALLOC is not set
# CONFIG_FEATURE_BUFFERS_GO_ON_STACK is not set
# CONFIG_FEATURE_BUFFERS_GO_IN_BSS is not set
CONFIG_SHOW_USAGE=y
# CONFIG_FEATURE_VERBOSE_USAGE is not set
CONFIG_FEATURE_COMPRESS_USAGE=y
# CONFIG_FEATURE_INSTALLER is not set
# CONFIG_LOCALE_SUPPORT is not set
CONFIG_GETOPT_LONG=y
# CONFIG_FEATURE_DEVPTS is not set
# CONFIG_FEATURE_CLEAN_UP is not set
# CONFIG_FEATURE_SUID is not set
CONFIG_FEATURE_SYSLOG=y
# CONFIG_FEATURE_SUID_CONFIG is not set
# CONFIG_FEATURE_SUID_CONFIG_QUIET is not set
# CONFIG_FEATURE_HAVE_RPC is not set
# CONFIG_SELINUX is not set
CONFIG_BUSYBOX_EXEC_PATH="/proc/self/exe"

#
# Build Options
#
CONFIG_STATIC=y
# CONFIG_BUILD_LIBBUSYBOX is not set
# CONFIG_FEATURE_FULL_LIBBUSYBOX is not set
# CONFIG_FEATURE_SHARED_BUSYBOX is not set
CONFIG_LFS=y
CONFIG_BUILD_AT_ONCE=y

#
# Debugging Options
#
# CONFIG_DEBUG is not set
# CONFIG_DEBUG_PESSIMIZE is not set
# CONFIG_NO_DEBUG_LIB is not set
# CONFIG_DMALLOC is not set
# CONFIG_EFENCE is not set
# CONFIG_INCLUDE_SUSv2 is not set

#
# Installation Options
#
CONFIG_INSTALL_NO_USR=y
CONFIG_INSTALL_APPLET_SYMLINKS=y
# CONFIG_INSTALL_APPLET_HARDLINKS is not set
# CONFIG_INSTALL_APPLET_DONT is not set
CONFIG_PREFIX="$home_initrd"

#
# Busybox Library Tuning
#
CONFIG_PASSWORD_MINLEN=6
CONFIG_MD5_SIZE_VS_SPEED=2

#
# Applets
#

#
# Archival Utilities
#
CONFIG_AR=y
CONFIG_FEATURE_AR_LONG_FILENAMES=y
CONFIG_BUNZIP2=y
CONFIG_CPIO=y
CONFIG_DPKG=y
CONFIG_DPKG_DEB=y
CONFIG_FEATURE_DPKG_DEB_EXTRACT_ONLY=y
CONFIG_GUNZIP=y
CONFIG_FEATURE_GUNZIP_UNCOMPRESS=y
# CONFIG_GZIP is not set
# CONFIG_RPM2CPIO is not set
CONFIG_RPM=y
# CONFIG_TAR is not set
# CONFIG_FEATURE_TAR_CREATE is not set
# CONFIG_FEATURE_TAR_BZIP2 is not set
# CONFIG_FEATURE_TAR_LZMA is not set
# CONFIG_FEATURE_TAR_FROM is not set
# CONFIG_FEATURE_TAR_GZIP is not set
# CONFIG_FEATURE_TAR_COMPRESS is not set
# CONFIG_FEATURE_TAR_OLDGNU_COMPATIBILITY is not set
# CONFIG_FEATURE_TAR_GNU_EXTENSIONS is not set
# CONFIG_FEATURE_TAR_LONG_OPTIONS is not set
# CONFIG_UNCOMPRESS is not set
# CONFIG_UNLZMA is not set
# CONFIG_FEATURE_LZMA_FAST is not set
# CONFIG_UNZIP is not set

#
# Common options for cpio and tar
#
# CONFIG_FEATURE_UNARCHIVE_TAPE is not set

#
# Common options for dpkg and dpkg_deb
#
CONFIG_FEATURE_DEB_TAR_GZ=y
CONFIG_FEATURE_DEB_TAR_BZ2=y
CONFIG_FEATURE_DEB_TAR_LZMA=y

#
# Coreutils
#
CONFIG_BASENAME=y
# CONFIG_CAL is not set
CONFIG_CAT=y
# CONFIG_CATV is not set
CONFIG_CHGRP=y
CONFIG_CHMOD=y
CONFIG_CHOWN=y
CONFIG_CHROOT=y
# CONFIG_CKSUM is not set
# CONFIG_CMP is not set
# CONFIG_COMM is not set
CONFIG_CP=y
CONFIG_CUT=y
# CONFIG_DATE is not set
# CONFIG_FEATURE_DATE_ISOFMT is not set
# CONFIG_DD is not set
# CONFIG_FEATURE_DD_SIGNAL_HANDLING is not set
# CONFIG_FEATURE_DD_IBS_OBS is not set
CONFIG_DF=y
# CONFIG_DIFF is not set
# CONFIG_FEATURE_DIFF_BINARY is not set
# CONFIG_FEATURE_DIFF_DIR is not set
# CONFIG_FEATURE_DIFF_MINIMAL is not set
CONFIG_DIRNAME=y
# CONFIG_DOS2UNIX is not set
# CONFIG_UNIX2DOS is not set
CONFIG_DU=y
CONFIG_FEATURE_DU_DEFAULT_BLOCKSIZE_1K=y
CONFIG_ECHO=y
CONFIG_FEATURE_FANCY_ECHO=y
CONFIG_ENV=y
# CONFIG_FEATURE_ENV_LONG_OPTIONS is not set
# CONFIG_EXPR is not set
# CONFIG_EXPR_MATH_SUPPORT_64 is not set
# CONFIG_FALSE is not set
# CONFIG_FOLD is not set
# CONFIG_HEAD is not set
# CONFIG_FEATURE_FANCY_HEAD is not set
# CONFIG_HOSTID is not set
# CONFIG_ID is not set
CONFIG_INSTALL=y
# CONFIG_FEATURE_INSTALL_LONG_OPTIONS is not set
# CONFIG_LENGTH is not set
CONFIG_LN=y
# CONFIG_LOGNAME is not set
CONFIG_LS=y
CONFIG_FEATURE_LS_FILETYPES=y
CONFIG_FEATURE_LS_FOLLOWLINKS=y
CONFIG_FEATURE_LS_RECURSIVE=y
CONFIG_FEATURE_LS_SORTFILES=y
CONFIG_FEATURE_LS_TIMESTAMPS=y
CONFIG_FEATURE_LS_USERNAME=y
CONFIG_FEATURE_LS_COLOR=y
CONFIG_FEATURE_LS_COLOR_IS_DEFAULT=y
CONFIG_MD5SUM=y
CONFIG_MKDIR=y
CONFIG_FEATURE_MKDIR_LONG_OPTIONS=y
# CONFIG_MKFIFO is not set
CONFIG_MKNOD=y
CONFIG_MV=y
CONFIG_FEATURE_MV_LONG_OPTIONS=y
# CONFIG_NICE is not set
# CONFIG_NOHUP is not set
# CONFIG_OD is not set
# CONFIG_PRINTENV is not set
# CONFIG_PRINTF is not set
CONFIG_PWD=y
# CONFIG_REALPATH is not set
CONFIG_RM=y
CONFIG_RMDIR=y
# CONFIG_SEQ is not set
# CONFIG_SHA1SUM is not set
CONFIG_SLEEP=y
# CONFIG_FEATURE_FANCY_SLEEP is not set
# CONFIG_SORT is not set
# CONFIG_FEATURE_SORT_BIG is not set
# CONFIG_STAT is not set
# CONFIG_FEATURE_STAT_FORMAT is not set
# CONFIG_STTY is not set
# CONFIG_SUM is not set
# CONFIG_SYNC is not set
# CONFIG_TAIL is not set
# CONFIG_FEATURE_FANCY_TAIL is not set
# CONFIG_TEE is not set
# CONFIG_FEATURE_TEE_USE_BLOCK_IO is not set
CONFIG_TEST=y
CONFIG_FEATURE_TEST_64=y
CONFIG_TOUCH=y
# CONFIG_TR is not set
# CONFIG_FEATURE_TR_CLASSES is not set
# CONFIG_FEATURE_TR_EQUIV is not set
# CONFIG_TRUE is not set
CONFIG_TTY=y
CONFIG_UNAME=y
CONFIG_UNIQ=y
# CONFIG_USLEEP is not set
# CONFIG_UUDECODE is not set
# CONFIG_UUENCODE is not set
# CONFIG_WATCH is not set
CONFIG_WC=y
# CONFIG_FEATURE_WC_LARGE is not set
# CONFIG_WHO is not set
# CONFIG_WHOAMI is not set
CONFIG_YES=y

#
# Common options for cp and mv
#
CONFIG_FEATURE_PRESERVE_HARDLINKS=y

#
# Common options for ls, more and telnet
#
CONFIG_FEATURE_AUTOWIDTH=y

#
# Common options for df, du, ls
#
# CONFIG_FEATURE_HUMAN_READABLE is not set

#
# Common options for md5sum, sha1sum
#
# CONFIG_FEATURE_MD5_SHA1_SUM_CHECK is not set

#
# Console Utilities
#
# CONFIG_CHVT is not set
# CONFIG_CLEAR is not set
# CONFIG_DEALLOCVT is not set
# CONFIG_DUMPKMAP is not set
# CONFIG_LOADFONT is not set
CONFIG_LOADKMAP=y
# CONFIG_OPENVT is not set
# CONFIG_RESET is not set
# CONFIG_RESIZE is not set
# CONFIG_FEATURE_RESIZE_PRINT is not set
# CONFIG_SETCONSOLE is not set
# CONFIG_FEATURE_SETCONSOLE_LONG_OPTIONS is not set
# CONFIG_SETKEYCODES is not set
# CONFIG_SETLOGCONS is not set

#
# Debian Utilities
#
# CONFIG_MKTEMP is not set
# CONFIG_PIPE_PROGRESS is not set
CONFIG_READLINK=y
CONFIG_FEATURE_READLINK_FOLLOW=y
# CONFIG_RUN_PARTS is not set
# CONFIG_FEATURE_RUN_PARTS_LONG_OPTIONS is not set
# CONFIG_START_STOP_DAEMON is not set
# CONFIG_FEATURE_START_STOP_DAEMON_FANCY is not set
# CONFIG_FEATURE_START_STOP_DAEMON_LONG_OPTIONS is not set
CONFIG_WHICH=y

#
# Editors
#
CONFIG_AWK=y
# CONFIG_FEATURE_AWK_MATH is not set
# CONFIG_ED is not set
CONFIG_PATCH=y
CONFIG_SED=y
CONFIG_VI=y
CONFIG_FEATURE_VI_COLON=y
CONFIG_FEATURE_VI_YANKMARK=y
CONFIG_FEATURE_VI_SEARCH=y
CONFIG_FEATURE_VI_USE_SIGNALS=y
CONFIG_FEATURE_VI_DOT_CMD=y
CONFIG_FEATURE_VI_READONLY=y
CONFIG_FEATURE_VI_SETOPTS=y
CONFIG_FEATURE_VI_SET=y
CONFIG_FEATURE_VI_WIN_RESIZE=y
CONFIG_FEATURE_VI_OPTIMIZE_CURSOR=y
CONFIG_FEATURE_ALLOW_EXEC=y

#
# Finding Utilities
#
CONFIG_FIND=y
CONFIG_FEATURE_FIND_PRINT0=y
CONFIG_FEATURE_FIND_MTIME=y
CONFIG_FEATURE_FIND_MMIN=y
CONFIG_FEATURE_FIND_PERM=y
CONFIG_FEATURE_FIND_TYPE=y
CONFIG_FEATURE_FIND_XDEV=y
CONFIG_FEATURE_FIND_NEWER=y
CONFIG_FEATURE_FIND_INUM=y
CONFIG_FEATURE_FIND_EXEC=y
CONFIG_GREP=y
CONFIG_FEATURE_GREP_EGREP_ALIAS=y
CONFIG_FEATURE_GREP_FGREP_ALIAS=y
CONFIG_FEATURE_GREP_CONTEXT=y
CONFIG_XARGS=y
CONFIG_FEATURE_XARGS_SUPPORT_CONFIRMATION=y
CONFIG_FEATURE_XARGS_SUPPORT_QUOTES=y
CONFIG_FEATURE_XARGS_SUPPORT_TERMOPT=y
CONFIG_FEATURE_XARGS_SUPPORT_ZERO_TERM=y

#
# Init Utilities
#
CONFIG_INIT=y
# CONFIG_DEBUG_INIT is not set
CONFIG_FEATURE_USE_INITTAB=y
CONFIG_FEATURE_INIT_SCTTY=y
CONFIG_FEATURE_EXTRA_QUIET=y
# CONFIG_FEATURE_INIT_COREDUMPS is not set
CONFIG_FEATURE_INITRD=y
CONFIG_HALT=y
# CONFIG_MESG is not set

#
# Login/Password Management Utilities
#
# CONFIG_FEATURE_SHADOWPASSWDS is not set
# CONFIG_USE_BB_SHADOW is not set
# CONFIG_USE_BB_PWD_GRP is not set
# CONFIG_ADDGROUP is not set
# CONFIG_DELGROUP is not set
# CONFIG_ADDUSER is not set
# CONFIG_DELUSER is not set
# CONFIG_GETTY is not set
# CONFIG_FEATURE_UTMP is not set
# CONFIG_FEATURE_WTMP is not set
# CONFIG_LOGIN is not set
# CONFIG_LOGIN_SCRIPTS is not set
# CONFIG_FEATURE_SECURETTY is not set
# CONFIG_PASSWD is not set
# CONFIG_FEATURE_PASSWD_WEAK_CHECK is not set
# CONFIG_SU is not set
# CONFIG_FEATURE_SU_SYSLOG is not set
# CONFIG_FEATURE_SU_CHECKS_SHELLS is not set
# CONFIG_SULOGIN is not set
# CONFIG_VLOCK is not set

#
# Linux Ext2 FS Progs
#
# CONFIG_CHATTR is not set
# CONFIG_FSCK is not set
# CONFIG_LSATTR is not set

#
# Linux Module Utilities
#
CONFIG_INSMOD=y
# CONFIG_FEATURE_INSMOD_VERSION_CHECKING is not set
# CONFIG_FEATURE_INSMOD_KSYMOOPS_SYMBOLS is not set
# CONFIG_FEATURE_INSMOD_LOADINKMEM is not set
# CONFIG_FEATURE_INSMOD_LOAD_MAP is not set
# CONFIG_FEATURE_INSMOD_LOAD_MAP_FULL is not set
CONFIG_RMMOD=y
CONFIG_LSMOD=y
CONFIG_FEATURE_LSMOD_PRETTY_2_6_OUTPUT=y
CONFIG_MODPROBE=y
CONFIG_FEATURE_MODPROBE_MULTIPLE_OPTIONS=y
CONFIG_FEATURE_MODPROBE_FANCY_ALIAS=y

#
# Options common to multiple modutils
#
CONFIG_FEATURE_CHECK_TAINTED_MODULE=y
# CONFIG_FEATURE_2_4_MODULES is not set
CONFIG_FEATURE_2_6_MODULES=y
# CONFIG_FEATURE_QUERY_MODULE_INTERFACE is not set

#
# Linux System Utilities
#
CONFIG_DMESG=y
CONFIG_FEATURE_DMESG_PRETTY=y
# CONFIG_FBSET is not set
# CONFIG_FEATURE_FBSET_FANCY is not set
# CONFIG_FEATURE_FBSET_READMODE is not set
# CONFIG_FDFLUSH is not set
# CONFIG_FDFORMAT is not set
CONFIG_FDISK=y
CONFIG_FDISK_SUPPORT_LARGE_DISKS=y
CONFIG_FEATURE_FDISK_WRITABLE=y
# CONFIG_FEATURE_AIX_LABEL is not set
# CONFIG_FEATURE_SGI_LABEL is not set
# CONFIG_FEATURE_SUN_LABEL is not set
# CONFIG_FEATURE_OSF_LABEL is not set
# CONFIG_FEATURE_FDISK_ADVANCED is not set
# CONFIG_FREERAMDISK is not set
# CONFIG_FSCK_MINIX is not set
# CONFIG_MKFS_MINIX is not set
# CONFIG_FEATURE_MINIX2 is not set
# CONFIG_GETOPT is not set
# CONFIG_HEXDUMP is not set
# CONFIG_HWCLOCK is not set
# CONFIG_FEATURE_HWCLOCK_LONG_OPTIONS is not set
# CONFIG_FEATURE_HWCLOCK_ADJTIME_FHS is not set
# CONFIG_IPCRM is not set
# CONFIG_IPCS is not set
# CONFIG_LOSETUP is not set
CONFIG_MDEV=y
# CONFIG_FEATURE_MDEV_CONF is not set
# CONFIG_FEATURE_MDEV_EXEC is not set
CONFIG_MKSWAP=y
# CONFIG_FEATURE_MKSWAP_V0 is not set
CONFIG_MORE=y
CONFIG_FEATURE_USE_TERMIOS=y
CONFIG_MOUNT=y
# CONFIG_FEATURE_MOUNT_NFS is not set
# CONFIG_FEATURE_MOUNT_CIFS is not set
CONFIG_FEATURE_MOUNT_FLAGS=y
CONFIG_FEATURE_MOUNT_FSTAB=y
# CONFIG_PIVOT_ROOT is not set
# CONFIG_RDATE is not set
# CONFIG_READPROFILE is not set
# CONFIG_SETARCH is not set
CONFIG_SWAPONOFF=y
# CONFIG_SWITCH_ROOT is not set
CONFIG_UMOUNT=y
CONFIG_FEATURE_UMOUNT_ALL=y

#
# Common options for mount/umount
#
CONFIG_FEATURE_MOUNT_LOOP=y
# CONFIG_FEATURE_MTAB_SUPPORT is not set

#
# Miscellaneous Utilities
#
# CONFIG_ADJTIMEX is not set
# CONFIG_BBCONFIG is not set
# CONFIG_CROND is not set
# CONFIG_DEBUG_CROND_OPTION is not set
# CONFIG_FEATURE_CROND_CALL_SENDMAIL is not set
# CONFIG_CRONTAB is not set
# CONFIG_DC is not set
# CONFIG_DEVFSD is not set
# CONFIG_DEVFSD_MODLOAD is not set
# CONFIG_DEVFSD_FG_NP is not set
# CONFIG_DEVFSD_VERBOSE is not set
# CONFIG_FEATURE_DEVFS is not set
CONFIG_EJECT=y
# CONFIG_LAST is not set
CONFIG_LESS=y
CONFIG_FEATURE_LESS_MAXLINES=9999999
CONFIG_FEATURE_LESS_BRACKETS=y
CONFIG_FEATURE_LESS_FLAGS=y
# CONFIG_FEATURE_LESS_FLAGCS is not set
# CONFIG_FEATURE_LESS_MARKS is not set
# CONFIG_FEATURE_LESS_REGEXP is not set
CONFIG_HDPARM=y
CONFIG_FEATURE_HDPARM_GET_IDENTITY=y
# CONFIG_FEATURE_HDPARM_HDIO_SCAN_HWIF is not set
# CONFIG_FEATURE_HDPARM_HDIO_UNREGISTER_HWIF is not set
# CONFIG_FEATURE_HDPARM_HDIO_DRIVE_RESET is not set
# CONFIG_FEATURE_HDPARM_HDIO_TRISTATE_HWIF is not set
# CONFIG_FEATURE_HDPARM_HDIO_GETSET_DMA is not set
# CONFIG_MAKEDEVS is not set
# CONFIG_FEATURE_MAKEDEVS_LEAF is not set
# CONFIG_FEATURE_MAKEDEVS_TABLE is not set
# CONFIG_MOUNTPOINT is not set
# CONFIG_MT is not set
# CONFIG_NMETER is not set
# CONFIG_RAIDAUTORUN is not set
# CONFIG_READAHEAD is not set
# CONFIG_RUNLEVEL is not set
# CONFIG_RX is not set
# CONFIG_STRINGS is not set
# CONFIG_SETSID is not set
# CONFIG_TASKSET is not set
# CONFIG_FEATURE_TASKSET_FANCY is not set
CONFIG_TIME=y
# CONFIG_WATCHDOG is not set

#
# Networking Utilities
#
# CONFIG_FEATURE_IPV6 is not set
# CONFIG_ARP is not set
# CONFIG_ARPING is not set
# CONFIG_DNSD is not set
# CONFIG_ETHER_WAKE is not set
# CONFIG_FAKEIDENTD is not set
# CONFIG_FTPGET is not set
# CONFIG_FTPPUT is not set
# CONFIG_FEATURE_FTPGETPUT_LONG_OPTIONS is not set
# CONFIG_HOSTNAME is not set
# CONFIG_HTTPD is not set
# CONFIG_FEATURE_HTTPD_RELOAD_CONFIG_SIGHUP is not set
# CONFIG_FEATURE_HTTPD_SETUID is not set
# CONFIG_FEATURE_HTTPD_BASIC_AUTH is not set
# CONFIG_FEATURE_HTTPD_AUTH_MD5 is not set
# CONFIG_FEATURE_HTTPD_CONFIG_WITH_MIME_TYPES is not set
# CONFIG_FEATURE_HTTPD_CGI is not set
# CONFIG_FEATURE_HTTPD_CONFIG_WITH_SCRIPT_INTERPR is not set
# CONFIG_FEATURE_HTTPD_SET_REMOTE_PORT_TO_ENV is not set
# CONFIG_FEATURE_HTTPD_ENCODE_URL_STR is not set
# CONFIG_IFCONFIG is not set
# CONFIG_FEATURE_IFCONFIG_STATUS is not set
# CONFIG_FEATURE_IFCONFIG_SLIP is not set
# CONFIG_FEATURE_IFCONFIG_MEMSTART_IOADDR_IRQ is not set
# CONFIG_FEATURE_IFCONFIG_HW is not set
# CONFIG_FEATURE_IFCONFIG_BROADCAST_PLUS is not set
# CONFIG_IFUPDOWN is not set
# CONFIG_FEATURE_IFUPDOWN_IP is not set
# CONFIG_FEATURE_IFUPDOWN_IP_BUILTIN is not set
# CONFIG_FEATURE_IFUPDOWN_IFCONFIG_BUILTIN is not set
# CONFIG_FEATURE_IFUPDOWN_IPV4 is not set
# CONFIG_FEATURE_IFUPDOWN_IPV6 is not set
# CONFIG_FEATURE_IFUPDOWN_IPX is not set
# CONFIG_FEATURE_IFUPDOWN_MAPPING is not set
# CONFIG_INETD is not set
# CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_ECHO is not set
# CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_DISCARD is not set
# CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_TIME is not set
# CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_DAYTIME is not set
# CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_CHARGEN is not set
# CONFIG_FEATURE_INETD_RPC is not set
# CONFIG_IP is not set
# CONFIG_FEATURE_IP_ADDRESS is not set
# CONFIG_FEATURE_IP_LINK is not set
# CONFIG_FEATURE_IP_ROUTE is not set
# CONFIG_FEATURE_IP_TUNNEL is not set
# CONFIG_FEATURE_IP_RULE is not set
# CONFIG_FEATURE_IP_SHORT_FORMS is not set
# CONFIG_IPADDR is not set
# CONFIG_IPLINK is not set
# CONFIG_IPROUTE is not set
# CONFIG_IPTUNNEL is not set
# CONFIG_IPRULE is not set
# CONFIG_IPCALC is not set
# CONFIG_FEATURE_IPCALC_FANCY is not set
# CONFIG_FEATURE_IPCALC_LONG_OPTIONS is not set
# CONFIG_NAMEIF is not set
# CONFIG_NC is not set
# CONFIG_NC_SERVER is not set
# CONFIG_NC_EXTRA is not set
# CONFIG_NETSTAT is not set
# CONFIG_NSLOOKUP is not set
# CONFIG_PING is not set
# CONFIG_FEATURE_FANCY_PING is not set
# CONFIG_PING6 is not set
# CONFIG_FEATURE_FANCY_PING6 is not set
# CONFIG_ROUTE is not set
# CONFIG_TELNET is not set
# CONFIG_FEATURE_TELNET_TTYPE is not set
# CONFIG_FEATURE_TELNET_AUTOLOGIN is not set
# CONFIG_TELNETD is not set
# CONFIG_FEATURE_TELNETD_STANDALONE is not set
# CONFIG_TFTP is not set
# CONFIG_FEATURE_TFTP_GET is not set
# CONFIG_FEATURE_TFTP_PUT is not set
# CONFIG_FEATURE_TFTP_BLOCKSIZE is not set
# CONFIG_DEBUG_TFTP is not set
# CONFIG_TRACEROUTE is not set
# CONFIG_FEATURE_TRACEROUTE_VERBOSE is not set
# CONFIG_FEATURE_TRACEROUTE_SOURCE_ROUTE is not set
# CONFIG_FEATURE_TRACEROUTE_USE_ICMP is not set
# CONFIG_APP_UDHCPD is not set
# CONFIG_APP_DHCPRELAY is not set
# CONFIG_APP_DUMPLEASES is not set
# CONFIG_APP_UDHCPC is not set
# CONFIG_FEATURE_UDHCP_SYSLOG is not set
# CONFIG_FEATURE_UDHCP_DEBUG is not set
# CONFIG_VCONFIG is not set
# CONFIG_WGET is not set
# CONFIG_FEATURE_WGET_STATUSBAR is not set
# CONFIG_FEATURE_WGET_AUTHENTICATION is not set
# CONFIG_FEATURE_WGET_IP6_LITERAL is not set
# CONFIG_FEATURE_WGET_LONG_OPTIONS is not set
# CONFIG_ZCIP is not set

#
# Process Utilities
#
CONFIG_FREE=y
CONFIG_FUSER=y
CONFIG_KILL=y
CONFIG_KILLALL=y
# CONFIG_KILLALL5 is not set
# CONFIG_PIDOF is not set
# CONFIG_FEATURE_PIDOF_SINGLE is not set
# CONFIG_FEATURE_PIDOF_OMIT is not set
CONFIG_PS=y
CONFIG_FEATURE_PS_WIDE=y
# CONFIG_RENICE is not set
# CONFIG_BB_SYSCTL is not set
CONFIG_TOP=y
CONFIG_FEATURE_TOP_CPU_USAGE_PERCENTAGE=y
CONFIG_UPTIME=y

#
# Shells
#
CONFIG_FEATURE_SH_IS_ASH=y
# CONFIG_FEATURE_SH_IS_HUSH is not set
# CONFIG_FEATURE_SH_IS_LASH is not set
# CONFIG_FEATURE_SH_IS_MSH is not set
# CONFIG_FEATURE_SH_IS_NONE is not set
CONFIG_ASH=y

#
# Ash Shell Options
#
CONFIG_ASH_JOB_CONTROL=y
CONFIG_ASH_READ_NCHARS=y
CONFIG_ASH_READ_TIMEOUT=y
CONFIG_ASH_ALIAS=y
CONFIG_ASH_MATH_SUPPORT=y
CONFIG_ASH_MATH_SUPPORT_64=y
CONFIG_ASH_GETOPTS=y
CONFIG_ASH_BUILTIN_ECHO=y
CONFIG_ASH_BUILTIN_TEST=y
CONFIG_ASH_CMDCMD=y
CONFIG_ASH_MAIL=y
CONFIG_ASH_OPTIMIZE_FOR_SIZE=y
# CONFIG_ASH_RANDOM_SUPPORT is not set
CONFIG_ASH_EXPAND_PRMT=y
# CONFIG_HUSH is not set
# CONFIG_LASH is not set
# CONFIG_MSH is not set

#
# Bourne Shell Options
#
CONFIG_FEATURE_SH_EXTRA_QUIET=y
# CONFIG_FEATURE_SH_STANDALONE_SHELL is not set
CONFIG_FEATURE_COMMAND_EDITING=y
CONFIG_FEATURE_COMMAND_EDITING_VI=y
CONFIG_FEATURE_COMMAND_HISTORY=15
# CONFIG_FEATURE_COMMAND_SAVEHISTORY is not set
CONFIG_FEATURE_COMMAND_TAB_COMPLETION=y
CONFIG_FEATURE_COMMAND_USERNAME_COMPLETION=y
CONFIG_FEATURE_SH_FANCY_PROMPT=y

#
# System Logging Utilities
#
# CONFIG_SYSLOGD is not set
# CONFIG_FEATURE_ROTATE_LOGFILE is not set
# CONFIG_FEATURE_REMOTE_LOG is not set
# CONFIG_FEATURE_IPC_SYSLOG is not set
CONFIG_FEATURE_IPC_SYSLOG_BUFFER_SIZE=
# CONFIG_LOGREAD is not set
# CONFIG_FEATURE_LOGREAD_REDUCED_LOCKING is not set
# CONFIG_KLOGD is not set
# CONFIG_LOGGER is not set

#
# Runit Utilities
#
# CONFIG_RUNSV is not set
# CONFIG_RUNSVDIR is not set
# CONFIG_SV is not set
# CONFIG_SVLOGD is not set
# CONFIG_CHPST is not set
# CONFIG_SETUIDGID is not set
# CONFIG_ENVUIDGID is not set
# CONFIG_ENVDIR is not set
# CONFIG_SOFTLIMIT is not set
EOF
	make oldconfig
	a=`cat -n applets/applets.c | awk '/ENABLE_STATIC/{print $1}'`
	b=`cat -n applets/applets.c | awk '/endif/{print $1}'`
	b=`echo $b | awk '{print $1}'`
	sed $a,$b\d applets/applets.c > applets/applets-new
	rm applets/applets.c
	mv applets/applets-new applets/applets.c
	cat Makefile |sed s/-Wl,--gc-sections// > Makefile-new
	rm Makefile
	mv Makefile-new Makefile
	echo -n "Building BusyBox: "
	make $makeopt > $oredir 2>&1
	exitstatus $?
	cd $home_dir
	install_busybox
}

install_e2fs() {
	echo -n "Installing e2fsTools: "
	cp $home_dir/$eversion/build/e2fsck/e2fsck $home_initrd/sbin
	cp $home_dir/$eversion/build/misc/mke2fs $home_initrd/sbin
	echo "done."
}

build_e2fs() {
	cd $home_dir
	[ -e $eversion.tar.gz -a -d $eversion ] && install_e2fs && return 0
	rm -rf $eversion 2>/dev/null
	if [ ! -e $eversion.tar.gz ] 
	then
		echo -n "Downloading e2fsTools: "
		wget -c "http://heanet.dl.sourceforge.net/sourceforge/e2fsprogs/$eversion.tar.gz" > $oredir 2>&1
		exitstatus $?
	fi
	tar xzf $eversion.tar.gz
	cd $eversion
	mkdir build
	cd build
	echo -n "Configuring e2fsTools: "
	../configure --with-cc='cc -static' --with-ccopts="$optflags" > $oredir 2>&1
	[ $? = 0 ] && echo "done."
	echo -n "Building e2fsTools: "
	make $makeopt > $oredir 2>&1
	exitstatus $?
	install_e2fs
}

install_cfdisk() {
	echo -n "Installing cfdisk: "
	cp $home_dir/$utilversion/fdisk/cfdisk $home_initrd/sbin
	exitstatus $?
}

build_cfdisk() {
	cd $home_dir
	[ -e "$utilversion.tar.gz" -a -d "$utilversion" ] && install_cfdisk && return 0
	rm -rf $utilversion 2>/dev/null
	if [ ! -e $utilversion.tar.gz ]
	then
		echo -n "Downloading cfdisk: "
		wget -c "http://www.kernel.org/pub/linux/utils/util-linux/$utilversion.tar.gz" > $oredir 2>&1
		exitstatus $?
	fi
	tar xzf "$utilversion.tar.gz"
	cd $utilversion
	echo -n "Configuring cfdisk: "
	export LDFLAGS="-static"
	./configure > $oredir 2>&1
	exitstatus $?
	cat > ../no_syscall.patch << EOF
--- lib/my-syscall.h
+++ lib/my-syscall.h
@@ -0,0 +1,12 @@
+#ifndef __MY_SYSCALL_H__
+#define __MY_SYSCALL_H__
+
+#ifndef _syscall5
+# define _syscall5(type,name,type1,arg1,type2,arg2,type3,arg3,type4,arg4,type5,arg5) \\
+type name (type1 arg1, type2 arg2, type3 arg3, type4 arg4, type5 arg5) \\
+{ \\
+	return (type) syscall(__NR_##name, arg1, arg2, arg3, arg4, arg5); \\
+}
+#endif
+
+#endif
--- fdisk/llseek.c
+++ fdisk/llseek.c
@@ -10,6 +10,8 @@
 #include <errno.h>
 #include <unistd.h>
 
+#include "my-syscall.h"
+
 extern long long ext2_llseek (unsigned int, long long, unsigned int);
 
 #ifdef __linux__
--- fdisk/sfdisk.c
+++ fdisk/sfdisk.c
@@ -177,6 +177,7 @@
 #endif
 
 #ifndef use_lseek
+#include <my-syscall.h>
 static __attribute__used
 _syscall5(int,  _llseek,  unsigned int,  fd, ulong, hi, ulong, lo,
        loff_t *, res, unsigned int, wh);
--- partx/partx.c
+++ partx/partx.c
@@ -339,6 +339,7 @@
 
 #ifdef NEED__llseek
 #include <linux/unistd.h>       /* _syscall */
+#include "../lib/my-syscall.h"
 static
 _syscall5(int,  _llseek,  uint,  fd, ulong, hi, ulong, lo,
 	  long long *, res, uint, wh);
EOF
	echo -n "Apply patch: "
	patch -p0 < ../no_syscall.patch > $oredir 2>&1
	exitstatus $?
	echo -n "Building cfdisk: "
	cd fdisk
	make cfdisk $makeopt > $oredir 2>&1
	exitstatus $?
	install_cfdisk
}

install_dialog() {
	echo -n "Installing dialog: "
	cp "$home_dir/`echo $dversion |sed s/_/-/`/dialog" $home_initrd/bin
	exitstatus $?
}

build_dialog() {
	cd $home_dir
	ddir=`echo $dversion |sed s/_/-/`
	[ -e $dversion.orig.tar.gz -a -d $ddir ] && install_dialog && return 0
	rm -r $ddir 2>/dev/null
	if [ ! -e $dversion.orig.tar.gz ] 
	then
		echo -n "Downloading dialog: "
		wget -c "http://debian.fastweb.it/debian/pool/main/d/dialog/$dversion.orig.tar.gz" > $oredir 2>&1
		exitstatus $?
	fi
	if [ ! -e $nversion.tar.gz -o ! -d $nversion ] 
	then
		rm -rf $nversion 2>/dev/null
		if [ ! -e $nversion.tar.gz ]
		then
			echo -n "Downloading ncurses: "
			wget -c "ftp://invisible-island.net/ncurses/$nversion.tar.gz" > $oredir 2>&1
			exitstatus $?
		fi
		tar xzf $nversion.tar.gz
		cd $nversion
		mkdir build
		cd build
		echo -n "Configuring ncurses: "
		export CC="gcc -static -m32"
		[ ! "$optflags" = "" ] && export CFLAGS="$optflags"
		../configure --without-gpm --without-dlsym --without-debug > $oredir 2>&1
		ret=$?
		[ "$arch" = "x86_64" -a ! $ret = 0 ] && echo "Error: you not have 32bit libs. Please install it." 1>&2
		exitstatus $ret
		echo -n "Building ncurses: "
		make $makeopt > $oredir 2>&1
		exitstatus $?
	fi
	cd $home_dir
	tar xzf $dversion.orig.tar.gz
	cd "$home_dir/`echo "$dversion" |sed s/_/-/`"
	echo -n "Configuring dialog: "
	export CC="gcc -static -m32"
	[ ! "$optflags" = "" ] && export CFLAGS="$optflags"
	./configure > $oredir 2>&1
	ret=$?
	[ "$arch" = "x86_64" -a ! $ret = 0 ] && echo "Error: you not have 32bit libs. Please install it." 1>&2
	exitstatus $ret
	cat > patch_makefile << EOF
--- makefile
+++ makefile.new
@@ -32,7 +32,7 @@
 CC		= gcc -static -m32
 AR		= ar
 LDFLAGS		= 
-LIBS		= -lncurses  -lm -L/lib # 
+LIBS		= -L$home_dir/$nversion/build/lib/ -lncurses  -lm -L/lib #
 RANLIB		= ranlib
 
 RM		= rm -f
EOF
	echo -n "Apply patch: "
	patch -p0 makefile < patch_makefile > $oredir 2>&1
	exitstatus $?
	echo -n "Building dialog: "
	make $makeopt > $oredir 2>&1
	exitstatus $?
	install_dialog
	unset ddir
}

install_tar() {
	echo -n "Installing tar: "
	cp $home_dir/$tversion/build/src/tar $home_initrd/bin
	exitstatus $?
}

build_tar() {
	cd $home_dir
	[ -e $tversion.tar.gz -a -d $tversion ] && install_tar && return 0
	rm -rf $tversion 2>/dev/null
	if [ ! -e $tversion.tar.gz ]
	then
		echo -n "Downloading tar: "
		wget -c "http://mirrors.usc.edu/pub/gnu/tar/$tversion.tar.gz" > $oredir 2>&1
		exitstatus $?
	fi
	tar xzf $tversion.tar.gz
	cd $tversion
	mkdir build
	cd build
	echo -n "Configuring tar: "
	export CC='gcc -static'
	[ ! "$optflags" = "" ] && export CFLAGS="$optflags"
	../configure > $oredir 2>&1
	exitstatus $?
	echo -n "Building tar: "
	make $makeopt > $oredir 2>&1
	exitstatus $? 
	install_tar
}

install_gzip() {
	echo -n "Installing gzip: "
	cp $home_dir/$zversion/build/gzip $home_initrd/bin
	exitstatus $?
}

build_gzip() {
	cd $home_dir
	[ -e $zversion.tar.gz -a -d $zversion ] && install_gzip && return 0
	rm -rf $zversion 2>/dev/null
	if [ ! -e $zversion.tar.gz ]
	then
		echo -n "Downloading gzip: "
		wget -c "http://mirrors.usc.edu/pub/gnu/gzip/$zversion.tar.gz" > $oredir 2>&1
		exitstatus $?
	fi
	tar xzf $zversion.tar.gz
	cd $zversion
	mkdir build
	cd build
	echo -n "Configuring gzip: "
	export CC="gcc -static"
	[ ! "$optflags" = "" ] && export CFLAGS="$optflags"
	../configure > $oredir 2>&1
	exitstatus $?
	echo -n "Building gzip: "
	make $makeopt > $oredir 2>&1
	exitstatus $?
	install_gzip
}

install_udev() {
	echo -n "Installing udev: "
	cd $uversion
	make DESTDIR=$home_initrd \
	     EXTRAS="extras/ata_id extras/dasd_id   extras/edd_id  \
	             extras/floppy extras/path_id   extras/scsi_id \
		     extras/usb_id extras/volume_id extras/rule_generator" \
             install-bin > $oredir 2>&1
	[ $? = 0 ] && echo -n "."
	mkdir -p $home_initrd/etc/udev
	cp -r etc/udev/{udev.conf,rules.d} $home_initrd/etc/udev
	[ $? = 0 ] && echo -n "."
	cd $home_dir
	echo "done."
}

build_udev() {
	cd $home_dir
	[ -e $uversion.tar.gz -a -d $uversion ] && install_udev && return 0
	rm -rf $uversion 2>/dev/null
	if [ ! -e $uversion.tar.gz ]
	then
		echo -n "Downloading udev: "
		wget -c "http://www.us.kernel.org/pub/linux/utils/kernel/hotplug/$uversion.tar.gz"
		exitstatus $?
	fi
	tar xzf $uversion.tar.gz
	cd $uversion
	echo -n "Building udev: "
	make USE_STATIC=true \
	     EXTRAS="extras/ata_id extras/dasd_id   extras/edd_id  \
	             extras/floppy extras/path_id   extras/scsi_id \
		     extras/usb_id extras/volume_id extras/rule_generator" $makeopt > $oredir 2>&1
	exitstatus $?
	cd $home_dir
	install_udev
}

configure_isolinux() {
	echo -n "Configuring ISOLinux: "
	cat > $home_dir/distro/isolinux/isolinux.cfg << EOF
DEFAULT mydistro
PROMPT  1
TIMEOUT 100
DISPLAY message.txt
F2      info.txt
LABEL   mydistro
KERNEL /boot/vmlinuz
APPEND initrd=/boot/initrd root=/dev/ram0 load_ramdisk=1 init=/linuxrc rw irqpoll ramdisk_size=30000

EOF
	cat > $home_dir/distro/isolinux/message.txt << EOF
My_Distro
  Press <enter> to begin or F2 for option
EOF
	cat > $home_dir/distro/isolinux/info.txt << EOF
mydistro                  Normal way to install
mydistro single_user      Use this distribution in single user mode
EOF
	echo "done."
}

install_isolinux() {
	echo -n "Installing ISOlinux: "
	mkdir -p $home_dir/distro/isolinux
	cd $home_dir/$iversion
	cp isolinux.bin $home_dir/distro/isolinux/
	exitstatus $?
	configure_isolinux
}

build_isolinux() {
	cd $home_dir
	[ -e $iversion.tar.gz -a -d $iversion ] && install_isolinux && return 0
	rm -rf $iversion 2>/dev/null
	if [ ! -e $iversion.tar.gz ]
	then
		echo -n "Downloading isolinux: "
		wget -c "http://www.kernel.org/pub/linux/utils/boot/syslinux/$iversion.tar.gz" > $oredir 2>&1
		exitstatus $?
	fi
	tar xzf $iversion.tar.gz
	cd $iversion
	echo -n "Building isolinux: "
	make isolinux.bin $makeopt > $oredir 2>&1
	exitstatus $?
	cd $home_dir
	install_isolinux
}

configure_grub() {
	echo -n "Configuring Grub: "
		cat > $home_dir/distro/boot/grub/menu.lst << EOF 
default 0
timeout 30
title=Linux
kernel (cd)/boot/vmlinuz root=/dev/ram0 init=/linuxrc rw irqpoll ramdisk_size=30000
initrd (cd)/boot/initrd
title=Single User
kernel (cd)/boot/vmlinuz root=/dev/ram0 init=/linuxrc rw irqpoll single_user ramdisk_size=30000
initrd (cd)/boot/initrd

EOF
	echo "done."
}

install_grub() {
	echo -n "Installing Grub: "
	mkdir $home_dir/distro/boot/grub
	cd $gversion
	cp stage1/stage1 $home_dir/distro/boot/grub/
	cp stage2/stage2  $home_dir/distro/boot/grub/
	cp stage2/stage2_eltorito $home_dir/distro/boot/grub/
	cd $home_dir
	echo "done."
	configure_grub
}

build_grub() {
	cd $home_dir
	[ -e $gversion.tar.gz -a -d $gversion ] && install_grub && return 0
	rm -rf $gversion 2>/dev/null
	if [ ! -e $gversion.tar.gz ]
	then
		echo -n "Downloading Grub: "
		wget -c "ftp://alpha.gnu.org/gnu/grub/$gversion.tar.gz" > $oredir 2>&1 
		exitstatus $?
	fi
	tar xzf $gversion.tar.gz
	cd $gversion
	echo -n "Configuring grub: "
	./configure --disable-ext2fs   --disable-fat   \
		    --disable-ffs      --disable-ufs2  \
		    --disable-reiserfs --disable-minix \
		    --disable-vstafs   --disable-jfs   \
		    --disable-xfs > /dev/tty4 2>&1
	exitstatus $?
	echo -n "Building grub: "
	make $makeopt > $oredir 2>&1
	exitstatus $?
	cd $home_dir
	install_grub
}

#gen_cpio() {
#	echo -n "Generating initramfs: "
#	cd $home_initrd
#	mv linuxrc init
#	mknod dev/initrd b 1 250
#	chmod 400 dev/initrd
#	find . > file_list
#	cpio -oc < file_list > $name_initrd
#	mv $name_initrd $home_dir
#	rm file_list
#	cd $home_dir
#	rm -rf $home_initrd
#	echo "done."
#}

gen_image() {
	echo -n "Generating initrd: "
	cd $home_dir
	size=`du -s $home_initrd |awk '{print $1}'`
	initrd_size=`echo "$size+400"|bc`
	dd if=/dev/zero of=$name_initrd bs=1024 count=$initrd_size 2> /dev/null
	echo y |mkfs -t ext2 $name_initrd > /dev/null 2>&1
	echo "done."
}

populate_image() {
	echo -n "Populating initrd: "
	mkdir -p $home_dir/tmp
	mount -t ext2 $name_initrd -o loop $home_dir/tmp 
	rm -rf tmp/lost+found
	cp -Ra $home_initrd/* tmp/
	umount tmp
	rm -rf $home_initrd
	rm -rf tmp
	echo "done."
}

strip_exec() {
	strip --strip-unneeded $home_initrd/{,s}bin/*
	#strip --strip-unneeded $home_initrd/usr/{,s}bin/*
}

md5summing() {
	[ `ls ./* 2>/dev/null |wc -l` -eq 0 ] && return 0
	for i in *
	do
		checksum="`md5sum "./$i" |cut -d\  -f1`"
		orig="`grep $i $home_dir/db_packs.md5 | awk -F: '{print $1}'`"
		[ ! "$checksum" = "$orig" ] && echo "file: $filename corrotto!"
	done
}

check_packs() {
	echo -n "Checksumming packages: "
        cd $home_dir
	[ ! -e "$home_dir/temp" ] && mkdir "$home_dir/temp"
	cd $home_files
	md5sum ./* > $home_dir/db_packs.md5
	cd $home_dir
	cat db_packs.md5 | sed 's/\ \ /:/g' > db-temp
	rm db_packs.md5
	mv db-temp db_packs.md5
	mount -o loop "$iso" temp
	cd temp/packs/base
	md5summing
	cd ../net
	md5summing
	cd ../dev
	md5summing
	cd ../gui
	md5summing
	cd $home_dir
	umount temp
	rm -rf temp
	echo "done."
}

fetch_packs() {
	url=`echo $1 |grep '^url'`
	plocal=`echo $1 |grep '^local'`
	if [ ! "$url" = "" ]
	then
		i=`echo $1 |awk -F\: '{if($1 ~ /^http$/ || $1 ~ /^ftp$/) { print $2":"$3 } else { print $2 }}'`
		[ ! -e "${i##*/}" ] && echo -n "${i##*/}." && $wget $i > $oredir 2>&1	
		$rsync ${i##*/} $2
		unset i
		return 0
	fi
	if [ ! "$plocal" = "" ]
	then
		i=`echo $1 |awk -F\: '{print $2}'`
		[ ! -e "${i##*/}" ] && echo -n "${i##*/}." && cp -f $i . > $oredir 2>&1
		$rsync ${i##*/} $2
		unset i
		return 0
	fi
	i=`echo $1 |awk -F\: '{print $1}'`
	package=`grep "./$i" list_packages_mirror`
	package=`echo $package|cut -d\  -f1`
	[ "$package" = "" ] && return 1
	[ ! -e "${package##*/}" ] && echo -n "${i##*/}." && $wget "$3/$package" > $oredir 2>&1
	$rsync ${package##*/} $2
	unset i
	return 0
}

parse_packs_default() {
	pack_name=`echo $1 |awk -F\: '{if ($0 ~ /^url/ || $0 ~ /^local/){print $2} else {print $1}}'`
	name=`basename $pack_name .tgz`
	flag=`echo $1 |awk -F\: '{print $NF}'`
	[ "$flag" = "" ] && flag="off"
	echo "\"$name\" \"\" \"$flag\" \\" >> $2
	[ "$flag" = "on" ] && echo "$name" >> $3
}

packs_slack() {
	rsync="rsync -c"
	wget="wget -c"
	cd $home_files
	#rm -f FILE_LIST 2>/dev/null
	if [ "$arch" = "i386" ]
	then
	#	wget -c "${slack_mirror[0]}/slackware-current/slackware/FILE_LIST" > $oredir 2>&1
	#	if [ ! $? = 0 ]
	#	then 
	#		while [ 1 ] 
	#		do
	#			rm -f FILE_LIST 2>/dev/null
	#			rand_index=`echo "($RANDOM%${#slack_mirror[@]})"|bc`
	#			selected_mirror=`echo ${slack_mirror[$rand_index]}`
	#			wget -c "$selected_mirror/slackware-current/slackware/FILE_LIST" > $oredir 2>&1
	#			[ $? = 0 ] && break
	#		done
	#	else
			selected_mirror="${slack_mirror[0]}"
	#	fi
	fi
	if [ "$arch" = "x86_64" ]
	then
	#	wget -c "${slack_mirror64[0]}/slamd64-current/slackware/FILE_LIST" > $oredir 2>&1
	#	if [ ! $? = 0 ]
	#	then
	#		while [ 1 ] 
	#		do
	#			rm -f FILE_LIST 2>/dev/null
	#			rand_index=`echo "($RANDOM%${#slack_mirror64[@]})"|bc`
	#			selected_mirror=`echo ${slack_mirror64[$rand_index]}`
	#			wget -c "$selected_mirror/slamd64-current/slackware/FILE_LIST" > $oredir 2>&1
	#			[ $? = 0 ] && break
	#		done
	#	else
			selected_mirror="${slack_mirror64[0]}"
	#	fi
	fi
	echo "Mirror Selected: $selected_mirror"
	cat FILE_LIST |awk '/.tgz$/{print $NF}' > list_packages_mirror
	echo -n "Fetch BASE packages: "
	for row in `sed -n -e '/##BASE/,/##END/p' $currpath/slack_packages | sed -e '/^#/d' | sed -e '/./!d' |sed 's/#.*//'`
	do
		fetch_packs "$row" "$home_dir/distro/packs/base" "$selected_mirror/slackware-current/slackware"
		[ $? = 1 ] && continue
		parse_packs_default "$row" "$home_initrd/etc/conf.d/default_base" "$home_initrd/etc/conf.d/base_selected"
	done
	echo "done."
	echo -n "Fetch NETWORK packages: "
	for row in `sed -n -e '/##NETWORK/,/##END/p' $currpath/slack_packages | sed -e '/^#/d' | sed -e '/./!d' |sed 's/#.*//'`
	do
		fetch_packs "$row" "$home_dir/distro/packs/net" "$selected_mirror/slackware-current/slackware"
		[ $? = 1 ] && continue
		parse_packs_default "$row" "$home_initrd/etc/conf.d/default_network" "$home_initrd/etc/conf.d/network_selected"
	done
	echo "done."
	echo -n "Fetch DEVEL packages: "
	for row in `sed -n -e '/##DEVEL/,/##END/p' $currpath/slack_packages | sed -e '/^#/d' | sed -e '/./!d' | sed 's/#.*//'`
	do
		fetch_packs "$row" "$home_dir/distro/packs/dev" "$selected_mirror/slackware-current/slackware"
		[ $? = 1 ] && continue
		parse_packs_default "$row" "$home_initrd/etc/conf.d/default_devel" "$home_initrd/etc/conf.d/devel_selected"
	done
	echo "done."
	echo -n "Fetch GUI packages: "
	for row in `sed -n -e '/##GUI/,/##END/p' $currpath/slack_packages | sed -e '/^#/d' | sed -e '/./!d' | sed 's/#.*//'`
	do
		fetch_packs "$row" "$home_dir/distro/packs/gui" "$selected_mirror/slackware-current/slackware"
		[ $? = 1 ] && continue
		parse_packs_default "$row" "$home_initrd/etc/conf.d/default_gui" "$home_initrd/etc/conf.d/gui_selected"
	done
	echo "done."
}

main() {
	[ ! $UID = 0 ] && echo "Must be superuser!! Exit!" && return 1
	[ ! -e $home_dir ] && echo "Directory not found: $home_dir" && return 1
	[ ! -e $home_files ] && echo "Directory not found: $home_files" && return 1
	[ ! -e $currpath/slack_packages ] && echo "File not found: $currpath/slack_packages" && return 1
	mkdir -p $home_dir/distro/{boot,packs/{base,dev,gui,net}}
	cd $home_dir
	mkdir -p $home_initrd/{{,s}bin,dev,mnt,sys,etc/{init,conf}.d,etc/i18n,lib,proc,tmp}
	build_busybox
	build_e2fs
	build_tar
	build_gzip
	build_dialog
	build_cfdisk
	build_kernel
	#build_udev
	strip_exec
	mknod -m 600 $home_initrd/dev/console c 5 1 2>/dev/null
	mknod -m 600 $home_initrd/dev/tty5 c 4 5 2>/dev/null
#	cat > $home_initrd/etc/inittab << EOF
#::sysinit:/etc/init.d/rcS
#tty2::askfirst:-/bin/sh
#tty3::askfirst:-/bin/sh
#::ctrlaltdel:/sbin/reboot
#::shutdown:/sbin/swapoff -a >/dev/null 2>&1
#::shutdown:/bin/umount -a -r >/dev/null 2>&1
#EOF
	cd $home_dir
	if [ ! -e "$home_dir/hdparm_scsi.tgz" ]
	then
		echo -n "Downloading hdparm info for scsi: "
		wget -c "http://vinx83.altervista.org/my_distro/hdparm_scsi.tgz" > $oredir 2>&1
		exitstatus $?
	fi
	tar xzf hdparm_scsi.tgz
	cd hdparm_scsi
	make $makeopt > $oredir 2>&1
	cp hdparm_scsi $home_initrd/sbin/
	cd $home_dir
	if [ ! -e "$home_dir/kmaps.tgz" ]
	then
		echo -n "Downloading keyboard mapping archive: "
		wget -c "http://vinx83.altervista.org/my_distro/kmaps.tgz" > $oredir 2>&1
		exitstatus $?
	fi
	cp $home_dir/kmaps.tgz $home_initrd/etc/i18n
	cat > $home_initrd/etc/fstab << EOF
none /proc proc defaults 0 0
none /sys sysfs defaults 0 0

EOF
	cp $home_initrd/etc/fstab $home_initrd/etc/fstab-new
	mkdir -p $home_initrd/usr/share/terminfo/l
	cp /usr/share/terminfo/l/linux $home_initrd/usr/share/terminfo/l
	packs_slack
	cat > $home_initrd/etc/conf.d/modules << EOF
#IDE
test_ide () {
	for a in \`cat /sys/bus/ide/drivers/ide-\$1/*/media 2> /dev/null\`
	do 
		[ "\$a" = "\$1" ] && return 1
	done
	return 0
}

ide_base () {
	#da aggiungere il ide-floppy
	modprobe ide-cd
	test_ide cdrom
	[ \$? = 0 ] && rmmod ide-cd
	modprobe ide-disk
	test_ide disk
	[ \$? = 0 ] && rmmod ide-disk
	for a in \`awk '/^ide_*/{ print "yes" }' /proc/modules\`
	do
		[ "\$a" = "yes" ] && return 0
	done
	return 1
}

#USB
test_usb () {
	for i in /sys/bus/usb/drivers/usb/usb*
	do
		[ -e \$i ] && return 1
	done
	return 0
}

usb_base() {
	modprobe usbcore
	modprobe uhci-hcd # for Intel and Via chipset
	modprobe ohci-hcd # for usb1.1
	modprobe ehci-hcd # for usb2.0
	test_usb
	if [ \$? = 0 ]; then
		rmmod ehci-hcd ohci-hcd uhci-hcd usbcore 
		return 1
	fi
	modprobe usb-storage
	#test_usb_storage 
	#[ \$? = 0 ] && rmmod usb-storage
	modprobe usbhid
	return 0
}

#FIREWIRE
test_ieee1394 () {
	for a in \`find /sys/bus/ieee1394/drivers/ -name [0-9]*\`
	do
		[ -e \$a ] && return 1
	done
	return 0
}

ieee1394_base() {
	modprobe ieee1394
	modprobe ohci1394
	modprobe sbp2
	test_ieee1394
	if [ \$? = 0 ] ; then
		rmmod ohci1394 sbp2 ieee1394
		return 1
	fi
	return 0
}

#SCSI AND SATA
test_scsi () {
	for i in \`cat /sys/class/scsi_host/host*/proc_name 2> /dev/null\`
	do 
		[ "\$a" = "\$1" ] && return 1
	done
	return 0
}

scsi_base() {
	modprobe sd_mod
	modprobe sr_mod
	for i in \$(find /lib/modules/\`uname -r\`/kernel/drivers/scsi)
	do
		if [ ! "\`echo $i |grep .ko |grep -v sd_mod\`" = "" ]
		then
			module_name=\`basename \$i .ko\`
			modprobe \$module_name
			test_scsi \$module_name
			[ \$? = 0 ] && rmmod \$module_name
		fi
	done
	return 0
}

#da aggiustare
sata_base() {
	#modprobe libata
	modprobe ata_generic
	modprobe ahci
	modprobe ata_piix
	for i in \$(find /lib/modules/\`uname -r\`/kernel/drivers/ata)
	do
		if [ ! "\`echo \$i |grep .ko |grep ^[ps]\`" = "" ]
		then
			module_name=\`basename \$i .ko\`
			modprobe \$module_name
			test_scsi \$module_name
			[ \$? = 0 ] && rmmod \$module_name
		fi
	done
	return 0
}

EOF
	cat > $home_initrd/etc/conf.d/udev << EOF

#makedev() {
#	if [ ! -b \$1 ]; then
#		mknod "/dev/\$1" b \$2 \$3
#		chmod 640 \$1
#		return 0
#	fi
#	return 1
#}

populate_dev() {
	mount -n -t tmpfs udev /dev 
	mkdir -p /dev/pts
	mkdir -p /dev/shm
	mount -t devpts -o gid=4,mode=620 none /dev/pts
	mount -t tmpfs none /dev/shm
	mknod -m 600 /dev/console c 5 1
	ln -snf /proc/self/fd /dev/fd
	ln -snf /proc/self/fd/0 /dev/stdin
	ln -snf /proc/self/fd/1 /dev/stdout
	ln -snf /proc/self/fd/2 /dev/stderr
	mknod -m 600 /dev/tty0 c 4 0
	mknod -m 600 /dev/tty1 c 4 1
	mknod -m 600 /dev/tty2 c 4 2
	mknod -m 600 /dev/tty3 c 4 3
	mknod -m 600 /dev/tty4 c 4 4
	mknod -m 600 /dev/tty5 c 4 5
	ln -s /dev/tty0 /dev/tty

	echo "/sbin/mdev" > /proc/sys/kernel/hotplug
	#/sbin/udevd --daemon > /dev/null 2>&1
	#/sbin/udevtrigger > /dev/null 2>&1
	#/sbin/udevsettle --timeout=60 > /dev/null 2>&1

	/sbin/mdev -s
	
	#makedev
	
	#awk '/d/{ print \$NF,\$1,\$2}' /proc/partitions | while read a ; do
	#	device=\`echo \$a | awk '{ print \$1 }'\`
	#	major=\`echo \$a | awk '{ print \$2 }'\`
	#	minor=\`echo \$a | awk '{ print \$3 }'\`
	#	makedev \$device \$major \$minor
	#	[ \$? = 0 ] && echo -n ".\${BLUE}\$device\${NORMAL}"
	#done
	return 0
}

EOF
	cat > $home_initrd/etc/conf.d/keymap << EOF

# Old GUI
#show_keymap() {
#	[ ! -e /dev/tty0 ] && mknod /dev/tty0 c 4 0
#	cd /tmp
#	tar xzf /etc/i18n/kmaps.tgz
#	ls
#	cd
#}

temp=/tmp/keymap

set_keymap() {
	echo "----------SETTING KEYMAP---------" > /dev/tty4
	KEYMAP=us
	if [ -e \$temp ]
	then
		KEYMAP=\`cat \$temp\`
		rm \$temp
	fi
	cd /tmp/
	tar xzf /etc/i18n/kmaps.tgz -O \$KEYMAP > /tmp/\$KEYMAP
	loadkmap < /tmp/\$KEYMAP
	rm /tmp/\$KEYMAP
	echo "loadkeys \$KEYMAP" > \$temp
	cd
}

show_qwerty () {
	dialog --title "KEYBOARD MAP SELECTION (2/2)" \
	       --menu "You may select one of following keyboard maps. \
	       If you do not select a keyboard map, 'us.map' is the \
	       default. User the UP/DOWN arrow keys and PageUP/PageDown \
	       to scroll through the whole list of choices." \
	       22 55 11 \
	"bg-cp1251"       "" "bg-cp855"       "" \
	"bg_bds-cp1251"   "" "bg_bds-utf8"    "" \
	"bg_pho-cp1251"   "" "bg_pho-utf8"    "" \
	"br-abnt"         "" "br-abnt2"       "" \
	"br-latin1-abnt2" "" "br-latin1-us"   "" \
	"by" 	          "" "cf" 	      "" \
	"cz-cp1250"       "" "cz-lat2-prog"   "" \
	"cz-lat2" 	  "" "cz" 	      "" \
	"defkeymap"	  "" "defkeymap_V1.0" "" \
	"dk-latin1"       "" "dk"  	      "" \
	"emacs" 	  "" "emacs2" 	      "" \
	"es-cp850" 	  "" "es" 	      "" \
	"et-nodeadkeys"   "" "et" 	      "" \
	"fi-latin1"       "" "fi-latin9"      "" \
	"fi" 	          "" "gr-pc" 	      "" \
	"gr" 	          "" "hu101" 	      "" \
	"il-heb" 	  "" "il-phonetic"    "" \
	"il" 	          "" "is-latin1-us"   "" \
	"is-latin1"       "" "it-ibm"         "" \
	"it" 	          "" "it2" 	      "" \
	"jp106" 	  "" "la-latin1"      "" \
	"lt.baltic"       "" "lt.l4" 	      "" \
	"lt" 	          "" "mk-cp1251"      "" \
	"mk-utf" 	  "" "mk" 	      "" \
	"mk0" 	          "" "nl" 	      "" \
	"nl2" 	          "" "no-latin1"      "" \
	"no" 	          "" "pc110" 	      "" \
	"pl" 	          "" "pl2" 	      "" \
	"pt-latin1"       "" "pt-latin9"      "" \
	"ro_win" 	  "" "ru-cp1251"      "" \
	"ru-ms" 	  "" "ru-yawerty"     "" \
	"ru" 	          "" "ru1" 	      "" \
	"ru2" 	          "" "ru3" 	      "" \
	"ru4" 	          "" "ru_win" 	      "" \
	"se-fi-ir209"     "" "se-fi-lat6"     "" \
	"se-ir209" 	  "" "se-lat6" 	      "" \
	"sk-prog-qwerty"  "" "sk-qwerty"      "" \
	"speakup-jfw"     "" "speakupmap"     "" \
	"sr-cy" 	  "" "sv-latin1"      "" \
	"tr_q-latin5"     "" "tralt" 	      "" \
	"trq" 	          "" "ua-utf-ws"      "" \
	"ua-utf" 	  "" "ua-ws" 	      "" \
	"ua" 	          "" "uk" 	      "" \
	"us-acentos"      "" "us" 	      "" 2>\$temp
	[ ! \$? = 0 ] && rm \$temp
}

show_azerty() {
	dialog --title "KEYBOARD MAP SELECTION (2/2)" \
               --menu "You may select one of following keyboard maps. \
	       If you do not select a keyboard map, 'us.map' is the \
	       default. User the UP/DOWN arrow keys and PageUP/PageDown \
	       to scroll through the whole list of choices." \
	       22 55 11 \
	"azerty"    "" "be-latin1" "" \
	"fr-latin1" "" "fr-latin9" "" \
	"fr-pc"     "" "fr" 	   "" \
	"wangbe"    "" "wangbe2"   "" 2>\$temp
	[ ! \$? = 0 ] && rm \$temp
}

show_qwertz() {
	dialog --title "KEYBOARD MAP SELECTION (2/2)" \
	       --menu "You may select one of following keyboard maps. \
	       If you do not select a keyboard map, 'us' is the \
	       default. User the UP/DOWN arrow keys and PageUP/PageDown \
	       to scroll through the whole list of choices." \
	       22 55 11 \
	"croat" 	       "" "cz-us-qwertz"    "" \
	"de-latin1-nodeadkeys" "" "de-latin1" 	    "" \
	"de"		       "" "de_CH-latin1"    "" \
	"fr_CH-latin1"	       "" "fr_CH" 	    "" \
	"hu" 		       "" "sg-latin1-lk450" "" \
	"sg-latin1" 	       "" "sg" 		    "" \
	"sk-prog-qwertz"       "" "sk-qwertz"  	    "" \
	"slovene" "" 2>\$temp
	[ ! \$? = 0 ] && rm \$temp
}

show_dvorak() {
	dialog --title "KEYBOARD MAP SELECTION (2/2)" \
	       --menu "You may select one of following keyboard maps. \
	       If you do not select a keyboard map, 'us.map' is the \
	       default. User the UP/DOWN arrow keys and PageUP/PageDown \
	       to scroll through the whole list of choices." \
	       22 55 11 \
	"ANSI-dvorak" "" "dvorak-l" "" \
	"dvorak-r"    "" "dvorak"   "" 2>\$temp
	[ ! \$? = 0 ] && rm \$temp
}

show_fgGIod() {
	dialog --title "KEYBOARD MAP SELECTION (2/2)" \
	       --menu "You may select one of following keyboard maps. \
	       If you do not select a keyboard map, 'us.map' is the \
	       default. User the UP/DOWN arrow keys and PageUP/PageDown \
	       to scroll through the whole list of choices." \
	       22 55 11 \
	"tr_f-latin5" "" "trf" "" 2>\$temp
	[ ! \$? = 0 ] && rm \$temp
}

show_keymap() {
	while [ 0 ] 
	do
		dialog --title "KEYBOARD MAP SELECTION (1/2)" \
		       --menu "You may select one of the following keyboard maps. \
		       If you do not select a keyboard map, 'us.map' (the \
		       US keyboard map) is the default.  Use the UP/DOWN \
		       arrow keys and PageUp/PageDown to scroll through \
		       the whole list of choices." \
		       22 55 11 \
		       "QWERTY" "" "QWERTZ" "" \
		       "AZERTY" "" "DVORAK" "" \
		       "FGGIOD"	"" 2>\$temp
		response=\$?
		[ \$response == 1 ] && break
		if [ \$response == 0 ]; then
			KEYTYPE=\`cat \$temp\`
			rm \$temp
			[ \$KEYTYPE == "QWERTY" ] && show_qwerty 
			[ \$KEYTYPE == "QWERTZ" ] && show_qwertz 
			[ \$KEYTYPE == "AZERTY" ] && show_azerty
			[ \$KEYTYPE == "DVORAK" ] && show_dvorak
			[ \$KEYTYPE == "FGGIOD" ] && show_fgGIod 
			set_keymap
			break
		else 
			rm \$temp
			break
		fi
	done
	unset \$temp
}
EOF
	cat > $home_initrd/etc/conf.d/disk << EOF
find_disks() {
	unset desc
	for i in \`ls /dev/hd[a-z] 2>/dev/null\`
	do
		unset desc
		unset serialno
		serialno=\`hdparm -i \$i |grep Model|awk '{print \$NF}'|cut -d\= -f2\`
		desc=\`hdparm -i \$i |grep Model |grep -E -i -v '(cd|dvd)(.|)(rom|)'\`
		if [ ! "\$desc" = "" -a ! "\$serialno" = "" ]
                then
			echo -n "\\"\${i##*/}\\" \\"\$desc\\"  \\"off\\" " >> /tmp/sldisk
		fi
	done
	for i in \`ls /dev/s[rd][a-z] 2>/dev/null\`
	do
		unset desc
		unset serialno
		serialno=\`hdparm_scsi \$i | awk '{print \$NF}' | cut -d\= -f2\`
		desc=\`hdparm_scsi \$i |grep -E -i -v '(cd|dvd)(.|)(rom|)'\`
		if [ ! "\$desc" = "" -a ! "\$serialno" = "" ]
		then
			echo -n "\\"\${i##*/}\\" \\"\$desc\\"  \\"off\\" " >> /tmp/sldisk
		fi
	done
	echo "2>/tmp/sldiskr" >> /tmp/sldisk
}

show_disks() {
	cat > /tmp/sldisk << OOK
dialog --separate-output --title "SELECT DISK" \\\\
       --checklist "Select one or more disk which you would build this distribution" 12 70 4 \\\\
OOK
	find_disks
	if [ "\`grep off /tmp/sldisk\`" = "" ]
	then
		dialog --title "NO DISK FOUND" \
		       --ok-label "Reboot" --msgbox 'Have you a disk on your machine?!?' \
		       7 30
		res=\$?
		reboot
	fi
	while [ 1 ]
	do
		source /tmp/sldisk
		res=\$?
		if [ \$res -ne 0 -o "\`cat /tmp/sldiskr\`" = "" ] 
		then
			dialog --title "WARNING" \
			       --msgbox 'You must select at least one disk!!' \
			                10 30
		else
			break
		fi
	done
	rm /tmp/sldisk
}

show_disk_partition() {
	dialog --title "EDIT PARTITON TABLE" \
	       --yesno "Do you create or edit partitions?" 10 30
	if [ \$? = 0 ]
	then
		for i in \`cat /tmp/sldiskr\`
		do
			dialog --sleep 2 --infobox "Selecting /dev/\$i..." 3 30
			/sbin/cfdisk /dev/\$i
		done
	fi
}

check_part() {
	echo "----------CHECK PARTITION-------" > /dev/tty4
	while [ 1 ] 
	do
		e2fsck -y \$1 > /dev/tty4 2>&1
		[ \$? = 0 ] && return 0
	done
}

format_part() {
	echo "----------FORMAT PARTITION-------" > /dev/tty4
	echo "Formatting \$1..."
	mke2fs -j \$1 > /dev/tty4 2>&1
	[ \$? = 0 ] && return 0
	mke2fs \$1 > /dev/tty4 2>&1
	return 1
}

format_swap() {
	echo "----------FORMAT SWAP-------" > /dev/tty4
	mkswap \$1 > /dev/tty4 2>&1
	return \$?
}

read_mountpoint() {
	while [ 1 ]
	do
		dialog --title "MOUNT POINT" \\
		       --inputbox "Please, insert a mount point for \$1" \\
		       8 50 2>/tmp/mpoint
		[ \$? = 0 ] && break
	done
}

format_partition() {
	dialog --backtitle "Do you want to format Linux partition \${1}?" \\
               --title "FORMAT PARTITION \$1" \\
	       --yesno "This partition has \$2 bytes. If this partition has \\
                       not been formatted, you should format it. \\
		       NOTE: This will erase all data on it. \\
		       Would you like to format this partition?" 12 70 
	res=\$?
	if [ \$res = 0 ]
	then
		echo "ext2" > /tmp/fstype
		format_part \$1
		[ \$? = 0 ] && echo "ext3" > /tmp/fstype
	fi
}

already_mounted() {
	dialog --title "WARNING" \\
	       --msgbox "There is another device that is already mounted! \\
	                 Please, select a different mount point." 12 50
	return \$?
}

set_mountpoint() {
	while [ 1 ]
	do
		unset mount_point
		unset pmounted
		unset amounted
		read_mountpoint \$1
		mount_point="\`cat /tmp/mpoint\`"
		rm /tmp/mpoint
		[ "\$mount_point" = "" ] && mount_point="/"
		amounted="0"
		pmounted="\`cat /proc/mounts | awk '{print \$2}' |grep /mnt/my_distro\`"
		if [ ! "\$pmounted" = "" ]
		then
			for i in \$pmounted
			do
				if [ "\$i" = "/mnt/my_distro" -a "\$mount_point" = "/" ]
				then
					already_mounted
					amounted="1"
					break
				elif [ "\$i" = "/mnt/my_distro/\${mount_point#/*}" ]
				then
					already_mounted
					amounted="1"
					break
				fi
			done
		fi
		if [ "\$amounted" = "0" ]
		then
			echo "\$mount_point" > /tmp/mpoint
			break
		fi
	done
}

ask_check() {
	dialog --title "CHECK PARTITION" --defaultno \\
	       --yesno "Would you check \$1 filesystem?" 6 30
	return \$?
}

find_parts() {
	unset part
	unset disks
	disks="\`cat /tmp/sldiskr\`"
	for i in \$disks
	do
		part="\`fdisk -l /dev/\$i 2>/dev/null |grep '^/dev/*' |grep -v swap | grep Linux | awk '{print \$1'}\` \$part"
	done
	tmp=\`echo \$part |sed s/\ //g\`
	if [ "\$tmp" = "" ] 
	then 
		dialog --title "NO LINUX PARTITION FOUND" \\
		       --ok-label "Reboot" \\
		       --msgbox 'Have you create a partition table with linux partitions?!?' 6 40
		res=\$?
		reboot
	else
		mkdir -p /mnt/my_distro
		for p in \$part
		do
			nodev=\${p##*/}
			byte="\`awk /\$nodev/'{print \$(NF-1)}' /proc/partitions\`"
			ask_check \$p
			if [ \$? = 0 ]
			then
				echo -ne "\\t\${GREEN}Check partition \$nodev:\${NORMAL}"
				check_part \$p
				[ \$? = 0 ] && echo "\${WHITE}done\${NORMAL}."
			fi
			format_partition \$p \$byte
			fstype=\`cat /tmp/fstype\`
			unset mount_point
			set_mountpoint \$p
			mount_point="\`cat /tmp/mpoint\`"
			if [ "\$mount_point" = "/" ]
			then
				echo -n "\${GREEN}Mounting \$p on /mnt/my_distro : \${NORMAL}"
				echo "\$p /mnt/my_distro \$fstype defaults 0 0" >> /etc/fstab
				mount \$p
				[ \$? = 0 ] && echo "\${WHITE}done\${NORMAL}"
			else
				echo "\${GREEN}Mounting \$p on /mnt/my_distro/\${mount_point#/*} : \${NORMAL}"
				mkdir -p /mnt/my_distro/\${mount_point#/*}
				echo "\$p /mnt/my_distro/\${mount_point#/*} \$fstype defaults 0 0" >> /etc/fstab
				mount \$p
				[ \$? = 0 ] && echo "\${WHITE}done\${NORMAL}"
			fi
			echo "\$p \$mount_point \$fstype defaults 0 0" >> /etc/fstab-new
		done
		unset p
		unset fstype
	fi
	unset tmp
	unset nodev
	unset fstype
	unset mount_point
	unset i
	unset j
	for i in \`fdisk -l 2>&1 |grep '^/dev/*'\`
	do
		device=\`echo \$i |awk '{print $1}'\`
		for j in \$part
		do
			if [ ! "\$device" = "\$j" ]
			then
				[ ! \`echo \$i |grep "Ext'd"\` = "" ] && continue
				[ ! \`echo \$i |grep ntfs\` = "" ] && fstype="ntfs"
				[ ! \`echo \$i |grep fat\` = "" ] && fstype="vfat"
				[ ! \`echo \$i |grep reiser\` = "" ] && fstype="reiserfs"
				if [ ! "\$fstype" = "" ]
				then
					nodev=\${p##*/}
					mount_point="/mnt/\$nodev"
					mkdir \$mount_point
					echo "\$j \$mount_point \$fstype noauto,user 0 0" >> /etc/fstab-new
				fi
				unset mount_point
				unset nodev
			fi
			unset fstype
		done
	done
	unset part
}

find_swap() {
	unset swap
	for i in /dev/[hs]d[a-z]
	do
		swap="\`fdisk -l \$i 2>/dev/null |grep swap | awk '/^\/dev\/*/{print \$1'}\` \$swap"
	done
	if [ "\$swap" = "" ] ; then
		dialog --title "NO SWAP PARTITION FOUND" --yes-label "Reboot" \\
		       --no-label "Continue" --yesno "Warning, you have not \\
	                        created a swap partition with Linux fdisk. Do you want \\
				to continue installing without one?" 6 60 
		res=\$?
		[ \$res = 0 ] && reboot
	else
		for i in \$swap
		do
			echo "----------Swap" >> /tmp/disks
			echo -ne "\${GREEN}Creating swap space on \${i##*/}:\${NORMAL}"
			format_swap \$i
			[ \$? = 0 ] && echo -n "\${WHITE}done\${NORMAL}"
			echo "."
			echo "\$i none swap defaults 0 0" >> /etc/fstab
			echo "\$i none swap defaults 0 0" >> /etc/fstab-new
			echo -en "\${GREEN}Activating swap:\${NORMAL}."
			swapon \$i 2>/dev/tty4
			if [ \$? = 0 ] 
			then
				echo "\${YELLOW}\${i##*/}\${NORMAL}."
				echo "Activating swap of \$i" >> /tmp/disks
			else
				echo "\${RED}\${i##*/}\${NORMAL}."
			fi
		done
	fi
}

find_cdrom() {
	for i in \`find /dev |grep -E '/dev/(hd[a-z]|s(r[0-9]|d[a-z]))$'\`
	do
		if [ "2048" = "\`fdisk -l \$i 2>&1 | awk '/^Units/{print \$7}'\`" ]
		then
			echo -n "\${GREEN}Mounting \$i as cdrom:\${NORMAL}."
			ln -sf \$i /dev/cdrom
			mount -t iso9660 -o ro \$i /mnt/my_distro/cdrom
			if [ \$? = 0 ]
			then
				echo "\${WHITE}done.\${NORMAL}"
			else
				echo "\${RED}fail.\${NORMAL}"
			fi
			if [ ! -d /mnt/my_distro/cdrom/packs ]
			then
				umount \$i
			else
				break
			fi
		fi
	done
	if [ "\`grep /mnt/my_distro/cdrom /proc/mounts\`" = "" ] 
	then
		dialog --title "FATAL" --ok-label="Reboot" \\
		       --msgbox "Unable to find and mount the CDROM of this distro!!!" \\
		       6 30
		[ $? = 0 ] && reboot
	fi
}
EOF
	cat > $home_initrd/etc/conf.d/install_base << EOF
dir_base() {
	[ ! -e /mnt/my_distro/cdrom ] && mkdir -p /mnt/my_distro/cdrom
	[ ! -e /mnt/my_distro/bin ] && mkdir -p /mnt/my_distro/bin
	[ ! -e /mnt/my_distro/dev ] && mkdir -p /mnt/my_distro/dev
	[ ! -e /mnt/my_distro/etc ] && mkdir -p /mnt/my_distro/etc
	[ ! -e /mnt/my_distro/proc ] && mkdir -p /mnt/my_distro/proc
	[ ! -e /mnt/my_distro/usr/etc ] && mkdir -p /mnt/my_distro/usr/etc
	[ ! -e /mnt/my_distro/var/tmp ] && mkdir -p /mnt/my_distro/var/tmp
	[ ! -e /mnt/my_distro/var/log ] && mkdir -p /mnt/my_distro/var/log
	[ ! -e /mnt/my_distro/lib ] && mkdir -p /mnt/my_distro/lib
	[ ! -e /mnt/my_distro/home ] && mkdir -p /mnt/my_distro/home
	[ ! -e /mnt/my_distro/root ] && mkdir -p /mnt/my_distro/root
	[ ! -e /mnt/my_distro/sys ] && mkdir -p /mnt/my_distro/sys
	[ ! -e /mnt/my_distro/usr/share/fonts/encodings/large ] && mkdir -p /mnt/my_distro/usr/share/fonts/encodings/large
}

pstatus() {
	if [ \$1 = 0 ]
	then 
		echo "\${WHITE}done\${NORMAL}."
	else
		echo "\${RED}fail\${NORMAL}."
	fi
}

log_if_fail() {
	package=\`echo "\$1" |sed 's/\/mnt\/my_distro//'\`
	echo "\$package" >> /mnt/my_distro/var/tmp/package_fails
}

install_package() {
# We must stay in root directory
	shortname=\`basename \$1 .tgz\`
	echo "Checking  \$1" > /dev/tty4
	echo -n "\${GREEN}Checking   \${CYAN}\$shortname\${GREEN}:\${NORMAL}."
	gzip -l \$1 > /dev/tty4 2>&1
	if [ ! \$? = 0 ] 
	then
		echo "\${RED}package is corrupt!\${NORMAL}"
		log_if_fail \$1
		return 1
	fi
	tar tzf \$1 > /dev/tty4 2>&1
	if [ ! \$? = 0 ]
	then 
		echo "\${RED}tar archive is corrupt!\${NORMAL}"
		log_if_fail \$1
		return 1
	fi
	echo "\${WHITE}done\${NORMAL}."
	echo "Unpacking \$1" > /dev/tty4
	echo -n "\${GREEN}Unpacking  \${CYAN}\$shortname\${GREEN}:\${NORMAL}."
	tar xzf \$1 2> /dev/tty4
	pstatus \$?
	echo "Installing \$1" > /dev/tty4
	echo -n "\${GREEN}Installing \${CYAN}\$shortname\${GREEN}:\${NORMAL}."
	[ -x sbin/ldconfig ] && sbin/ldconfig -r .
	if [ -f install/doinst.sh ]
	then
		sh install/doinst.sh -install 2> /dev/tty4 
		pstatus \$?
	else 
		echo "\${WHITE}done\${NORMAL}."
	fi
	rm -rf install
}

install_chroot_package() {
	chroot /mnt/my_distro /sbin/installpkg /cdrom/packs/\$1/\$2
}

packs_base() {
	echo "----------BASE PACKAGES----------" > /dev/tty4
	cd /mnt/my_distro
	[ ! -e /etc/conf.d/base_selected ] && touch /etc/conf.d/base_selected
	[ ! -e /tmp/base_selected ] && cp /etc/conf.d/base_selected /tmp/
	for i in \`cat /tmp/base_selected\`
	do
		unset package
		package=\`ls /mnt/my_distro/cdrom/packs/base/\$i*.tgz 2>/dev/null\`
		package=\`echo \$package |cut -d\  -f1\`
		[ "\$package" = "" ] && continue
		install_package "\$package"
	done
	unset package
}

packs_net() {
	echo "----------NETWORK PACKAGES----------" > /dev/tty4
	cd /mnt/my_distro
	[ ! -e /etc/conf.d/network_selected ] && touch /etc/conf.d/network_selected
	[ ! -e /tmp/network_selected ] && cp /etc/conf.d/network_selected /tmp/
	for i in \`cat /tmp/network_selected\`
	do
		unset package
		package=\`ls /mnt/my_distro/cdrom/packs/net/\$i*.tgz 2>/dev/null\`
		package=\`echo \$package |cut -d\  -f1\`
		[ "\$package" = "" ] && continue
		install_package "\$package"
	done
	unset package
}

packs_dev() {
	echo "----------DEVELOP PACKAGES----------" > /dev/tty4
	cd /mnt/my_distro
	[ ! -e /etc/conf.d/devel_selected ] && touch /etc/conf.d/devel_selected
	[ ! -e /tmp/devel_selected ] && cp /etc/conf.d/devel_selected /tmp/
	for i in \`cat /tmp/devel_selected\`
	do
		unset package
		package=\`ls /mnt/my_distro/cdrom/packs/dev/\$i*.tgz 2>/dev/null\`
		package=\`echo \$package |cut -d\  -f1\`
		[ "\$package" = "" ] && continue
		install_package "\$package"
	done
	unset package
}

packs_gui() {
	echo "----------GUI PACKAGES----------" > /dev/tty4
	cd /mnt/my_distro
	[ ! -e /etc/conf.d/gui_selected ] && touch /etc/conf.d/gui_selected
	[ ! -e /tmp/gui_selected ] && cp /etc/conf.d/gui_selected /tmp/
	for i in \`cat /tmp/gui_selected\`
	do
		unset package
		package=\`ls /mnt/my_distro/cdrom/packs/gui/\$i*.tgz 2>/dev/null\`
		package=\`echo \$package |cut -d\  -f1\`
		[ "\$package" = "" ] && continue
		install_package "\$package"
	done
	unset package
}

select_base() {
	while [ 0 ]
	do
		cat > /tmp/base_selection << OOK
dialog --title "SELECT BASE PACKAGES" --separate-output --ok-label "Continue" --cancel-label "Reset" \\\\
       --checklist "" 22 50 16 \\\\
OOK
		cat /etc/conf.d/default_base >> /tmp/base_selection
		echo "2>/tmp/base_selected" >> /tmp/base_selection
		source /tmp/base_selection
		ret=\$?
		rm /tmp/base_selection
		[ \$ret = 0 ] && break
	done
}

select_network() {
	while [ 0 ]
	do
		cat > /tmp/network_selection << OOK
dialog --title "SELECT NETWORKING PACKAGES" --separate-output --ok-label "Continue" --cancel-label "Reset" \\\\
       --checklist "" 22 50 16 \\\\
OOK
		cat /etc/conf.d/default_network >> /tmp/network_selection
		echo "2>/tmp/network_selected" >> /tmp/network_selection
		source /tmp/network_selection
		ret=\$?
		rm /tmp/network_selection
		[ \$ret = 0 ] && break
	done
}

select_devel() {
	while [ 0 ]
	do
		cat > /tmp/devel_selection << OOK
dialog --title "SELECT DEVELOPMENT PACKAGES" --separate-output --ok-label "Continue" --cancel-label "Reset" \\\\
       --checklist "" 22 50 16 \\\\
OOK
		cat /etc/conf.d/default_devel >> /tmp/devel_selection
		echo "2>/tmp/devel_selected" >> /tmp/devel_selection
		source /tmp/devel_selection
		ret=\$?
		rm /tmp/devel_selection
		[ \$ret = 0 ] && break	
	done
}

select_gui() {
	while [ 0 ]
	do
		cat > /tmp/gui_selection << OOK
dialog --title "SELECT GUI PACKAGES" --separate-output --ok-label "Continue" --cancel-label "Reset" \\\\
       --checklist "" 22 50 16 \\\\
OOK
		cat /etc/conf.d/default_gui >> /tmp/gui_selection
		echo "2>/tmp/gui_selected" >> /tmp/gui_selection
		source /tmp/gui_selection
		ret=\$?
		rm /tmp/gui_selection
		[ \$? = 0 ] && break
	done
}

select_packages() {
	while [ 0 ] 
	do
		dialog --title "SELECT PACKAGES" --ok-label "Select" --cancel-label "Continue" \\
		       --menu "" 12 30 4 \\
		       "BASE" "" \\
		       "NETWORK" "" \\
		       "DEVEL" "" \\
		       "GUI" "" 2>/tmp/pgroup
		[ ! \$? = 0 ] && break
		pgroup="\`cat /tmp/pgroup\`"
		[ "\$pgroup" = "BASE" ] && select_base
		[ "\$pgroup" = "NETWORK" ] && select_network
		[ "\$pgroup" = "DEVEL" ] && select_devel
		[ "\$pgroup" = "GUI" ] && select_gui
	done
}

EOF
	cat > $home_initrd/etc/init.d/rcS << EOF
#!/bin/sh

NORMAL="[0;39m"
RED="[1;31m"
GREEN="[1;32m"
YELLOW="[1;33m"
BLUE="[1;34m"
MAGENTA="[1;35m"
CYAN="[1;36m"
WHITE="[1;37m"
echo ""
echo "\${WHITE}Welcome to the \${CYAN}M\${MAGENTA}Y\${NORMAL} \${YELLOW}D\${WHITE}1\${RED}S\${BLUE}T\${MAGENTA}R\${YELLOW}0\${WHITE}!\${NORMAL}"
echo ""
echo ""
export PATH=/bin:/sbin:/usr/bin:/usr/sbin
umask 022
echo -n "\${GREEN}Mounting:\${NORMAL}"
chmod 1777 /tmp
mount -n -t proc none /proc
[ \$? = 0 ] && echo -n ".\${BLUE}ProcFS\${NORMAL}"
ln -s /proc/mounts /etc/mtab
mount -n -t sysfs none /sys >/dev/null 2>&1
[ \$? = 0 ] && echo -n ".\${BLUE}SysFS\${NORMAL}"
echo "."
echo "0" > /proc/sys/kernel/printk

source /etc/conf.d/modules

echo -n "\${GREEN}Loading Modules:\${NORMAL}"

ide_base
[ \$? = 0 ] && echo -n ".\${BLUE}IDE\${NORMAL}"

usb_base
[ \$? = 0 ] && echo -n ".\${BLUE}USB\${NORMAL}"

ieee1394_base
[ \$? = 0 ] && echo -n ".\${BLUE}FIREWIRE\${NORMAL}"

scsi_base
[ \$? = 0 ] && echo -n ".\${BLUE}SCSI\${NORMAL}"

sata_base
[ \$? = 0 ] && echo -n ".\${BLUE}SATA\${NORMAL}"
echo "."

source /etc/conf.d/udev
echo -n "\${GREEN}Populating /dev:\${NORMAL}"
populate_dev
[ \$? = 0 ]  && echo -n ".\${BLUE}done\${NORMAL}"
echo "."

echo -n "\${GREEN}Processor Type: \${NORMAL}"
PNAME=\`awk -F\: '/name/{print \$NF}' /proc/cpuinfo\`
PMHZ=\`awk -F\: '/MHz/{print \$NF}' /proc/cpuinfo\`
PBMIPS=\`awk -F\: '/bogomips/{print \$NF}' /proc/cpuinfo\`
echo "\${BLUE}\$PNAME \${RED}\$PMHZ \${WHITE}(bogomips:\$PBMIPS)\${NORMAL}"
echo -n "\${GREEN}Total RAM: \${NORMAL}"
MTOT=\`awk -F\: '/MemTotal/{ print \$NF }' /proc/meminfo\`
echo "\${BLUE}\$MTOT\${NORMAL}"

export TERM=linux
source /etc/conf.d/keymap
show_keymap

[ ! "\`grep single_user /proc/cmdline\`"  = "" ] && exit

source /etc/conf.d/disk

show_disks
show_disk_partition
find_parts
find_swap


#config base
source /etc/conf.d/install_base
dir_base

find_cdrom

mount --bind /dev /mnt/my_distro/dev
mount -tsysfs /sys /mnt/my_distro/sys
mount -tproc /proc /mnt/my_distro/proc
cp /etc/fstab-new /mnt/my_distro/etc/fstab
touch /mnt/my_distro/etc/ld.so.conf
echo "UTC" > /mnt/my_distro/etc/hardwareclock

#costruire l'interfaccia grafica per la selezione dei pacchetti
select_packages
packs_base
packs_net
packs_dev
packs_gui

rm -rf install
root=\`awk '{if(\$2 == "/mnt/my_distro") print \$1}' /proc/mounts \`
boot=\`echo \$root |sed 's/[0-9]//g'\`
cat > /mnt/my_distro/etc/lilo.conf << OOK
default = linux
prompt
lba32
boot = \$boot
root = \$root
read-only
image = /boot/vmlinuz
label = linux
OOK

cat > /mnt/my_distro/initialize << OOK
#!/bin/bash
passwd
ln -s /bin/bash /bin/sh
if [ ! -e /usr/lib/libexpat.so ] 
then
	[ -e /usr/lib/libexpat.so ] && ln -s /usr/lib/libexpat.so /usr/lib/libexpat.so.0
fi
if [ ! -e /usr/lib/libgdk_pixbuf.so.2 ]
then
	[ -e /usr/lib/libgdk_pixbuf-2.0.so ] && ln -s /usr/lib/libgdk_pixbuf-2.0.so /usr/lib/libgdk_pixbuf.so.2
fi
if [ -e /usr/bin/mkfontscale -a -e /usr/bin/mkfontdir -a /usr/share/fonts ]
then
	for i in \\\`find /usr/share/fonts/ -type d\\\`
	do
		cd \\\$i
		mkfontscale
		mkfontdir
		cd
	done
fi
lilo -v > /dev/tty4 2>&1
[ -e /dev/MAKEDEV ] && rm -f /dev/MAKEDEV 
groupadd floppy
exit
OOK
chmod 755 /mnt/my_distro/initialize
chroot /mnt/my_distro/ /initialize
echo -n "\${GREEN}Insert your hostname > \${NORMAL}"
read hostname
if [ ! "\$hostname" = "" ]
then
	echo \$hostname > /mnt/my_distro/etc/HOSTNAME
	echo "127.0.0.1 localhost" > /mnt/my_distro/etc/hosts
	echo "127.0.0.1 \$hostname" >> /mnt/my_distro/etc/hosts
fi

cat /tmp/keymap >> /mnt/my_distro/etc/profile
echo "exec startxfce4" > /mnt/my_distro/root/.xinitrc
umount /mnt/my_distro/dev
mknod -m 600 /mnt/my_distro/dev/console c 5 1 
rm /mnt/my_distro/initialize
umount -a > /dev/null 2>&1
eject
echo "Please, remove the cdrom and press a key to reboot!"
read a
reboot
EOF
	chmod 755 $home_initrd/etc/init.d/rcS
#	itype="initrd"
#	echo -n "Select initrd or initramfs > "
#	read itype
#	case $itype in
#	initrd|INITRD)
#		gen_image
#		populate_image
#		;;
#	initramfs|INITRAMFS)
#		gen_cpio
#		;;
#	*) echo "autoselecting initrd..."
		gen_image
		populate_image
#		;;
#	esac
	gzip $name_initrd
	cp $name_initrd.gz $home_dir/distro/boot/initrd
	load="1"
	echo -n "Select isolinux or grub > "
	read loader
	case $loader in
	grub|GRUB)
		build_grub
		load="1"
		;;
	isolinux|ISOLINUX)
		build_isolinux
		load="2"
		;;
	*) echo "autoselecting GRUB..."
		build_grub
		;;
	esac
	echo -n "Building ISO: "
	cd $home_dir/distro
	if [ $load = "2" ]
	then
		mkisofs -R -b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table -iso-level 4 -o $iso . 2> $oredir
	else
		mkisofs -R -b boot/grub/stage2_eltorito -c boot.catalog  -no-emul-boot -boot-load-size 4 -boot-info-table -iso-level 4 -o $iso . 2> $oredir
	fi
	cd $home_dir
	rm -rf distro/
	rm my_initrd_image.gz
	cp -f $iso $currpath/ 2>&1
	exitstatus $?
	check_packs
}

main
