Saturday, April 21, 2012

Linux Creating a Partition Size Larger Than 2TB

Linux GPT Kernel Support

EFI GUID Partition support works on both 32bit and 64bit platforms. You must include GPT support in kernel in order to use GPT. If you don't include GPT support in Linux kernelt, after rebooting the server, the file system will no longer be mountable or the GPT table will get corrupted. By default Redhat Enterprise Linux / CentOS comes with GPT kernel support. However, if you are using Debian or Ubuntu Linux, you need to recompile the kernel. SetCONFIG_EFI_PARTITION to y to compile this feature.
File Systems
   Partition Types
     [*] Advanced partition selection
     [*] EFI GUID Partition support (NEW)
....

Find Out Current Disk Size

Type the following command:
# fdisk -l /dev/sdb
Sample outputs:
Disk /dev/sdb: 3000.6 GB, 3000592982016 bytes
255 heads, 63 sectors/track, 364801 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000
Disk /dev/sdb doesn't contain a valid partition table

Linux Create 3TB partition size

To create a partition start GNU parted as follows:
# parted /dev/sdb
Output:
GNU Parted 2.3
Using /dev/sdb
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted)
Creates a new GPT disklabel i.e. partition table:
(parted) mklabel gpt
Sample outputs:
Warning: The existing disk label on /dev/sdb will be destroyed and all data on this disk will be lost. Do you want to continue?
Yes/No? yes
(parted)
Next, set the default unit to TB, enter:
(parted) unit TB
To create a 3TB partition size, enter:
(parted) mkpart primary 0 0
OR
(parted) mkpart primary 0.00TB 3.00TB
To print the current partitions, enter:
(parted) print
Sample outputs:
Model: ATA ST33000651AS (scsi)
Disk /dev/sdb: 3.00TB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Number  Start   End     Size    File system  Name     Flags
 1      0.00TB  3.00TB  3.00TB  ext4         primary
Quit and save the changes, enter:
(parted) quit
Sample outputs:
Information: You may need to update /etc/fstab.
Use the mkfs.ext3 or mkfs.ext4 command to format the file system, enter:
# mkfs.ext3 /dev/sdb1
OR
# mkfs.ext4 /dev/sdb1
Sample outputs:
mkfs.ext4 /dev/sdb1
mke2fs 1.41.12 (17-May-2010)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
183148544 inodes, 732566272 blocks
36628313 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=4294967296
22357 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks:
 32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
 4096000, 7962624, 11239424, 20480000, 23887872, 71663616, 78675968,
 102400000, 214990848, 512000000, 550731776, 644972544
Writing inode tables: done
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done
This filesystem will be automatically checked every 31 mounts or
180 days, whichever comes first.  Use tune2fs -c or -i to override.
Type the following commands to mount /dev/sdb1, enter:
# mkdir /data
# mount /dev/sdb1 /data
df -H

Sample outputs:
Filesystem             Size   Used  Avail Use% Mounted on
/dev/sdc1               16G   819M    14G   6% /
tmpfs                  1.6G      0   1.6G   0% /lib/init/rw
udev                   1.6G   123k   1.6G   1% /dev
tmpfs                  1.6G      0   1.6G   0% /dev/shm
/dev/sdb1              3.0T   211M   2.9T   1% /data
Make sure you replace /dev/sdb1 with actual RAID or Disk name or Block Ethernet device such as /dev/etherd/e0.0. Do not forget to update /etc/fstab, if necessary. Also note that booting from a GPT volume requires support in your BIOS / firmware. This is not supported on non-EFI platforms. I suggest you boot server from another disk such as IDE / SATA / SSD disk and store data on /data.
http://www.cybercity.biz

Saturday, April 14, 2012

Counter Strike 1.6 server Linux

Создаем директорию для нашего сервера:
mkdir /usr/hlds
cd /usr/hlds
Затем скачиваем следующие файлы:
- HldsUpdateTool:
wget http://www.steampowered.com/download/hldsupdatetool.bin
- NoSteamAuthEngines:
wget http://dig.org.ua/files/cs/engine.v15.tgz
Переходим непосредственно к установке.
1. Переходим в /usr/hlds. Запускаем hldsupdatetool.bin:
chmod +x hldsupdatetool.bin
./hldsupdatetool.bin

После запуска должен появиться файл steam.
2. Устанавливаем сервер:
./steam -command update -game valve -dir .
В зависимости от вашего интернет-подключения, установка сервера может длиться от нескольких минут, до нескольких часов (в моем случае).
3. Устанавливаем мод Counter-Strike:
./steam -command update -game cstrike -dir .
Опять же, в зависимости от вашего интернета, ждем, варим и употребляем кофе :)
Если вы собираете Steam-сервер (для лицензионных пользователей), этот текст можно пропустить. А для NoSteam-сервера (в моем случае) нам необходимо пропатчить сервер.
cd /usr/hlds/:
rm -rf engine_amd.so
rm -rf engine_i486.so
rm -rf engine_i686.so
tar xfvz engine.v15.tgz

Переходим к конфигурированию. 
Пример файла конфигурации /usr/hlds/cstrike/server.cfg:
hostname “Server Name”
mp_autokick 0
mp_autocrosshair 0
mp_autoteambalance 0
mp_buytime 2
mp_consistency 1
mp_c4timer 35
mp_fadetoblack 0
mp_falldamage 0
mp_flashlight 1
mp_forcecamera 3
mp_forcechasecam 2
mp_friendlyfire 1
mp_freezetime 3
mp_fraglimit 0
mp_hostagepenalty 0
mp_limitteams 6
mp_logfile 1
mp_logmessages 1
mp_logdetail 3
mp_maxrounds 0
mp_playerid 0
mp_roundtime 3
mp_startmoney 800
mp_timelimit 35
mp_tkpunish 0
mp_winlimit 0
sv_aim 0
sv_airaccelerate 10
sv_airmove 1
sv_allowdownload 1
sv_clienttrace 1.0
sv_clipmode 0
sv_allowupload 1
sv_cheats 0
sv_gravity 800
sv_lan 1
sv_maxrate 7000
sv_maxspeed 320
sv_maxupdaterate 101
sys_ticrate 10000
decalfrequency 60
pausable 0
log on
decalfrequency 60
edgefriction 2
host_framerate 0
exec listip.cfg
exec banned.cfg
rcon_password yourpassword
Важно для nosteam-сервера поменять значение secure в /usr/hlds/cstrike/liblist.gam c 1 на 0.
Запуск сервера
cd /usr/hlds
./hlds_run -game cstrike +ip IP.СЕРВЕРА +sv_lan 1 -nomaster +maxplayers 18 +map dm_zerstoeren

Для запуска сервера в screen:
screen -A -m -d -S hlds ./hlds_run -game cstrike +ip IP.СЕРВЕРА +sv_lan 1 -nomaster +maxplayers 18 +map dm_zerstoeren
Если вы хотите, чтобы сервер запускался автоматически при старте ОС, нужно добавить в /etc/rc.local:
cd /usr/hlds
screen -A -m -d -S hlds ./hlds_run -game cstrike +ip IP.СЕРВЕРА +sv_lan 1 -nomaster +maxplayers 18 +map dm_zerstoeren
Как патчить сошки (*.so) и как это сделать, чтобы сервер был доступен для non-steam игроков?
- Этого делать не нужно. Достаточно поставить и настроить свежую версию dlproto. Тогда на вашем сервере смогут играть как steam так и non-steam игроки, с обоими протоколами 47/48.

Не запускается сервер, что делать?
- Проверить, установлены ли права CHMOD 777 на файлы engine_ и hlds_.

Не запускается сервер с ошибкой Error:Error:libSteamValidateUserIDTickets_i386.so: cannot open shared object file: No such file or directory, либо просто связанной со словом libSteamValidateUserIDTickets_i386.so
- скачать файл libsteamvalidateuseridtickets_i386.rar [604,24 Kb] (cкачиваний: 324), разархивировать и положить его в папку /hlds.

Сервер выдает ошибку, связанную с файлом metamod_i386.so
- Выполнить в консоли следующие команды:
cd /hlds/cstrike/addons/metamod/dlls
wget http://prdownloads.sourceforge.net/metamod/metamod-1.19-linux.tar.gz?download
tar xfvz metamod-1.19-linux.tar.gz
rm -f metamod-1.19-linux.tar.gz


Wednesday, April 4, 2012

Installing daemontools on centos

$ sudo mkdir -p /package
$ sudo chmod 1755 /package/
$ cd /package/
$ sudo wget http://cr.yp.to/daemontools/daemontools-0.76.tar.gz
$ sudo tar xzf daemontools-0.76.tar.gz
$ sudo wget http://www.qmail.org/moni.csi.hu/pub/glibc-2.3.1/daemontools-0.76.errno.patch
$ cd admin/daemontools-0.76
$ sudo patch -p1 < ../../daemontools-0.76.errno.patch
$ sudo rm ../../daemontools-0.76.errno.patch ../../daemontools-0.76.tar.gz
$ sudo ./package/install
...
...
Adding svscanboot to inittab...
init should start svscan now.

Wednesday, March 14, 2012

MP4box install on centos

yum install zlib*
yum install gcc

wget http://sourceforge.net/projects/gpac/files/GPAC/GPAC%200.4.5/gpac-0.4.5.tar.gz/download
wget http://sourceforge.net/projects/gpac/files/GPAC%20extra%20libs/GPAC%20extra%20libs%200.4.5/gpac_extra_libs-0.4.5.tar.gz/download
[ me: ~ ]# tar -xzf gpac-0.4.5.tar.gz 
[ me: ~ ]# tar -xzf gpac_extra_libs-0.4.5.tar.gz 
[ me: ~ ]# cd gpac_extra_libs
[ me: gpac_extra_libs ]# cp -rf * ../gpac/extra_lib/
[ me: gpac_extra_libs ]# cd ../gpac
[ me: gpac ]# chmod +x configure 
[ me: gpac ]# ./configure 
[ me: gpac ]# make lib
If we have a problem with (make) /usr/bin/ld cannot find lglut
so 
yum install mesa-libGL-devel
yum install mesa-libGLU-devel
yum install libXi-devel
yum install libXmu-devel
yum install freeglut-devel
then:
[ me: gpac ]# make apps
[ me: gpac ]# make install lib [ me: gpac ]# make install [ me: gpac ]# cp bin/gcc/libgpac.so /usr/lib/
MP4Box -version
MP4Box - GPAC version 0.4.5 (build 33)
GPAC Copyright: (c) Jean Le Feuvre 2000-2005
                (c) ENST 2005-200X

Sunday, February 26, 2012

Установка CentOS на программный RAID1

mmПериодчески на форумах возникают вопросы о том как при установке Linux создать зеркало из двух жестких дисков и, собственно, на него установить систему. Обычно на такие вопросы даются или краткие неполные ответы или отправляют читать документацию, которая впрочем, достаточно обширна и массивна. Поэтому здесь описан небольшой пошаговый HOW-TO по данному вопросу.

1. Установка системы и создание разделов 

mmИтак, приступим. 

mmЧто мы имеем? Мы имеем компьютер с двумя одинаковыми жесткими дисками, на который требуется установить CentOS Linux 5.5. 

mmЧего мы хотим добиться от Linux и этого компьютера?
  • На этапе установки ОС, средствами Linux объеденить два жестких диска в зеркальный массив RAID1;
  • Произвести установку "пингвина" на уже готовый раздел программного массива;
  • Сделать так чтобы в случае отказа одного из жестких дисков, массив позволял загрузить систему с оставшегося в массиве диска.

mmПоскольку последний попавшийся мне на глаза топик по этому вопросу был про CentOS, то ставить будем CentOS 5.5 (в текстовом режиме). 
mmИтак, грузимся с компакт-диска, поехали: 

Уменьшено на 70% (720 x 400) - Нажмите для увеличенияИзображение

mmНа первых шагах установки параметры выбирайте по своему усмотрению, до тех пор пока не дойдете до экрана "Partitioning type":

Уменьшено на 70% (720 x 400) - Нажмите для увеличенияИзображение

mmУбедитесь что внизу, в вопросе "Which drive(s) do you want to use...?" отмечены оба жестких диска, если нет, то соответственно их нужно отметить. Дальше выбираем вариант "Create custom layout" и жмем "OK", видим два пустых диска: 

Уменьшено на 70% (720 x 400) - Нажмите для увеличенияИзображение

mmВот отсюда и начнется интересное. Жмем "NEW" и создаем раздел под систему, тип раздела указываем "software RAID", размер раздела можете указать по своему усмотрению (я решил все разместить на / и сделать его загрузочным, соответственно, размер раздела у меня равен размеру жесткого диска за вычетом 1Гб под swap): 

Уменьшено на 70% (720 x 400) - Нажмите для увеличенияИзображение

mmСледом за основным разделом, в оставшемся 1Гб свободного пространства создаем еще один раздел такого же типа:

Уменьшено на 70% (720 x 400) - Нажмите для увеличенияИзображение

mmТеперь мы имеем разделы на первом жестком диске, далее по аналогии создайте точно такие же разделы на втором винчестере (важно чтобы совпадали размеры разделов и чтоб тип у них был "software RAID"). После того как на втором диске разделы будут созданы, можно нажимать кнопку "RAID" и приступать к созданию зеркал. 

mmПервое зеркало создаем, соответственно из разделов sda1 и sdb1, точку монтирования указываем /, файловая система ext3: 

Уменьшено на 70% (720 x 400) - Нажмите для увеличенияИзображение

mmВторое зеркало создаем соответственно из sda2 и sdb2, без точки монтирования и в файловой системе указываем что это будет swap: 

Уменьшено на 70% (720 x 400) - Нажмите для увеличенияИзображение

mmВ итоге должно получиться следующее:

Уменьшено на 70% (720 x 400) - Нажмите для увеличенияИзображение

mmДалее продолжайте установку, когда инсталлятор спросит Вас куда устанавливать загрузчик grub, то у Вас будет два варианта - /dev/sda1 или /dev/md1. По умолчанию будет выбран второй вариант, хотя это пока без разницы, продолжайте далее настройку как обычно.. 

2. Первичная настройка 

mmИтак, Ваша система установилась и после первой загрузки Вы зашли в консоль под root и видите приглашение системы?
mmЗамечательно! Теперь Вы можете проверить состояние наших райдов: 

Уменьшено на 70% (720 x 190) - Нажмите для увеличенияИзображение

mmЗдесь мы видим что с обоими райдами у нас все в порядке. Теперь давайте посмотрим что у нас в настройках grub.conf: 

Уменьшено на 70% (720 x 208) - Нажмите для увеличенияИзображение

mmВ этом конфиге мы видим что системе указано выполнять загрузку с /dev/md1 (если при установке Вы указывали устанавливать загрузчик на /dev/sdaX, то соответственно конфиг будет другой), т.е. при старте система попытается загрузиться с зеркального массива. Однако, строка "root (hd0,0)" означает что из зеркала будет взят первый диск и загрузка будет произведена именно с него. Разумеется, нас это совершенно не устраивает, т.к. если первый жесткий диск выйдет из строя, система не загрузится.. Поэтому открываем в текстовом редакторе (кому как нравится, а я юзаю mc->F4, ( yum install mc)), файл grub.conf и приводим к следующему виду:

Уменьшено на 70% (720 x 298) - Нажмите для увеличенияИзображение

mmКак Вы уже наверное догадались, вторым пунктом добавлена настройка, указывающая загружать систему с того же зеркала /dev/md1, но уже со второго диска ("root (hd1,0)"). Так вот, если вдруг, не дай бог конечно, первый диск выйдет из строя, то как раз на этот случай вставлена опция "fallback=1" - в случае неудачной загрузки пункта #0 (hd0) система предпримет попытку загрузиться со следующего пункта #1 (hd1). 

mmТеперь у нас grub знает что в случае чего он может пытаться грузиться с обоих жестких дисков, однако сам загрузчик grub у нас установлен в данный момент только на первый диск (hd0). Поэтому мы должны установить загрузчик на оба жестких диска (жирным шрифтом отмечены сами команды, остальное вывод): 

Уменьшено на 70% (720 x 396) - Нажмите для увеличенияИзображение

mmТеперь проверим установлен ли пакет mdadm, и если да (у меня он установился вместе с базовой системой), то посмотрим mdadm.conf: 

Уменьшено на 70% (720 x 156) - Нажмите для увеличенияИзображение

mmДумаю с утилитой mdadm Вы сможете сами разобраться ;), впрочем, если Вы новичек в Linux, то советую с ней быть поосторожней.
На этом пока все. Если желаете проверить как система загрузится при отключенном первом диске, но, опять же, если Вы новичек то я не советую Вам этого делать самостоятельно! А здесь этот процесс я описывать не буду, пока не буду - чуть позже опишу..

3. Проверка 

mmВпрочем, если Вы таки взялись попробовать то помните: после того как Вы снова сервер выключите и подцепите диск обратно, то загрузив сервер обязательно посмотрите состояние массивов командой "cat /proc/mdstat"! Скорее всего массивы уже будут в состоянии синхронизации, это означает что данные с "уцелевшего" диска будут копироваться на вновь подцепленный диск.
mmЕсли в массивах разделы только что подцепленного диска будут отсутствовать, то их можно передобавить в массив сделующим образом:

Уменьшено на 70% (720 x 418) - Нажмите для увеличенияИзображение