Учебный проект по сборке минимального дистрибутива Linux из исходных кодов по методологии Linux From Scratch с помощью Bash-скриптов и автоматизации рутинных этапов компиляции пакетов.
Важно: это учебная/лабораторная реализация, а не production-ready дистрибутив. Скрипты написаны для воспроизводимого прохождения этапов LFS и могут содержать упрощённые настройки безопасности.
- Разворачивает хост-сборщик на базе Debian внутри QEMU.
- Создаёт второй виртуальный диск для целевой системы LFS с разделами
boot,swapиroot. - Пошагово выполняет главы LFS 5–10: временный тулчейн, постоянную систему, ядро, GRUB, загрузку.
- Дополнительно устанавливает несколько инструментов информационной безопасности в собранную систему.
- Сохраняет промежуточные состояния (checkpoints) и логи, чтобы сборку можно было продолжить после сбоя или перезапуска ВМ.
Windows-хост
└── QEMU (портативный)
├── Debian build-host (сборщик)
│ └── SSH + Bash-скрипты
└── Второй виртуальный диск
└── Целевая система LFS
| Путь | Назначение |
|---|---|
scripts/ |
Хостовые PowerShell-обёртки и гостевые Bash-скрипты сборки |
instruction.md |
Краткое методическое описание лабораторной работы |
build_report.py |
Генератор отчёта по результатам сборки |
cloud-init/ |
Конфигурация начальной инициализации Debian VM. user-data заменён на шаблон без реальных паролей/ключей. |
keys/ |
Место для SSH-ключей доступа к ВМ. В публичной версии удалены — см. keys/REMOVED_SENSITIVE_DATA.md. |
state/ |
PID-файлы и рантайм-состояние. В публичной версии удалены — см. state/README.md. |
logs/ |
Логи QEMU и сборки. В публичной версии удалены — см. logs/README.md. |
images/ |
Образы виртуальных дисков *.qcow2. В публичной версии удалены — см. images/REMOVED_SENSITIVE_DATA.md. |
downloads/ |
Скачанные исходники и установщики. В публичной версии удалены — см. downloads/REMOVED_SENSITIVE_DATA.md. |
tools/ |
Сторонние бинарные инструменты, например QEMU и LibreOffice. В публичной версии удалены — см. tools/REMOVED_SENSITIVE_DATA.md. |
-
Подготовьте окружение:
- Windows с PowerShell 5.1+ и SSH-клиентом (
ssh.exe,scp.exe). - Python 3 для локального HTTP-сервера cloud-init.
- Windows с PowerShell 5.1+ и SSH-клиентом (
-
Сгенерируйте свою пару SSH-ключей и поместите её в
keys/(вместо файла-заглушкиREMOVED_SENSITIVE_DATA.md). Имя ключа должно совпадать с placeholder<project-key>в PowerShell-скриптах:ssh-keygen -t ed25519 -f keys\my-qemu-lfs-key # затем замените <project-key> в scripts/*.ps1 на имя ключа
-
Настройте
cloud-init/user-data:- Файл уже заменён на шаблон с placeholder-паролями.
- Укажите свой публичный SSH-ключ и замените пароли на надёжные.
-
Запустите хост-сборщик:
.\scripts\Initialize-QemuDebian.ps1 -
Скачайте исходники LFS:
.\scripts\Download-LfsSources.ps1 -
Выполняйте этапы сборки по порядку:
.\scripts\Build-LfsChapter5.ps1 .\scripts\Build-LfsChapter6.ps1 .\scripts\Build-LfsChapter7.ps1 .\scripts\Build-LfsChapter8.ps1 .\scripts\Build-LfsChapter9.ps1 .\scripts\Build-LfsChapter10.ps1 .\scripts\Build-LfsSecurityTools.ps1
-
Запустите собранную систему:
.\scripts\Start-LfsTarget.ps1 # headless .\scripts\Start-LfsTargetGui.ps1 # с VGA-консолью
- Скрипты разделены на хостовые (PowerShell) и гостевые (Bash) части.
- Каждый гостевой скрипт создаёт маркер-файлы в
/var/local/lfs-checkpoints, чтобы при повторном запуске пропускать уже выполненные шаги. - Сборка пакетов ведётся с
MAKEFLAGS="-j$(nproc)"для ускорения компиляции. - Генератор отчёта
build_report.pyформирует документ с теорией, алгоритмом, выбранными инструментами и результатами.
Примерный набор, устанавливаемый в целевую систему:
nmap— сканер сети и сервисовtcpdump/libpcap— захват и анализ трафикаchkrootkit— проверка индикаторов руткитовrkhunter— аудит конфигурации на малварь/руткитыlynis— аудит безопасности и харденингаopenssl— криптографический тулкит
В опубликованной версии репозитория уже удалены и/или заменены на placeholder:
- приватные SSH-ключи (
keys/); - реальные пароли и SSH-ключи из
cloud-init/user-data; - имена пользователей (
codex,lfsmain) и имена ключей в PowerShell-скриптах заменены на<user>/<project-key>; - рантайм-логи (
logs/), PID-файлы и состояние (state/); - образы дисков (
images/), скачанные исходники (downloads/) и сторонние бинарные инструменты (tools/); - сгенерированные отчёты (
*.docx,*.pdf,report_render/).
Вместо них оставлены файлы-заглушки REMOVED_SENSITIVE_DATA.md с описанием, что там было.
Если вы будете форкнуть проект и запускать его заново, не забудьте создать собственные ключи, пароли и скачать QEMU/исходники LFS.
- Windows 10/11 (хост)
- PowerShell 5.1 или PowerShell 7+
- QEMU for Windows (скрипт
Initialize-QemuDebian.ps1загружает и устанавливает портативную копию автоматически) - ~20–30 ГБ свободного места на диске
- Включённая виртуализация (Hyper-V / WHPX / KVM в зависимости от хоста)
Собственные скрипты и документация этого репозитория распространяются под лицензией MIT — см. файл LICENSE.
Исходные коды сторонних пакетов, которые загружаются и собираются в процессе работы (Linux From Scratch, QEMU, LibreOffice, ядро Linux, GRUB, nmap, tcpdump/libpcap, chkrootkit, rkhunter, lynis и др.), принадлежат их авторам и поставляются под собственными лицензиями.