Instalacja 6 różnych systemów na jednym dysku twardym (Windows + Linux)

Witam,

 

Chcę zainstalować 6 systemów na jednym dysku twardym. Te systemy to: Windows 7, Windows Server 2012 R2, Windows 10, RHEL 6.5, RHEL 7.0, SLES 11 SP3. O i le sama instalacja każdego z systemów przebiegła pomyślnie to bootowanie każdego systemu już nie poszło tak łatwo. Napiszę może jeszcze jaki jest główny cel oraz konfiguracje partycji:

 

Dysk 250GB (ms_dos):

/dev/sda1 -> Windows 7                             (primary)

/dev/sda2 -> Windows Server 2012 R2      (primary)

/dev/sda3 -> Windows 10                           (primary)

/dev/sda4 ->                                               (extended)

       /dev/sda5 -> /boot        FAT32             (logical)

       /dev/sda6 -> SWAP                             (logical)

       /dev/sda7 -> SLES 11 SP3                  (logical)

       /dev/sda8 -> RHEL 7.0                        (logical)

       /dev/sda9 -> RHEL 6.5                        (logical)

 

Założenie jest takie aby w każdym systemie znajdował się skrypt który pyta o wybór systemu i tak modyfikuje grub.conf aby ten system się zbootował, właśnie dlatego potrzebuję /boot na osobnej partycji i FAT32.

Po instalacji RHEL 6.5 w grubie mam tylko RHEL oraz Other który bootuje Windows 10. Próbowałem ręcznie skopiować wpisy do odpowiedniego pliku jednak nie działa. Problemem jest też fakt iż RHEL 7.0 instaluje już GRUB2 a w nim wpisy wyglądają inaczej niż w GRUB.

Moje pytanie brzmi: Jak instalować te systemy aby na końcu GRUB widział i bootował wszystkie systemy? Nie chcę mieć GRUB2, bo tego nie da się “wyeksportować” na FAT32.

/boot montujesz do każdego systemu? Większość dystrybucji tworzy dowiązania symboliczne do jądra i ramdysku rozruchowego, co może stanowić problem podczas bootowania.

Próbowałem montować /boot do każdego z systemów ale także osobno i później zainstalować GRUB na /dev/sda5.

 

Jeszcze takie pytanie: czy na partycji /boot (/dev/sda5) muszą być pliki ramdysku i kernela żeby zbootować? Wydaje mi się że nie, ponieważ przed każdym bootowaniem jest określone root (hd0, x).

Grub2 przecież uruchamia wszystkie wymienione tu systemy bez problemu. To że starszy RHEL korzysta z Grub v1 nie znaczy, że Grub v2 go nie uruchomi.

Zainstaluj poprostu najnowszą wersję na samym końcu lub zainstaluj w dowolnej kolejności i ręcznie doinstaluj Grub, LiLo bądź inny program rozruchowy.

No nie da się, bo Linux nie ruszy z FAT32. Tak samo jak Windowsa nie zainstalujesz na Ext4. Jeśli masz różne wersje Gruba, to albo zrezygnuj ze współdzielonego /boot, albo zainstaluj Grub v1 na partycji (nie w MBR), a MBR zainstaluj Grub v2 i uruchamiaj Grub v1 z Grub v2. Nie powiem Ci jak to zrobić, ale myślę, że da się tak zrobić. Mimo wszystko, Grub2 powinien bez problemu uruchomić wszystkie systemy. Grub nie ma problemu nawet z uruchomieniem FreeBSD, o uruchamianiu systemów z obrazów ISO na dysku już nawet nie wspominam. Grub2 to nie tylko inne wspisy, ale również dodatkowe funkcje.

Współdzielony /boot to konieczność. Spróbuje jeszcze instalować systemy bez programu rozruchowego i na końcu zainstalować GRUB na /dev/sda5. Niestety nie zdążę zrobić tego dzisiaj, także do jutra.

Wspólny boot to bardzo zły pomysł … “Redhatowate” tworzą linki symboliczne do vmlinuz i initrd.img. Pierwsza lepsza aktualizacja jądra i zrobi ci się tam bajzel …

 

W każdym z tych dwóch systemów (piszę tak, żeby była jasność):

/dev/sda7 -> SLES 11 SP3 (logical)
/dev/sda9 -> RHEL 6.5 (logical)

Gruba w wersji 0.97 zainstaluj odpowiednio w VBR /dev/sda7 oraz /dev/sda9.

 

Gruba2, którego dostarcza /dev/sda8 -> RHEL 7.0 (logical) zainstaluj w MBR dysku twardego /dev/sda.

 

Jakim wpisem np. /etc/grub.d/40_custom załadować Gruba1  z poszczególnych partycji znajdziesz tutaj:

http://www.gnu.org/software/grub/manual/grub.html#Multi_002dboot-manual-config .

@marcin82: Dzięki za pomysł, ale Twoje rozwiązanie mnie nie zadowala. Musi to być GRUB1 oraz musi być na osobnej partycji FAT32 żeby Windy go widziały.

No to tak się nie da. Jak chcesz mieć dostęp do tej partycji, to sformatuj ją na Ext2, a w Windows zainstaluj jakiś sterownik do obsługi Ext2.

Tak poza tym czemu upierasz się przy Grubv1? Przecież Grub2 uruchomi Ci zarówno RHEL6, RHEL7, jak i Windows 10? Jeśli chodzi Ci o to, że menu.lst jest dla Ciebie łatwiejsze w konfiguracji, to źle zarządzasz Grub2. Grub2 konfiguruje się w /etc/default/grub, a poszczególne sekcje w /etc/grub.d/. Pliku grub.cfg się nie rusza, nie bez powodu ma prawo tylko do odczytu.

Robiłem wcześniej takie rzeczy z przykładowo dwoma Windowsami i jednym linuksem i dało się. Była osobna partycja /boot na FAT32 (co prawda na początku była sformatowana jako EXT2, ale zrobiłem backup, sformatowałem jako FAT32 i przywróciłem backup). Dało też się zarządzać plikiem grub.conf z poziomu Windowsa i linuksa i wszystko było ok. Właśnie dlatego nie chcę GRUB2, bo tego dziada nie da się obsługiwać na FAT32.

Działa, bo Linux obsługuje FAT32, a bootloader zapisany jest i tak w MBR.

Próbowałeś przechowywać samą konfiguracją gruba na partycji FAT i wskazywać ją jako root dla Gruba? Obsługę FAT masz wkompilowaną na stałe czy jako moduł? Może Syslinux Cię zadowoli?

Tego nie próbowałem.

 

Obsługa FAT jest sdandardowa tzn nic z tym nie kombinowałem także jest domyślna.

 

Syslinuxa nigdy nie ogarniałem i wolałbym się trzymać rzeczy na których konfiguracji jako tako się znam. Wydaje mi się też ze zmiana programu uruchamiającego to zbyt pracochłonny zabieg szczególnie że mam GRUBa instalującego się z systemem.

Możesz pobawić się http://www.boot-us.com/

Problem rozwiązany. Najpierw zainstalowałem Windowsy na partycjach jak w pierwszym poście. Następnie linuksy. Na pierwszy ogień poszedł RHEL 7.0 z grub2. Wszystko instalowane na jednej partycji a nie np/boot podmontowany do /dev/sda5.

Następnie RHEL 6.5 - i tak samo, boot wewnątrz systemu a nie na osobnej partycji. Na koniec SLES 11 - w nim akurat ustawiłem zainstalowanie /boot na /dev/sda5/. Instalator wykrył wszystkie systemy oprócz RHEL 7.0. Tego pana musiałem dopisać ręcznie wzorując się na konfiguracji z RHEL 6.5. Aktualnie menu.lst wygląda tak: