Ajattara and Verjnuarmu

| 09.05.2012 slyfox

Чудный финский black metal (не для впечатлительных :])

recover broken BIOS

| 08.04.2012 slyfox

Расскажу как я умудрился запороть :] и героически восстановить BIOS на старой материнке EPOX 8HMMI-A 2005 года выпуска.

Далее »

seekwatcher

| 10.03.2012 slyfox

seekwatcher is a nice tool written by btrfs author and primary maintainer Chris Mason.

It is designed to visualise seek-bound tasks.

Amount of seek() operations is about ~100-200 per second on rotational drives (5ms to reposition heads). The more your HDD is – the more seek latency will bite you.

Let’s look at a fun workload: cvs update on a large project: gentoo-x86 CVS tree.

Далее »

gentoo chrootiez in 30 seconds

| 08.03.2012 slyfox

Сегодня получил доступ к ppc64 коробке. Решил причесать ворох хаков в отдельный проект и забросил на gihtub как gentoo-chrootiez.

Тут наиподробнейшая последовательность действий, чтобы развернуть chroot.

Работает не только для gentoo, но в gentoo не нужно делать вообще ничего, чтобы получить rootfs. Распаковали stage3 – и можно заходить.

Далее »

Недавно снова взялся за hackport. [ Это прога, которая позволяет конвертировать пакеты с hackage в оверлей gentoo-haskell. ]

Далее »

Только что дочитал Lord of The Rings.

Ещё чудослова:

Далее »

Я думал, что собирать остальные кросскомпиляторы так же просто, как и arm кросскомпилятор. Ан нет! paludis запас нам несколько подводных граблей.

Далее »

sparc relocations

| 19.12.2011 slyfox

Заметил я как-то однажды в lkml письмо от Rob Landley (больше всего знаменитого авторством busybox).

В письме описана проблема загрузки sparc32 ядра linux в qemu:

Boot time fixup v1.6. 4/Mar/98 Jakub Jelinek (jj@ultra.linux.cz).
Patching kernel for srmmu[Fujitsu TurboSparc]/iommu
Fixup i f029ddfc doesn't refer to a valid instruction at
f00de648[95eea000]
halt, power off

Далее »

canyoucrackit riddle

| 04.12.2011 slyfox

Вчера на ночь глядя получил от Антоши ссылку на загадку. Обычно я таким даже не пытаюсь заниматься, ибо сложные :].

Но в этот раз я проявил настойчивость и хакнул его. Попробуйте разломать это чудо сами. Даже я осилил!.

Дальше идёт один большой спойлер :].

Далее »

slyfox’s overlay

| 16.11.2011 slyfox

Запилил вчера в layman свой оверлей:

Далее »

ghc-7.2.2 is in overlay

| 13.11.2011 slyfox

Сразу после релиза ghc-7.2.2 попал в овелей :]

Изменения минимальны: исправлен кодогенератор для x86 и amd64. Разработчики вовсю готовятся выпустить ghc-7.4.1. Странно, что 7.2.2 вообще вышел :].

А еще сегодня день рождения еще одного gentoo haskell dev: gienah!

unknown words (the hobbit)

| 13.11.2011 slyfox

А сегодня осилил The Hobbit.

Очередная пачка слов :] (предыдущая)

Далее »

btrfs subvolumes

| 07.11.2011 slyfox

Немного порассуждаем о явлении фрагментации во всяких файловых системах и как их можно избежать на при разработке файловой системы и при ее использовании.

Далее »

unknown words (silmarillion)

| 05.11.2011 slyfox

Сегодня прочитал Silmarillion.

Нашел для себя «пару» неизвестных слов. Ссылки сгенерены скриптом, так что некоторые из слов переводов иметь не будут.

Возможно, моя опечатка или опечатка в книге (или слово из другого скандинавского языка). Сколько из них знаете Вы?

Далее »

asimov

| 28.10.2011 slyfox

Я наконец-то прочитал весь креатив Азимова. Пара реквизитов (легко гуглится):

$ ls ...
"The Complete Asimov.pdf" 10812545 bytes
$ sha1sum "The Complete Asimov.pdf"
a500956f0baa18255fba31cb388358af5ab6b99b

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

Далее »

AP wifi

| 23.10.2011 slyfox

На этой неделе у меня появился очередной девайc: TP-LINK TL-WN722N. Задача-максимум была поднять его в Access Point режиме (master mode).

На gentoo-wiki оказась отличная статья.

Далее »

Noumena: Suomalainen musiikki

| 11.10.2011 slyfox

Очередной поход на last.fm выявил еще несколько классных групп. Одна из них – веселые финские ребята: Noumena.

Приятный death с оттенками doom и humppa. Тексты англоязычные.

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

Примеры, когда это может понадобиться:

  • перегрузить функцию открытия файла (open()) так, чтобы вести отчёт открывавшихся программой файлов
  • перегрузить функцию открытия сокетов (connect()) так, чтобы прозрачно для программы авторизоваться на HTTP (или SCOKS) прокси. Такие проги даже есть на свете: tsocks и transconnect. Было время, когда я пользовался ими каждый день :]

Попробуем перегрузить функцию exit() в glibc. Большинство UNIX позволяют принудительно вгрузить какую-то стороннюю библиотеку в адресное пространство запускаемой программы через глобальную переменную LD_PRELOAD.

Попробуем простой пример:

#define _GNU_SOURCE
#include <stdlib.h>
#include <stdio.h>
#include <unistd.h>
#include <dlfcn.h>
void exit(int status)
{
void (*real_exit)(int status);
*(void **)&real_exit = dlsym (RTLD_NEXT, "exit");
fprintf (stderr, "<<<%s:Morning sir! I pass you to the %p function>>>\n", W, real_exit);
real_exit (status);
}

$ cc -g -O0 -fPIC -DW='"w1"' main.c -o stat_wrapper1.so -shared -ldl
$ cc -g -O0 -fPIC -DW='"w2"' main.c -o stat_wrapper2.so -shared -ldl
$ LD_PRELOAD="./stat_wrapper1.so ./stat_wrapper2.so" ls .
main.c makefile stat_wrapper1.so stat_wrapper2.so
<<<w1:Morning sir! I pass you to the 0x7fba1919a67c function>>>
<<<w2:Morning sir! I pass you to the 0x7fba18a38150 function>>>

Работает :]

В gentoo при сборке пакетов используется утилита sandbox, которая перехватывает функции обращения к файловой системе и ругается, когда при записи билд вылазит за дозволенные границы:

$ /bin/bash -c 'echo 1 > foo'
$ sandbox /bin/bash -c 'echo 1 > foo'
/bin/bash: foo: Permission denied
$ sandbox /bin/bash -c 'echo 1 > /tmp/foo' # а в /tmp/ - можно :]

Но внутри sandbox LD_PRELOAD не работает.

me

| 27.09.2011 slyfox

Я :]

firefox ftp utf-8 filenames

| 04.09.2011 slyfox

Продолжая тему нормальных utf-8 имён в firefox сегодня уконфигурим нормальное отображение utf-8 файлов по FTP.

TL;DR:

about:config: intl.config.default: windows-1251 -> utf-8

Далее »

alpha journey

| 11.08.2011 slyfox

Сегодня решил проверить, не починили ли сборку на ghc альфе. Патч Саймона окончательно всё исправил, и теперь у нас есть надежда на ghc-7.2 с полным составом поддерживаемых архитектур.

На радостях я решил посмотреть, как там жизнь на alpha и увидел, что демон nrpe засирает dmesg невыровненным доступом:

$ dmesg
...
do_entUnaUser: 2 callbacks suppressed
nrpe(1185): unaligned trap at 000002000011ab94: 00000001200401ec 2d 31
nrpe(1185): unaligned trap at 000002000011ab94: 00000001200401f4 2d 31
nrpe(1185): unaligned trap at 000002000011ab94: 00000001200401fc 2d 31
nrpe(1185): unaligned trap at 000002000011ab94: 0000000120040204 2d 31
nrpe(1185): unaligned trap at 000002000011ab94: 000000012004020c 2d 31

Решил попробовать исправить. Здесь прочитал про хак с включением SIGBUG на unaligned access через очень странный недокументированный и неэкспортируемый glibc системный вызов osf_setsysinfo.

Естественно, программа не работала :] Результат – патч в ядро. Не знаю, помогает или нет (ядро грузнуть гнегде :]), но найти ошибку заняло минут 20 таращенья в git log. mattst88 подсказал, что для поиска таких штук еще есть prctl (и я дописал упоминание о нем в док).

На arm я unaligned access искал с помощью обычных breakpoints в gdb:

$ gdb -p $pid
break *(0x${pc-of-faulty-insn})
continue

Тут это не сработало из-за того, что nrpe довольно корявый, постоянно форкающийся, снижающий привилегии маложивущий демон. Пришлось немного повозиться, чтобы вычислить, что ошибка в openssl. Правда, я ее еще не до конца отследил.

Зато нашел баг в strace. Патч в апстриме.

UPDATE:

Баг таки выловил и их там оказалось даже 2! Даже патч послал, но апстрим оказался быстрее.

an unsafeInterleaveIO example

| 10.08.2011 slyfox

Этот пост будет про unsafeInterleaveIO.

Часто хочется работать с IO данными, будто они являются ленивыми. Как hGetContents (или readFile), которая возвращает ленивую строку-содержание файла:

do by_line <- lines `fmap` readFile "/some/log/file"
-- дальше работает с by_line как с обычным ленивым списком

По мере необходимости при использваонии новых строк они считываются с диска, а чтобы файл закрылся – надо обработать все данные (с этим надо аккуратно).

Попробуем построить похожую функцию, которая получает данные из IO по мере использования.

Далее »

26

| 08.08.2011 slyfox

ghc-7.0.4 is pushed to portage

| 06.08.2011 slyfox

15 Июня 2011 года вышел ghc-7.0.4. В оверлее он появился в тот же день. Это хорошая традиция.

Подготовка ghc к добавлению его в основное дерево gentoo-x86 заняла почти 2 месяца. На самом деле это очень быстро :] До этого были (традиционно неюзабельные) релизы ghc 7.0.1, 7.0.2 и 7.0.3, основываясь на которых мы уже слали патчи в разные апстримы, которые ломаются с каждой новой мажорной версией ghc. Так что к релизу 7.0.4 у нас всё более-менее собиралось.

В этот раз серьезным изменением было выбрасывание base-3 и обновление Cabal до 1.10 (появился новый интерфейс для тестов).

Далее »

is your code portable?

| 29.07.2011 slyfox

Когда я пытаюсь разобраться в новом коде – я беру свой любимый компилятор и пытаюсь пофиксить (или хотя-бы рассмотреть) большинство предупреждений, которые он выдает. Потом выворачиваю уровень выдачи предупреждений на максимум и всё начинаю сначала.

gcc -Wall -W -Wextra -Weff-c++
gcc --help=warnings # и еще штук 20 из этого списка :]

Далее »


Закрыть