Автор Тема: Инструментальные средства сборки базовой системы  (Прочитано 1385 раз)

Оффлайн finalizer

  • Начинающий
  • *
  • Сообщений: 13
Прошу просвятить меня в следующем вопросе. Для самостоятельной сборки Linux системы из исходников необходим набор инструментальный средств (toolchain). По минимуму туда входят binutils, gcc (c, c++), linux_headers, glibc, make, bison, autoconf, shell (например bash или dash), grep, sed, awk/gawk, набор архиваторов (tar, gzip, bzip2, xz), find и возможно ещё две-три утилиты, которые я забыл. Как такой toolchain собирается в Alt Linux? Это часть функциональности Hasher или Hasher использует уже готовый toolchain? Могу ли я воспользоваться системой сборки (скриптами?) альтовского toolchain для его сборки в другом дистрибутиве, например в Slackware или в Void? Или в других дистрибутивах альтовский toolchain, без модификации сборочных скриптов, не собрать?

Я знаю, что есть стартер кит, позволяющий собрать кастомную сборку альтовского дистрибутива. Но мне хочется начать с самого начала - с toolchain.

Заранее спасибо всем ответившим

Оффлайн ruslandh

  • Поспешай не торопясь !
  • Модератор глобальный
  • *****
  • Сообщений: 32 246
  • Учиться .... Телепатами не рождаются, ими ....
    • Email
http://ftp.altlinux.org/pub/people/ldv/hasher/thesis-2004.html
https://www.altlinux.org/Hasher/Руководство
Цитировать
hasher — инструмент для сборки пакетов в «чистой» и контролируемой среде. Это достигается с помощью создания в chroot минимальной сборочной среды, установки туда указанных в source-пакете сборочных зависимостей и сборке пакета в свежесозданной среде. Для сборки каждого пакета сборочная среда создаётся заново.

Оффлайн ruslandh

  • Поспешай не торопясь !
  • Модератор глобальный
  • *****
  • Сообщений: 32 246
  • Учиться .... Телепатами не рождаются, ими ....
    • Email
Я знаю, что есть стартер кит, позволяющий собрать кастомную сборку альтовского дистрибутива. Но мне хочется начать с самого начала - с toolchain.
Как я понимаю, под toolchain вы понимаете сборочную среду?

Оффлайн finalizer

  • Начинающий
  • *
  • Сообщений: 13
Как я понимаю, под toolchain вы понимаете сборочную среду?
Не совсем. Я хочу собрать bootstrap сборочную среду (минимальную Linux систему с минимальным набором средств сборки, запускаемую в VirtualBox) при помощи этого toolchain и уже там, дособрав необходимые утилиты (такие как RPM) и возможно пересобрав саму минимальную систему (теперь уже без необходимости в chroot, кросс-компиляции и в таких вещах, как --with-sysroot=<path>) собирать пакеты будущей системы.

hasher — инструмент для сборки пакетов в «чистой» и контролируемой среде. Это достигается с помощью создания в chroot минимальной сборочной среды, установки туда указанных в source-пакете сборочных зависимостей и сборке пакета в свежесозданной среде. Для сборки каждого пакета сборочная среда создаётся заново.
Тоесть hasher каждый раз заново компилирует binutils, gcc (c, c++), linux_headers, glibc, make и т.д. (весь toolchain) для сборки очередного пакета? На сколько независимо от host системы он это делает? Скажем если у меня Slackware с более старыми версиями всего этого добра, будет ли новый gcc компилироваться с новой версией glibc и сам новый glibc этим более новым gcc? Я смотрел как это делается в LFS (Linux from scratch) и мне не всё там понравилось. В LFS патчат исходники gcc, создают симлинки /tools --> ${LFS}/tools, ${LFS}/lib64 --> ${LFS}/lib и делают другие нестандартные манипуляции. Поэтому я хочу изучить как начальный toolchain собирается в нормальном дистрибутиве, например в Alt Linux.

Оффлайн ruslandh

  • Поспешай не торопясь !
  • Модератор глобальный
  • *****
  • Сообщений: 32 246
  • Учиться .... Телепатами не рождаются, ими ....
    • Email
Нет,  hasher среду сборки заново не компилирует, а уста6авливает ы сборочный "chroot"

Оффлайн sb

  • Модератор глобальный
  • *****
  • Сообщений: 8 991
Вопросы бутстрапа вам может пояснить mike@, который занимается портированием альта на эльбрус (ну или подскажет, к кому ещё обратиться с этим вопросом, если он сам не найдет времени). Попробуйте заглянуть в рассылки - там вы с большей вероятностью и быстрее достучитесь до адресатов. На форуме они бывают, но нерегулярно.

Оффлайн asy

  • alt linux team
  • ***
  • Сообщений: 8 099
Но мне хочется начать с самого начала - с toolchain.
Тут немного не так. Надо же не пакеты собирать, а именно дистрибутив из пакетов. Видимо, начинать вот отсюда: https://www.altlinux.org/Mkimage/Profiles/Desktop

Оффлайн finalizer

  • Начинающий
  • *
  • Сообщений: 13
Вопросы бутстрапа вам может пояснить mike@
Спасибо. Можно ли, перед тем, как обращаться к mike@, заглянуть в git репозиторий альтовского toolchain? Возможно я смогу понять суть процесса сборки вашего toolchain самостоятельно.

Тут немного не так. Надо же не пакеты собирать, а именно дистрибутив из пакетов. Видимо, начинать вот отсюда: https://www.altlinux.org/Mkimage/Profiles/Desktop
Моя цель не в сборке кастомной версии Alt Linux готовыми инструментами, а в создании собственной независимой системы из исходного кода и с пакетным менеджером. Я хочу понять как всё это работает, а LFS меня не устраивает. Цель чисто образовательная, можно сказать for fun.

Оффлайн sb

  • Модератор глобальный
  • *****
  • Сообщений: 8 991
Вопросы бутстрапа вам может пояснить mike@
Спасибо. Можно ли, перед тем, как обращаться к mike@, заглянуть в git репозиторий альтовского toolchain? Возможно я смогу понять суть процесса сборки вашего toolchain самостоятельно.
За ответами на эти вопросы (и за ссылками на гит или ещё куда) пожалуйте всё же к mike@ (или в рассылки), т.к. здесь на форуме (я подозреваю что вообще никто) мало кто сможет об этом сказать более конкретно, не имея за спиной реальной практики.

Оффлайн Skull

  • Глобальный модератор
  • *****
  • Сообщений: 19 908
    • Домашняя страница
    • Email
Не к mike@, а к glebfm@ c ключевым словом "bootstrap".
Андрей Черепанов (cas@)

Оффлайн asy

  • alt linux team
  • ***
  • Сообщений: 8 099
Моя цель не в сборке кастомной версии Alt Linux готовыми инструментами, а в создании собственной независимой системы из исходного кода и с пакетным менеджером. Я хочу понять как всё это работает, а LFS меня не устраивает. Цель чисто образовательная, можно сказать for fun.
Тогда мне кажется, что присутствует некоторое недопонимание процесса, как такового. Чего-то подобного Buildroot нет. Есть некая минимальная сборочная среда, фактически состоящая из минимального набора уже готовых пакетов, которая формируется для сборки очередного пакета. И да, это формируется внутри hasher, и из _готовых_ пакетов. После сборки пакет попадает в репозиторий, либо добавляясь, либо замещая какой-то другой.

Оффлайн andrew_b

  • Завсегдатай
  • *
  • Сообщений: 534
Не к mike@, а к glebfm@ c ключевым словом "bootstrap".
Таки https://www.altlinux.org/Bootstrap

Оффлайн finalizer

  • Начинающий
  • *
  • Сообщений: 13
Тогда мне кажется, что присутствует некоторое недопонимание процесса, как такового. Чего-то подобного Buildroot нет. Есть некая минимальная сборочная среда, фактически состоящая из минимального набора уже готовых пакетов, которая формируется для сборки очередного пакета. И да, это формируется внутри hasher, и из _готовых_ пакетов. После сборки пакет попадает в репозиторий, либо добавляясь, либо замещая какой-то другой.
Как же появляются пакеты этой минимальной среды? Очевидно, что без первоначальной bootstrap сборки тут не обойтись.

Оффлайн sb

  • Модератор глобальный
  • *****
  • Сообщений: 8 991
Не к mike@, а к glebfm@ c ключевым словом "bootstrap".
Ну, собственно, они оба участвовали в бутстрапе на других архитектурах, да. Не ошибусь, если скажу, что каждый из них может об этом рассказать достаточно убедительно.

Оффлайн finalizer

  • Начинающий
  • *
  • Сообщений: 13
Таки https://www.altlinux.org/Bootstrap
Спасибо за ссылку. Если я правильно понял всё начинается с какой-то уже существующей сторонней Linux системы, в которой создаётся новая директория, в ней структура директорий минимальной Linux системы, в неё копируются базовые элементы данной сторонней системы, затем делается chroot на эту директорию и в ней пересобираются все скопированные элементы базовой системы плюс rpm. Пересборка и установка делается несколько раз, пока все элементы chroot системы не станут родными и затем используется hasher, создающий пакеты базовой системы. Тоесть никакой кросс-компиляции и игр с хитрыми настройками configure, как например --with-sysroot в binutils и gcc и тому подобного, описанного в Linux from scratch вы не используете?

И видимо так же происходят обновления элементов toolchain (таких как gcc и glibc), когда начинается переход на их новые версии в самом Alt Linux?
« Последнее редактирование: 28.11.2017 22:11:59 от finalizer »