[Vyřešeno] Dualboot Ubuntu+Fedora15 grub menu se nezobrazí

Zdravím,

chtěl bych poprosit o radu. Vedle stávajícího Ubuntu 10.10 jsem nainstaloval Fedoru 15. Byla to instalace “do volného místa”, oddíly jsem ručně neupravoval - tedy ani mi později nebyla nabídnuta možnost volby instalace grubu (do MBR/partition). Nyní při startu automaticky nabootuje Fedora, grub menu se neukáže. Rád bych, aby se mi při startu ukázalo grub menu a já mohl vybírat mezi Fedorou a Ubuntu.

To, že se grub menu při startu nezobrazuje, je podle mě způsobeno tím, že v grub.conf je nezakomentované “hiddenmenu” a také čas zobrazení je nula (timeout=0)
Nicméně tím by se asi problém neřešil, protože Ubuntu není v menu.lst uvedeno.

Zde jsou výpisy:

[root@freshfedora freshlemon]# cat /boot/grub/menu.lst
# grub.conf generated by anaconda
#
# Note that you do not have to rerun grub after making changes to this file
# NOTICE:  You have a /boot partition.  This means that
#          all kernel and initrd paths are relative to /boot/, eg.
#          root (hd0,2)
#          kernel /vmlinuz-version ro root=/dev/mapper/vg_freshfedora-lv_root
#          initrd /initrd-[generic-]version.img
#boot=/dev/sda
default=0
timeout=0
splashimage=(hd0,2)/grub/splash.xpm.gz
hiddenmenu
title Fedora (2.6.40-4.fc15.i686)
	root (hd0,2)
	kernel /vmlinuz-2.6.40-4.fc15.i686 ro root=/dev/mapper/vg_freshfedora-lv_root rd_LVM_LV=vg_freshfedora/lv_root rd_LVM_LV=vg_freshfedora/lv_swap rd_NO_LUKS rd_NO_MD rd_NO_DM LANG=en_US.UTF-8 SYSFONT=latarcyrheb-sun16 KEYTABLE=cz-us-qwertz rhgb quiet
	initrd /initramfs-2.6.40-4.fc15.i686.img
title Fedora (2.6.38.6-26.rc1.fc15.i686)
	root (hd0,2)
	kernel /vmlinuz-2.6.38.6-26.rc1.fc15.i686 ro root=/dev/mapper/vg_freshfedora-lv_root rd_LVM_LV=vg_freshfedora/lv_root rd_LVM_LV=vg_freshfedora/lv_swap rd_NO_LUKS rd_NO_MD rd_NO_DM LANG=en_US.UTF-8 SYSFONT=latarcyrheb-sun16 KEYTABLE=cz-us-qwertz rhgb quiet
	initrd /initramfs-2.6.38.6-26.rc1.fc15.i686.img
[root@freshfedora freshlemon]# fdisk -lu

Disk /dev/sda: 250,1 GB, 250 059 350 016 bajtů
hlav: 255, sektorů na stopu: 63, cylindrů: 30 401, celkem 488 397 168 sektorů
Jednotky = sektory po 1 * 512 = 512 bajtech
Velikost sektoru (logického/fyzického): 512 bajtů / 512 bajtů
Velikost I/O (minimální/optimální): 512 bajtů / 512 bajtů
Identifikátor disku: 0x00016ba8

Zařízení Zavádět   Začátek       Konec    Bloky    Id  Systém
/dev/sda1   *        2048   192061439    96029696   83  Linux
/dev/sda2       476110846   488396799     6142977    5  Rozšířený
/dev/sda3       192061440   193085439      512000   83  Linux
/dev/sda4       193085440   476108799   141511680   8e  Linux LVM
/dev/sda5       476110848   488396799     6142976   82  Linux swap/Solaris

Diskové oddíly jsou chybně seřazeny

Disk /dev/mapper/vg_freshfedora-lv_swap: 4 227 MB, 4 227 858 432 bajtů
hlav: 255, sektorů na stopu: 63, cylindrů: 514, celkem 8 257 536 sektorů
Jednotky = sektory po 1 * 512 = 512 bajtech
Velikost sektoru (logického/fyzického): 512 bajtů / 512 bajtů
Velikost I/O (minimální/optimální): 512 bajtů / 512 bajtů
Identifikátor disku: 0x00000000

Na disku /dev/mapper/vg_freshfedora-lv_swap není korektní tabulka rozdělení disku.

Disk /dev/mapper/vg_freshfedora-lv_root: 53,7 GB, 53 687 091 200 bajtů
hlav: 255, sektorů na stopu: 63, cylindrů: 6 527, celkem 104 857 600 sektorů
Jednotky = sektory po 1 * 512 = 512 bajtech
Velikost sektoru (logického/fyzického): 512 bajtů / 512 bajtů
Velikost I/O (minimální/optimální): 512 bajtů / 512 bajtů
Identifikátor disku: 0x00000000

Na disku /dev/mapper/vg_freshfedora-lv_root není korektní tabulka rozdělení disku.

Disk /dev/mapper/vg_freshfedora-lv_home: 87,0 GB, 86 973 087 744 bajtů
hlav: 255, sektorů na stopu: 63, cylindrů: 10 573, celkem 169 869 312 sektorů
Jednotky = sektory po 1 * 512 = 512 bajtech
Velikost sektoru (logického/fyzického): 512 bajtů / 512 bajtů
Velikost I/O (minimální/optimální): 512 bajtů / 512 bajtů
Identifikátor disku: 0x00000000

Na disku /dev/mapper/vg_freshfedora-lv_home není korektní tabulka rozdělení disku.

Vím, že se to často řeší, ale jednoznačné řešení mého problému jsem nenašel, navíc v linuxu jsem stále začátečník a zrovna v této problematice bych nerad udělal chybu. Prosím, poraďte :slight_smile:

Priznam se, ze cistou instalaci Fedory uz jsem nejakou dobu nedelal, ale volba zda chci instalovat GRUB jako bootloader a kam tam urcite je. Problem tedy vznikl tim, ze si GRUB instalovany Ubuntu prepsal GRUBem z Fedory, ale ta do menu nedala Ubnutu (nevim zda to normalne dela).

Druha uroven problemu je to, ze Ubuntu pouziva Grub2 zatimco Fedora az do F15 pouziva Grub1. Grub2 je zcela jiny nez Grub1 a tak o sobe navzajem tak nejak nevi.

Nyni co s tim. Rada je jednoducha, do menu grubu z Fedory pridej Ubuntu, tak jej nastartujes, pak z Ubuntu muzes preinstalovat Grub2 na ktery jsi zvykly. Pak bude nasledovat trochu obtiznejsi sekce provest instalaci Grubu Fedory do /dev/sda3 (coz je predpokladam /boot Fedory) a jeho volani z Grubu2 Ubuntu. Vytvoris tedy neco cemu se rika chainloading - z jednoho zavadece nahrajes druhy.

Prvni otazka kterou jiz ted ctu, je, jak pridat Ubuntu do zavadece Fedory. Jednodusse. Ve Fedore pripoji oddil na kterem je Ubuntu, najdi /boot/ a v nem obraz linuxoveho jadra a initramfs a pridej analogicke radky do /etc/grub.conf Fedory. (Doufam tedy ze Ubuntu nema standardne jiny souborovy system nez ext3, protoze Grub1 neumi startovat z ext4 - coz by teoreticky mohl byt duvod proc ho tam Fedora “sama” nepridala.).

Pokud oddíly při instalaci upravujete ručně, volby instalace GRUBu se zobrazí. Já jsem však dal instalovat Fedoru do volného místa, v tom případě se uživatel o oddíly nestará (pokud se nemýlím, automaticky se vytvoří LMV oddíly) a nabídka instalace GRUBu se nezobrazí. Tím jsem si na 98 % jistý, jinak bych si to pamatoval - nikdy neodklikávám obrazovky aniž bych si je přečetl :slight_smile:

K Tvému dovětku: Ubuntu mám skutečně defaultně nainstalováno na ext4 souborovém systému.
Zde přikládám screenshot přehledu oddílů z gparted: http://dl.dropbox.com/u/6195090/gparted.png

sda1 = Ubuntu
sda2 je extended a je na něm sda5 = ubuntí swap.
teď je to trochu zvláštní - je tam sda3, který se připojuje do /boot a tato partition tam před instalací Fedory nebyla - není tedy možné, že Fedora nainstalovala grub na tuto partition a ne do mbr?
sda4 = Fedora.

Jak jste z mého psaní už dávno vyčetl, jsem opravdu začátečník, omluv tedy, prosím, případné omyly a nesmysly :slight_smile:
Co teď? Platí stále tvé výše zmíněné rady?

sda3 je /boot s ext3 nalezejici Fedore prave z toho duvodu, ze zbytek Fedory pouziva ext4 a Grub1 neumi z ext4 startovat. Proto se vytvari separatni oddil pro /boot. sda4 je LVM - to je diskova sktrutura umoznujici dalsi deleni disku, nebo naopak manipulaci s oddily na disku nebo napr. spojovani vice fyzickych disku do jednoho oddilu. V LVM je Fedora / (root) a fedora swap (viz vypis fdisku, ktery si sem daval).

Kam je nainstalovan Grub se z toho co uvadis neda prilis poznat, ale pokud startuje jako prvni grub fedory je to pravdepodobne MBR.

Otazkou je jak z toho vybruslit. Melo by to jit tak, ze vlezes do toho adresare /media/df61… coz je / od Ubuntu. Najdi v nem etc/grub.d/10_linux nebo tak neco. Tam najdi aktualne pousteny kernel a initramfs z /media/df61…/boot, ten zkopiruj do /boot Fedory a pridej do /etc/grub.conf Fedory radek pro start Ubuntu podle parametru z 10_linux.

Nezlob se, ale tady budu potřebovat trochu navést.

ve složce /media/df61…/grub.d jsem našel soubor 10_linux, ale nevím, jak v něm mám najít aktuálně pouštěný kernel.

ve složce /media/df61…/boot soubor jsou soubory:
inird.img-2.6.35-22-generic
inird.img-2.6.35-28-generic
inird.img-2.6.35-30-generic

zbytek toho, co jsi psal, snad vím, jak udělat :slight_smile:

To sem budes muset vlozit vypis toho souboru 10_linux a pokud mozno seznam vsech souboru z /media/…/boot - ty initrd jsou jen zavadeci ramdisky, jeste tam musi byt neco jako vmlinuz, nevim ted z hlavy jak se to v Ubuntu jmenuje.

Omlouvám se za zpoždění, byl jsem teď několik dní bez internetu.

Zde je obsah souboru 10_linux:


#! /bin/sh
set -e

# grub-mkconfig helper script.
# Copyright (C) 2006,2007,2008,2009,2010  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}
bindir=${exec_prefix}/bin
libdir=${exec_prefix}/lib
. ${libdir}/grub/grub-mkconfig_lib

export TEXTDOMAIN=grub
export TEXTDOMAINDIR=${prefix}/share/locale

CLASS="--class gnu-linux --class gnu --class os"

if [ "x${GRUB_DISTRIBUTOR}" = "x" ] ; then
  OS=GNU/Linux
else
  OS="${GRUB_DISTRIBUTOR}"
  CLASS="--class $(echo ${GRUB_DISTRIBUTOR} | tr '[A-Z]' '[a-z]' | cut -d' ' -f1) ${CLASS}"
fi

# loop-AES arranges things so that /dev/loop/X can be our root device, but
# the initrds that Linux uses don't like that.
case ${GRUB_DEVICE} in
  /dev/loop/*|/dev/loop[0-9])
    GRUB_DEVICE=`losetup ${GRUB_DEVICE} | sed -e "s/^[^(]*(\([^)]\+\)).*/\1/"`
    # We can't cope with devices loop-mounted from files here.
    case ${GRUB_DEVICE} in
      /dev/*) ;;
      *) exit 0 ;;
    esac
  ;;
esac

if [ "x${GRUB_DEVICE_UUID}" = "x" ] || [ "x${GRUB_DISABLE_LINUX_UUID}" = "xtrue" ] \
    || ! test -e "/dev/disk/by-uuid/${GRUB_DEVICE_UUID}" \
    || uses_abstraction "${GRUB_DEVICE}" lvm; then
  LINUX_ROOT_DEVICE=${GRUB_DEVICE}
else
  LINUX_ROOT_DEVICE=UUID=${GRUB_DEVICE_UUID}
fi

# add crashkernel option if we have the required tools
if [ -x "/usr/bin/makedumpfile" ] && [ -x "/sbin/kexec" ]; then
    GRUB_CMDLINE_EXTRA="$GRUB_CMDLINE_EXTRA crashkernel=384M-2G:64M,2G-:128M"
fi

linux_entry ()
{
  os="$1"
  version="$2"
  recovery="$3"
  args="$4"
  if ${recovery} ; then
    title="$(gettext_quoted "%s, with Linux %s (recovery mode)")"
  else
    title="$(gettext_quoted "%s, with Linux %s")"
  fi
  printf "menuentry '${title}' ${CLASS} {\n" "${os}" "${version}"
  cat << EOF
	recordfail
EOF
  save_default_entry | sed -e "s/^/\t/"

  # Use ELILO's generic "efifb" when it's known to be available.
  # FIXME: We need an interface to select vesafb in case efifb can't be used.
  if [ "x$GRUB_GFXPAYLOAD_LINUX" != x ]; then
	  cat << EOF
	set gfxpayload=$GRUB_GFXPAYLOAD_LINUX
EOF
  fi

  if [ -z "${prepare_boot_cache}" ]; then
    prepare_boot_cache="$(prepare_grub_to_access_device ${GRUB_DEVICE_BOOT} | sed -e "s/^/\t/")"
  fi
  printf '%s\n' "${prepare_boot_cache}"
  if [ "x$5" != "xquiet" ]; then
    cat << EOF
	echo	'$(printf "$(gettext_quoted "Loading Linux %s ...")" ${version})'
EOF
  fi
  cat << EOF
	linux	${rel_dirname}/${basename} root=${linux_root_device_thisversion} ro ${args}
EOF
  if [ "x$5" != "xquiet" ]; then
    cat << EOF
	echo	'$(gettext_quoted "Loading initial ramdisk ...")'
EOF
  fi
  if test -n "${initrd}" ; then
    cat << EOF
	initrd	${rel_dirname}/${initrd}
EOF
  fi
  cat << EOF
}
EOF
}

list=`for i in /boot/vmlinu[zx]-* /vmlinu[zx]-* ; do
        if grub_file_is_not_garbage "$i" ; then echo -n "$i " ; fi
      done`
prepare_boot_cache=

while [ "x$list" != "x" ] ; do
  linux=`version_find_latest $list`
  echo "Found linux image: $linux" >&2
  basename=`basename $linux`
  dirname=`dirname $linux`
  rel_dirname=`make_system_path_relative_to_its_root $dirname`
  version=`echo $basename | sed -e "s,^[^0-9]*-,,g"`
  alt_version=`echo $version | sed -e "s,\.old$,,g"`
  linux_root_device_thisversion="${LINUX_ROOT_DEVICE}"

  initrd=
  for i in "initrd.img-${version}" "initrd-${version}.img" \
	   "initrd-${version}" "initramfs-${version}.img" \
	   "initrd.img-${alt_version}" "initrd-${alt_version}.img" \
	   "initrd-${alt_version}" "initramfs-${alt_version}.img"; do
    if test -e "${dirname}/${i}" ; then
      initrd="$i"
      break
    fi
  done
  if test -n "${initrd}" ; then
    echo "Found initrd image: ${dirname}/${initrd}" >&2
  else
    # "UUID=" magic is parsed by initrds.  Since there's no initrd, it can't work here.
    linux_root_device_thisversion=${GRUB_DEVICE}
  fi

  linux_entry "${OS}" "${version}" false \
      "${GRUB_CMDLINE_LINUX} ${GRUB_CMDLINE_EXTRA} ${GRUB_CMDLINE_LINUX_DEFAULT}" \
      quiet
  if [ "x${GRUB_DISABLE_LINUX_RECOVERY}" != "xtrue" ]; then
    linux_entry "${OS}" "${version}" true \
	"single ${GRUB_CMDLINE_LINUX}"
  fi

  list=`echo $list | tr ' ' '\n' | grep -vx $linux | tr '\n' ' '`
done

Zde je screenshot souborů v ubuntím /boot:
http://dl.dropbox.com/u/6195090/boot.png

Situace se ale trochu zkomplikovala, protože když jsem den po naší konverzaci zapnul počítač, po zalogování se ukázala chybová hláška: Jejda! Něco se pokazilo. Došlo ke komplikacím a systém se nepodařilo obnovit. Odhlaste se prosím a zkuste to znovu.

To nepomůže a hláška se zobrazuje stále, fedoru tedy nemůžu rozjet. Jediné, co jsem předtím dělal byla instalace libreoffice, gimpu, inkscape přes manažer softwaru (či balíčkový manažer, teď nevím přesný název). Používám nyní tedy Puppy Linux, který mám na flashdisku. Nevím však, jak se z Puppy linuxu dostanu na LVM partitions Fedory, sdandardně se mi nezobrazují - nevím tedy, zda budu schopen kopírovat soubory na tyto oddíly.

V tuto chvíli bych byl rád, kdyby se mi podařilo bootovat do Ubuntu, Fedoru jsem chtěl vyzkoušet kvůli důkladnějšímu testování Gnome3 se Shellem, než je možné v rámci live CD. Dalo by se říct, že po tom dni používání vím, co od gnome3 + shell čekat. Pokud by nebylo možné zprovoznit boot Ubuntu, dá se situace vyřešit přeinstalací Ubuntu?
Děkuji, Freshlemon

Vskutku nevim proc by se melo instalaci neceho takoveho vse totalne pokazit. Pokud si chtel jen zkusit Gnome3 stacilo pustit Fedoru z LiveCD. Totez bych doporucoval udelat s Ubuntu. Viz. https://help.ubuntu.com/community/RecoveringUbuntuAfterInstallingWindows#Using%20the%20Ubuntu%20CD%20(Recommended)

Jeste jedna mala rada - prikazem “ls” v terminalu vypises obsah adresare a text muzes zkopirovat, neni potreba delat screenshoty.

Také nevím, ale je mi jasné, že to není standardní situace a do budoucna na fedoru určitě nezanevřu. Z Live CD jsem gnome 3 samozřejmě vyzkoušel, ale chtěl jsem jej otestovat důkladněji, při běžném každodenním používání.
Děkuji za tip; příkaz znám, ale nenapadlo mě takhle ho využít :slight_smile:

Podle návodu z odkazu jsem grub opravil a problém je tak vyřešen. Děkuji za pomoc a přeji hezký den!