Какой рейтинг вас больше интересует?
|
reiser4 для openSUSE-11.22009-11-14 13:37:00 (читать в оригинале)/* И вновь продолжается бой, И сердцу тревожно в груди. И Ленин - такой молодой, И юный Октябрь впереди! /Н. Добронравов, 1974/ собсно продолжение "весёлой (1)" "истории (2)" с ура-патриотическим шовинистским наклоном. потихоньку перечисляем причины, по которым задерживается/откладывается/херится компиляция рабочего софта для openSUSE-11.2: * в текущей версии "binutils-2.19.51" кто-то умный (ОЧЕНЬ умный, да-да-да!) взял и догадался запретить "ld" делать статическую линковку бинарей по умолчанию. абзац. передай CFLAGS параметр "-static" и можешь быть свободен (вопрос на засыпку: "а сколько проверок тех же autotools применяют статику для тестирования окружения?!"). из-за этого в Factory накрылась сборка "reiser4progs" и ваш покорный слуга "осилил" первым (damn, i'm good!) поднять "Титаник" из глубин: пруфлинк :) после чего встал раком вопрос о прикрутке ядрёного модуля для полноты ощущений. есть три варианта успешного развития событий: 1) тянем с kernel.org сырцы ядра, патчим по своему усмотрению, ставим; 2) ковыряем текущие исходники от SuSE (с учётом того, что некоторые патчи из "обоймы" reiser4 уже наложены); 3) берём diff-ы reiser4 и, радостные, лепим из них сырцы ядрёного модуля для последующей сборки по фэн-шую, выкладываем в OBS, лепим src.rpm и развлекаемся по полной программе матёрого эксгибициониста. * история нумеро уно (светлая и радостная) теперь по-порядку. при любых раскладах нам понадобятся исходники ядра от SuSE (чтобы припухнуть от количества патчей, выбрать нужные и хоть немного, но сообразить, почему ядро от SuSE заведётся даже на Gentoo, установленной на Mac Book, с поддержкой всего найденного оборудования): > sudo zypper si kernel-source для простоты из "/usr/src/packages/SOURCES/patches.suse.tar.bz2#utar/patches.suse/" дёргаем лишь файл "bootsplash" как пример. вам что-то ещё нужно?! - не стесняйтесь. можно себе позволить и правой рукой, и левой и обеими одновременно. именно тот случай. частенько встречаются индивидуумы с синдромом "мля, это говно нибуя не компилиццо!". им может помочь (в плане уменьшения расхода нервных клеток ессно, IQ приходит с опытом/возрастом... правда не ко всем... и не всегда...) простенький конструкт (дёшево и сердито, рекомендую кстати): > sudo zypper in ccache > mkdir $HOME/bin > ln -s /usr/bin/ccache $HOME/bin/cc > ln -s /usr/bin/ccache $HOME/bin/gcc > ln -s /usr/bin/ccache $HOME/bin/g++ > export PATH="$HOME/bin:$PATH" если вы уже упёрли kernel-2.6.31.6 (налетай, падхады!), а с офсайта оттяпали набор reiser4 патчей для пионэров - то удача близка, как никогда ранее! осталось всего-ничего: состыковать это богатство в единое целое (Кама-Сутра нам поможет), компильнуть, инстальнуть и ребутнуться. некоторые индивидуумы перед оправлением большой нужды не заботятся о наличии "облагораживающих рулонов бумаги" поблизости. "не наш метод"(с). выбор каталога для исходников ядра (KERNELSOURCEDIR) и выбор каталога для собранных, но не установленных, файлов (KERNELBUILDDIR) очень важен. хотя бы потому, что в процессе сборки они могут занять до 4-ёх Gb дискового пространства, а то и поболее (если мы лепим модули для разных вариантов настроек ядра). все детали очень хорошо описаны в файле "Linux-2.6*/README" - изучите. и подумайте о добавлении команд "make prepare && make scripts" в рутинный процесс компиляции. для простоты эксперимента не будем мудрить (распакуем исходники ядра в "/usr/src/"): > export KERNELSOURCEDIR=/usr/src/linux-2.6.31.6 > export KERNELBUILDDIR=/usr/src/linux-2.6.31.6 готовимся отпатчить исходники по самое "не балуй!": > mkdir /usr/src/patch_reiser4 > cd /usr/src/patch_reiser4/ > tar xf $PATH_TO_SOURCE/reiser4-for-2.6.31.patch.bz2 > cd /usr/src/patch_reiser4/linux-2.6.3?/ > mkdir my_additional_patches > cd ./my_additional_patches/ > cp $PATH_TO_SOURCE/bootsplash ./bootsplash.diff решаем шкурный вопрос о патчах reiser4 *.diff файлов. либо делаем: > mv /usr/src/linux-2.6.31.6 /usr/src/linux-2.6.31 # и корректируем переменные KERNEL*DIR либо > cd /usr/src/patch_reiser4/linux-2.6.31/ > find ./ -type f -exec sed -i 's|\ linux\-2\.6\.31|\ linux\-2\.6\.31\.6|' {} \; приводим в порядок "bootsplash.diff" заменяя аморфные " a/" и " b/" на имя каталога с нашим новым ядром - "linux-2.6.31.6" или что-там-у-вас-получилось. настал торжественный момент! "собирайтесь, девки, в кучу, я вам чучу отчебучу!" (наше дерево патчей - в "/usr/src/patch_reiser4/linux-2.6.31/"!) > cd /usr/src/patch_reiser4/ > find ./linux-2.6.31/ -type f -exec cat {} \; | patch -d /usr/src/ -p0 -i - если вас устраивает текущее ядро и нет желания изображать из себя "великого оптимизатора" - пришло время расслабиться: > cd $KERNELSOURCEDIR/ > zcat /proc/config.gz > ./.config > make oldconfig > make O="$KERNELBUILDDIR" > sudo make O="$KERNELBUILDDIR" modules_install install новые записи уже добавились в меню grub-а, хотя можно и проверить/поправить дефолт: > sudo vim /boot/grub/menu.lst можно (и нужно) перегрузить машину на новое ядро и (ежели таки оргазм) - прислать аффтару пиффка для рыффка. последние штрихи: > sudo depmod -a # на всякий... > modprobe -v reiser4 insmod /lib/modules/2.6.31.6-0.1-desktop/kernel/lib/zlib_deflate/zlib_deflate.ko insmod /lib/modules/2.6.31.6-0.1-desktop/kernel/lib/lzo/lzo_compress.ko insmod /lib/modules/2.6.31.6-0.1-desktop/kernel/lib/lzo/lzo_decompress.ko insmod /lib/modules/2.6.31.6-0.1-desktop/kernel/fs/reiser4/reiser4.ko гы :). "Отдохнул - убери за собой!"(с): > cd $KERNELSOURCEDIR/ > make clean > zcat /proc/config.gz > ./.config > make oldconfig > make prepare > make scripts в остатке у нас няшный latest-kernel-stable с поддержкой bootsplash (выглядит как "родной"!) и reiser4 (надеюсь, что мои пакетики с "reiser4progs" уже установлены, да?). дерево исходников очищено от мусора и можно переходить к * истории второй, печальной и тупой... хвастать, признаю, пока нечем. первый яростный натиск потерпел фиаско. финал был комичен - загруженная машина где ничерта не работало, пришлось ядро переставлять с dvd (ибо модуль сетевой карточки тоже не загружалсо...). много про себя думал. в разных позах, обстоятельно. итак, на ваш суд выносим "тернистый путь ошибок трудных..." засада начинается с разблядовки ядра на составляющие по-умолчанию (примерно так это выглядит): > rpm -qa | grep kernel | sort kernel-debug-devel-2.6.31.5-0.1.1.i586 kernel-default-devel-2.6.31.5-0.1.1.i586 kernel-desktop-2.6.31.5-0.1.1.i586 kernel-desktop-base-2.6.31.5-0.1.1.i586 kernel-desktop-devel-2.6.31.5-0.1.1.i586 kernel-firmware-20090821-4.1.noarch kernel-pae-devel-2.6.31.5-0.1.1.i586 kernel-source-2.6.31.5-0.1.1.noarch kernel-syms-2.6.31.5-0.1.1.i586 kernel-xen-devel-2.6.31.5-0.1.1.i586 linux-kernel-headers-2.6.31-3.4.noarch получается, что алгоритм решения задачи должен быть примерно следующим: a) "совместить" "объектные" файлы текущего ядра с основным деревом исходников - т.е. получить единое дерево исходников без разбивок на flavors (pae, xen, default, desktop, etc...) для ТЕКУЩЕГО! работающего ядра! т.е. сделать так, чтобы модуль мог быть подгружен в работающее ядро от SuSE! b) удостовериться, что новое дерево стабильно и функционально (т.е. можно смело собирать бинари) c) пропатчить новое дерево reiser4 diff-ами d) собрать модуль reiser4, загрузить в текущее рабочее ядро e) испытать оргазм либо сразу отказаться от выпендрёжа и перейти к "третьему варианту" - подготовке исходников для нового модуля ядра и сборке в соответствии с CODE11. нетрудно догадаться, что в творческом порыве аффтар не стал выполнять пункты a) и b), после чего ухитрился накомпилять ядро с новыми модулями, перетереть, старое, ребутнуться и "качнуть глибцов" по самые гланды. если кто-то думает, что всё прошло без сучка и задоринки (без разбора rej файлов, дополнительных патчей исходников...) - то он "наивный чукотский юноша". аффтар вспомнил всё и всех. на вторую попытку силёнок не хватило. энтузиастам предложу ознакомиться с: > ls /usr/src/linux-2.6.*-obj/$ARCH/$YOUR_FLAVOR на предмет "соединения" с основным деревом исходников. иначе "не пойдёт!"(c). патчи - аналогично, НО: N.B.: просмотрите в файлах (желательно пройтись по всем уже наложенным ессно) /usr/src/packages/SOURCES/patches.suse.tar.bz2 /usr/src/packages/SOURCES/patches.fixes.tar.bz2 какие из патчей для "reiser4" уже присутствуют я ядре openSuSE и измените содержимое reiser4 diff-ов соответственно! иначе... будете как аффтар - ССЗБ. делать "make install" не надо, тупо скопируйте "reiser4.ko" в "/lib/modules/"`uname -r`"/updates/" и, если всё хорошо, сделайте: > sudo depmod -a > modprobe -v reiser4 ня! (или как там получится по обстоятельствам...) * история третья, коротенькая, но оптимистичная... есть у меня махонький такой репо для экспериментов в часы досуга: drivers как только - так сразу там всё и появится. кому оно надо - загрузят "*.src.rpm" и разберутся без соплей. остальные упрут "reiser4-kmp-$FLAVOR" и будут похрюкивать от удовольствия. * послесловие: для модулей ядра стоит быть очень аккуратным с командой "strip". сделайте копию модуля, удалите debug символы, проверьте, загружается ли модуль после этого и только потом "режьте по живому". если нет ОСТРЕЙШЕЙ необходимости - оставьте модули как "not stripped". вот такая вот музыка, такая, блин, Вечная Молодость... на закуску перечислим прочие "заслуги" перед "родиной": * в Enlightenment repo собрали новый снэпшот "fltk2" и "Dillo-2.1.1" (с поддержкой https/ssl - можно даже на gmail.com почту мусолить) * там же в процессе грандиозная чистка spec-файлов от мусора * там же обновлены практически все пакеты на текущие версии (включая git/svn/etc...) * в игрушечном репо собрана новая версия "freetype2-lcd" и "igmpproxy" пропатчен для сборки/работы на openSUSE-11.2 * продолжаем готовить релиз SOAD Linux на базе oS-11.2 - тут всё грустно, ибо многие компоненты, что работают на openSUSE-11.1 в OBS не "портированы" на oS-11.2. да и прочих забот хватает. пока так. поживём, а там видно будет. всем удачи! */
|
Категория «Художники»
Взлеты Топ 5
Падения Топ 5
Популярные за сутки
|
Загрузка...
BlogRider.ru не имеет отношения к публикуемым в записях блогов материалам. Все записи
взяты из открытых общедоступных источников и являются собственностью их авторов.
взяты из открытых общедоступных источников и являются собственностью их авторов.