Grub po przenosinach systemu

Pomoc dotycząca instalacji systemu
mariaczi
Member
Posty: 1343
Rejestracja: 08 lutego 2008, 12:58
Lokalizacja: localhost@śląskie

Grub po przenosinach systemu

Post autor: mariaczi »

Witam.

Przenosiłem system na większy dysk. Operacja przeniesienia systemu przeszła sprawnie. Grub uruchamia system, jednak instalacja nowego jądra z paczek lub tez uruchomienie update-grup źle wpisuje wartości po "root=".
Wcześniej system był na jednej partycji, czyli root=/dev/hda1 było jak najbardziej poprawne.
Teraz partycja root jest na dev/hda2, montowanie jest poprawne. Mimo tego po odpaleniu systemu i wydaniu update-grub wpis po root zmienia się na /dev/hda1 czyli tak jak było na poprzednim dysku.
Proba reinstalacji gruba nic nie daje:

Kod: Zaznacz cały

grub> root (hd0,1)
 Filesystem type is ext2fs, partition type 0x83

grub> setup (hd0)
 Checking if "/boot/grub/stage1" exists... no
 Checking if "/grub/stage1" exists... no

Error 15: File not found
Co poczynić jeszcze?
Ręczne poprawianie w menu.lst może mnie zaskoczyć, gdy pamięć zawiedzie :)

Edit:
Dodam, że partycja boot jest na /dev/hda1
fnmirk
Senior Member
Posty: 8321
Rejestracja: 03 grudnia 2007, 06:37

Post autor: fnmirk »

mariaczi pisze:Ręczne poprawianie w menu.lst może mnie zaskoczyć, gdy pamięć zawiedzie
Możesz dodać ręczny wpis na samym końcu zaraz po tekście:

Kod: Zaznacz cały

### END DEBIAN AUTOMAGIC KERNELS LIST
Wtedy nie będzie zmieniany. Nie działające wpisy będą się pojawiać po wykonaniu polecenia:

Kod: Zaznacz cały

update-grub
Jest to najprostsze (działające) ale jeszcze nie całkowite rozwiązanie. Może później coś wymyślę albo ktoś podpowie.
mariaczi
Member
Posty: 1343
Rejestracja: 08 lutego 2008, 12:58
Lokalizacja: localhost@śląskie

Post autor: mariaczi »

Od przeniesienia systemu poszukuje właśnie co i jak się dzieje. Jakiś błąd jest w funkcji find_device() w update-grub jednak ręczne wykonanie

Kod: Zaznacz cały

grub-probe --device-map=${device_map} -t device $1 2> /dev/null
gdzie za $1 podstawiana jest partycja root ("/") zwraca mi poprawnie.
fnmirk
Senior Member
Posty: 8321
Rejestracja: 03 grudnia 2007, 06:37

Post autor: fnmirk »

mariaczi, to co napisałem będzie działać i nie będziesz musiał ręcznie nic dopisywać. Jedynie pamiętać abyś nie usunął jądra, do którego dodany ręcznie wpis się odnosi. Będziesz musiał jedynie usunąć wpis automatyczny.

Przedstaw wynik:

Kod: Zaznacz cały

fdisk -l
ArnVaker

Post autor: ArnVaker »

A nie zapomniałeś po prostu zmienić wpisu odpowiadającego za partycję "/" w menu.lst?

Przykład z mojego pliku:

Kod: Zaznacz cały

## ## Start Default Options ##
## default kernel options     
## default kernel options for automagic boot options
## If you want special options for specific kernels use kopt_x_y_z
## where x.y.z is kernel version. Minor versions can be omitted.  
## e.g. kopt=root=/dev/hda1 ro                                    
##      kopt_2_6_8=root=/dev/hdc1 ro                              
##      kopt_2_6_8_2_686=root=/dev/hdc2 ro                        
# kopt=root=/dev/sda6 ro                                          

## default grub root device
## e.g. groot=(hd0,0)      
# groot=(hd0,4)
Za partycję "/" odpowiada linijka:

Kod: Zaznacz cały

# kopt=root=/dev/sda6 ro
Za partycję, na której znajduje się katalog "grub" i pliki jądra odpowiada linijka:

Kod: Zaznacz cały

# groot=(hd0,4)
Polecenie:

Kod: Zaznacz cały

update-grub
opiera się właśnie na zdefiniowanych w tym miejscu wartościach.
mariaczi
Member
Posty: 1343
Rejestracja: 08 lutego 2008, 12:58
Lokalizacja: localhost@śląskie

Post autor: mariaczi »

ArnVaker, domyślnie opcje które podałeś są skomentowane a mimo to podczas instalacji systemu od podstaw, generowanie menu.lst przebiega jak najbardziej prawidłowo.

Właśnie wykonałem kolejno:
1. zmieniłem nazwę menu.lst na jakąś inną, czyli update-grub nie widział już starego pliku menu
2. uruchomiłem update-grub w celu wygenerowania menu
W menu.lst pojawiły się odpowiednie wpisy z wykorzystaniem UUIDow partycji a nie nazw urzadzenia.

Nastepnie przywrocilem poprzednia wersje menu.lst i ustawilem kopt na moja partycje root. Uruchomienie update-grub wygenerowalo menu.lst ze wskazaniem na odpowiednia partycje root jednak z wykorzystaniem UUID, czyli tak samo jak w przypadku, gdy menu.lst nie istnialby.

Czekam na dalsze propozycje, bo temat wydaje mi się ciekawy.
Ja podejrzewam błąd w skrypcie update-grup, z wydobywaniem wskazania na partycje root przez funkcje.
ArnVaker

Post autor: ArnVaker »

mariaczi pisze:domyślnie opcje które podałeś są skomentowane a mimo to podczas instalacji systemu od podstaw, generowanie menu.lst przebiega jak najbardziej prawidłowo.
Specyfika pliku menu.lst gruba. To tylko wygląda na zakomentowane, podane opcje jak najbardziej brane są pod uwagę. Po prostu zmień ten wpis na taki:

Kod: Zaznacz cały

# kopt=root=/dev/hda2 ro
mariaczi
Member
Posty: 1343
Rejestracja: 08 lutego 2008, 12:58
Lokalizacja: localhost@śląskie

Post autor: mariaczi »

Faktycznie, brane jest to pod uwage podczas generowania menu. Zastanawia mnie natomiast fakt, po co w update-grub jest wyciagana nazwa urzadzenia/partycji root, skoro potem "ginie". Chyba wykorzystywane jest to tylko w przypadku, gdy nie istnieje menu.lst.
W dalszym ciagu zastanawia mnie jednak fakt, jak generowane jest menu podczas instalacji. Czy to wlasnie "kopt" jest odpowiednio ustawiane.

Jeśli ktoś ma partycje root na innej partycji niz pierwsza i nie przenosil systemu, niech zerknie i da odpowiedz - potwierdzenie :)

Pozdr, i podziekowania za zainteresowanie tematem.
ArnVaker

Post autor: ArnVaker »

mariaczi pisze:Zastanawia mnie natomiast fakt, po co w update-grub jest wyciagana nazwy urzadzenia/partycji root, skoro potem "ginie".
A po co ma sprawdzać za każdym razem?
mariaczi pisze:Chyba wykorzystywane jest to tylko w przypadku, gdy nie istnieje menu.lst.
Dokładnie tak. Jeśli usuniesz pliki: menu.lst oraz device.map, wszystko zostanie wygenerowane od podstaw. Jeśli wspomniane pliki istnieją, to:

Kod: Zaznacz cały

update-grub
opiera się na znajdujących się tam wartościach.
mariaczi pisze:W dalszym ciagu zastanawia mnie jednak fakt, jak generowane jest menu podczas instalacji. Czy to wlasnie "kopt" jest odpowiednio ustawiane.
Chyba nie rozumiem pytania, przecież widać, że jest...
mariaczi pisze:Jeśli ktoś ma partycje root na innej partycji niz pierwsza i nie przenosil systemu, niech zerknie i do odpowiedz - potwierdzenie
Wrzuciłem już wcześniej fragment mojego pliku, "/boot" jest na sda5, a "/" na sda6. Dam Ci jeszcze fragment z Debiana, którego mam na sda7, bez osobnej partycji "/boot".

Kod: Zaznacz cały

## ## Start Default Options ##
## default kernel options     
## default kernel options for automagic boot options
## If you want special options for specific kernels use kopt_x_y_z
## where x.y.z is kernel version. Minor versions can be omitted.  
## e.g. kopt=root=/dev/hda1 ro                                    
##      kopt_2_6_8=root=/dev/hdc1 ro                              
##      kopt_2_6_8_2_686=root=/dev/hdc2 ro                        
# kopt=root=/dev/sda7 ro                                          

## default grub root device
## e.g. groot=(hd0,0)      
# groot=(hd0,6)
Poza tym, w menu.lst można również zdefiniować inne parametry, nie tylko odpowiednie partycje.

Na przykład wpis:

Kod: Zaznacz cały

# defoptions=quiet vga=795
spowoduje, że zawsze po wykonaniu:

Kod: Zaznacz cały

update-grub
do linii kernela automatycznie zostaną dodane argumenty "quiet" oraz "vga=795".
ODPOWIEDZ