2005-07-12

Нов сървър - нов "късмет"

Човек и добре да живее, все някога му се налага да прави нов сървър...

Въпреки "силната ми любов" към последните рожби на Intel (P4, "добрия им хипертрединг", производителност/цена и т.н.) пак ми се налага такъв да инсталирам... живот...

Тъй като имаме 3 диска тръгнах да пускам RAID1 (/boot) и RAID5 (all the rest). Избора софтуерен райд си е донякъде финансов, а на вградените RAID контролери грам вяра им нямам (ако се скапе дъното ще се намери ли същото за да тръгне масива). От друга страна, софтуерния RAID до момента проблем не ми е правил и яде пренебрежимо малко от 1 GHz процесор, да не говорим за настоящия 3 GHz звяр. Писането по RAID5-цата забавя (пише се по 3-те диска), но четенето е почти два пъти по-бързо отколкото от един диск (чете се едновременно от 2 диска).

Първата ми работа беше да се запозная с дъното и да видя какви възможности имам (липсата на книжка доста затрудни тази част). Оказах се с два SATA контролера с по 4 канала. Първия бе Intel 82801FR/FRW, а втория SiI 3114. След малко въртележки установих че не само че IDE DVD записвачката си "пречи" с SATA-та на определен канал. Закачих всичките дискове на SiI контролера, направих си md0 и md1, инсталирах... и... ИЗНЕНАДААА... скоростта на дисковете поотделно (hdparm -t /dev/sd{a,b,c}) е около 55 MB/sec, а на md1 (RAID5) е ... 25-30MB/sec. Лошо Коларов, лошо! След още час проби разбрах че ако сложа само 2 на SiI контролера, а другия на Intel-ския - спи града - hdparm -t /dev/md1 ~= 110 MB/sec.

Следващото нещо което ми трябваше бе да накарам boot loader-а да работи и от 2-ри и от 3-ти диск. Особеността е, че BIOS назначава на 1-то устройство логически диск 0x80 (C: за DOS запознатите) и ако grub е настроен да се 'търси' на 2-ри диск, а той се е оказал 1-ви... просто няма как да стане. Трика с grub е простичък и по-точно е:

[root@host ~] grub
...
grub> map (hd0) (hd1) # map-ни диск 2 като диск 1
grub> root (hd0,0)
Filesystem type is ext2fs, partition type 0xfd
grub> setup (hd0)Segmentation fault
[root@host ~] _

Опаа... тук нещо. Повторението на опита не доведе до по-добър резултат. Как тогава anaconda-та успя да инсталира на първия дял? Хубав въпрос... заредих -UP ядрото (това което се ползва от anaconda по време на инсталация или rescue) и... хм... мина, мина и за (hd2) - /dev/sdc. CentOS имат система а-ла bugzilla, е, и 1 бъг в повече си имат вече.

Останалата част бе скука - проба какво става като махна произволен диск, проба какво става като го върна, като ги разбъркам... ми... работи, не можах да го скапя. mdmon разпраща поща при отпадане на диск, всичко е наред - да ми е честит... (ако на някой му трябват детайли - да пита, на сън го правя вече)

ПП: Относно P4 vs i86x64 - не смятам че "Intel са глупави процесори" или нещо такова, просто че *отдавна* не са по-добрия избор.

ПП2: Винаги е хубаво да се попрочете документацията. Hotswap-а мисля да не го пробвам, но не е лошо да знаеш че го има. Превключванията на режимите не се отразиха въобще на Linux-а, все му бе тая, намира си дисковете всякак :)

ПП3: А според този тест софтуерния RAID (не фалшивия хардуерен) си е и доста по-бърз от хардуерния, наздраве ;)


Полезни връзки: http://nas.darma.com/support/hcl.html, http://linuxmafia.com/faq/Hardware/sata.html.

2005-07-10

JS/UIX

"JS/UIX is an UN*X-like OS for standard web-browsers" - не е за вярване какви чудеса има по света. Това специално изпълни ls, vi и още няколко такива безупречно. Ако скоро започнат да се търсят и администратори за web browser да не се учуди някои :) - операционна система има!

Корекция: имало и други толкова луди идеи - robin. За повече - дискусията в slashdot.

2005-07-09

FireFox / Mozilla Search Plugins [Engines]

At last, this one got fixed. Finaly I will be able to add more search engines to FF without root privlieges to install them system wide.

Don't get me wrong, Mozilla and Firefox are the best available browsers (at least for now) but they have some annoying bugs. This one was opened at 2002-02-04 and fiexd at 2005-06-29 (still no official version with the fix), was not this way too long?

2005-07-03

udev

If someone told me this before I would not belive him, but look how simple it is (Kernel Trap: Linux: ndevfs - a "nano" devfs)

find /sys/block /sys/class -name dev -printf '%h\n' | while read d; do
n=${d//*\//}
i=$(<$d/dev)
mknod $n ${d:5:1} ${i/:/ }
done

... I really *have to* take a closer look at udev and hotplug ...


PS: Don't think I ever prefered devfs, I just can't belive how good the design is.

2005-06-26

Ethernet Bridge with Linux

В къщи си имаме 3 машини, като едната е с три мрежови карти (всъщност са четири и няма място за петата). Какво да правя, като Intel Pro 100 са ми любими, RealTec не са лоши, 3COM-а е стара като света, бавна но стабилна като скала... е как да се разделя с тях, а? Моята машина е жива 99% от времето (освен като спре тока) а двете други машини ползват и Windows. При тази ситуация закупуването на switch/hub ми се струва разточителство - Ethernet Bridge е достатъчно добро решение.


Как става това с Fedora/RH/CentOS? Ами... лесно. Ако имаме 2 интерфейса, eth1 и eth2, за включване в br0 то конфигурацията се записва в /etc/sysconfig/network-scripts/ifcfg-br0 и изглежда така:

# Please read /usr/share/doc/initscripts-*/sysconfig.txt
# for the documentation of these parameters.
DEVICE=br0
TYPE=Bridge
BOOTPROTO=none
ONBOOT=yes
IPADDR=192.168.0.254
NETMASK=255.255.255.0
NOZEROCONF=YES # you might need this!
DELAY=0 # set bridge forward delay

Конфигурациите на eth1 и eth2 се променят да нямат IP адреси (дори да имат, пак работи) и да се укаже към кой bridge принадлежат, примерно за eth1:


DEVICE=eth1
BOOTPROTO=none
ONBOOT=yes
TYPE=Ethernet
BRIDGE=br0 # This is the important part ;)

... и ако всичко е наред, след 'service network restart' вече имате работещ интерфейс br0:

[root@fc ~]# ip addr list dev eth1; ip addr list dev eth2; ip addr list dev br0; brctl show
3: eth1: mtu 1500 qdisc pfifo_fast qlen 1000
link/ether 00:d3:b7:18:aa:7a brd ff:ff:ff:ff:ff:ff
4: eth2: mtu 1500 qdisc pfifo_fast qlen 1000
link/ether 00:50:ba:18:ab:fc brd ff:ff:ff:ff:ff:ff
5: br0: mtu 1500 qdisc noqueue
link/ether 00:d1:b7:26:82:02 brd ff:ff:ff:ff:ff:ff
inet 192.168.0.1/24 brd 192.168.0.255 scope global br0
bridge name bridge id STP enabled interfaces
br0 8000.00d1b7268202 no eth1
eth2

2005-06-23

Петрич

Днес съм в Петрич. Хубава природа, приятно време... и доста работа. Не се оплаквам, много, но ще се наложи да се занимавам и с Windows-и и... не съм особено вдъхновен. Knoppix is my best friend в такива случаи.

Гледайки природата наоколо все повече си мисля, че трябва да взема да послушам колегите и да си вдигна мързеливия задник с тях малко из планината. Компютрите са хубаво нещо, но май аз лично попрекалявам с тях :)

ПП: Не ме разбирайте погрешно, обичам разходките из планината, но рядко/трудно се оказвам на такава...

2005-06-22

j2me_wtk

Днес се измъчих с таз джаджа. java-1.5.0-sun беше лесно - nosrc.rpm от http://www.jpackage.org/, малко лутане из сайта на sun, rpmbuild --rebuild и запя (хубаво нещо са alternatives ot chkconfig-а). За j2me_wtk обаче пакет няма. Намерих само един стар спецификационен файл в листата на jpackage. В новата версия (2.2) се оказа че има preverify1.0 и preverify1.1 в добавка към preverify, е, може и да съм изтървал някое друго допълнение. Получи се следния spec файл:

# based on https://www.zarb.org/pipermail/jpackage-discuss/2005-February/007127.html
Name: wtk2
Version: 2.2.01
Release: 0.0.jpp.0

Summary: Sun J2ME Wireless Toolkit
Group: Development/Java

License: Sun Microsystems Inc. Binary Code Agreement
URL: http://java.sun.com/developer/releases/j2mewtoolkit/
#http://java.sun.com/products/sjwtoolkit/download-2_2.html

#Source0: j2me_wireless_toolkit-1_0_4_01-bin-linuxi386.bin
Source0: j2me_wireless_toolkit-2_2-linux-i386.bin
NoSource: 0

BuildArch: i586
BuildRoot: %{_tmppath}/%{name}-%{version}-root

#BuildRequires: jpackage-utils >= 1.5
BuildRequires: jpackage-utils >= 1.6.3
#Requires: java-devel >= 1.3

%description
The Java 2 Platform, Micro Edition (J2ME) Wireless Toolkit is a
state-of-the-art toolbox for developing wireless applications that are based on
J2ME's Connected Limited Device Configuration (CLDC) and Mobile Information
Device Profile (MIDP), and designed to run on cell phones, mainstream personal
digital assistants, and other small mobile devices. The toolkit includes the
emulation environments, performance optimization and tuning features,
documentation, and examples that developers need to bring efficient and
successful wireless applications to market quickly.

%package demos
Summary: MIDP demos
Group: Development/Demos

%description demos
A collection of MIDP demos

%package javadoc
Summary: Wireless Toolkit javadoc
Group: Development/Documentation

%description javadoc
API documentation for the Wireless Toolkit

%prep
rm -fr %{name}-%{version}
mkdir %{name}-%{version}
cd %{name}-%{version}

# Looking at the shell script at the begining of the binary...
dd if=%{SOURCE0} of=j2me-linux.zip bs=1k skip=20
unzip -q j2me-linux.zip
chmod -R go=u-w *
chmod -R u+w *

%build
# nothing
# TODO: Would be good to remove some +x flags here (from jars for example)

%install
[ $RPM_BUILD_ROOT != "/" ] && rm -fr $RPM_BUILD_ROOT
cd %{name}-%{version}

mkdir -p $RPM_BUILD_ROOT%{_datadir}/%{name}-%{version}
cp -a * $RPM_BUILD_ROOT%{_datadir}/%{name}-%{version}

mkdir -p $RPM_BUILD_ROOT%{_javadocdir}
mv $RPM_BUILD_ROOT%{_datadir}/%{name}-%{version}/docs/api $RPM_BUILD_ROOT%{_javadocdir}/%{name}-%{version}

mkdir -p $RPM_BUILD_ROOT%{_docdir}
mv $RPM_BUILD_ROOT%{_datadir}/%{name}-%{version}/docs $RPM_BUILD_ROOT%{_docdir}/%{name}-%{version}
mv $RPM_BUILD_ROOT%{_datadir}/%{name}-%{version}/*.html $RPM_BUILD_ROOT%{_docdir}/%{name}-%{version}
#mv $RPM_BUILD_ROOT%{_datadir}/%{name}-%{version}/*.css $RPM_BUILD_ROOT%{_docdir}/%{name}-%{version}

rm $RPM_BUILD_ROOT%{_datadir}/%{name}-%{version}/*.zip

%clean
rm -fr %{name}-%{version}
[ $RPM_BUILD_ROOT != "/" ] && rm -fr $RPM_BUILD_ROOT

%post
# A bit of alternative magic :)
alternatives \
--install %{_datadir}/wtk wtk %{_datadir}/%{name}-%{version} $(echo %{version} | sed -e 's/\.//g') \
--slave %{_bindir}/defaultdevice defaultdevice %{_datadir}/%{name}-%{version}/bin/defaultdevice \
--slave %{_bindir}/emulator emulator %{_datadir}/%{name}-%{version}/bin/emulator \
--slave %{_bindir}/ktoolbar ktoolbar %{_datadir}/%{name}-%{version}/bin/ktoolbar \
--slave %{_bindir}/prefs prefs %{_datadir}/%{name}-%{version}/bin/prefs \
--slave %{_bindir}/preverify preverify %{_datadir}/%{name}-%{version}/bin/preverify \
--slave %{_bindir}/runmidlet runmidlet %{_datadir}/%{name}-%{version}/bin/runmidlet \
--slave %{_bindir}/utils utils %{_datadir}/%{name}-%{version}/bin/utils \
--slave %{_bindir}/zayit zayit %{_datadir}/%{name}-%{version}/bin/zayit \

%preun
alternatives --remove wtk %{_datadir}/%{name}-%{version}

%files
%defattr (-,root,root)
%doc %{_docdir}/%{name}-%{version}
%{_datadir}/%{name}-%{version}/appdb
%{_datadir}/%{name}-%{version}/bin
%{_datadir}/%{name}-%{version}/lib
%{_datadir}/%{name}-%{version}/sessions
%{_datadir}/%{name}-%{version}/wtklib

%files demos
%defattr (-,root,root)
%{_datadir}/%{name}-%{version}/apps

%files javadoc
%defattr (-,root,root)
%{_javadocdir}/%{name}-%{version}

%changelog
* Wed Jun 22 2005 Doncho Gunchev <gunchev at gmail.com> 2.2.01-0.0.jpp.0
- update the version
- minor fix with 'no more .css' at root archive dir
- add preverify10 and preverify11 to alternatives

* Wed Feb 16 2005 Lyle Dietz <dietzla at tsgpacific.com.au> 1.0.4.01-0.0.jpp.0
- Initial RPM version

Това ми е първия java пакет (в който съм си врял носа) и сигурно е голяма каша, но работи.

SUN доста ме разочароваха... как може ktoolbar да се опитва да си записва настройките в директорията в която му се намира изпълнимия файл, или да се опитва там да прави някакви .lock файлове за com портове до колкото разбрах? Те и от mozilla не са много на ти с UNIX-а /custom search engines/, обаче тези хич не са... Ако ми остане време, или по-скоро ми се наложи да го направя, ще взема да разгледам не мога ли някак да го поизлъжа това чудо.

ПП: Примерен мидлет - http://www.devx.com/tips/Tip/20098.

2005-06-21

kkbswitch

В lug-bg един ден научих за kkbswitch и от тогава ми е любимо приложение за превключване на клавиатурната подредба под X (KDE, XFCE4, Gnome). С преминаването на Fedora Core 4 /online, с yum upgrade ;-)/ се наложи да го прекомпилирам. Приятната изненада бе, че rpmbuild -ta kkbswitch*.tar.gz върши чудесна работа. В xorg.conf аз ползвам следнте редове:

...
Section "InputDevice"
...
Option "XkbLayout" "us,bg"
Option "XkbVariant" ",phonetic"
Option "XkbOptions" "grp:alt_shift_toggle,grp_led:scroll"
EndSection

... и се чуствам щастлив превключвайки си с Alt-Shift, както в "доброто старо време", при това с културна индикация в лентата (tray, превода нещо ми куца, срамота!)...

2005-06-18

Нов blog, нова проба :)

По някога човек неочаквано намира полезни неща из Интернет... примерно:


rpm-openpgp-1.html
rpm-openpgp-2.html
rpm-openpgp-3.html
Какво трябва да знаем за RPM

благодарение а Сава Чанков в lug-bg. Като добавка - Maximum RPM.