X-Git-Url: http://git.tremily.us/?a=blobdiff_plain;f=genkernel;h=13914a169dbbd74bbad1843f59eee177e627f0c0;hb=6a387ce36cdd101afa04f867da849e11bdd86f15;hp=552205b7318173a690e6860e54d26ff4f6e9652d;hpb=f6f97cb650e9b1d0d1e7674274743a2f0a7ff916;p=genkernel.git diff --git a/genkernel b/genkernel index 552205b..13914a1 100755 --- a/genkernel +++ b/genkernel @@ -1,7 +1,8 @@ #!/bin/bash +# $Id$ PATH="${PATH}:/sbin:/usr/sbin" -GK_V='3.4.10_pre5' +GK_V='3.4.33.1' # 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 @@ -124,30 +124,14 @@ set_kernel_arch setup_cache_dir +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 - # 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,30 +200,29 @@ 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 get_KV + 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 @@ -247,7 +230,7 @@ then fi fi -if ! isTrue "${CMD_NOINSTALL}" +if isTrue "${CMD_INSTALL}" then if [ "${KERNCACHE}" != "" -a "${KERNCACHE_IS_VALID}" != "0" ] then @@ -257,7 +240,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 @@ -271,25 +254,21 @@ 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 "DEBUG: callback: ARCH=${ARCH}" - ORIG_ARCH=${ARCH} - unset ARCH echo eval ${CMD_CALLBACK} | tee -a ${LOGFILE} CMD_STATUS="${PIPESTATUS[0]}" echo print_info 1 "<<< Callback exit status: ${CMD_STATUS}" - export ARCH=${ORIG_ARCH} - [ "${CMD_STATUS}" -ne 0 ] && gen_die '--callback failed!' + [ "${CMD_STATUS}" != '0' ] && gen_die '--callback failed!' else echo print_info 1 ">>> Callback cancelled..." @@ -298,60 +277,56 @@ 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 - - # We skipped the kernel build and kerncache generation - # So do it here - [ "${KERNCACHE}" != "" ] && gen_kerncache fi +[ "${KERNCACHE}" != "" ] && gen_kerncache [ "${MINKERNPACKAGE}" != '' ] && gen_minkernpackage [ "${MODULESPACKAGE}" != '' ] && gen_modulespackage # 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' @@ -360,31 +335,27 @@ 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 [ `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"' + fi fi [ "${BOOTRW}" != '' ] && mount -o remount,ro ${BOOTDIR} @@ -393,7 +364,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