diff options
author | Gerhard Brauer <gerbra@archlinux.de> | 2009-07-29 20:13:26 +0200 |
---|---|---|
committer | Dieter Plaetinck <dieter@plaetinck.be> | 2009-07-29 20:16:48 +0200 |
commit | 57344fc7a3d918314fab9626ec27976e55af6bab (patch) | |
tree | 0cce406256608cdb6f106f7ddd5087ebd09f750f | |
parent | 6abf8e0fddc7b47ae4a709a67ebdef8e10a11275 (diff) |
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
-rw-r--r-- | src/core/libs/lib-blockdevices-filesystems.sh | 2 | ||||
-rw-r--r-- | src/core/libs/lib-ui-interactive.sh | 13 | ||||
-rw-r--r-- | src/core/procedures/automatic | 5 |
3 files changed, 14 insertions, 6 deletions
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 } |