У стародавні часи ядро було важко закодовано, щоб знати основну / меншу кількість кореневих файлів і встановити цей пристрій після ініціалізації всіх драйверів пристроїв, вбудованих у ядро. rdevУтиліта може бути використана для зміни кількості кореневого пристрою в образі ядра без необхідності перекомпілювати його.
Врешті-решт завантажувачі завантажуються і можуть передати командний рядок до ядра. Якщо root=аргумент був переданий, він повідомив ядро, де знаходиться корінь fs замість вбудованого значення. Для доступу до драйверів, які ще мали бути вбудовані в ядро, потрібні були драйвери. Хоча аргумент виглядає як звичайний вузол пристрою в /devкаталозі, очевидно, що /devдо монтажу кореня fs немає каталогу, тому ядро не може шукати там вузол dev. Натомість деякі відомі імена пристроїв важко кодуються в ядро, тому рядок може бути переведений на номер пристрою. Через це ядро може розпізнавати такі речі /dev/sda1, але не більш екзотичні речі, такі /dev/mapper/vg0-rootяк UUID.
Пізніше initrdприйшов у світ картину. Поряд з ядром завантажувач завантажував initrdзображення, яке було якось стислим зображенням файлової системи (gzipped зображення ext2, зображення gzipped romfs, нарешті стали домінуючими). Ядро декомпресує це зображення на рамковий диск і монтує ramdisk як root fs. Це зображення містило деякі додаткові драйвери та сценарії завантаження замість реального init. Ці сценарії завантаження виконували різні завдання з розпізнавання апаратного забезпечення, активації таких речей, як рейдові масиви та LVM, виявлення UUID та розбору командного рядка ядра, щоб знайти справжній корінь, який тепер може бути визначений UUID, міткою тома та іншими розширеними речами. Потім він встановив справжній root fs /initrd, а потім виконав pivot_rootсистемний виклик, щоб ядро змінилось /і/initrd, то виконайте виконання /sbin/initсправжнього кореня, який потім відключить /initrdта звільнить рамбіск.
Нарешті, сьогодні у нас є initramfs. Це схоже на initrdфайл, але замість того, щоб бути стислим зображенням файлової системи, завантаженим у рамковий диск, це стислий архів cpio. Tmpfs змонтовано як корінь, і там архів витягується. Замість використання pivot_root, яке розцінювалося як брудний хак, initramfsзавантажувальні скрипти монтують справжній корінь /root, видаляють усі файли в корені tmpfs, потім chrootу /root, і exec /sbin/init.