Настройка разрешения экрана в Linux

linux-resolution1. Используем cvt для вычисления параметров, которые будем использовать в xrandr:

cvt 2560 1440

Пример:

# 2560x1440 59.96 Hz (CVT 3.69M9) hsync: 89.52 kHz; pclk: 312.25 MHz
Modeline "2560x1440_60.00" 312.25 2560 2752 3024 3488 1440 1443 1448 1493 -hsync +vsync

 

2. Используем параметры cvt в xrandr:

xrandr --newmode "2560x1440" 312.25 2560 2752 3024 3488 1440 1443 1448 1493 -Hsync +Vsync

(Параметры Hsync и Vsync должны начинаться с заглавных букв).

 

3. Добавляем новый режим «2560×1440» в xrandr:

xrandr --addmode Virtual1 "2560x1440"

(Можно заменить Virtual1 на то, что нужно… Посмотреть можно командой xrandr)

 

4. Включить новый режим:

xrandr --output Virtual1 --mode "2560x1440"

 

Colored Bash man pages and Log files

colored_bash

Below you can find bash codes which you can use with man pages or while reading log files:

'\e[0;30m' # Black - Regular
'\e[0;31m' # Red
'\e[0;32m' # Green
'\e[0;33m' # Yellow
'\e[0;34m' # Blue
'\e[0;35m' # Purple
'\e[0;36m' # Cyan
'\e[0;37m' # White

'\e[1;30m' # Black - Bold
'\e[1;31m' # Red
'\e[1;32m' # Green
'\e[1;33m' # Yellow
'\e[1;34m' # Blue
'\e[1;35m' # Purple
'\e[1;36m' # Cyan
'\e[1;37m' # White

'\e[4;30m' # Black - Underline
'\e[4;31m' # Red
'\e[4;32m' # Green
'\e[4;33m' # Yellow
'\e[4;34m' # Blue
'\e[4;35m' # Purple
'\e[4;36m' # Cyan
'\e[4;37m' # White

'\e[40m'   # Black - Background
'\e[41m'   # Red
'\e[42m'   # Green
'\e[43m'   # Yellow
'\e[44m'   # Blue
'\e[45m'   # Purple
'\e[46m'   # Cyan
'\e[47m'   # White
'\e[0m'    # Text Reset

If you are using less application for viewing man pages you can add below variables to your .bashrc file. After that reload .bashrc variables with command: source /home/user/.bashrc and you will see colored man pages.

export LESS_TERMCAP_mb=$'\E[01;31m'
export LESS_TERMCAP_md=$'\E[01;31m'
export LESS_TERMCAP_me=$'\E[0m'
export LESS_TERMCAP_se=$'\E[0m'
export LESS_TERMCAP_so=$'\E[01;44;33m'
export LESS_TERMCAP_ue=$'\E[0m'
export LESS_TERMCAP_us=$'\E[01;32m'

For log files use perl syntax with your combined regex:

 tail -f  /var/log/mail.log | perl -pe 's/(fatal|error|panic|success)/\e[1;31m$&\e[0m/g'

Last colored trick. Use grep command with —color switch.

Compiling Kernel 3.8 on Debian Testing/Wheezy

linuxNOTE: It seems like series 3.8 has issues with intel (i915) graphics — it occasionally generates kworker threads that causes unresponsiveness as seen by slow mouse and keyboard response when e.g. plugging or unplugging mains power. No issues on e.g. nvidia though.

http://verahill.blogspot.com.au/2013/03/368-slow-mouse-and-keyboard-triggered.html
http://forums.gentoo.org/viewtopic-p-7278760.html
https://bbs.archlinux.org/viewtopic.php?pid=1248190

Post: Kernel 3.8 is out now. Not much to say — the compilation works well using the standard method. The compressed kernel is about 81 Mb to download.

The approach below shows how to compile the kernel on Debian. If you’re interested in a more generic approach, see this post:

http://verahill.blogspot.com.au/2013/02/344-compile-kernel-38-without-using-kpkg.html

NOTE: kernel 3.8 — in contrast to the 3.7 series — now compiles fine on AMD FX 8150.

NOTE: kernel 3.8 plays well with nvidia dkms

Here we go:

sudo apt-get install kernel-package fakeroot build-essential ncurses-dev
mkdir ~/tmp
cd ~/tmp
wget http://www.kernel.org/pub/linux/kernel/v3.0/linux-3.8.tar.bz2
tar xvf linux-3.8.tar.bz2
cd linux-3.8/
cat /boot/config-`uname -r`>.config
make oldconfig

You will be asked a lot of questions — how many depends on what version you upgrade from. If in doubt, pick the default answer (i.e. hit enter). If really in doubt, use google.

Then continue:

make-kpkg clean

Do

make menuconfig

if you want to make any specific changes to the kernel (e.g. add support for certain devices)

Then continue:

time fakeroot make-kpkg -j4 --initrd kernel_image kernel_headers
As usual 4 is the number of threads you wish to launch — make it equal to the number of cores that you have for optimum performance during compilation (more about that here).
The build takes around 20 minutes on a four-core intel i5-2400 with -j4, and 14 minutes on an fx-8150 with -j8 (96 minutes with -j1).
Install:
sudo dpkg -i ../linux-image-3.8.0_3.8.0-10.00.Custom_amd64.deb ../linux-headers-3.8.0_3.8.0-10.00.Custom_amd64.deb
New stuff/Questions:
Offload RCU callback processing from boot-selected CPUs (RCU_NOCB_CPU) [N/y/?] (NEW) *
Memory placement aware NUMA scheduler (NUMA_BALANCING) [N/y/?] (NEW) *
Enable to assign a node which has only movable memory (MOVABLE_NODE) [N/y/?] (NEW)
Allow for memory hot-add (MEMORY_HOTPLUG) [Y/n] y
Allow for balloon memory compaction/migration (BALLOON_COMPACTION) [Y/n/?] (NEW)
Set default setting of cpu0_hotpluggable (BOOTPARAM_HOTPLUG_CPU0) [N/y/?] (NEW
Debug CPU0 hotplug (DEBUG_HOTPLUG_CPU0) [N/y/?] (NEW)
ACPI tables can be passed via uncompressed cpio in initrd (ACPI_INITRD_TABLE_OVERRIDE) [N/y/?] (NEW)
Support multiple cpuidle drivers (CPU_IDLE_MULTIPLE_DRIVERS) [N/y/?] (NEW)
"NOTRACK" target support (DEPRECATED) (NETFILTER_XT_TARGET_NOTRACK) [N/m] (NEW

Default SCTP cookie HMAC encoding
  > 1. Enable optional MD5 hmac cookie generation (SCTP_DEFAULT_COOKIE_HMAC_MD5) (NEW)
    2. Enable optional SHA1 hmac cookie generation (SCTP_DEFAULT_COOKIE_HMAC_SHA1) (NEW)
    3. Use no hmac alg in SCTP cookie generation (SCTP_DEFAULT_COOKIE_HMAC_NONE) (NEW)
  choice[1-3?]:   Enable optional MD5 hmac cookie generation (SCTP_COOKIE_HMAC_MD5) [Y/?] (NEW) y

Enable optional SHA1 hmac cookie generation (SCTP_COOKIE_HMAC_SHA1) [N/y/?] (NEW) *
Enable optional MD5 hmac cookie generation (SCTP_COOKIE_HMAC_MD5) [Y/?] (NEW) y
Distributed ARP Table (BATMAN_ADV_DAT) [N/y/?] (NEW)
Kvaser CAN/USB interface (CAN_KVASER_USB) [N/m/?] (NEW)
LSI MPT Fusion SAS 3.0 Device Driver (SCSI_MPT3SAS) [N/m/?] (NEW)
Chelsio Communications FCoE support (SCSI_CHELSIO_FCOE) [N/m/?] (NEW) *
Marvell 88E6060 ethernet switch chip support (NET_DSA_MV88E6060) [N/m/y/?] (NEW)
Marvell 88E6085/6095/6095F/6131 ethernet switch chip support (NET_DSA_MV88E6131) [N/m/y/?] (NEW)
Marvell 88E6123/6161/6165 ethernet switch chip support (NET_DSA_MV88E6123_61_65) [N/m/y/?] (NEW) *
Cadence devices (NET_CADENCE) [Y/n/?] (NEW)
AT91RM9200 Ethernet support (ARM_AT91_ETHER) [N/m/y/?] (NEW)
Cadence MACB/GEM support (MACB) [N/m/y/?] (NEW)
Broadcom devices (NET_VENDOR_BROADCOM) [Y/?] y
Marvell MDIO interface support (MVMDIO) [N/m/y/?] (NEW)
CDC MBIM support (USB_NET_CDC_MBIM) [N/m/?] (NEW)
Atheros Wireless Cards (ATH_CARDS) [N/m/?] (NEW)
Atheros AR5523 wireless driver support (AR5523) [N/m/?] (NEW)
Wilocity 60g WiFi card wil6210 support (WIL6210) [N/m/?] (NEW) *
Realtek RTL8723AE PCIe Wireless Network Adapter (RTL8723AE) [N/m/?] (NEW)
ARC UART driver support (SERIAL_ARC) [N/m/y/?] (NEW) *
CBUS I2C driver (I2C_CBUS_GPIO) [N/m/?] (NEW)
TS-5500 DIO blocks and compatibles (GPIO_TS5500) [N/m/y/?] (NEW) 
TI BQ2415x battery charger driver (CHARGER_BQ2415X) [N/m/?] (NEW)
Board level reset or power off (POWER_RESET) [N/y/?] (NEW) *

 Default Thermal governor
  > 1. step_wise (THERMAL_DEFAULT_GOV_STEP_WISE) (NEW)
    2. fair_share (THERMAL_DEFAULT_GOV_FAIR_SHARE) (NEW)
    3. user_space (THERMAL_DEFAULT_GOV_USER_SPACE) (NEW)
  choice[1-3?]:   Fair-share thermal governor (FAIR_SHARE) [N/y/?] (NEW)

Step_wise thermal governor (STEP_WISE) [Y/?] (NEW) y
User_space thermal governor (USER_SPACE) [N/y/?] (NEW)
SSB GPIO driver (SSB_DRIVER_GPIO) [N/y/?] (NEW) *
BCMA GPIO driver (BCMA_DRIVER_GPIO) [N/y/?] (NEW)
Support for Realtek PCI-E card reader (MFD_RTSX_PCI) [N/m/y/?] (NEW)
TI ADC / Touch Screen chip support (MFD_TI_AM335X_TSCADC) [N/m/y/?] (NEW)
Support for Nano River Technologies Viperboard (MFD_VIPERBOARD) [N/m/?] (NEW)
Support for Retu multi-function device (MFD_RETU) [N/m/?] (NEW) *
Maxim MAX8973 voltage regulator  (REGULATOR_MAX8973) [N/m/?] (NEW)
TI TPS51632 Power Regulator (REGULATOR_TPS51632) [N/m/?] (NEW)
Siano SMS1xxx based MDTV receiver (SMS_USB_DRV) [N/m/?] (NEW)
Siano SMS1xxx based MDTV via SDIO interface (SMS_SDIO_DRV) [N/m/?] (NEW)   *
Stanton Control System 1 MIDI (SND_SCS1X) [N/m/?] (NEW) *
ION iCade arcade controller (HID_ICADE) [N/m/?] (NEW)
HID over I2C transport layer (I2C_HID) [N/m/?] (NEW) *
Renesas R-Car USB phy support (USB_RCAR_PHY) [N/m/?] (NEW)   *
SDHCI support for ACPI enumerated SDHCI controllers (MMC_SDHCI_ACPI) [N/m/?] (NEW)
NXP PCF8523 (RTC_DRV_PCF8523) [N/m/?] (NEW)
Philips PCF8563/Epson RTC8564 (RTC_DRV_PCF8563) [M/n/?] m
Userspace platform driver with generic irq and dynamic memory (UIO_DMEM_GENIRQ) [N/m/?] (NEW)
Microsoft Hyper-V Balloon driver (HYPERV_BALLOON) [N/m/?] (NEW) *
SystemBase PCI Multiport UART (SB105X) [N/m/y/?] (NEW)
TTY over Firewire (FIREWIRE_SERIAL) [N/m/?] (NEW) *
F2FS filesystem support (EXPERIMENTAL) (F2FS_FS) [N/m/y/?] (NEW) *
Enable CIFS debugging routines (CIFS_DEBUG) [Y/n/?] (NEW)
Simplified Mandatory Access Control Kernel Support (SECURITY_SMACK) [N/y/?] (NEW)
Camellia cipher algorithm (x86_64/AES-NI/AVX) (CRYPTO_CAMELLIA_AESNI_AVX_X86_64) [N/m/y/?] (NEW)

Поиск файлов в Linux

find

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

0. Создадим файл размером 10 Мбайт с размером блока 100 Кбайт:

rootoor@srv:~/dd-test$ dd if=/dev/zero of=file1.test bs=100K count=100
100+0 записей считано
100+0 записей написано
скопировано 10240000 байт (10 MB), 0,0448225 c, 228 MB/c

rootoor@srv:~/dd-test$ ls -l
итого 10000
-rw-r--r-- 1 rootoor rootoor 10240000 2013-05-05 13:47 file1.test

rootoor@srv:~/dd-test$

/dev/zero – специальный файл в UNIX-подобных системах, представляющий собой источник нулевых байтов (ASCII NUL, 0x00)

of=file.test – файл который создаем

bs=100K – размер блока, 100 КБайт (может быть: К — КБайт, М — МБайт, — ГБайт)

count=100 – количество блоков

В результате мы получили заданный файл, размером 100К*100=10 МБ

rootoor@srv:~# dd if=/dev/zero of=/var/www/file1.test bs=1M count=52
52+0 records in
52+0 records out
54525952 bytes (55 MB) copied, 0.453559 s, 120 MB/s

теперь в директории /var/www/ находится файл file1.test размером 52 МБ.

1. Поиск файлов в текущей директории размером больше 10 Мбайт

rootoor@srv:/var/www$ find . -size +10M -print
./var/www/file1.test

find – утилита для поиска файлов

. – где ищем. В нашем случае текущей директории (/var/www/* – поиск в директории /var/www/~ — поиск в домашней директории/ – поиск в корне файловой системы$HOME – поиск в домашней директории )

-size +10M – размер искомого файла. Больше 10 Мбайт (b – блок, размером 512 байт, c – байт, w – слово, размером 2 байта, k – килобайт, M – мегабайт и G– гигабайт )

-print – вывод на экран

2. Поиск файлов больше 50 Мб с выводом детальной информации

Усложним задачу и попробуем вывести на экран кроме имени файла еще некоторую информацию о нем.

rootoor@srv:~# find /var/www/* -type f -size +50000k -exec ls -lh {} \; | awk '{ print $8 " " $5 " " $1 " " $3":"$4 }'

./var/www/test1.file 110M -rw-r--r-- rootoor:rootoor
./var/www/file1.test 52M -rw-r--r-- rootoor:rootoor

-type f – тип, который ищем (f – файл, d – директория, l – символичная ссылка, s – сокет, b – блок)

-exec ls -lh {} \; – выполняет команду ls -lh над найденными файлами (вывод содержимого директории)

awk ‘{ print $8 » » $5 » » $1 » » $3″:»$4 }’ – обрабатываем вывод информации командой ls -lh

и выводим более детальную информацию в нужном нам порядке:
$8 – имя файла
$5 – размер файла
$1 – права доступа
$3 – владелец
$4 – группа

3. Поиск файлов заданного размера и определенного имени

rootoor@srv:~# find $HOME -name w*  -size +1M -exec ls -lh {} \; | awk '{ print $8 " " $5 }'

/home/rootoor/kawabanga.tar.gz 17M

-name w* – любой файл имя, которого содержит w*

 

Разделение большого файла на несколько частей

Split

$ split --bytes=<размер части> <исходный файл> <префикс имени части>

Размер частей может иметь суффикс, означающий множитель.

b — 512
kB — 1000
K — 1024
MB — 1000*1000
M — 1024*1024
GB — 1000*1000*1000
G — 1024*1024*1024

и так далее для T, P, E, Z, Y.

Пример:

$ split -a 1 -d -b 100M big.iso small.iso.part

Получим много файлов по 100 Мб, с суффиксами part0, part1, part2, part3…:

small.iso.part0
small.iso.part1
small.iso.part2
small.iso.part3

и т.д.

Чтобы снова объединить все части воедино, можно использовать команду cat:

$ cat small.iso.part* > big.iso

Утилита cat соберет все файлы, начиная с small.iso.part0.

Основы работы с Git

Введение

Git (произн. «гит») — распределённая система управления версиями файлов. Проект был создан Линусом Торвальдсом для управления разработкой ядра Linux. На сегодняшний день поддерживается Джунио Хамано.

Система спроектирована как набор программ, специально разработанных с учётом их использования в скриптах. Это позволяет удобно создавать специализированные системы контроля версий на базе Git или пользовательские интерфейсы. Например, Cogito является именно таким примером фронтенда к репозиториям Git, а StGit использует Git для управления коллекцией патчей.

Git поддерживает быстрое разделение и слияние версий, включает инструменты для визуализации и навигации по нелинейной истории разработки. Как и Darcs, BitKeeper, Mercurial, SVK, Bazaar и Monotone, Git предоставляет каждому разработчику локальную копию всей истории разработки; изменения копируются из одного репозитория в другой.

Удалённый доступ к репозиториям Git обеспечивается git-daemon, gitosis, SSH- или HTTP-сервером. TCP-сервис git-daemon входит в дистрибутив Git и является наряду с SSH наиболее распространённым и надёжным методом доступа. Метод доступа по HTTP, несмотря на ряд ограничений, очень популярен в контролируемых сетях, потому что позволяет использовать существующие конфигурации сетевых фильтров.

Основы работы с удаленным репозитарием

git clone — создание копии (удаленного) репозитария

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

Клонируем репозиторий, используя протокол http:

git clone http://user@somehost:port/~user/repository/project.git

Клонируем репозиторий с той же машины в директорию myrepo:

git clone /home/username/project myrepo

Клонируем репозитарий, используя безопасный протокол ssh:

git clone ssh://user@somehost:port/~user/repository

У git имеется и собственный протокол:

git clone git://user@somehost:port/~user/repository/project.git/

Импортируем svn репозитарий, используя протокол http:

git svn clone -s http://repo/location

-s – понимать стандартные папки SVN (trunk, branches, tags)

git fetch и git pull — забираем изменения из центрального репозитария

Для синхронизации текущей ветки с репозитарием используются команды git fetch и git pull.

git fetch — забрать изменения удаленной ветки из репозитария по умолчания, основной ветки; той, которая была использована при клонировании репозитария. Изменения обновят удаленную ветку (remote tracking branch), после чего надо будет провести слияние с локальной ветку командой git merge.

git fetch /home/username/project — забрать изменения из определенного репозитария.

Возможно также использовать синонимы для адресов, создаваемые командой git remote:

git remote add username-project /home/username/project

git fetch username-project — забрать изменения по адресу, определяемому синонимом.

Естественно, что после оценки изменений, например, командой git diff, надо создать коммит слияния с основной:

git merge username-project/master

Команда git pull сразу забирает изменения и проводит слияние с активной веткой.

Забрать из репозитория, для которого были созданы удаленные ветки по умолчанию:

git pull

Забрать изменения и метки из определенного репозитория:

git pull username-project --tags

Как правило, используется сразу команда git pull.

git push — вносим изменения в удаленный репозиторий

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

Отправить свои изменения в удаленную ветку, созданную при клонировании по умолчанию:

git push

Отправить изменения из ветки master в ветку experimental удаленного репозитория:

git push ssh://yourserver.com/~you/proj.git master:experimental

В удаленном репозитории origin удалить ветку experimental:

git push origin :experimental

В удаленную ветку master репозитория origin (синоним репозитория по умолчанию) ветки локальной ветки master:

git push origin master:master

Отправить метки в удаленную ветку master репозитария origin:

git push origin master --tags

Изменить указатель для удаленной ветки master репозитория origin (master будет такой же как и develop)

git push origin origin/develop:master

Добавить ветку test в удаленный репозиторий origin, указывающую на коммит ветки develop:

git push origin origin/develop:refs/heads/test

Работа с локальным репозиторием

Базовые команды

git init — создание репозитория

Команда git init создает в директории пустой репозиторий в виде директории .git, где и будет в дальнейшем храниться вся информация об истории коммитов, тегах — о ходе разработки проекта:

mkdir project-dir
cd project-dir
git init

git add и git rm — индексация изменений

Следующее, что нужно знать — команда git add. Она позволяет внести в индекс — временное хранилище — изменения, которые затем войдут в коммит. Примеры использования:

индексация измененного файла, либо оповещение о создании нового:

git add EDITEDFILE

внести в индекс все изменения, включая новые файлы:

git add .

Из индекса и дерева проекта одновременно файл можно удалить командой git rm:

отдельные файлы:

git rm FILE1 FILE2

хороший пример удаления из документации к git, удаляются сразу все файлы txt из папки:

git rm Documentation/\*.txt

внести в индекс все удаленные файлы:

git rm -r --cached .

Сбросить весь индекс или удалить из него изменения определенного файла можно
командой git reset:

сбросить весь индекс:

git reset

удалить из индекса конкретный файл:

git reset — EDITEDFILE

Команда git reset используется не только для сбрасывания индекса, поэтому дальше ей будет уделено гораздо больше внимания.

git status — состояние проекта, измененные и не добавленные файлы, индексированные файлы

Команду git status, пожалуй, можно считать самой часто используемой наряду с
командами коммита и индексации. Она выводит информацию обо всех изменениях, внесенных в дерево директорий проекта по сравнению с последним коммитом рабочей ветки; отдельно выводятся внесенные в индекс и неиндексированные файлы. Использовать ее крайне просто:

git status

Кроме того, git status указывает на файлы с неразрешенными конфликтами слияния и файлы, игнорируемые git.

git commit — совершение коммита

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

git commit

Если индекс не пустой, то на его основе будет совершен коммит, после чего
пользователя попросят прокомментировать вносимые изменения вызовом команды edit. Сохраняемся, и вуаля! Коммит готов.

Есть несколько ключей, упрощающих работу с git commit:

git commit -a

совершит коммит, автоматически индексируя изменения в файлах проекта. Новые файлы при этом индексироваться не будут! Удаление же файлов будет учтено.

git commit -m «commit comment»

комментируем коммит прямо из командной строки вместо текстового редактора.

git commit FILENAME

внесет в индекс и создаст коммит на основе изменений единственного файла.

git reset — возврат к определенному коммиту, откат изменений, «жесткий» или «мягкий»

Помимо работы с индексом (см. выше), git reset позволяет сбросить состояние проекта до какого-либо коммита в истории. В git данное действие может быть двух видов: «мягкого»(soft reset) и «жесткого» (hard reset).

«Мягкий» (с ключом --soft) резет оставит нетронутыми ваши индекс и все дерево файлов и директорий проекта, вернется к работе с указанным коммитом. Иными словами, если вы обнаруживаете ошибку в только что совершенном коммите или комментарии к нему, то легко можно исправить ситуацию:

  1. git commit — некорректный коммит
  2. git reset —soft HEAD^ — переходим к работе над уже совершенным коммитом, сохраняя все состояние проекта и проиндексированные файлы
  3. edit WRONGFILE
  4. edit ANOTHERWRONGFILE
  5. git add .
  6. git commit -c ORIG_HEAD — вернуться к последнему коммиту, будет предложено редактировать его сообщение. Если сообщение оставить прежним, то достаточно изменить регистр ключа -с:
    git commit -C ORIG_HEAD

Обратите внимание на обозначение HEAD^, оно означает «обратиться к предку последнего коммита». Подробней описан синтаксис такой относительной адресации будет ниже, в разделе «Хэши, тэги, относительная адресация». Соответственно, HEAD — ссылка на последний коммит. Ссылка ORIG_HEAD после «мягкого» резета указывает на оригинальный коммит.

Естественно, можно вернуться и на большую глубину коммитов,

«Жесткий» резет (ключ --hard) — команда, которую следует использовать с
осторожностью. git reset --hard вернет дерево проекта и индекс в состояние,
соответствующее указанному коммиту, удалив изменения последующих коммитов:

git add .
git commit -m «destined to death»
git reset --hard HEAD~1 — больше никто и никогда не увидит этот позорный коммит...
git reset --hard HEAD~3 — ...вернее, три последних коммита. Никто. Никогда!

Если команда достигнет точки ветвления, удаления коммита не произойдет.

Для команд слияния или выкачивания последних изменений с удаленного репозитория
примеры резета будут приведены в соответствующих разделах.

git revert — отмена изменений, произведенных в прошлом отдельным коммитом

Возможна ситуация, в которой требуется отменить изменения, внесенные отдельным коммитом. git revert создает новый коммит, накладывающий обратные изменения.

Отменяем коммит, помеченный тегом:

git revert config-modify-tag

Отменяем коммит, используя его хэш:

git revert cgsjd2h

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

git log — разнообразная информация о коммитах в целом

Иногда требуется получить информацию об истории коммитов; коммитах, изменивших отдельный файл; коммитах за определенный отрезок времени и так далее. Для этих целей используется команда git log.

Простейший пример использования, в котором приводится короткая справка по всем коммитам, коснувшимся активной в настоящий момент ветки (о ветках и ветвлении подробно узнать можно ниже, в разделе «Ветвления и слияния»):

git log

Получить подробную информацию о каждом в виде патчей по файлам из коммитов
можно, добавив ключ -p (или -u):

git log -p

Статистика изменения файлов, вроде числа измененных файлов, внесенных в них
строк, удаленных файлов вызывается ключом --stat:

git log --stat

За информацию по созданиям, переименованиям и правам доступа файлов отвечает ключ
--summary:

git log --summary

Чтобы просмотреть историю отдельного файла, достаточно указать в виде параметра его имя (кстати, в моей старой версии git этот способ не срабатывает,
обязательно добавлять » — » перед «README»):

git log README

или, если версия git не совсем свежая:

git log — README

Далее будет приводится только более современный вариант синтаксиса. Возможно
указывать время, начиная в определенного момента («weeks», «days», «hours», «s»
и так далее):

git log --since=«1 day 2 hours» README
git log --since=«2 hours» README

изменения, касающиеся отдельной папки:

git log --since=«2 hours» dir/

Можно отталкиваться от тегов.

Все коммиты, начиная с тега v1:

git log v1...

Все коммиты, включающие изменения файла README, начиная с тега v1:

git log v1... README

Все коммиты, включающие изменения файла README, начиная с тега v1 и заканчивая тегом v2:

git log v1..v2 README

Интересные возможности по формату вывода команды предоставляет ключ --pretty.

Вывести на каждый из коммитов по строчке, состоящей из хэша (здесь — уникального идентификатора каждого коммита, подробней — дальше):

git log --pretty=oneline

Лаконичная информация о коммитах, приводятся только автор и комментарий:

git log --pretty=short

Более полная информация о коммитах, с именем автора, комментарием, датой создания и внесения коммита:

git log --pretty=full/fuller

В принципе, формат вывода можно определить самостоятельно:

git log --pretty=format:'FORMAT'

Определение формата можно поискать в разделе по git log из Git Community Book
или справке. Красивый ASCII-граф коммитов выводится с использованием ключа
--graph.

git diff — отличия между деревьями проекта, коммитами и т.д.

Своего рода подмножеством команды git log можно считать команду git diff,
определяющую изменения между объектами в проекте — деревьями (файлов и
директорий).

Показать изменения, не внесенные в индекс:

git diff

Изменения, внесенные в индекс:

git diff --cached

Изменения в проекте по сравнению с последним коммитом:

git diff HEAD

Предпоследним коммитом:

git diff HEAD^

Можно сравнивать «головы» веток:

git diff master..experimental

или активную ветку с какой-либо:

git diff experimental

git show — показать изменения, внесенные отдельным коммитом

Посмотреть изменения, внесенные любым коммитом в истории, можно командой git show:

git show COMMIT_TAG

git blame и git annotate — команды, помогающие отслеживать изменения файлов

При работе в команде часто требуется выяснить, кто именно написал конкретный
код. Удобно использовать команду git blame, выводящую построчную информацию о последнем коммите, коснувшемся строки, имя автора и хэш коммита:

git blame README

Можно указать и конкретные строки для отображения:

git blame -L 2,+3 README — выведет информацию по трем строкам, 
начиная со второй.

Аналогично работает команда git annotate, выводящая и строки, и информацию о
коммитах, их коснувшихся:

git annotate README

git grep — поиск слов по проекту, состоянию проекта в прошлом

git grep, в целом, просто дублирует функционал знаменитой юниксовой
команды. Однако он позволяет слова и их сочетания искать в прошлом проекта, что бывает очень полезно.

Поиск слова tst в проекте:

git grep tst

Подсчитать число упоминаний tst в проекте:

git grep -с tst

Поиск в старой версии проекта:

git grep tst v1

Команда позволяет использовать логическое И и ИЛИ.

Найти строки, где упоминаются и первое слово, и второе:

git grep -e 'first' --and -e 'another'

Найти строки, где встречается хотя бы одно из слов:

git grep --all-match -e 'first' -e 'second'

Ветвление

git branch — создание, перечисление и удаление веток

Работа с ветками — очень легкая процедура в git, все необходимые механизмы сконцентрированы в одной команде:

Просто перечислить существующие ветки, отметив активную:

git branch

Создать новую ветку new-branch:

git branch new-branch

Удалить ветку, если та была залита (merged) с разрешением возможных конфликтов в текущую:

git branch -d new-branch

Удалить ветку в любом случае:

git branch -D new-branch

Переименовать ветку:

git branch -m new-name-branch

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

git branch --contains v1.2

git checkout — переключение между ветками, извлечение файлов

Команда git checkout позволяет переключаться между последними коммитами (если упрощенно) веток:

checkout some-other-branch

Создаст ветку, в которую и произойдет переключение

checkout -b some-other-new-branch

Если в текущей ветке были какие-то изменения по сравнению с последним коммитом в ветке(HEAD), то команда откажется производить переключение, дабы не потерять произведенную работу. Проигнорировать этот факт позволяет ключ -f:

checkout -f some-other-branch

В случае, когда изменения надо все же сохранить, следует использовать ключ -m. Тогда команда перед переключением попробует залить изменения в текущую ветку и, после разрешения возможных конфликтов, переключиться в новую:

checkout -m some-other-branch

Вернуть файл (или просто вытащить из прошлого коммита) позволяет команда вида:

Вернуть somefile к состоянию последнего коммита:

git checkout somefile

Вернуть somefile к состоянию на два коммита назад по ветке:

git checkout HEAD~2 somefile

git merge — слияние веток (разрешение возможных конфликтов)

Слияние веток, в отличие от обычной практики централизованных систем, в git происходит практически каждый день. Естественно, что имеется удобный интерфейс к популярной операции.

Попробовать объединить текующую ветку и ветку new-feature:

git merge new-feature

В случае возникновения конфликтов коммита не происходит, а по проблемным файлам расставляются специальные метки а-ля svn; сами же файлы отмечаются в индексе как «не соединенные» (unmerged). До тех пор пока проблемы не будут решены, коммит совершить будет нельзя.

Например, конфликт возник в файле TROUBLE, что можно увидеть в git status.

Произошла неудачная попытка слияния:

git merge experiment

Смотрим на проблемные места:

git status

Разрешаем проблемы:

edit TROUBLE

Индексируем наши изменения, тем самым снимая метки:

git add .

Совершаем коммит слияния:

git commit

Вот и все, ничего сложного. Если в процессе разрешения вы передумали разрешать конфликт, достаточно набрать (это вернёт обе ветки в исходные состояния):

git reset --hard HEAD

Если же коммит слияния был совершен, используем команду:

git reset --hard ORIG_HEAD

git rebase — построение ровной линии коммитов

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

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

Предположим, имеется две ветки, master и топик, в каждой из которых было совершенно несколько коммитов начиная с момента ветвления. Команда git rebase берет коммиты из ветки topic и накладывает их на последний коммит ветки master.

Вариант, в котором явно указывается, что и куда накладывается:

git-rebase master topic

на master накладывается активная в настоящий момент ветка:

git-rebase master

После использования команды история становится линейной. При возникновении конфликтов при поочередном накладывании коммитов работа команды будет останавливаться, а в проблемные местах файлов появятся соответствующие метки. После редактирования — разрешения конфликтов — файлы следует внести в индекс командой git add и продолжить наложение следующих коммитов командой git rebase --continue. Альтернативными выходами будут команды git rebase --skip (пропустить наложение коммита и перейти к следующему) или git rebase --abort (отмена работы команды и всех внесенных изменений).

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

git cherry-pick — применение к дереву проекта изменений, внесенных отдельным коммитом

Если ведется сложная история разработки, с несколькими длинными ветками разработками, может возникнуть необходимость в применении изменений, внесенных отдельным коммитом одной ветки, к дереву другой (активной в настоящий момент).

Изменения, внесенные указанным коммитом будут применены к дереву, автоматически проиндексированы и станут коммитом в активной ветке:

git cherry-pick BUG_FIX_TAG

Ключ -n показывает, что изменения надо просто применить к дереву проекта без индексации и создания коммита

git cherry-pick BUG_FIX_TAG -n

Прочие команды и необходимые возможности

Хэш — уникальная идентификация объектов

В git для идентификации любых объектов используется уникальный (то есть с огромной вероятностью уникальный) хэш из 40 символов, который определяется хэшируюшей функцией на основе содержимого объекта. Объекты — это все: коммиты, файлы, тэги, деревья. Поскольку хэш уникален для содержимого, например, файла, то и сравнивать такие файлы очень легко — достаточно просто сравнить две строки в сорок символов.

Больше всего нас интересует тот факт, что хэши идентифицируют коммиты. В этом смысле хэш — продвинутый аналог ревизий Subversion. Несколько примеров использования хэшей в качестве способа адресации:

найти разницу текущего состояния проекта и коммита за номером… сами видите, каким:

git diff f292ef5d2b2f6312bc45ae49c2dc14588eef8da2

То же самое, но оставляем только шесть первых символов. Git поймет, о каком коммите идет речь, если не существует другого коммита с таким началом хэша:

git diff f292ef5

Иногда хватает и четырех символов:

git diff f292

Читаем лог с коммита по коммит:

git log febc32...f292

Разумеется, человеку пользоваться хэшами не так удобно, как машине, именно поэтому были введены другие объекты — тэги.

git tag — тэги как способ пометить уникальный коммит

Тэг (tag) — это объект, связанный с коммитом; хранящий ссылку на сам коммит, имя автора, собственное имя и некоторый комментарий. Кроме того, разработчик может оставлять на таких тегах собственную цифровую подпись.

Кроме этого в git представленные так называемые «легковесные тэги» (lightweight tags), состоящие только из имени и ссылки на коммит. Такие тэги, как правило, используются для упрощения навигации по дереву истории; создать их очень легко.

Создать «легковесный» тэг, связанный с последним коммитом; если тэг уже есть, то еще один создан не будет:

git tag stable-1

Пометить определенный коммит:

git tag stable-2 f292ef5

Удалить тег:

git tag -d stable-2

Перечислить тэги:

git tag -l

Создать тэг для последнего коммита, заменить существующий, если таковой уже был:

git tag -f stable-1.1

После создания тэга его имя можно использовать вместо хэша в любых командах вроде git diffgit log и так далее:

git diff stable-1.1...stable-1

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

Создать обычный тэг для последнего коммита; будет вызван текстовый редактор для составления комментария:

git tag -a stable

Создать обычный тэг, сразу указав в качестве аргумента комментарий:

git tag -a stable -m "production version"

Команды перечисления, удаления, перезаписи для обычных тэгов не отличаются от команд для «легковесных» тэгов.

Относительная адресация

Вместо ревизий и тэгов в качестве имени коммита можно опираться на еще один механизм — относительную адресацию. Например, можно обратиться прямо к предку последнего коммита ветки master:

git diff master^

Если после «птички» поставить цифру, то можно адресоваться по нескольким предкам коммитов слияния:

найти изменения по сравнению со вторым предком последнего коммита в master; HEAD здесь — указатель на последний коммит активной ветки:

git diff HEAD^2

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

что привнес «дедушка» нынешнего коммита:

git diff master^^

То же самое:

git diff master~2

Обозначения можно объединять, чтобы добраться до нужного коммита:

git diff master~3^~2
git diff master~6

файл .gitignore — объясняем git, какие файлы следует игнорировать

Иногда по директориям проекта встречаются файлы, которые не хочется постоянно видеть в сводке git status. Например, вспомогательные файлы текстовых редакторов, временные файлы и прочий мусор.

Заставить git status игнорировать определенные файлы можно, создав в корне или глубже по дереву (если ограничения должны быть только в определенных директория) файл .gitignore. В этих файлах можно описывать шаблоны игнорируемых файлов определенного формата.

Пример содержимого такого файла:

#комментарий к файлу .gitignore
#игнорируем сам .gitignore
.gitignore
#все html-файлы...
*.html
#...кроме определенного
!special.html
#не нужны объектники и архивы
*.[ao]

Существуют и другие способы указания игнорируемых файлов, о которых можно узнать из справки git help gitignore.

Серверные команды репозитория

; git update-server-info : Команда создает вспомогательные файлы для dumb-сервера в $GIT_DIR/info и $GIT_OBJECT_DIRECTORY/info каталогах, чтобы помочь клиентам узнать, какие ссылки и пакеты есть на сервере.

; git count-objects : Проверка, сколько объектов будет потеряно и объём освобождаемого места при перепаковке репозитория.
; git gc : Переупаковка локального репозитория.

Рецепты

Создание пустого репозитория на сервере

repo="repo.git" 
mkdir $repo
cd $repo
git init --bare
chown git. -R ./
cd ../

Импорт svn репозитория на Git-сервер

repo="repo.svn" 
svnserver="http://svn.calculate.ru" 
git svn clone -s $svnserver/$repo $repo
mv $repo/.git/refs/remotes/tags $repo/.git/refs/tags
rm -rf $repo/.git/refs/remotes
rm -rf $repo/.git/svn
mv $repo/.git $repo.git
rm -rf $repo
cd $repo.git
chown git. -R ./
cd ../

Ссылки

Compiling Linux Kernel 3.4.5 Vanilla Final — Debian way

Here is my guide on Compiling 3.4.x Vanilla Final — Ubuntu/Debian using the debian way

This article is about compiling a kernel on Ubuntu systems. It describes how to build a custom kernel using the latest unmodified kernel sources from www.kernel.org (vanilla kernel) so that you are independent from the kernels supplied by your distribution.
Install the Required packages for building it

sudo apt-get install git-core kernel-package fakeroot build-essential ncurses-dev

Then download latest kernel version

cd /usr/src
sudo wget --continue http://www.kernel.org/pub/linux/kernel/v3.0/linux-3.4.5.tar.bz2
sudo tar jxvf linux-3.4.5.tar.bz2
cd linux-3.4.5

$ sudo cp /boot/config-`uname -r` ./.config
$ sudo make menuconfig
Disable xen
Processor Type and Features -> Paravirtualized Guest Support -> Xen

support otherwise you will get this error

sudo make-kpkg clean
sudo fakeroot make-kpkg --initrd --append-to-version=-vanillaice kernel_image kernel_headers
cd ..
sudo dpkg -i linux-image-3.4.*
sudo shutdown -r now

you can install the headers too from /usr/src/linux-headers-3.4.*-*
in my case i can show you how the packages are named

ls *.deb
linux-image-3.4.*-vanillaice_4.4.*-vanillaice-10.00.Custom_amd64.deb
linux-headers-3.4.*-vanillaice_4.4.*-vanillaice-10.00.Custom_amd64.deb

Детальные характеристики с помощью dmidecode

Просмотреть серийные номера железа и более детальные характеристики можно с помощью команды dmidecode:

Вот, пример вывода команды dmidecode с сервера IBM HS22:

[root@xen-bc4 ~]# dmidecode
# dmidecode 2.10
SMBIOS 2.5 present.
64 structures occupying 2619 bytes.
Table at 0x7F6BD000.

Handle 0x0000, DMI type 38, 16 bytes
IPMI Device Information
Interface Type: KCS (Keyboard Control Style)
Specification Version: 2.0
I2C Slave Address: 0x10
NV Storage Device: Not Present
Base Address: 0x0000000000000CA2 (I/O)

Handle 0x0001, DMI type 4, 40 bytes
Processor Information
Socket Designation: Node 1 Socket 1
Type: Central Processor
Family: Xeon
Manufacturer: Intel(R) Corporation
ID: C2 06 02 00 FF FB EB BF
Signature: Type 0, Family 6, Model 44, Stepping 2
Flags:
FPU (Floating-point unit on-chip)
VME (Virtual mode extension)
DE (Debugging extension)
PSE (Page size extension)
TSC (Time stamp counter)
MSR (Model specific registers)
PAE (Physical address extension)
MCE (Machine check exception)
CX8 (CMPXCHG8 instruction supported)
APIC (On-chip APIC hardware supported)
SEP (Fast system call)
MTRR (Memory type range registers)
PGE (Page global enable)
MCA (Machine check architecture)
CMOV (Conditional move instruction supported)
PAT (Page attribute table)
PSE-36 (36-bit page size extension)
CLFSH (CLFLUSH instruction supported)
DS (Debug store)
ACPI (ACPI supported)
MMX (MMX technology supported)
FXSR (Fast floating-point save and restore)
SSE (Streaming SIMD extensions)
SSE2 (Streaming SIMD extensions 2)
SS (Self-snoop)
HTT (Hyper-threading technology)
TM (Thermal monitor supported)
PBE (Pending break enabled)
Version: Intel(R) Xeon(R) CPU X5670 @ 2.93GHz
Voltage: 1.2 V
External Clock: 6400 MHz
Max Speed: 4000 MHz
Current Speed: 2930 MHz
Status: Populated, Enabled
Upgrade: ZIF Socket
L1 Cache Handle: 0x0002
L2 Cache Handle: 0x0003
L3 Cache Handle: 0x0004
Serial Number: Not Specified
Asset Tag: Not Specified
Part Number: Not Specified
Core Count: 6
Core Enabled: 6
Thread Count: 12
Characteristics:
64-bit capable

Handle 0x0002, DMI type 7, 19 bytes
Cache Information
Socket Designation: Internal Cache Level 1
Configuration: Enabled, Not Socketed, Level 1
Operational Mode: Write Back
Location: Internal
Installed Size: 32 kB
Maximum Size: 32 kB
Supported SRAM Types:
Asynchronous
Installed SRAM Type: Asynchronous
Speed: Unknown
Error Correction Type: Single-bit ECC
System Type: Other
Associativity: 16-way Set-associative

Handle 0x0003, DMI type 7, 19 bytes
Cache Information
Socket Designation: Internal Cache Level 2
Configuration: Enabled, Not Socketed, Level 2
Operational Mode: Write Back
Location: Internal
Installed Size: 256 kB
Maximum Size: 256 kB
Supported SRAM Types:
Asynchronous
Installed SRAM Type: Asynchronous
Speed: Unknown
Error Correction Type: Single-bit ECC
System Type: Instruction
Associativity: 16-way Set-associative

Handle 0x0004, DMI type 7, 19 bytes
Cache Information
Socket Designation: Internal Cache Level 3
Configuration: Enabled, Not Socketed, Level 3
Operational Mode: Write Back
Location: Internal
Installed Size: 12288 kB
Maximum Size: 12288 kB
Supported SRAM Types:
Asynchronous
Installed SRAM Type: Asynchronous
Speed: Unknown
Error Correction Type: Single-bit ECC
System Type: Instruction
Associativity:

Handle 0x0005, DMI type 0, 24 bytes
BIOS Information
Vendor: IBM
Version: -[P9E146CUS-1.08]-
Release Date: 04/26/2010
ROM Size: 4096 kB
Characteristics:
PCI is supported
PNP is supported
BIOS is upgradeable
BIOS shadowing is allowed
Boot from CD is supported
Selectable boot is supported
EDD is supported
Japanese floppy for NEC 9800 1.2 MB is supported (int 13h)
Japanese floppy for Toshiba 1.2 MB is supported (int 13h)
5.25"/360 kB floppy services are supported (int 13h)
5.25"/1.2 MB floppy services are supported (int 13h)
3.5"/720 kB floppy services are supported (int 13h)
3.5"/2.88 MB floppy services are supported (int 13h)
Print screen service is supported (int 5h)
8042 keyboard services are supported (int 9h)
Serial services are supported (int 14h)
Printer services are supported (int 17h)
CGA/mono video services are supported (int 10h)
ACPI is supported
USB legacy is supported
LS-120 boot is supported
ATAPI Zip drive boot is supported
BIOS boot specification is supported
Function key-initiated network boot is supported
Targeted content distribution is supported
BIOS Revision: 0.0
Firmware Revision: 0.0

Handle 0x0006, DMI type 1, 27 bytes
System Information
Manufacturer: IBM
Product Name: BladeCenter HS22 -[7870H4G]-
Version: 07
Serial Number: 99N1705
UUID: 75EFE298-6902-11DF-8517-E41F137A0F00
Wake-up Type: Other
SKU Number: XxXxXxX
Family: System x

Handle 0x0007, DMI type 2, 16 bytes
Base Board Information
Manufacturer: IBM
Product Name: 68Y8071
Version: (none)
Serial Number: 05P0PS
Asset Tag: (none)
Features:
Board is a hosting board
Board is replaceable
Location In Chassis: Slot04
Chassis Handle: 0x0008
Type: Server Blade
Contained Object Handles: 0

Handle 0x0008, DMI type 3, 17 bytes
Chassis Information
Manufacturer: IBM
Type: Main Server Chassis
Lock: Not Present
Version: none
Serial Number: -[UUID:AC6587180B4F3356828A9EF654FF3925]-
Asset Tag: none
Boot-up State: Safe
Power Supply State: Safe
Thermal State: Other
Security Status: Other
OEM Information: 0x00000000

Handle 0x0009, DMI type 8, 9 bytes
Port Connector Information
Internal Reference Designator: ID 0
Internal Connector Type: SAS/SATA Plug Receptacle
External Reference Designator: SAS
External Connector Type: None
Port Type: SAS

Handle 0x000A, DMI type 8, 9 bytes
Port Connector Information
Internal Reference Designator: ID 1
Internal Connector Type: SAS/SATA Plug Receptacle
External Reference Designator: SAS
External Connector Type: None
Port Type: SAS

Handle 0x000B, DMI type 8, 9 bytes
Port Connector Information
Internal Reference Designator: Back Panel
Internal Connector Type: Other
External Reference Designator: COM 1 MM
External Connector Type: DB-9 male
Port Type: Serial Port 16550A Compatible

Handle 0x000C, DMI type 8, 9 bytes
Port Connector Information
Internal Reference Designator: J21
Internal Connector Type: None
External Reference Designator: COM 2
External Connector Type: DB-9 male
Port Type: Serial Port 16550A Compatible

Handle 0x000D, DMI type 8, 9 bytes
Port Connector Information
Internal Reference Designator: Back Panel
Internal Connector Type: None
External Reference Designator: USB MM1
External Connector Type: Access Bus (USB)
Port Type: USB

Handle 0x000E, DMI type 8, 9 bytes
Port Connector Information
Internal Reference Designator: Back Panel
Internal Connector Type: None
External Reference Designator: USB MM2
External Connector Type: Access Bus (USB)
Port Type: USB

Handle 0x000F, DMI type 8, 9 bytes
Port Connector Information
Internal Reference Designator: Item 7
Internal Connector Type: None
External Reference Designator: USB Key
External Connector Type: Access Bus (USB)
Port Type: USB

Handle 0x0010, DMI type 9, 13 bytes
System Slot Information
Designation: I/O Expander Daughter Card
Type: x8 PCI Express
Current Usage: Available
Length: Other
ID: 1
Characteristics:
3.3 V is provided

Handle 0x0011, DMI type 11, 5 bytes
OEM Strings
String 1: IBM SystemX

Handle 0x0012, DMI type 10, 6 bytes
On Board Device Information
Type: Video
Status: Enabled
Description: Matrox G200eV

Handle 0x0013, DMI type 10, 6 bytes
On Board Device Information
Type: SAS Controller
Status: Enabled
Description: LSI SAS 1064E

Handle 0x0014, DMI type 10, 6 bytes
On Board Device Information
Type: Ethernet
Status: Enabled
Description: Ethernet 1 BroadCom 5709S Ethernet Controller

Handle 0x0015, DMI type 10, 6 bytes
On Board Device Information
Type: Ethernet
Status: Enabled
Description: Ethernet 1 BroadCom 5709S Ethernet Controller

Handle 0x0016, DMI type 11, 5 bytes
OEM Strings
String 1: IBM SystemX

Handle 0x0017, DMI type 11, 5 bytes
OEM Strings
String 1: $SI Integrated Management Module 1.10 -[YUOO57H-1.10]-

Handle 0x0018, DMI type 11, 5 bytes
OEM Strings
String 1: $BD

Handle 0x0019, DMI type 11, 5 bytes
OEM Strings
String 1: $CR CRTM Code 1.08 -[P9CP46CUS]-

Handle 0x001A, DMI type 11, 5 bytes
OEM Strings
String 1: $DS Preboot Diagnostics (DSA) 3.01 -[DSYT60K]-

Handle 0x001B, DMI type 11, 5 bytes
OEM Strings
String 1: $MV Min UEFI Version -[P9E146AUS-1.07]-

Handle 0x001C, DMI type 11, 5 bytes
OEM Strings
String 1: $BB Backup BIOS Version -[P9E148AUS]-

Handle 0x001D, DMI type 11, 5 bytes
OEM Strings
String 1: $QP QPI Version -[01.84]-

Handle 0x001E, DMI type 11, 5 bytes
OEM Strings
String 1: $MR MRC Version -[02.11]-

Handle 0x001F, DMI type 11, 5 bytes
OEM Strings
String 1: $CS CSM Version -[CSE127AUX]-

Handle 0x0020, DMI type 12, 5 bytes
System Configuration Options
Option 1: SW? TPM Physical Presence Switch, J? TPM Physical Presence Jumper

Handle 0x0021, DMI type 13, 22 bytes
BIOS Language Information
Installable Languages: 1
English
Currently Installed Language: English

Handle 0x0022, DMI type 27, 14 bytes
Cooling Device
Temperature Probe Handle: 0x0000
Type: Unknown
Status: Unknown
OEM-specific Information: 0x00000000
Nominal Speed: 0 rpm

Handle 0x0023, DMI type 32, 20 bytes
System Boot Information
Status: No errors detected

Handle 0x0024, DMI type 16, 15 bytes
Physical Memory Array
Location: System Board Or Motherboard
Use: System Memory
Error Correction Type: Single-bit ECC
Maximum Capacity: 192 GB
Error Information Handle: Not Provided
Number Of Devices: 18

Handle 0x0025, DMI type 6, 12 bytes
Memory Module Information
Socket Designation: DIMM01
Bank Connections: 0 0
Current Speed: Unknown
Type: DIMM
Installed Size: 4096 MB (Single-bank Connection)
Enabled Size: 4096 MB (Single-bank Connection)
Error Status: OK

Handle 0x0026, DMI type 17, 27 bytes
Memory Device
Array Handle: 0x0024
Error Information Handle: Not Provided
Total Width: 72 bits
Data Width: 64 bits
Size: 4096 MB
Form Factor: DIMM
Set: None
Locator: DIMM01
Bank Locator: BANK00
Type: Other
Type Detail: Unknown
Speed: 1333 MHz
Manufacturer: Samsung
Serial Number: 44C33F42
Asset Tag: Unknown
Part Number: M392B5170EM1-CH9

Handle 0x0027, DMI type 6, 12 bytes
Memory Module Information
Socket Designation: DIMM02
Bank Connections: 0 0
Current Speed: Unknown
Type: DIMM
Installed Size: 2048 MB (Single-bank Connection)
Enabled Size: 2048 MB (Single-bank Connection)
Error Status: OK

Handle 0x0028, DMI type 17, 27 bytes
Memory Device
Array Handle: 0x0024
Error Information Handle: Not Provided
Total Width: 72 bits
Data Width: 64 bits
Size: 2048 MB
Form Factor: DIMM
Set: None
Locator: DIMM02
Bank Locator: BANK00
Type: Other
Type Detail: Unknown
Speed: 1333 MHz
Manufacturer: Samsung
Serial Number: F7654142
Asset Tag: Unknown
Part Number: M392B5673EH1-CH9

Handle 0x0029, DMI type 6, 12 bytes
Memory Module Information
Socket Designation: DIMM03
Bank Connections: 0 0
Current Speed: Unknown
Type: DIMM
Installed Size: 4096 MB (Single-bank Connection)
Enabled Size: 4096 MB (Single-bank Connection)
Error Status: OK

Handle 0x002A, DMI type 17, 27 bytes
Memory Device
Array Handle: 0x0024
Error Information Handle: Not Provided
Total Width: 72 bits
Data Width: 64 bits
Size: 4096 MB
Form Factor: DIMM
Set: None
Locator: DIMM03
Bank Locator: BANK00
Type: Other
Type Detail: Unknown
Speed: 1333 MHz
Manufacturer: Samsung
Serial Number: 18D33D42
Asset Tag: Unknown
Part Number: M392B5170EM1-CH9

Handle 0x002B, DMI type 6, 12 bytes
Memory Module Information
Socket Designation: DIMM04
Bank Connections: 0 0
Current Speed: Unknown
Type: DIMM
Installed Size: 2048 MB (Single-bank Connection)
Enabled Size: 2048 MB (Single-bank Connection)
Error Status: OK

Handle 0x002C, DMI type 17, 27 bytes
Memory Device
Array Handle: 0x0024
Error Information Handle: Not Provided
Total Width: 72 bits
Data Width: 64 bits
Size: 2048 MB
Form Factor: DIMM
Set: None
Locator: DIMM04
Bank Locator: BANK00
Type: Other
Type Detail: Unknown
Speed: 1333 MHz
Manufacturer: Samsung
Serial Number: 3664142
Asset Tag: Unknown
Part Number: M392B5673EH1-CH9

Handle 0x002D, DMI type 6, 12 bytes
Memory Module Information
Socket Designation: DIMM05
Bank Connections: 0 0
Current Speed: Unknown
Type: DIMM
Installed Size: 4096 MB (Single-bank Connection)
Enabled Size: 4096 MB (Single-bank Connection)
Error Status: OK

Handle 0x002E, DMI type 17, 27 bytes
Memory Device
Array Handle: 0x0024
Error Information Handle: Not Provided
Total Width: 72 bits
Data Width: 64 bits
Size: 4096 MB
Form Factor: DIMM
Set: None
Locator: DIMM05
Bank Locator: BANK00
Type: Other
Type Detail: Unknown
Speed: 1333 MHz
Manufacturer: Samsung
Serial Number: D9FA3E42
Asset Tag: Unknown
Part Number: M392B5170EM1-CH9

Handle 0x002F, DMI type 6, 12 bytes
Memory Module Information
Socket Designation: DIMM06
Bank Connections: 0 0
Current Speed: Unknown
Type: DIMM
Installed Size: 2048 MB (Single-bank Connection)
Enabled Size: 2048 MB (Single-bank Connection)
Error Status: OK

Handle 0x0030, DMI type 17, 27 bytes
Memory Device
Array Handle: 0x0024
Error Information Handle: Not Provided
Total Width: 72 bits
Data Width: 64 bits
Size: 2048 MB
Form Factor: DIMM
Set: None
Locator: DIMM06
Bank Locator: BANK00
Type: Other
Type Detail: Unknown
Speed: 1333 MHz
Manufacturer: Samsung
Serial Number: 5664142
Asset Tag: Unknown
Part Number: M392B5673EH1-CH9

Handle 0x0031, DMI type 6, 12 bytes
Memory Module Information
Socket Designation: DIMM07
Bank Connections: 0 0
Current Speed: Unknown
Type: None
Installed Size: Not Installed
Enabled Size: Not Installed
Error Status: OK

Handle 0x0032, DMI type 17, 27 bytes
Memory Device
Array Handle: 0x0024
Error Information Handle: Not Provided
Total Width: Unknown
Data Width: Unknown
Size: No Module Installed
Form Factor: Unknown
Set: None
Locator: DIMM07
Bank Locator: BANK01
Type: Unknown
Type Detail: Unknown
Speed: Unknown
Manufacturer: Not Specified
Serial Number: Not Specified
Asset Tag: Not Specified
Part Number: Not Specified

Handle 0x0033, DMI type 6, 12 bytes
Memory Module Information
Socket Designation: DIMM08
Bank Connections: 0 0
Current Speed: Unknown
Type: None
Installed Size: Not Installed
Enabled Size: Not Installed
Error Status: OK

Handle 0x0034, DMI type 17, 27 bytes
Memory Device
Array Handle: 0x0024
Error Information Handle: Not Provided
Total Width: Unknown
Data Width: Unknown
Size: No Module Installed
Form Factor: Unknown
Set: None
Locator: DIMM08
Bank Locator: BANK01
Type: Unknown
Type Detail: Unknown
Speed: Unknown
Manufacturer: Not Specified
Serial Number: Not Specified
Asset Tag: Not Specified
Part Number: Not Specified

Handle 0x0035, DMI type 6, 12 bytes
Memory Module Information
Socket Designation: DIMM09
Bank Connections: 0 0
Current Speed: Unknown
Type: None
Installed Size: Not Installed
Enabled Size: Not Installed
Error Status: OK

Handle 0x0036, DMI type 17, 27 bytes
Memory Device
Array Handle: 0x0024
Error Information Handle: Not Provided
Total Width: Unknown
Data Width: Unknown
Size: No Module Installed
Form Factor: Unknown
Set: None
Locator: DIMM09
Bank Locator: BANK01
Type: Unknown
Type Detail: Unknown
Speed: Unknown
Manufacturer: Not Specified
Serial Number: Not Specified
Asset Tag: Not Specified
Part Number: Not Specified

Handle 0x0037, DMI type 6, 12 bytes
Memory Module Information
Socket Designation: DIMM10
Bank Connections: 0 0
Current Speed: Unknown
Type: None
Installed Size: Not Installed
Enabled Size: Not Installed
Error Status: OK

Handle 0x0038, DMI type 17, 27 bytes
Memory Device
Array Handle: 0x0024
Error Information Handle: Not Provided
Total Width: Unknown
Data Width: Unknown
Size: No Module Installed
Form Factor: Unknown
Set: None
Locator: DIMM10
Bank Locator: BANK01
Type: Unknown
Type Detail: Unknown
Speed: Unknown
Manufacturer: Not Specified
Serial Number: Not Specified
Asset Tag: Not Specified
Part Number: Not Specified

Handle 0x0039, DMI type 6, 12 bytes
Memory Module Information
Socket Designation: DIMM11
Bank Connections: 0 0
Current Speed: Unknown
Type: None
Installed Size: Not Installed
Enabled Size: Not Installed
Error Status: OK

Handle 0x003A, DMI type 17, 27 bytes
Memory Device
Array Handle: 0x0024
Error Information Handle: Not Provided
Total Width: Unknown
Data Width: Unknown
Size: No Module Installed
Form Factor: Unknown
Set: None
Locator: DIMM11
Bank Locator: BANK01
Type: Unknown
Type Detail: Unknown
Speed: Unknown
Manufacturer: Not Specified
Serial Number: Not Specified
Asset Tag: Not Specified
Part Number: Not Specified

Handle 0x003B, DMI type 6, 12 bytes
Memory Module Information
Socket Designation: DIMM12
Bank Connections: 0 0
Current Speed: Unknown
Type: None
Installed Size: Not Installed
Enabled Size: Not Installed
Error Status: OK

Handle 0x003C, DMI type 17, 27 bytes
Memory Device
Array Handle: 0x0024
Error Information Handle: Not Provided
Total Width: Unknown
Data Width: Unknown
Size: No Module Installed
Form Factor: Unknown
Set: None
Locator: DIMM12
Bank Locator: BANK01
Type: Unknown
Type Detail: Unknown
Speed: Unknown
Manufacturer: Not Specified
Serial Number: Not Specified
Asset Tag: Not Specified
Part Number: Not Specified

Handle 0x003D, DMI type 19, 15 bytes
Memory Array Mapped Address
Starting Address: 0x00000000000
Ending Address: 0x0047FFFFFFF
Range Size: 18 GB
Physical Array Handle: 0x0024
Partition Width: 0

Handle 0x003E, DMI type 4, 40 bytes
Processor Information
Socket Designation: Node 1 Socket 2
Type: Central Processor
Family: Xeon
Manufacturer: Intel(R) Corporation
ID: 00 00 00 00 00 00 00 00
Signature: Type 0, Family 0, Model 0, Stepping 0
Flags: None
Version: Not Specified
Voltage: 1.2 V
External Clock: 6400 MHz
Max Speed: 4000 MHz
Current Speed: Unknown
Status: Unpopulated
Upgrade: ZIF Socket
L1 Cache Handle: Not Provided
L2 Cache Handle: Not Provided
L3 Cache Handle: Not Provided
Serial Number: Not Specified
Asset Tag: Not Specified
Part Number: Not Specified
Characteristics: None

Handle 0xFEFF, DMI type 127, 4 bytes
End Of Table

[root@xen-bc4 ~]#

 

Создание IPSec VPN туннеля между Linux и Cisco PIX

Создание IPSEC VPN туннеля на основе pre-shared keys между linux 2.6 ipsec-tools(racoon) и cisco PIX firewall 5xx

Введение:

Термин VPN (Virtual Private Network) переводится как «виртуальная частная сеть».

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

В моем примере будет создаваться защищенный IPSEC канал между двумя сетевыми устройствами, первое это Cisco PIX firewall — аппаратный фаервол от известного производителя и второе компьютер, работающий в качестве шлюза под управлением OS Linux. IPSEC стандарт разработанный и принятый к реализации, для повышения безопасности используемого IP протокола (см. http://www.rfc-editor.org/ RFC 2401 — IPSec) Ниже приводится небольшая схема поясняющая устанавливаемое соединение.

Схема соединения :

( office_1 )--[ pix ] ~~ internet ~~ [ linux ]--( office_2 )

сети и интерфейсы :

сеть office_1 — 10.0.0.0/24
сеть office_2 — 192.168.0.0/24

pix_int — 10.0.0.1/24 (внутренний интерфейс, office_1)
pix_ext — 172.16.1.1 (внешний интерфейс)

linux_ext — 172.16.2.1 (внешний интерфейс)
linux_int — 192.168.0.1/24 (внутренний интерфейс, office_2)

Настраиваем pix (у меня был 506E):

! общая настройка, у вас она уже по всей видимости выполнена
! и необходимости тут настраивать что-либо еще нет.
interface ethernet0 auto
interface ethernet1 auto
nameif ethernet0 outside security0
nameif ethernet1 inside security100
mtu outside 1500
mtu inside 1500
ip address outside 172.16.1.1 255.255.255.0
ip address inside 10.0.0.1 255.255.255.0
route outside 0.0.0.0 0.0.0.0 172.16.1.254 1
! настройка ipsec_acl для разрешения доступа сетям
access-list ipsec_acl permit ip 10.0.0.1 255.255.255.0 192.168.0.0 255.255.255.0
access-list ipsec_acl permit ip 192.168.0.0 255.255.255.0 10.0.0.0 255.255.255.0
! исключение ipsec_acl из NAT
nat (inside) 0 access-list ipsec_acl
! The "sysopt connection permit-ipsec" command enables packets that have
! been processed by IPSec to bypass access list checks.
sysopt connection permit-ipsec
! определение политики IPSec
! определение протоколов для шифрации трафика
crypto ipsec transform-set myset1 esp-3des esp-sha-hmac
! определение номера последовательности и имени IPSec ISAKMP
crypto map toOFFICE2 20 ipsec-isakmp
! определение perfect forward secrecy (PFS) группы 2 (1024-bit Diffie-Hellman)
crypto map toOFFICE2 20 set pfs group2
! Трафик определенный нашим ACL который будет шифроватся через туннель
crypto map toOFFICE2 20 match address ipsec_acl
! кто будет принимать наше VPN соединение и терминировать его
crypto map toOFFICE2 20 set peer 172.16.2.1
! устанавливаем нашу схему шифрования трафика
crypto map toOFFICE2 20 set transform-set myset1
! данный туннель устанавливается на outside интерфейсе
crypto map toOFFICE2 interface outside
! задание параметров и политики IKE
! IKE будет работать на внешнем интерфейсе
isakmp enable outside
! secretkeyx - pre-shared key для шифрования с нашим удаленным peer'ом
isakmp key secretkeyx address 172.16.2.1 netmask 255.255.255.255
! использовать свой адрес для IKE идентификации с удаленным хостом
isakmp identity address
! метод аутентификации, по исвестному ключу
isakmp policy 9 authentication pre-share
! шифрование 3des
isakmp policy 9 encryption 3des
! hash алгоритм sha
isakmp policy 9 hash sha
! использование Diffie-Hellman группы 2
isakmp policy 9 group 2
! время жизни SA (security association) в секундах, 86400 = 24 часа
isakmp policy 9 lifetime 86400
! keepalive для соединения, 120 seconds = 2 минуты
isakmp keepalive 120

На этом настройка PIX закончена. Для обьяснения большинства параметров указанных выше, смотрите документацию.

Настройка Linux, на примере SLES-9 :

Использовалось стандартное ядро, поставляемое с SLES-9:

srv1:/etc/racoon # uname -a
Linux srv1 2.6.5-7.97-bigsmp #1 SMP Fri Jul 2 14:21:59 UTC 2004 i686 i686 i386 GNU/Linux
srv1:/etc/racoon # rpm -qf /boot/vmlinuz-2.6.5-7.97-bigsmp
kernel-bigsmp-2.6.5-7.97

Опции ядра linux для пересборки, если у вас ядро не поддерживает IPSEC,
необходимые для поддержки IPSEC.

-> Networking
-> Networking support (NET [=y])
-> Networking options
-> TCP/IP networking

CONFIG_INET_AH=m (IP: AH transformation)
CONFIG_INET_ESP=m (IP: ESP transformation)
CONFIG_INET_IPCOMP=m (IP: IPComp transformation)
CONFIG_INET_TUNNEL=m (IP: tunnel transformation)

-> Cryptographic options
-> Cryptographic API

включить все пункты модулями

CONFIG_CRYPTO=y
CONFIG_CRYPTO_HMAC=y
CONFIG_CRYPTO_NULL=m
CONFIG_CRYPTO_MD4=m
CONFIG_CRYPTO_MD5=y
CONFIG_CRYPTO_SHA1=m
CONFIG_CRYPTO_SHA256=m
CONFIG_CRYPTO_SHA512=m
CONFIG_CRYPTO_DES=y
CONFIG_CRYPTO_BLOWFISH=m
CONFIG_CRYPTO_TWOFISH=m
CONFIG_CRYPTO_SERPENT=m
CONFIG_CRYPTO_AES=m
CONFIG_CRYPTO_CAST5=m
CONFIG_CRYPTO_CAST6=m
CONFIG_CRYPTO_ARC4=m
CONFIG_CRYPTO_DEFLATE=m
CONFIG_CRYPTO_MICHAEL_MIC=m
CONFIG_CRYPTO_TEST=m

далее пересобираете ядро и перезагружаетесь в него.

Для установления соединения были использованы ipsec-tools-0.3.3-1.3 идущие в поставке SLES.

На момент написания статьи на сайте http://ipsec-tools.sf.net/ была доступна версия IPsec-tools 0.6.1

Настройка конфигурационных файлов /etc/racoon/ :

в файл psk.txt вы записываете ваши секретные ключи для нашего примера в данный файл необходимо добавить следующую запись:

172.16.1.1 secretkeyx

в файле setkey.conf определяются SA/SP базы (man setkey)

Содержимое:

flush;
spdflush;

# важно!
# не перепутайте направление трафика (IP адреса сетей и маршрутизаторов)
# для исходящего трафика
spdadd 192.168.0.0/24 10.0.0.0/24 any -P out ipsec esp/tunnel/172.16.2.1-172.16.1.1/require;
# для входящего трафика
spdadd 10.0.0.0/24 192.168.0.0/24 any -P in ipsec esp/tunnel/172.16.1.1-172.16.2.1/require;

конфигурационный файл для racoon — racoon.conf :

path include "/etc/racoon";
path pre_shared_key "/etc/racoon/psk.txt";
path certificate "/etc/cert";
log notify;
padding
{
maximum_length 20; # maximum padding length.
randomize off; # enable randomize length.
strict_check off; # enable strict check.
exclusive_tail off; # extract last one octet.
}
listen
{
isakmp 172.16.2.1 [500];
}
timer
{
# These value can be changed per remote node.
counter 5; # maximum trying count to send.
interval 20 sec; # maximum interval to resend.
persend 1; # the number of packets per a send.

# timer for waiting to complete each phase.
phase1 30 sec;
phase2 15 sec;
}

## IKE phase 1
remote 172.16.1.1
{
exchange_mode main,aggressive;
doi ipsec_doi;
situation identity_only;

my_identifier address 172.16.2.1;

nonce_size 16;
lifetime time 24 hour;
initial_contact on;
proposal_check obey; # obey, strict or claim

proposal {
encryption_algorithm 3des;
hash_algorithm sha1;
authentication_method pre_shared_key ;
dh_group 2 ;
}
}

## IKE phase 2
sainfo address 192.168.0.0/24 any address 10.0.0.0/24 any {
pfs_group 2; # pfs_group modp768;
encryption_algorithm 3des;
authentication_algorithm hmac_sha1;
compression_algorithm deflate;
}

Далее запускаем racoon через /etc/rc.d/init.d/racoon start или руками

# racoon -f /etc/racoon/racoon.conf

и при наличии трафика в тунеле, в логах вы увидите что-то похожее на :

Sep 21 22:07:16 sles9 racoon: INFO: respond new phase 1 negotiation: 172.16.2.1[500]<=>172.16.1.1[500]
Sep 21 22:07:16 sles9 racoon: INFO: begin Identity Protection mode.
Sep 21 22:07:16 sles9 racoon: INFO: ISAKMP-SA established 172.16.2.1[500]-172.16.1.1[500] spi:93b2202c65692650:247ac3da3bb61f85
Sep 21 22:07:16 sles9 racoon: INFO: respond new phase 2 negotiation: 172.16.2.1[0]<=>172.16.1.1[0]
Sep 21 22:07:16 sles9 racoon: INFO: IPsec-SA established: ESP/Tunnel 172.16.1.1->172.16.2.1 spi=182739187(0xae460f3)
Sep 21 22:07:16 sles9 racoon: INFO: IPsec-SA established: ESP/Tunnel 172.16.2.1->172.16.1.1 spi=14128346(0xd794da)

для проверки, на linux сервере можете подать команду :

$ ping -I 192.168.0.1 10.0.0.xx

где xx IP из офисной сети 1, любой адрес (внутренний интерфейс pix’a пинговатся не будет)

Решение проблем:

просмотр текущего состояния тунеля на PIX’e осуществляется двумя командами:

show isakmp sa
show crypto sa

 

При перезапуске или даже остановке racoon у вас возможно все-еще будет работать IPSEC VPN туннель так как используется реализация на уровне Linux ядра.

Для того чтобы перезапустить туннель на стороне PIX’a, необходимо выполнить 2 команды в _режиме конфигурации_ (conf t):

clear isakmp sa
clear crypto sa

Как только появится трафик совпадающий по ipsec acl или при его наличии, туннель должен поднятся.

Starcraft 2 на Linux

Okie dokie — so I’ve mentioned before that I play Starcraft 2 under my Linux install with no issues. Since the game’s official release a few days ago I have been getting a good bit of traffic on those two pages — so I figured I would put together a quick HOWTO for getting Starcraft 2 working on your Linux distro of choice. The game runs under Wine 1.2 and/or Crossover Games 9.1 with a small bit of work (the latter is easier to make work).

Since free is good I’ll talk about the Wine HOWTO first. First off, download and install Wine 1.2 on your system. Next, run the following commands in terminal:

cd ~/Downloads
 wget http://winezeug.googlecode.com/svn/trunk/winetricks
 chmod +x winetricks
 ./winetricks droid fontfix fontsmooth-rgb gdiplus gecko
 ./winetricks vcrun2008 vcrun2005 allfonts d3dx9 win7
 winecfg

In the configuration Window it opens go to the libraries tab and enter mmdevapi in the new override for library box and click add. Now scroll through the existing over rides list for mmdevapi click edit and set it to disabled. Finally click on the audio tab and set it to alsa.

If you still have audio issues after doing this and your distro uses Pulse Audio (Ubuntu does) install Wine 1.2 that has been built with pulse audio support with the following commands in terminal:

sudo add-apt-repository ppa:c-korn/ppa
sudo apt-get update && sudo apt-get upgrade

As of Crossover 9.1 Starcraft 2 is listed as «officially support» and as such you will find that it has an entry in the automated games installer. The only issue is that after the game has actually finished installing the StarCraft 2 process hangs around — meaning Crossover never actually knows that the game has finished installing and thusly never creates menu entries for it. Thank fully there is a simple fix for this — after Starcraft 2 has finished installing, open up your system monitor and look for any rogue Starcraft 2 processes and kill them off. After you have done this the CXGames installer will know that it has finished installing and will create the menu entries as it should.

If you have audio issues under Crossover you can open your Starcraft 2 bottle’s WineCFG, select the audio tab, and set hardware acceleration from full to emulated.

Also — if you are trying to install from the retail CD (with Wine or Crossover) you might need need to manually mount the disc due to an issue with its split PC/Mac auto mounter. To do this run the following two commands in terminal:

sudo umount /media/SC2*
sudo mount -t udf -o ro,unhide,uid=$(id -u) /dev/cdrom /media/cdrom

Note some drives may use /dev/sr0 (or other mount points) instead if /dev/cdrom. If you are having issues getting it working scroll through the comments for some good tips — if you are still unable to get it working after that, make a comment of your own 🙂

Also — if you are attempting to get the game running with an ATI card, it was suggested in the comments that making it run under a virtual desktop allows it to run on some systems it otherwise fails to work on.

I tested the above methods on Ubuntu 10.04, Linux Mint Debian, and Chakra — but they should be applicable to any modern Linux distribution. Have any issues feel free to drop a comment below and I will do my best to lend a hand debugging. Happy gaming!

~Jeff Hoogland