diff --git a/.gitignore b/.gitignore index 5d43ffd..dafa321 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1 @@ -/genkernel.8 -/genkernel-*.tar.bz2 -/ChangeLog +/*.tar.* diff --git a/Makefile b/Makefile index 8e31a06..24b6881 100644 --- a/Makefile +++ b/Makefile @@ -1,16 +1,13 @@ -PACKAGE_VERSION = `/bin/fgrep GK_V= genkernel | sed "s/.*GK_V='\([^']\+\)'/\1/"` -distdir = genkernel-$(PACKAGE_VERSION) +VERSION ?= +distdir = genkernel-next-$(VERSION) # Add off-Git/generated files here that need to be shipped with releases -EXTRA_DIST = genkernel.8 ChangeLog +EXTRA_DIST = genkernel.8 genkernel.8: doc/genkernel.8.txt doc/asciidoc.conf Makefile genkernel - a2x --conf-file=doc/asciidoc.conf --attribute="genkernelversion=$(PACKAGE_VERSION)" \ + a2x --conf-file=doc/asciidoc.conf --attribute="genkernelversion=$(VERSION)" \ --format=manpage -D . "$<" -ChangeLog: - git log >$@ - clean: rm -f $(EXTRA_DIST) @@ -19,12 +16,10 @@ check-git-repository: git diff --cached --quiet || { echo 'STOP, you have uncommitted changes in the index' ; false ; } dist: check-git-repository $(EXTRA_DIST) - rm -Rf "$(distdir)" "$(distdir)".tar "$(distdir)".tar.bz2 - mkdir "$(distdir)" - git ls-files -z | xargs -0 cp --no-dereference --parents --target-directory="$(distdir)" \ - $(EXTRA_DIST) - tar cf "$(distdir)".tar "$(distdir)" - bzip2 -9v "$(distdir)".tar - rm -Rf "$(distdir)" + test -n "$(VERSION)" || { echo "VERSION not set" >&2; exit 1; } + git archive --prefix=$(distdir)/ --format=tar "v$(VERSION)" > $(distdir).tar + rm -f $(distdir).tar.xz + xz $(distdir).tar + scp $(distdir).tar.xz lxnay@dev.gentoo.org:~/public_html/genkernel-next/ .PHONY: clean check-git-repository dist diff --git a/arch/x86/modules_load b/arch/x86/modules_load index 0ae6e2c..45533e5 100644 --- a/arch/x86/modules_load +++ b/arch/x86/modules_load @@ -28,7 +28,12 @@ MODULES_USB="ehci-pci ehci-hcd uhci usb-ohci hid usb-storage uhci-hcd ohci-hcd x MODULES_FS="ext2 ext3 ext4 btrfs reiserfs jfs nfs xfs zfs fuse" # Crypto -MODULES_CRYPTO="sha256_generic cbc aes_generic aes_586 aesni-intel xts" +MODULES_CRYPTO="sha1_generic sha256_generic sha512_generic cbc aes_generic aes-x86_64 xts" +# Backward compatibility with previous releases +MODULES_CRYPT="${MODULES_CRYPTO}" + +# Virtio support (KVM mainly) +MODULES_VIRTIO="virtio virtio_balloon virtio_console virtio_net virtio_blk virtio_pci virtio_ring" # DRM (Plymouth support) MODULES_PLYMOUTH="uvesafb" diff --git a/arch/x86_64/modules_load b/arch/x86_64/modules_load index 5ae8c0c..45533e5 100644 --- a/arch/x86_64/modules_load +++ b/arch/x86_64/modules_load @@ -28,7 +28,12 @@ MODULES_USB="ehci-pci ehci-hcd uhci usb-ohci hid usb-storage uhci-hcd ohci-hcd x MODULES_FS="ext2 ext3 ext4 btrfs reiserfs jfs nfs xfs zfs fuse" # Crypto -MODULES_CRYPTO="sha256_generic cbc aes_generic aes-x86_64 aesni-intel xts" +MODULES_CRYPTO="sha1_generic sha256_generic sha512_generic cbc aes_generic aes-x86_64 xts" +# Backward compatibility with previous releases +MODULES_CRYPT="${MODULES_CRYPTO}" + +# Virtio support (KVM mainly) +MODULES_VIRTIO="virtio virtio_balloon virtio_console virtio_net virtio_blk virtio_pci virtio_ring" # DRM (Plymouth support) MODULES_PLYMOUTH="uvesafb" diff --git a/defaults/initrd.defaults b/defaults/initrd.defaults index 627f4c4..a91e84b 100755 --- a/defaults/initrd.defaults +++ b/defaults/initrd.defaults @@ -77,5 +77,5 @@ DEFAULT_NFSOPTIONS="ro,nolock,rsize=1024,wsize=1024" # Only sections that are in by default or those that # are not module groups need to be defined here... -HWOPTS='keymap cache modules pata sata scsi usb firewire waitscan lvm dmraid mdadm fs net' -MY_HWOPTS='modules pata sata scsi usb firewire waitscan dmraid mdadm fs net iscsi crypto plymouth' +HWOPTS='keymap cache modules pata sata scsi usb firewire waitscan lvm dmraid mdadm fs net virtio' +MY_HWOPTS='modules pata sata scsi usb firewire waitscan dmraid mdadm fs net iscsi crypto plymouth virtio' diff --git a/defaults/initrd.scripts b/defaults/initrd.scripts index fd1e5fd..93a3463 100644 --- a/defaults/initrd.scripts +++ b/defaults/initrd.scripts @@ -1,4 +1,4 @@ -#!/bin/ash +#!/bin/sh . /etc/initrd.defaults @@ -169,7 +169,7 @@ findmediamount() { # $2 = recognition file # $3 = variable to have the device path # $4 = actual mount dir path (full path) - # args remaining are possible devices + # args remaining are possible devices local media=$1 recon=$2 vrbl=$3 mntdir=$4 shift 4 @@ -196,14 +196,14 @@ findmediamount() { if [ -b "${x}" ] then skip=0 - bsn=`basename "${x}"` + bsn=$(basename "${x}") # # If disk and it has at least one partition, skip. # We use /sys/block/${bsn}/${bsn}[0-9]* to make sure that we # don't skip device mapper devices. Even the craziest scenario # deserves a fair chance. # - for part in `ls /sys/block/${bsn}/${bsn}*[0-9]* 2>/dev/null` + for part in $(ls /sys/block/${bsn}/${bsn}*[0-9]* 2>/dev/null) do skip=1 break; @@ -282,7 +282,7 @@ bootstrapCD() { bootstrapKey() { # $1 = ROOT/SWAP - local KEYDEVS=`devicelist` + local KEYDEVS=$(devicelist) eval local keyloc='"${CRYPT_'${1}'_KEY}"' findmediamount "key" "${keyloc}" "CRYPT_${1}_KEYDEV" "/mnt/key" ${KEYDEVS} @@ -328,27 +328,26 @@ mount_sysfs() { findnfsmount() { if [ "${IP}" != '' ] || busybox udhcpc -n -T 15 -q then - [ -e /rootpath ] && NFSROOT=`cat /rootpath` + [ -e /rootpath ] && NFSROOT=$(cat /rootpath) if [ "${NFSROOT}" = '' ] then - # Obtain NFSIP - OPTIONS=`busybox dmesg | grep rootserver | sed -e "s/,/ /g"` + # Obtain NFSIP + OPTIONS=$(busybox dmesg | grep rootserver | sed -e "s/,/ /g") for OPTION in $OPTIONS do - if [ `echo $OPTION | sed -e "s/=/ /g" | cut -d " " -f 1` = 'rootserver' ] + if [ $(echo $OPTION | sed -e "s/=/ /g" | cut -d " " -f 1) = 'rootserver' ] then - NFSIP=`echo $OPTION | sed -e "s/=/ /g" | cut -d " " -f 2` - fi + NFSIP=$(echo $OPTION | sed -e "s/=/ /g" | cut -d " " -f 2) + fi done - # Obtain NFSPATH - OPTIONS=`busybox dmesg | grep rootpath | sed -e "s/,/ /g"` + OPTIONS=$(busybox dmesg | grep rootpath | sed -e "s/,/ /g") for OPTION in $OPTIONS do - if [ `echo $OPTION | sed -e "s/=/ /g" | cut -d " " -f 1` = 'rootpath' ] + if [ $(echo $OPTION | sed -e "s/=/ /g" | cut -d " " -f 1) = 'rootpath' ] then - NFSPATH=`echo $OPTION | sed -e "s/=/ /g" | cut -d " " -f 2` + NFSPATH=$(echo $OPTION | sed -e "s/=/ /g" | cut -d " " -f 2) fi done @@ -383,7 +382,7 @@ findnfsmount() { else bad_msg "NFS Mounting failed. Is the path corrent ?" fi - else + else good_msg "Attempting to mount NFS root on ${NFSROOT} with options ${NFSOPTIONS}" mount -t nfs -o ${NFSOPTIONS} ${NFSROOT} ${NEW_ROOT} if [ "$?" = '0' ] @@ -408,17 +407,17 @@ find_real_device() { local retval=1 if [ "${retval}" -ne 0 ]; then - REAL_DEVICE=`findfs "${DEVICE}" 2>/dev/null` + REAL_DEVICE=$(findfs "${DEVICE}" 2>/dev/null) retval=$? fi if [ "$retval" -ne 0 ]; then - REAL_DEVICE=`busybox findfs "${DEVICE}" 2>/dev/null` + REAL_DEVICE=$(busybox findfs "${DEVICE}" 2>/dev/null) retval=$? fi if [ "${retval}" -ne 0 ]; then - REAL_DEVICE=`blkid -o device -l -t "${DEVICE}"` + REAL_DEVICE=$(blkid -o device -l -t "${DEVICE}") retval=$? fi @@ -433,11 +432,9 @@ find_real_device() { check_loop() { if [ "${LOOP}" = '' -o ! -e "${CDROOT_PATH}/${LOOP}" ] then - bad_msg "Invalid loop location: ${LOOP}" bad_msg 'Please export LOOP with a valid location, or reboot and pass a proper loop=...' bad_msg 'kernel command line!' - run_shell fi } @@ -487,7 +484,7 @@ mount_devfs () { test_success() { retcode=$? - # If last command failed send error message and fall back to a shell + # If last command failed send error message and fall back to a shell if [ "$retcode" != '0' ] then error_string=$1 @@ -518,7 +515,7 @@ bad_msg() { splashcmd verbose echo -e "${BAD}!!${NORMAL}${BOLD} ${msg_string} ${NORMAL}" fi -} +} warn_msg() { msg_string=$1 @@ -645,7 +642,7 @@ prompt_user(){ bad_msg '- type "q" to skip...' echo -n "${2}(${oldvalue}) :: " read ${1} - case `eval echo '$'${1}` in + case $(eval echo '$'${1}) in 'q') eval ${1}'='${oldvalue} warn_msg "Skipping step, this will likely cause a boot failure." @@ -677,7 +674,7 @@ cmdline_hwopts() { MY_HWOPTS="${MY_HWOPTS} $x" elif [ "${y}" = "no${x}" ] then - MY_HWOPTS="`echo ${MY_HWOPTS} | sed -e \"s/${x}//g\" -`" + MY_HWOPTS="$(echo ${MY_HWOPTS} | sed -e \"s/${x}//g\" -)" fi if [ "$(echo ${y} | cut -b -7)" = "keymap=" ] then @@ -685,23 +682,22 @@ cmdline_hwopts() { fi done done - + # Shouldnt need to sort this as the following loop should figure out the # duplicates and strip them out - #MY_HWOPTS=`echo ${MY_HWOPTS}| sort` - + #MY_HWOPTS=$(echo ${MY_HWOPTS}| sort) for x in ${MY_HWOPTS} do FOUND=0 for y in ${TMP_HWOPTS} do if [ "${y}" = "${x}" ] - then + then continue 2 fi done TMP_HWOPTS="${TMP_HWOPTS} ${x}" - eval DO_`echo ${x} | sed 's/-//'`=1 + eval DO_$(echo ${x} | sed 's/-//')=1 done MY_HWOPTS=${TMP_HWOPTS} @@ -736,7 +732,7 @@ setup_keymap() { [ -f /lib/keymaps/keymapList ] && chooseKeymap [ "${DEVBIND}" = '1' ] && umount /dev - + if [ -e /etc/sysconfig/keyboard -a "${CDROOT}" = '1' ] then mkdir -p ${NEW_ROOT}/etc/sysconfig/ @@ -827,7 +823,7 @@ startVolumes() { mkdir -p /dev/mapper ln -sf /dev/device-mapper /dev/mapper/control fi - + if [ "${USE_MDADM}" = '1' ] then if [ -e '/sbin/mdadm' ] @@ -838,15 +834,15 @@ startVolumes() { fi fi - if [ "${USE_MULTIPATH_NORMAL}" = '1' ] - then - good_msg "Scanning for multipath devices" + if [ "${USE_MULTIPATH_NORMAL}" = '1' ] + then + good_msg "Scanning for multipath devices" /sbin/multipath -v 0 sleep 2 - good_msg "Activating multipath devices" - /sbin/dmsetup ls --target multipath --exec "/sbin/kpartx -a -v" + good_msg "Activating multipath devices" + /sbin/dmsetup ls --target multipath --exec "/sbin/kpartx -a -v" #for MULTIPATH_VOLUMES in /dev/mapper/*; do kpartx -a $MULTIPATH_VOLUMES; done - fi + fi if [ "${USE_DMRAID_NORMAL}" = '1' ] then @@ -899,7 +895,7 @@ startVolumes() { bad_msg "vgscan or vgchange not found: skipping LVM volume group activation!" fi fi - + if [ "${USE_ZFS}" = '1' ] then if [ -z "${ZFS_POOL}" ] @@ -1005,7 +1001,7 @@ startiscsi() { # $1 - root/swap openLUKS() { # please use 'tr' and this line, or remove it - # eval local TYPE=`uppercase $1` + # eval local TYPE=$(uppercase $1) case $1 in root) @@ -1058,10 +1054,10 @@ openLUKS() { cryptsetup_options="${cryptsetup_options} --allow-discards" fi - if [ -n "${LUKS_KEY}" ] + if [ -n "${LUKS_KEY}" ] then local REAL_LUKS_KEYDEV="${LUKS_KEYDEV}" - if [ ! -e "${mntkey}${LUKS_KEY}" ] + if [ ! -e "${mntkey}${LUKS_KEY}" ] then REAL_LUKS_KEYDEV=$(find_real_device "${LUKS_KEYDEV}") if [ -b "${REAL_LUKS_KEYDEV}" ] @@ -1155,9 +1151,7 @@ openLUKS() { } startLUKS() { - # if key is set but key device isn't, find it - [ -n "${CRYPT_ROOT_KEY}" ] && [ -z "${CRYPT_ROOT_KEYDEV}" ] \ && sleep 6 && bootstrapKey "ROOT" @@ -1238,10 +1232,10 @@ setup_md_device() { [ -z "$1" ] && device="${REAL_ROOT}" || device="$1" [ -z "${device}" ] && return # LiveCD - if [ `echo ${device}|sed -e 's#\(luks:\)\?\(/dev/md\)[[:digit:]]\+#\2#'` = "/dev/md" ] + if [ $(echo ${device}|sed -e 's#\(luks:\)\?\(/dev/md\)[[:digit:]]\+#\2#') = "/dev/md" ] then good_msg 'Detected real_root as a md device. Setting up the device node...' - MD_NUMBER=`echo ${device}|sed -e 's#\(luks:\)\?/dev/md\([[:digit:]]\+\)#\2#'` + MD_NUMBER=$(echo ${device}|sed -e 's#\(luks:\)\?/dev/md\([[:digit:]]\+\)#\2#') if [ ! -e /dev/md${MD_NUMBER} ] then mknod /dev/md${MD_NUMBER} b 9 ${MD_NUMBER} >/dev/null 2>&1 diff --git a/defaults/linuxrc b/defaults/linuxrc index 0d8f65f..0fc60ae 100644 --- a/defaults/linuxrc +++ b/defaults/linuxrc @@ -254,13 +254,6 @@ do aufs) USE_AUFS_NORMAL=1 ;; - *=*) - case "${x%%=*}" in - *.*) - echo "${x#*.}" >> "/etc/module_options/${x%%.*}.conf" - ;; - esac - ;; esac done @@ -539,9 +532,8 @@ do prompt_user "REAL_ROOT" "root block device" continue fi - ROOT_DEV="${REAL_ROOT#*=}" - if [ "${ROOT_DEV}" != 'ZFS' ] + if [ "${ROOT_DEV}" != 'ZFS' ] then if [ "$(zfs get type -o value -H ${ROOT_DEV})" = 'filesystem' ] then @@ -570,10 +562,8 @@ do REAL_ROOT=${i} ROOTFSTYPE=zfs break - fi - - done; - + fi + done else got_good_root=0 fi @@ -584,7 +574,6 @@ do prompt_user "REAL_ROOT" "root block device" got_good_root=0 fi - continue ;; esac @@ -866,7 +855,7 @@ for fs in $fslist; do dev=$(get_mount_device $fs) [ -z "${dev}" ] && continue # Resolve it like util-linux mount does - [ -L ${dev} ] && dev=`readlink ${dev}` + [ -L ${dev} ] && dev=$(readlink ${dev}) # In this case, it's probably part of the filesystem # and not a mountpoint [ -z "$dev" ] && continue diff --git a/defaults/modules_load b/defaults/modules_load index de2eeb8..3b1e67b 100644 --- a/defaults/modules_load +++ b/defaults/modules_load @@ -28,7 +28,12 @@ MODULES_USB="ehci-hcd uhci usb-ohci hid usb-storage uhci-hcd ohci-hcd xhci-hcd u MODULES_FS="ext2 ext3 ext4 btrfs reiserfs jfs nfs xfs zfs fuse" # Crypto -MODULES_CRYPTO="sha256_generic cbc aes_generic xts" +MODULES_CRYPTO="sha1_generic sha256_generic sha512_generic cbc aes_generic aes-x86_64 xts" +# Backward compatibility with previous releases +MODULES_CRYPT="${MODULES_CRYPTO}" + +# Virtio support (KVM mainly) +MODULES_VIRTIO="virtio virtio_balloon virtio_console virtio_net virtio_blk virtio_pci virtio_ring" # DRM (Plymouth support) MODULES_PLYMOUTH="uvesafb" diff --git a/gen_configkernel.sh b/gen_configkernel.sh index a69c713..fbfed3e 100755 --- a/gen_configkernel.sh +++ b/gen_configkernel.sh @@ -118,12 +118,12 @@ config_kernel() { fi # Multipath - if isTrue ${CMD_MULTIPATH} - then + if isTrue ${CMD_MULTIPATH} + then sed -i ${KERNEL_DIR}/.config -e 's/#\? \?CONFIG_BLK_DEV_DM is.*/CONFIG_BLK_DEV_DM=m/g' sed -i ${KERNEL_DIR}/.config -e 's/#\? \?CONFIG_DM_MULTIPATH is.*/CONFIG_DM_MULTIPATH=m/g' sed -i ${KERNEL_DIR}/.config -e 's/#\? \?CONFIG_DM_MULTIPATH_RDAC is.*/CONFIG_DM_MULTIPATH_RDAC=m/g' - fi + fi # Make sure dmraid modules are on if --dmraid if isTrue ${CMD_DMRAID} @@ -147,10 +147,10 @@ config_kernel() { then sed -i ${KERNEL_OUTPUTDIR}/.config -e 's/#\? \?CONFIG_FB_SPLASH is.*/CONFIG_FB_SPLASH=y/g' fi - + # VirtIO - if isTrue ${CMD_VIRTIO} - then + if isTrue ${CMD_VIRTIO} + then sed -i ${KERNEL_DIR}/.config -e 's/#\? \?CONFIG_PARAVIRT_GUEST.*/CONFIG_PARAVIRT_GUEST=y/g' sed -i ${KERNEL_DIR}/.config -e 's/#\? \?CONFIG_VIRTIO_PCI.*/CONFIG_VIRTIO_PCI=y/g' sed -i ${KERNEL_DIR}/.config -e 's/#\? \?CONFIG_VIRTIO_BALLOON.*/CONFIG_VIRTIO_BALLOON=y/g' @@ -159,5 +159,5 @@ config_kernel() { sed -i ${KERNEL_DIR}/.config -e 's/#\? \?CONFIG_SCSI_VIRTIO.*/CONFIG_SCSI_VIRTIO=y/g' sed -i ${KERNEL_DIR}/.config -e 's/#\? \?CONFIG_VIRTIO_NET.*/CONFIG_VIRTIO_NET=y/g' sed -i ${KERNEL_DIR}/.config -e 's/#\? \?CONFIG_VHOST_NET.*/CONFIG_VHOST_NET=y/g' - fi + fi } diff --git a/gen_initramfs.sh b/gen_initramfs.sh index 648a240..6d7ec8c 100755 --- a/gen_initramfs.sh +++ b/gen_initramfs.sh @@ -14,7 +14,7 @@ CPIO_ARGS="--quiet -o -H newc" # CC0 are compatible with the GNU GPL." # (from https://www.gnu.org/licenses/license-list.html#CC0) # -# Written by: +# Written by: # - Sebastian Pipping (error checking) # - Robin H. Johnson (complete rewrite) # - Richard Yao (original concept) @@ -201,7 +201,7 @@ append_multipath(){ copy_binaries "${TEMP}/initramfs-multipath-temp" \ /bin/mountpoint \ /sbin/{multipath,kpartx,mpath_prio_*,devmap_name,dmsetup} \ - /{lib,lib64}/{udev/scsi_id,multipath/*so} + /{lib,lib64}/{udev/scsi_id,multipath/*so} if [ -x /sbin/multipath ] then @@ -563,6 +563,7 @@ append_udev() { " udev_maybe_files=" /lib/udev/rules.d/99-systemd.rules + /etc/modprobe.d/blacklist.conf " is_maybe=0 for f in ${udev_files} -- ${udev_maybe_files}; do @@ -647,42 +648,7 @@ append_modules() { find . | cpio ${CPIO_ARGS} --append -F "${CPIO}" \ || gen_die "compressing modules cpio" cd "${TEMP}" - rm -r "${TEMP}/initramfs-modules-${KV}-temp/" -} - -append_modprobed() { - local TDIR="${TEMP}/initramfs-modprobe.d-temp" - if [ -d "${TDIR}" ] - then - rm -r "${TDIR}" - fi - - mkdir -p "${TDIR}/etc/module_options/" - - # Load module parameters - for dir in $(find "${MODPROBEDIR}"/*) - do - while read x - do - case "${x}" in - options*) - module_name="$(echo "$x" | cut -d ' ' -f 2)" - [ "${module_name}" != "$(echo)" ] || continue - module_options="$(echo "$x" | cut -d ' ' -f 3-)" - [ "${module_options}" != "$(echo)" ] || continue - echo "${module_options}" >> "${TDIR}/etc/module_options/${module_name}.conf" - ;; - esac - done < "${dir}" - done - - cd "${TDIR}" - log_future_cpio_content - find . -print | cpio ${CPIO_ARGS} --append -F "${CPIO}" \ - || gen_die "compressing modprobe.d cpio" - - cd "${TEMP}" - rm -rf "${TDIR}" > /dev/null + rm -r "${TEMP}/initramfs-modules-${KV}-temp/" } # check for static linked file with objdump @@ -832,8 +798,6 @@ create_initramfs() { append_data 'plymouth' "${PLYMOUTH}" - append_data 'modprobed' - if isTrue "${FIRMWARE}" && [ -n "${FIRMWARE_DIR}" ] then append_data 'firmware' @@ -940,7 +904,6 @@ create_initramfs() { gzip) compress_ext='.gz' compress_cmd="${cmd_gzip} -f -9" ;; lzop) compress_ext='.lzo' compress_cmd="${cmd_lzop} -f -9" ;; esac - if [ -n "${compression}" ]; then print_info 1 " >> Compressing cpio data (${compress_ext})..." ${compress_cmd} "${CPIO}" || gen_die "Compression (${compress_cmd}) failed" diff --git a/genkernel b/genkernel index 9cdb92b..fe14d7b 100755 --- a/genkernel +++ b/genkernel @@ -2,7 +2,7 @@ # $Id$ PATH="${PATH}:/sbin:/usr/sbin" -GK_V='3.4.45' +GK_V='9999' # Set the default for TMPDIR. May be modified by genkernel.conf or the # --tempdir command line option.