Skocz do zawartości

Reinstalacja Grub2 - Brak Source_Dir.


Jusko

Rekomendowane odpowiedzi

Czesc,

 

prawde mówiac z glupiego powodu bo jednej gry, zainstalowalem Windows 7 (choc numerek znaczenia raczej nie ma). Windows jak Windows, swój bootloader zainstalowal. Szczescie takie, ze z poziomu ekranu wyboru sposobu bootowania BIOSOWEGO pod F12 moge wybierac miedzy Windows a Fedora, totez Fedore na dysku odpalic moge. Chcialem reinstalowac gruba, ale od czasu wprowadzenia tego cholerstwa grub2 który dla mnie jako uzytkownika nie wniósl nic wiecej poza skomplikowaniem struktury plików, to wniósl problem z reinstalacja. Przekopalem bowiem nawet manual Fedorowy i tutoriale w sieci nt. reinstalacji, i kazdy byl na zasadzie:

 

chroot /mnt/sysimage (odpada, bo robie to z poziomu zainstalowanej fedory)
grub2-install /dev/sda
grub2-mkconfig -o /boot/grub2/grub.cfg

 

Niestety wszystko rozbija sie o kant juz po pierwszym poleceniu, bo:

 

[root@lapek ~]# grub2-install /dev/sda1

source_dir nie istnieje. Prosze okreslic --target lub --directory

 

Sda1 przyjalem z racji tego, iz jest to /boot/efi, byc moze nieslusznie. Ogólnie rozklad sda mam od 1 do 4 i w kazdym przypadku polecenie zwraca ten sam blad. Próbowalem zrobic to programikiem Grub Customizer który niby Grub2 obsluguje, ale prócz komunikatu z source_dir, zwraca taki log:

 

grub2-mkconfig couldn't be executed successfully. error message:
Generowanie grub.cfg...
Znaleziono obraz Linuksa: /boot/vmlinuz-3.5.3-1.fc17.x86_64
Znaleziono obraz initrd: /boot/initramfs-3.5.3-1.fc17.x86_64.img
Znaleziono obraz Linuksa: /boot/vmlinuz-3.5.2-3.fc17.x86_64
Znaleziono obraz initrd: /boot/initramfs-3.5.2-3.fc17.x86_64.img
Znaleziono obraz Linuksa: /boot/vmlinuz-3.5.2-1.fc17.x86_64
Znaleziono obraz initrd: /boot/initramfs-3.5.2-1.fc17.x86_64.img
+ prefix=/usr
+ exec_prefix=/usr
+ datarootdir=/usr/share
+ export TEXTDOMAIN=grub
+ TEXTDOMAIN=grub
+ export TEXTDOMAINDIR=/usr/share/locale
+ TEXTDOMAINDIR=/usr/share/locale
+ . /usr/share/grub/grub-mkconfig_lib
++ transform='s&^&&;s,grub,grub2,'
++ prefix=/usr
++ exec_prefix=/usr
++ datarootdir=/usr/share
++ datadir=/usr/share
++ bindir=/usr/bin
++ sbindir=/usr/sbin
++ pkgdatadir=/usr/share/grub
++ test x = x
+++ sed 's&^&&;s,grub,grub2,'
+++ echo grub-probe
++ grub_probe=/usr/sbin/grub2-probe
++ test x = x
+++ sed 's&^&&;s,grub,grub2,'
+++ echo grub-mkrelpath
++ grub_mkrelpath=/usr/bin/grub2-mkrelpath
++ which gettext
++ :
+ '[' x = xtrue ']'
++ which os-prober
++ which linux-boot-prober
+ '[' -z /bin/os-prober -o -z /bin/linux-boot-prober ']'
++ paste -s -d ' '
++ os-prober
++ tr ' ' '^'
 No volume groups found
+ OSPROBED=
+ '[' -z '' ']'
+ exit 0
 No volume groups found
/etc/grub.d/40_custom: line 1: menuentry: nie znaleziono polecenia
/etc/grub.d/40_custom: line 2: blad skladni przy nieoczekiwanym znaczniku `('
/etc/grub.d/40_custom: line 2: `set root=(hd0,5)'

 

I kicha. Generalnie pól biedy, bo w menu szybkiego bootowania moge wybierac jaki system chce uruchomic, lecz chcialbym po bozemu menu gruba ponownie którego sila rzeczy Windows wywalil, a z samym wykrywaniem W7 x64 i tak mialem kiedys problemy z grub2, bo uparcie dodawanie reczne w plikach menu pozycji Windows 7 x64 nie przynosilo rezultatu a os-prober bodaj tez Windy nie widzial (na szczescie ponownie - mam pod F12 menu szybkiego bootowania przy uruchamianiu lapka i to ratowalo sprawe). To juz moje drugie lub trzecie zderzenie z problemem, wiec chyba raczej musze znalezc na to rozwiazanie.

Odnośnik do komentarza
Udostępnij na innych stronach

Pokaz co masz w katalogu /boot/grub2 i zawartosc /boot/grub2/device.map.

I moze jeszcze na wszelki wypadek sprawdz czy nie masz czegos dziwnego w /etc/grub.d/40_custom. U mnie w tym pliku:

#!/bin/sh
exec tail -n +3 $0
# 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.

 

[EDIT]

To co wyzej raczej niewazne.

Nie zauwazylem, ze robisz grub2-install /dev/sda1 - to ma byc na dysku a nie na partycji

Odnośnik do komentarza
Udostępnij na innych stronach

Zawartosc /boot/grub2:

 

# ls /boot/grub2

grub.cfg  grubenv  themes

 

device.map tam nie widze, natomiast plik grub:

 

cat /etc/grub.d/40_custom

menuentry "Windows 7"{
set root=(hd0,5)
chainloader +1

 

Wszytko rozbija sie o

[root@lapek ~]# grub2-install /dev/sda
source_dir nie istnieje. Prosze okreslic --target lub --directory

 

Poczatkowo kierowany logika chcialem zainstalowac to na /dev/sda, jak to ze starym grubem sie robilo, ale komunikat ten sam, dlatego chcialem eksperymentowac z instalacja na partycji. Ogólnie nic w systemie mi sie nie posypalo, po prostu wszystk o dzialalo, po czym zainstalowalem wczoraj Windows. Teoretycznie wszystkie tutoriale sa takie same i sprowadzaja sie do grub2-install, ale widac wszystkim userom sie to udaje, bo w zadnym nie znalazlem co zrobic, kiedy to nie wychodzi. Poprzednim razem po paru dniach przegladania milionowego tutoriala w którym pisalo to samo dalem za wygrana i reinstalowalem system, ale to nie jest rozwiazanie.

Odnośnik do komentarza
Udostępnij na innych stronach

Zaczalbym od wstawienia standardowej zawartosci do 40_custom, bo jak widac tam cos nie pasuje.

I chyba jednak plik /boot/grub2/device.map powinien istniec. Przy jednym dysku powinien zawierac jedna linie:

(hd0) /dev/sda

Jak grub2-mkconfig pójdzie bez bledów, to wtedy trzeba sie bedzie postarac o dodanie Windows do menu. Chociaz wydaje mi sie, ze to powinno sie dodac bez zadnych dodatkowych wpisów.

 

P.S. Glupia uwage jednego z kolegów o "powaznych programach" oraz Twoja odpowiedz pozwolilem sobie usunac z watku, bo to calkiem nie na temat.

 

[EDIT]

No i w tej sytuacji nie nadgrywalbym bezposrednio pliku gfrub.cfg tylko robilbym go gdzies "na boku". Np. grub2-mkconfig -o /root/grub.cfg - jak bedzie dobry to sobie skopiujesz recznie do /boot/grub2

Odnośnik do komentarza
Udostępnij na innych stronach

Brak Windows w grub jakos przeboleje, niedlugo i tak wyparuje z dysku a zawsze mam wybór windows spod klawisza F12 przy uruchamianiu lapka. Problem jest taki, ze bootloader Windows nadpisal grub co nie jest niczym nowym. Chce po prostu reinstalowac gruba i z tym jest wlasnie komplikacja - blad source dir, ale skoro

 

[root@lapek ~]# grub2-install /dev/sda
source_dir nie istnieje. Prosze okreslic --target lub --directory

 

No to nie wiem w jakim kosmicznym miejscu oraz kosmicznym sposobem instalator tego grub zainstalowal.

Odnośnik do komentarza
Udostępnij na innych stronach

Problemem jest wg mnie niepelna zawartosc katalogu /boot/grub2. U mnei zawartosc tego katalogu to

[root@F17 ~]# ls -l /boot/grub2
razem 34
-rw-r--r--. 1 root root	84 06-02 19:01 device.map
drwxr-xr-x. 2 root root  1024 06-02 19:01 fonts
-rw-------. 1 root root 14682 07-21 20:10 grub.cfg
-rw-r--r--. 1 root root  1024 06-02 19:01 grubenv
drwxr-xr-x. 2 root root  7168 06-07 09:24 i386-pc
drwxr-xr-x. 2 root root  1024 06-02 19:01 locale
drwxr-xr-x. 4 root root  1024 05-09 22:23 themes

Z tego co widze w Googlach, to problemem moze byc brak u Ciebie katalogu i386-pc. Moze gdzies sie "przypadkiem" przesunal? Na podstawie mojego systemu sadze, ze powinno tam byc to samo co w /usr/lib/grub/i386-pc (z wyjatkiem plików *.module, *.image, kernel.exec). Chyba nie stanie sie nic strasznego jesli utworzysz katalog /boot/grub2/i386-pc i skopiujesz do niego pliki z /usr/lib/grub/i386-pc z wyjatkiem tych, o których wspomnialem. Na pewno jest jakies magiczne zaklecie, które to wykonuje w bardziej poprawny sposób, ale musialbym poszukac.

 

Byc moze, ale na zywym systemie bym raczej nie eksperymentowal, wystarczyloby

grub2-install--target=i386-pc /dev/sda

 

 

[EDIT]

To polecenie co napisalem powyzej moze sie sprawdzic. Znalazlem cos takiego → https://wiki.archlinux.org/index.php/GRUB2 W podrozdziale → https://wiki.archlinux.org/index.php/GRUB2#Install_to_440-byte_MBR_boot_code_region jest uwaga mówiaca, ze czasem dodanie opcji --target jest konieczne.

Edytowane przez WalDo
Odnośnik do komentarza
Udostępnij na innych stronach

Czy zamiast i386 w poleceniu grub, mozna wstawic x64 lub x86_64? Katalog i386-pc byc moze nie wystepuje, poniewaz mam 64bitowy system. Nie wiem juz jak sobie z tym radzic - musi byc jakis sposób na instalacje grub...hmm...jesli nie znajdziemy rozwiazania, zapytam na fedoraforums, moze tam cos wiedza o tym.

Odnośnik do komentarza
Udostępnij na innych stronach

[root@lapek ~]# grub2-install --target=i386-pc /dev/sda
/usr/sbin/grub2-bios-setup: uwaga: ta etykieta partycji GPT nie ma BIOS-wej partycji rozruchowej; osadzanie nie bedzie mozliwe.
/usr/sbin/grub2-bios-setup: uwaga: Osadzanie nie jest mozliwe. Program GRUB moze byc instalowany z tymi ustawieniami tylko uzywajac list blokowania. Jednakze, listy blokowania sa NIEPEWNE, a ich uzywanie jest niezalecane..
/usr/sbin/grub2-bios-setup: blad: nie zostanie kontynuowane za pomoca list blokowania.
[root@lapek ~]#

 

Poddaje sie :unsure: Rozbroilo mnie to kompletnie. To jak do choinki instalator fedory niby to instaluje.

 

Co do slynnego partycji BIOS Boot czy jak sie to zwalo, instalator sam sobie w automatycznej opcji ja utworzyl, wiec nie wiem jak moze jej nie miec, skoro instalator bez niej nie chcial przejsc do nastepnego kroku. Byc moze w drugiej linii komunikatu jest jakas podpowiedz, ale kompletnie sie na tym nie znam.

 

EDIT: w wiki archa znalazlem o dodawaniu parametru --force. Dodalem i teoretycznie:

 

[root@lapek ~]# grub2-install --target=i386-pc --force /dev/sda
/usr/sbin/grub2-bios-setup: uwaga: ta etykieta partycji GPT nie ma BIOS-wej partycji rozruchowej; osadzanie nie bedzie mozliwe.
/usr/sbin/grub2-bios-setup: uwaga: Osadzanie nie jest mozliwe. Program GRUB moze byc instalowany z tymi ustawieniami tylko uzywajac list blokowania. Jednakze, listy blokowania sa NIEPEWNE, a ich uzywanie jest niezalecane..
Instalacja zakonczona. Nie zgloszono bledów.

 

Zobaczmy, czy grub sie pojawi...

 

 

EDIT2:

 

cóz, nadal defaultowo startuje bootloader Windows. Wszystko jest o tyle specyficzne, ze grub byl i jest, instalacja niczego nie zmienila. Generalnie jak wspomnialem grub jest, ale startuje defaultowo Windowsowy bootloader - liczylem ze wystartuje grub. Grub jest, bo:

 

- kiedy wystartuje lapka, klepne F12 i z listy wybiore pozycje nr. 2: "Fedora", laduje sie grub i moge dzialac dalej, dlatego pisze z fedory mimo zainstalowanego Windows.

 

- Jesli nie wejde podczas uruchamiania lapka w menu pod F12, laduje sie bootloader Windows. Pozycja nr. 1 na liscie pod wspomnianym klawiszem jest "Windows bootloader".

 

Sprawa jest dla mnie nietypowa, ale zla o tyle, ze po wywaleniu Windows nie wiem co sie stanie bez wchodzenia w menu bootowania, pewnie nic sie nie uruchomi, a wchodzenie potem do systemu pod ciaglym F12 bedzie meczace. Grub jak widac jest gdzies obok Windowsowego bootloadera. Czy palne glupote jesli powiem, ze byc moze grub nie jest zatem instalowany do mbr tylko na cos innego? Jak bowiem wytlumaczyc, ze defaultowo jest bootmanager Windows, a grub nadal istnieje gdzies obok (byc moze jest na tym /boot/efi czyli sda1?).

Odnośnik do komentarza
Udostępnij na innych stronach

No to ja tez wymiekam. Wprowadziles tyle zmiennych, ze zaczalem sie zastanawiac czy masz jeden dysk czy dwa :) Bo skad pod F12 dwie pozycje startowe? Chyba, ze to jakis ficzer, który rozpoznaje boot partycje?

 

Tak jeszcze z ciekawosci na zakonczenie - mozesz podac wynik

fdisk -l

?

Odnośnik do komentarza
Udostępnij na innych stronach

Dysk jest jeden, ale z paroma partycjami :) Na dysku sa dwa systemy - Fedora i od chwili czasu Windows 7. Póki byla sama Fedora, grzecznie ladowal sie grub i linux odpalal. Po instalacji produktu MS, defaultowo laduje sie bootloader Windows i uruchamia sie W7. Po uruchomieniu lapka, pod klawiszem F12 mam boot menu, z opcjami widocznymi ponizej:

 

a9d3d786c1036458m.jpg

 

Jesli z tego menu wybiore Fedore, ladnie uruchamia sie GRUB i wszystko jest tak, jakby nie bylo nigdy Windows. Patent jest w tym, ze chcialbym znowu aby sam z siebie, defaultowo uruchamial sie GRUB. Problem w tym, ze ten GRUB jest, bo wystartowac z Boot Menu Fedore moge, wiec widac GRUB siedzi gdzies obok, gdzie zainstalowal go instalator Fedory 17 (byc moze na wymaganej przez instalator partycji BIOS Boot, czyli /boot/efi, u mnie sda1).

 

Fdisk -l wiele nie mówi, bo (ciekawe gdzie wcielo reszte partycji do sda4):

 

UWAGA: Na '/dev/sda' wykryto tablice partycji GPT (GUID Partition Table)! fdisk nie obsluguje GPT. Nalezy uzyc GNU Parteda.

Dysk /dev/sda: 320.1 GB, bajtów: 320072933376
glowic: 255, sektorów/sciezke: 63, cylindrów: 38913, w sumie sektorów: 625142448
Jednostka = sektorów, czyli 1 * 512 = 512 bajtów
Rozmiar sektora (logiczny/fizyczny) w bajtach: 512 / 4096
Rozmiar we/wy (minimalny/optymalny) w bajtach: 4096 / 4096
Identyfikator dysku: 0x00000000
Urzadzenie Rozruch   Poczatek	  Koniec   Bloków   ID  System
/dev/sda1			   1   625142447   312571223+  ee  GPT
Partycja 1 nie zaczyna sie na granicy bloku fizycznego.

 

Czyli pokazuje /boot/efi. Jesli chodzi o ficzer z systemami w boot menu, mój BIOS to w specyfikacji lapka Phoenix EFI, czyli cos supportujacego juz UEFI 2 i bedacy posrednikiem miedzy nowymi sprzetami bazujacymi juz na EFI/UEFI a starym typem BIOS (wizualnie - stary BIOS, ale widac dzialajacy juz w nowej specyfikacji). Stad pewnie hocki klocki, obowiazkowa partycja BIOS boot czy moze ten ficzer z systemem. Ciekawi mnie tylko, co stanie sie po wywaleniu Windows - GRUB sam wskoczy na swoje miejsce, czy wywali mi monit o braku systemów operacyjnych i komputer sie nie uruchomi (póki recznie nie wybiore Fedory spod F12).

Odnośnik do komentarza
Udostępnij na innych stronach

Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.

Zarejestruj nowe konto

Załóż nowe konto. To bardzo proste!

Zarejestruj się

Zaloguj się

Posiadasz już konto? Zaloguj się poniżej.

Zaloguj się
×
×
  • Dodaj nową pozycję...