SATtva Персональная страница
темы архив все rss xml 2.0
 
 
блог
досье
связь
english
 

RAW RAW FIGHT DA POWAH!!1

23.11.2009
blender

image

Бэкпорт кода OpenSpace

16.11.2009
софт

С полгода назад со мной связался текущий мэйнтейнер проекта WackoWiki. Удивило меня не только и не столько то, что проект снова обрёл поддержку, но то, что он обратился ко мне с просьбой заимствовать код OpenSpace для их следующего релиза. Разумеется, никаких возражений, тем более, что я его публиковал под GPL. Прошло сравнительно немного времени, и они уже готовят к выходу версию 4.3. Приятно, что там нашли место почти все мои нововведения, за исключением разве что расширений для GnuPG. :)

Все любят кисок

07.10.2009
blender

image

Alparo-кун, ты про животину спрашивал? :)

"Земля без людей". Уже почти. :)

25.09.2009
blender

image

Очередное баловство на конкурс по одноимённой теме. Спасибо NASA за наше счастливое детство (на самые детализированные текстуры даже оперативки не хватило). Можно щёлкнуть по превьюшке для полноформатной картинки.

42

22.08.2009
blender

image

Монохромка

28.06.2009
blender

image

Говно какое-то

14.06.2009
blender

image

emerge-delta-webrsync с проверкой pgp-подписей

27.05.2009
pgp

Допилил тут гентушный скрипт emerge-delta-webrsync, чтобы он сверял pgp-подписи со снапшотов портежа: как с новых, так и с реконструированных по дельтам. То есть после синхронизации портежа, независимо от того, с каких зеркал качались снапшоты и дельты (при этом по открытым каналам), остаётся гарантия, что портеж находится в том виде, в каком был заверен на сервере Gentoo Foundation, и ничего лишнего в него не понапихали злобные враги.

Если оно кому нужно, то архив вот (правой кнопкой > сохранить как), подпись здесь.

Скрипт пригоден для автоматической работы по крону. Помимо прочего добавил в него дополнительный логгинг: все неудачные сверки подписей будут выводиться в authpriv с приоритетом warning. Разумеется, если подпись по той или иной причине не сверяется, скрипт немедленно прерывает исполнение ещё до синхронизации снапшота с рабочим деревом портежа в /usr/portage.

Для установки скопируйте сам emerge-delta-webrsync и небольшой скрипт-хэлпер gpg-check-file.py в /usr/bin или иной каталог, прописанный в PATH. Затем добавьте в /etc/make.conf следующие переменные:

SNAPSHOT_GPG_KEY="отпечаток ключа Gentoo Portage Snapshot Signing Key", которым заверяются снапшоты. (Если что, отпечаток текущего ключа, действующего до конца года, -- AE54 54F9 67B5 6AB0 9AE1 6064 0838 C26E 239C 75C4. Скопировать можно в таком виде, с пробелами или без, в любом регистре.) Эта переменная обязательна, без неё скрипт откажется работать.

PORTAGE_GPG_DIR="путь к домашнему каталогу GnuPG, где находится связка с указанным выше ключом". Отсутствие этой переменной (в отличие от предыдущей) некритично, по умолчанию принимается путь /root/.gnupg, но тогда убедитесь, что открытый ключ Portage Snapshot Signing Key действительно находится на связке ключей у рута.

DELTASYNC_MIRRORS="разделённый запятыми список зеркал для скачивания дельт и снапшотов". Поскольку я использую разные зеркала для получения дельт и исходников, посчитал такое расширение для себя удобным. Но если не хочется держать два списка, то при отсутствии этой переменной используются зеркала из основного списка GENTOO_MIRRORS.

Залогиньтесь рутом, скачайте ключ, заверяющий снапшоты, и заверьте его неэкспортируемой подписью (или что там предусматривает ваша политика сертификации):
gpg --keyserver subkeys.gpg.net --recv-key 0x239C75C4
gpg --lsign 0x239C75C4

В случае проблем сообщайте.

ДОБАВЛЕНО (30.05): Отредактировал постинг в соответствии с изменениями в скрипте. Спасибо Mellon'у за дельные советы.

ДОБАВЛЕНО (04.01): Бэкпорт багфикса #299443 из официальной версии emerge-delta-webrsync-3.5.1-r3 (случилась локальная Проблема-2010):
sed 's/portage-200\*/portage-2[[:digit:]][[:digit:]][[:digit:]][[:digit:]][[:digit:]][[:digit:]][[:digit:]]/g'

Жаркий день в Каире

10.04.2009
blender

Небольшой промо-ролик для студии 3d-визуализации. Делалось в Гимпе, Блендере и Аудасити. Скачать можно отсюда (26 Мб).

image

Переход с no-multilib на multilib-enabled-профиль: если очень хочется, то можно

16.03.2009
линукс

За последнее время в руки попало несколько приложений, скомпилированных под 32-разрядную среду. Приложения закрытые, так что пересобрать их не представляется возможным, а на ноуте, как назло, давно стоит чистая 64-битная система (собственно, харденд-Гента).

Но я человек нехитрый, тупо переключил профиль на multilib и стал надеяться, что оно полетит. Разумеется, пересборка тулчейна (и, персонально, glibc) никуда не полетела, а вывалилась с жалобами на /lib/cpp, не прошедший sanity check. А на что я надеялся, если в системе нет инструментария для сборки x86-кода?

Полез в гугл, где быстро наткнулся на неутешительный ответ:

Warning: Currently you cannot switch from a no-multilib to a multilib-enabled profile, so think over your decision twice before you use the no-multilib profile.

Несправедливо! Из дальнейшего гугленья выяснилось, как всяческие проблемы с /lib/cpp решают в иных дистрибутивах: просто ставят подходящий бинарный пакет. Ну а мы чем хуже? Итак, ниже представлен действенный процесс перевода Gentoo Linux с чистого профиля amd64 на amd64-multilib (наличие hardened-патчей не играет роли), не прибегая к кросс-компиляции.

(Прежде, чем продолжить, настоятельно советую сделать резервную копию тулчейна: quickpkg binutils gcc glibc. Если у вас несколько версий gcc в слотах, укажите нужную атомом, особенно если это hardened-версия компилятора. Затем скопируйте файлы бинарных пакетов из /usr/portage/packages/All (или где там у вас PKGDIR) в какой-нибудь надёжный каталог.)

Для дальнейших манипуляций необходимо наличие Gentoo LiveCD (хотя, в принципе, подойдёт и InstallCD), который по сути -- универсальная multilib-система с нужным для наших целей тулчейном. У меня как раз на жёстком диске лежала исошка. Монтируем её и образ системы (если у вас это добро записано на CD, то первым mount'ом просто примонтируйте этот CD):

mkdir /mnt/{iso,squash}
mount -o loop ~/livecd-amd64-installer-2008.0-r1.iso /mnt/iso
mount -o loop /mnt/iso/image.squashfs /mnt/squash

Скопируем содержимое squashfs в нормальную файловую систему, в которой можно работать:

dd if=/dev/zero of=~/livecd_fs bs=1M count=2500
mkfs.ext3 -b1024 -I128 -m0 -O sparse_super -Fv ~/livecd_fs
mkdir /mnt/gentoo
mount -o loop,exec ~/livecd_fs /mnt/gentoo
cp -vrpP /mnt/squash/* /mnt/gentoo/

(Как и у большинства задач в линуксе, у этой тоже есть несколько решений. Так, если у вас InstallCD, то создавать образ на 2.5 гигабайта совершенно не требуется. Объём можно сократить и в случае LiveCD, если не копировать всё содержимое squashfs. Я здесь пошёл по простейшему пути.)

Всё почти готово. Подключаем служебные {псевдо}-файловые системы и актуальное дерево портежа:

mount -t proc none /mnt/gentoo/proc
mount -o bind /dev /mnt/gentoo/dev
mount -o bind /usr/portage /mnt/gentoo/usr/portage/

Если каталоги с дистрибутивами и бинарными пакетами лежат у вас не в /usr/portage/{distfiles,packages}, а за пределами директории portage, не забудьте примонтировать аналогичным образом и их. Теперь завершаем приготовления и чрутимся в созданную среду:

cp -vPf /etc/make.* /mnt/gentoo/etc/
chroot /mnt/gentoo /bin/bash

С помощью ls -l /etc/make.profile убедитесь, что символьная ссылка ведёт к нужному вам multilib-профилю. (Тут стоит оговориться, что если ваша основная, не-chroot-система использует hardened-профиль, не указывайте его, если только не перенесли в chroot и hardened gcc. Иными словами, достаточно выбрать обычный десктопный профиль amd64, который по умолчанию multilib.) Затем отредактируйте /etc/make.conf, добавив в список USE-флагов multilib. Также, если в переменной FEATURES прописывали всяческие ограничения привилегий для работы портежа (типа usersandbox, userpriv и т.п.) и при этом сидите на hardened-ядре с укреплённым chroot'ом, уберите их, иначе не сможете выполнить сборку.

Наконец, обновляем среду и компилируем мультилибнутый glibc, создавая бинарный пакет. Имейте в виду, необходимо собрать ту же самую версию glibc, что и в основной системе, так что указывайте пакет атомом.

env-update ; source /etc/profile
emerge --metadata
emerge --buildpkgonly =sys-libs/glibc-2.6.1

Если на этапе конфигурации не возникнет проблем, то и сборка наверняка пройдёт успешно. Итак, если нам повезло, и glibc с USE-флагом multilib собран, возвращаемся из чрута на свет божий: logout.

Убедитесь, что у вас установлен флаг multilib (emerge --info | grep multilib) и, если нет, добавьте его в make.conf. Всё готово к установке glibc и пересборке тулчейна (не забудьте указать gcc атомом, если у вас hardened-профиль):

FEATURES="-collision-protect" emerge -K sys-libs/glibc
emerge =sys-devel/gcc-3.4.6-r2
emerge binutils glibc =sys-devel/gcc-3.4.6-r2

Осталось прибраться и пересобрать мир:

umount -v /mnt/gentoo/proc
umount -v /mnt/gentoo/dev
umount -v /mnt/gentoo/usr/portage/
# отмонтируйте остальные использованные вами файловые системы
# <...>
umount -v /mnt/gentoo
umount -v /mnt/squash
umount -v /mnt/iso
rm -vi ~/livecd_fs
rmdir /mnt/{iso,squash,gentoo}
emerge -e world

Миссия выполнена.

Два дня новогодних каникул

10.01.2009
blender

И двое суток процессорного времени.

image

image

Что-то я круто 3d увлёкся. Пора меру знать.