Установка FreeBSD 9 на ZFS.

Январь 17, 2012 at 9:18 дп (Главное)

1) Загрузите компьютер (сервер) с использованием DVD диска FreeBSD 9 или USB Flash и выберите пункт загрузочного меню «Live CD».

2) На католог /tmp установите права разрешающие запись в него (777) и перемонтируем его.

chmod 777 /tmp
umount /dev/md1
mdmfs -s 512M md1 /tmp

3) Создаём необходимые ZFS разделы диска и добавляем загрузочную запись.

a) Для простой установки:

gpart create -s gpt ada0
gpart add -b 34 -s 64k -t freebsd-boot ada0
gpart add -t freebsd-zfs -l disk0 ada0
gpart bootcode -b /boot/pmbr -p /boot/gptzfsboot -i 1 ada0

b) Если осуществляем зеркальную установку то повторяем предыдущее действие и для второго диска:

gpart create -s gpt ada1
gpart add -b 34 -s 64k -t freebsd-boot ada1
gpart add -t freebsd-zfs -l disk1 ada1
gpart bootcode -b /boot/pmbr -p /boot/gptzfsboot -i 1 ada1

4) Создаём ZFS пул.

a) Для простой установки:

zpool create zroot /dev/gpt/disk0


b) Для зеркала:

zpool create zroot mirror /dev/gpt/disk0 /dev/gpt/disk1

5) Устанавливаем опции bootfs, контрольные суммы и точки монтирования. (На этом этапе игнорируем любые сообщения кроме ошибок)

zpool set bootfs=zroot zroot
zfs set checksum=fletcher4 zroot
zfs set mountpoint=/mnt zroot


6) Экспортируем пулл zroot.cache в каталог /tmp.

zpool export zroot
zpool import -o cachefile=/tmp/zpool.cache zroot

7)Создаём соответствующие файловые системы (Если вы опытны в работе на ZFS то можете внести свои коррективы в обратном случае лучше оставить как есть):

zfs create zroot/usr
zfs create zroot/usr/home
zfs create zroot/var
zfs create -o compression=on -o exec=on -o setuid=off zroot/tmp
zfs create -o compression=lzjb -o setuid=off zroot/usr/ports
zfs create -o compression=off -o exec=off -o setuid=off zroot/usr/ports/distfiles
zfs create -o compression=off -o exec=off -o setuid=off zroot/usr/ports/packages
zfs create -o compression=lzjb -o exec=off -o setuid=off zroot/usr/src
zfs create -o compression=lzjb -o exec=off -o setuid=off zroot/var/crash
zfs create -o exec=off -o setuid=off zroot/var/db
zfs create -o compression=lzjb -o exec=on -o setuid=off zroot/var/db/pkg
zfs create -o exec=off -o setuid=off zroot/var/empty
zfs create -o compression=lzjb -o exec=off -o setuid=off zroot/var/log
zfs create -o compression=gzip -o exec=off -o setuid=off zroot/var/mail
zfs create -o exec=off -o setuid=off zroot/var/run
zfs create -o compression=lzjb -o exec=on -o setuid=off zroot/var/tmp

8) Создаём swap раздел и отключаем проверку контрольных сумм. В данном случае создаётся SWAP раздел размеров 4GB.

zfs create -V 4G zroot/swap
zfs set org.freebsd:swap=on zroot/swap
zfs set checksum=off zroot/swap

9) Создаём symlink на каталог /home и выставляем необходимые права доступа.

chmod 1777 /mnt/tmp
cd /mnt ; ln -s usr/home home
chmod 1777 /mnt/var/tmp

10) Распаковываем файлы FreeBSD 9 (по факту и есть установка).

sh
cd /usr/freebsd-dist
export DESTDIR=/mnt
for file in base.txz lib32.txz kernel.txz doc.txz ports.txz src.txz;
do (cat $file | tar --unlink -xpJf - -C ${DESTDIR:-/}); done

11) Копируем zpool.cache (Очень важно, не пропустите этот шаг)

cp /tmp/zpool.cache /mnt/boot/zfs/zpool.cache

12) Редактируем файл настроек /etc/rc.conf, /boot/loader.conf и создаём пустой /etc/fstab (если не сделать то нас пошлют на этапе загрузки системы).

echo 'zfs_enable="YES"' >> /mnt/etc/rc.conf
echo 'zfs_load="YES"' >> /mnt/boot/loader.conf
echo 'vfs.root.mountfrom="zfs:zroot"' >> /mnt/boot/loader.conf
touch /mnt/etc/fstab

13) Делаем последние штрихи.

zfs set readonly=on zroot/var/empty
zfs umount -a
zfs set mountpoint=legacy zroot
zfs set mountpoint=/tmp zroot/tmp
zfs set mountpoint=/usr zroot/usr
zfs set mountpoint=/var zroot/var

14) При умирании винта (если использовалось зеркало):

1) Инициализируем новый винт, как в пункте 3b
2) zpool online zroot ada1p2; zpool replace zroot ada1p2
3) после перестроения зеркала: zpool clear zroot

Постоянная ссылка Добавить комментарий

Проблема с кривым системным Times.

Октябрь 2, 2009 at 1:38 пп (1)

~$ sudo rm /etc/fonts/conf.d/30-urw-aliases.conf
~$ sudo rm /etc/fonts/conf.d/30-metric-aliases.conf

в ~/.fonts.conf

<fontconfig>
<match target=»pattern»>
<test qual=»any» name=»family»>
<string>Times</string>
</test>
<edit name=»family» mode=»assign»>
<string>Times New Roman</string>
</edit>
</match>
</fontconfig>

Постоянная ссылка Добавить комментарий

Как убрать tearing в mplayer.

Сентябрь 24, 2009 at 11:40 дп (1) (, , )

$ mplayer -v file.avi

using Xvideo port 97 for hw scaling

теперь запускаем xvinfo:
Adaptor #0: «Intel(R) Textured Video» port base: 97
Adaptor #1: «Intel(R) Video Overlay» port base: 113

Т.е mplayer пользует не тот порт, осталось это поправить:

mplayer -vo xv:port=113 file.avi

Постоянная ссылка Добавить комментарий

Как посмотреть кто держит устройство.

Сентябрь 24, 2009 at 10:34 дп (1)

rabid rabid # lsof /dev/snd/pcmC0D0p

COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
python2.5 11075 rabid 62u CHR 116,5 0t0 12653 /dev/snd/pcmC0D0p
python2.5 11089 rabid 62u CHR 116,5 0t0 12653 /dev/snd/pcmC0D0p

Постоянная ссылка Добавить комментарий

Добавления в debian скрипта в автозагрузку.

Октябрь 8, 2008 at 7:43 дп (Главное) (, )

В начале скрипта:

### BEGIN INIT INFO
# Provides:          defaultdaemon
# Required-Start:    $remote_fs $syslog
# Required-Stop:     $remote_fs $syslog
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Start daemon at boot time
# Description:       Enable service provided by daemon.
### END INIT INFO

После этого

update-rc.d имя defaults

Для удаления скрипта из автозагрузки

update-rc.d -f имя remove

Постоянная ссылка Добавить комментарий

debian+lighttpd+postgres+request tracker

Октябрь 8, 2008 at 4:27 дп (Главное) (, , , )

Потребовалось прикрутить багтрекер Request Tracker к lighttpd.

Приступим.

Устанавливаем lighttpd:

 apt-get install lighttpd

Request Tracker лично я ставил руками:

Качаем:

 wget http://download.bestpractical.com/pub/rt/release/rt-3.8.1.tar.gz

Далее:

 tar xzvf rt-3.8.1.tar.gz -C /tmp; cd /tmp/rt-3.8.1

По умолчанию трекер ставится в каталог /opt/rt3, использует базу в mysql и работает от пользователя www. Меня это не устраивает, так как у меня postgres, да и lighttpd работает от www-data, поэтому:

 ./configure --prefix=/usr/share/rt3 --with-db-type=Pg  --with-db-port=5432
--with-db-dba=superpg --with-web-user=www-data --with-web-group=www-data

Где superpg – пользователь postgres с правами root.

Проверяем наличие необходимых перловых модулей:

  make testdeps

У меня не оказалось почти всех, и потому:

  make fixdeps

После установки модулей, проверяем еще раз с помощью testdeps и если все хорошо:

  make install

Осталось только создать базу в postgres:

  make initialize-database

Отвечаем на вопросы скрипта и вуаля, база создана.

Редактируем /usr/share/rt3/etc/RT_SiteConfig.pm, заменив example.com на ваш домен:


Set($rtname,"example.com");
Set($Organization,"example.com");

Set($CorrespondAddress,"support@example.com");
Set($CommentAddress,"support-comment@example.com");

Set($Timezone,"Europe/Moscow");

Set($WebPath,"/rt");
Set($WebBaseURL,"http://example.com");
1;

Теперь переходим к прикручиванию трекера к lighttpd через fastcgi. Сразу оговорюсь, в поставке RT есть готовый хэндлер mason_handler.fcgi, но у меня с ним RT работать отказывался. Посему пришлось использовать модифицированную версию, взятую из вики. Вот она:

#!/usr/bin/perl
# BEGIN BPS TAGGED BLOCK {{{
#
# COPYRIGHT:
#
# This software is Copyright (c) 1996-2008 Best Practical Solutions, LLC
#
package RT::Mason;

use strict;
use vars '$Handler';
use File::Basename;

require (dirname(__FILE__) . '/webmux.pl');

# Enter CGI::Fast mode, which should also work as a vanilla CGI script.
require CGI::Fast;

RT::Init();

while ( my $cgi = CGI::Fast->new ) {
# the whole point of fastcgi requires the env to get reset here..
# So we must squash it again
$ENV{'PATH'}   = '/bin:/usr/bin';
$ENV{'CDPATH'} = '' if defined $ENV{'CDPATH'};
$ENV{'SHELL'}  = '/bin/sh' if defined $ENV{'SHELL'};
$ENV{'ENV'}    = '' if defined $ENV{'ENV'};
$ENV{'IFS'}    = '' if defined $ENV{'IFS'};

Module::Refresh->refresh if RT->Config->Get('DevelMode');
RT::ConnectToDatabase();

if ( ( !$Handler->interp->comp_exists( $cgi->path_info ) )
   && ( $Handler->interp->comp_exists( $cgi->path_info . "/index.html" ) ) )
{$cgi->path_info( $cgi->path_info . "/index.html" );}

eval { $Handler->handle_cgi_object($cgi); };
if ($@) {
   $RT::Logger->crit($@);
}
RT::Interface::Web::Handler->CleanupRequest();

}

1;

Проще всего заменить этим содержимое исходного mason_handler.fcgi, который располагается в каталоге /usr/share/rt3/bin в моем случае.

Добавим кое-какие костыли :) Для этого в /etc/lighttpd/lighttpd.conf:

откоментируем

"mod_rewrite",
"mod_redirect",
"mod_setenv",

и добавим три строчки перед server.document-root :

  fastcgi.map-extensions = ( ".css" => ".html", ".js" => ".html", "/" => ".html",
"mail-gateway" => ".html", "Search/Chart" => ".html", "Search/Results.rdf" =>
".html", "Search/Results.tsv" => ".html" )

setenv.add-environment = ("SCRIPT_NAME" => "/",)

url.rewrite-once = ("^/(?!NoAuth/images/)(.*)" => "/$1","^(.*)/
Ticket/Attachment/(.*)" => "/$1/Ticket/Attachment/$2/")

Включим поддержку fastcgi в lighttpd:

   ln -s /etc/lighttpd/conf-available/10-fastcgi.conf /etc/lighttpd/conf-enabled/

И добавим обработку файлов html, приведя /etc/lighttpd/conf-available/10-fastcgi.conf к такому виду:

   server.modules   += ( "mod_fastcgi" )

## Start an FastCGI server for php (needs the php5-cgi package)
fastcgi.server = ( ".php" =>
((
"bin-path" => "/opt/php/bin/php-cgi",
"socket" => "/tmp/php.socket",
"max-procs" => 2,
"idle-timeout" => 20,
"bin-environment" => (
"PHP_FCGI_CHILDREN" => "4",
"PHP_FCGI_MAX_REQUESTS" => "10000"
),
"bin-copy-environment" => (
"PATH", "SHELL", "USER"
),
"broken-scriptfilename" => "enable"
)),
".html" =>
   ((
        "socket"        => "/tmp/rt-fcgi.socket",
        "bin-path"      => "/usr/share/rt3/bin/mason_handler.fcgi",
        "check-local"   => "disable",
   ))
  )

Пути естественно мои, подправьте если не устраивает :)

Делаем симлинк:


ln -s  /usr/share/rt3/share/html /var/www/rt

Перезапускаем lighttpd:


/etc/init.d/lighttpd restart

Входим на трекер броузером: http://example.com/rt

Логин: root, пароль: password

Постоянная ссылка Добавить комментарий

Follow

Get every new post delivered to your Inbox.