X-Git-Url: http://git.tremily.us/?a=blobdiff_plain;f=genkernel;h=8343cfe750248e25cfc78e7db749d558641a6f5f;hb=c57b73f5f8117f79d4b1bd5f66ed6bcd53a91b20;hp=29db849b9d2adf5e42e415f7c4d5317bc9104db4;hpb=1d170fb865a21645a05e1bb833e57f887c06fff2;p=genkernel.git diff --git a/genkernel b/genkernel index 29db849..8343cfe 100755 --- a/genkernel +++ b/genkernel @@ -1,7 +1,8 @@ #!/bin/bash +# $Id$ PATH="${PATH}:/sbin:/usr/sbin" -GK_V='3.4.10' +GK_V='3.4.36' # Set the default for TMPDIR. May be modified by genkernel.conf or the # --tempdir command line option. @@ -40,7 +41,6 @@ source ${GK_SHARE}/gen_arch.sh || gen_die "Could not read ${GK_SHARE}/gen_arch.s source ${GK_SHARE}/gen_determineargs.sh || gen_die "Could not read ${GK_SHARE}/gen_determineargs.sh" source ${GK_SHARE}/gen_compile.sh || gen_die "Could not read ${GK_SHARE}/gen_compile.sh" source ${GK_SHARE}/gen_configkernel.sh || gen_die "Could not read ${GK_SHARE}/gen_configkernel.sh" -source ${GK_SHARE}/gen_initrd.sh || gen_die "Could not read ${GK_SHARE}/gen_initrd.sh" source ${GK_SHARE}/gen_initramfs.sh || gen_die "Could not read ${GK_SHARE}/gen_initramfs.sh" source ${GK_SHARE}/gen_moddeps.sh || gen_die "Could not read ${GK_SHARE}/gen_moddeps.sh" source ${GK_SHARE}/gen_package.sh || gen_die "Could not read ${GK_SHARE}/gen_package.sh" @@ -74,7 +74,7 @@ cleanup(){ trap trap_cleanup SIGHUP SIGQUIT SIGINT SIGTERM SIGKILL BUILD_KERNEL=0 -BUILD_INITRD=0 +BUILD_RAMDISK=0 BUILD_MODULES=0 # Parse all command line options... @@ -86,7 +86,7 @@ do done # Check if no action is specified... -if [ "${BUILD_KERNEL}" -eq '0' -a "${BUILD_INITRD}" -eq '0' ] +if [ "${BUILD_KERNEL}" = '0' -a "${BUILD_RAMDISK}" = '0' ] then usage exit 1 @@ -102,7 +102,7 @@ get_official_arch # Read arch-specific config source ${ARCH_CONFIG} || gen_die "Could not read ${ARCH_CONFIG}" -source ${GK_SHARE}/${ARCH}/modules_load || gen_die "Could not read ${GK_SHARE}/${ARCH}/modules_load" +source ${GK_SHARE}/arch/${ARCH}/modules_load || gen_die "Could not read ${GK_SHARE}/arch/${ARCH}/modules_load" # Merge modules_load from config for group_modules in ${!AMODULES_*}; do @@ -117,6 +117,7 @@ done # get the real arguments for usage... determine_real_args +determine_config_file set_kernel_arch @@ -129,26 +130,10 @@ check_distfiles dump_debugcache NORMAL=${BOLD} print_info 1 "Linux Kernel ${BOLD}${KV}${NORMAL} for ${BOLD}${ARCH}${NORMAL}..." - -if [ "${BUILD_INITRD}" -ne '0' ] -then - if ! has_loop - then - modprobe loop 2>/dev/null - sleep 3 - if ! has_loop - then - print_error 1 'The build-host kernel does not appear to have loop device support.' - print_error 1 'Please load loop support before running genkernel!' - gen_die 'Load loop support!' - else - print_info 1 'loop: "loop" module loaded successfully...' - fi - fi -fi +print_info 1 ".. with config file ${KERNEL_CONFIG}" # Check BOOTDIR is mounted -if isTrue ${CMD_NOINSTALL} +if ! isTrue ${CMD_INSTALL} then isTrue ${MOUNTBOOT} && print_info 2 'Skipping automatic mount of boot' else @@ -217,18 +202,15 @@ then gen_kerncache_is_valid fi -if [ ${BUILD_KERNEL} -eq '1' -a "${KERNCACHE_IS_VALID}" == "0" ] +if [ ${BUILD_KERNEL} = '1' -a "${KERNCACHE_IS_VALID}" = '0' ] then # Configure kernel config_kernel - # Make deps - compile_dep - - # Make prepare [2.6] + # Make prepare if [ "${ARCH_HAVENOPREPARE}" = '' ] then - [ "${VER}" -gt '2' ] || [ "${VER}" -eq '2' -a "${PAT}" -ge '6' ] && compile_generic prepare kernel + compile_generic prepare kernel fi # KV may have changed due to the configuration @@ -237,12 +219,12 @@ then compile_kernel # Compile modules - if [ ${BUILD_MODULES} -eq '1' -a ${BUILD_STATIC} -eq '0' ] + if [ "${BUILD_MODULES}" = '1' -a "${BUILD_STATIC}" = '0' ] then compile_modules fi - if [ ${SAVE_CONFIG} -eq '1' ] + if [ "${SAVE_CONFIG}" = '1' ] then print_info 1 "Copying config for successful build to /etc/kernels/kernel-config-${ARCH}-${KV}" [ ! -e '/etc/kernels' ] && mkdir -p /etc/kernels @@ -250,7 +232,7 @@ then fi fi -if ! isTrue "${CMD_NOINSTALL}" +if isTrue "${CMD_INSTALL}" then if [ "${KERNCACHE}" != "" -a "${KERNCACHE_IS_VALID}" != "0" ] then @@ -260,7 +242,7 @@ fi if [ "${KERNCACHE}" != "" -a "${KERNCACHE_IS_VALID}" != "0" ] then - [ ${BUILD_STATIC} -eq '0' ] && gen_kerncache_extract_modules + [ "${BUILD_STATIC}" = '0' ] && gen_kerncache_extract_modules gen_kerncache_extract_config fi @@ -274,13 +256,13 @@ then CALLBACK_COUNT=0 trap "CALLBACK_ESCAPE=1" TERM KILL INT QUIT ABRT - while [[ ${CALLBACK_ESCAPE} -eq '0' && ${CALLBACK_COUNT} -lt 5 ]] + while [[ "${CALLBACK_ESCAPE}" = '0' && ${CALLBACK_COUNT} -lt 5 ]] do sleep 1; echo -n '.'; let CALLBACK_COUNT=${CALLBACK_COUNT}+1 done - if [ "${CALLBACK_ESCAPE}" -eq '0' ] + if [ "${CALLBACK_ESCAPE}" = '0' ] then echo echo @@ -288,7 +270,7 @@ then CMD_STATUS="${PIPESTATUS[0]}" echo print_info 1 "<<< Callback exit status: ${CMD_STATUS}" - [ "${CMD_STATUS}" -ne 0 ] && gen_die '--callback failed!' + [ "${CMD_STATUS}" != '0' ] && gen_die '--callback failed!' else echo print_info 1 ">>> Callback cancelled..." @@ -297,30 +279,26 @@ then print_info 1 "" 1 0 fi -if [ "${BUILD_INITRD}" -eq '1' ] +if [ "${BUILD_RAMDISK}" = '1' ] then - [ "${DISKLABEL}" -eq '1' ] && compile_e2fsprogs - - if [ "${KERN_24}" != '1' ] + if [ "${BUSYBOX}" = '1' ] then - if [ "${BUSYBOX}" -eq '1' ] - then # Compile Busybox compile_busybox - fi - - # Compile initramfs - create_initramfs - else - # Create initrd - compile_busybox - create_initrd fi + + if isTrue "${UNIONFS}" + then + compile_unionfs_fuse + fi + + # Compile initramfs + create_initramfs else print_info 1 'initrd: Not building since only the kernel was requested...' fi -if isTrue "${INTEGRATED_INITRAMFS}" #|| [ ${BUILD_KERNEL} -eq '1' -a "${KERNCACHE_IS_VALID}" == "0" ] +if isTrue "${INTEGRATED_INITRAMFS}" #|| [ "${BUILD_KERNEL}" = '1' -a "${KERNCACHE_IS_VALID}" == "0" ] then # We build the kernel a second time to include the initramfs compile_kernel @@ -333,22 +311,24 @@ fi # Clean up... [ -n "${CTEMP}" ] && rm -rf "${TEMP}" -if [ "${BUILD_KERNEL}" -eq '1' ] +if [ "${BUILD_KERNEL}" = '1' ] then - set_bootloader + if isTrue "${CMD_INSTALL}" + then + set_bootloader + fi print_info 1 '' print_info 1 "Kernel compiled successfully!" print_info 1 '' print_info 1 'Required Kernel Parameters:' - if [ "${BUILD_INITRD}" -eq '0' ] + if [ "${BUILD_RAMDISK}" = '0' ] then print_info 1 ' root=/dev/$ROOT' print_info 1 ' [ And "vga=0x317 splash=verbose" if you use a framebuffer ]' print_info 1 '' print_info 1 ' Where $ROOT is the device node for your root partition as the' print_info 1 ' one specified in /etc/fstab' - elif [ "${KERN_24}" != '1' ] - then + else print_info 1 ' real_root=/dev/$ROOT' print_info 1 '' print_info 1 ' Where $ROOT is the device node for your root partition as the' @@ -357,31 +337,37 @@ then print_info 1 "If you require Genkernel's hardware detection features; you MUST" print_info 1 'tell your bootloader to use the provided INITRAMFS file. Otherwise;' print_info 1 'substitute the root argument for the real_root argument if you are' - print_info 1 'not planning to use the initrd...' - else - print_info 1 ' root=/dev/ram0 real_root=/dev/$ROOT init=/linuxrc' - [ "${INITRD_SIZE}" -ge 4096 ] && print_info 1 " ramdisk_size=${INITRD_SIZE}" - print_info 1 '' - print_info 1 ' Where $ROOT is the device node for your root partition as the' - print_info 1 ' one specified in /etc/fstab' - print_info 1 '' - print_info 1 "If you require Genkernel's hardware detection features; you MUST" - print_info 1 'tell your bootloader to use the provided INITRD file. Otherwise;' - print_info 1 'substitute the root argument for the real_root argument if you are' - print_info 1 'not planning to use the initrd...' + print_info 1 'not planning to use the initramfs...' fi fi -if [ "${BUILD_INITRD}" -eq '1' ] +if [ "${BUILD_RAMDISK}" = '1' ] then echo - print_info 1 'WARNING... WARNING... WARNING...' - print_info 1 'Additional kernel cmdline arguments that *may* be required to boot properly...' - [ "${SPLASH}" -eq '1' ] && print_info 1 "add \"vga=791 splash=silent,theme:${SPLASH_THEME} console=tty1 quiet\" if you use a splash framebuffer ]" - [ "${LVM}" -eq '1' ] && print_info 1 'add "dolvm" for lvm support' - [ "${EVMS}" -eq '1' ] && print_info 1 'add "doevms" for evms support' - [ "${DMRAID}" -eq '1' ] && print_info 1 'add "dodmraid" for dmraid support' - [ "${DMRAID}" -eq '1' ] && print_info 1 ' or "dodmraid="' + print_warning 1 'WARNING... WARNING... WARNING...' + print_warning 1 'Additional kernel cmdline arguments that *may* be required to boot properly...' + [ "${SPLASH}" = '1' ] && print_warning 1 "add \"vga=791 splash=silent,theme:${SPLASH_THEME} console=tty1 quiet\" if you use a splash framebuffer ]" + [ "${LVM}" = '1' ] && print_warning 1 'add "dolvm" for lvm support' + [ "${DMRAID}" = '1' ] && print_warning 1 'add "dodmraid" for dmraid support' + [ "${MDADM}" = '1' ] && print_warning 1 'add "domdadm" for RAID support' + [ "${DMRAID}" = '1' ] && print_warning 1 ' or "dodmraid="' + [ "${ZFS}" = '1' ] && print_warning 1 'add "dozfs" for ZFS volume management support' + [ "${ZFS}" = '1' ] && print_warning 1 'add either "real_root=ZFS" (bootfs autodetection) or "real_root=ZFS=" to boot from a ZFS dataset' + [ "${ISCSI}" = '1' ] && print_warning 1 'add at least "iscsi_initiatorname= iscsi_target= and iscsi_address=" for iscsi support' + + if [[ "$(file --brief --mime-type "${KERNEL_CONFIG}")" == application/x-gzip ]]; then + # Support --kernel-config=/proc/config.gz, mainly + CONFGREP=zgrep + else + CONFGREP=grep + fi + + if [ `${CONFGREP} 'CONFIG_EXT[0-9]_FS=' "${KERNEL_CONFIG}" | wc -l` -ge 2 ]; then + print_warning 1 'With support for several ext* filesystems around it may be needed to' + print_warning 1 'add "rootfstype=ext3" or "rootfstype=ext4"' + fi + + unset CONFGREP fi [ "${BOOTRW}" != '' ] && mount -o remount,ro ${BOOTDIR} @@ -390,7 +376,7 @@ echo print_info 1 'Do NOT report kernel bugs as genkernel bugs unless your bug' print_info 1 'is about the default genkernel configuration...' print_info 1 '' -print_info 1 'Make sure you have the latest genkernel before reporting bugs.' +print_info 1 'Make sure you have the latest ~arch genkernel before reporting bugs.' #Final Cleanup cleanup