Linux

Кастомизация консоли bash

Небольшая памятка для придания красивости консоли.

root ~ # cat /etc/bashrc
export PROMPT_COMMAND=ls;cal
alias ls="ls --color=auto"

if [ `whoami` = "root" ];
then
        export PS1='\[\e[0;31m\]\u\[\e[m\] \[\e[1;34m\]\w\[\e[m\] \[\e[1;32m\]\$\[\e[m\] \[\e[1;37m\]'
else
        export PS1='\[\e[0;32m\]\u\[\e[m\] \[\e[1;34m\]\w\[\e[m\] \[\e[1;32m\]\$\[\e[m\] \[\e[1;37m\]'
fi
Google Bookmarks Digg Reddit del.icio.us Ma.gnolia Technorati Slashdot Yahoo My Web News2.ru БобрДобр.ru RUmarkz Ваау! Memori.ru rucity.com МоёМесто.ru Mister Wong

Настройка GlusterFS 3.1.2 под Red Hat в контейнере OpenVZ

Обозначения:

Node1 — первая нода
Node2 — вторая нода
VPS1 — первый OpenVZ-контейнер
VPS2 — второй OpenVZ-контейнер
1. Создаем на Node1 и Node2 файл «/etc/sysconfig/modules/fuse.modules» со следующим содержанием:

/sbin/modprobe fuse

И делаем его исполняемым:

chmod +x /etc/sysconfig/modules/fuse.modules

2. Добавляем на Node1 и Node2 в файл «/etc/vz/conf/$VEID.conf» следующие строки:

CAPABILITY="NET_ADMIN:on SYS_ADMIN:on"
DEVICES="c:10:229:rw"

3. На контейнерах VPS1 и VPS2 создаем файл «/etc/init.d/fusedev» со следующим содержимым:

#!/bin/bash
# chkconfig: 05 05 05
# description: /dev/fuse file creation
#
# Get function from functions library
. /etc/rc.d/init.d/functions
/bin/mknod /dev/fuse c 10 229

И делаем его исполняемым, а так же добавляем в автозагрузку fusedev и автоматическое монтирование сетевых файловых систем из /etc/fstab:

chmod +x /etc/init.d/fusedev
chkconfig fusedev on
chkconfig netfs on

4. В контейнерах VPS1 и VPS2 в файле «/etc/glusterfs/glusterd.vol» удаляем из строки «rdma»:
option transport-type socket

5. Загружаем по ссылке «http://download.gluster.com/pub/gluster/glusterfs/3.1/LATEST/» RPM-пакеты «glusterfs-core» и «glusterfs-fuse», а так по ссылке «http://download.gluster.com/pub/gluster/glusterfs/fuse/» — fuse.
Устанавливаем на VPS1 и VPS2 пакеты «fuse, fuse-libs, glusterfs-core, glusterfs-fuse».

6. Прописываем на VPS1 и VPS2 в файле «/etc/hosts»:

192.168.0.1 node1.domain.ru node1
192.168.0.2 node2.domain.ru node2

7. На VPS1 и VPS2 создаем папки для хранилища:

mkdir -p /data/openvz

8. Перезагружаем Node1 и Node2.
9. Составляем кластер. Запускаем на VPS1 команду (node2 — хост из /etc/hosts):

gluster peer probe node2

10. Создаем и запускаем для примера реплицируемый volume с названием «api» (подробнее о replication и stripe):

gluster volume create openvz replica 2 transport tcp node1:/data/openvz1 node2:/data/openvz2
gluster volume start openvz
node1 и node2 — хосты из /etc/hosts.

11. И некоторые оптимизации — добавляем кэш. Выполняем команды на VPS1:

gluster volume set openvz performance.cache-size 500MB
gluster volume set openvz performance.write-behind-window-size 500MB

12. Добавляем в автозагрузку VPS1 и VPS2 монтирование файловой системы. В файл «/etc/fstab» добавляем:

localhost:/openvz /data/openvz glusterfs defaults,_netdev,noatime 0 0

Монтируем GlusterFS:

mount -a

Готово!

Google Bookmarks Digg Reddit del.icio.us Ma.gnolia Technorati Slashdot Yahoo My Web News2.ru БобрДобр.ru RUmarkz Ваау! Memori.ru rucity.com МоёМесто.ru Mister Wong

Репозитории Red Hat/CentOS

Локальный репозитарий

Итак первое, скрипт для закачки пакетов с epel и rpmforge.

cat mirror.sh
#!/bin/sh

mirror_base_url=('http://apt.sw.be/redhat/el6/en/x86_64/rpmforge/RPMS/' 'http://epel.mirrors.arminco.com/6/x86_64/')
local_rpm_directory=/var/www/thttpd

for url in $mirror_base_url; do
        for rpm in `curl $url`; do
                rpmfile=$(echo $rpm | grep rpm | sed 's/.*"\(.*\)".*/\1/')
                if [ "$rpmfile" ];
                then
                        if [ ! -f "$local_rpm_directory/$rpmfile" ];
                        then
                                curl "$url$rpmfile" > "$local_rpm_directory/$rpmfile"
                        fi
                fi
        done
done

# ./mirror.sh
# createrepo /var/myrepofolder/

Установка epel и rpmfusion в RHEL

UPDATED 25.12.2012:

i386:

rpm -Uhv http://download1.rpmfusion.org/free/el/updates/6/i386/rpmfusion-free-release-6-1.noarch.rpm
rpm -Uhv http://fedora-mirror02.rbc.ru/pub/epel/6/i386/epel-release-6-8.noarch.rpm

x86_64:

rpm -Uhv http://download1.rpmfusion.org/free/el/updates/6/x86_64/rpmfusion-free-release-6-1.noarch.rpm
rpm -Uhv http://fedora-mirror02.rbc.ru/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm

Google Bookmarks Digg Reddit del.icio.us Ma.gnolia Technorati Slashdot Yahoo My Web News2.ru БобрДобр.ru RUmarkz Ваау! Memori.ru rucity.com МоёМесто.ru Mister Wong

Терминальны сервер на примере LTSP и CentOS 5.4

Первое, что мне необходимо было сделать – установить CentOS 5.4 x86_64. В качестве графической оболочки я отдал предпочтение KDE. Первым делом идем на сайт и качаем образ диска c пакетами LTSP (http://ltsp.mirrors.tds.net/pub/ltsp/isos/). Я выбрал версию 4.1.1, т.к. навороты более новых версий (такие как сессии через ssh и прочее мне были не нужны).

Далее монтируем этот образ и устанавливаем пакет ltsp-utils.0.11-o.noarch.rpm

rpm –i ltsp-utils.0.11-o.noarch.rpm

После чего мы получаем утилиты командной строки ltspadmin и ltspcfg. Первая утилита используется для настройки установки и самой установки LTSP, вторая – для конфигурации уже установленного терминального сервера. Запускаем утилиту ltspadmin.

Первым делом нам необходимо сконфигурировать установщик, соответственно мы выбираем пункт меню Configure the installer options. Первым вопросом нам предлагается определить откуда мы будем получать пакеты. Можно использовать сайт самого проекта, но разумнее указать путь к смонтированному нами образу. В моем случае это file:///media/CDROM/. Обратите внимание, что в пути используется именно 3 слеша, на что указывается и в документации по установке.

Следующий вопрос – путь куда будет установлен LTSP. По умолчанию он указывает на /opt/ltsp. Его изменять я не вижу смысла. Если же вы указали в качестве пути к местоположению пакетом http адрес (который задан по умолчанию) тогда вам необходимо указать адрес http (или же ftp, если пакеты лежат на ftp) прокси-сервера. В конце подтверждаем правильность настроек и нас возвращает к предыдущему пункту меню. Теперь мы можем приступать к установке терминального сервера.

После установки мы будем иметь:

  • пакеты LTSP в папке /opt/ltsp
  • файлы, необходимые для загрузки PXE клиентов в папке /tftpboot/lts/

Установка DHCP и TFTP серверов.

Для загрузки по сети наших тонких клиентов нам необходимы DHCP и ТFTP сервера. TFTP сервера в дистрибутиве CentOS я не нашел, а DHCP решил поставить вручную – так надежнее. Соответственно устанавливаем их:

 yum install dhcp.x86_64 tftp-server.x86-64

Далее необходимо открыть 69 порт для UDP протокола в фаерволе нашего терминального сервера. Для этого используем консольную утилиту system-config-securitylevel-tui. Жмем кнопку «Уточнить» и настраиваем правила нашего firewall’a

В моем случае у меня на сервере 2 интерфейса: один смотрит в сеть классов – второй является managment-интерфейсом. Выбираем интерфейс, через который наши тонкие клиенты будут стучаться к tftp-серверу и добавляем его к доверенным, а так же открываем для него 69 порт.

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

Для конфигурации мы можем воспользоваться пунктом меню Configure LTSP утилиты ltspadmin или же напрямую вызвать ltspcfg. В появившемся меню выбираем ручную настройку:

Проходимся по всем 11 пунктам. Пункт 8 можно в принципе пропустить. После завершения — у нас будут настроено практически все необходимое.
Стоит уделить внимание пунктам 3 и 7. В пункте 3 будет создан файл примера конфигурации DHCP сервера (/etc/dhcpd.conf.sample), который необходимо отредактировать. После изменений – у меня он приобрел следующий вид:

#
# Sample configuration file for ISC dhcpd
#
# Make changes to this file and copy it to /etc/dhcpd.conf.sample

ddns-update-style none;
default-lease-time 21600;
max-lease-time 21600;

#option domain-name "ltsp"; # <--Fix this domain name

option option-128 code 128 = string;
option option-129 code 129 = text;

subnet 192.168.130.0 netmask 255.255.255.0 {
use-host-decl-names on;
option log-servers 192.168.130.254;
range dynamic-bootp 192.168.130.1 192.168.130.253; ## пул адресов.
option root-path "192.168.130.254:/opt/ltsp/i386"; ##опция ядру где находиться файловая система.
option broadcast-address 192.168.130.255;
option routers 192.168.130.254;
option subnet-mask 255.255.255.0;
if substring (option vendor-class-identifier, 0, 9) = "PXEClient" ##указываем что передавать в кач-ве загрузчика для PXE клиентов
{
filename "lts/2.6.9-ltsp-3/pxelinux.0"; ##в CentOS tftp обычно запущен с опцией -s, поэтому полный путь от корня указывать не нужно. полный путь должен выглядеть как /tftpboot/lts/.....
}
next-server 192.168.130.254; ## - Обязательно указать. В противном случае загрузочный образ не получит конфиг!
}

Хочу обратить внимание на то, что в путь к PXE загрузчику указывается не полный, т.к. в RedHat и CentOS он запускается с ключем –s, соответственно папку tftp-сервера в пути мы опускаем. Так же возникла проблема с тем, что по-идее опцию next-server необходимо указывать только тогда, когда DHCP и TFTP сервера находятся на разных серверах. Но без этой опции загрузка глохла, пока я не продублировал самого себя в качестве next-server’a.

На этом этапе я обрадовался, что настройка завершена и попытался загрузиться с тонкого клиента. Но не тут то было! В итоге запускались Иксы, но подключения к терминальному серверу не происходило. Как оказалось стандартным менеджером сеансов в CentOS являеться gdm (Gnome), а так как Gnome у меня вообще отсутствовал – kdm даже и не пробовал запускаться. Для того, что бы ОСь использовала kdm необходимо внести некоторые изменения в файл конфигурации, а именно - /etc/sysconfig/desktop (если файл отсутствует – его необходимо создать):

DISPLAYMANAGER="KDE"

Следующим огорчением было то, что при запуске иксов на терминальном клиенте – они падали, т.к. сервер тупо отвергал любые попытки открыть удаленные сеансы. Изменить это не проблема, проблемой для меня стало то, что я не мог найти стандартных файлов конфигурации KDE. В CentOS они «спрятаны» совершенно в другом месте. В итоге его местоположение можно определить следующим образом:

locate Xaccess

Далее в указанном файле ищем строчку

* #any host can get a login window

И раскомментируем ее. Перезапускаем Иксы, бутаем наш тонкий клиент – и вуаля! Все работает!

Google Bookmarks Digg Reddit del.icio.us Ma.gnolia Technorati Slashdot Yahoo My Web News2.ru БобрДобр.ru RUmarkz Ваау! Memori.ru rucity.com МоёМесто.ru Mister Wong

Организуем тонкие клиенты linux на примере Ubuntu и LTSP.

В этой статье я расскажу вам как организовать загрузку тонких клиентов Linux по сети. Для этих целей я решил настроить LTSP (Linux Terminal Server Project) -сервер. Данный метод гарантированно работает на Ubuntu 10.10 Desktop (GNOME). Необходим доступ к репозиториям с пакетами.

1) Сначала установим ssh-сервер для организации связи между компьютерами в сети

  sudo apt-get install ssh

2) Затем устанавливаем сам LTSP-сервер

  sudo apt-get install ltsp-server-standalone

3) Далее нужно создать конфигурационные файлы для тонких клиентов

  sudo ltsp-build-client

4) Организуем поддержку сетевой файловой системы NFS

  sudo apt-get install nfs-kernel-server

5) Установим TFTP-сервер

  sudo apt-get install tftpd-hpa

6) В конец файла /etc/exports добавляем следующую строчку

  /opt/ltsp *(ro,no_root_squash,async,no_subtree_check)

7)  Перезапускаем сервисы NFS, inetd и tftpd

sudo invoke-rc.d openbsd-inetd restart
sudo invoke-rc.d nfs-kernel-server restart
sudo invoke-rc.d tftpd-hpa restart

8)  Настроим конфигурационный файл сервера DHCP /etc/ltsp/dhcpd.conf

authoritative;
  subnet 192.168.1.0 netmask 255.255.255.0 {
range 192.168.1.70 192.168.1.230;
option domain-name 1example.ru»;
option domain-name-servers 192.168.1.1;
option broadcast-address 192.168.1.255;
option routers 192.168.1.1;
option subnet-mask 255.255.255.0;
option root-path «/opt/ltsp/i386″;
if substring( option vendor-class-identifier, 0, 9 ) = «PXEClient» {
filename «/ltsp/i386/pxelinux.0″;
}

else

     {
filename «/ltsp/i386/nbi.img»;
}
}

9) Настраиваем сетевое соединение (Система -> Параметры-> Сетевые соединения). Здесь выбираем нужное подключение, например Auto eth0 и в параметрах IPv4 указываем те же значения, что мы указали в файле/etc/ltsp/dhcpd.conf. Или так: Профиль: Вручную; Адрес: 192.168.1.1; Маска подсети: 255.255.255.0; Шлюз: 192.168.1.1;  Домены поиска: 192.168.1.1; ID клиента DHCP: 192.168.1.1.

10) В конец файла /etc/dhcp3/dhcpd.conf добавляем строку:

  include «/etc/ltsp/dhcpd.conf»;

11)  Включаем XDMCP (X Display Manager control protocol):

  sudo cp /usr/share/doc/gdm/examples/custom.conf /etc/gdm/

И после копирования добавляем в /etc/gdm/custom.conf:

  [xdmcp]
  Enable=true
  DisplaysPerHost=2

12) Перезапускаем GDM

  sudo restart gdm

13) Запускаем DHCP

  sudo /etc/init.d/dhcp3-server start

14) И/Или перезапускаем DHCP

  sudo invoke-rc.d dhcp3-server restart

На этом настройка LTSP-сервера окончена. Теперь можно включить тонкие клиенты, выбрав загрузку PXE (Preboot Execution Environment). Часто функцию загрузки по сети необходимо разрешить в BIOS (посмотрите в параметрах устройств PCI).
В будущем, после обновления сервера может потребоваться обновить ключи для ssh и образ ltsp:

   sudo ltsp-update-sshkeys

   sudo ltsp-update-image —arch i386
Google Bookmarks Digg Reddit del.icio.us Ma.gnolia Technorati Slashdot Yahoo My Web News2.ru БобрДобр.ru RUmarkz Ваау! Memori.ru rucity.com МоёМесто.ru Mister Wong

Сборка ядра не поддерживается ваш компилятор.

Описание

При сборке ядра выводятся следующие ошибки:
kernel/built-in.o: In function `getnstimeofday’:
(.text+0xe34b): undefined reference to `__umoddi3′
kernel/built-in.o: In function `do_gettimeofday’:
(.text+0xe3ec): undefined reference to `__udivdi3′
kernel/built-in.o: In function `do_gettimeofday’:
(.text+0xe409): undefined reference to `__umoddi3′
kernel/built-in.o: In function `do_timer’:
(.text+0xf109): undefined reference to `__udivdi3′
kernel/built-in.o: In function `do_timer’:
(.text+0xf126): undefined reference to `__umoddi3′
Причина

Сборка ядра не поддерживается ваш компилятор.

Решение

$ cd /usr/src/linux/
поменять значение CFLAGS_KERNEL в Makefile на CFLAGS_KERNEL    = -fno-tree-scev-cprop

Google Bookmarks Digg Reddit del.icio.us Ma.gnolia Technorati Slashdot Yahoo My Web News2.ru БобрДобр.ru RUmarkz Ваау! Memori.ru rucity.com МоёМесто.ru Mister Wong

С днём сисадмина, товарищи!!!

с днём сисадмина друг

Google Bookmarks Digg Reddit del.icio.us Ma.gnolia Technorati Slashdot Yahoo My Web News2.ru БобрДобр.ru RUmarkz Ваау! Memori.ru rucity.com МоёМесто.ru Mister Wong

Вышел Slackware 13.1

Спустя 9 месяцев разработки выпущен релиз дистрибутива Linux Slackware 13.1, в котором присутствует поддержка графических окружений — легкого на базе Xfce 4.6.1 и полнофункционального на основе KDE 4.4.3. В новой версии пакеты собраны с использованием компилятора GCC 4.4.4, работает система на ядре Linux 2.6.33.4 и системной библиотеки Glibc 2.11.1.

Особенности Linux Slackware 13.1:

  • В дистрибутиве используется подсистемы ConsoleKit и PolicyKit, первый для управления сессиями и работой пользователей, а второй для расширенных прав доступа, которая даёт возможность пользователям выполнять некоторые привилегированные действия, без прав суперпользователя;
  • Переход на ядро серии 2.6.33 позволило увеличить поддержку в Slackware журналируемых и шифрованных ФС, SCSI и ATA RAID, SATA, Software RAID, LVM (Logical Volume Manager). Улучшена поддержка PCMCIA, CardBus, USB, IEE1394 (FireWire) и ACPI;
  • Ядро собрано с дополнительными патчами проекта Speakup, что позволяет задействовать синтезатор речи для обеспечения работы людей, имеющих проблемы со зрением.
  • Обновлены инструменты управления пакетами. Функция контроля пакетов позволит упростить обновление с версии Slackware 13.0, а утилита slackpkg окажется очень полезной при переходе с более старой версии дистрибутива и поддержании системы в актуальном состоянии. Для подготовки и поддержки собственных пакетов в extra-репозиторий включена утилита slacktrack;
  • Новые версии программ:
    • Шифрование: OpenSSL 0.9.8n, OpenSSH 5.5, OpenVPN 2.1.1 и GnuPG 2.0.14;
    • Web-технологии: Apache (httpd) 2.2.15 и PHP 5.2.13;
    • Средства разработчика: Perl 5.10.1, Python 2.6.4, Ruby 1.9.1-p378, Subversion 1.6.11, git 1.7.1, mercurial 1.5.2, KDevelop 4.0.0;
    • Web-браузеры и почтовые клиенты: Konqueror 4.4.3, SeaMonkey 2.0.4, Firefox 3.6.3, Thunderbird 3.0.4;
    • Пользовательские приложения на базе технологий KDE: amarok 2.3.0, koffice 2.1.2, k3b 1.91, ktorrent 3.3.4;
    • Коллекция приложений на базе GTK+: pidgin 2.7.0, gimp 2.6.8, gkrellm 2.3.4, gxine 0.5.903, xchat 2.8.6, xsane 0.996, pan 0.133.
    • В extra-репозитории представлены Java JDK 6 update 20, набор библиотек для совместимости с kde3, браузерный плагин на базе mplayer и т.д.

Дистрибутив можно скачатьб сдесь .

Google Bookmarks Digg Reddit del.icio.us Ma.gnolia Technorati Slashdot Yahoo My Web News2.ru БобрДобр.ru RUmarkz Ваау! Memori.ru rucity.com МоёМесто.ru Mister Wong

Как примонтировать FTP ресурс как локальную файловую систему.

Захотелось сделать поиск в ftp-пространстве командой find, но любой нормальный ftp сервер этого не даст сделать, но уж очень хотелось найти решение на эту проблему.

Вот и был найден такой замечательный продукт как curlftpfs:

$ aptitude show curlftpfs
Пакет: curlftpfs
Состояние: установлен
Автоматически установлен: нет
Версия: 0.9.2-1
Приоритет: необязательный
Раздел: utils
Сопровождающий: Ding Honghui
Размер в распакованном виде: 111k
Зависимости: libc6 (>= 2.7-1), libcurl3-gnutls (>= 7.16.2-1), libfuse2 (>= 2.6), libglib2.0-0 (>= 2.12.0), fuse-utils
Описание: filesystem to access FTP hosts based on FUSE and cURL
CurlFtpFS is a tool to mount FTP hosts as local directories. It connects to a FTP server and maps its directory structure to the local filesystem.

Based on FUSE (filesystem in userspace) and the cURL library, CurlFtpFS has some features that distinguish it over other FTP filesystems:
* support for SSLv3 and TLSv1
* connecting through tunneling HTTP proxies
* automatic reconnection if the server times out
* conversion of absolute symlinks to point back into the FTP filesystem
Сайт: http://curlftpfs.sourceforge.net

С помощью этого замечательного средства можно выполнить практически любую операцию с ftp-ресурсом.

Для начала установим пакет:

$ sudo aptitude install curlftpfs

Затем подмонтируем интересующий нас ftp-ресурс:

$ mkdir temp-ftpfs
$ curlftpfs ftp://$USER:$PASSWD@$HOST/ temp-ftpfs
$ cd temp-ftpfs
$ ls
$ find / -name ‘*.txt’

Всё просто.

А вот отномнтировать получится только с root’овыми правами:
$ sudo umount curlftpfs#ftp://$USER:$PASSWD@$HOST/

Отмонтировать можно так:

$ fusermount -u temp-ftpfs

ЗЫ: На мой взгляд удобнее использовать sshfs, но если нет доступа по ssh тогда и вышеуказанный метод на что-нибудь да сгодится.

Google Bookmarks Digg Reddit del.icio.us Ma.gnolia Technorati Slashdot Yahoo My Web News2.ru БобрДобр.ru RUmarkz Ваау! Memori.ru rucity.com МоёМесто.ru Mister Wong

Подробная инструкция как обновить php 5.1.6 до 5.2.9 на CentOS 5.2

После долгих утомительных мучений решилась проблема с обновлением php на CentOS. Дело в том, что в официальном репозитарии есть php 5.2.10, но при его установке появляются разные ошибки с просьбой обновить mysql. При обновлении mysql из того же репозитария вместе ним ставится php 5.3 , но  многие приложения отказываются под него работать. И получается замкнутый круг. Решаем данную проблемму следующим образом.

Обвновляться будем с репозитария http://www.atomicrocketturtle.com.com/ , в котором много всего для Plesk’а, но плеск нас особо не интересует.

Ставим PGP-ключ:
# wget http://www.atomicrocketturtle.com/RPM-GPG-KEY.art.txt
# rpm —import RPM-GPG-KEY.art.txt
Добавление репозитория yum:
Код:
# wget -q -O — http://www.atomicorp.com/installers/atomic.sh | sh
Установка php:
Код:
# yum install php
После этих действий версия php обновится до версии 5.2.9, что вообщем то нам нужно.

После обновления нам прекрасно видно, что mcrypt не обновился.

Делаем следующее:
yum remove php-mcrypt
yum —enablerepo=remi —exclude=php*5.3* install php-mcrypt
Вот и всё! Надеюсь данный мануал будет полезен многим.

Google Bookmarks Digg Reddit del.icio.us Ma.gnolia Technorati Slashdot Yahoo My Web News2.ru БобрДобр.ru RUmarkz Ваау! Memori.ru rucity.com МоёМесто.ru Mister Wong