суббота, 30 января 2010 г.

Раскраска SSH

Вот надоело любоваться на черно-белый промпт в SSH. Решил таки сделать его как на Ubuntu Desktop.

Цвет включается так. На сервере открываем ~.bashrc, находим в нем вот этот кусок. Когда на сервер заходим по SSH, то всегда выполняется ветка else. Правим, чтобы не выполнялась вообще. Код цвета я не знаю, но меня и дефолтный устраивает. Накрайняк можно в man посмотреть...


if [ "$color_prompt" = yes ]; then    PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '
else
    PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ '
fi
 

четверг, 28 января 2010 г.

Wake On LAN

Я тут решил таки настроить WOL на сервере. А то непорядок получается- погасить я его удаленно могу, а вот включить- фиг.

Сначала надо разобраться с железом.

Ясное дело, надо убедиться, что BIOS поддерживает этот самый WOL. Мне, например, повезло, и включать в моем древнем BIOSе вообще ничего не понадобилось. Хотя, я по опциям и прошелся, но ничего не нашел, пришлось гуглить. Оказалось, что все включено по умолчанию и выключается какой-то мутной хренью в Power Manangement.

У меня сервер подключен к роутеру шнурком, так что проблемы с WOL over Wi-Fi у меня нет вообще. У кого сервер висит на вайфае- гугль вам в помощь.

Также, хорошо бы, чтобы у сервера был static IP.

Теперь настроим софт.

Я все делал как описано вот в этом посте. Там все по-английски, да и воды много. Плюс, в новой убунте чуток поменялся скрипт halt (поменяли опцию -i на $netdown, см. п. 7 внизу), о чем ниже. Вкратце, на сервере надо сделать вот что.

1. Поставить ethtool на сервер:
sudo apt-get install ethtool

2. Запомнить MAC адрес сервера и сетевой интерфейс:
ifconfig | grep HW

Смотрим, что там больше всего похоже на правду- какой MAC адрес знаком роутеру, тот интерфейс и надо использовать.

3. Создать скрипт wakeonlanconfig:
cd /etc/init.d/
sudo vim wakeonlanconfig

4. ... и записать в него:
#!/bin/bash
ethtool -s eth0 wol g

У меня интерфейс eth0, у вас может быть другой, см. п.2.

5. ... и еще установить и запустить наш скрипт:
sudo chmod +x /etc/init.d/wakeonlanconfig
sudo update-rc.d -f wakeonlanconfig defaults
sudo /etc/init.d/wakeonlanconfig

6. Неплохо бы и проверить, что скрипт работает:
sudo ethtool eth0

Должен написать что-то типа
Supports Wake-on: pg
Wake-on: g

7. Поправить скрипт halt, чтобы питание на сетевуху не вырубалось:
sudo vim /etc/init.d/halt

Ищем строчку типа "halt -d -f -i $poweroff $hddown" и убираем -i, чтобы было
halt -d -f $poweroff $hddown

В новой убунте -i заменили на переменную $netdown.

8. Вырубить сервер:
sudo halt

Смотрим, что с сетевухой. У меня, например, на ней после halt сразу же погас светодиод. Как это лечить- написано ниже. Если светодиод не погас, то

9a. Поставить wakeonlan на клиенте:
sudo apt-get install wakeonlan

9b. С клиента послать магический пакет:
wakeonlan AA:BB:CC:DD:EE:FF

MAC надо взять из п.2.

Отмечу, что иногда магический пакет теряется, поэтому слать их надо понастойчивей- раза два-три.

10. Дебажить, если сервер не хочет оживать.
Вот здесь, опять же по-английски, сказано, что проверять. Я тут перевел.

a) Смотрим, как настроен наш eth0 (или что там у вас):
cat /sys/class/net/eth0/device/power/wakeup

Если говорит "disabled", то надо добавить вот такую строку в /etc/init.d/wakeonlanconfig:
echo enabled > /sys/class/net/eth0/device/power/wakeup

b) Находим sysfs node сетевой карты:
lspci -tv

Ищем Ethernet Controller или что-то подобное. Например, получилось
+-1d.7 Intel Corporation 82801EB/ER (ICH5/ICH5R) USB2 EHCI Controller
+-1e.0-[0000:03]----08.0 Intel Corporation 82562EZ 10/100 Ethernet Controller
+-1f.0 Intel Corporation 82801EB/ER (ICH5/ICH5R) LPC Interface Bridge

В нашем случае- sysfs node = 1e.0

c) Находим Device сетевой карты в списке wakeup:
cat /proc/acpi/wakeup

Ищем там все тот же sysfs node. Например получили:
Device S-state Status Sysfs node
USB1 S3 disabled pci:0000:00:1d.0
USB2 S3 disabled pci:0000:00:1d.1
USB3 S3 disabled pci:0000:00:1d.2
USB4 S3 disabled pci:0000:00:1d.3
USBE S3 disabled pci:0000:00:1d.7
SLOT S5 disabled pci:0000:00:1e.0

Значит, нам нужен Device SLOT.

d) Добавляем наш Device в /etc/init.d/wakeonlanconfig.

Вот такую строку надо добавить в конец /etc/init.d/wakeonlanconfig:
echo SLOT > /proc/acpi/wakeup

У меня заработало только после такой правки конфига.

Если надо будить машину по интернету, то можно пробросить порт 9 UDP на роутере. Я это не пробовал.

вторник, 26 января 2010 г.

Отличный, отличный пост про Vim

Не знаю, кто как, а я на своем сервере все редактирую в Vim. Т.е. запускаю его раз в месяц, чтобы поправить какой-нить конфиг, потом нажимаю Insert, правлю, потом Esc, потом :wq и все. Это потому что еще что-то (:wq) из vi помню с институтских времен.

А тут в Deepen C++ - просто отличный пост. Со шпаргалкой по клавишам, с плагинами и пр. Бум вникать.

суббота, 23 января 2010 г.

Про SSH

Я вот тут собрал с хабра ссылки про SSH.

  • Псевдоним соединения (конфиг с именем юзера, сервера, номером порта)
  • Авторизация по ключу (RSA)
  • Передача файлов по команде scp
  • X11 графика через SSH
SSHFS:
Для Windows: Dokan SSHFS

  • Автоматическая повторная авторизация (controlmaster, controlpath)
  • Туннелирование по SSH
Туннели и порты:


пятница, 1 января 2010 г.

Еще про distcc

Я тут поставил Linux на десктоп, так что теперь появилась возможность поэкспериментировать с distcc по-настоящему. Вот что удалось отнаблюдать.

Режим сбережения энергии

Я проверял на лаптопе. На лаптопе есть режим энергосбережения On Demand, я попробовал с ним и без него. В общем, если компилировать только на лаптопе, то проигрыш от включенного On Demand очень маленький- 2-3% времени. Процессор почти все время работает на макс. частоте.
Ничего определенного об уменьшении или увеличении времени компиляции при использовании серверов сказать нельзя. Время компиляции может разниться на 5% как в ту так и в другую сторону. Скорее всего, это связано с неравномерным временем передачи пакетов в сети. Пинг до десктопа разнился от 2 до 30 мс при среднем значии 8 мс.
Вывод из этого можно сделать такой- отключение этого режима ни времени компиляции не уменьшает, ни к большему расходу энергии не приводит, так что лаптоп можно оставить в режиме On Demand, как обычно.

Конфигурация

Сервер сидит на Cat 6. Localhost (лаптоп) подключен к роутеру по 802.11b, так что лаптоп пингует сервер за 3 мс. Десктоп подключен по 802.11n, но пинг с него до сервера- 6-8 мс. Что-то там не так в убунтовских драйверах для 802.11n. А вообще да, надо таки кабель протянуть, но стенки сверлить нельзя, а хочется.

Статистика

Теперь, собственно, про время компиляции (приведено в секундах). Компилял все тот же vim 7.2 с лаптопа.

Конфигурация Время, с Delta, %
лаптоп 139
десктоп 132 5
сервер 120 14
лаптоп + десктоп 73 47
лаптоп + сервер 71 49
десктоп + сервер 87 37
лаптоп + десктоп + сервер 60 57

Как видим, ожидаемой эффективности в 89% нет. Интересно, что если localhost не использовать для компиляции вообще, то будет только хуже. Также, добавление десктопа в связку лаптоп-сервер добавочно экономит всего 10% времени.
Похоже, придется тянуть ну очень много кабеля. Или, не выпендриваться и компилировать на десктопе- занимает это удовольствие 69 секунд.