Git Product home page Git Product logo

bs's Introduction

bs

bs - автоматизированная система сборки LFA из исходного кода. Она проектировалась таким образом, чтобы быть простой в обращении: от пользователя требуется выбрать материнскую плату, для которой будет произведена кросс-компиляция LFA, при необходимости указать версию ядра и ряд других параметров. После чего выполнить несколько этапов сборки системы.

Модель

Сборка системы производится на x86_64 компьютера посредством кросс-компилятора, генерирующего файлы для одной из архитектур семейства ARM1.

Процесс сборки

Скомпилируйте систему сборки:

cargo b -r

Сначала требуется сконфигурировать систему сборки:

./target/release/bs menuconfig

От вас требуется указать в ряде меню нужные для сборки сведения. При необходимости можете воспользоваться справкой: она доступна по нажатию кнопки <Help>. В отличие от руководства LFA и документации к системе сборки эта справочная система полностью на английском.

В результате работы этой команды будет создан файл .config.toml с основными параметрами сборки.

После чего требуется подготовить хост-систему к сборке:

./target/release/bs configure-host

В результате чего будет создан пользователь и группа со случайным именем (имя пользователя и группы совпадают), а также будут создан ряд необходимых для сборки файлов и директорий в домашней директории только что созданного пользователя.

Теперь можно ыполнять сборку системы:

./target/release/bs build

Система сборки запоминает собранные пакеты и, если вы прервали работу bs до окончания сборки, вы можете вернуться к сборке с момента прерывания.

Системные требования

  • Процессор: 4-ядерный x86_64 процессор.
  • ОЗУ: 4 Гб и более.
  • Свободное место: не менее 10 Гб. Рекомендуется собирать систему на SSD.
  • Установленное ПО: sudo, rustc, cargo, ncurses, необходимое для сборки ПО (список содержится в руководстве LFA).

Footnotes

  1. В руководстве LFA рекомендуется собирать для AArch64, однако существует поддержка и других архитектур.

bs's People

Contributors

mskrasnov avatar

bs's Issues

Окно выбора способа конфигурирования ядра

Нужно выводить окно, в котором пользователь укажет, использовать ли стандартный конфиг-файл ядра для сборки, созданный разработчиками LFA, либо же доверить конфигурирование ядра Linux пользователю, выводив перед компиляцией окно make menuconfig

Список пакетов для сборки

Требуется добавить в bs::conf.rs структуру PackagesList со списком пакетов, которые будут собраны:

pub struct PackagesList {
    pub packages: Vec<Package>,
}

pub struct Package {
    pub stage: String,
    pub script: String,
}

Каждый элемент вектора PackagesList.package - строка, в которой содержится имя скрипта (Package.script), который должен быть написан на BASH и способен исполняться (т.е. каждому сборочному скрипту нужно будет дать право исполнения) и имя этапа сборки (Package.stage). Каждый этап сборки представляет собой директорию со сборочными скриптами. Например, директория со скриптами для сборки кросс-компилятора, директория со скриптами для сборки базовой системы и т.д.

Разделить `menuconfig` на две опции

Требуется разделить bs menuconfig на две опции:

  • bs menuconfig - выводит главное меню конфигуратора со списком опций (выбор материнской платы, версии ядра и варианта конфигурации ядра). Пользователь самостоятельно ходит по меню и указывает нужные ему сведения. В случае, если он что-то не настроил в главном меню, должны использоваться стандартные параметры. После окончания конфигурирования пользователь в главном меню нажмёт на кнопку <Write> и ему будет выведено окно подтверждения, в котором будут приведены все параметры, которые будут записаны в файл .config.toml.
  • bs autoconfig - текущее поведение конфигуратора. Не выводится никаких главных меню, все нужные для конфигурации окна открываются последовательно друг за другом.

Модуль для логирования

Требуется создать модуль log.rs, в котором будет содержаться структура Log с методами для:

  1. Создания директории с логами (logs/)
  2. Записи информации о железе компьютера и иных сведений в logs/telemetry.toml
  3. Создание файла logs/build.log.toml

[конфигуратор] Отображение версий руководства LFA

Требуется выводить псевдографическое окно конфигуратора, в котором пользователь должен будет выбрать версию руководства, из которой будут использоваться сборочные инструкции и другие файлы. Кроме того, нужно предусмотреть возможность отображения в списке этого меню как всех версий (стабильных и нестабильных), так и только стабильных.

  • Затрагивает: bs::conf::conf::SettingsSharedConf (требуется добавить параметр show_unstable_lfa_versions: bool).

`bs configure-host`

Добавить обработку опции configure-host:

  1. Создание временного пользователя, от имени которого будет выполняться сборка системы1.
  2. Создание в домашней директории только что созданного пользователя ряда необходимых для сборки файлов и директорий.
  3. Настройка пользовательского окружения (объявление необходимых переменных окружения и т.д.).
  4. Скачивание исходного кода необходимых системных компонентов.

Footnotes

  1. Имя временного пользователя генерируется для каждого нового сеанса сборки (новый сеанс сборки создаётся путём генерации файла .config.toml с параметрами сеанса с помощью команды bs menuconfig).

Получение параметров из TUI

После того, как пользователь ввёл все необходимые данные в псевдографических окнах cursive, требуется получить введённые пользователем данные и конвертировать их в формат bs для записи в файл .config.toml.

Пути логирования и телеметрии

Требуется во время начала сборки LFA (не считая конфигурирования системы сборки и хоста, непосредственно перед и после работы команды build) создавать директорию logs/, в которой будут расположены следующие файлы:

  1. build.log.toml - информация об уже собранных пакетах в формате TOML (требуется для возможного возобновления работы сборки с этапа завершения);
  2. telemetry.toml - информация о хосте и цели (#9)

Модуль для получения сведений о системе

Требуется написать модуль, который будет получать следующие данные о системе:

  1. Информация о хосте:
    1. Бренд, частота и число ядер процессора
    2. Архитектура процессора
    3. Объём ОЗУ
    4. Свободное место на корневом разделе
    5. Версия ядра Linux
    6. Имя системы, на которой производится сборка LFA
  2. Информация о цели:
    1. Информация об окружении (список всех переменных окружения, отдельно переменные окружения $LFA_*)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.