ebuild для кросскомприляции ядра

Добрый день!

Что почитать что-бы написать сабж? Чтение документации разработчика пока ясности не приносит. Задача наложить определеные патчи на стандартные исходники и сделать ARCH=... CROSS_COMPILE=... make zImage, ну может еще подсунуть нужный .config

Речь идет о

Речь идет о компиляции ядер под sharp zaurus и другие КПК.
В генту ядра - единственный компонент, который не компилируется автоматически. Все ебилды только вытаскивают ядра из интернета, распаковывают в /usr/src/ и накладывают на них соответствующие патчи. Я думаю, что не стоит отступать от этой традиции.
Я бы для каждого девайса завел бы по USE флагу и исходя из этих флагов накладывал бы патчи на ядро. И еще подсунул бы дефолтный конфиг, но клал бы его как .config.example, может пользователь сам захочет что-то изменять.
Компилировать же будет сам пользователь.
И в конце распаковки написать, какой командой ему надо собирать ядро, написать про пример конфига.
PS Я думаю проще всего будет модифицировать существующий ебилд для ядра. А насколько правильно определять тап устройства по USE флагу?

Я думаю ничего

Я думаю ничего страшного не случится если будет отдельный ebuild для zaurus ядер ;)

У меня уже есть /usr/local/portage где автоматически созданы eduild-ы для кросс-компилятора (с помощью crossdev). Туда же я и хочу положить sys-kernel/corgi-sources итд итп... и пусть они собираются по emerge - это ведь только упростит жизнь при сборке прошивки (мета-портежа ;).

Ну конечно

Ну конечно отдельный ебилд. Просто проще всего адаптировать уже имеющийся, скопировать и переправить. Просто я думаю, что если для каждого КПК делать свое ядро, то некрасиво получится, поэтому сделать нечто вроде arm-sources.

согласен

согласен
а конфиг можно подсовывать иcходя из USE
Но актуальность сабж от этого не падает!

Я сейчас

Я сейчас просматриваю ебилды для ядер. При кросскомпиляци срабатывает вот это:
gvim /usr/portage/eclass/kernel-2.eclass

# Cross-compile support functions
#==============================================================
kernel_header_destdir() {
	[[ ${CTARGET} == ${CHOST} ]] \
		&& echo /usr/include \
		|| echo /usr/${CTARGET}/usr/include
}

cross_pre_c_headers() {
	has _E_CROSS_HEADERS_ONLY ${USE} && [[ ${CHOST} != ${CTARGET} ]]
}

env_setup_xmakeopts() {
	# Kernel ARCH != portage ARCH
	export KARCH=$(tc-arch-kernel)

	# When cross-compiling, we need to set the ARCH/CROSS_COMPILE
	# variables properly or bad things happen !
	xmakeopts="ARCH=${KARCH}"
	if [[ ${CTARGET} != ${CHOST} ]] && ! cross_pre_c_headers ; then
		xmakeopts="${xmakeopts} CROSS_COMPILE=${CTARGET}-"
	elif type -p ${CHOST}-ar > /dev/null ; then
		xmakeopts="${xmakeopts} CROSS_COMPILE=${CHOST}-"
	fi
	export xmakeopts
}

Т.е. он складывает их в правильную директорию, где кросскомпилятор находится. И ARCH=... CROSS_COMPILE=... он тоже автоматически правильно выставляет.
Я правильно понимаю, что тут надо обязательно конфигурировать и собирать ядро в той же консоли, откуда emerge было вызвано?

А вот сюда надо

А вот сюда надо записать, какие патчи накладывать:
UNIPATCH_LIST
Сообщи, что собираешься накладывать, и линки на патчи, я тогда сваяю ебилд.

Настройки просмотра комментариев

Выберите нужный метод показа комментариев и нажмите "Сохранить установки".