LINUX.ORG.RU
Форум — Admin  

Cross-compiling build kernel. Растолкуйте

 , , ,


0

2

Не так давно (как и в линуксе) решил попробовать кросс-компиляцию, но возможно чего-то недопонимаю.
Дано:
Слабенький и уже старенький ноут (2 core, 2 threads, 2 ram)
Стационарный комп (4 core, 4 threads, 16 ram)
На обоих Gentoo
Ноут

cat /etc/portage/make.conf 
CFLAGS="-O2 -pipe -mtune=silvermont"
CXXFLAGS="${CFLAGS}"
MAKEOPTS="--jobs 11 --load-average 2"
FEATURES="distcc"

Комп

cat /etc/portage/make.conf 
CFLAGS="-O2 -pipe -mtune=skylake"
CXXFLAGS="${CFLAGS}"
MAKEOPTS="--jobs 11 --load-average 9"
FEATURES="distcc"

На обоих девайсах /etc/conf.d/distccd со следующими параметрами DISTCCD_OPTS="--allow 127.0.0.1 --port 3632 --log-level critical --allow 10.254.27.192/26 --listen 10.254.27.218 -N 15 за исключением параметра --listen. То есть на буке листен ip компа, а на компе соответственно листен ip бука

Поигравшись с настройками distcc и потестировав сборку пакетов на буке, открыв и там и там htop, видно как перекладывается нагрузка на cpu компа при сборке.
Но запустив сборку ядра на буке, нагрузки никакой на компе нет =( скриншот (сверху htop бука, снизу компа). Соответственно на дохлом буке сборка происходит ужасно долго
Подскажите пжлста ЧЯДНТ…?!?

★

Ядро то зачем через distcc собирать? Ядро само по себе, там можно выбрать процессор и оно будет собрано под него. Потом скопировать.

И в целом, ИМХО, distcc то ещё развлечение, проще на стационарнике сделать chroot и там собирать бинарные пакеты для ноута.

mky ★★★★★
()

Ещё в portage можно запустить ROOT=/mnt/notebook/ SYSROOT=/mnt/notebook/ emerge -NDuavb @world где указать путь к корню ноутбука и сборка будет для ноута. Но там нужно *flags немного переделать и я это пробовал очень давно.

fucpsy
()

-mtune=silvermont

Практически бесмысленно без -march

anonymous
()

Опять кто-то на silvermont gentoo собирает, УЖОС! Ядро нет смысла собирать на слабой машине если есть машина помощнее. Запусти resolve-march-native на ноутбуке, потом вбей результат в makefile ядра на ПК и запусти сборку там Сами пакеты конечно можно с distcc собирать, но configure будет долгим, а для максимальной производительности лучше вырубить network sandbox

mittorn ★★★★★
()

Давненько я не пользовался distcc вне portage, пишу по памяти, возможно мои сведения устарели.

Добавь CC=discc к опциям make при сборке.

То есть если ты делаешь

make && make modules_install install
, то вместо этого делай
make CC=distcc && make modules_install install

Учти, что некоторые программы на C/C++ с distcc могут не собраться.

В общем, плюсую мнение mky - chroot сейчас более актуален, т.к. уже достаточно много софта на Go/Rust, которые в distcc не засунешь.

Pinkbyte ★★★★★
()
Последнее исправление: Pinkbyte (всего исправлений: 1)
  • Markdown
Пустая строка (два раза Enter) начинает новый абзац. Знак '>' в начале абзаца выделяет абзац курсивом цитирования.
Внимание: прочитайте описание разметки Markdown.
Используйте Ctrl-Enter для размещения комментария