Nie jesteś zalogowany.
Jeśli nie posiadasz konta, zarejestruj je już teraz! Pozwoli Ci ono w pełni korzystać z naszego serwisu. Spamerom dziękujemy!

Ogłoszenie

Prosimy o pomoc dla małej Julki — przekaż 1% podatku na Fundacji Dzieciom zdazyć z Pomocą.
Więcej informacji na dug.net.pl/pomagamy/.

#1  2010-04-13 10:06:51

  Minio - Użyszkodnik

Minio
Użyszkodnik
Skąd: Poznań, Polska
Zarejestrowany: 2007-12-22
Serwis

[SOLVED] Reinstalacja GRUB po zmianie partycji z LiveCD

Będę do komputera dołączał nowy dysk twardy, na którym chciałbym mieć cały system operacyjny, poza katalogami /boot i /home, które mam na osobnych partycjach.

Aktualnie mam dysk hda:
hda1 - /boot
hda2 - swap
hda3 - /
hda4 - /home

planuję dorobić dysk hdd z / oraz swapem, aby ostatecznie całość wyglądała tak:

hda1 - /boot
hda4 - /home
hdd1 - swap
hdd2 - /

czyli usunąć hda2, przenieść hda3 na hdd2, hda 2 oraz hda3 usunąć aby dodać miejsca hda4 (po drodze pewnie zmieni się na hda2, ale w fstab i tak wszędzie mam UUID).

Jak z poziomu LiveCD poprowadzić zmianę GRUB-a, aby odtworzył w pliku konfiguracyjnym moje zmiany? Po przeprowadzeniu wszystkich operacji podmontować hdd2 oraz hda1, zchrootować się do hdd2 i po odpaleniu aptitude przeinstalować GRUB (czy tam uruchomić update-grub2)?

Czy może lepiej w /boot/grub/grub.cfg zmienić UUID starego / na nowy (choćby sed-em), aby system się uruchomił, a automatycznie zmieni się przy kolejnej aktualizacji GRUB-a lub jądra?

Z góry dzięki za wszelkie rady. Cytując azhaga, któremu zadałem to samo pytanie: „Szczerze powiedziawszy od czasu wprowadzenia GRUB-a 2, już nic nie rozumiem. :)”.

Ostatnio edytowany przez Minio (2010-04-13 16:30:14)

Offline

 

#2  2010-04-13 11:19:35

  sal_i - Członek DUG

sal_i
Członek DUG
Skąd: Neverhood
Zarejestrowany: 2007-01-01

Re: [SOLVED] Reinstalacja GRUB po zmianie partycji z LiveCD

a po co chcesz przinstalowywać gruba? Przecież jest na osobnej partycji. Jeżeli zostawisz w biosie botowanie z hda to wystarczy w pliku

Kod:

/boot/grub/grub.cfg

zmienić namiar na partycję / z tego nowego dysku (po uuid albo po ludzku /dev/hdd2) i będzie śmigać - no i fstab ale to się rozumie samo przez się
Jeśli się mylę to podobnie jak azhag też nic nie rozumiem.


“Generowanie liczb losowych jest zbyt ważne, żeby zostawiać to przypadkowi”

Offline

 

#3  2010-04-13 12:44:49

  Minio - Użyszkodnik

Minio
Użyszkodnik
Skąd: Poznań, Polska
Zarejestrowany: 2007-12-22
Serwis

Re: [SOLVED] Reinstalacja GRUB po zmianie partycji z LiveCD

Nie chcę przeinstalowywać GRUB-a — chodzi tylko o wygenerowanie nowego, poprawnego grub.cfg z poziomu LiveCD — tak, aby po restarcie sysetm już wiedział że całego systemu należy szukać w innym miejscu niż dotychczas.

W /boot/grub/grub.cfg jest np.:

Kod:

menuentry "Debian GNU/Linux, with Linux 2.6.32-2-686" --class debian --class gnu-linux --class gnu --class os {
    insmod ext2
    set root='(hd0,1)'
    search --no-floppy --fs-uuid --set effdea34-3552-4e65-8315-ac650f519f46
    echo    Loading Linux 2.6.32-2-686 ...
    linux    /vmlinuz-2.6.32-2-686 root=UUID=15c14433-c1ca-4818-bc70-b3d21bbfdeec ro  quiet
    echo    Loading initial ramdisk ...
    initrd    /initrd.img-2.6.32-2-686
}

w linijce zaczynającej się od linux root-UUID ulegnie zmianie z tego wskazującego hda3 na ten wskazujący hdd2. Ja to mogę nawet sed-em zrobić.

Ale nie na darmo  /boot/grub/grub.cfg rozpoczyna się od:

Kod:

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

Dlatego ja pytam jak to zrobić, aby było „koszernie”. Bo użycie sed-a na pewno takie nie jest.

Offline

 

#4  2010-04-13 13:06:45

  ArnVaker - Kapelusznik

ArnVaker
Kapelusznik
Skąd: Midgard
Zarejestrowany: 2009-05-06

Re: [SOLVED] Reinstalacja GRUB po zmianie partycji z LiveCD

W starym debianowym grubie trzeba by było zmienić parametr kopt i puścić update-grub.

## ## 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/sda8 ro

W nowym na bank też jest odpowiednik parametru kopt, tyle że pewnie wyleciał do osobnego pliku.

# It is automatically generated by /usr/sbin/grub-mkconfig using templates
# from /etc/grub.d and settings from /etc/default/grub

Poprzeglądaj pliki jakie tam siedzą, w którymś na pewno masz zdefiniowaną partycję "/" i tam musisz ją zmienić z palca jakimś edytorem i zaktualizować plik grub.cfg. Jak zmienisz bezpośrednio w grub.cfg to też będzie działać, ale do czasu update-grub (czy jak to się tam w tym nowym grubie nazywa), kiedy to przywrócony zostanie poprzedni wpis. Aha, byłbym zapomniał — nie używałem nigdy grub2, dlatego tak nieskładnie piszę :)

Ostatnio edytowany przez ArnVaker (2010-04-13 13:08:32)

Offline

 

#5  2010-04-13 14:30:59

  sal_i - Członek DUG

sal_i
Członek DUG
Skąd: Neverhood
Zarejestrowany: 2007-01-01

Re: [SOLVED] Reinstalacja GRUB po zmianie partycji z LiveCD

Tak sobie czytam o tym generatorze konfiguracji i nie mogę oprzeć się wrażeniu, że to trochę przerost formy nad treścią.
http://en.gentoo-wiki.com/wiki/Grub2#Grub2_configuration_files
Wynika jednak z tego że jak się zchrootujesz na swój system to # grub-mkconfig powinien wygenerować poprawne wpisy. A ja i tak bym zrobił to ręcznie.


“Generowanie liczb losowych jest zbyt ważne, żeby zostawiać to przypadkowi”

Offline

 

#6  2010-04-13 14:35:55

  DadaD - Użytkownik

DadaD
Użytkownik
Zarejestrowany: 2008-03-26

Re: [SOLVED] Reinstalacja GRUB po zmianie partycji z LiveCD

GRUB2 nie dokonujemy ręcznej edycji pliku grub.cfg
Zmiany będą nietrwałe lub nie odniosą skutku.

Ustawienia GRUB2 są w /etc/grub.d

Podstawowa metoda edycji pliku grub.cfg to polecenie

Kod:

update-grub

, które tworzy poprawny konfig.
Trzeba mieć dodatkowo zainstalowany pakiet os-prober

Można również kosmetyczne zmiany dokonywać podczas uruchamiania OS w wyświetlanym menu - podobnie jak w starym GRUB-ie  nacisnąć "e" dokonać edycji i "b" uruchamianie.



pozdrowienia


"Rzeczą ludzką jest błądzić, rzeczą głupców jest trwać w błędzie"
Seneka

Offline

 

#7  2010-04-13 15:52:02

  sal_i - Członek DUG

sal_i
Członek DUG
Skąd: Neverhood
Zarejestrowany: 2007-01-01

Re: [SOLVED] Reinstalacja GRUB po zmianie partycji z LiveCD

właśnie się te super automaty pomyliły w przypisaniu właściwego uuid do partycji root :) ale jest i dobra wiadomość zmusiłem je do automatycznego dodawania mojego initrd ze splashem bez względu na wersję jajka.
DadaD aleś to oficjalnie ujął. Prawda jest taka że przy ręcznej kompilacji i instalacji jajka ręczne zarządzanie wpisami jest po prostu wygodniejsze. Do tego jeśli konsekwentnie nie używa się tych sprytnych automatów to zmiany w grub.cfg okazują się bardzo trwałe.


“Generowanie liczb losowych jest zbyt ważne, żeby zostawiać to przypadkowi”

Offline

 

#8  2010-04-13 16:09:39

  DadaD - Użytkownik

DadaD
Użytkownik
Zarejestrowany: 2008-03-26

Re: [SOLVED] Reinstalacja GRUB po zmianie partycji z LiveCD

sal_i napisał(-a):

DadaD aleś to oficjalnie ujął. Prawda jest taka że przy ręcznej kompilacji i instalacji jajka ręczne zarządzanie wpisami jest po prostu wygodniejsze. Do tego jeśli konsekwentnie nie używa się tych sprytnych automatów to zmiany w grub.cfg okazują się bardzo trwałe.

Jestem widocznie formalistą.
Dla mnie GRUB2 to nowość, ale w ubiegłym tygodniu wielokrotnie testowałem ten automat i w większości przypadków poza jednym spisywał sie dobrze.
Detekcje dystrybucji wykonywał nienagannie.
Troszkę o nim poczytałem ale wiedzę mam jeszcze znikomą.

W starym GRUB-ie ręczna edycja była najlepszym rozwiązaniem, ale idziemy w świetlaną przyszłość i korzystanie z graficznych konfiguratorów jest nieodwołalne a tak mimochodem poleceni update-grub wydajemy w oknie terminala (to tak jako żart piszę).

Pozdrowienia


"Rzeczą ludzką jest błądzić, rzeczą głupców jest trwać w błędzie"
Seneka

Offline

 

#9  2010-04-13 16:28:51

  Minio - Użyszkodnik

Minio
Użyszkodnik
Skąd: Poznań, Polska
Zarejestrowany: 2007-12-22
Serwis

Re: [SOLVED] Reinstalacja GRUB po zmianie partycji z LiveCD

Zgodnie z radą ArnVakera zrobiłem to co powinienem był zrobić zanim zadałem to pytanie, i zajrzałem do źródeł generatora configu.

Generalnie wszystkie drogi wskazują na /usr/sbin/grub-mkconfig, w którym znajduje się następujący fragment:

Kod:

for i in ${grub_mkconfig_dir}/* ; do
  case "$i" in
    # emacsen backup files. FIXME: support other editors
    *~) ;;
    *)
      if grub_file_is_not_garbage "$i" && test -x "$i" ; then
        echo
        echo "### BEGIN $i ###"
        "$i"
        echo "### END $i ###"
      fi
    ;;
  esac
done

Ponieważ menuentry jest generowane przez plik /etc/grub.d/10_linux, zajrzałem do niego. Tam znajduje się następująca linijka:

Kod:

linux ${rel_dirname}/${basename} root=${linux_root_device_thisversion} ro ${args}

Zmienna ${linux_root_device_thisversion} jest tożsama ze zmienną ${GRUB_DEVICE}, która jest definiowana we wspomnianym wcześniej skrypcie grub-mkconfig w ten sposób:

Kod:

GRUB_DEVICE="`${grub_probe} --target=device /`"

Czyli innymi słowy — w pliku grub.cfg fragment wskazujący na katalog główny podmontowywany przez uruchamiane jądro (root=) jest UUID-em dla partycji która w chwili wywołania grub-mkconfig jest partycją na której znajduje się główny katalog systemowy (/). Czyli aby zrobić to „koszernie”, powinienem podmonotwać nowe partycje systemowe, zchrootować się do nich i wywołać update-grub2.

Wersja z sed-em jest cokolwiek łatwiejsza ;) . Nie istnieje niebezpieczeństwo nietrwałości zmian, ponieważ update-grub2 — wywoływane po każdej aktualizacji grub-a lub instalacji jądra — generuje konfigurację dla aktualnie działającego systemu. W moim przypadku będzie nim ten, który / ma na hdd2.

Offline

 

#10  2010-04-14 21:03:33

  zaurer - Użytkownik

zaurer
Użytkownik
Zarejestrowany: 2009-10-21

Re: [SOLVED] Reinstalacja GRUB po zmianie partycji z LiveCD

Żeby nie zakładać nowego tematu niepotrzebnie to zapytam tu. Jak w tym nowym grubie2 zmienić kolejnośc na liscie systemów. Bo jak edytuje ten wpis w boot z poziomu roota to i tak jakaś blokada?


http://img535.imageshack.us/img535/6161/1221al0.jpg

Offline

 

#11  2010-04-14 21:54:15

  Minio - Użyszkodnik

Minio
Użyszkodnik
Skąd: Poznań, Polska
Zarejestrowany: 2007-12-22
Serwis

Re: [SOLVED] Reinstalacja GRUB po zmianie partycji z LiveCD

Ta „blokada” to plik tylko do odczytu. Możesz z poziomu roota zrobić chmod +w /boot/grub/grub.cfg — po tej operacji będziesz mógł juz go sobie modyfikować. Ale tylko do najbliższego wywołania grub-mkconfig (wywoływane automatycznie podczas instalacji jądra albo GRUB-a).

Ponieważ grub.cfg jest tworzony podczas każdej aktualizacji wspomnianych pakietów, nie zaleca się modyfikowania go wprost, a poprzez modyfikowanie jednego z pliku szablonów.

Z tego względu konieczne jest określenie czy mówimy o kolejności systemów z rodziny Linux, czy o kolejności innych systemów, i w jakiej relacji te inne mają pozostać do samych Linuksów.

W katalogu /etc/grub.d/ znajdziesz pliki 10_linux oraz 30_os-prober. Ten pierwszy odpowiada za tworzenie listy systemów z rodziny Linux. Ten drugi — za inne systemy (sądząc po źródle — obsługiwane są Mac OS X, Windowsy XP, 7, Vista, być może wcześniejsze oraz hurd). Linuksy ustawione są w kolejności od najnowszej wersji jądra do najstarszej. Pozostałe systemy nie chce mi się wnikać. Tak więc jeżeli chcesz zamienić kolejność Linuksów lub innych systemów, to musisz zmodyfikować pliki szablonów.

Jeżeli wystarczy Ci żeby inne systemy były wyżej niż Linuksy, to pliki te nie na darmo zawierają prefix liczbowy. Plik grub.cfg jest tworzony z szablonów ustawionych w kolejności alfanumerycznej. Wystarczy więc że zmienisz nazwę 10_linux na np. 35_linux.

Pamiętaj jednak, że możesz w pliku /etc/default/grub ustawić zmienną $GRUB_DEFAULT. Poprzez przypisanie jej wartości numerycznej N, domyślnie uruchamiany będzie N+1 system na liście (wartość 0 odpowiada 1. systemowi i tak dalej). Poprzez przypisanie wartości saved — domyślny stanie się ostatnio wybrany system. Jeżeli chcesz żeby domyślnie uruchamiany był jakiś konkretny system z listy (bo nie widzę innego powodu dla zmiany kolejności listy), wystarczy że zmodyfikujesz tę zmienną. Pamiętaj jednak żeby śledzić czy odpowiada ona konkretnej wersji systemu — wraz z instalacją kolejnych wersji jądra, lista się zmienia, i pozycja trzecia może po zmianie zejść np. na pozycję piątą. Albo drugą :) .

Offline

 

#12  2010-04-14 22:13:11

  zaurer - Użytkownik

zaurer
Użytkownik
Zarejestrowany: 2009-10-21

Re: [SOLVED] Reinstalacja GRUB po zmianie partycji z LiveCD

Minio napisał(-a):

Ta „blokada” to plik tylko do odczytu. Możesz z poziomu roota zrobić chmod +w /boot/grub/grub.cfg — po tej operacji będziesz mógł juz go sobie modyfikować. Ale tylko do najbliższego wywołania grub-mkconfig (wywoływane automatycznie podczas instalacji jądra albo GRUB-a).

Ponieważ grub.cfg jest tworzony podczas każdej aktualizacji wspomnianych pakietów, nie zaleca się modyfikowania go wprost, a poprzez modyfikowanie jednego z pliku szablonów.

Z tego względu konieczne jest określenie czy mówimy o kolejności systemów z rodziny Linux, czy o kolejności innych systemów, i w jakiej relacji te inne mają pozostać do samych Linuksów.

W katalogu /etc/grub.d/ znajdziesz pliki 10_linux oraz 30_os-prober. Ten pierwszy odpowiada za tworzenie listy systemów z rodziny Linux. Ten drugi — za inne systemy (sądząc po źródle — obsługiwane są Mac OS X, Windowsy XP, 7, Vista, być może wcześniejsze oraz hurd). Linuksy ustawione są w kolejności od najnowszej wersji jądra do najstarszej. Pozostałe systemy nie chce mi się wnikać. Tak więc jeżeli chcesz zamienić kolejność Linuksów lub innych systemów, to musisz zmodyfikować pliki szablonów.

Jeżeli wystarczy Ci żeby inne systemy były wyżej niż Linuksy, to pliki te nie na darmo zawierają prefix liczbowy. Plik grub.cfg jest tworzony z szablonów ustawionych w kolejności alfanumerycznej. Wystarczy więc że zmienisz nazwę 10_linux na np. 35_linux.

Pamiętaj jednak, że możesz w pliku /etc/default/grub ustawić zmienną $GRUB_DEFAULT. Poprzez przypisanie jej wartości numerycznej N, domyślnie uruchamiany będzie N+1 system na liście (wartość 0 odpowiada 1. systemowi i tak dalej). Poprzez przypisanie wartości saved — domyślny stanie się ostatnio wybrany system. Jeżeli chcesz żeby domyślnie uruchamiany był jakiś konkretny system z listy (bo nie widzę innego powodu dla zmiany kolejności listy), wystarczy że zmodyfikujesz tę zmienną. Pamiętaj jednak żeby śledzić czy odpowiada ona konkretnej wersji systemu — wraz z instalacją kolejnych wersji jądra, lista się zmienia, i pozycja trzecia może po zmianie zejść np. na pozycję piątą. Albo drugą :) .

Dzięki za wyczerpującą odpowiedź. Wolałem poprzedni Grub i nadal wolę :) Ale i tak w przyszłości Grub będzie coraz bardziej dążył do automatyzacji:-/


http://img535.imageshack.us/img535/6161/1221al0.jpg

Offline

 

Stopka forum

Powered by PunBB
© Copyright 2002–2005 Rickard Andersson
To nie jest tylko forum, to nasza mała ojczyzna ;-)