Тепер до детального пояснення того, що я виклав вище.
Хоча і initramfs, і initrd служать одній і тій же цілі, є 2 відмінності. Найбільш очевидна відмінність полягає в тому, що initrd завантажується в рамковий диск. Він складається з фактичної файлової системи (як правило, ext2), яка встановлена у рамному диску. З іншого боку, initramfs - це не файлова система. Це просто (стислий) архів cpio (типу newc), який розпаковується в tmpfs. Це має побічний ефект, що робить initramfs трохи оптимізованішим і здатним завантажуватися трохи раніше в процесі завантаження ядра, ніж initrd. Крім того, розмір initramfs в пам'яті менше, оскільки ядро може адаптувати розмір tmpfs до того, що фактично завантажено, а не спиратися на попередньо визначені розміри ramdisk,
Існує також ще одна різниця побічних ефектів: як керувати кореневим пристроєм (і перемикатися на нього). Оскільки initrd - це фактична файлова система, розпакована в операційний пам'ять, кореневим пристроєм фактично повинен бути ramdisk. Для initramfs існує ядро "rootfs", яке стає tmpfs, в яке initramfs розпаковане (якщо ядро завантажує initramfs; якщо ні, то rootfs - це просто файлова система, вказана через параметр завантаження root = kernel), але цей тимчасовий rootfs не повинен бути вказаний як параметр root = boot (і не було б способу зробити це, оскільки до нього не приєднано жодного пристрою). Це означає, що ви все ще можете передавати свій справжній кореневий пристрій до ядра під час використання initramfs. За допомогою initrd ви повинні обробити те, що є справжнім кореневим пристроєм. Також, оскільки "справжній" кореневим пристроєм з initrd є ramdisk, ядро має дійсно переносити кореневі пристрої з одного реального пристрою (ramdisk) на інший (ваш справжній корінь). У випадку з initramfs простір initramfs (tmpfs) не є реальним пристроєм, тому ядро не перемикає реальні пристрої. Таким чином, хоча команда pivot_root використовується з initrd, для initramfs слід використовувати іншу команду. Busybox надає перемикач_root для цього, а klibc пропонує new_root. для initramfs слід використовувати іншу команду. Busybox надає перемикач_root для цього, а klibc пропонує new_root. для initramfs слід використовувати іншу команду. Busybox надає перемикач_root для цього, а klibc пропонує new_root.
pivot_root
у минулому для initramfs,switch_root
не існував на той час.switch_root
Здається, зручним методом,pivot_root
який робить ще чисте очищення, а також переміщення/proc
/sys
і/dev
т. д., а не лише сам корінь