W czasach starożytnych jądro było mocno zakodowane, aby znać główną / mniejszą liczbę root fs i montowało to urządzenie po zainicjowaniu wszystkich sterowników urządzeń wbudowanych w jądro. rdevNarzędzie może być wykorzystywane do zmiany numeru urządzenia głównego w jądrze bez konieczności ponownej kompilacji.
W końcu pojawiły się programy ładujące i mogły przekazać wiersz poleceń do jądra. Jeśli root=argument został przekazany, informowało to jądro, gdzie znajduje się root fs zamiast wbudowanej wartości. Sterowniki wymagały dostępu, które wciąż musiały być wbudowane w jądro. Podczas gdy argument wygląda jak normalny węzeł urządzenia w /devkatalogu, oczywiście nie ma /devkatalogu przed zamontowaniem root fs, więc jądro nie może tam znaleźć węzła dev. Zamiast tego niektóre dobrze znane nazwy urządzeń są zakodowane na stałe w jądrze, aby ciąg mógł zostać przetłumaczony na numer urządzenia. Z tego powodu jądro może rozpoznać takie rzeczy jak /dev/sda1, ale nie bardziej egzotyczne rzeczy takie jak /dev/mapper/vg0-rootUUID woluminu.
Później initrdpojawił się na zdjęciu. Wraz z jądrem moduł ładujący initrdładowałby obraz, który był pewnego rodzaju skompresowanym obrazem systemu plików (obraz gzipped ext2, obraz romfów gzip, wreszcie squashfs stał się dominujący). Jądro rozpakuje ten obraz na ramdysk i zamontuje go jako root fs. Ten obraz zawierał kilka dodatkowych sterowników i skryptów rozruchowych zamiast prawdziwego init. Te skrypty rozruchowe wykonały różne zadania w celu rozpoznania sprzętu, aktywacji takich rzeczy, jak tablice RAID i LVM, wykrycia UUID i parsowania wiersza poleceń jądra w celu znalezienia prawdziwego katalogu głównego, który może być teraz określony przez UUID, etykietę woluminu i inne zaawansowane rzeczy. Następnie zamontował prawdziwy root fs /initrd, a następnie wykonał pivot_rootwywołanie systemowe w celu wymiany jądra /i/initrd, a następnie uruchom /sbin/initna prawdziwym katalogu głównym, który następnie odmontuje /initrdi uwolni ramdysk.
Wreszcie, dzisiaj mamy initramfs. Jest to podobne do tego initrd, ale zamiast być skompresowanym obrazem systemu plików ładowanym do ramdysku, jest to skompresowane archiwum CPIO. Tmpfs jest montowany jako root, a archiwum jest tam rozpakowywane. Zamiast używać pivot_root, co uważano za brudny hack, initramfsskrypty rozruchowe montują prawdziwy root /root, usuwają wszystkie pliki z root tmpfs, a następnie chrootdo /rooti wykonują /sbin/init.