Nowe posty

Autor Wątek: Initramfs, czemu jest potrzebny do montownia głównego systemu plików?  (Przeczytany 7504 razy)

sylas

  • Gość
Witam,
mam bardzo istotne dla mnie pytanie, może ktoś będzie znał odpowiedz.

Chciałem się dowiedzieć czemu potrzebny w systemie jest initramfs, dlaczego nie można zamontować głównego systemu plików bez niego? Czemu nie można montować głównego systemu plików bezpośrednio tylko musi być jakiś pośrednik (intramfs)?
I jak wygląda montowanie systemu plików z poziomu jądra?

Z góry bardzo dziękuje za odpowiedz.

Offline Paweł Kraszewski

  • Administrator
  • Guru
  • *****
  • Wiadomości: 3070
  • Lenistwo jest matką potrzeby = babcią wynalazku
    • Zobacz profil
Initramfs, czemu jest potrzebny do montownia głównego systemu plików?
« Odpowiedź #1 dnia: 2014-09-17, 15:31:14 »
Wzdeh...

No więc tak:

do zamontowanie RootFS potrzebujesz:
 * Driver do płyty głównej
 * Driver do kontrolera dysku
 * Driver rozumiejący daną tablicę partycji
 * Driver rozumiejący dany system plików.

Jeżeli wszystkie powyższe możesz skompilować statycznie do kernela, to taki system nie potrzebuje initrd.

Natomiast jeżeli:
 * Któregoś drivera nie da się skompilować statycznie do kernela (np. zamkniętoźródłowy driver do kontrolera RAID) i musi być ładowany z modułu
 * Któryś driver wymaga do pracy zaciągnięcia firmware (tu akurat nie mam rzeczywistego przykładu)
 * Któryś driver wymaga do pracy narzędzi userlandu (np soft RAID w nowym formacie metadanych, raid na BTRFS, zaawansowane konfiguracje ZFS)

to nie da się  uniknąć initrd: do uruchomienia dostępu do dysku potrzebujesz danych, które są na tym dysku, koło się zamyka.

Wtedy właśnie używa się initrd. Initrd jest czytany i rozpakowywany przez bootmanager (np grub) za pomocą usług BIOS/UEFI . Działający kernel dostaje "za darmo" gotowy, działający bez dodatkowych sterowników system plików z driverami, które są potrzebne do startu właściwego systemu plików.

Ot i tyle.

Dodatkowo, initrd jest używane do zmniejszenia kernela. Zamiast robić mega-kernel ze statycznie załadowanymi sterownikami do wszystkiego co się rusza, robi się miniaturowy kernel z niezbędnymi elementami, a potrzebne sterowniki są dynamicznie ładowane z modułów przez initrd.
Paweł Kraszewski
~Arch/Void/Gentoo/FreeBSD/OpenBSD/Specjalizowane customy

sylas

  • Gość
Initramfs, czemu jest potrzebny do montownia głównego systemu plików?
« Odpowiedź #2 dnia: 2014-09-17, 16:51:54 »
Cytat: pkraszewski
Wzdeh...

No więc tak:

do zamontowanie RootFS potrzebujesz:
 * Driver do płyty głównej
 * Driver do kontrolera dysku
 * Driver rozumiejący daną tablicę partycji
 * Driver rozumiejący dany system plików.

Jeżeli wszystkie powyższe możesz skompilować statycznie do kernela, to taki system nie potrzebuje initrd.

Natomiast jeżeli:
 * Któregoś drivera nie da się skompilować statycznie do kernela (np. zamkniętoźródłowy driver do kontrolera RAID) i musi być ładowany z modułu
 * Któryś driver wymaga do pracy zaciągnięcia firmware (tu akurat nie mam rzeczywistego przykładu)
 * Któryś driver wymaga do pracy narzędzi userlandu (np soft RAID w nowym formacie metadanych, raid na BTRFS, zaawansowane konfiguracje ZFS)

to nie da się  uniknąć initrd: do uruchomienia dostępu do dysku potrzebujesz danych, które są na tym dysku, koło się zamyka.

Wtedy właśnie używa się initrd. Initrd jest czytany i rozpakowywany przez bootmanager (np grub) za pomocą usług BIOS/UEFI . Działający kernel dostaje "za darmo" gotowy, działający bez dodatkowych sterowników system plików z driverami, które są potrzebne do startu właściwego systemu plików.

Ot i tyle.

Dodatkowo, initrd jest używane do zmniejszenia kernela. Zamiast robić mega-kernel ze statycznie załadowanymi sterownikami do wszystkiego co się rusza, robi się miniaturowy kernel z niezbędnymi elementami, a potrzebne sterowniki są dynamicznie ładowane z modułów przez initrd.
Bardzo dziękuje za informację. Moja wiedza na ten temat była niepełna. Akurat te ostatnie informację wiedziałem o zmniejszaniu jądra, ale co do reszty to nie. Z tego co mi wiadomo to jeszcze można dodać, że initramfs jest tworzony przez dracut podczas instalacji SO i to właśnie dacut może ładnie go okroić i dostosować do potrzeb (własnie w trakcie instalacji). Ponadto korzysta z systemu stronicowania, dzięki czemu nie trzeba korzystać z urządzeń blokowych.

Jeszcze raz bardzo dziękuje za pomoc.

Offline Paweł Kraszewski

  • Administrator
  • Guru
  • *****
  • Wiadomości: 3070
  • Lenistwo jest matką potrzeby = babcią wynalazku
    • Zobacz profil
Initramfs, czemu jest potrzebny do montownia głównego systemu plików?
« Odpowiedź #3 dnia: 2014-09-17, 21:02:10 »
* Dracut jest tylko jednym z pizdyliona programów do robienia initrd.
* W robocie robię całe systemy wbudowane mieszczące się w initrd. Initrd od strony technicznej to po prostu skompresowane (albo i nie) archiwum CPIO w którym w katalogu głównym jest konkretnie nazywający się plik wykonywalny uruchamiany przez kernel jako proces nr 1. Po prostu mam katalog zawierający pliki mające się znaleźć w initrd, przy kompilacji kernela jest z tego katalogu automatycznie robione initrd i jest wbijane do pliku kernela (initrd jest częścią pliku vmlinuz).
* Nie rozumiem o co chodzi z tym kawałkiem o stronnicowaniu?
Paweł Kraszewski
~Arch/Void/Gentoo/FreeBSD/OpenBSD/Specjalizowane customy

sylas

  • Gość
Initramfs, czemu jest potrzebny do montownia głównego systemu plików?
« Odpowiedź #4 dnia: 2014-10-02, 17:27:31 »
Przepraszam za zwłokę.
Osobiście byłem uczony, że initramfs korzysta ze stronicowania, dzięki czemu nie musi przesył danych odbywać się za pośrednictwem wolnych pamięci masowych, tylko za pośrednictwem 10000-100000 razy szybszego RAM'u.

Offline Paweł Kraszewski

  • Administrator
  • Guru
  • *****
  • Wiadomości: 3070
  • Lenistwo jest matką potrzeby = babcią wynalazku
    • Zobacz profil
Initramfs, czemu jest potrzebny do montownia głównego systemu plików?
« Odpowiedź #5 dnia: 2014-10-02, 21:39:00 »
Zabrakło jednego słowa w pierwszej mojej odpowiedzi:

"Wtedy właśnie używa się initrd. Initrd jest czytany i rozpakowywany przez bootmanager (np grub) za pomocą usług BIOS/UEFI do RAMdysku."

Znaczy, dobrze uczyli.
Paweł Kraszewski
~Arch/Void/Gentoo/FreeBSD/OpenBSD/Specjalizowane customy