Skip to content

Repository files navigation

qemu-lfs

Учебный проект по сборке минимального дистрибутива 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.

Как пользоваться

  1. Подготовьте окружение:

    • Windows с PowerShell 5.1+ и SSH-клиентом (ssh.exe, scp.exe).
    • Python 3 для локального HTTP-сервера cloud-init.
  2. Сгенерируйте свою пару SSH-ключей и поместите её в keys/ (вместо файла-заглушки REMOVED_SENSITIVE_DATA.md). Имя ключа должно совпадать с placeholder <project-key> в PowerShell-скриптах:

    ssh-keygen -t ed25519 -f keys\my-qemu-lfs-key
    # затем замените <project-key> в scripts/*.ps1 на имя ключа
  3. Настройте cloud-init/user-data:

    • Файл уже заменён на шаблон с placeholder-паролями.
    • Укажите свой публичный SSH-ключ и замените пароли на надёжные.
  4. Запустите хост-сборщик:

    .\scripts\Initialize-QemuDebian.ps1
  5. Скачайте исходники LFS:

    .\scripts\Download-LfsSources.ps1
  6. Выполняйте этапы сборки по порядку:

    .\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
  7. Запустите собранную систему:

    .\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 и др.), принадлежат их авторам и поставляются под собственными лицензиями.

About

Выполнение учебного проекта по сборке минимального дистрибутива Linux из исходных кодов по методологии Linux From Scratch. Получение базового представления о структуре каталогов ОС, процессе загрузки и базовых утилитах системного окружения. Использование Bash-скриптов и LLM-ассистента для автоматизации рутинных этапов компиляции пакетов.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages