Grub Geom error (решено)

Изображение пользователя maxud67.

столкнулся с такой проблемой: на компе стоит 2 винчестера - на одном винда, на втором кубунта. диск, на котором кубунта стал умирать, поэтому поменял диск на новый, установил "рысь", вроде всё нормально. винду за ненадобностью не запускал. сегодня понадобилась винда и тут появилась проблема: GRUB отказывается запускать винду, мотивируя это тем, что Geom Error. Со старым диском всё было нормально. Прогуглил инет, но не помогло, не нашёл подробного совета.
Подскажите что надо сделать с GRUBом или BIOSом. Диски стоят на одном контроллере, Wingows-master, Kubuntu-slave.

0
knuckles - 29 Май, 2010 - 08:47

Подробности нужны!

1. Вывод команды sudo fdisk -l
2. Содержимое файла /etc/grub.d/30_os-prober

0
maxud67 - 31 Май, 2010 - 04:00
Изображение пользователя maxud67.

содержимое:

fdisk:

Диск /dev/sda: 80.0 ГБ, 80026361856 байт
255 heads, 63 sectors/track, 9729 cylinders
Units = цилиндры of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x8ba18ba1

Устр-во Загр Начало Конец Блоки Id Система
/dev/sda1 1 8422 67649683+ 7 HPFS/NTFS
/dev/sda2 * 8423 9605 9502447+ 7 HPFS/NTFS
/dev/sda3 9606 9729 995999+ 5 Расширенный
/dev/sda5 9606 9729 995998+ 82 Linux своп / Solaris

Диск /dev/sdb: 160.0 ГБ, 160041885696 байт
255 heads, 63 sectors/track, 19457 cylinders
Units = цилиндры of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x0000d971

Устр-во Загр Начало Конец Блоки Id Система
/dev/sdb1 * 1 19209 154289152 83 Linux
/dev/sdb2 19209 19458 1998849 5 Расширенный
/dev/sdb5 19209 19458 1998848 82 Linux своп / Solaris

30_os-prober

#! /bin/sh -e

# grub-mkconfig helper script.
# Copyright (C) 2006,2007,2008,2009 Free Software Foundation, Inc.
#
# GRUB is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# GRUB is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with GRUB. If not, see .

prefix=/usr
exec_prefix=${prefix}
libdir=${exec_prefix}/lib

. ${libdir}/grub/grub-mkconfig_lib

found_other_os=

adjust_timeout () {
if [ "x${found_other_os}" = "x" ] ; then
if [ "x${GRUB_HIDDEN_TIMEOUT}" != "x" ] ; then
if [ "x${GRUB_HIDDEN_TIMEOUT_QUIET}" = "xtrue" ] ; then
verbose=
else
verbose=" --verbose"
fi

if [ "x${GRUB_HIDDEN_TIMEOUT}" = "x0" ] ; then
cat < /dev/null`" -o -z "`which linux-boot-prober 2> /dev/null`" ] ; then
# missing os-prober and/or linux-boot-prober
adjust_timeout
exit 0
fi

OSPROBED="`os-prober | tr ' ' '^' | paste -s -d ' '`"
if [ -z "${OSPROBED}" ] ; then
# empty os-prober output, nothing doing
adjust_timeout
exit 0
fi

osx_entry() {
cat << EOF
menuentry "${LONGNAME} (${2}-bit) (on ${DEVICE})" {
EOF
save_default_entry | sed -e "s/^/\t/"
prepare_grub_to_access_device ${DEVICE} | sed -e "s/^/\t/"
cat << EOF
insmod ${GRUB_VIDEO_BACKEND}
set do_resume=0
if [ /var/vm/sleepimage -nt10 / ]; then
if xnu_resume /var/vm/sleepimage; then
set do_resume=1
fi
fi
if [ \$do_resume == 0 ]; then
xnu_uuid ${OSXUUID} uuid
if [ -f /Extra/DSDT.aml ]; then
acpi -e /Extra/DSDT.aml
fi
$1 /mach_kernel boot-uuid=\${uuid} rd=*uuid
if [ /System/Library/Extensions.mkext -nt /System/Library/Extensions ]; then
xnu_mkext /System/Library/Extensions.mkext
else
xnu_kextdir /System/Library/Extensions
fi
if [ -f /Extra/Extensions.mkext ]; then
xnu_mkext /Extra/Extensions.mkext
fi
if [ -d /Extra/Extensions ]; then
xnu_kextdir /Extra/Extensions
fi
if [ -f /Extra/devprop.bin ]; then
xnu_devprop_load /Extra/devprop.bin
fi
if [ -f /Extra/splash.jpg ]; then
insmod jpeg
xnu_splash /Extra/splash.jpg
fi
if [ -f /Extra/splash.png ]; then
insmod png
xnu_splash /Extra/splash.png
fi
if [ -f /Extra/splash.tga ]; then
insmod tga
xnu_splash /Extra/splash.tga
fi
fi
}
EOF
}

for OS in ${OSPROBED} ; do
DEVICE="`echo ${OS} | cut -d ':' -f 1`"
LONGNAME="`echo ${OS} | cut -d ':' -f 2 | tr '^' ' '`"
LABEL="`echo ${OS} | cut -d ':' -f 3 | tr '^' ' '`"
BOOT="`echo ${OS} | cut -d ':' -f 4`"

if [ -z "${LONGNAME}" ] ; then
LONGNAME="${LABEL}"
fi

echo "Found ${LONGNAME} on ${DEVICE}" >&2
found_other_os=1

case ${BOOT} in
chain)

cat << EOF
menuentry "${LONGNAME} (on ${DEVICE})" {
EOF
save_default_entry | sed -e "s/^/\t/"
prepare_grub_to_access_device ${DEVICE} | sed -e "s/^/\t/"

case ${LONGNAME} in
Windows\ Vista*|Windows\ 7*)
;;
*)
cat << EOF
drivemap -s (hd0) \${root}
EOF
;;
esac

cat < /dev/null | tr ' ' '^' | paste -s -d ' '`"
prepare_boot_cache=

for LINUX in ${LINUXPROBED} ; do
LROOT="`echo ${LINUX} | cut -d ':' -f 1`"
LBOOT="`echo ${LINUX} | cut -d ':' -f 2`"
LLABEL="`echo ${LINUX} | cut -d ':' -f 3 | tr '^' ' '`"
LKERNEL="`echo ${LINUX} | cut -d ':' -f 4`"
LINITRD="`echo ${LINUX} | cut -d ':' -f 5`"
LPARAMS="`echo ${LINUX} | cut -d ':' -f 6- | tr '^' ' '`"

if [ -z "${LLABEL}" ] ; then
LLABEL="${LONGNAME}"
fi

if [ "${LROOT}" != "${LBOOT}" ]; then
LKERNEL="${LKERNEL#/boot}"
LINITRD="${LINITRD#/boot}"
fi

cat << EOF
menuentry "${LLABEL} (on ${DEVICE})" {
EOF
save_default_entry | sed -e "s/^/\t/"
if [ -z "${prepare_boot_cache}" ]; then
prepare_boot_cache="$(prepare_grub_to_access_device ${LBOOT} | sed -e "s/^/\t/")"
fi
printf '%s\n' "${prepare_boot_cache}"
cat << EOF
linux ${LKERNEL} ${LPARAMS}
EOF
if [ -n "${LINITRD}" ] ; then
cat << EOF
initrd ${LINITRD}
EOF
fi
cat << EOF
}
EOF
done
;;
macosx)
OSXUUID="`grub-probe --target=fs_uuid --device ${DEVICE} 2> /dev/null`"
osx_entry xnu_kernel 32
osx_entry xnu_kernel64 64
;;
hurd)
cat << EOF
menuentry "${LONGNAME} (on ${DEVICE})" {
EOF
save_default_entry | sed -e "s/^/\t/"
prepare_grub_to_access_device ${DEVICE} | sed -e "s/^/\t/"
grub_device="`${grub_probe} --device ${DEVICE} --target=drive`"
mach_device="`echo "${grub_device}" | tr -d '()' | tr , s`"
grub_fs="`${grub_probe} --device ${DEVICE} --target=fs`"
case "${grub_fs}" in
*fs) hurd_fs="${grub_fs}" ;;
*) hurd_fs="${grub_fs}fs" ;;
esac
cat << EOF
multiboot /boot/gnumach.gz root=device:${mach_device}
module /hurd/${hurd_fs}.static ${hurd_fs} --readonly \\
--multiboot-command-line='\${kernel-command-line}' \\
--host-priv-port='\${host-port}' \\
--device-master-port='\${device-port}' \\
--exec-server-task='\${exec-task}' -T typed '\${root}' \\
'\$(task-create)' '\$(task-resume)'
module /lib/ld.so.1 exec /hurd/exec '\$(exec-task=task-create)'
}
EOF
;;
*)
echo " ${LONGNAME} is not yet supported by grub-mkconfig." >&2
;;
esac
done

adjust_timeout

0
knuckles - 31 Май, 2010 - 17:29

Надо бы еще /boot/grub/grub.cfg посмотреть...
Кстати, откуда у тебя swap на диске с виндой?

0
maxud67 - 2 Июнь, 2010 - 06:00
Изображение пользователя maxud67.

вот grub.cfg:

#
# DO NOT EDIT THIS FILE
#
# It is automatically generated by /usr/sbin/grub-mkconfig using templates
# from /etc/grub.d and settings from /etc/default/grub
#

### BEGIN /etc/grub.d/00_header ###
if [ -s $prefix/grubenv ]; then
load_env
fi
set default="0"
if [ ${prev_saved_entry} ]; then
set saved_entry=${prev_saved_entry}
save_env saved_entry
set prev_saved_entry=
save_env prev_saved_entry
set boot_once=true
fi

function savedefault {
if [ -z ${boot_once} ]; then
saved_entry=${chosen}
save_env saved_entry
fi
}

function recordfail {
set recordfail=1
if [ -n ${have_grubenv} ]; then if [ -z ${boot_once} ]; then save_env recordfail; fi; fi
}
insmod ext2
set root='(hd1,1)'
search --no-floppy --fs-uuid --set 8fe725af-aeff-47f6-adf3-f3ea793a0728
if loadfont /usr/share/grub/unicode.pf2 ; then
set gfxmode=640x480
insmod gfxterm
insmod vbe
if terminal_output gfxterm ; then true ; else
# For backward compatibility with versions of terminal.mod that don't
# understand terminal_output
terminal gfxterm
fi
fi
insmod ext2
set root='(hd1,1)'
search --no-floppy --fs-uuid --set 8fe725af-aeff-47f6-adf3-f3ea793a0728
set locale_dir=($root)/boot/grub/locale
set lang=ru
insmod gettext
if [ ${recordfail} = 1 ]; then
set timeout=-1
else
set timeout=10
fi
### END /etc/grub.d/00_header ###

### BEGIN /etc/grub.d/05_debian_theme ###
set menu_color_normal=white/black
set menu_color_highlight=black/light-gray
### END /etc/grub.d/05_debian_theme ###

### BEGIN /etc/grub.d/10_linux ###
menuentry 'Ubuntu, с Linux 2.6.32-22-generic' --class ubuntu --class gnu-linux --class gnu --class os {
recordfail
insmod ext2
set root='(hd1,1)'
search --no-floppy --fs-uuid --set 8fe725af-aeff-47f6-adf3-f3ea793a0728
linux /boot/vmlinuz-2.6.32-22-generic root=UUID=8fe725af-aeff-47f6-adf3-f3ea793a0728 ro quiet splash
initrd /boot/initrd.img-2.6.32-22-generic
}
menuentry 'Ubuntu, с Linux 2.6.32-22-generic (режим восстановления)' --class ubuntu --class gnu-linux --class gnu --class os {
recordfail
insmod ext2
set root='(hd1,1)'
search --no-floppy --fs-uuid --set 8fe725af-aeff-47f6-adf3-f3ea793a0728
echo 'Загружается Linux 2.6.32-22-generic ...'
linux /boot/vmlinuz-2.6.32-22-generic root=UUID=8fe725af-aeff-47f6-adf3-f3ea793a0728 ro single
echo 'Загружается начальный ramdisk ...'
initrd /boot/initrd.img-2.6.32-22-generic
}
menuentry 'Ubuntu, с Linux 2.6.32-21-generic' --class ubuntu --class gnu-linux --class gnu --class os {
recordfail
insmod ext2
set root='(hd1,1)'
search --no-floppy --fs-uuid --set 8fe725af-aeff-47f6-adf3-f3ea793a0728
linux /boot/vmlinuz-2.6.32-21-generic root=UUID=8fe725af-aeff-47f6-adf3-f3ea793a0728 ro quiet splash
initrd /boot/initrd.img-2.6.32-21-generic
}
menuentry 'Ubuntu, с Linux 2.6.32-21-generic (режим восстановления)' --class ubuntu --class gnu-linux --class gnu --class os {
recordfail
insmod ext2
set root='(hd1,1)'
search --no-floppy --fs-uuid --set 8fe725af-aeff-47f6-adf3-f3ea793a0728
echo 'Загружается Linux 2.6.32-21-generic ...'
linux /boot/vmlinuz-2.6.32-21-generic root=UUID=8fe725af-aeff-47f6-adf3-f3ea793a0728 ro single
echo 'Загружается начальный ramdisk ...'
initrd /boot/initrd.img-2.6.32-21-generic
}
### END /etc/grub.d/10_linux ###

### BEGIN /etc/grub.d/20_memtest86+ ###
menuentry "Memory test (memtest86+)" {
insmod ext2
set root='(hd1,1)'
search --no-floppy --fs-uuid --set 8fe725af-aeff-47f6-adf3-f3ea793a0728
linux16 /boot/memtest86+.bin
}
menuentry "Memory test (memtest86+, serial console 115200)" {
insmod ext2
set root='(hd1,1)'
search --no-floppy --fs-uuid --set 8fe725af-aeff-47f6-adf3-f3ea793a0728
linux16 /boot/memtest86+.bin console=ttyS0,115200n8
}
### END /etc/grub.d/20_memtest86+ ###

### BEGIN /etc/grub.d/30_os-prober ###
menuentry "Windows NT/2000/XP (loader) (on /dev/sda1)" {
insmod ntfs
set root='(hd0,1)'
search --no-floppy --fs-uuid --set 246cc92d6cc8fa96
drivemap -s (hd0) ${root}
chainloader +1
}
### END /etc/grub.d/30_os-prober ###

### BEGIN /etc/grub.d/40_custom ###
# This file provides an easy way to add custom menu entries. Simply type the
# menu entries you want to add after this comment. Be careful not to change
# the 'exec tail' line above.
### END /etc/grub.d/40_custom ###

А SWAP остался от предыдущей установки Коалы на винт с Окнами. Только потом решил поставить Убунту на отдельный диск.

0
knuckles - 3 Июнь, 2010 - 08:57

Хорошо. Извини, что так долго - не было возможности выйти в интернет.

Обычно такая проблема возникает из-за неверных настроек адресации жестких дисков в BIOS. Для начала попробуй зайти в SETUP и изменить приоритет загрузки жестких дисков. Если не поможет, попробуй поменять настройки LBA.

Возможно, придется загружаться в Recovery Console с установочного диска Windowx XP и выплнять fixmbr. В этом случае первым загрузочным HDD должен быть Primary Master.

P.S. Файлы настроек GRUB у тебя правильные.

0
maxud67 - 3 Июнь, 2010 - 11:36
Изображение пользователя maxud67.

спасибо, попробую. что получится - отпишу.

0
maxud67 - 4 Июнь, 2010 - 09:22
Изображение пользователя maxud67.

В общем фигня получается. Вот что значит шаловливые ручки и плохое знание предмета.
Изменение приоритета загрузки жёстких дисков как равно и включение LBA не помогли.

В Recovery Console при запуске fixmbr подтвердилась догадка, что Grub установлен на диске Windows 2000. Запускать fixmbr побоялся, так как он затрёт Grub и насколько я понял из различных форумов и описаний проблемы, придётся переустанавливать Kubuntu, а этого делать очень не хочется, так как комп рабочий.
Есть ли какой-нить другой путь? В крайнем случае придётся переустановить "рысь".

0
DarkneSS - 4 Июнь, 2010 - 12:09
Изображение пользователя DarkneSS.

так как он затрёт Grub и насколько я понял из различных форумов и описаний проблемы, придётся переустанавливать Kubuntu
Восстановить можно с лайвсиди без переустановки.

0
knuckles - 5 Июнь, 2010 - 07:41

Вот что значит шаловливые ручки и плохое знание предмета.
Это не в твой адрес камушек, а в адрес разработчиков Убунту. Такую важную вещь, как загрузчик, надо давать выбирать, куда ставить, при установке дистрибутива, а не ставить молча на другой диск!

Раз Grub на диске с виндой, то смена приоритета загрузки действительно не поможет. Ты с английским дружишь? Не хочу сюда переписывать две статьи, лучше ссылки дам. Если ничего не поймешь (вдруг, совсем не дружишь :-)), отпишись.

Вот описание твоей ошибки и причин ее возникновения: Grub Geom Error. Их немного.
А вот здесь хорошо написано, как Grub можно восстановить: Grub 2 recovery. Может, поможет.

Удачи тебе!

+1
DarkneSS - 5 Июнь, 2010 - 13:39
Изображение пользователя DarkneSS.

А он и предлагает выбрать, куда установить. Вот только разбивку диска на автоматику мало кто оставляет, а загрузчик все ставят в место по умолчанию.

0
knuckles - 5 Июнь, 2010 - 18:32

А он и предлагает выбрать, куда установить.
Честно говоря, всегда делаю разбивку диска вручную, но предложения выбрать MBR или раздел диска для установки Grub, не помню :-) Наверное, старый стал...
+1 Спасибо, что поправил! ;-)

+1
trubadur4ik - 5 Июнь, 2010 - 17:36
Изображение пользователя trubadur4ik.

А все ваши консольные выводы под "

" не судьба убрать?
0
maxud67 - 8 Июнь, 2010 - 08:55
Изображение пользователя maxud67.

2 knuckles
Вот вернулся из небытия, похоже убил GRUB нафиг. Думал полный пипец.
Хорошо, что было на диске с виндой 10 свободных Гб, поставил туда убунту. Вроде всё заработало, кроме винды (я там по ходу MBR тоже засахатил).

Касательно ссылок - первую я читал раньше, но как и вторая к сожалению не помогла, хотя и с английским проблем нет. Видима пока мне не судьба добраться до винды. Буду больше читать и изучать.
Самое главное рабочая система в порядке...пока.
А разделы ставлю вручную.

Спасибо за советы. Надо копать.

0
trubadur4ik - 8 Июнь, 2010 - 20:10
Изображение пользователя trubadur4ik.

Вроде всё заработало, кроме винды (я там по ходу MBR тоже засахатил).
А как себя проявляет похереная винда? Строки меню для её загрузки в грабе нет или что?

0
maxud67 - 9 Июнь, 2010 - 03:31
Изображение пользователя maxud67.

Похереная винда ведёт себя интересно: в грабе она присутствует, но при запуске курсор начинает бешенно носиться по экрану по диагонали и принтер безостановочно начинает печатать, но листы выходят пустые. Вот такая муйня.

0
trubadur4ik - 9 Июнь, 2010 - 07:01
Изображение пользователя trubadur4ik.

Не иначе как демоны (линуксовые, видимо) овладели виндой. Тут, пожалуй, только опытный экзорцист сможет помочь. :-)

0
maxud67 - 10 Июнь, 2010 - 10:47
Изображение пользователя maxud67.

Уфф. Наконец-то фсё заработало.
А ларчик просто открывался. Восстановил загрузку Windows командой fixboot из консоли восстановления загрузочного диска. Вот.

Отправить комментарий

CAPTCHA на основе изображений
Введите цифры