NTLDR is missing po instalacji Ubuntu

Witam.

Mam na komputerze Windows 7 i Ubuntu 11.04. Taki stan rzeczy istnieje od niedawna, gdyż przeprowadzałem format i reinstalację. Moim problemem jest to, że nie mogę dostać się do Windowsa. Gdy w GRUB-ie wybiorę właśnie Siódemkę to wyskakuje błąd mówiący, że brakuje pliku NTLDR. Aby uruchomić system Microsoftu muszę włożyć pendrive’a, z którego go instalowałem i w konsoli wpisać poelcenie bootrec /fixmbr. Wtedy 7 włącza się bezproblemowo, ale z kolei nie mam GRUB-a i dostępu do Ubuntu. I dalej - żeby mieć Linuxa uruchamiam go z płyty, aktualizuję GRUB-a i mam Ubuntu, ale brak pliku NTLDR. I tak w kółko. Co poradzić w takiej sytuacji, żebym miał dostęp do obu systemów?

Dodam, że dysk podzieliłem na 3 partycje pod Ubuntu: / , /boot i /home , przestrzeń wymiany, partycję pod Windowsa i z danymi. Przy instalacji Linuxa jako miejsce dla GRUB-a wskazałem to co było domyślne, czyli dev/sda, więc chyba MBR. Pomóżcie… :?

Pokaż zawartość pliku /boot/grub/grub.cfg.

Pozdrawiam!

grub.cfg

#

# DO NOT EDIT THIS FILE

#

# It is automatically generated by 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

  set have_grubenv=true

  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

}


function load_video {

  insmod vbe

  insmod vga

  insmod video_bochs

  insmod video_cirrus

}


insmod part_msdos

insmod ext2

set root='(/dev/sda,msdos8)'

search --no-floppy --fs-uuid --set=root 6adbf15b-e8d9-47cd-b8fc-0eed8c227952

if loadfont /usr/share/grub/unicode.pf2 ; then

  set gfxmode=auto

  load_video

  insmod gfxterm

fi

terminal_output gfxterm

insmod part_msdos

insmod ext2

set root='(/dev/sda,msdos9)'

search --no-floppy --fs-uuid --set=root 4b99147f-870d-42a3-9208-db1d4d3e03e3

set locale_dir=($root)/grub/locale

set lang=pl_PL

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 ###

insmod part_msdos

insmod ext2

set root='(/dev/sda,msdos8)'

search --no-floppy --fs-uuid --set=root 6adbf15b-e8d9-47cd-b8fc-0eed8c227952

insmod png

if background_image /usr/share/images/desktop-base/spacefun-grub.png; then

  set color_normal=light-gray/black

  set color_highlight=white/black

else

  set menu_color_normal=white/black

  set menu_color_highlight=black/light-gray

  if background_color 44,0,30; then

    clear

  fi

fi

### END /etc/grub.d/05_debian_theme ###


### BEGIN /etc/grub.d/10_linux ###

if [${recordfail} != 1]; then

  if [-e ${prefix}/gfxblacklist.txt]; then

    if hwmatch ${prefix}/gfxblacklist.txt 3; then

      if [${match} = 0]; then

        set linux_gfx_mode=keep

      else

        set linux_gfx_mode=text

      fi

    else

      set linux_gfx_mode=text

    fi

  else

    set linux_gfx_mode=keep

  fi

else

  set linux_gfx_mode=text

fi

export linux_gfx_mode

if ["$linux_gfx_mode" != "text"]; then load_video; fi

menuentry 'Ubuntu, za pomocÄ… systemu Linux 2.6.38-8-generic' --class ubuntu --class gnu-linux --class gnu --class os {

	recordfail

	set gfxpayload=$linux_gfx_mode

	insmod part_msdos

	insmod ext2

	set root='(/dev/sda,msdos9)'

	search --no-floppy --fs-uuid --set=root 4b99147f-870d-42a3-9208-db1d4d3e03e3

	linux	/vmlinuz-2.6.38-8-generic root=UUID=6adbf15b-e8d9-47cd-b8fc-0eed8c227952 ro quiet splash vt.handoff=7

	initrd	/initrd.img-2.6.38-8-generic

}

menuentry 'Ubuntu, za pomocÄ… systemu Linux 2.6.38-8-generic (tryb ratunkowy)' --class ubuntu --class gnu-linux --class gnu --class os {

	recordfail

	set gfxpayload=$linux_gfx_mode

	insmod part_msdos

	insmod ext2

	set root='(/dev/sda,msdos9)'

	search --no-floppy --fs-uuid --set=root 4b99147f-870d-42a3-9208-db1d4d3e03e3

	echo	'Loading Linux 2.6.38-8-generic ...'

	linux	/vmlinuz-2.6.38-8-generic root=UUID=6adbf15b-e8d9-47cd-b8fc-0eed8c227952 ro single 

	echo	'Loading initial ramdisk ...'

	initrd	/initrd.img-2.6.38-8-generic

}

### END /etc/grub.d/10_linux ###


### BEGIN /etc/grub.d/20_linux_xen ###

### END /etc/grub.d/20_linux_xen ###


### BEGIN /etc/grub.d/20_memtest86+ ###

menuentry "Memory test (memtest86+)" {

	insmod part_msdos

	insmod ext2

	set root='(/dev/sda,msdos9)'

	search --no-floppy --fs-uuid --set=root 4b99147f-870d-42a3-9208-db1d4d3e03e3

	linux16	/memtest86+.bin

}

menuentry "Memory test (memtest86+, serial console 115200)" {

	insmod part_msdos

	insmod ext2

	set root='(/dev/sda,msdos9)'

	search --no-floppy --fs-uuid --set=root 4b99147f-870d-42a3-9208-db1d4d3e03e3

	linux16	/memtest86+.bin console=ttyS0,115200n8

}

### END /etc/grub.d/20_memtest86+ ###


### BEGIN /etc/grub.d/30_os-prober ###

menuentry "Windows 7 (loader) (on /dev/sda1)" --class windows --class os {

	insmod part_msdos

	insmod ntfs

	set root='(/dev/sda,msdos1)'

	search --no-floppy --fs-uuid --set=root 01CBAE7CDC932680

	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 ###


### BEGIN /etc/grub.d/41_custom ###

if [-f $prefix/custom.cfg]; then

  source $prefix/custom.cfg;

fi

### END /etc/grub.d/41_custom ###

A to zrzut z GParted, może coś wyjaśni…

http://zapodaj.net/e74a999685e5.png.html

Prawdopodobnie nie sformatowałeś starego MBR, w zasadzie należało go usunąć, a Win7 utworzyłby go na nowo przy instalacji. Sam plik NTLDR przynajmniej w Win XP można “podmienić”, czyli usunąć

z dysku i w jego miejsce w Twoim przypadku skopiować z instalatora systemu znajdującego się na Pendrive.

Najszybciej uzyskasz efekt reinstalując obydwa systemy, najpierw Win 7, potem Linuksa.

W Windows 7 raczej nie ma możliwości skopiowania pliku NTLDR, szukałem w Googlach i nic, pozostaje opcja fixboot , ewentualnie fixmbr.

Chyba chodzi ci o wyczyszczenie MBR-a, a nie jego usunięcie. A da się go w ogóle sformatować?

Ubuntu instalowałem ponownie już kilka razy, Windowsa nie ruszałem. Przed reinstalacją zmieniałem rozmiary partycji i oczywiście je formatowałem. Wcześniej miałem oprócz dwóch wymienionych systemów też XP, teraz już nie, może to wpływa jakoś na problem?

Problem raczej nie leży w braku tego pliku (pliki o tak sobie nie znikają, chyba że był na partycji z XP), tylko w tym że poprzez zmianę partycji windows-owy bootloader nie może znaleźć tego pliku jako że mogła się zmienić kolejność partycji. Najlepszym rozwiązaniem w tym przypadku jest włożenie płytki instalacyjne z Win 7, użycie opcji Napraw system (czy jakoś tak) a następnie jeżeli będzie taka potrzeba przywrócenia grub-a, a na przyszłość, jeżeli mam zainstalowanego win-a i nie chcemy go “zepsuć” to raczej nie należy grzebać w układzie partycji.

Zbyt zawile wyszło, więc wyjaśniam: usunięcie=sformatowanie=wyczyszczenie (MBR). Ponieważ wciąż zmieniałeś tablice partycji, przy każdej reinstalacji systemu, wyczyszczenie wyłącznie programu rozruchowego w MBR może nie wystarczyć, napraw , jeśli to jeszcze możliwe.

@dragonn wyjaśnił cały problem.

Używałem narzędzia Napraw z nośnika instalacyjnego, ale nie pomogło.

Zreinstalowałem Windowsa i Ubuntu i, o dziwo, działają obydwa systemy. Ciekawe, jak długo… :slight_smile:

Dzięki za pomoc i rady.