Запуск Linux из одного файла — это не маркетинговый трюк, а реальная техника: ядро bzImage вместе с initramfs, в который упакована вся пользовательская среда, загружается как единственный исполняемый образ, без разделов, без установки и без файловой системы на диске. Такой подход используется во встраиваемых системах, аварийных rescue-образах, минималистичных контейнерах и экспериментальных проектах вроде загрузки Linux прямо из EFI-приложения.
В этой статье разберём, что стоит за термином «one file linux», какие инструменты позволяют собрать систему в один файл, чем отличаются подходы на базе BusyBox, статической линковки и initramfs, а также где такой формат реально применим, а где станет источником проблем.
Что на самом деле означает «Linux в одном файле»
Под формулировкой «one file linux» обычно скрывается один из трёх сценариев. Первый — монолитный загрузочный образ: ядро с встроенным initramfs, содержащим всё необходимое (оболочку, утилиты, библиотеки). Второй — единый статический бинарник, который сам является минимальной пользовательской средой и запускается поверх чужого ядра. Третий — запуск Linux как обычного приложения, например через User-Mode Linux, где вся система — один исполняемый файл.
Ключевая идея общая: убрать зависимость от файловой системы на диске. Система целиком помещается в оперативную память при загрузке, работает оттуда и исчезает после выключения, если явно не настроено сохранение данных. Это радикально упрощает доставку: скопировал один файл — и система готова.
Практический предел такого подхода — объём оперативной памяти: весь образ распаковывается в RAM, поэтому «толстый» one-file-образ на слабой машине просто не загрузится.
Архитектура: ядро + initramfs как единое целое
Классическая схема сборки выглядит так. Берётся ядро Linux, собранное с поддержкой встроенного initramfs (параметр конфигурации ядра, отвечающий за встраивание архива начальной корневой ФС). Затем готовится минимальная корневая среда: каталог с /init, /bin, /dev, /proc. Эта среда упаковывается в cpio-архив и линкуется прямо в образ ядра.
Внутри initramfs обычно живёт BusyBox — один статически собранный бинарник, заменяющий сотни стандартных утилит (sh, ls, mount, cp и другие) через симлинки. Именно связка «ядро + BusyBox в initramfs» — самый популярный способ получить работающий Linux из одного файла.
find . | cpio -o -H newc | gzip > initramfs.cpio.gzПосле сборки итоговый файл bzImage можно передать любому загрузчику — GRUB, syslinux, systemd-boot — или даже запустить напрямую как EFI-приложение, если ядро собрано с поддержкой EFI stub. Тогда вообще не нужен отдельный загрузчик: прошивка UEFI исполняет файл ядра напрямую.
💡One File Linux = ядро + initramfs с пользовательской средой, упакованные в один загрузочный файл; вся система работает из оперативной памяти.