** Description changed: Binary package hint: grub-installer 1) LiveCD Ubuntu 9.04 desktop x64 booted on my system. 2) I used the grub-install script with the version from the above live cd. 3)&4) My goal was to correct the grub boot-loader installed on the MBR of my HDD on which I have a partition with Ubuntu 8.04 LTS, after that partition got another number because I modified some partitions. Since I wanted the version of grub from Ubuntu 9.04 instead of that from Ubuntu 8.04, I run the grub-install script without chroot-ing first, and such that to use the old config files from directory /boot/grub from the Ubuntu8.04 partition (which became /dev/sda2), namely I run the command: ubuntu> sudo grub-install --recheck --root- - directory=/media/Wdc2_Ubuntu-8.04 --debug /dev/sde2 + directory=/media/Wdc2_Ubuntu-8.04 --debug /dev/sda and here is the lines of errors during the execution of this command: ........ + sync + grub-probe -t fs /media/Wdc2_Ubuntu-8.04/boot/grub grub-probe: error: Cannot open `/boot/grub/device.map' + [ = xfs ] [: 1: =: unexpected operator + count=5 ......... - which are cause by the if instruction from lines 489-494 from th script: - 489 # On XFS, sync() is not enough. - 490 if [ `grub-probe -t fs ${grubdir}` = "xfs" ] ; then - 491 xfs_freeze -f ${grubdir} && xfs_freeze -u ${grubdir} - 492 # We don't have set -e. If xfs_freeze failed, it's worth trying anyway, - 493 # maybe we're lucky. - 494 fi + which are cause by the if instruction from lines 489-494 from the script: + 489 # On XFS, sync() is not enough. + 490 if [ `grub-probe -t fs ${grubdir}` = "xfs" ] ; then + 491 xfs_freeze -f ${grubdir} && xfs_freeze -u ${grubdir} + 492 # We don't have set -e. If xfs_freeze failed, it's worth trying anyway, + 493 # maybe we're lucky. + 494 fi - The second error is specific to test command and binary operator = when the operands happen to be null string, and can be - easily corrected by the usual trick of adding some character on both sides of the test: + The second error is specific to test command and binary operator = when the operands happen to be null string, and can be easily corrected by the usual trick of adding some character on both sides of the test: replace [ `grub-probe -t fs ${grubdir}` = "xfs" ] by [ x`grub-probe -t fs ${grubdir}` = x"xfs" ] This error manifested because of the first error given by the execution of grub-probe, in this case: grub-probe -t fs ${grubdir} give the error: Cannot open `/boot/grub/device.map' and as such produces a null string in the if test. This last error occured because it tried to access the file /boot/grub/device.map from the live CD, instead that from the /media/Wdc2_Ubuntu-8/boot/grub/device.map, i.e. that from the partition where I wanted to install grub config files without chroot-ing first into it. So I think that maybe the script should use the device.map from under the directory specified as --root-directory= to the call of grub-install script. This can be achieved by using the option -m or -device-map=FILE for the command grub-probe, namely I think that the line 490 from the grub-install script should be replace by: - if [ X`grub-probe -t fs --device-map=$device_map ${grubdir}` = X"xfs" ] ; then - So, as to conclude, I think that the call to grub-probe from the grub-install script should take into consideration the file - specified by the variable $device_map and not the default /boot/grub/device.map, as is doing through the other grub commands in the script. + if [ X`grub-probe -t fs --device-map=$device_map ${grubdir}` = + X"xfs" ] ; then - If it is not corrected, it will affect the outcome of the script in the case that the partition to which is installed is XFS (in which case the xfs_freeze from line 491 would not be called as it should be), - otherwise (i.e. other types of partitions) the outcome of the script will be the one desired, besides the `cryptic` error messages which could be confusing for a beginner user. + So, as to conclude, I think that the call to grub-probe from the grub- + install script should take into consideration the file specified by the + variable $device_map and not the default /boot/grub/device.map, as is + doing through the other grub commands in the script. + + If it is not corrected, it will affect the outcome of the script in the + case that the partition to which is installed is of type XFS (in which + case the xfs_freeze from line 491 would not be called as it was desired + to be), otherwise (i.e. other types of partitions) the outcome of the + script will be the one desired, besides the `cryptic` error messages + which could be confusing for a beginner user. P.S. Please bear with my possible mistakes, this is my first bug report, I hope I was clear enough in describing the problem and a possible solution to it. + + P.S.2 + Probably this bug should be checked also in the grub-install script from the other Ubuntu/Debian distributions which uses this kind of script for Grub legacy install.
-- bash error in the grub-install script https://bugs.launchpad.net/bugs/503604 You received this bug notification because you are a member of Ubuntu Bugs, which is subscribed to Ubuntu. -- ubuntu-bugs mailing list ubuntu-bugs@lists.ubuntu.com https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs