X-Git-Url: http://git.grml.org/?a=blobdiff_plain;f=chroot-script;h=0eb0d4b21b46cf577895e1aee3063f28887a59a2;hb=refs%2Fheads%2Fmika%2Fvm-kernel;hp=a5f92c402c847e97b6f182a7fd2af9a071c0d8b3;hpb=51a0e665e865691e0e4131720336da10ff5fc083;p=grml-debootstrap.git diff --git a/chroot-script b/chroot-script index a5f92c4..0eb0d4b 100755 --- a/chroot-script +++ b/chroot-script @@ -75,8 +75,8 @@ askpass() { # define chroot mirror {{{ chrootmirror() { - if [ -n "$KEEP_SRC_LIST" ] ; then - echo "KEEP_SRC_LIST has been set, skipping chrootmirror stage." + if [ "$KEEP_SRC_LIST" = "yes" ] ; then + echo "KEEP_SRC_LIST has been enabled, skipping chrootmirror stage." return fi @@ -129,8 +129,8 @@ chrootmirror() { # remove local chroot mirror {{{ remove_chrootmirror() { - if [ -n "$KEEP_SRC_LIST" ] ; then - echo "KEEP_SRC_LIST has been set, skipping remove_chrootmirror stage." + if [ "$KEEP_SRC_LIST" = "yes" ] ; then + echo "KEEP_SRC_LIST has been enabled, skipping remove_chrootmirror stage." return fi @@ -350,19 +350,38 @@ kernel() { fi $APTUPDATE - KVER=$(get_kernel_version) - if [ -n "$KVER" ] ; then - # note: install busybox to be able to debug initramfs - KERNELPACKAGES="linux-image-$KVER linux-headers-$KVER busybox firmware-linux-free" - # only add firmware-linux if we have non-free as a component - if expr "$COMPONENTS" : '.*non-free' >/dev/null ; then - KERNELPACKAGES="$KERNELPACKAGES firmware-linux" - fi - # shellcheck disable=SC2086 - DEBIAN_FRONTEND=$DEBIAN_FRONTEND $APTINSTALL $KERNELPACKAGES - else - echo "Warning: Could not find a kernel for your system. Your system won't be able to boot itself!" + + local kernel_version + kernel_version=$(get_kernel_version) + + if [ -z "${kernel_version}" ] ; then + echo "Error: could not find a kernel for your system. Your system won't be able to boot itself!" >&2 + exit 1 + fi + + # defaults (note: install busybox to be able to debug initramfs) + KERNELPACKAGES="linux-image-${kernel_version} linux-headers-${kernel_version} busybox firmware-linux-free" + + # only add firmware-linux if we have non-free as a component + if expr "$COMPONENTS" : '.*non-free' >/dev/null ; then + KERNELPACKAGES="$KERNELPACKAGES firmware-linux" fi + + # when installing into a VM using buster or newer, install only + # linux-image-cloud-amd64 (and no headers and firmware packages) + if [ -n "${VMSIZE}" ] && [ "${ARCH:-}" = "amd64" ] ; then + case "${RELEASE}" in + lenny|squeeze|wheezy|jessie|stretch) + ;; + *) + echo "Note: installing into VM, choosing linux-image-cloud-amd64 kernel package" + KERNELPACKAGES="linux-image-cloud-amd64" + ;; + esac + fi + + # shellcheck disable=SC2086 + DEBIAN_FRONTEND=$DEBIAN_FRONTEND $APTINSTALL $KERNELPACKAGES } # }}} @@ -481,7 +500,15 @@ createfstab(){ EOF if [ -n "$TARGET_UUID" ] ; then - echo "/dev/disk/by-uuid/${TARGET_UUID} / auto defaults,errors=remount-ro 0 1" >> /etc/fstab + local rootfs_mount_options=",errors=remount-ro" + case "${FILESYSTEM}" in + f2fs) + # errors=remount-ro is unsupported, see https://github.com/grml/grml-debootstrap/issues/163 + rootfs_mount_options="" + ;; + esac + + echo "/dev/disk/by-uuid/${TARGET_UUID} / auto defaults${rootfs_mount_options} 0 1" >> /etc/fstab else echo "Warning: couldn't identify target UUID for rootfs, your /etc/fstab might be incomplete." fi @@ -587,8 +614,18 @@ efi_setup() { echo "Mounting $EFI on /boot/efi" mount "$EFI" /boot/efi || return 1 + # if efivarfs kernel module is loaded, but efivars isn't, + # then we need to mount efivarfs for efibootmgr usage + if ! ls /sys/firmware/efi/efivars/* &>/dev/null ; then + echo "Mounting efivarfs on /sys/firmware/efi/efivars" + mount -t efivarfs efivarfs /sys/firmware/efi/efivars + fi + echo "Invoking efibootmgr" efibootmgr || return 1 + + umount /sys/firmware/efi/efivars &>/dev/null || true + } # grub configuration/installation {{{