genkernel: Add --kconfig to set specific kernel config options
[genkernel.git] / gen_cmdline.sh
index ebf69ea2c1ce9a6420932a85edd6bf3ac9663b7f..6766b4ea292c5476e0d7ce97923d5ca97269bf08 100755 (executable)
@@ -25,27 +25,33 @@ longusage() {
   echo "  Kernel Configuration settings"
   echo "       --menuconfig            Run menuconfig after oldconfig"
   echo "       --no-menuconfig         Do not run menuconfig after oldconfig"
-  echo "       --gconfig               Run gconfig after oldconfig"
-  echo "       --xconfig               Run xconfig after oldconfig"
+  echo "       --gconfig                       Run gconfig after oldconfig"
+  echo "       --no-gconfig            Don't run gconfig after oldconfig"
+  echo "       --xconfig                       Run xconfig after oldconfig"
+  echo "       --no-xconfig            Don't run xconfig after oldconfig"
   echo "       --save-config           Save the configuration to /etc/kernels"
   echo "       --no-save-config        Don't save the configuration to /etc/kernels"
+  echo "       --virtio                        Include VirtIO kernel code"
+  echo "       --kconfig=<CONFIG>=<value>      Set a specific kernel config option"
   echo "  Kernel Compile settings"
+  echo "       --oldconfig             Implies --no-clean and runs a 'make oldconfig'"
   echo "       --clean                 Run make clean before compilation"
-  echo "       --mrproper              Run make mrproper before compilation"
   echo "       --no-clean              Do not run make clean before compilation"
-  echo "       --no-mrproper           Do not run make mrproper before compilation"
-  echo "       --oldconfig             Implies --no-clean and runs a 'make oldconfig'"
+  echo "       --mrproper              Run make mrproper before compilation"
+  echo "       --no-mrproper   Do not run make mrproper before compilation"
   echo "       --splash                Install framebuffer splash support into initramfs"
   echo "       --no-splash             Do not install framebuffer splash"
   echo "       --install               Install the kernel after building"
   echo "       --no-install            Do not install the kernel after building"
   echo "       --symlink               Manage symlinks in /boot for installed images"
   echo "       --no-symlink            Do not manage symlinks"
+  echo "       --ramdisk-modules       Copy required modules to the ramdisk"
   echo "       --no-ramdisk-modules    Don't copy any modules to the ramdisk"
   echo "       --all-ramdisk-modules   Copy all kernel modules to the ramdisk"
   echo "       --callback=<...>        Run the specified arguments after the"
   echo "                               kernel and modules have been compiled"
   echo "       --static                Build a static (monolithic kernel)."
+  echo "       --no-static             Do not build a static (monolithic kernel)."
   echo "  Kernel settings"
   echo "       --kerneldir=<dir>       Location of the kernel sources"
   echo "       --kernel-config=<file>  Kernel configuration file to use for compilation"
@@ -57,6 +63,10 @@ longusage() {
   echo "       --kernel-ld=<linker>    Linker to use for kernel"
   echo "       --kernel-cross-compile=<cross var> CROSS_COMPILE kernel variable"
   echo "       --kernel-make=<makeprg> GNU Make to use for kernel"
+  echo "       --kernel-target=<t>     Override default make target (bzImage)"
+  echo "       --kernel-binary=<path>  Override default kernel binary path (arch/foo/boot/bar)"
+  echo "       --kernel-outputdir=<path> Save output files outside the source tree."
+
   echo "       --utils-cc=<compiler>   Compiler to use for utilities"
   echo "       --utils-as=<assembler>  Assembler to use for utils"
   echo "       --utils-ld=<linker>     Linker to use for utils"
@@ -68,40 +78,54 @@ longusage() {
   echo "       --mountboot             Mount BOOTDIR automatically if mountable"
   echo "       --no-mountboot          Don't mount BOOTDIR automatically"  
   echo "       --bootdir=<dir>         Set the location of the boot-directory, default is /boot"
+  echo "       --modprobedir=<dir>     Set the location of the modprobe.d-directory, default is /etc/modprobe.d"
   echo "  Initialization"
   echo "       --splash=<theme>        Enable framebuffer splash using <theme>"
   echo "       --splash-res=<res>      Select splash theme resolutions to install"
   echo "       --splash=<theme>        Enable framebuffer splash using <theme>"
   echo "       --splash-res=<res>      Select splash theme resolutions to install"
   echo "       --do-keymap-auto        Forces keymap selection at boot"
+  echo "       --keymap                Enables keymap selection support"
   echo "       --no-keymap             Disables keymap selection support"
-  echo "       --evms                  Include EVMS support"
-  echo "                               --> 'emerge evms' in the host operating system"
-  echo "                               first"
   echo "       --lvm                   Include LVM support"
-  echo "       --mdadm                 Copy /etc/mdadm.conf to initramfs"
+  echo "       --no-lvm                Exclude LVM support"
+  echo "       --mdadm                 Include MDADM/MDMON support"
+  echo "       --no-mdadm              Exclude MDADM/MDMON support"
+  echo "       --mdadm-config=<file>   Use file as mdadm.conf in initramfs"
   echo "       --dmraid                Include DMRAID support"
+  echo "       --no-dmraid             Exclude DMRAID support"
+  echo "       --e2fsprogs             Include e2fsprogs"
+  echo "       --no-e2fsprogs          Exclude e2fsprogs"
+  echo "       --zfs                   Include ZFS support"
+  echo "       --no-zfs                Exclude ZFS support"
   echo "       --multipath             Include Multipath support"
+  echo "       --no-multipath  Exclude Multipath support"
   echo "       --iscsi                 Include iSCSI support"
-  echo "       --slowusb               Enables extra pauses for slow USB CD boots"
+  echo "       --no-iscsi              Exclude iSCSI support"
   echo "       --bootloader=grub       Add new kernel to GRUB configuration"
   echo "       --linuxrc=<file>        Specifies a user created linuxrc"
   echo "       --busybox-config=<file> Specifies a user created busybox config"
   echo "       --genzimage             Make and install kernelz image (PowerPC)"
-  echo "       --disklabel             Include disk label and uuid support in your"
-  echo "                               ramdisk"
+  echo "       --disklabel             Include disk label and uuid support in your ramdisk"
+  echo "       --no-disklabel  Exclude disk label and uuid support in your ramdisk"
   echo "       --luks                  Include LUKS support"
   echo "                               --> 'emerge cryptsetup-luks' with USE=-dynamic"
+  echo "       --no-luks               Exclude LUKS support"
   echo "       --gpg                   Include GPG-armored LUKS key support"
-  echo "       --no-busybox            Do not include busybox in the initramfs."
+  echo "       --no-gpg                Exclude GPG-armored LUKS key support"
+  echo "       --busybox               Include busybox"
+  echo "       --no-busybox    Exclude busybox"
   echo "       --unionfs               Include support for unionfs"
+  echo "       --no-unionfs    Exclude support for unionfs"
   echo "       --netboot               Create a self-contained env in the initramfs"
+  echo "       --no-netboot    Exclude --netboot env"
   echo "       --real-root=<foo>       Specify a default for real_root="
   echo "  Internals"
   echo "       --arch-override=<arch>  Force to arch instead of autodetect"
   echo "       --cachedir=<dir>        Override the default cache location"
   echo "       --tempdir=<dir>         Location of Genkernel's temporary directory"
-  echo "       --postclear             Clear all tmp files and caches after genkernel has run"
+  echo "       --postclear                     Clear all tmp files and caches after genkernel has run"
+  echo "       --no-postclear          Do not clean up after genkernel has run"
   echo "  Output Settings"
   echo "       --kernname=<...>        Tag the kernel and ramdisk with a name:"
   echo "                               If not defined the option defaults to"
@@ -130,9 +154,14 @@ longusage() {
   echo "                               Specifies specific firmware files to copy. This"
   echo "                               overrides --firmware-dir. For multiple files,"
   echo "                               separate the filenames with a comma"
-  echo "       --integrated-initramfs"
-  echo "                               Build the generated initramfs into the kernel instead of"
-  echo "                               keeping it as a separate file"
+  echo "       --integrated-initramfs, --no-integrated-initramfs"
+  echo "                               Include/exclude the generated initramfs in the kernel"
+  echo "                               instead of keeping it as a separate file"
+  echo "       --compress-initramfs, --no-compress-initramfs,"
+  echo "       --compress-initrd, --no-compress-initrd"
+  echo "                               Compress or do not compress the generated initramfs"
+  echo "       --compress-initramfs-type=<arg>"
+  echo "                               Compression type for initramfs (best, xz, lzma, bzip2, gzip, lzop)"
 }
 
 usage() {
@@ -151,6 +180,12 @@ usage() {
   echo '       genkernel --help'
 }
 
+parse_optbool() {
+       local opt=${1/--no-*/0} # false
+       opt=${opt/--*/1} # true
+       echo $opt
+}
+
 parse_cmdline() {
        case "$*" in
                --kernel-cc=*)
@@ -169,11 +204,23 @@ parse_cmdline() {
                        CMD_KERNEL_MAKE=`parse_opt "$*"`
                        print_info 2 "CMD_KERNEL_MAKE: ${CMD_KERNEL_MAKE}"
                        ;;
+               --kernel-target=*)
+                       KERNEL_MAKE_DIRECTIVE_OVERRIDE=`parse_opt "$*"`
+                       print_info 2 "KERNEL_MAKE_DIRECTIVE_OVERRIDE: ${KERNEL_MAKE_DIRECTIVE_OVERRIDE}"
+                       ;;
+               --kernel-binary=*)
+                       KERNEL_BINARY_OVERRIDE=`parse_opt "$*"`
+                       print_info 2 "KERNEL_BINARY_OVERRIDE: ${KERNEL_BINARY_OVERRIDE}"
+                       ;;
                --kernel-cross-compile=*)
                        CMD_KERNEL_CROSS_COMPILE=`parse_opt "$*"`
                        CMD_KERNEL_CROSS_COMPILE=$(echo ${CMD_KERNEL_CROSS_COMPILE}|sed -e 's/.*[^-]$/&-/g')
                        print_info 2 "CMD_KERNEL_CROSS_COMPILE: ${CMD_KERNEL_CROSS_COMPILE}"
                        ;;
+               --kernel-outputdir=*)
+                       CMD_KERNEL_OUTPUTDIR=`parse_opt "$*"`
+                       print_info 2 "CMD_KERNEL_OUTPUTDIR: ${CMD_KERNEL_OUTPUTDIR}"
+                       ;;
                --utils-cc=*)
                        CMD_UTILS_CC=`parse_opt "$*"`
                        print_info 2 "CMD_UTILS_CC: ${CMD_UTILS_CC}"
@@ -203,97 +250,105 @@ parse_cmdline() {
                        CMD_MAKEOPTS=`parse_opt "$*"`
                        print_info 2 "CMD_MAKEOPTS: ${CMD_MAKEOPTS}"
                        ;;
-               --mountboot)
-                       CMD_MOUNTBOOT=1
-                       print_info 2 "CMD_MOUNTBOOT: ${CMD_MOUNTBOOT}"
-                       ;;
-               --no-mountboot)
-                       CMD_MOUNTBOOT=0
+               --mountboot|--no-mountboot)
+                       CMD_MOUNTBOOT=`parse_optbool "$*"`
                        print_info 2 "CMD_MOUNTBOOT: ${CMD_MOUNTBOOT}"
                        ;;
                --bootdir=*)
                        CMD_BOOTDIR=`parse_opt "$*"`
                        print_info 2 "CMD_BOOTDIR: ${CMD_BOOTDIR}"
                        ;;
+               --modprobedir=*)
+                       CMD_MODPROBEDIR=`parse_opt "$*"`
+                       print_info 2 "CMD_MODPROBEDIR: ${CMD_MODPROBEDIR}"
+                       ;;
                --do-keymap-auto)
                        CMD_DOKEYMAPAUTO=1
                        CMD_KEYMAP=1
                        print_info 2 "CMD_DOKEYMAPAUTO: ${CMD_DOKEYMAPAUTO}"
                        ;;
-               --no-keymap)
-                       CMD_KEYMAP=0
+               --keymap|--no-keymap)
+                       CMD_KEYMAP=`parse_optbool "$*"`
                        print_info 2 "CMD_KEYMAP: ${CMD_KEYMAP}"
                        ;;
-               --evms)
-                       CMD_EVMS=1
-                       print_info 2 "CMD_EVMS: ${CMD_EVMS}"
-                       ;;
-               --evms2)
-                       CMD_EVMS=1
-                       print_info 2 "CMD_EVMS: ${CMD_EVMS}"
-                       echo
-                       print_warning 1 "Please use --evms, as --evms2 is deprecated."
-                       ;;
-               --lvm)
-                       CMD_LVM=1
+               --lvm|--no-lvm)
+                       CMD_LVM=`parse_optbool "$*"`
                        print_info 2 "CMD_LVM: ${CMD_LVM}"
                        ;;
-               --lvm2)
-                       CMD_LVM=1
+               --lvm2|--no-lvm2)
+                       CMD_LVM=`parse_optbool "$*"`
                        print_info 2 "CMD_LVM: ${CMD_LVM}"
                        echo
                        print_warning 1 "Please use --lvm, as --lvm2 is deprecated."
                        ;;
-               --mdadm)
-                       CMD_MDADM=1
+               --mdadm|--no-mdadm)
+                       CMD_MDADM=`parse_optbool "$*"`
                        print_info 2 "CMD_MDADM: $CMD_MDADM"
                        ;;
-               --no-busybox)
-                       CMD_BUSYBOX=0
+               --mdadm-config=*)
+                       CMD_MDADM_CONFIG=`parse_opt "$*"`
+                       print_info 2 "CMD_MDADM_CONFIG: $CMD_MDADM_CONFIG"
+                       ;;
+               --busybox|--no-busybox)
+                       CMD_BUSYBOX=`parse_optbool "$*"`
                        print_info 2 "CMD_BUSYBOX: ${CMD_BUSYBOX}"
                        ;;
-               --unionfs)
-                       CMD_UNIONFS=1
+               --unionfs|--no-unionfs)
+                       CMD_UNIONFS=`parse_optbool "$*"`
                        print_info 2 "CMD_UNIONFS: ${CMD_UNIONFS}"
                        ;;
-               --netboot)
-                       CMD_NETBOOT=1
+               --netboot|--no-netboot)
+                       CMD_NETBOOT=`parse_optbool "$*"`
                        print_info 2 "CMD_NETBOOT: ${CMD_NETBOOT}"
                        ;;
                --real-root=*)
                        CMD_REAL_ROOT=`parse_opt "$*"`
                        print_info 2 "CMD_REAL_ROOT: ${CMD_REAL_ROOT}"
                        ;;
-               --slowusb)
-                       CMD_SLOWUSB=1
-                       print_info 2 "CMD_SLOWUSB: ${CMD_SLOWUSB}"
-                       ;;
-               --dmraid)
-                       if [ ! -e /usr/include/libdevmapper.h ]
+               --dmraid|--no-dmraid)
+                       CMD_DMRAID=`parse_optbool "$*"`
+                       if [ "$CMD_DMRAID" = "1" -a ! -e /usr/include/libdevmapper.h ]
                        then
-                               echo 'Error: --dmraid requires device-mapper to be installed'
-                               echo '           on the host system; try "emerge device-mapper".'
+                               echo 'Error: --dmraid requires LVM2 to be installed'
+                               echo '           on the host system; try "emerge lvm2".'
                                exit 1
                        fi
-                       CMD_DMRAID=1
                        print_info 2 "CMD_DMRAID: ${CMD_DMRAID}"
                        ;;
-               --multipath)
-                       if [ ! -e /usr/include/libdevmapper.h ]
+               --e2fsprogs|--no-e2fsprogs)
+                       CMD_E2FSPROGS=`parse_optbool "$*"`
+                       print_info 2 "CMD_E2FSPROGS: ${CMD_E2FSPROGS}"
+                       ;;
+               --zfs|--no-zfs)
+                       CMD_ZFS=`parse_optbool "$*"`
+                       print_info 2 "CMD_ZFS: ${CMD_ZFS}"
+                       ;;
+               --virtio)
+                       CMD_VIRTIO=`parse_optbool "$*"`
+                       print_info 2 "CMD_VIRTIO: ${CMD_VIRTIO}"
+                       ;;
+               --kconfig=*)
+                       KCONFIG_KEY=$(echo "$*" | cut -d= -f2)
+                       KCONFIG_VALUE=$(echo "$*" | cut -d= -f3)
+                       KCONFIG["$KCONFIG_KEY"]="$KCONFIG_VALUE"
+                       print_info 2 "KCONFIG: ${KCONFIG_KEY}=${KCONFIG_VALUE}"
+                       ;;
+               --multipath|--no-multipath)
+                       CMD_MULTIPATH=`parse_optbool "$*"`
+                       if [ "$CMD_MULTIPATH" = "1" -a ! -e /usr/include/libdevmapper.h ]
                        then
-                               echo 'Error: --multipath requires device-mapper to be installed'
-                               echo '           on the host;system; try "emerge device-mapper".'
+                               echo 'Error: --multipath requires LVM2 to be installed'
+                               echo '           on the host;system; try "emerge lvm2".'
                                exit 1
                        fi
-                       CMD_MULTIPATH=1
                        print_info 2 "CMD_MULTIPATH: ${CMD_MULTIPATH}"
                        ;;
                --bootloader=*)
                        CMD_BOOTLOADER=`parse_opt "$*"`
                        print_info 2 "CMD_BOOTLOADER: ${CMD_BOOTLOADER}"
                        ;;
-               --iscsi)
-                       CMD_ISCSI=1
+               --iscsi|--no-iscsi)
+                       CMD_ISCSI=`parse_optbool "$*"`
                        print_info 2 "CMD_ISCSI: ${CMD_ISCSI}"
                        ;;
                --loglevel=*)
@@ -317,41 +372,29 @@ parse_cmdline() {
                        CMD_MENUCONFIG=0
                        print_info 2 "CMD_MENUCONFIG: ${CMD_MENUCONFIG}"
                        ;;
-               --gconfig)
-                       CMD_GCONFIG=1
+               --gconfig|--no-gconfig)
+                       CMD_GCONFIG=`parse_optbool "$*"`
                        print_info 2 "CMD_GCONFIG: ${CMD_GCONFIG}"
                        ;;
-               --xconfig)
-                       CMD_XCONFIG=1
+               --xconfig|--no-xconfig)
+                       CMD_XCONFIG=`parse_optbool "$*"`
                        print_info 2 "CMD_XCONFIG: ${CMD_XCONFIG}"
                        ;;
-               --save-config)
-                       CMD_SAVE_CONFIG=1
+               --save-config|--no-save-config)
+                       CMD_SAVE_CONFIG=`parse_optbool "$*"`
                        print_info 2 "CMD_SAVE_CONFIG: ${CMD_SAVE_CONFIG}"
                        ;;
-               --no-save-config)
-                       CMD_SAVE_CONFIG=0
-                       print_info 2 "CMD_SAVE_CONFIG: ${CMD_SAVE_CONFIG}"
-                       ;;
-               --mrproper)
-                       CMD_MRPROPER=1
-                       print_info 2 "CMD_MRPROPER: ${CMD_MRPROPER}"
-                       ;;
-               --no-mrproper)
-                       CMD_MRPROPER=0
+               --mrproper|--no-mrproper)
+                       CMD_MRPROPER=`parse_optbool "$*"`
                        print_info 2 "CMD_MRPROPER: ${CMD_MRPROPER}"
                        ;;
-               --clean)
-                       CMD_CLEAN=1
-                       print_info 2 "CMD_CLEAN: ${CMD_CLEAN}"
-                       ;;
-               --no-clean)
-                       CMD_CLEAN=0
+               --clean|--no-clean)
+                       CMD_CLEAN=`parse_optbool "$*"`
                        print_info 2 "CMD_CLEAN: ${CMD_CLEAN}"
                        ;;
-               --oldconfig)
-                       CMD_CLEAN=0
-                       CMD_OLDCONFIG=1
+               --oldconfig|--no-oldconfig)
+                       CMD_OLDCONFIG=`parse_optbool "$*"`
+                       [ "$CMD_OLDCONFIG" = "1" ] && CMD_CLEAN=0
                        print_info 2 "CMD_CLEAN: ${CMD_CLEAN}"
                        print_info 2 "CMD_OLDCONFIG: ${CMD_OLDCONFIG}"
                        ;;
@@ -363,8 +406,8 @@ parse_cmdline() {
                        echo
                        print_warning 1 "Please use --splash, as --gensplash is deprecated."
                        ;;
-               --gensplash)
-                       CMD_SPLASH=1
+               --gensplash|--no-gensplash)
+                       CMD_SPLASH=`parse_optbool "$*"`
                        SPLASH_THEME='default'
                        print_info 2 "CMD_SPLASH: ${CMD_SPLASH}"
                        echo
@@ -376,15 +419,11 @@ parse_cmdline() {
                        print_info 2 "CMD_SPLASH: ${CMD_SPLASH}"
                        print_info 2 "SPLASH_THEME: ${SPLASH_THEME}"
                        ;;
-               --splash)
-                       CMD_SPLASH=1
+               --splash|--no-splash)
+                       CMD_SPLASH=`parse_optbool "$*"`
                        SPLASH_THEME='default'
                        print_info 2 "CMD_SPLASH: ${CMD_SPLASH}"
                        ;;
-               --no-splash)
-                       CMD_SPLASH=0
-                       print_info 2 "CMD_SPLASH: ${CMD_SPLASH}"
-                       ;;
                --gensplash-res=*)
                        SPLASH_RES=`parse_opt "$*"`
                        print_info 2 "SPLASH_RES: ${SPLASH_RES}"
@@ -395,28 +434,24 @@ parse_cmdline() {
                        SPLASH_RES=`parse_opt "$*"`
                        print_info 2 "SPLASH_RES: ${SPLASH_RES}"
                        ;;
-               --install)
-                       CMD_NOINSTALL=0
-                       print_info 2 "CMD_NOINSTALL: ${CMD_NOINSTALL}"
-                       ;;
-               --no-install)
-                       CMD_NOINSTALL=1
-                       print_info 2 "CMD_NOINSTALL: ${CMD_NOINSTALL}"
+               --install|--no-install)
+                       CMD_INSTALL=`parse_optbool "$*"`
+                       print_info 2 "CMD_INSTALL: ${CMD_INSTALL}"
                        ;;
-               --no-ramdisk-modules)
-                       CMD_NORAMDISKMODULES=1
-                       print_info 2 "CMD_NORAMDISKMODULES: ${CMD_NORAMDISKMODULES}"
+               --ramdisk-modules|--no-ramdisk-modules)
+                       CMD_RAMDISKMODULES=`parse_optbool "$*"`
+                       print_info 2 "CMD_RAMDISKMODULES: ${CMD_RAMDISKMODULES}"
                        ;;
-               --all-ramdisk-modules)
-                       CMD_ALLRAMDISKMODULES=1
+               --all-ramdisk-modules|--no-all-ramdisk-modules)
+                       CMD_ALLRAMDISKMODULES=`parse_optbool "$*"`
                        print_info 2 "CMD_ALLRAMDISKMODULES: ${CMD_ALLRAMDISKMODULES}"
                        ;;
                --callback=*)
                        CMD_CALLBACK=`parse_opt "$*"`
                        print_info 2 "CMD_CALLBACK: ${CMD_CALLBACK}/$*"
                        ;;
-               --static)
-                       CMD_STATIC=1
+               --static|--no-static)
+                       CMD_STATIC=`parse_optbool "$*"`
                        print_info 2 "CMD_STATIC: ${CMD_STATIC}"
                        ;;
                --tempdir=*)
@@ -424,22 +459,17 @@ parse_cmdline() {
                        TEMP=${TMPDIR}/$RANDOM.$RANDOM.$RANDOM.$$
                        print_info 2 "TMPDIR: ${TMPDIR}"
                        print_info 2 "TEMP: ${TEMP}"
-                       ;; 
-               --postclear)
-                       CMD_POSTCLEAR=1
+                       ;;
+               --postclear|--no-postclear)
+                       CMD_POSTCLEAR=`parse_optbool "$*"`
                        print_info 2 "CMD_POSTCLEAR: ${CMD_POSTCLEAR}"
-                       ;; 
+                       ;;
                --arch-override=*)
                        CMD_ARCHOVERRIDE=`parse_opt "$*"`
                        print_info 2 "CMD_ARCHOVERRIDE: ${CMD_ARCHOVERRIDE}"
                        ;;
-               --color)
-                       USECOLOR=1
-                       print_info 2 "USECOLOR: ${USECOLOR}"
-                       setColorVars
-                       ;;
-               --no-color)
-                       USECOLOR=0
+               --color|--no-color)
+                       USECOLOR=`parse_optbool "$*"`
                        print_info 2 "USECOLOR: ${USECOLOR}"
                        setColorVars
                        ;;
@@ -481,17 +511,13 @@ parse_cmdline() {
                        CMD_KERNNAME=`parse_opt "$*"`
                        print_info 2 "KERNNAME: ${CMD_KERNNAME}"
                        ;;
-               --symlink)
-                       CMD_SYMLINK=1
+               --symlink|--no-symlink)
+                       CMD_SYMLINK=`parse_optbool "$*"`
                        print_info 2 "CMD_SYMLINK: ${CMD_SYMLINK}"
                        ;;
-               --no-symlink)
-                       CMD_SYMLINK=0
-                       print_info 2 "CMD_SYMLINK: ${CMD_SYMLINK}"
-                       ;;
-               --no-kernel-sources)
-                       CMD_NO_KERNEL_SOURCES=1
-                       print_info 2 "CMD_NO_KERNEL_SOURCES: ${CMD_NO_KERNEL_SOURCES}"
+               --kernel-sources|--no-kernel-sources)
+                       CMD_KERNEL_SOURCES=`parse_optbool "$*"`
+                       print_info 2 "CMD_KERNEL_SOURCES: ${CMD_KERNEL_SOURCES}"
                        ;;
                --initramfs-overlay=*)
                        CMD_INITRAMFS_OVERLAY=`parse_opt "$*"`
@@ -512,20 +538,20 @@ parse_cmdline() {
 #                      ENABLE_PEGASOS_HACKS="yes"
 #                      print_info 2 "ENABLE_PEGASOS_HACKS: ${ENABLE_PEGASOS_HACKS}"
                        ;;
-               --disklabel)
-                       CMD_DISKLABEL=1
+               --disklabel|--no-disklabel)
+                       CMD_DISKLABEL=`parse_optbool "$*"`
                        print_info 2 "CMD_DISKLABEL: ${CMD_DISKLABEL}"
                        ;;
-               --luks)
-                       CMD_LUKS=1
+               --luks|--no-luks)
+                       CMD_LUKS=`parse_optbool "$*"`
                        print_info 2 "CMD_LUKS: ${CMD_LUKS}"
                        ;;
-               --gpg)
-                       CMD_GPG=1
+               --gpg|--no-gpg)
+                       CMD_GPG=`parse_optbool "$*"`
                        print_info 2 "CMD_GPG: ${CMD_GPG}"
                        ;;
-               --firmware)
-                       CMD_FIRMWARE=1
+               --firmware|--no-firmware)
+                       CMD_FIRMWARE=`parse_optbool "$*"`
                        print_info 2 "CMD_FIRMWARE: ${CMD_FIRMWARE}"
                        ;;
                --firmware-dir=*)
@@ -538,10 +564,18 @@ parse_cmdline() {
                        CMD_FIRMWARE=1
                        print_info 2 "CMD_FIRMWARE_FILES: ${CMD_FIRMWARE_FILES}"
                        ;;
-               --integrated-initramfs)
-                       CMD_INTEGRATED_INITRAMFS=1
+               --integrated-initramfs|--no-integrated-initramfs)
+                       CMD_INTEGRATED_INITRAMFS=`parse_optbool "$*"`
                        print_info 2 "CMD_INTEGRATED_INITRAMFS=${CMD_INTEGRATED_INITRAMFS}"
                        ;;
+               --compress-initramfs|--no-compress-initramfs|--compress-initrd|--no-compress-initrd)
+                       CMD_COMPRESS_INITRD=`parse_optbool "$*"`
+                       print_info 2 "CMD_COMPRESS_INITRD=${CMD_COMPRESS_INITRD}"
+                       ;;
+               --compress-initramfs-type=*|--compress-initrd-type=*)
+                       COMPRESS_INITRD_TYPE=`parse_opt "$*"`
+                       print_info 2 "CMD_COMPRESS_INITRD_TYPE: ${CMD_LINUXRC}"
+                       ;;
                --config=*)
                        print_info 2 "CMD_GK_CONFIG: `parse_opt "$*"`"
                        ;;
@@ -562,8 +596,8 @@ parse_cmdline() {
                        BUILD_KERNEL=1
                        BUILD_MODULES=0
                        BUILD_RAMDISK=1
-                       CMD_NORAMDISKMODULES=1
-                       print_info 2 "CMD_NORAMDISKMODULES: ${CMD_NORAMDISKMODULES}"
+                       CMD_RAMDISKMODULES=0
+                       print_info 2 "CMD_RAMDISKMODULES: ${CMD_RAMDISKMODULES}"
                        ;;
                --help)
                        longusage