Форум русскоязычного сообщества Ubuntu


Увидели сообщение с непонятной ссылкой, спам, непристойность или оскорбление?
Воспользуйтесь ссылкой «Сообщить модератору» рядом с сообщением!

Автор Тема: Вопрос по Grub 2  (Прочитано 1604 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Kill[HPF]

  • Автор темы
  • Активист
  • *
  • Сообщений: 412
  • Kill
    • Просмотр профиля
    • Все о тяжелой и неформальной музыке. Биографии, дискографии, тексты, песни, клипы, туры
Вопрос по Grub 2
« : 20 Ноября 2009, 00:18:40 »
прочитал манул в нем было написанно что скрипт для поиска других Ос находится в файле /etc/grub.d/30_os-prober
собственно вопрос на компе 2 харда на 1 лин на другом 7.
как сделать так что бы в меню появился пункт с 7 ?
3 хард невщет на нем хр ненужная мне  (она для мамы ;D)

содержимое файла
как я понял надо заменить    drivemap -s (hd0) \${root}  на    drivemap -s (hd1) \${root}но тогда он всеравно не видит 7 и + еще тупит  :(
#! /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 <http://www.gnu.org/licenses/>.

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 <<EOF
if [ \${timeout} != -1 ]; then
  if keystatus; then
    if keystatus --shift; then
      set timeout=-1
    else
      set timeout=0
    fi
  else
    if sleep$verbose --interruptible 3 ; then
      set timeout=0
    fi
  fi
fi
EOF
      else
cat << EOF
if [ \${timeout} != -1 ]; then
  if sleep$verbose --interruptible ${GRUB_HIDDEN_TIMEOUT} ; then
    set timeout=0
  fi
fi
EOF
      fi
    fi
  fi
}

if [ "x${GRUB_DISABLE_OS_PROBER}" = "xtrue" ]; then
  adjust_timeout
  exit 0
fi

if [ -z "`which os-prober 2> /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

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 <<EOF
chainloader +1
}
EOF
    ;;
    linux)
      LINUXPROBED="`linux-boot-prober ${DEVICE} 2> /dev/null | tr ' ' '^' | paste -s -d ' '`"

      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

        cat << EOF
menuentry "${LLABEL} (on ${DEVICE})" {
EOF
save_default_entry | sed -e "s/^/\t/"
prepare_grub_to_access_device ${DEVICE} | sed -e "s/^/\t/"
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`"
        cat << EOF
menuentry "${LONGNAME} (on ${DEVICE})" {
EOF
save_default_entry | sed -e "s/^/\t/"
prepare_grub_to_access_device ${DEVICE} | sed -e "s/^/\t/"
cat << EOF
        insmod vbe
        do_resume=0
        if [ /var/vm/sleepimage -nt10 / ]; then
           if xnu_resume /var/vm/sleepimage; then
             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
           xnu_kernel /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/devtree.txt ]; then
              xnu_devtree /Extra/devtree.txt
           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
    ;;
    hurd|*)
      echo "  ${LONGNAME} is not yet supported by grub-mkconfig." >&2
    ;;
  esac
done

adjust_timeout
« Последнее редактирование: 20 Ноября 2009, 13:39:35 от Kill[HPF] »

Оффлайн nixoid

  • Любитель
  • *
  • Сообщений: 81
  • Бубунтовод
    • Просмотр профиля
Re: Вопрос по Grub 2
« Ответ #1 : 20 Ноября 2009, 00:25:24 »
Как автоматом сделать - не знаю.
У меня на ОДНОМ винте на разных разделах Линь и W7, вот мой 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 /boot/grub/grubenv ]; then
  have_grubenv=true
  load_env
fi
set default="0"
if [ ${prev_saved_entry} ]; then
  saved_entry=${prev_saved_entry}
  save_env saved_entry
  prev_saved_entry=
  save_env prev_saved_entry
fi
insmod ext2
set root=(hd1,2)
search --no-floppy --fs-uuid --set d8b35107-8139-4e5d-b361-eaede3c0c259
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
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/white
### END /etc/grub.d/05_debian_theme ###

### BEGIN /etc/grub.d/10_linux ###
menuentry "Ubuntu, Linux 2.6.31-15-generic" {
        recordfail=1
        if [ -n ${have_grubenv} ]; then save_env recordfail; fi
set quiet=1
insmod ext2
set root=(hd1,2)
search --no-floppy --fs-uuid --set d8b35107-8139-4e5d-b361-eaede3c0c259
linux /boot/vmlinuz-2.6.31-15-generic root=UUID=d8b35107-8139-4e5d-b361-eaede3c0c259 ro   quiet splash
initrd /boot/initrd.img-2.6.31-15-generic
}
menuentry "Ubuntu, Linux 2.6.31-15-generic (recovery mode)" {
        recordfail=1
        if [ -n ${have_grubenv} ]; then save_env recordfail; fi
insmod ext2
set root=(hd1,2)
search --no-floppy --fs-uuid --set d8b35107-8139-4e5d-b361-eaede3c0c259
linux /boot/vmlinuz-2.6.31-15-generic root=UUID=d8b35107-8139-4e5d-b361-eaede3c0c259 ro single
initrd /boot/initrd.img-2.6.31-15-generic
}
menuentry "Ubuntu, Linux 2.6.31-14-generic" {
        recordfail=1
        if [ -n ${have_grubenv} ]; then save_env recordfail; fi
set quiet=1
insmod ext2
set root=(hd1,2)
search --no-floppy --fs-uuid --set d8b35107-8139-4e5d-b361-eaede3c0c259
linux /boot/vmlinuz-2.6.31-14-generic root=UUID=d8b35107-8139-4e5d-b361-eaede3c0c259 ro   quiet splash
initrd /boot/initrd.img-2.6.31-14-generic
}
menuentry "Ubuntu, Linux 2.6.31-14-generic (recovery mode)" {
        recordfail=1
        if [ -n ${have_grubenv} ]; then save_env recordfail; fi
insmod ext2
set root=(hd1,2)
search --no-floppy --fs-uuid --set d8b35107-8139-4e5d-b361-eaede3c0c259
linux /boot/vmlinuz-2.6.31-14-generic root=UUID=d8b35107-8139-4e5d-b361-eaede3c0c259 ro single
initrd /boot/initrd.img-2.6.31-14-generic
}
### END /etc/grub.d/10_linux ###

### BEGIN /etc/grub.d/20_memtest86+ ###
menuentry "Memory test (memtest86+)" {
linux16 /boot/memtest86+.bin
}
menuentry "Memory test (memtest86+, serial console 115200)" {
linux16 /boot/memtest86+.bin console=ttyS0,115200n8
}
### END /etc/grub.d/20_memtest86+ ###

### BEGIN /etc/grub.d/30_os-prober ###
[color=red]menuentry "Windows 7 (loader) (on /dev/sdb3)" {
insmod ntfs
set root=(hd1,3)
search --no-floppy --fs-uuid --set 9808A7CD08A7A928
chainloader +1[/color]
}
### 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 ###
Соответственно нужно поменять (hd1,3) на нужные и UUID раздела

Оффлайн dimas000

  • Старожил
  • *
  • Сообщений: 1437
  • Ubuntu 9.10 @ 2.6.34
    • Просмотр профиля
Re: Вопрос по Grub 2
« Ответ #2 : 20 Ноября 2009, 03:47:00 »
ага, уже какой по счету вопрос про разные харды... тут какой-то весомый баг имеет место, чего-то они там недопилили. ибо когда винда с убунтой находятся на одном харде - все прекрасно, а вот ежели они стоят на разных физических дисках - груб упорно не видит винду.
для начала поробуй сделать следующее:
загрузись в консоль груба. для этого когда появится меню загрузки нужно будет нажать то ли "e", то ли еще что-то, там внизу написано будет что-то типа "press что-то_там to enter command line".
в этой самой консоли пишешь следующее:
set root=(hd0,1)только вместо "(hd0,1)" указываешь свой раздел, на котором установлена винда. при этом sda=(hd0), sdb=(hd1), а sda2=(hd0,2), короче, харды с нуля нумеруются, а разделы с единицы.
указав раздел, пишешь
chainloader +1и после всего
bootежели все успешно получится - груб передаст управление виндовому загрузчику и ты увидишь винду. тогда надо будет создать кастомный пункт загрузки, но об этом позже.
если чего из вышеописанного не понял - https://forum.ubuntu.ru/index.php?topic=74165.0 - смотри в главе III пункт про загрузку через консоль и где-то ранее про нумерацию разделов.
короче, как попробуешь - отпишись о результатах.

до кучи просьба будет. я сейчас занимаюсь сбором инфы по подобным случаям для написания баг-репорта по этой проблеме. от тебя требуется следующее: предоставь, пожалуйста, вывод команды:
sudo fdisk -lс описанием, что и где установлено (типа "тут винда стоит, тут просто нтфс-ный раздел под файло, тут /-раздел убунты, тут /home и т.д.")
+ править скрипты руками - дело опасное и нехорошее, особенно если не понимаешь толком, что делают те или иные строки. так что поменяй взад. и после этого выполни
sudo update-grub
и тоже запости сюда вывод команды.
++ расскажи, что в каком порядке ставил (типа "была винда, откроил кусок харда и поставил Ubuntu" или там "была 9.04, переставил на 9.10, а винду не трогал"...)
лучше на "ты"

Оффлайн Kill[HPF]

  • Автор темы
  • Активист
  • *
  • Сообщений: 412
  • Kill
    • Просмотр профиля
    • Все о тяжелой и неформальной музыке. Биографии, дискографии, тексты, песни, клипы, туры
Re: Вопрос по Grub 2
« Ответ #3 : 20 Ноября 2009, 13:23:43 »
способ с
Цитировать
set root=(hd0,1)
только вместо "(hd0,1)" указываешь свой раздел, на котором установлена винда. при этом sda=(hd0), sdb=(hd1), а sda2=(hd0,2), короче, харды с нуля нумеруются, а разделы с единицы.
указав раздел, пишешь
Код:
chainloader +1
и после всего
Код:
boot
помог

Диск /dev/sda: 250.1 ГБ, 250059350016 байт
255 heads, 63 sectors/track, 30401 cylinders
Units = цилиндры of 16065 * 512 = 8225280 bytes
Disk identifier: 0x90295c54

Устр-во Загр     Начало       Конец       Блоки   Id  Система
/dev/sda1   *           1         128     1024000   82  Linux своп / Solaris
Раздел 1 не заканчивается на границе цилиндра.
/dev/sda2           23580       30401    54797715    5  Расширенный
/dev/sda3            4590       23579   152528320+   7  HPFS/NTFS
/dev/sda4             129        4589    35832982+  83  Linux
/dev/sda5           23580       30401    54797683+  83  Linux  ([b]Ubuntu[/b])

Пункты таблицы разделов расположены не в дисковом порядке

Диск /dev/sdb: 640.1 ГБ, 640135028736 байт
255 heads, 63 sectors/track, 77825 cylinders
Units = цилиндры of 16065 * 512 = 8225280 bytes
Disk identifier: 0x1151a97e

Устр-во Загр     Начало       Конец       Блоки   Id  Система
/dev/sdb1   *           1        7707    61900800    7  HPFS/NTFS     (Семерка)
/dev/sdb2            7707       77826   563228672    7  HPFS/NTFS

Диск /dev/sdbs: 84.1 ГБ, 84635008036 байт
255 heads, 63 sectors/track, 17825 cylinders
Units = цилиндры of 16065 * 512 = 8225280 bytes
Disk identifier: 0xf151af2e

[b]Этот диск можно не учитывать он почти не нужен так что мне $% что груб его не видит  :2funny:[/b]

Устр-во Загр     Начало       Конец       Блоки   Id  Система
/dev/sdbs   *           1        7707    83900800    6  HPFS/NTFS     (XP)

peter@peter-desktop:~$

Ставил сначало ХР (это еще было в далеких 2005) на 84 гиговый диск
Потом Висту
Потом Ubuntu  (которую 3 раза успел обновить с  с 8,4 до 8,10 до 9,4 до 9,10 (после которого она успешно слитела))
после чего раз 8 переустанавливал висту потом снес висту поставил 7
и всера пришлось переустановить Ubuntu.
Вот тут я и заметил что она нехочет видить не ХР (которая для мамы нужна так как она 7 не переваривает :2funny: ;D) не 7

А по поводу того что  
+ править скрипты руками - дело опасное и нехорошее, особенно если не понимаешь толком, что делают те или иные строки. так что поменяй взад. и после этого выполни
sudo update-grub
Я вобщето вчера  5 часов с переводчиком маны на каком-то  сайте вкуривал так что уже понимал что делал  :2funny:
« Последнее редактирование: 20 Ноября 2009, 16:50:17 от Kill[HPF] »

Оффлайн dimas000

  • Старожил
  • *
  • Сообщений: 1437
  • Ubuntu 9.10 @ 2.6.34
    • Просмотр профиля
Re: Вопрос по Grub 2
« Ответ #4 : 20 Ноября 2009, 15:42:51 »
ну раз через консоль грузится, тогда добавляй кастомный пункт в "/etc/grub.d/40_custom". в конец файла добавь примерно следующее:
menuentry "Win7" {
set root=(hd1,1)
chainloader +1
boot
}
и обнови груб
с дисками что-то вообще волшебное. как это два разных диска зовутся одинаково "sdb"?? у меня в голове не укладывается. кстати, что говорит нам "/boot/grub/device.map"? тут по соседству где-то у товарища там был виден только один хард из трех, помогло дописание всех остальных, и груб все узрел
« Последнее редактирование: 20 Ноября 2009, 16:24:35 от dimas000 »
лучше на "ты"

Оффлайн agimoura

  • Активист
  • *
  • Сообщений: 325
    • Просмотр профиля
Re: Вопрос по Grub 2
« Ответ #5 : 20 Ноября 2009, 16:12:44 »
Вот интересно, что же я не так вечно делаю?  :idiot2: :idiot2:

С убунтой познакомился около года назад. И живёт она у меня на ноуте.
 А тут разжился ещё одним хардом и решил поставить её же, родимую и на деск, хай жена тоже осваивает. На нём уже как два года живёт свиста... ;) ;D
И получилась такая хохма. ЖД со свистой - сата, мой новый - ата. Решил я диск со свистой не трогать, просто поставить Ubuntu на новый диск.
Всё встало нормально, всё определилось и замечательно загружается, причём, даже эмулятор биоса не слетел...

Может, я "неправильно" лазил в дополнительные настройки установки загрузчика?.. :idiot2: :o

То есть, почему НЕ возникло проблем  с грабом...

Хотя, не знаю, считается ли проблемой, что диски видятся как sda и sdb, хотя по логике, один из них должен был видеться, как hdХ...  :idiot2:


Оффлайн dimas000

  • Старожил
  • *
  • Сообщений: 1437
  • Ubuntu 9.10 @ 2.6.34
    • Просмотр профиля
Re: Вопрос по Grub 2
« Ответ #6 : 20 Ноября 2009, 16:25:35 »
а загрузочным какой диск стоит?
лучше на "ты"

Оффлайн agimoura

  • Активист
  • *
  • Сообщений: 325
    • Просмотр профиля
Re: Вопрос по Grub 2
« Ответ #7 : 20 Ноября 2009, 16:47:25 »
На новом, то-есть, с убунтой, то-есть, на ата. И в биосе тоже выставил его первым...

Кстати, где-то здесь парень жаловался, что система видит только одно ядро процессора, у меня точно такой же процессор (AMD 64X2 3800+), и прекрасно обозначаются оба ядра...  :idiot2: :idiot2:
Наверное, я везунчик...  ;D ;D

 

Страница сгенерирована за 0.068 секунд. Запросов: 23.