Категории

суббота, 10 октября 2015 г.

Centos7 LXC

Сборка из исходных кодов стабильной версии lxc для Centos 7 с поддержкой python. Поддержка python необходима, например для работы команды lxc-ls --fancy Установка зависимостей:
yum install -y epel-release
yum install -y gcc git rpm-build automake make python34 python34-devel
yum install -y libcap-devel docbook2X graphviz
Согласно официальному сайту на момент написания статьи доступно 3 версии LXC, я выбрал LTS stable-1.0
Скачивание исходных кодов:
git clone git://github.com/lxc/lxc -b stable-1.0
cd lxc
Почитав немного доку и исходники, получился такой порядок действий:
./autogen.sh

./configure --enable-python PYTHON=/usr/bin/python3.4 PYTHONDEV_CFLAGS=-I/usr/include/python-3.4m PYTHONDEV_LIBS=-l/usr/include/python-3.4m
Как можно заметить, конфигурация происходит с явным указанием версии python3.4, он появился сравнительно недавно в EPEL, его и будем использовать далее.

Т.к. у нас Centos и тут не все как у людей как в других дистрибутивах, изменим в исходниках путь до исполняемого файла Python, но сперва найдем файлы, которые нужно модифицировать:
grep -Rn '^#.*/python3'
В результате у меня получился такой небольшой скрипт:
for f in config/apparmor/lxc-generate-aa-rules.py src/lxc/lxc-device src/lxc/lxc-ls.in src/lxc/lxc-start-ephemeral.in src/lxc/lxc-ls src/lxc/lxc-start-ephemeral src/python-lxc/examples/api_test.py src/python-lxc/examples/pyconsole-vte.py src/python-lxc/examples/pyconsole.py src/python-lxc/setup.py src/python-lxc/setup.py.in; do
    sed -i 's|#!/usr/bin/python3|#!/usr/bin/python3.4|' $f
done

sed -i 's|Requires: python3|Requires: python34|' lxc.spec
sed -i 's|BuildRequires: python3-devel|BuildRequires: python34-devel|' lxc.spec
sed -i 's|/python3.3/site-packages/|/python3.4/site-packages/|' lxc.spec
После изменений проверим результат:
grep -Rn '^#.*/python3'
Теперь соберем rpm пакеты используя Python3.4:
make rpm PYTHON=/usr/bin/python3.4 PYTHONDEV_CFLAGS=-I/usr/include/python-3.4m PYTHONDEV_LIBS=-l/usr/include/python-3.4m
Найти собранные пакеты можно в каталоге cd /root/rpmbuild/RPMS/x86_64, а установить командой:
yum localinstall lxc-libs-1.0.7-1.el7.centos.x86_64.rpm lxc-1.0.7-1.el7.centos.x86_64.rpm
Не будем останавливаться на этом!
Для запуска Centos 7 контейнера необходимо проделать еще несколько манипуляций: В файле /usr/share/lxc/config/centos.common.conf нужно найти опцию lxc.cap.drop, содержащую значения setfcap и setpcap их нужно убрать, например для хоста Ubuntu 14.04 нужно сделать примерно так:
#lxc.cap.drop = mac_admin mac_override setfcap setpcap
lxc.cap.drop = mac_admin mac_override
Не зависимо от дистрибутива нужно в тот же файл еще добавить в конец сроки:
# This lets LXC SUSE containers run on hosts with apparmor.
# It does nothing on hosts which do not have apparmor enabled.
lxc.aa_profile = unconfined

# https://bugs.launchpad.net/ubuntu/+source/lxc/+bug/1347020
lxc.kmsg = 0

Ссылки по теме:
1. Bug 1176816 - booting a centos 7 container is extremely slow
2. centos 7 needs setpcap capability
3. systemd does not boot in a container
4. [lxc-devel] [PATCH] Various fixes for Fedora/CentOS/OpenSUSE templates and systemd.
5. big big login delays in CentOS 7 systemd #340
6. Linux Containers: Downloads
7. LXC 1.0: Troubleshooting and debugging [10/10]

вторник, 29 сентября 2015 г.

Zimbra Google Chrome 45 Fix

Возникла проблема с Zimbra Webmail и Chrome v.45.0.2454.85, спустя неделю был опубликован фикс на офф сайте Zimbra, я предлагаю очень похожий вариант, но без перезагрузки zimbra.
Нужно найти в файлах, возможно необходимо будет сделать бекап или скопировать и закомментировать изменяемые строки:
/opt/zimbra/jetty-distribution-7.6.12.v20130726/webapps/zimbra/skins/_base/base2/skin.css
/opt/zimbra/jetty-distribution-7.6.12.v20130726/webapps/zimbra/skins/_base/base3/skin.css
Eсли эти строки отличаются - привести их к этому виду:
#skin_td_sidebar_ad        { width:@SidebarAdWidth@; }
#skin_container_sidebar_ad { @AdStyle@ width:@SidebarAdWidth@; }
Затем нужно найти строку:
#skin_td_main { width:auto; height:100%; }
И привести её к виду:
#skin_td_main > TABLE { table-layout: fixed; }
Напомню, сделать это нужно в обоих файлах base3 и base2
Теперь самое интересное, чтобы не перезапускать zimbra, можно исправить уже имеющие стили в кеше:
cd /opt/zimbra/jetty/work/resource-cache/skinres/latest
sed -i 's/#skin_td_main{width:auto;height:100%;}/#skin_td_main>TABLE{table-layout:fixed;}/g' ./*.css

Ссылки по теме:
1. Anyone else having display problems with Telus Webmail on Chrome v. 45.0.2454.85?
2. Zimbra Web Client in ZCS 8.0.x and Google Chrome 45+
3. Github: Zimbra Google Chrome 45 Fix

четверг, 27 августа 2015 г.

Запуск X приложений на полный экран в X сервере без DM.

Для запуска в X сессии любой X программы можно воспользоваться nodm.
Установка необходимых пакетов:
$ sudo apt-get install nodm
Настройка nodm в файле /etc/default/nodm:
# nodm configuration

# Set NODM_ENABLED to something different than 'false' to enable nodm
NODM_ENABLED=true

# User to autologin for
NODM_USER=metall

# First vt to try when looking for free VTs
NODM_FIRST_VT='7'

### xinit program
###NODM_XINIT=/usr/bin/xinit

# X session
NODM_XSESSION=/etc/X11/Xsession

# Options for the X server
NODM_X_OPTIONS='-nolisten tcp'

# If an X session will run for less than this time in seconds, nodm will wait an
# increasing bit of time before restarting the session.
NODM_MIN_SESSION_TIME=60

Ссылки по теме:
1. forum kodi, XBMC Server

воскресенье, 26 июля 2015 г.

Сборка мощного домашнего сервера

Стало не хватать домашнего сервера на Atom D525 с 4Гб оперативной памяти, вот такой он компактный:
Вон он в боевом положении, чтобы вы оценили насколько он компактный:
Это корпус Mini-ITX Morex T3310, покупался еще в красноярском DNS-shop, когда процессоры Atom еще были в моде. :) Процессор вместе с радиатором распаяны на материнской плате, внутри нет ни одного вентилятора, и 2 HDD от старых ноутбуков, да я собирал его из того, что было под рукой! :) Еще на плате имеется PCI слот, куда вставлена вторая сетевая карточка, да, вы правильно догадались, это был домашний роутер! Внутри есть Mini-PCIe с Wi-Fi адаптером, но как видно на фото (плохо видно, но статья не о нем же), у меня появился Mikrotik RB951G-2HnD и необходимость во 2 карточке отпала, но виртуалки с разными проектами остались, а так же файлопомойка, PXE установщики и много других полезных вещей.

В общем железо сильно устарело и я решил его обновить, получился такой список деталей:
Наименование Модель и описание Цена
Материнская плата ASRock H81TM-ITX, Scket1150, iH81, 2SODIMM DDRIII, 7.1-ch HDA, GLAN, USB 3.0, DVI, HDMI, Thin mini-ITX, Retail 3807
Блок питания HP-A1501A3B1 19V 7.9A 150W 2400
Кулер+доставка Dynatron K199 1U LGA115X 1794+1090
Память DDR3L SODIMM 16Gb (2x8Gb) PC12800 1600MHz CL9 Kingston HyperX Impact Black Series (HX316LS9IBK2/16) 7650
Процессор Intel Core i7-4790S 3200MHz 8Mb TDP-65W S1150 tray Haswell 24050
Процессор Intel Xeon E3-1246v3 3500MHz 8Mb 5GT/s TDP-84W S1150 tray 20675
Жесткий диск Hitachi (HGST) 1Tb HTS721010A9E630 Travelstar 7K1000 2.5" 7200rpm 32Mb SATA3 4275+4275
Корпус Lian Li PC-Q05B Black Mini-ITX 47x284x307 3663
53004 руб.
Сервер старался делать максимально миниатюрным, поэтому кулер выбрал очень специфичный Dynatron K199, т.к. процессор хочется мощный и в то же время, чтобы сервер остался бесшумным и компактным.

Выбранный кулер на момент покупки был доступен только в европейской части мира, аналогов в росии или китае я не нашел, поэтому пришлось заказать в штатах на ebay, тут я изрядно переплатил еще и доставка была платная, но оно того стоит!

Выбранный процессор E3-1246v3 имеет 4 ядра, 8 потоков (Hyper Threading) и встроенное видео, которое пока никак не планируется использоваться, только для входа в BIOS и при возможных неполадках, IPMI решения или PCI-Ex видеокарточки конечно вариант, но по деньгам дороже и в реализации сложнее, проще процессор с видеокарточкой взять, но есть еще одна проблема рассеиваемая мощность 84Вт у кулера запаса хватает (95Вт), а у материнской платы по паспорту написано 65Вт, но думаю должно работать, если нет, то придется менять процессор на E3-1286LV3, стоимостью в 2 раза дороже (примерно $774).
После долгих поисков, сравнений бенчмарков и технических характеристик, пришел к выводу, что наиболее подходящим будет процессор Intel Core i7-4790S c TDP 65W, он вполне производительный и энергоэффективный, судя по бенчмаркам производительность на уровне выбранного ранее E3-1286LV3 с TDP 84W.

С блоком питания тоже не все так просто, в городе небыло таких мощных 150Вт, пришлось заказать в китае на ebay.

С выбором дисков одни разочарования, сперва выбрал то, что хотел Seagate-ST2000NX0243 Жесткий диск емкостью 2 ТБ с интерфейсом SAS/SATA с низким энергопотреблением, но когда узнал, что он стоит 21000 рублей в лучшем случае, начал искать аналоги, но и тут проблема стоят они в 2 раза меньше и в объеме тоже меньше, по скорости хуже, поэтому взял самый простой вариант Hitachi Travelstar 7K1000 HTS721010A9E630, а ведь я планирую RAID1, значит диска нужно два! А если мне вдруг действительно понадобятся быстрые, ёмкие и компактные диски, то я всегда успею их докупить. Тем более у меня на материнской плате еще Mini-PCIe пустой, можно туда купить SSD с интерфейсом M.2 это будет дешевле и быстрее!

Память выбиралась очень просто, материнская плата не умеет ECC, максимальный объем 16Гб, максимальная частота 1600, процессор все это поддерживает, поэтому взял самую простую и дешевую с таймингами поменьше CL9, разница с аналогичной, но с таймингами CL11 была небольшой.

Корпус, самое интересное оставил на десерт, пока планирую уместить все в старый корпус, но еще не все детали из списка куплены, поэтому я еще выбираю корпуса, присматириваюсь, так сказать.
Пригляделся корпус Lian Li PC-Q05B Black:


1. Dynatron K199 Socket LGA1150 & Sandy Bridge LGA1155 & LGA1156.
2. Жесткий диск Enterprise Capacity 2.5 HDD.
3. Интерфейс M.2 Next Generation Form Factor и NGFF.
4. Сравнение процессоров Intel®.
5. CPU Mark by Socket Type: LGA 1150
6. minicase.net: E-W80
7. Intel D525MW mother board Mini PCI express slot not detect our card?