X-Git-Url: http://git.tremily.us/?a=blobdiff_plain;f=genkernel;h=b31444069248f2b695bc9abb66e0d4658d168eb9;hb=4588b75c1eec719a59074caca407c20147313348;hp=77170ed815cfbca54de2de238f053dbf217d5383;hpb=676dd5a061428ed95090d1b8059aea2a2c8d8802;p=genkernel.git diff --git a/genkernel b/genkernel index 77170ed..b314440 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.40' # Set the default for TMPDIR. May be modified by genkernel.conf or the # --tempdir command line option. @@ -85,7 +86,7 @@ do done # Check if no action is specified... -if [ "${BUILD_KERNEL}" -eq '0' -a "${BUILD_RAMDISK}" -eq '0' ] +if [ "${BUILD_KERNEL}" = '0' -a "${BUILD_RAMDISK}" = '0' ] then usage exit 1 @@ -101,7 +102,8 @@ 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" +_MODULES_LOAD=${GK_SHARE}/arch/${ARCH}/modules_load +source "${_MODULES_LOAD}" || gen_die "Could not read ${_MODULES_LOAD}" # Merge modules_load from config for group_modules in ${!AMODULES_*}; do @@ -116,6 +118,7 @@ done # get the real arguments for usage... determine_real_args +determine_config_file set_kernel_arch @@ -128,26 +131,10 @@ check_distfiles dump_debugcache NORMAL=${BOLD} print_info 1 "Linux Kernel ${BOLD}${KV}${NORMAL} for ${BOLD}${ARCH}${NORMAL}..." - -if [ "${BUILD_RAMDISK}" -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 @@ -216,15 +203,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 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 @@ -233,12 +220,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 @@ -246,7 +233,7 @@ then fi fi -if ! isTrue "${CMD_NOINSTALL}" +if isTrue "${CMD_INSTALL}" then if [ "${KERNCACHE}" != "" -a "${KERNCACHE_IS_VALID}" != "0" ] then @@ -256,7 +243,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 @@ -270,13 +257,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 @@ -284,7 +271,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..." @@ -293,23 +280,26 @@ then print_info 1 "" 1 0 fi -if [ "${BUILD_RAMDISK}" -eq '1' ] +if [ "${BUILD_RAMDISK}" = '1' ] then - [ "${DISKLABEL}" -eq '1' ] && compile_e2fsprogs - - if [ "${BUSYBOX}" -eq '1' ] + if [ "${BUSYBOX}" = '1' ] then # Compile Busybox compile_busybox 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 @@ -322,14 +312,17 @@ 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_RAMDISK}" -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 ]' @@ -349,16 +342,33 @@ then fi fi -if [ "${BUILD_RAMDISK}" -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 available, it may be needed to' + print_warning 1 'add "rootfstype=ext3" or "rootfstype=ext4" to the list of boot parameters.' + fi + + unset CONFGREP fi [ "${BOOTRW}" != '' ] && mount -o remount,ro ${BOOTDIR} @@ -367,7 +377,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