Tiny Core Linux - это не просто лёгкий дистрибутив, а иная философия построения операционной системы. Образ TinyCore весит 23 мегабайта, Core - 17 мегабайт, а установочный образ CorePlus достигает 248 мегабайт за счёт включённых драйверов Wi-Fi, нескольких оконных менеджеров и инструментов ремастеринга. Версия 17.1, вышедшая в июле 2026 года, сохраняет архитектуру, при которой ядро и базовая файловая система загружаются целиком в оперативную память, а приложения подключаются по требованию в виде SquashFS-модулей с расширением tcz. Такой подход даёт загрузку за секунды на любом железе, защищает системные файлы от изменений и позволяет работать на машинах с 46 мегабайтами памяти - абсолютным минимумом для TinyCore, тогда как Micro Core справляется с 28 мегабайтами. Проект создан Робертом Шингледекером в 2008 году как ответвление от Damn Small Linux и с тех пор развивается небольшой командой энтузиастов, соблюдающих принцип: система должна быть невидимой основой, а не монолитным пакетом решений.
Архитектура загрузки и режимы работы
При включении компьютера загрузчик передаёт управление ядру bzImage и инициализирует core.gz - сжатый образ корневой файловой системы на базе BusyBox и минимального набора модулей ядра. Вся эта структура распаковывается в tmpfs, то есть в оперативную память, и дальше система работает исключительно из RAM. Жёсткий диск или флешка после этого нужны только для хранения пользовательских данных и расширений. В документации выделяют три основных режима: режим по умолчанию Cloud или Internet, режим монтирования Mount Mode и режим копирования Copy Mode. В первом случае расширения скачиваются из репозитория в оперативную память и живут только до перезагрузки. Во втором - расширения лежат в постоянном каталоге tce на диске и монтируются через loop-устройства при старте, экономя память. В третьем - флаг copy2fs.flg или список copy2fs.lst заставляет систему скопировать содержимое выбранных расширений в память, увеличив время загрузки, но дав максимальную скорость работы приложений. Выбор режима задаётся загрузочными кодами и наличием флагов в каталоге tce, что позволяет переключаться между стратегиями без переустановки.
Классическая "разбрасывающая" установка, когда файлы системы разлетаются по разделам, в Tiny Core не используется. Вместо этого применяется frugal-метод: на носителе остаются всего два файла - ядро и core.gz - а загрузчик GRUB, syslinux или extlinux получает параметры загрузки. Каталог tce с расширениями может находиться на том же разделе, на другом, на USB-накопителе или даже в сетевой папке. За это отвечает загрузочный код tce=sda1 или tce=UUID=xxxx-xxxx. При первом запуске с флешки или диска удобно нажать F2 в загрузчике, увидеть подсказку и дописать параметр tce. Система запомнит выбор и будет автоматически находить хранилище при следующих загрузках. Для медленных USB-устройств обязателен параметр waitusb=5 или waitusb=10, иначе система не успеет обнаружить накопитель и загрузится без доступа к расширениям. Поддерживаются файловые системы ext2, ext3, ext4, fat32, что позволяет использовать старые флешки без переформатирования.
Управление расширениями через tce-load и AppBrowser
Каждое приложение в Tiny Core - это файл с расширением tcz, внутри которого лежит SquashFS-образ с программой, библиотеками и скриптом запуска. Зависимости описаны в одноимённых файлах dep и загружаются автоматически. В консоли расширение устанавливается и загружается командой tce-load -wi имя_пакета, где ключ w означает скачивание из репозитория, а i - немедленную загрузку в систему. Без ключей tce-load просто монтирует уже скачанный файл. Графическая оболочка AppBrowser делает то же самое через меню: поиск, отметка OnBoot для автозагрузки или OnDemand для запуска по клику, кнопка Go. Все выбранные к автозагрузке пакеты попадают в файл onboot.lst внутри каталога tce. Удаление расширений безопасно выполняется через AppsAudit: программа помечает пакеты к удалению, а физическое стирание происходит при выключении, когда ни один модуль не занят. Репозиторий для архитектуры x86 содержит более четырех тысяч пакетов, включая современные версии браузеров, офисных пакетов, сред разработки и серверного ПО.
Флаг copy2fs.flg, положенный в каталог tce, переключает всю систему в режим копирования: при загрузке каждое расширение из onboot.lst распаковывается в память, loop-устройства не создаются, доступ к файлам становится мгновенным. Если памяти мало, а скорость нужна только для отдельных программ, используется файл copy2fs.lst - в него записываются имена именно тех расширений, которые должны попасть в RAM, остальные остаются смонтированными. Управлять списком удобно через AppsAudit: вкладка Copy2fs позволяет галочками отметить нужные пакеты. Загрузка в этом режиме занимает больше времени - на старом Pentium III с 256 мегабайтами копирование десятка расширений может добавить 15-20 секунд к старту - но дальнейшая работа в браузере или редакторе кода становится заметно отзывчивее. Для систем с 512 мегабайтами и более copy2fs.flg является рекомендуемым режимом по умолчанию.
Сохранение настроек и данных между сессиями
Поскольку корневая файловая система виртуальна и создаётся заново при каждой загрузке, любые изменения в /etc, /home/tc, /opt исчезают после перезагрузки. Для персистентности используется утилита filetool. Список файлов и каталогов для бэкапа хранится в /opt/.filetool.lst, исключения - в /opt/.xfiletool.lst. По умолчанию туда входит весь /home/tc за исключением кэшей браузеров и временных каталогов. При выключении или по команде filetool.sh -b создаётся архив mydata.tgz в корне хранилища tce, при загрузке он распаковывается обратно. Параметр загрузки norestore позволяет пропустить восстановление - удобно для чистого старта или диагностики. Альтернативный подход - загрузочные коды home=sda1 и opt=sda1, которые привязывают соответствующие каталоги к физическим разделам, минуя архивацию. Это даёт традиционную модель постоянного home-каталога, полезную при совместной работе с другими Linux-системами на одном диске.
Применение на устаревшем оборудовании и в специализированных задачах
Минимальные требования - процессор i486DX с математическим сопроцессором и 46 мегабайт памяти - позволяют запустить TinyCore на машинах конца 90-х. Рекомендуемая конфигурация Pentium II с 128 мегабайтами и swap даёт комфортную работу с браузером Dillo, почтовым клиентом Sylpheed, текстовым редактором Beaver. На неттопах с процессорами Atom и 1-2 гигабайтами памяти система летает, оставляя почти всю память под приложения. Серверные сценарии охватываются образом Core без графики: 17 мегабайт дают рабочее окружение с SSH, веб-сервером lighttpd или nginx, базой данных SQLite. Для беспроводных сетей нужен CorePlus или отдельная установка прошивок firmware-rtlwifi.tcz, firmware-atheros.tcz и утилиты wpa_supplicant через tce-load. Встроенная поддержка UUID и меток разделов через blkid и tune2fs делает флешку с Tiny Core переносимой между разными компьютерами без правки загрузчика.
Практический сценарий развертывания на флешку
Подготовка загрузочной флешки из Linux занимает пару минут. Скачанный образ TinyCore-current.iso записывается на флешку утилитой dd, затем флешка монтируется и на ней создаётся каталог tce для расширений. В загрузчике syslinux.cfg добавляется параметр tce=LABEL=TC tce=UUID=xxxx waitusb=5. После перезагрузки с флешки запускается AppBrowser, устанавливаются браузер, терминал, файловый менеджер, отмечаются OnBoot. Выполняется filetool.sh -b для сохранения настроек. Флешка становится полноценной портативной рабочей станцией: вставлена в любой x86-компьютер - система загружается за 10-15 секунд с сохранёнными закладками, паролями Wi-Fi, раскладкой клавиатуры. Для Windows-пользователей существует утилита Core2usb, автоматизирующая процесс записи образа и настройки загрузчика.
tce-load -wi nano скачать и загрузить редактор nano
tce-load -i /mnt/sda1/tce/optional/mc.tcz загрузить локальный пакет Midnight Commander
filetool.sh -b сохранить текущие настройки в mydata.tgz
filetool.sh -r восстановить настройки из архива вручную
appsaudit открыть графический менеджер расширений
tc-install запустить установщик frugal на диск или флешку
xsetup.sh перенастроить разрешение экрана Xvesa
blkid -s UUID /dev/sdb1 узнать UUID раздела для загрузочного кода
tune2fs -L TC /dev/sdb1 задать метку раздела TC
Эти команды покрывают 90 процентов рутинных действий: установка софта, бэкап, настройка загрузки, диагностика железа. Остальные задачи решаются через меню ControlPanel и контекстные меню оконного менеджера FLWM - правый клик по рабочему столу вызывает главное меню, правый клик по заголовку окна - меню управления окном.
Графическая оболочка TinyCore построена на стеке Xvesa, FLTK 1.3 и оконном менеджере FLWM. Xvesa - это крошечный X-сервер без расширений, весом около полутора мегабайт, работающий через VESA BIOS Extensions. Он не требует драйверов видеокарт и запускается практически на любом железе с VESA-поддержкой. FLWM управляет окнами без панели задач и трея: главное меню вызывается правым кликом по рабочему столу или заголовку окна, виртуальные столы создаются пунктом New Desktop, свёрнутые окна превращаются в заголовки в меню. Панель запуска wbar отображает иконки избранных программ и перезапускается правым кликом по себе. Для настройки разрешения экрана служит скрипт xsetup.sh, который показывает доступные режимы из Xvesa -listmodes. Если монитор не определяется корректно, загрузочный код xvesa=800x600x32 задаёт разрешение принудительно. Альтернатива - Xfbdev на фреймбуфере или полноценный Xorg из расширения Xorg-7.7.tcz для аппаратного ускорения.
Базовая система поставляется только с американской раскладкой и локалью C. Для русского языка устанавливается расширение getlocale.tcz, после запуска которого скрипт предлагает выбрать нужные локали и генерирует файл mylocale.tcz в каталоге tce. Раскладка клавиатуры настраивается расширением kmaps.tcz: загрузочный код kmap=qwerty/ruwin_ct_sh-UTF-8 или команда loadkmap < /usr/share/kmap/qwerty/ruwin_ct_sh-UTF-8 в /opt/bootsync.sh. Часовой пояс задаётся загрузочным кодом tz=MSK-3MSD,M3.5.0/2,M10.5.0/3 для московского времени с переходом на летнее. При использовании NTP-клиента из расширения ntpclient.tcz время синхронизируется при загрузке с кодом settime. Все эти настройки сохраняются в mydata.tgz или в постоянном каталоге /opt при использовании кода opt=sda1.
Сетевая конфигурация и подключение к репозиторию
По умолчанию при загрузке запускается DHCP-клиент udhcpc на всех обнаруженных сетевых интерфейсах. Отключение - код nodhcp. Статический адрес прописывается в /opt/bootlocal.sh командами ifconfig и route. Для Wi-Fi нужен пакет wireless-6.18.35-tinycore.tcz (версия соответствует ядру) и wpa_supplicant.tcz. Конфигурация WPA записывается в /etc/wpa_supplicant.conf, автозапуск - через /opt/bootlocal.sh. Репозиторий расширений выбирается автоматически по геолокации, но можно задать зеркало вручную через файл /opt/tcemirror или переменную окружения MIRROR. Без сети система работает автономно, используя только локальные расширения из onboot.lst.
По умолчанию загружается пользователь tc без пароля, sudo не требует пароля. Для установки пароля root и tc используется загрузочный код secure, который спрашивает пароль при старте. Код protect включает шифрование бэкапа mydata.tgz через GPG. Код noautologin отключает автоматический вход, требуя логин и пароль. Многопользовательский режим реализуется созданием пользователей через adduser из расширения shadow.tcz и настройкой /etc/passwd, /etc/group, /etc/shadow в бэкапе. Для серверных задач удобен код superuser - загрузка в текстовом режиме сразу под root. Файрвол настраивается через iptables из расширения iptables.tcz, правила сохраняются в /opt/bootlocal.sh. Отсутствие systemd и сложных фоновых служб уменьшает поверхность атаки: в базовой системе слушают только порт SSH (если установлен dropbear.tcz или openssh.tcz) и DHCP-клиент.
Обновление расширений выполняется утилитой tce-update в безопасном режиме: загрузка с кодами base norestore, затем tce-update в консоли. Это гарантирует, что ни один модуль не занят в момент замены файлов. Селективное обновление доступно через AppsAudit: вкладка Updates, проверка, выбор пакетов, перезагрузка. После обновления рекомендуется запустить AppsAudit - Dependencies - Update .dep files - Build Reporting Database - Display All with Missing Dependencies, чтобы подтянуть новые зависимости. Обновление самой базы (ядра и core.gz) требует замены файлов vmlinuz и core.gz в загрузочном разделе и переустановки загрузчика. Новые версии выходят раз в несколько месяцев, совместимость расширений сохраняется в рамках мажорной ветки 17.x. Архив старых версий доступен на сайте в разделах 5.x через 17.x.
Продвинутые сценарии с PXE, виртуальными дисками и ремастерингом
PXE-загрузка позволяет запускать Tiny Core на бездисковых станциях: на TFTP-сервере лежат vmlinuz и core.gz, NFS или HTTP отдаёт каталог tce. Загрузочный код tce=nfs://server/path или tce=http://server/path монтирует хранилище по сети. Виртуальные диски tcvd создаются через dd и форматируются в ext2, загрузочный код tcvd=sda1/disk.img tce=tcvd restore=tcvd превращает образ файла в блочное устройство. Ремастеринг - создание собственного ISO - выполняется скриптом remaster.sh из расширения remaster.tcz: он берёт текущую систему с загруженными расширениями, настройками и скриптами, упаковывает в новый core.gz и собирает ISO. Это позволяет поставлять готовые образы для клонирования на десятки одинаковых машин. Для встраиваемых систем используется Core без графики с минимальным набором расширений, размер итогового образа может составлять 8-10 мегабайт.