03.18.10

ubunutu gdm login freeze.

Posted in linux at 12:51 pm by viliar

Иногда случается, что при попытке разблокировать экран процесс логина зависает. Можно, конечно, перезагрузиться, но бывает, что слишком много окон открыто и жалко терять сессию. Мне в этом случае помогала отправка сигнала SIGHUP gdm’у.  А точнее kill -1 `pidof gdm-binary`после логина рутом на первой консоли (Ctrl-Alt-F1)

02.25.10

OOF (out-of-fuel).

Posted in fun, linux at 1:49 pm by viliar

"An aircraft company discovered that it was cheaper to fly its planes
with less fuel on board. The planes would be lighter and use less fuel
and money was saved. On rare occasions however the amount of fuel was
insufficient, and the plane would crash. This problem was solved by
the engineers of the company by the development of a special OOF
(out-of-fuel) mechanism. In emergency cases a passenger was selected
and thrown out of the plane. (When necessary, the procedure was
repeated.)  A large body of theory was developed and many publications
were devoted to the problem of properly selecting the victim to be
ejected.  Should the victim be chosen at random? Or should one choose
the heaviest person? Or the oldest? Should passengers pay in order not
to be ejected, so that the victim would be the poorest on board? And
if for example the heaviest person was chosen, should there be a
special exception in case that was the pilot? Should first class
passengers be exempted?  Now that the OOF mechanism existed, it would
be activated every now and then, and eject passengers even when there
was no fuel shortage. The engineers are still studying precisely how
this malfunction is caused."
 http://lwn.net/Articles/104185/
Твердая пять :-D 

02.18.10

rpm packaging.

Posted in linux at 10:21 pm by viliar

Если не следовать умным документам, типа
RPM advanced docs

и правильно не именовать rpm пакеты c rc/pre версиями, можно вляпаться в следующее:
# rpm -Uhv –force /usr/src/redhat/RPMS/noarch/postfixadmin-2.3rc7-1.noarch.rpm
Preparing…                ########################################### [100%]
1:postfixadmin           ########################################### [100%]
# rpm -Uhv /usr/src/redhat/RPMS/noarch/postfixadmin-2.3-3.noarch.rpm
Preparing…                ########################################### [100%]
package postfixadmin-2.3rc7-1.noarch (which is newer than postfixadmin-2.3-3.noarch) is already installed

Беда. Пакет то уже в репозитарии и установлен в ряд систем. Тем не менее. Даже с такими кривыми руками можно жить, хотя, конечно, менее комфортно.
Добавляем в spec файл после Version и Release следующую строчку:
Epoch:          1

Пересобираем пакет. И вуаля:
# rpm -Uhv /usr/src/redhat/RPMS/noarch/postfixadmin-2.3-3.noarch.rpm
Preparing…                ########################################### [100%]
1:postfixadmin           ########################################### [100%]
Do not forget run upgrade.php!

Happy rpm packaging!

Update:

Пожалуй, на всякий случай приведу кусок текста, мало ли со временем та wiki помрет:

“Sometimes, program naming schemes are good, but rpm is lost. For example, with Proftpd, Pre-releases are named with the version followed by the suffix pre and then the pre version number, like so: 1.2.0pre5. Because of string comparisons, rpm thinks that 1.2.0pre5 is newer than 1.2.0 (we know that this is not true).

To permit upgrades to newer packages, we must help rpm to know which packages are newer than others. We could use the Epoch: tag (superseding the Serial: tag) but this is dirty. You have to use another naming convention, putting the “pre” stuff in the release tag; in our example you will call the package “1.2.0-0.pre5.1mdv”. Then, when 1.2.0 comes out, you’ll release “1.2.0-1mdv”, and this package will be able to upgrade the pre5.”

02.09.10

telnet from linux to windows. admin login.

Posted in linux at 2:00 am by viliar

Из серии очень специфического. Маловероятно, что кому-то пригодится, но мало ли.
telnet -8 -l `echo -n Администратор | iconv -f utf-8 -t cp866` 192.168.0.2

12.02.09

Resource limit wrapper.

Posted in linux at 9:52 pm by viliar

Наглые прожорливые программы, особенно в условиях ограниченного ресурса памяти, (да, того самого дешевого ресурса) на десктопе целесообразно запускать через какой-нибудь враппер типа этого:
$ cat /usr/bin/start

#!/bin/bash

ulimit -v 460800
ionice -c3 -p $$
nice -n19 $@ &

И запускать их типа start firefox, start linuxdcpp.
Опционально можно ограничить стэк и прочее. Ограничение по памяти указывать вторым аргументом. Небольшая, но автоматизация :-)

P.S. Это, конечно, не замена pam limits и пр, но “в пределах” одного пользователя удобно.

11.20.09

Занимательные факты о ядре.

Posted in linux at 2:50 am by viliar

Для того, чтобы собрать ядро с make allyesconfig (тест работы domU) нужно примерно 1.5Gb виртуальной памяти, то есть физической+свап. Иначе линкеру ее просто не хватает:

ld: final link failed: Memory exhausted.

Update: 1.5Gb тоже не хватило. Подключил 2Gb.

P.S. Размер стека естественно увеличен.

10.07.09

yum&chroot

Posted in linux at 9:37 am by viliar

# chroot /mnt/root/
# yum clean all
Traceback (most recent call last):
File “/usr/bin/yum”, line 4, in ?
import yum
File “/usr/lib/python2.4/site-packages/yum/__init__.py”, line 43, in ?
import rpmsack
File “/usr/lib/python2.4/site-packages/yum/rpmsack.py”, line 24, in ?
from packages import YumInstalledPackage, parsePackages
File “/usr/lib/python2.4/site-packages/yum/packages.py”, line 31, in ?
import rpmUtils.arch
File “/usr/lib/python2.4/site-packages/rpmUtils/arch.py”, line 303, in ?
canonArch = getCanonArch()
File “/usr/lib/python2.4/site-packages/rpmUtils/arch.py”, line 299, in getCanonArch
return getCanonX86_64Arch(arch)
File “/usr/lib/python2.4/site-packages/rpmUtils/arch.py”, line 262, in getCanonX86_64Arch
f = open(”/proc/cpuinfo”, “r”)
IOError: [Errno 2] No such file or directory: ‘/proc/cpuinfo’
# exit
# cat /proc/cpuinfo > /mnt/root/proc/cpuinfo
# chroot /mnt/root/
# yum clean all
Cleaning up Everything

И не надо mount –bind /proc или mount -t proc…

Update: достаточно даже
# touch /proc/cpuinfo

10.02.08

Resolvers

Posted in linux, opensource at 4:33 pm by viliar

Ситуация. Имеем  FreeBSD Jail. В нем работает rbldnsd. Как оказывается, при использовании одного ip (это условие)  возникает проблема в работе dns. Куда вешать named?

Решения, естественно есть, но вот какие-то все кривоватые. Так как тупо нет адреса 127.0.0.1. (В openvz, например, есть).

1) Поднять named где-то еще. Минус один, но ощутимый. Конфигурация получается не самодостаточная. Зависит от внешнего источника. Если использовать внешний dns сервер, то это решение, имхо, хорошо, когда все дело происходит в локалке. Там - да, один dns на всех. А если это должен быть один из самодостаточных серверов где-нибудь в датацентре? А на самой ноде named может быть явно не в тему. Хотя бы из соображений безопасности.

2) Добавить алиасом еще один, какой-нибудь фейковый ip типа 192.168.x.x или 10.x.x.x на интерфейс и отдать его джайлу. Уже нарушаем условие.  Плюс, в некоторых версиях FreeBSD были какие-то проблемы при использовании алиасов в jail.  Хотя это решение мне ближе всех, но с 127 все было бы проще, да и конфигурация была бы переносимее.

К чему это все я? Да к тому, что как это ни странно, но в этом моменте, чисто системном, MacOS оказалось более функциональной, нежели BSD или Linux. Там можно повесить named на другой порт и настроить резолвер соответствующим образом.

Читаем из мана по resolver. Опции resolv.conf:

===

nameserver
Internet address (in dot notation for IPv4 or in colon notation for IPv6) of a name server that the resolver should query. The address may optionally have a trailing dot followed by a port number. For example, 10.0.0.17.55 specifies that the nameserver at 10.0.0.17 uses port 55.

 port
IP port number to be used for this resolver. The default port is 53. The port number for an individual nameserver may be specified as part of the nameserver address (see nameserver above) to override  the default or the port number specified as a value for this keyword.

===

А вот в моих горячо любимых BSD и Linux такой довольно полезной фичи - нет.

08.19.08

screen,ssh-agent.

Posted in linux at 10:54 am by viliar

Короткая заметка, как же все-таки их подружить без кучи костылей, типа вспомогательных скриптов:

http://teichman.org/blog/2006/02/screen_and_ssha.html

Только setenv, как и всякие set/typeset/declare не является внешней вызываемой программой, а  внутренней командой интерпретатора. Во всяком случае which о них ни во freebsd, ни в ubuntu не знает. Поэтому  именно такой вариант, как у автора, у меня не работает. Самое простое решение - разместить определение переменной SSH_AUTH_SOCK не в .screenrc, а в .bash_profile, ну или в соответствующем конфиге для Вашего шелла. Плюс, хотелось бы отметить, что ssh-add будет работать только в соответствующем окне screen, где он был запущен, так как нигде больше нет информации о SSH_AGENT_PID

06.23.08

then the bash is wrong

Posted in linux at 9:14 pm by viliar

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

Дано:

# include current rbl config
if [ -f ${rblconf} ]; then
. ${rblconf}
else
echo “fail to read ${rblconf} file!”
exit 1
fi

Результат:

$ ./reposync chkr lupdate
./reposync: line 42: .: filename argument required
.: usage: . filename [arguments]

Сначала не мог понять, где же мой косяк. Выяснилось, что в процессе редактирования я случайно удалил строчку с определением переменной $rblconf. Почему-то bash считает нужным при файловых проверках на несуществующих переменных возвращать истину, а не ложь. Бред. Так что мы имеем вот такое:

$ if [ -f $fdxxdxafdsfdl ]; then echo “stupid, but ok”; else echo “variable unset or file does no exist”;fi
stupid, but ok

Самое ужасное, что это скорее всего не бага, а фича. Нужно будет спросить у знакомого гуру в программировании, “что здесь собственно происходит?”

« Previous entries ·

15 queries. 0.379 seconds