X-Git-Url: http://git.tremily.us/?a=blobdiff_plain;f=genkernel;h=7584ad9beacc37083f868dabbc3f25b031ba1fe3;hb=0cc3cceb029f8b0162893afc32c415c278b6b342;hp=ea8ddc13b012e66b6213494c8f1c2db7e6cf366c;hpb=5153192ca2109768336dfa5f891ec6f73e29001a;p=genkernel.git diff --git a/genkernel b/genkernel index ea8ddc1..7584ad9 100755 --- a/genkernel +++ b/genkernel @@ -2,7 +2,7 @@ # $Id$ PATH="${PATH}:/sbin:/usr/sbin" -GK_V='3.4.32' +GK_V='3.4.40' # Set the default for TMPDIR. May be modified by genkernel.conf or the # --tempdir command line option. @@ -25,16 +25,19 @@ parse_opt() { # We don't know where our config is, so we check for it, and default to using # /etc/genkernel.conf if nobody has specified one. -case "$*" in - --config=*) - CMD_GK_CONFIG=`parse_opt "$*"` - ;; -esac + +# NOTE: We are look for --config=... in a way that doesn't modify $@ since we access that again, later +for (( i=1; i<=$# ; i=i+1 )); do + eval arg="\$$i" + [[ "${arg}" = --config=* ]] && CMD_GK_CONFIG=`parse_opt "${arg}"` +done # Pull in our configuration -source ${CMD_GK_CONFIG:-/etc/genkernel.conf} || small_die "Could not read /etc/genkernel.conf" +_GENKERNEL_CONF=${CMD_GK_CONFIG:-/etc/genkernel.conf} +source "${_GENKERNEL_CONF}" || small_die "Could not read ${_GENKERNEL_CONF}" # Start sourcing other scripts +source ${GK_SHARE}/defaults/software.sh || small_die "Could not read ${GK_SHARE}/defaults/software.sh" source ${GK_SHARE}/gen_funcs.sh || small_die "Could not read ${GK_SHARE}/gen_funcs.sh" source ${GK_SHARE}/gen_cmdline.sh || gen_die "Could not read ${GK_SHARE}/gen_cmdline.sh" source ${GK_SHARE}/gen_arch.sh || gen_die "Could not read ${GK_SHARE}/gen_arch.sh" @@ -101,8 +104,13 @@ echo get_official_arch # Read arch-specific config +print_info 1 "Using genkernel.conf from ${_GENKERNEL_CONF}" +print_info 1 "Sourcing arch-specific config.sh from ${ARCH_CONFIG} .." source ${ARCH_CONFIG} || gen_die "Could not read ${ARCH_CONFIG}" -source ${GK_SHARE}/arch/${ARCH}/modules_load || gen_die "Could not read ${GK_SHARE}/arch/${ARCH}/modules_load" +_MODULES_LOAD=${GK_SHARE}/arch/${ARCH}/modules_load +print_info 1 "Sourcing arch-specific modules_load from ${_MODULES_LOAD} .." +source "${_MODULES_LOAD}" || gen_die "Could not read ${_MODULES_LOAD}" +echo # Merge modules_load from config for group_modules in ${!AMODULES_*}; do @@ -117,6 +125,7 @@ done # get the real arguments for usage... determine_real_args +determine_config_file set_kernel_arch @@ -129,6 +138,7 @@ check_distfiles dump_debugcache NORMAL=${BOLD} print_info 1 "Linux Kernel ${BOLD}${KV}${NORMAL} for ${BOLD}${ARCH}${NORMAL}..." +print_info 1 ".. with config file ${KERNEL_CONFIG}" # Check BOOTDIR is mounted if ! isTrue ${CMD_INSTALL} @@ -352,10 +362,20 @@ then [ "${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 [ `grep 'CONFIG_EXT[0-9]_FS=' "${KERNEL_DIR}"/.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"' + + 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}