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
()

Опять кто-то на 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)