Репозитории ALT
S: | 2.06-alt16 |
D: | 0.97-alt2 |
5.1: | 0.97-alt5 |
4.1: | 0.97-alt4.M41.1 |
3.0: | 0.95-alt1 |
Группа :: Система/Ядро и оборудование
Пакет: grub
Главная Изменения Спек Патчи Sources Загрузить Gear Bugs and FR Repocop
Патч: grub-0.95-md-rework.patch
Скачать
Скачать
--- grub-0.95/util/grub-install.in.md2 2005-01-03 14:49:18.133866107 -0500
+++ grub-0.95/util/grub-install.in 2005-01-03 16:35:44.923732271 -0500
@@ -35,6 +35,7 @@
rootdir=
grub_prefix=/boot/grub
+install_drives=
install_device=
no_floppy=
force_lba=
@@ -272,6 +273,30 @@
done
}
+
+dump_boot_block () {
+ sync
+ $grub_shell --batch $no_floppy --device-map=$device_map <<EOF >$log_file
+dump ${root_drive}${tmp} ${img_file}
+quit
+EOF
+}
+
+
+install_boot_block () {
+ # Before all invocations of the grub shell, call sync to make sure
+ # the raw device is in sync with any bufferring in filesystems.
+ sync
+
+ # Now perform the installation.
+ $grub_shell --batch $no_floppy --device-map=$device_map <<EOF >>$log_file
+root $1
+setup $force_lba --stage2=$grubdir/stage2 --prefix=$grub_prefix $2
+quit
+EOF
+}
+
+
# Check the arguments.
for option in "$@"; do
case "$option" in
@@ -416,28 +441,32 @@
# Check for INSTALL_DEVICE.
case "$install_device" in
/dev/*)
- # If we are running md on a Linux box, just use the first physical device
- # at this point.
install_device=`resolve_symlink "$install_device"`
- install_device=`find_real_devs $install_device | awk '{print $1}'`
-
- install_drive=`convert "$install_device"`
- # I don't know why, but some shells wouldn't die if exit is
- # called in a function.
- if test "x$install_drive" = x; then
+ for install_drive in `find_real_devs $install_device` ; do
+ install_drive=`convert $install_drive`
+ if [ "x$install_drive" = "x" ]; then
+ exit 1
+ fi
+ install_drives="${install_drives} ${install_drive}"
+ done
+ unset install_drive
+
+ if test "x$install_drives" = x ; then
exit 1
fi ;;
\([hf]d[0-9]*\))
- install_drive="$install_device" ;;
+ install_drives="$install_device" ;;
[hf]d[0-9]*)
# The GRUB format with no parenthesis.
- install_drive="($install_device)" ;;
+ install_drives="($install_device)" ;;
*)
echo "Format of install_device not recognized." 1>&2
usage
exit 1 ;;
esac
+unset install_device
+
# Get the root drive.
root_device=`find_device ${rootdir}`
bootdir_device=`find_device ${bootdir}`
@@ -465,41 +494,39 @@
test -n "$mkimg" && img_file=`$mkimg`
test -n "$mklog" && log_file=`$mklog`
-for real_device in `find_real_devs $root_device`; do
- # Convert the root deviceto a GRUB drive.
- root_drive=`convert "$real_device"`
- if [ "x$root_drive" = x ]; then
- exit 1
- fi
+# There's not a real root device, so just pick the first
+if is_raid1_device $root_device ; then
+ root_device=`find_real_devs $root_device | awk '{print $1}'`
+fi
- for file in ${grubdir}/stage1 ${grubdir}/stage2 ${grubdir}/*stage1_5; do
- count=5
- tmp=`echo $file | sed "s|^${grubdir}|${grub_prefix}|"`
- while test $count -gt 0; do
- sync
- $grub_shell --batch $no_floppy --device-map=$device_map \
- <<EOF >$log_file
-dump ${root_drive}${tmp} ${img_file}
-quit
-EOF
- if grep "Error [0-9]*: " $log_file >/dev/null; then
- :
- elif cmp $file $img_file >/dev/null; then
- break
- fi
- sleep 1
- count=`expr $count - 1`
- done
- if test $count -eq 0; then
- echo "The file $file not read correctly." 1>&2
- exit 1
- fi
- done
+# Convert the root deviceto a GRUB drive.
+root_drive=`convert "$root_device"`
+if [ "x$root_drive" = x ]; then
+ exit 1
+fi
- rm -f $img_file
- rm -f $log_file
+for file in ${grubdir}/stage1 ${grubdir}/stage2 ${grubdir}/*stage1_5; do
+ count=5
+ tmp=`echo $file | sed "s|^${grubdir}|${grub_prefix}|"`
+ while test $count -gt 0; do
+ dump_boot_block $root_drive $img_file
+ if grep "Error [0-9]*: " $log_file >/dev/null; then
+ :
+ elif cmp $file $img_file >/dev/null; then
+ break
+ fi
+ sleep 1
+ count=`expr $count - 1`
+ done
+ if test $count -eq 0; then
+ echo "The file $file not read correctly." 1>&2
+ exit 1
+ fi
done
+rm -f $img_file
+rm -f $log_file
+
if ! test -e ${grubdir}/grub.conf ; then
test -e ${grubdir}/menu.lst && ln -s ./menu.lst ${grubdir}/grub.conf
fi
@@ -507,24 +534,13 @@
# Create a safe temporary file.
test -n "$mklog" && log_file=`$mklog`
-for real_device in `find_real_devs $root_device`; do
+for install_drive in $install_drives; do
# Convert the root deviceto a GRUB drive.
- root_drive=`convert "$real_device"`
+ root_drive=`convert "$root_device"`
if [ "x$root_drive" = x ]; then
exit 1
fi
-
- # Before all invocations of the grub shell, call sync to make sure
- # the raw device is in sync with any bufferring in filesystems.
- sync
-
- # Now perform the installation.
- $grub_shell --batch $no_floppy --device-map=$device_map <<EOF >>$log_file
-root $root_drive
-setup $force_lba --stage2=$grubdir/stage2 --prefix=$grub_prefix $root_drive
-quit
-EOF
-
+ install_boot_block $root_drive $install_drive
done
if grep "Error [0-9]*: " $log_file >/dev/null ; then