Nowe posty

Autor Wątek: GPT  (Przeczytany 1803 razy)

Offline 1709

  • Users
  • Guru
  • *****
  • Wiadomości: 2769
  • 1709
    • Zobacz profil
GPT
« dnia: 2023-11-09, 20:16:21 »
Zainstalowałem najpierw Ubuntu, a potem OpenSuse.
Aktualnie uruchamia mi się GRUB z OpenSuse, a chciałbym w celach testowych uruchomić GRUB-a z Ubuntu.
Jeśli się da bez reinstalacji systemu.
Dysk jest sformatowany na GPT i nie używam secure boot
$ LC_ALL=C sudo parted -l | grep 'Flag\|^ 1\|^ 2\|^ 5' | awk '{$2=$3=$4=""; print $0}'
Number    File system Name Flags
1    fat32 EFI_System_Partition boot, esp
2    ext4 UbuntuMate
5    ext4 OpenSuse legacy_boot
- Próbowałem usunąć  flagę legacy_boot, ale wtedy komputer nie znajduje systemu, nie widać żadnego GRUBA.
( dodanie tej flagi do partycji EFI tez nie pomaga )
- Próbowałem z poziomu Ubuntu reinstalować GRUB-a, ale nie pomogło
przykład
$ LC_ALL=C sudo grub-install --target=x86_64-efi /boot/efi
Installing for x86_64-efi platform.
grub-install: warning: EFI variables cannot be set on this system.
grub-install: warning: You will have to complete the GRUB setup manually.
Installation finished. No error reported.
Nie wiem jak jeszcze sprawdzić, czemu to bootuje z OpenSuse, a nie chce z Ubuntu.
PS: Brak polskiej czcionki, nie jest to brak lenistwa, a jej brak w systemie i brak czasu na reczne poprawki.

Offline Paweł Kraszewski

  • Administrator
  • Guru
  • *****
  • Wiadomości: 3062
  • Lenistwo jest matką potrzeby = babcią wynalazku
    • Zobacz profil
Odp: GPT
« Odpowiedź #1 dnia: 2023-11-09, 21:00:54 »
Zachowuje się to, jakbyś Ubuntu zainstalował w trybie UEFI a OpenSuse w trybie legacy (na przyszłość patrz, co klikasz przy wyborze trybu w menu bootowania nośnika instalacyjnego),

Musisz doprowadzić wszystko do stanu bootowania z UEFI (da się to zrobić bez reinstalacji).

* W biosie przełącz system z trybu Legacy/CSM na tryb UEFI - wtedy dla odmiany powinien zacząć startować Ubuntu
* Jak wyświetli się menu GRUB-a Ubuntu, naciśnij "c" (albo ESC), żeby wejść w tryb linii komend
* Z linii komend GRUB-a Ubuntu załaduj konfigurację od Susa
  configfile (hd...)/boot/grub/grub.cfg (na TAB będziesz miał automatyczne dopełnianie nazw dysków, partycji, katalogów i plików)
* Suse powinien ten jeden raz wystartować w trybie UEFI
* Z poziomu SUSE'a reinstaluj GRUB-a, (powinien wystarczyć sam grub-install, jak nie to grub-install --target=x86_64-efi.
* Teraz znowu powinien wstawać domyślnie SUSE, ale już we właściwym trybie (zdjęcie atrybutu legacy_boot nie powinno już psuć systemu)

Na koniec zainstaluj rEFInd-a , który po prostu wyświeli menu z wyborem wszystkich systemów zgodnych UEFI przy starcie komputera. Sam z tego korzystam na wszystkich moich multisytstemowych kompach.
Paweł Kraszewski
~Arch/Void/Gentoo/FreeBSD/OpenBSD/Specjalizowane customy

Offline marcin'82

  • Users
  • Prawie jak Guru
  • ****
  • Wiadomości: 404
    • Zobacz profil
Odp: GPT
« Odpowiedź #2 dnia: 2023-11-11, 14:14:08 »
Uruchom OpenSUSE, podaj wyniki poleceń:
ls /sys/firmware/efi/efivars
cat /etc/fstab
efibootmgr
sudo parted -l

Cytuj
Próbowałem z poziomu Ubuntu reinstalować GRUB-a, ale nie pomogło

Pokaż to samo, ale nie wiem w końcu czy się uruchamia czy nie.

Obecność Gruba w MBR można sprawdzić dd i hexem, xxd, ale to równie dobrze mogą być stare, nieużywane już przez UEFI "wpisy".

W każdym razie wszystko jest do naprawy przez livecd, nie trzeba nic reinstalować, orać dyskiem od nowa.
marcin82

Offline 1709

  • Users
  • Guru
  • *****
  • Wiadomości: 2769
  • 1709
    • Zobacz profil
Odp: GPT
« Odpowiedź #3 dnia: 2023-11-13, 10:38:14 »
Cytuj
Z linii komend GRUB-a Ubuntu załaduj konfigurację od Susa
Dobry pomysł. W OpenSuse w /etc/grub.d/40_custom dodałem podobny wpis z wiki archlinux
menuentry "GRUB Ubuntu" {
insmod part_gpt
insmod ext4
set root='hd0,gpt5'
configfile /boot/grub2/grub.cfg
}
Ale nie bootuje. A że nie widzę błędu, to nie wiem co go boli.

Cytuj
Zachowuje się to, jakbyś Ubuntu zainstalował w trybie UEFI a OpenSuse w trybie legacy
Tak wygląda, choć nie wiem czym to się dokładnie różni w praktyce w przypadku instalacji systemów z opcją "Legacy" w "Biosie".

Cytuj
* W biosie przełącz system z trybu Legacy/CSM na tryb UEFI - wtedy dla odmiany powinien zacząć startować Ubuntu
Po reboot-cie otwiera mi się "BIOS". Przypuszczam, że to foch sprzętu, że próbuje uruchomić w trybie UEFI coś instalowane w trybie Legacy.

Cytuj
Uruchom OpenSUSE, podaj wyniki poleceń:
efibootmgr nie działa na obu systemach. Zgaduje że to dlatego że systemy nie były instalowane w trybie UEFI, a trybie legacy.
sudo /usr/sbin/efibootmgr
EFI variables are not supported on this system.

Panowie, dziękuję za pomoc.
Usunę na chwię np. OpenSuse i zainstaluje drugie Ubuntu. Tak będzie 100% szybciej.

PS: Brak polskiej czcionki, nie jest to brak lenistwa, a jej brak w systemie i brak czasu na reczne poprawki.

Offline 1709

  • Users
  • Guru
  • *****
  • Wiadomości: 2769
  • 1709
    • Zobacz profil
Odp: GPT
« Odpowiedź #4 dnia: 2023-11-17, 23:54:03 »
Musze się trochę wyżalić, jak się komuś przyda, to dobrze, a jak nie to trudno.

1. Zauważyłem że system Ubuntu mi nie butuje gdy ustawie instalacje na sda1 gdzie jest partycja EFI,
w moim przypadku GRUB musi być istalowany na sda,

2. Mimo wspomnianego /dev/sda  jak instalowałem Ubuntu i EndeavourOS to oba systemy upierały się bym ustawił flagę na partycji EFI /dev/sda1 ,
nie pamiętam jaka to była flaga, ale raczej różna.

3. Zainstalowanie Gruba na /dev/sda z EndeavourOS spowodowało, że nie wstało mi ani Ubuntu, ani Linux Mint.
Po kliknięciu strzałki w dół pojawia się miedzy innymi komunikat " [DEPEND] Dependency failed for /boot/efi "
Powodem jest to, że np. w Ubuntu w /etc/fstab jest linijka
UUID=1211-FC11 /boot/efi       vfat    umask=0077      0       1
i numer UUID się zmienił i " system nie potrafi tego naprawić "  w fstab.
Trzeba to zmienić ręcznie i uruchomić ponownie komputer.
 ... Aktualny UUID można sprawdzić np. komendą: lsblk -o name,uuid

Także udało się naprawić owe systemy.

System nie potrafi tego naprawić w fstab dałem w cudzysłów, ponieważ chciałbym żeby umiało naprawić,
ale działa to trochę inaczej.
Pojawiają się ostrzeżenia [DEPEND] ... , potem kilka komunikatów,np. o uruchamianiu usługi internetowej
i komunikat 
Cytuj
You are in emergency mode. After logging in, type "journalctl -xb" to view system logs, "systemctl reboot", "systemctl default" or "exit"
to boot into default mode.
Press enter for maintenance
or press Control-D fo continue.

Edytowane
W sumie skoro system wstaje z innego Gruba, to może on niepotrzebnie montuje /boot/efi .
No bo zgaduje że gdyby nie te " emergency mode " to system by się uruchomił normalnie.
W każdym razie w tym trybie komendą startx udało mi się uruchomić środowisko Mate ( konto root ), ale aplikacji z niego już nie,
podejrzewam, ze z powodu ograniczeń root, a zalogować się na użytkownika nie mogłem z powodu ograniczeń " emergency mode ".
« Ostatnia zmiana: 2023-11-18, 00:37:10 wysłana przez 1709 »
PS: Brak polskiej czcionki, nie jest to brak lenistwa, a jej brak w systemie i brak czasu na reczne poprawki.

Offline Paweł Kraszewski

  • Administrator
  • Guru
  • *****
  • Wiadomości: 3062
  • Lenistwo jest matką potrzeby = babcią wynalazku
    • Zobacz profil
Odp: GPT
« Odpowiedź #5 dnia: 2023-11-18, 16:48:31 »
Matko jednyna... Spróbuj wreszcie ogarnąć, jak działa EFI...

Każdy nowy system instalujesz z jego prywatnym /boot-em (albo w ogóle bez osobnej partycji /boot - ja tak mam na wszystkich swoich systemach), ale w czasie instalacji wskazujesz zawsze tą samą partycję EFI do zamontowania w /boot/efi.

Kolejne systemy dodają w katalogu /boot/efi/EFI swój podkatalog z loaderem (plik .efi - np grubx86.efi), w którym osadzona jest na sztywno ścieżka do właściwej partycji z (pod)katalogiem /boot - czyli przy kilku zainstalowanych systemach z GRUB-ami każdy grubx86.efi "wie", która a partycja jest od "jego" systemu. Standardowa instalacja GRUB-a dodaje też do tablicy systemów w UEFI nowy wpis o sobie i ustawia go jako domyślny (jak instalujesz GRUB ręcznie, można to ominąć parametrem --no-nvram). Za zarządzanie tymi wpisami odpowiada program efibootmgr.

Dla wygody możesz zainstalować wspomniany już przeze mnie wcześniej program rEFInd, który staje się aktywnym bootloaderem, przeszukuje przy każdym starcie katalog /EFI partycji ESP (to jest to, co montujesz w /boot/efi) i wyświetla menu wyboru systemu (i parę innych opcji). Po doinstalowaniu nowego systemu i ewentualnie ponownym ustawieniu rEFInda jako defaulta, nowy system będzie automatycznie wykryty i dodany do menu. Dodatkowo rEFInd wykrywa Windowsy, BSDeki, Haiku i parę innych egzotyków oraz bootowalne nośniki wymienne (USB i optyczne, o ile są bootowalne w trybie UEFI).

Ja mam (mniej więcej) tak:

- Partycja EFI/ESP (FAT32, wspólna dla wszystkich systemów)
- Partycja Windows (NTFS)
- Partycja FreeBSD (ZFS)
- Partycja OpenBSD (UFS)
- Partycja PV systemu LVM2
   - Wolumen root Manjaro (btrfs)
   - Wolumen root Arch (btrfs)
   - Wolumen root Gentoo (btrfs)
   - Wolumen swap
   - Wolumen /home (wspólny dla wszystkich Linuksów, btrfs)

Tj LVM-a mam tak naprawdę dużo, dużo bardziej skomplikowanego (2xSSD, 2xHDD, szyfrowanie niektórych wolumenów, mirror niektórych wolumenów, część wolumenów na HDD akcelerowana SSD), ale to taki "przybliżony i uproszczony widok z 10km". Zamiast LVM-a można po prostu zakładać kolejne partycji podstawowe.
« Ostatnia zmiana: 2023-11-18, 16:56:29 wysłana przez Paweł Kraszewski »
Paweł Kraszewski
~Arch/Void/Gentoo/FreeBSD/OpenBSD/Specjalizowane customy