Czy możliwe jest „powrót” do GRUB-a po uruchomieniu Linuksa bez ponownego uruchamiania

21

Korzystam z podwójnego uruchamiania systemu Windows i Linux na moim dysku SSD i często przełączam się między dwoma systemami operacyjnymi. Dysk SSD jest naprawdę szybki i oba systemy uruchamiają się w około 3 sekundy po wybraniu w GRUB. Inicjacja BIOS-u, RAID-a i drugiego kontrolera SATA trwa jednak wieczność (około 30 sekund), zanim wreszcie będę w GRUB-ie.

Zastanawiałem się więc, czy można pominąć te inicjalizacje i po prostu „wrócić” do GRUB-a po uruchomieniu Linuksa. Idealnie byłbym również w stanie zrobić to samo z poziomu systemu Windows, ale moja nadzieja nie jest tam bardzo wysoka :)

Poszukałem trochę w Internecie i znalazłem tylko przestarzały moduł ładujący Linuksa - loadlin.exe, który można uruchomić z poziomu Dos lub Windows 95/98, aby uruchomić Linuksa. Zatem przynajmniej koncepcja przełączania systemów operacyjnych bez ponownego uruchamiania nie jest nowa. Czy ktoś wie o obecnym narzędziu, które to robi?

Jeśli nie, to czy istnieje problem techniczny, który uniemożliwia nam napisanie takiego programu, czy też po prostu nie ma wystarczającego popytu?

AKTUALIZACJA: Mój przyjaciel właśnie powiedział mi o Kexecu . Korzystając z tego, wydaje się, że można uruchomić inne jądro Linuksa z działającego jądra, ale czy można wrócić do GRUBA lub bezpośrednio rozpocząć instalację systemu Windows?

Dimitar Asenov
źródło
4
Interesujące pytanie. Jednym z powodów, dla których nie mogę się tym zainteresować, jest fakt, że maszyny wirtualne uległy ostatnio poprawie. Większość osób po prostu uruchamia dodatkowy system operacyjny na maszynie wirtualnej na podstawowym zamiast podwójnego rozruchu.
Noufal Ibrahim,
Zastanawiałem się również nad użyciem maszyny wirtualnej, ale potrzebuję szybkiej wydajności grafiki i jak dotąd maszyny wirtualne nie zapewniają zadowalającej wydajności. Może wszystko się zmieni teraz, gdy Xen (i wkrótce inne) ma pełną opcję przejścia dla kart graficznych. Niemniej jednak byłoby ciekawie sprawdzić, czy istnieje sposób na szybką zmianę. W odniesieniu do drugiego komentarza, tak naprawdę nie wiedziałem o unix.stackexchange.com. Na pewno się obejrzę i może opublikuję tam, jeśli nie otrzymam odpowiedzi w pierwszej kolejności. Dzieki za sugestie.
1
30 sekund ? myślę, że na serwerze IBM jest to około 5 minut.
Sirex,
1
Powinno to być możliwe przy użyciu programów ładujących EFI (nie mam pojęcia jak). Nieco trudniejsze z MBR, ponieważ spodziewają się, że zostaną uruchomione w 16-bitowym trybie rzeczywistym i same skonfigurują wszystko, co może nie być możliwe po jednorazowej inicjalizacji systemu.
grawity
@Sirex: Ale kto serwerów IBM z podwójnym uruchomieniem? :)
grawity 9.0911

Odpowiedzi:

6

Za pomocą kexec możesz rozwiązać problem. Nie ma potrzeby angażowania GRUB. Za pomocą programu kexec-loader można uruchamiać system bezpośrednio w różnych systemach operacyjnych w systemie Linux. (Upewnij się, że obsługa kexec jest wkompilowana w twoje jądro.)

Fabel
źródło
1
O ile mi wiadomo, kexec_load()syscall jest przeznaczony tylko do ładowania jądra Linux. Narzędzie kexec-loader, które podłączyłeś, wydaje się również obsługiwać tylko jądra Linuksa. --- Możliwe jest uruchomienie na przykład memtest86, ale nigdy nie widziałem, aby ktokolwiek uruchomił system Windows bezpośrednio za pomocą mechanizmu kexec, ale jest to możliwe przez GRUB : jak uruchomić bezpośrednio do systemu Windows z kexec + Grub4DOS .
pabouk
1
Zobacz także: Jak uruchomić bootloader z Linuksa?
pabouk
2

Sprawdź, czy masz obsługę UEFI. To może DRASTYCZNIE poprawić prędkość uruchamiania.

Milind R.
źródło
To nie daje odpowiedzi na pytanie. Aby skrytykować lub poprosić autora o wyjaśnienia, zostaw komentarz pod postem.
Jawa
1
@Jawa OP ma problem, ponieważ jego test POST trwa niedopuszczalnie długo. UEFI zdecydowanie tym razem skraca: sam cel jej stworzenia.
Milind R
2
Dwie rzeczy tutaj: 1) Pytanie nie brzmi „jak uruchomić się szybciej”, ale „jak wrócić do GRUB-a po uruchomieniu?” 2) Odpowiedzi w jednym wierszu są prawdopodobnie najlepsze jako komentarze.
Kevin Panko
Dzieki za sugestie. Od kiedy opublikowałem oryginalne pytanie, zmieniłem konfigurację dysku twardego i właśnie zoptymalizowałem niektóre ustawienia w BIOSie, aby skrócić czas uruchamiania. Zasadniczo mogłem wyłączyć rzeczy związane z RAID (których już nie potrzebuję), a także włączyć rozruch EFI. Ogólnym efektem jest znacznie szybszy rozruch. Niemniej jednak oryginalne pytanie jest nadal dla mnie interesujące i do tej pory nie znalazłem wiarygodnego rozwiązania.
Dimitar Asenov
1

Krótko mówiąc, nie o tym, jak teraz wszystko działa. Lepszym rozwiązaniem może być ustalenie, dlaczego kontroler BIOS / RAID / SATA zajmuje tak dużo czasu. Mogą być dostępne aktualizacje systemu BIOS i ewentualnie aktualizacje oprogramowania układowego kontrolera RAID.

Zeroedout
źródło
Jednym z możliwych powodów powolnego testu POST jest skonfigurowanie kontrolera dysku twardego do automatycznego wykrywania nieistniejących dysków w systemie BIOS. Jeśli masz jeden dysk twardy i jeden dysk CD / DVD, nie ma sensu próbować automatycznie wykrywać pozostałych 2 (lub 4) gniazd, testy te muszą upłynąć limit czasu i mogą zająć trochę czasu.
Haqa
1

Nie. Jeśli twój BIOS nie ma konkretnej opcji konfiguracji pomijania testu POST podczas restartu (widziałem to raz), to nie istniało od Windows 98 / ME (sztuczka Fast Reboot, która naprawdę przeładowała Windows).

Może ktoś, kto ma wystarczająco dużo czasu na włamanie się do systemu, mógłby to odtworzyć i ponownie załadować GRUB, ale musiałoby to zmienić sposób, w jaki INIT ponownie uruchamia system.

Nakarti
źródło
0

Jeśli nie możesz znaleźć aktualizacji zgodnie z sugestią Zeroedout, możesz chcieć uruchomić system hosta na maszynach wirtualnych, więc ponowne uruchomienie jest prawie darmowe.

Ponadto niektóre systemy mają tryb szybkiego / szybkiego rozruchu, w którym niektóre kontrole są przerywane. Możesz to sprawdzić.

billc.cn
źródło