On Sun, 30 Jan 2011 10:24:46 -0500 [email protected] wrote: > The function now stores parameters into var kernel_parameters. The > new function does not set the kernel name (vmlinuz). This must now be > done in the bootloader configuration code. > --- > src/core/libs/lib-ui-interactive.sh | 135 +++++++++++++++++++--------------- > 1 files changed, 75 insertions(+), 60 deletions(-) > > diff --git a/src/core/libs/lib-ui-interactive.sh > b/src/core/libs/lib-ui-interactive.sh > index 829556a..359a016 100644 > --- a/src/core/libs/lib-ui-interactive.sh > +++ b/src/core/libs/lib-ui-interactive.sh > @@ -1045,79 +1045,30 @@ generate_grub_menulst() { > fi > fi > # Now that we have our grub-legacy root device (grubdev). > - # keep the file from being completely bogus > + # keep the file from being completely bogus > [ "$grubdev" = "DEVICE NOT FOUND" ] && grubdev= > if [ -z "$grubdev" ]; then > - notify "Your root boot device could not be autodetected by > setup. Ensure you adjust the 'root (hd0,0)' line in your GRUB config > accordingly." > - grubdev="(hd0,0)" > - fi > - # remove default entries by truncating file at our little tag > (#-*) > - sed -i -e '/#-\*/q' $grubmenu > + notify "Your root boot device could not be autodetected by > setup. Ensure you adjust the 'root (hd0,0)' line in your GRUB config > accordingly." > + grubdev="(hd0,0)" > + fi > > - # find label or uuid of the root partition > - case $PART_ACCESS in > - label) > - local _label="$(getlabel $_rootpart)" > - if [ -n "${_label}" ]; then > - _rootpart="/dev/disk/by-label/${_label}" > - fi > - ;; > - uuid) > - local _uuid="$(getuuid $_rootpart)" > - if [ -n "${_uuid}" ]; then > - _rootpart="/dev/disk/by-uuid/${_uuid}" > - fi > - ;; > - esac > + # remove default entries by truncating file at our little tag (#-*) > + sed -i -e '/#-\*/q' $grubmenu > > - # handle dmraid/mdadm,lvm,dm_crypt etc. replace entries where > needed automatically > - kernel="kernel $subdir/vmlinuz26 root=${_rootpart} ro" > - if get_anchestors_mount ';/;' > - then > - if echo "$ANSWER_DEVICES" | sed -n '1p' | grep -q > 'dm_crypt$' && echo "$ANSWER_DEVICES" | sed -n '2p' | grep -q 'raw$' > - then > - debug 'FS' 'Grub kernel line? Found / on > dm_crypt on raw' > - raw_device=`echo "$ANSWER_DEVICES" | sed -n > '2p' | cut -d ' ' -f1` > - crypt_device=`echo "$ANSWER_DEVICES" | sed -n > '1p' | cut -d ' ' -f1` > - kernel="kernel $subdir/vmlinuz26 > root=$crypt_device cryptdevice=$raw_device:`basename $crypt_device` ro" > - elif echo "$ANSWER_DEVICES" | sed -n '1p' | grep -q > 'lvm-lv$' && echo "$ANSWER_DEVICES" | sed -n '4p' | grep -q 'dm_crypt$' && > echo "$ANSWER_DEVICES" | sed -n '5p' | grep -q 'raw$' > - then > - debug 'FS' 'Grub kernel line? Found / on lvm on > dm_crypt on raw' > - lv_device=`echo "$ANSWER_DEVICES" | sed -n '1p' > | cut -d ' ' -f1` > - crypt_device=`echo "$ANSWER_DEVICES" | sed -n > '4p' | cut -d ' ' -f1` > - raw_device=`echo "$ANSWER_DEVICES" | sed -n > '5p' | cut -d ' ' -f1` > - kernel="kernel $subdir/vmlinuz26 > root=$lv_device cryptdevice=$raw_device:`basename $crypt_device` ro" > - elif echo "$ANSWER_DEVICES" | sed -n '1p' | grep -q > 'dm_crypt$' && echo "$ANSWER_DEVICES" | sed -n '2p' | grep -q 'lvm-lv$' && > echo "$ANSWER_DEVICES" | sed -n '5p' | grep -q 'raw$' > - then > - debug 'FS' 'Grub kernel line? Found / on > dm_crypt on lvm on raw' > - crypt_device=`echo "$ANSWER_DEVICES" | sed -n > '1p' | cut -d ' ' -f1` > - lv_device=`echo "$ANSWER_DEVICES" | sed -n '2p' > | cut -d ' ' -f1` > - kernel="kernel $subdir/vmlinuz26 > root=$crypt_device cryptdevice=$lv_device:`basename $crypt_device` ro" > - elif echo "$ANSWER_DEVICES" | sed -n '1p' | grep -q > 'raw$' > - then > - debug 'FS' 'Grub kernel line? Found / on raw' > - elif echo "$ANSWER_DEVICES" | sed -n '1p' | grep -q > 'lvm-lv$' && echo "$ANSWER_DEVICES" | sed -n '4p' | grep -q 'raw$' > - then > - debug 'FS' 'Grub kernel line? Found / on lvm on > raw' > - else > - debug 'FS' 'Grub kernel line? Could not figure > this one out' > - show_warning "Disk setup detection" "Are you > using some really fancy dm_crypt/lvm/softraid setup?\nI could not figure it > out, so the kernel line will be the default: you'll probably need to edit > it.\nPlease file a bug for this and supply all files from /tmp/aif/" > - fi > - else > - show_warning "Disk setup detection" "Could not find out > where your / is. Did you setup filesystems/blockdevices? manual/autoprepare? > If yes, please file a bug and tell us about this" > - fi > - cat >>$grubmenu <<EOF > + get_kernel_parameters || return $? > + > + cat >>$grubmenu <<EOF > > # (0) Arch Linux > title Arch Linux > root $grubdev > -$kernel > +kernel $subdir/vmlinuz26 $kernel_parameters > initrd $subdir/kernel26.img > > # (1) Arch Linux > title Arch Linux Fallback > root $grubdev > -$kernel > +kernel $subdir/vmlinuz26 $kernel_parameters > initrd $subdir/kernel26-fallback.img > > # (2) Windows > @@ -1179,6 +1130,70 @@ EOF > fi > } > > +get_kernel_parameters() > +{ > + get_device_with_mount '/' || return 1 > + local _rootpart="$ANSWER_DEVICE" > + > + case "$PART_ACCESS" in > + label) > + local _label="$(getlabel $_rootpart)" > + if [[ -n "${_label}" ]]; then why the [[ ]]? > + _rootpart="/dev/disk/by-label/${_label}" > + fi > + ;; > + uuid) > + local _uuid="$(getuuid $_rootpart)" > + if [[ -n "${_uuid}" ]]; then same here. > + _rootpart="/dev/disk/by-uuid/${_uuid}" > + fi > + ;; > + esac > + > + kernel_parameters="root=$_rootpart ro" > + > + # No seperate /boot partition > + if [[ -z "$bootdev" ]]; then > + subdir='/boot' > + fi
this branch seems useless in this function. the variable $subdir is not used here? > + > + if get_anchestors_mount ';/;' > + then > + if echo "$ANSWER_DEVICES" | sed -n '1p' | grep -q 'dm_crypt$' && echo > "$ANSWER_DEVICES" | sed -n '2p' | grep -q 'raw$' messed up indentation here.
