X-Git-Url: http://git.tremily.us/?a=blobdiff_plain;f=genkernel;h=98f24d9a097cd006cd1a6b91577392259b90a2e2;hb=47ac46c0c64ac7d13c3c1e460891ae52352e4eea;hp=e98e5e2e148e455bd8a1e8042c1864677ee5a0b9;hpb=e53d1931d0d2b8592b04f31143ce0886e0cb190b;p=genkernel.git diff --git a/genkernel b/genkernel index e98e5e2..98f24d9 100755 --- a/genkernel +++ b/genkernel @@ -2,7 +2,7 @@ # $Id$ PATH="${PATH}:/sbin:/usr/sbin" -GK_V='3.4.23' +GK_V='3.4.40' # Set the default for TMPDIR. May be modified by genkernel.conf or the # --tempdir command line option. @@ -25,14 +25,16 @@ 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}/gen_funcs.sh || small_die "Could not read ${GK_SHARE}/gen_funcs.sh" @@ -101,8 +103,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 +124,7 @@ done # get the real arguments for usage... determine_real_args +determine_config_file set_kernel_arch @@ -129,6 +137,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} @@ -279,8 +288,6 @@ fi if [ "${BUILD_RAMDISK}" = '1' ] then - [ "${DISKLABEL}" = '1' ] && compile_e2fsprogs - if [ "${BUSYBOX}" = '1' ] then # Compile Busybox @@ -351,11 +358,23 @@ then [ "${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 [ `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}