From 57344fc7a3d918314fab9626ec27976e55af6bab Mon Sep 17 00:00:00 2001 From: Gerhard Brauer Date: Wed, 29 Jul 2009 20:13:26 +0200 Subject: Several grub related fixes Attached the extended patch, this replaced the one from my earlier mail. * Fixed grub device mapping in automatic procedure * Fixed bootdevice handling either if we use a seperate /boot or not in automatic procedure. * Added a hint to Luks passphrasing during process_filesystem The test i have made: a) automatic-lvm-dmcrypt-install-sda: menu.lst ok, HOOKS ok, Boot is fine.... b) generic-install-sda: menu.lst ok, HOOKs ok, boot ok c) generic-install-sda (but without seperate /boot partiton, sda1=swap sda2=/) menu.lst ok, HOOKs ok, boot ok d) fancy-install-on-sda Fails on creating all filesystems/lvm-partitions here, but this is because my Virtualbox VM has a too small disk http://users.archlinux.de/~gerbra/tmp/fancy-install-sda.png http://users.archlinux.de/~gerbra/tmp/fancy-install-sda-tty7.png With this changes i build now a new local iso here and test again a interactive install (no lvm,no crypt, only a normal install) to see if we hurt something in interactive... But i guess not.... Gerhard --- src/core/libs/lib-blockdevices-filesystems.sh | 2 ++ src/core/libs/lib-ui-interactive.sh | 13 +++++++------ src/core/procedures/automatic | 5 +++++ 3 files changed, 14 insertions(+), 6 deletions(-) (limited to 'src') diff --git a/src/core/libs/lib-blockdevices-filesystems.sh b/src/core/libs/lib-blockdevices-filesystems.sh index a4bc534..e8f358c 100644 --- a/src/core/libs/lib-blockdevices-filesystems.sh +++ b/src/core/libs/lib-blockdevices-filesystems.sh @@ -721,7 +721,9 @@ process_filesystem () swap) mkswap $part $opts >$LOG 2>&1; ret=$? ;; dm_crypt) [ -z "$fs_params" ] && fs_params='-c aes-xts-plain -y -s 512'; fs_params=${fs_params//_/ } + infofy "Please enter your passphrase to encrypt the device (with confirmation)" cryptsetup $fs_params $opts luksFormat -q $part >$LOG 2>&1 < /dev/tty ; ret=$? #hack to give cryptsetup the approriate stdin. keep in mind we're in a loop (see process_filesystems where something else is on stdin) + infofy "Please enter your passphrase to unlock the device" cryptsetup luksOpen $part $fs_label >$LOG 2>&1 < /dev/tty; ret=$? || ( show_warning 'cryptsetup' "Error luksOpening $part on /dev/mapper/$fs_label" ) ;; lvm-pv) pvcreate $fs_opts $part >$LOG 2>&1; ret=$? ;; lvm-vg) # $fs_params: ':'-separated list of PV's diff --git a/src/core/libs/lib-ui-interactive.sh b/src/core/libs/lib-ui-interactive.sh index d1d7a21..9283a19 100644 --- a/src/core/libs/lib-ui-interactive.sh +++ b/src/core/libs/lib-ui-interactive.sh @@ -1004,12 +1004,7 @@ generate_grub_menulst() { local grubmenu="$var_TARGET_DIR/boot/grub/menu.lst" get_device_with_mount '/' || return 1 local _rootpart=$ANSWER_DEVICE - local _uuid="$(getuuid ${_rootpart})" - # attempt to use a UUID if the root device has one - if [ -n "${_uuid}" ]; then - _rootpart="/dev/disk/by-uuid/${_uuid}" - fi - + # Determine what is the device that acts as grub's root # This is the blockdevice where /boot lives, normally a seperate partition. # @@ -1063,6 +1058,12 @@ generate_grub_menulst() { # remove default entries by truncating file at our little tag (#-*) sed -i -e '/#-\*/q' $grubmenu + # attempt to use a UUID if the root device has one + local _uuid="$(getuuid ${_rootpart})" + if [ -n "${_uuid}" ]; then + _rootpart="/dev/disk/by-uuid/${_uuid}" + fi + # handle dmraid/mdadm,lvm,dm_crypt etc. replace entries where needed automatically debug 'FS' 'Grub kernel line? Assuming "/ on raw" or "/ on lvm on raw" as default' kernel="kernel $subdir/vmlinuz26 root=${_rootpart} ro" diff --git a/src/core/procedures/automatic b/src/core/procedures/automatic index 80aecfc..1fae06d 100644 --- a/src/core/procedures/automatic +++ b/src/core/procedures/automatic @@ -132,6 +132,11 @@ worker_configure_system () { worker_install_bootloader () { + get_grub_map grub-install $var_GRUB_DEVICE --root-directory=/mnt + # check if we have a seperate bootdev (/boot) + # ToDo: This is double-work, find a better place! + # See comment in generate_grub_menulst and interactive_grub + bootdev=$(mount | grep $var_TARGET_DIR/boot | cut -d' ' -f 1) generate_grub_menulst } -- cgit v1.2.3-54-g00ecf