% Linuxov� noviny, ��slo 8, kv�ten 1998
% (c) 1998 Pavel Jan�k ml. <Pavel.Janik@linux.cz>
% sazba: Ond�ej V�cha <Ondrej.Vacha@cstug.cz>
% p�evod do�HTML: Pavel Juran <XJURAN@cs.felk.cvut.cz>
% p�eklady: Hanu� Adler <had@pdas.cz>
% jazykov� korektor: Bohumil Chalupa <bochal@met.mff.cuni.cz>

% makro \oblom zde pou�it� je p�evzato z~knihy
% Petra Ol��ka: TeXbook naruby, str. 236-237


\input ln.sty

\mesic{Kv�ten 1998}
\cislo{04/98}

\hlavicka

\section{�vodem}

\autor{Pavel Jan�k ml., 16. kv�tna 1998}

Spole�nost Corel Computer \citeurl{Corel
Computer}{http://www.corelcomputer.com} m� na�sv� �vodn� str�nce tu���ka.
Datab�ze Interbase \citeurl{Interbase pro Linux}{http://www.interbase.com}
je k~dispozici pro Red Hat Linux~4.2, datab�ze Ingres
\citeurl{Computer Associate -- Ingres}{http://www.ingres.com} byla portov�na
na Linux, Linus zve�ejnil Linux verze 2.1.102. Tak tohle jsou nezaj�mav�j��
novinky m�s�ce kv�tna.

\Stahni0.8
V~kv�tnov�m ��sle Linuxov�ch novin si m��ete p�e��st o~v�sledc�ch
sout�e z~minul�ho ��sla \ref{soutez} a~tak� o~tom, jak si Pavel
Ka�kovsk� poradil se zad�n�m sout�e.

Milan Ker�l�ger n�s detailn� sezn�m� s~konfigurac� IPX \ref{ipx}
a~s~programy Linware a~Mars \ref{mars}. Michal Pol�k m�l k~dispozici
druh� vyd�n� knihy Linux --- Internet Server, a~tak n�m o~tom n�co
napsal v~�l�nku \ref{linuxinetserver}. 

Samoz�ejm� nechyb� ji� pravideln� rubriky \ref{cola}, \ref{sunsite},
\ref{lj} a~\ref{zasmali}. Nav�c v~kv�tnov�m ��sle op�t naleznete zaj�mavou
sout� v~�l�nku \ref{cokdyby}.\KC
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%\vskip-\bas
\section{Nejmen�� vyhr�v�}
\label{soutez}

\autor{Pavel Jan�k ml., 9. kv�tna 1998}

\Stahni0.7
V~minul�m ��sle Linuxov�ch novin byla vyhl�ena sout� o~nejmen��
spustiteln� program ve�form�tu ELF. Sout�e se z��astnilo sedm state�n�ch,
jejich� programy naleznete na�stejn�ch m�stech jako Linuxov� noviny. V�t�zem
se stal Pavel Juran (mimochodem autor HTML podoby Linuxov�ch novin), jeho�
implementace p��kazu {\tt true} m� velikost cel�ch 57 byt�. Pavel Ka�kovsk�
zvolil jin� postup --- implementoval program, kter� vrac� po�et zadan�ch
argument� na�p��kazov� ��dce. Pokud m�te z�jem o~mini shell, jist� v�s
uspokoj� program Milana Kopa�ky. Jeho {\tt smallsh} m� velikost 3176 bajt�.
Velikosti sout�n�ch program� naleznete v~tabulce.

\vfil
% Tabulka = mezi hlavi�kou a~t�lem tabulky siln�j�� ��ra
%\begin{table}
$$\BeginTable
\BeginFormat
| l | c | .
\_
| Jm�no | Velikost v~bytech | \\
\_4
| Pavel Juran | 57 | \\
\_
| Pavel Ka�kovsk� | 60 | \\
\_
| Martin Mare� | 72 | \\
\_
| Stanislav Meduna | 124 | \\
\_
| Radovan Garab�k | 368 | \\
\_
| Henryk Paluch | 794 | \\
\_
| Milan Kopa�ka | 3176 |\\
\_
\EndTable
$$
%\caption{V�sledky sout�e}
%\label{souteztabulka}
%\end{table} 
\vfil
\eject

Sout�e se z��astnil i~Martin Mare�. Kdo sly�el jeho p�edn�ku
na�Linuxov�m semin��i na�Cikh�ji, jist� si nenech� uj�t zdrojov� text
jeho p��sp�vku --- a~dob�e ud�l�\ldots

V�echny p��sp�vky mohou b�t ���eny za�podm�nek licence GNU GPL. T�eba se
najde n�kdo, kdo bude cht�t vyrobit n�jakou mini-distribuci.

Douf�m, �e se v�m sout� l�bila a~�e sout�e, kter� je vyps�na v~tomto ��sle
Linuxov�ch novin, se z��astn� v�ce �ten���.\KC

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\section{M�s�c v~comp.os.linux.announce}
\label{cola}

\autor{Pavel Jan�k ml., 1. kv�tna 1998}

Spole�nost Dynamical Systems, Ltd. uve�ejnila prvn� verzi sv�ho
produktu readyBase, dynamicky roz�i�iteln� datab�zov� knihovny s~API
pro C, Perl a~Javu. Knihovna je k~dispozici pro Linux (Intel), Solaris
(SPARC, Intel) a~IRIX. T�icetidenn� demoverze je k~m�n� na
adrese \citeurl{readyBase demo}{http://www.dynamical-systems.com}.

Olaf Titz (olaf@bigred.inka.de) uvolnil dal�� verzi bal�ku {\tt cipe},
kter� umo��uje kryptovat IP tunnel. {\tt cipe} funguje na�principu
pos�l�n� kryptovan�ch UDP paket�, ale bohu�el nen� kompatibiln�
s~IPSEC. Tohoto bal�ku m��ete s~v�hodou pou��t p�i budov�n� VPN
\emph{Virtual Private Networks}. Bli��� informace naleznete na
adrese \citeurl{CIPE 0.5.6}{ftp://ftp.inka.de/sites/bigred/sw}.

Bal�k TEItools, jeho� autorem je Boris Tobotras (tobotras@jet.msk.su),
zjednodu�uje pr�ci se SGML dokumenty a~umo��uje z~jednoho zdrojov�ho
textu generovat HTML, RTF, PostScript i~PDF. Dal�� informace naleznete
na�adrese \citeurl{TEItools}{http://xtalk.price.ru/SGML/TEItools}.

7. dubna vy�lo tiskov� prohl�en� sdru�en� XFree86 ke�zm�n� licen�n�ch
podm�nek referen�n� implementace (SI --- \emph{Sample Implementation})
standardu X11R6.4 spole�nosti TOG (\emph{The Open Group}). Kompletn�
zpr�vu si m��ete p�e��st na
adrese \citeurl{XFree86}{http://www.xfree86.org/}.

Pokud postr�d�te na�sv�m Linuxu BASIC, nezoufejte a~pod�vejte se
na�adresu \citeurl{Linux
BASIC}{ftp://ftp.demon.co.uk/pub/unix/linux/apps/misc}. Naleznete zde
PC Linux BASIC, dob�e dokumentovan� (manu�l m� 76 str�nek) p�eklada�
jazyka BASIC. Autorem p�eklada�e je Mike Maddock
(mike@lostboy.demon.co.uk).

1. dubna vy�lo ji� 27. ��slo Linux Gazette \citeurl{Linux
Gazette}{http://www.linuxgazette.com/}. Kompletn� ��slo je k~dispozici
na�adrese \citeurl{Linux Gazette FTP
server}{ftp://ftp.ssc.com/pub/lg/}.

H. J. Lu (hjl@lucon.org) ozn�mil vytvo�en� bin�rek p�eklada�e {\tt
egcs} verze 1.0.2. V�ce informac� z�sk�te na�adrese \citeurl{Egcs
1.0.2}{http://egcs.cygnus.com}.

Owen Taylor (otaylor@gtk.org) ozn�mil 16. dubna, �e je na�sv�t� dlouho
o�ek�van� verze 1.0.0 knihovny {\tt gtk+}. Kompletn� informace
naleznete na�adrese \citeurl{Gtk+}{http://www.gtk.org/}.

22. dubna byla uvoln�na dal�� betaverze (tentokr�te u� �tvrt�)
KDE \citeurl{The K~Desktop Environment}{http://www.kde.org} (\emph{The
K~Desktop Environment}).

Andries Brouwer (Andries.Brouwer@cwi.nl) zve�ejnil dal�� verzi
prohl��e�e manu�lov�ch str�nek --- programu {\tt man}. Verzi 1.5c
naleznete na�adrese \citeurl{Man
1.5c}{ftp://ftp.win.tue.nl/pub/linux/util}. Andries tak� den pot�
uvolnil dal�� verzi bal�ku manu�lov�ch str�nek --- {\tt
man-pages-1.19}, kterou naleznete na�adrese \citeurl{Man-pages
1.19}{ftp://ftp.win.tue.nl/pub/linux/man}.\KC
 
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 
\section{Linux Journal}
\label{lj}
 
\autor{Pavel Jan�k ml., 5. kv�tna 1998}
 
% Obrazek LinuxJournal.png
\ObrLogo{LinuxJournal}%
Dubnov� ��slo �asopisu Linux Journal \citeurl{Linux
Journal}{http://www.linuxjournal.com}, kter� je vyd�v�n vydavatelstv�m
Specialized Systems Consultants, Inc. (SSC) \citeurl{Specialized
Systems Consultants, Inc.}{http://www.ssc.com}, je zam��eno na�r�zn�
uplatn�n� opera�n�ho syst�mu Linux v~praxi.

Cliff Seruntine n�m p�edstav� Linux z~jin� st�nky, ne� jej
zn�me. Sezn�m� n�s s~mo�nostmi jak a~pro� vlastn� Linux prod�vat.
Dal��m �l�nkem, kter� se tematicky zab�v� nasazen�m Linuxu v~praxi,
je �l�nek Rogera S.~Flugela o~Linuxu jako v�po�etn�m syst�mu
v~l�ka�sk� laborato�i. Ale Linux se nepou��v� jen v~akademick�
oblasti. �l�nek Dmitrie Komarova o~Linuxu ve�vl�dn�ch ��adech Litvy je
toho d�kazem. Autor pou��v� hlavn� {\tt dosemu} a~{\tt mars\_nwe} pro
emulaci NetWare serveru.

\begin{quote}
I've found running the application from dosemu on Linux is more stable
than running it from Windows 3.11.\\
\linka
Spou�t�n� aplikac� z~dosemu je stabiln�j�� ne� jejich spou�t�n� pod
Windows 3.11
\end{quote}
 
Jon Davis a~jeho kolegov� pou��vaj� Linux pro ovl�d�n� hardwarov�ho
vybaven�. Dokonce si pro sv� experimenty vytvo�ili i~vlastni
integrovan� v�vojov� prost�ed�.

Z~recenz�, kter� jsou v~dubnov�m ��sle Linux Journalu, se mi jako
nejzaj�mav�j�� jev� �l�nek o~textov�m procesoru WordPerfect 7.0. Dal��
z~recenz� je zam��ena na�program�torsk� editor Visual SlickEdit, kter�
umo��uje spoustu v�c�, podobn� jako nap�. editor Emacs.

Jedn�m z~prvn�ch komer�n�ch program� pro Emacs je spell checker
TeraSpell 97, jeho� recenzi si m��ete v~dubnov�m ��sle tak� p�e��st.

Pravd�podobn� nejzaj�mav�j��m �l�nkem (alespo� pro mne) je �vod do
psan� driver� v~Linuxu. Autorem �l�nku je Fernando Mat�a. Jedinou
stinnou str�nkou je ov�em pou�it� verze j�dra, na�kter� jsou v�echny
p��klady ukazov�ny (2.0.24).

Dal�� �l�nek mne pon�kud zasko�il. Kdybych jej toti� �etl o~jeden �i
dva dny d��ve, jist� by se hodnocen� m� p�semn� pr�ce z~p�edm�tu
\uv{Firemn� finance} pon�kud zv��ilo\ldots{} James Shapiro mi toti�
uk�zal, jak v~Perlu, v~C a~Jav� napsat program, kter� po��t�
\emph{Internal Rate of Return}, tedy \emph{vnit�n� v�nosov�
procento}. Jedn� se o~jednoduch� probl�m, na�kter�m autor n�zorn�
demonstruje v�hody a~nev�hody jednotliv�ch jazyk�.

Mezi dal��mi �l�nky nalezneme �vod do�programov�n� CORBA (\emph{Common
Object Request Broker Architecture}), interview s~viceprezidentem
spole�nosti Corel Corporation, �vod do�pou��v�n� p��kazu {\tt imake}
apod.

Velice zaj�mav� je tak� �l�nek Erica S.~Raymonda o~uvoln�n� zdrojov�ch
text� prohl��e�e Netscape a~o~free softwaru (resp. Open Source) v�bec.

V~Linux Journalu najdeme nav�c i~recenze dvou nov�ch knih
nakladatelstv� Prentice Hall --- \emph{Protecting Your Web Site with
Firewalls} a~\emph{Practical Programming in Tcl\&Tk}.\KC

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\section{Co se stane, kdy�}
\label{cokdyby}

\autor{Pavel Jan�k ml., 2. kv�tna 1998}

M�s�c uplynul jako voda a~m�me tu dal�� sout� v~Linuxov�ch
novin�ch. Ta minul� byla pon�kud techni�t�ji zam��ena, a~proto bude
nov� sout� leh��ho charakteru, aby se mohli z��astnit v�ichni. Op�t
se bude hr�t o~knihu v�novanou nakladatelstv�m Neokortex,
spol. s~r.~o. \citeurl{Neokortex, spol. s~r.~o.}{http://www.neo.cz}.
Tentokr�te o~knihu \emph{Apache a~PHP/FI 2.0}, jej�� recenzi jste si
mohli p�e��st v~minul�m ��sle Linuxov�ch novin.

A~nyn� k~vlastn� sout�i. P�ed chv�l� jsem si �etl zaj�mavou liter�rn�
�vahu na�t�ma \uv{Co se stane, kdy�}, kter� skon�ila t�m, �e si
vlastn� tuto ot�zku nem�me pokl�dat\ldots{} Tato �vaha mne inspirovala
k~tomu, abych si polo�il n�sleduj�c� ot�zku: \uv{Co se stane, kdy�
spole�nost Microsoft uvoln� zdrojov� k�dy opera�n�ho syst�mu
Windows?}. A~proto�e jsem nenalezl uspokojivou odpov��, tak tut�
ot�zku pokl�d�m v�m, �ten���m Linuxov�ch novin. Va�e odpov�di o�ek�v�m
jako v�dy na�adrese \citeurl{Redakce Linuxov�ch
novin}{mailto:noviny@linux.cz} se subjectem \uv{LN: Soutez} (bez
uvozovek). Uz�v�rka sout�e je op�t v~den uz�v�rky dal��ho ��sla
Linuxov�ch novin, tedy 9. �ervna tohoto roku, a~v�sledky budou ozn�meny
v~�ervnov�m ��sle Linuxov�ch novin.

Nejvtipn�j�� odpov�di budou zve�ejn�ny v~rubrice \uv{Zasm�li jsme se}
a~ta opravdu jedine�n� bude ocen�na zm�n�nou knihou.\KC

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\vfil\eject

\section{Jak jsem p�stoval trpasl�ky}
\label{trpaslici}

\autor{Pavel Ka�kovsk�, 7. kv�tna 1998}

% �katulky pro form�ty hlavi�ek
% nejsem ��dn� expert na�TeX, tak�e mne nebijte do�hlavy
\def\byteskip{\hskip1em}
\def\bytebox#1{\vbox{%
	\hrule
	{\hbox{\vrule height 1em #1 \byteskip \vrule height 1em}}
	\hrule}}
\def\tick{\byteskip\vrule height .2em}
\def\byte{\bytebox{}}
\def\word{\bytebox{\tick}}
\def\dword{\bytebox{\tick\tick\tick}}

\removesubsectionskip

\subsection{Slovo na��vod}

V~dubnov�m ��sle Linuxov�ch novin byla vyhl�ena sout� o~nejmen��
soubor spustiteln� pod Linuxem. Kdy� jsem se dozv�d�l, �e program m��e
d�lat �pln� cokoli, je-li to dob�e definov�no, zaujalo mne to a~tak�
jsem se z��astnil.

\subsection{Smr��ov�n� k�du}

Nejd��ve jsem si polo�il ot�zku: \emph{Jak� je nejmen�� mo�n� k�d
(bez hlavi�ek a~podobn�ho smet�), kter� je�t� pod Linuxem d�l� n�co
smyslupln�ho?}  Je z�ejm�, �e takov� program napsan� v~jazyce C by
vypadal nap��klad takto:

\begin{verbatim}
   int main()
   {
      return 0;
   }
\end{verbatim}
\noindent
to jest ned�l� nic jin�ho, ne� �e skon��.

Ov�em takov� program je ve�skute�nosti obalen k�dem knihovny, kter� po
n�vratu z~funkce {\tt main()} vol� funkci {\tt exit()}, kter� pak vol�
stejnojmen� syst�mov� vol�n�, kter� ukon�� �ivot procesu. Co� znamen�,
�e program je mo�no \uv{zjednodu�it} takto (p��padn� varov�n�
p�eklada�e, �e nezn� n�vratovou hodnotu, budeme ignorovat):

\begin{verbatim}
   #include <syscall.h>
   int main()
   {
      syscall(SYS_exit, 0);
   }
\end{verbatim}

Nyn� mus�me vol�n� funkce (resp. makra) {\tt syscall()} \uv{rozlo�it
na�prvo�initele}.  Nahl�dneme do�souboru {\tt
/usr/include/asm/unistd.h} a~pod�v�me se, jak se prov�d� vol�n� j�dra
na�procesorech Intel (viz v�pis \ref{syscall}).

% V�pis
\begin{figure}[dt]
\begin{verbatim}
   #define _syscall1(type,name,type1,arg1) \
      type name(type1 arg1) \
      { \
         long __res; \
         __asm__ volatile ("int $0x80" \
                         : "=a" (__res) \
                         : "0" (__NR_##name),"b" ((long)(arg1))); \
         if (__res >= 0) \
            return (type) __res; \
         errno = -__res; \
         return -1; \
      }
\end{verbatim}%$
\caption{Vol�n� j�dra na�procesorech Intel}
\label{syscall}
\end{figure}

Pon�kud kryptick�, nen�-li� pravda? Nicm�n� cvi�en� oko odhal�, �e je
vhodn� nastavit registr {\tt eax} na���slo syst�mov�ho vol�n� (v~na�em
p��pad� je to ��slo 1), registr {\tt ebx} nastavit na�hodnotu
argumentu tohoto vol�n� (tedy nulu) a~vyvolat p�eru�en� ��slo 0x80.

Nyn� ji� opus�me (relativn�) pohostinn� kon�iny jazyka C a~p�epi�me
cel� program do�assembleru (neboli \uv{jazyka symbolick�ch adres} pro
p��tele star�ch po��dk�):

\begin{verbatim}
   .text
   .globl _start
   _start:
      mov     $1, %eax
      mov     $0, %ebx
      int     $0x80
\end{verbatim}%$

Takov� program se u� obejde bez podpory podobn�ch zbyte�nost�, jako
jsou knihovny, tak�e u� nebudeme ani p�edst�rat n�jakou funkci {\tt
main()} a~rovnou definujeme symbol {\tt \_start} (a~u�et��me si jeden
parametr p�i vol�n� linkeru, nebo� {\tt \_start} je implicitn� n�zev
vstupn�ho bodu programu, kter� se oby�ejn� nach�z� v~{\tt
/usr/lib/crt1.o}).

N� zdrojov� text nazveme nap��klad {\tt program.s} a~p�elo��me
p��kazem {\tt cc -c program.s}. V�sledkem bude n�sleduj�c�ch 12 bajt�
strojov�ho k�du ({\tt objdump --disassemble --show-raw-insn
program.o}):

\begin{verbatim}
00000000 <_start>   b8 01 00 00 00  movl $0x1,%eax
00000005 <_start+5> bb 00 00 00 00  movl $0x0,%ebx
0000000a <_start+a> cd 80           int  $0x80
\end{verbatim}%$

Je vid�t, �e zna�n� rezervy jsou v~nastaven� obou registr�: 10 bajt�
se zd� b�t zna�n�m pl�tv�n�m prostorem. Assemblerov� expert by k�d
upravil nap��klad takto:

\begin{verbatim}
   .text
   .globl _start
   _start:
      xor     %eax, %eax
      mov     %eax, %ebx
      inc     %eax
      int     $0x80
\end{verbatim}%$
co� vytvo�� n�sleduj�c�ch 7 bajt� k�du:

\begin{verbatim}
00000000 <_start>   31 c0  xorl %eax,%eax
00000002 <_start+2> 89 c3  movl %eax,%ebx
00000004 <_start+4> 40     incl %eax
00000005 <_start+5> cd 80  int  $0x80
\end{verbatim}%$

Ale to je�t� nen� konec! Ukazuje se (a~lze to ov��it nahl�dnut�m do
zdrojov�ch text� j�dra), �e registr {\tt eax} je ji� p�i vstupu do
programu vynulov�n --- jako by doch�zelo k~�sp�n�mu n�vratu ze
syst�mov�ho vol�n� {\tt execve()}. Proto lze vynechat prvn�
instrukci. Nutn�m p�edpokladem ov�em je, �e n� k�d je skute�n� to
prvn�, co bude vykon�no, nikoli dynamick� linker nebo n�co podobn�ho,
proto je ��douc� p�i linkov�n� pou��vat parametr {\tt -static}.

Nyn� lze p�istoupit k~z�ejm� ji� definitivn� posledn� optimalizaci:
nastaven� registru {\tt ebx} spot�ebov�v� dva bajty. Tomu se jen t�ko
lze vyhnout, m�-li m�t nulovou (nebo jedni�kovou) hodnotu, nicm�n�
zad�n� vy�aduje, aby m�l hodnotu \uv{dob�e definovanou}. Inici�ln�
hodnota p�i spu�t�n� tuto podm�nku bohu�el --- narozd�l od registru
{\tt eax} --- nespl�uje. Na�t�st� je jedna vhodn� hodnota hned po ruce:
jedn� se o~po�et argument� programu (zn�m� pod p�ezd�vkou {\tt argc}),
kter� je j�drem ulo�en na�samotn� vrchol z�sobn�ku. N� program je
tedy mo�n� zkr�tit na�t�i instrukce zv�ci pouh�ch {\bf �ty�} bajt�:

\begin{verbatim}
   00000000 <_start>   40     incl   %eax
   00000001 <_start+1> 5b     popl   %ebx
   00000002 <_start+2> cd 80  int    $0x80
\end{verbatim}%$
neboli ve�zdrojov� form� (kter� je te� pro zm�nu uvedena jako druh�):

\begin{verbatim}
   .text
   .globl _start
   _start:
      inc     %eax
      pop     %ebx
      int     $0x80
\end{verbatim}%$
co� je v�cem�n� ekvivalent tohoto c��kov�ho programu:

\begin{verbatim}
   int main(int argc)
   {
      return argc;
   }
\end{verbatim}

Tento k�d ji� vypad� celkem minim�ln�, tak�e z~n�j zkus�me vytvo�it
spustiteln� soubor:

\begin{verbatim}
  $ cc -c program.s
  $ ld -static program.o
  $ ls -l a.out
  -rwxr-xr-x 1 peak users 675 May 3 22:00 a.out
\end{verbatim}%$
� j�! Takov� mal� k�d a~tak velk� soubor! S~t�m se mus� n�co ud�lat.


\subsection{Smr��ov�n� souboru}

Nyn� je t�eba �e�it dal�� z�sadn� probl�m: \emph{Jak vyrobit co
nejmen�� spustiteln� soubor?}

Linux zn� n�kolik druh� spustiteln�ch soubor�: z�kladn� jsou {\bf
a.out}, {\bf ELF} a~{\tt skripty} (tj. soubory za��naj�c� znaky {\tt
\#!}). Skripty vynech�me, proto�e nevyhovuj� p�vodn�mu zad�n�.

\begin{itemize}

\item {\bf a.out} je star�� a~jednodu��� form�t. Jeho ko�eny sahaj�
	n�kam do׹er�ho unixov�ho d�vnov�ku, ale v~dne�n� dob� se u�
	prakticky nepou��v�.  M� n�kolik variant, kter� se li��
	zp�sobem na��t�n� do�pam�ti. Viz {\tt
	include/\char`\{linux,asm\char`\}/a.out.h} a~{\tt fs/binfmt\_aout.c}.
\item {\bf ELF} je nov�j�� a~slo�it�j�� form�t. Byl vyvinut pro
	pot�eby System V. Ve�sv� �plnosti je tak slo�it�, �e pro jeho
	dek�dov�n� existuje zvl�tn� knihovna ({\tt libelf}), ale n�s
	zaj�m� jen mal� ��st --- p�esn� ta, co zaj�m� j�dro.  Viz {\tt
	include/\char`\{linux,asm\char`\}/elf.h} a~{\tt fs/binfmt\_elf.c}.
\end{itemize}

V�nujme se nejprve kr�tce form�tu {\bf a.out}. Jeho hlavi�ka vypad�
takto:

\BeginTable
\Expand
\BeginFormat
| l | l | p(4cm) |.
" \dword	" {\tt a_info}	" \uv{magick� ��slo}  " \\
" \dword	" {\tt a_text}	" d�lka k�du  " \\
" \dword	" {\tt a_data}	" d�lka inicializovan�ch dat  " \\
" \dword	" {\tt a_bss}	" d�lka neinicializovan�ch dat  " \\
" \dword	" {\tt a_syms}	" velikost tabulky symbol� v~bajtech  " \\
" \dword	" {\tt a_entry}	" startovac� adresa  " \\
" \dword	" {\tt a_trsize}	" velikost reloka�n� tabulky pro k�d  " \\
" \dword	" {\tt a_drsize}	" velikost reloka�n� tabulky pro data  " \\
\EndTable
\bskip

Spustiteln� soubor je tvo�en hlavi�kou a~za�sebou n�sleduj�c�mi �seky
k�du, inicializovan�ch dat a~tabulky symbol� (neinicializovan� data
nejsou pochopiteln� v~souboru obsa�ena). Soubor {\bf nesm�} obsahovat
��dn� reloka�n� data a~p��slu�n� hodnoty v~hlavi�ce mus� b�t nulov�.

\uv{Magick� ��slo} popisuje variantu form�tu. Nab�v� jedn� z~n�sleduj�c�ch hodnot:

\bskip
\BeginTable
\Expand
\BeginFormat
| l | p(0.77\hsize) |.
" {\tt OMAGIC} " tzv. \uv{impure executable}; zbytek souboru je na�ten
	do pam�ti od adresy 0, z�pis je povolen v�ude (pozn. tato
	varianta b�vala pou��v�na i~pro objektov� soubory form�tu {\bf
	a.out}({\tt *.o})  "  \\
" {\tt NMAGIC} " tzv. \uv{pure executable}; zbytek souboru je na�ten do
	pam�ti od adresy 0, ale do�oblasti k�du je zak�z�n z�pis  "  \\
" {\tt ZMAGIC} " tzv. \uv{demand-paged executable}; soubor po��naje pozic�
	4096 je namapov�n do�pam�ti od adresy 0x1000, v~prostoru prvn�
	str�nky nen� nic namapov�no  "  \\
" {\tt QMAGIC} " jin� varianta \uv{demand-paged executable}, cel� soubor
	je namapov�n do�pam�ti od adresy 0x1000, narozd�l od p�edchoz�
	varianty nen� na�za��tku souboru jedna prakticky nevyu�it�
	str�nka  "  \\
\EndTable
\bskip 

Zkus�me vytvo�it soubor ve�form�tu {\bf a.out} pomoc� standardn�ch
n�stroj�. Jedin� probl�m je v~tom, �e mus�me linkeru d�t parametr {\tt
-m i386linux} nebo {\tt -b a.out-i386-linux}, proto�e (pokud nen�
provozovan� verze opravdu letit�) bez t�chto parametr� by byl vytvo�en
soubor ve�form�tu {\bf ELF}.  Parametrem {\tt -N} si vy��d�me vytvo�en�
varianty {\tt OMAGIC} (i~kdy� stejn� dob�e by poslou�ila varianta {\tt
NMAGIC} vyvolan� parametrem {\tt -n}).  Nav�c (narozd�l od p��kladu
v~p�edchoz� kapitole) nezapomeneme odstranit lad�c� informace pomoc�
p��kazu {\tt strip} (co� je kupodivu ��inn�j�� ne� pou�it� parametru
{\tt -s} p�i linkov�n�).

\begin{verbatim}
  $ ld -static -m i386linux -N program.o
  $ strip a.out
  $ ls -l a.out
  -rwxr-xr-x 1 peak users 40 May 3 22:05 a.out
\end{verbatim}%$
Soubor obsahuje 32 bajt� hlavi�ky a~4 bajty k�du zv�t�en� o~4~bajty
v�pln�.  To je docela p�kn� v�sledek, ale, jak uvid�me z�hy, nen�
zdaleka nejlep�� mo�n�.

P�ikro�me nyn� ke�studiu form�tu {\bf ELF}. Ten m� dv� zaj�mav�
hlavi�ky.  Prvn� je hlavi�ka souboru zn�m� pod n�zvem {\tt
Elf32\_Ehdr} (existuje i~64-bitov� varianta {\tt Elf64\_Ehdr}):

\BeginTable
\Expand
\BeginFormat
s1|l|l|p(0.5\hsize)|.
" \dword	" {\tt e_ident}	" identifikace souboru  " \\
" \dword	"		" \ldots  " \\
" \dword	"		" \ldots  " \\
" \dword	"		" \ldots  " \\
" \word	" {\tt e_type}	" typ souboru  " \\
" \word	" {\tt e_machine}	" platforma  " \\
" \dword	" {\tt e_version}	" verze form�tu souboru  " \\
" \dword	" {\tt e_entry}	" startovac� adresa  " \\
" \dword	" {\tt e_phoff}	" za��tek tabulky segment� (v~souboru)  " \\
" \dword	" {\tt e_shoff}	" za��tek tabulky sekc� (v~souboru) " \\
" \dword	" {\tt e_flags}	" r�zn� p��znaky  " \\
" \word	" {\tt e_ehsize}	" velikost hlavi�ky souboru v~bajtech  " \\
" \word	" {\tt e_phentsize}	" velikost z�znamu segmentu  " \\
" \word	" {\tt e_phnum}	" po�et z�znam� v~tabulce segment�  " \\
" \word	" {\tt e_shentsize}	" velikost z�znamu sekce  " \\
" \word	" {\tt e_shnum}	" po�et z�znam� v~tabulce sekc�  " \\
" \word	" {\tt e_shstrndx}	" index sekce obsahuj�c� jm�na  " \\
\EndTable
\bskipp
\noindent
a~druh� je hlavi�ka segmentu (tedy polo�ka v~tabulce segment�) �ili
{\tt Elf32\_Phdr}:

\bskipp
\BeginTable
\Expand
\BeginFormat
|l|l|l|.
" \dword	" {\tt p_type}	" druh segmentu  " \\
" \dword	" {\tt p_offset}	" po��tek segmentu v~souboru  " \\
" \dword	" {\tt p_vaddr}	" virtu�ln� adresa v~pam�ti  " \\
" \dword	" {\tt p_paddr}	" fyzick� adresa v~pam�ti  " \\
" \dword	" {\tt p_filesz}	" velikost segmentu v~souboru  " \\
" \dword	" {\tt p_memsz}	" velikost segmentu v~pam�ti  " \\
" \dword	" {\tt p_flags}	" p��znaky segmentu  " \\
" \dword	" {\tt p_align}	" zarovn�n� adresy segmentu  " \\
\EndTable
\bskipp

Spustiteln� soubor ve�form�tu {\bf ELF} je tvo�en hlavi�kou souboru
a~\uv{voln�m prostorem}, ve�kter�m jsou v�cem�n� libovoln� rozlo�eny
ostatn� ��sti souboru: tabulky segment� a~sekc� a~samotn� segmenty
a~sekce. Tyto ��sti se mohou libovoln� p�ekr�vat (nenaru��-li to
integritu jejich obsahu).

Prvn� polo�kou v~hlavi�ce souboru je identifikace: 16 bajt�, kter�
ur�uj�, �e se jedn� o~soubor ve�form�tu {\bf ELF} a~popisuje jeho
z�kladn� vlastnosti (LSB/MSB, 32/64 bit�, verzi form�tu hlavi�ky
souboru). Celkem je obsazeno pouze 7 bajt�, zbyl�ch 9 by m�lo m�t
nulovou hodnotu, ale nutn� to nen�.  Pozd�ji toho bude vyu�ito.

Polo�ka {\tt e\_type} ur�uje typ souboru, spustiteln� soubory zde maj�
hodnotu~2, symbolicky {\tt ET\_EXEC}. Polo�ka {\tt e\_machine} ur�uje
hardwarovou platformu, pro kterou je soubor ur�en --- v~na�em p��pad�
to bude~3, symbolicky {\tt EM\_I386}. Polo�ka {\tt e\_version} ur�uje
verzi form�tu, kter� zat�m existuje pouze jedin� s~��slem~1.

D�le�it� polo�ky hlavi�ky souboru jsou je�t� {\tt e\_entry}, kter�
ur�uje adresu, od kter� bude n� program vykon�v�n, {\tt e\_phoff}
obsahuj�c� polohu tabulky segment� v~souboru, {\tt e\_phnum} ud�vaj�c�
po�et segment� a~{\tt e\_phentsize}, kter� mus� obsahovat velikost
hlavi�ky segmentu, v~bajtech, tedy ��slo~32.

Zbyl� polo�ky nejsou p�i na��t�n� souboru do�pam�ti j�drem nijak
interpretov�ny, tak�e mohou m�t prakticky libovoln� hodnoty.

Segment je ta ��st souboru, kter� m� b�t p�i spou�t�n� programu j�drem
na�tena �i namapov�na do�pam�ti, tedy k�d nebo data. Existuj� sice
tak� n�kter� druhy segment� maj�c� speci�ln� v�znam, ale my budeme
bl��e zkoumat pouze pr�v� popsan� typ {\tt PT\_LOAD}, ��seln� se jedn�
o~typ~1.

V~hlavi�ce segmentu je (narozd�l od hlavi�ky souboru) d�le�it� v�t�ina
�daj� s~v�jimkou {\tt p\_paddr} (nebo� mapov�n� na�konkr�tn� fyzick�
adresy nen� mo�n�) a~{\tt p\_align} (segmenty jsou v�dy zarovn�ny na
cel� str�nky).  Zvl�tn� pozornost zaslou�� {\tt p\_flags}, kter�
popisuje, jestli bude mo�no namapovan� segment ��st ({\tt PF\_R},~4),
vykon�vat ({\tt PF\_X},~1), resp. zda do�n�j bude mo�no zapisovat ({\tt
PF\_W},~2).

Zkusme nyn� vyrobit co nejmen�� spustiteln� soubor ve�form�tu {\bf
ELF}. Nejprve pou�ijeme linker a~{\tt strip}, jako v~p��pad� form�tu
{\bf a.out}:

\begin{verbatim}
  $ ld -static program.o
  $ strip a.out
  $ ls -l a.out
  -rwxr-xr-x 1 peak users 364 May 3 22:23 a.out
\end{verbatim}%$

V�sledek je to rozhodn� lep�� ne� p�edt�m, ale po��d to nen� ono.
P�elo�en� soubor ve�skute�nosti obsahuje velk� mno�stv� smet�, jak n�m
uk�e program {\tt objdump}:

\begin{verbatim}
 $ objdump -h a.out

 a.out:     file format elf32-i386

 Sections:
 Idx Name Size     VMA      LMA      File off Algn
  0 .text 00000004 08048074 08048074 00000074 2**2
    	CONTENTS, ALLOC, LOAD, READONLY, CODE 
  1 .data 00000000 08049078 08049078 00000078 2**2
    	CONTENTS, ALLOC, LOAD, DATA	      
  2 .bss  00000000 08049078 08049078 00000078 2**2
     	ALLOC
\end{verbatim}%$

V~souboru jsou obsa�eny t�i sekce, ale jedin� pot�ebn� z~nich je sekce
{\tt .text}, kter� obsahuje spustiteln� k�d. Pokus�me se soubor
zmen�it odstran�n�m ostatn�ch sekc�. K~tomu pou�ijeme program {\tt
objcopy}:

\begin{verbatim}
  $ objcopy -R .data -R .bss a.out
  $ ls -l a.out
  -rwxr-xr-x 1 peak users  276 May 3 22:29 a.out
\end{verbatim}

Soubor obsahuje 52 bajt� hlavi�ky souboru, jednu hlavi�ku segmentu
o~velikosti 32 bajt�, pak 32 bajt� nul a~4 bajty k�d, dohromady jeden
segment o~velikosti 120 bajt�, po kter�m pak n�sleduje 156 bajt�
s~tabulkou sekc� a~tabulkou jmen, co� jsou ov�em v�ci pro vlastn� chod
programu celkem nepodstatn� (je-li linkov�n staticky, u~dynamicky
linkovan�ch program� je to trochu jinak).

O~mnoho v�ce ji� s~pomoc� standardn�ch n�stroj� nelze dok�zat.
Nejjednodu��� bude asi vyrobit cel� soubor ru�n�\ldots

\subsection{Bitov� in�en�rstv�}

Zkusme si tedy vyrobit n�jak� spustiteln� soubor sami --- bajt po
bajtu.  Pro tento ��el je vhodn� pou��t n�jak� \uv{p�eklada�}, kter�
n�m umo�n� zapsat bin�rn� data v~n�jak� �iteln� textov� podob�. J�
jsem si jednu takovou jednoduchou pom�cku pro tento ��el vyrobil
a~nazval jsem ji {\tt hex}. Jazyk p�eklada�e {\tt hex} je opravdu
jednoduch�:

\begin{itemize}
\item v�e po��naje znakem \uv{\#} je a� do�konce ��dku ignorov�no
\item obsah souboru je interpretov�n po slovech odd�len�ch b�l�mi
znaky
\item slovo obsahuj�c� \uv{L} je interpretov�no jako 4-bajtov� hodnota
	(\emph{long}), slovo obsahuj�c� \uv{W} jako 2-bajtov�
        (\emph{word}), v�e ostatn� je jednobajtov� hodnota; v�cebajtov�
	hodnoty jsou ukl�d�ny od nejm�n� v�znamn�ho bajtu
        k~nejv�znamn�j��mu (\emph{little-endian})
\item slovo obsahuj�c� \uv{x} je interpretov�no v~�estn�ctkov�
	soustav�, slovo obsahuj�c� \uv{o} v~osmi�kov� soustav�,
	ostatn� v~des�tkov�
\end{itemize}

Za�neme op�t s~form�tem {\bf a.out} (viz v�pis \ref{exampleaout}),
nebo� je v�znamn� jednodu���.

\begin{figure}
\begin{verbatim}
   # a.out hlavicka
   Lx00640107 # a_info (OMAGIC)
   L4  # a_text
   L0  # a_data
   L0  # a_bss
   L0  # a_syms
   L0  # a_entry
   L0  # a_trsize
   L0  # a_drsize

   # kod
   x40 # inc %eax
   x5b # pop %ebx
   xcd # int
   x80 # $0x80
\end{verbatim}%$
\caption{Zdrojov� text pro a.out v~jazyce hex}
\label{exampleaout}
\end{figure}

Tento \uv{zdrojov� soubor} se po pr�chodu p�eklada�em {\tt hex} zm�n�
na�36~bajtov� soubor, kter� je j�dro Linuxu ochotno na��st a~spustit.
Uspo�ili jsme zat�m �ty�i bajty v�pln�. N�kdo m��e nam�tnout,
�e vhodn�j�� volbou parametr� p�ekladu bychom mohli dos�hnout
t�ho�. Ale je�t� jsme neskon�ili!

V�imn�me si nyn� dvou v�c�: za�prv�, pokud zm�n�me typ souboru na�{\tt
QMAGIC}, bude do�pam�ti na�ten --- resp. namapov�n --- cel� soubor
(i~kdy� j�dro bude pon�kud \uv{nerv�zn�} z~toho, �e d�lka souboru nen�
n�sobek 4096 bajt�), za�druh�, pokud vynech�me koncovou ��st hlavi�ky,
domysl� si na�tom m�st� j�dro nuly (t�ko ��ci, zda je to chyba nebo
�mysl). N� k�d m� pouze �ty�i bajty, tak�e by ho bylo mo�no vecpat do
n�kter� polo�ky v~hlavi�ce a~je�t� ji na�konci u��znout. A� to zn�
p�ekvapiv�, mo�n� to je: k�d lze vlo�it do�polo�ky {\tt a\_bss},
a�koli podle zdrav�ho rozumu by n�co takov�ho nem�lo j�dro v�bec
spustit (velikost neinicializovan�ch dat je v�t�� ne�
2GB). Spust�\ldots

V�sledn� program vypad� tak, jak je zobrazeno na
v�pise \ref{exampleaoutfinal}.

\begin{figure}
\begin{verbatim}
   # a.out hlavicka
   Lx006400cc # a_info (QMAGIC)
   L20 # a_text
   L0  # a_data

   # L0  # a_bss

   # kod (na�miste a_bss!)
   x40 # inc %eax
   x5b # pop %ebx
   xcd # int
   x80 # $0x80

   L0  # a_syms
   Lx100c  # a_entry

   # ty tady nemusi byt, protoze jsou nulove
   # (poznamenejme, ze nulove byt MUSI)
   # L0  # a_trsize
   # L0  # a_drsize
\end{verbatim}%$
\caption{Fin�ln� zdrojov� text pro form�t a.out}
\label{exampleaoutfinal}
\end{figure}

Hr�za! Ale na�druhou stranu m� v�sledn� spustiteln� soubor velikost
pouh�ch 24~bajt� (tedy o~8~m�n� ne� je regul�rn� velikost hlavi�ky).
Men�� spustiteln� soubor u� asi nikdo nevyrob�. �koda jen, �e p�i
ka�d�m spu�t�n� j�dro vyp��e {\tt executable not page aligned}.

A~co form�t {\bf ELF}? Za�neme op�t konzervativn� (viz
v�pis \ref{hexelf}).

\begin{figure}
\begin{verbatim}
   # Elf32_Ehdr
   # e_ident
   x7f x45 x4c x46 # \177ELF
   x01 x01 x01 x00 # 32bit, LSB, current version
   L0
   L0
   # dalsi polozky
   W2      # e_type = ET_EXEC
   W3      # e_machine = EM_386
   L1      # e_version
   Lx1054  # e_entry
   Lx34    # e_phoff
   L0      # e_shoff
   L0      # e_flags
   Wx34    # e_ehsize
   Wx20    # e_phentsize
   W1      # e_phnum
   Wx28    # e_shentsize
   W0      # e_shnum
   W0      # e_shstrnum

   # Elf34_Phdr
   L1      # p_type = PT_LOAD
   L0      # p_offset
   Lx1000  # p_vaddr
   Lx1000  # p_paddr
   L88     # p_filesz
   L88     # p_memsz
   L5      # p_flags = PF_R | PF_X
   Lx1000  # p_align

   # kod
   x40 # inc %eax
   x5b # pop %ebx
   xcd # int
   x80 # $0x80
\end{verbatim}%$
\caption{Zdrojov� text pro ELF v~jazyce hex}
\label{hexelf}
\end{figure}

Nejprve 52~bajt� hlavi�ky souboru, pak 32~bajt� hlavi�ky segmentu
a~pak �ty�i bajty k�du. Dohromady 88 bajt�.

Zkusme nyn� u�et�it n�jak� m�sto. Prvn�m krokem bude asi vyu�it�
pr�zdn�ho m�sta v~{\tt e\_ident}: nejjednodu��� bude do�n�j p�esunout
k�d --- t�m soubor zkr�t�me o~�ty�i bajty. Lep�� by bylo n�kam
p�esunout hlavi�ku segmentu, ale ta je moc velk�, do�{\tt e\_ident} se
rozhodn� nevejde, ani kdybychom odtud odstranili k�d, kter� jsme tam
zrovna um�stili\ldots{} Ov�em pozor!  V~hlavi�ce souboru je spousta
zbyte�n�ho m�sta: um�st�me-li za��tek hlavi�ky segmentu na�stejn�
m�sto jako {\tt e\_shoff}, dojde k~jedin� v�znamn� kolizi: druh� bajt
{\tt p\_vaddr} bude na�stejn�m m�st� jako {\tt e\_phentsize}, co� je
jednoduch� vy�e�it --- sta�� vhodn� zvolit adresu, na�kterou program
v~pam�ti um�st�me. T�m u�et��me 20~bajt�, dal�� �ty�i je�t� m��eme
z�skat useknut�m polo�ky {\tt e\_align}, kterou j�dro postr�dat
nebude. Program pak bude vypadat tak, jak je na
v�pisu \ref{exampleelf}.

\begin{figure}
\begin{verbatim}
  # Elf32_Ehdr
  # e_ident
  x7f x45 x4c x46 # \177ELF
  x01 x01 x01 x00 # 32bit, LSB, current version

  # kod (pres zbytek e_ident)
  x40 # inc %eax
  x5b # pop %ebx
  xcd # int
  x80 # $0x80

  L0      # tady je jeste mista....
  # dalsi polozky
  W2      # e_type = ET_EXEC
  W3      # e_machine = EM_386
  L1      # e_version
  Lx200008# e_entry
  Lx20    # e_phoff
  #                         Elf34_Phdr
  L1      # e_shoff         p_type = PT_LOAD
  L0      # e_flags         p_offset
  W0      # e_ehsize        p_vaddr = 0x00200000
  Wx20    # e_phentsize (!)
  W1      # e_phnum         p_paddr = 0x00280001
  Wx28    # e_shentsize
  Lx20    # e_shnum         p_filesz
          # e_shstrnum
  Lx20    #                 p_memsz
  L5      #                 p_flags = PF_R | PF_X
          #                 p_align (vynechano)
\end{verbatim}%$
\caption{Fin�ln� zdrojov� text pro form�t ELF}
\label{exampleelf}
\end{figure}

Celkov� velikost je neuv��iteln�ch 60~bajt�! Nav�c takov� program
funguje, j�dro si na�nic nest�uje a~program {\tt file} ho spr�vn�
identifikuje:

\begin{verbatim}
  $ ls -l elf_tiny
  -rwxr-xr-x 1 peak users  60 May 3 22:47 elf_tiny
  $ file elf_tiny
  elf_tiny: ELF 32-bit LSB executable, \
  Intel 80386, version 1,
  statically linked, stripped
  $ ./elf_tiny 1 2 3; echo $?
  4
\end{verbatim}

A~to je v�e, p��tel�! Men�� programy jsem u� opravdu vyrobit
nedok�zal.\KC

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%


\section{IPX v~Linuxu}
\label{ipx}

\autor{Milan Ker�l�ger, 11. kv�tna 1998}

\subsection{�vod do�IPX/SPX}

S~protokolem IPX/SPX se setk�v�me denn�, zejm�na v~prost�ed� Novell
NetWare, kde je kl��ov�m protokolem. Protokol IPX/SPX po��t� s~vysokou
rychlost� a~n�zkou chybovost� lok�ln�ch s�t� a~je jednodu��� ne�
protokol TCP/IP, kter� je pou��v�n v~rozlehl�m sv�t� Internetu. To je
hlavn� d�vod, pro� je v~lok�ln�ch s�t�ch tolik pou��v�n. Jeho
konfigurace i~implementace je jednoduch� a~neskr�v� mnoho
�skal�. Protokol IPX (\emph{Internetwork Packet eXchange}) pracuje
jako datagramov� slu�ba a~je tak obdobou protokolu IP.  Naproti tomu
SPX (\emph{Sequenced Packet eXchange}) je navazov�n�m spojen� velice
bl�zk� protokolu TCP.

\subsection{K �emu to bude dobr�}

V�echny po��ta�e v~s�ti jsou si p�i vz�jemn� komunikaci rovny. P�esto
maj� n�kter� v�znamn�j�� postaven� ne� ostatn�. Jsou to v�t�inou
specializovan� stanice, kter� nab�zej� sv� slu�by ostatn�m
stanic�m. Takov�m po��ta��m ��k�me \emph{servery}, stanic�m pak
\emph{klienti} a~��k�me, �e pou��v�me architekturu
\emph{klient--server}. Ur�it� je velmi v�hodn� um�t i~z~Linuxu
vyu��vat v�ech slu�eb, kter� nab�zej� servery Novell Net\-wa\-re. Abychom
mohli s~t�mito servery komunikovat, mus�me um�t nakonfigurovat sv�j
Linux tak, aby jim rozum�l. V~dal��m pov�d�n� budu p�epokl�dat, �e
m�me k~dispozici s�� typu Ethernet (nap�. tenk� koaxi�l nebo kroucenou
dvoulinku), a~pod�v�me se bl��e, jak to v�echno za��dit. Za�neme od
za��tku, tedy od toho, jak komunikace na�Ethernetov�ch s�t�ch vlastn�
funguje.

Nejprve se pokus�m objasnit v�znam pojm� datagram, paket a~r�mec.
\emph{Datagram} je celistv� informace, kterou p�en��me mezi po��ta�i.
Datagram m��e b�t p�i p�eprav� d�len na�v�ce ��st� a~takov�mto
samostatn�m ��stem ��k�me \emph{pakety}. Aby mohl b�t paket p�epravov�n
po�s�ti typu Ethernet, je ho pot�eba doplnit o~dal�� nezbytn� informace
nutn� pro jeho p�epravu po�s��ov�m m�diu, a~takov�muto roz���en�m paketu
��k�me \emph{r�mec}.

\subsection{Ethernetov� r�mce}

\Stahni0.7
Z�kladem p�epravy dat na�s�t�ch typu Ethernet jsou takzvan� r�mce,
kter� p�epravuj� obecn� jak�koliv data mezi jednotliv�mi
po��ta�i. Ka�d� r�mec p�edstavuje bal�k dat, kter� je mo�no vyslat
v~r�mci jednoho segmentu k~jin�mu po��ta�i. Skl�d� se z~hlavi�ky, t�la
(obsahuje p�en�en� data, tedy paket vy��� vrstvy) a~traileru
(zakon�en� r�mce s~kontroln�m sou�tem). Hlavn� ��st hlavi�ky tvo��
hardwarov� adresa odes�latele a~p��jemce (ozna�ovan� tak� jako fyzick�
MAC adresa), podle kter� s��ov� rozhran� dok�e samo rozeznat r�mce,
kter� jsou mu ur�eny a~nemus� tak ru�it po��ta� zbyte�n�mi
p�eru�en�mi. MAC adresa je pevn� d�na v�robcem s��ov� karty a~v�t�inou
ji nen� mo�n� m�nit. Teoreticky by se na�sv�t� nem�ly vyskytovat dv�
Ethernetov� karty se stejnou MAC adresou, ale m��e se to st�t, i~kdy�
v�bor IEEE (Institute of Electrical and Electronics Engineers)
p�id�luje ka�d�mu v�robci blok adres. Pokud na�takov� karty naraz�te,
je to nep��jemn� a~m�te z~pekla �t�st� :-).

R�mec je z�visl� na�pou�it�m p�epravn�m m�diu. Kdy� datagram opou�t�
Ethernet a~je d�le p�epravov�n nap��klad po s�riov� lince, jsou
zachov�na pouze data z~t�la r�mce a~ta pak putuj� d�le obalena jin�m
p�epravn�m protokolem.

Abychom nem�li pocit, �e je v�echno jednoduch�, existuje v�ce norem,
kter� p�edepisuj�, jak m� hlavi�ka r�mce v~s�t�ch typu Ethernet
vypadat (viz tabulka \ref{ipxtabulka1}). S��ov� karta mus� um�t
spr�vn� dek�dovat p�ijat� r�mec, jinak ho m��e pova�ovat za
chybn�. Proto je vhodn� pou��vat na�segmentu pokud mo�no jen jeden
r�mec a~nep�iv�d�t jak s��ovou kartu tak administr�tora do
schizofrenick�ho stavu. Ot�zkou pak ov�em z�st�v�, kter� r�mec je ten
prav�.

\begin{table}
\BeginTable
\Expand
\BeginFormat
s2| l | p(0.60\hsize) |.
\_
| N�zev r�mce | Charakteristika | \\
\_4
| Ethernet 802.2 | dne�n� standard firmy Novell, um� p�epravovat pouze IPX/SPX | \\
\_
| Ethernet 802.3 | p�vodn� standard firmy Novell, um� p�epravovat pouze IPX/SPX | \\
\_
| Ethernet II | um� p�epravovat IPX/SPX i~TCP/IP, nejroz���en�j��, nejjednodu��� | \\
\_
| Ethernet SNAP | um� p�epravovat IPX/SPX i~TCP/IP | \\
\_
\EndTable
\caption{Ethernetov� r�mce}
\label{ipxtabulka1}
\end{table}


Pokud chcete pou��vat ve�sv� s�ti protokol TCP/IP, nevyhnete se
pou�it� jednoho z~posledn�ch dvou r�mc�. Nejv�hodn�j��m je ur�it�
Ethernet~II, proto�e je nejjednodu��� ze v�ech a~hlavn� je univerz�ln�
(lze v~n�m p�epravovat krom� IPX/SPX a~TCP/IP spoustu dal��ch
protokol�). O~r�mci 802.2 se n�kdy ��k�, �e je p�en�en v~r�mci 802.3
(p�i pou�it� paketov�ho analyz�toru se tak jeho struktury
jev�). Ethernet SNAP je kombinac� r�mc� 802.2 a~802.3. Rozumn� d�vod,
pro� firma Novell tak vehementn� prosazuje pr�v� prvn� dva, nezn�m.

N�kdy nen� mo�n� na�jednom segmentu vysta�it jen s~jedn�m r�mcem,
proto�e nap��klad n�kter� BootROMky nebo stanice se star��mi ovlada�i
r�mec Ethernet~II neum�j�. Ov�em ur�it� plat�, �e v~jednoduchosti je
s�la. Proto rad�ji d�kladn� zva�te, co v�echno V�m na�segmentu bude
b�hat. Neexistuje ��dn� d�vod, pro� by nem�l b�t r�mec Ethernet~II
pou��v�n.

Osobn� pou��v�m na�segmentech jen jeden r�mec (Ethernet~II) a~ostatn�
p�id�v�m jen v~p��pad� nezbytn� nutnosti. Windows~95 nen� vhodn�
nech�vat u~protokolu IPX/SPX pou��vat autodetekci r�mc�, proto�e to
ob�as vede k~nepochopiteln�m v�padk�m, zvl�t� ve�v�t��ch s�t�ch.

\subsection{D�len� na�v�ce s�t�}

Proto�e r�mce neobsahuj� mo�nost, jak je jednodu�e sm�rovat mezi v�ce
segmenty (ani to nen� jejich �kol), je sm�rov�n� zaji�t�no protokolem
vy��� vrstvy, v~na�em p��pad� tedy protokolem IPX. Adresa se v~IPX
datagramu skl�d� z~��sla s�t� a~��sla uzlu, kter� kop�ruje uz v��e
zm�n�nou MAC adresu s��ov� karty. Ka�d� segment mus� m�t jin� ��slo
s�t� a~pokud provozujeme na�jednom segmentu v�ce r�mc�, pak i~ka�d�
r�mec mus� m�t r�zn� ��sla s�t�. V�echna s��ov� rozhran� na�jednom
segmentu se stejn�m r�mcem pou��vaj� stejn� ��sla s�t�. Ta ur�uje
administr�tor p�i instalaci server� a~pokud dojde ke�konfliktu,
v~hor��m p��pad� to vy�ad� z~provozu cel� segment. Stanice si obvykle
zjist� ��slo s�t� ze serveru sama, bez nutnosti p�esn� konfigurace.

\subsection{Vnit�n� s�t�}

Vnit�n� s�t� (tzv. \emph{internal network}) slou�� pro snadn�
sm�rov�n� datagram� ze stanic na�m�sto, kter� V�m poskytuje n�jakou
slu�bu. Vnit�n� ��slo s�t� proto pot�ebuje jen server, stanice bez n�j
bude pracovat a~vlastn� ho ani na�nic nepot�ebuje. Vnit�n� ��slo s�t�
definuje jakousi virtu�ln� s�� uvnit� serveru, na�kter� sice nen�
ur�en ��dn� r�mec, ale p�esto mus� b�t jej� ��slo jedine�n� a~nesm� se
tedy shodovat s~jin�m ��slem s�t� v~na�� lok�ln� s�ti.

\subsection{Spolupr�ce Linuxu s~NetWare servery}

Servery Novell NetWare nej�ast�ji komunikuj� se stanicemi pomoc�
protokolu IPX, ten je ov�em pouze p�epravn�m protokolem. Dnes m��eme
jako p�epravn� protokol vyu��t tak� TCP/IP a~p�ekro�it tak mnohem
v�t�� vzd�lenosti ne� s~protokolem IPX, ov�em konfigurace s��ov�ch
rozhran� u~stanic je pak v�razn� slo�it�j��. Nav�c je podpora TCP/IP
pro Net\-Wa\-re na�stran� Linuxu zat�m v~plenk�ch. Proto se d�le budeme
zab�vat pouze prvn� a~z�ejm� tak� nejroz���en�j�� variantou.



\subsection{Protokoly v~prost�ed� NetWare}

\Stahni0.7
Aby si stanice se servery p�i vz�jemn�m rozhovoru rozum�ly,
p�epravovan� data m�la logiku a~strukturu, pot�ebujeme dal��
protokoly, kter� budou v~IPX p�epravov�ny. Nejv�znam�j��m takov�m
protokolem je NCP (\emph{NetWare Core Protocol}), kter� umo��uje
klient�m p��stup k~s��ov�m disk�m, tisk�rn�m a~dal��m sd�len�m
za��zen�m. Pomoc� tohoto protokolu se u�ivatel� tak� k~server�m
NetWare p�ihla�uj�. Dal��m protokolem, se kter�m se setk�me, je SAP
(\emph{Service Advertisement Protocol}). T�mto protokolem jednotliv�
servery ohla�uj� a~nab�zej� sv� slu�by v~s�ti pomoc� broadcast�.
Posledn�m zaj�mav�m protokolem je RIP (\emph{Routing Information
Protocol}), pomoc� kter�ho si mezi sebou IPX sm�rova�e (routery)
vym��uj� informace o~zn�m�ch s�t�ch. Ty se pak odraz� ve�sm�rovac�ch
tabulk�ch a~t�m je umo�n�no, aby sm�rova�e mohly p�ed�vat datagramy
i~do�jin�ch s�t�, ne� ve�kter� pracuje stanice. P�es router m��e b�t
zaji�t�n i~p�eklad r�mce, ale pokud se tak d�je na�jednom segmentu,
povede to k~duplikaci provozu.  To je dal�� d�vod, pro� je vhodn�j��
pou��vat na�v�ech stanic�ch v~s�ti pouze jeden jedin� r�mec.

\subsection{Konfigurace IPX v~Linuxu}

Pokud m� Linux vystupovat jako oby�ejn� stanice, kter� rozum�
protokolu IPX, bude vystupovat jako klient a~bude vyu��vat zdroje
a~slu�by (nap�. sd�len� disk� a~tisk na�s��ov�ch tisk�rn�ch), kter� mu
budou pomoc� s�t� poskytov�ny servery.

P�i konfiguraci mus�me za��t od z�kladu a~t�m je protokol IPX.
Podpora protokolu IPX mus� b�t povolena p�i kompilaci j�dra Linuxu
({\tt CONFIG\_IPX}). Pokud ji m�me p�ipravenu jako modul, mus�me ho
nejprve do�j�dra ru�n� zav�st (neplat� pro nejnov�j�� verzi NCP
utilit).  Pokud podporu IPX v~j�dru nem�me, nezbude n�m nic jin�ho,
ne� si p�elo�it j�dro znovu.  Pak je pot�eba spr�vn� nakonfigurovat
s��ov� rozhran�, k~�emu� pot�ebujeme n�kolik utilit, kter� najdeme
v~bal�ku {\tt ncpfs}.  V~tomto bal�ku se nach�z� v�t�ina utilit, kter�
pro pr�ci s~IPX budeme v~Linuxu pot�ebovat.  U�ivatel�m distribuce
RedHat 5.0 sta�� nainstalovat bal�k {\tt ncpfs-2.0.11-3.i386.rpm} nebo
podobn�, IPX je v~j�drech k~dispozici jako modul.

S��ov� rozhran� m��eme nechat nakonfigurovat automaticky, pokud je na
s�ti u� IPX pou��v�no. Automatickou konfiguraci obstar�v� j�dro
odposlechem provozu na�s�ti. Pokud na�s�ti nen� ��dn� IPX provoz,
mus�me rozhran� nakonfigurovat ru�n�. Pro b�n� provoz automatickou
konfiguraci nedoporu�uji, proto�e Windows~95 vys�laj� do�s�t� chybn�
pakety a~to pak m��e v�st k~nespr�vn�mu rozpozn�n� ��sla s�t�
a~pou��van�ch typ� r�mc�, proto je vhodn� sp��e jen pro prvn�
kroky. Pro manu�ln� konfiguraci pot�ebujete zn�t ��slo s�t� pro ka�d�
pou��van� r�mec. Pokud ho nev�te, informujte se u~sv�ho
administr�tora.

Automatick� konfigurace:
\begin{verbatim}
 modprobe ipx
 ipx_configure --auto_interface=on \
    --auto_primary=on
 cat /proc/net/ipx_*
\end{verbatim}

Automatickou konfiguraci je vhodn� zkontrolovat podle v�pisu souboru
{\tt /proc/net/ipx\_interface}, kter� obsahuje seznam v�ech
registrovan�ch IPX rozhran� v�etn� typ� r�mc� a~��sel
s�t�. Automatick� nakonfigurov�n� rozhran� m��e chv�li trvat (cca
10-30 vte�in).

K~ru�n� konfiguraci IPX rozhran� m��eme pou��t utilitu {\tt
ipx\_interface}. Pr�v� jedno rozhran� by m�lo b�t p�ep�na�em {\tt -p}
ozna�eno jako prim�rn�. Takov� rozhran� je pova�ov�no za�implicitn�
a~je pou�ito, kdy� v~programu p�i otev�r�n� soketu neuvedeme ��slo
s�t�.

\begin{verbatim}
 ipx_interface �innost [-p] rozhran�\
                typ_r�mce ��slo_s�t�
\end{verbatim}

\BeginTable
\Expand
\BeginFormat
|l|p(0.78\hsize)|.
\_
| �innost | Popis | \\
\_
| add | p�id�v� IPX rozhran�, v�dy je nutn� uv�st n�zev rozhran� a~typ r�mce.
   Pokud nen� uvedeno ��slo s�t�, je zji�t�no odposlechem. | \\
\_
| del | ru�� na�uveden�m rozhran� uveden� r�mec | \\
\_
| delall | ru�� v�echna rozhran� | \\
\_
| check | zobraz� konfiguraci p��slu�n�ho rozhran� | \\
\_
\EndTable
\bskip
\vskip0dd minus 0.5dd

Typ r�mce m��e b�t {\tt 802.2} pro r�mec Ethernet 802.2, {\tt 802.3}
pro r�mec Ethernet 802.3, {\tt EtherII} pro r�mec Ethernet~II a~{\tt
Snap} pro r�mec Ethernet SNAP.

P��klad ru�n� konfigurace rozhran� pro rozhran� {\tt eth0}, r�mec
Ethernet II, ��slo s�t� 12 (prim�rn� interface) a~r�mec 802.3, ��slo
s�t� 13:

\begin{verbatim}
   modprobe ipx
   ipx_interface add -p eth0 etherii 12
   ipx_interface add    eth0 802.3   13
\end{verbatim}

Po t�chto kroc�ch si m��eme ov��it konfiguraci nap��klad takto:

\begin{verbatim}
 monkey:~# cat /proc/net/ipx_interface
 Network  Node_Address Primary Device Frame_Type
 00000012 00A024D6F9F9 Yes     eth0   EtherII
 00000013 00A024D6F9F9 No      eth0   802.3

 monkey:~# cat /proc/net/ipx_route
 Network    Router_Net   Router_Node
 00003333   00000012     0020AFF67402
 00001111   00000013     0020AFF67402
 00000013   Directly     Connected
 00000012   Directly     Connected

 monkey:~# ifconfig eth0
 eth0   
   Link encap:Ethernet  HWaddr 00:A0:24:D6:F9:F9
   inet addr:10.1.1.1  Bcast:10.1.1.255  \
     Mask:255.255.255.0
   IPX/Ethernet II addr:00000012:00A024D6F9F9
   IPX/Ethernet 802.3 addr:00000013:00A024D6F9F9
   UP BROADCAST RUNNING MULTICAST  MTU:1500  \
     Metric:1
   RX packets:587 errors:0 dropped:0 overruns:0
   TX packets:141 errors:0 dropped:0 overruns:0
   Interrupt:10 Base address:0x6100
\end{verbatim}

Spr�vnou funkci s��ov�ho rozhran� m��eme ov��it nap��klad v�pisem
dostupn�ch NetWare server� pomoc� p��kazu {\tt slist}:

\begin{verbatim}
 monkey:~> slist
 Known NetWare File Servers Network   Node Address
 -------------------------------------------------
 PRUM                       0003333   000000000001
 PAT                        0001111   000000000001
\end{verbatim}

Pokud bychom cht�li nakonfigurovan� rozhran� z~n�jak�ho d�vodu zru�it,
mohli bychom postupovat nap��klad takto (na�va�em syst�mu nemus� b�t
nutn� pou�ity v�echny uveden� p��kazy):

\begin{verbatim}
    ipx_configure --auto_interface=off \
       --auto_primary=off
    ipx_interface delall
    rmmod ipx
\end{verbatim}

\subsection{Linux jako IPX sm�rova�}

Pokud si to budeme p��t, Linux m��e fungovat jako sm�rova� IPX
protokolu mezi r�zn�mi s�t�mi. Sm�rov�n� je prov�d�no na��rovni j�dra
opera�n�ho syst�mu podle �daj� ve�sm�rovac� tabulce IPX (vypsat si ji
m��eme u� zm�n�n�m p��kazem

\begin{verbatim}
cat /proc/net/ipx_route
\end{verbatim}

Tuto �innost Linux vykon�v� podobn� jako NW server a~stejn� jako on
mus� ohla�ovat ostatn�m sm�rova��m a~stanic�m, jak� jsou dostupn�
s�t�, a~z�rov�n mus� s�m dle hl�en� ostatn�ch sm�rova�� automaticky
upravovat sv� sm�rovac� tabulky pro IPX protokol. O~tuto �innost se
star� zvl�tn� program.

Tento zvl�tn� program b�v� ozna�ov�n jako d�mon a~sta�� ho vlastn�
jen spustit. O~v�e ostatn� se postar� s�m, pokud p�ed t�m spr�vn�
nakonfigurujeme v�echna s��ov� rozhran�, co� u� ale perfektn� um�me.
Zaj�mav� je, �e pokud budeme pou��vat program Mars, o~kter�m je�t�
bude �e�, nebudeme d�mona pot�ebovat, proto�e je p��mo sou��st�
Marsu. To je velmi sympatick�, i~kdy� mo�n� n�kdy u� m�n� praktick�.\KC


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\section{NetWare zdarma}
\label{mars}

\autor{Milan Ker�l�ger, 11. kv�tna 1998}

\subsection{Novell NetWare}

Novell NetWare (NW) je stabiln� hv�zdou na�nebi lok�ln�ch s�t�, kde
umo��uje stanic�m sd�let r�zn� za��zen� prost�ednictv�m po��ta�ov�
s�t�.  Pracuje na�z�klad� architektury klient-server. Klienty zde jsou
stanice, kter� sd�lej� disky serveru, spole�n� tisk�rny, CD-ROM
a~podobn�. Servery tak maj� v~s�ti v�sadn� postaven� a~jsou u~nich
kladeny vysok� n�roky na�v�kon a~spolehlivost. To vedlo firmu Novell
k~v�voji vysoce specializovan�ho opera�n�ho syst�mu, kter� sice
prakticky um� t�m�� jen sd�let sv� disky, ale zato to um�
perfektn�. Stav� se tak do�zcela vyhran�n� pozice, kdy na�rozd�l od
Unix� nekoncentruje ve�ker� programy a~prost�ed� pro jejich spou�t�n�
do�jedin�ho m�sta, ale p�enech�v� maxim�ln� mo�nou m�ru povinnost� na
stanic�ch. Ty mus� m�t vlastn� opera�n� syst�m a~NetWare se star�
pouze o~to, aby se stanic�m zd�lo, �e v�echna sd�len� za��zen� se
nach�zej� p��mo u~stanice samotn�. Spu�t�n� programy pak b�� p��mo na
jednotliv�ch stanic�ch a~iluze se sd�len�mi za��zen�mi je pro n� tak
dokonal�, �e s~nimi dok�� pracovat t�m�� v�echny programy, i~kdy� pro
provoz v~s�ti p�vodn� v�bec nebyly naps�ny.

P�ed t�m, ne� m��e u�ivatel z~n�jak� stanice vyu��vat sd�len�ch
za��zen� poskytovan�ch serverem, mus� se k~n�mu p�ihl�sit, �ili
prok�zat mu svou identitu pomoc� jm�na a~hesla. Pokud se u�ivatel
�sp�n� p�ihl�s�, jsou mu na�opl�tku a� do�odhl�en� poskytov�ny
ve�ker� zdroje, kter� sm� dan� u�ivatel u��vat. Pr�va k~u��v�n� jsou
evidov�na na�serveru a~u�ivatel�m je p�id�luje spr�vce (administr�tor)
syst�mu.

Linux, se kter�m pracujeme, m� o~mnoho v�t�� mo�nosti, ne� server
s~Novell NetWare. Proto se nelze divit, �e je v~jeho sil�ch dokonce
emulovat �innost samotn�ho NetWare serveru. Linux se pak navenek mimo
jin� tv���, jako by byl NetWare serverem. Nedosahuje sice takov�ch
kvalit jako jeho specializovan� kolega, ale p�esto ho m��e nahradit
v�ce ne� se ct�. P�ipo�teme-li k~tomu prakticky nulovou cenu
a~mnohostrannost samotn�ho Linuxu, kter� m��eme sou�asn� pou��vat
na�spoustu dal��ch v�c�, za�ne b�t tento rys velice zaj�mav�.

\subsection{Co je Mars a~Linware?}

Pokud se Linux chce st�t zd�nliv�m NetWare serverem, mus� um�t
komunikovat pomoc� protokolu IPX, je t�eba implementovat NCP protokol
a~mus� se do�s�t� za��t ohla�ovat pomoc� SAP protokolu. ��m l�pe bude
takto napodobovat sv�j vzor, t�m l�pe pro n�s. Tuto slu�bu jsou
schopny zastat dva programy: Mars a~Linware.


\subsection{Linware -- �esk� produkt}

Autorem
Linware \citeurl{Linware}{ftp://platan.vc.cvut.cz/pub/linux/lwared-0.95/}
je Ale� Dry�k z~�VUT v~Praze. S~v�vojem skon�il v~roce 1995. V~roce
1996 tento projekt o�il, kdy� se Ale� se�el s~Petrem Vandrovcem
a~Jirkou Nov�kem. J. F. Chadima pak provedl z�sadn� z�sah do�k�du, kter�
vedl do�slep� uli�ky a~fakticky k~zastaven� projektu. Petr a~Jirka pak
je�t� sice Linware tro�ku upravili, ale dnes na�jeho dal��m v�voji
prakticky nikdo nepracuje. Linware je dnes ve�funk�n�m stavu, ale pro
jeho dal�� pokra�ov�n� je ho nutn� prakticky cel� p�epsat. Zde se
nab�z� mo�nost pro kohokoliv, kdo by m�l v�li tento zaj�mav� projekt
a~konkurenci Marsu v�st d�l.

\subsection{Mars}

Mars \citeurl{Mars}{http://www.compu-art.de/download/mars_nwe.html}
(\emph{Martin Stovers NetWare Emulator}) je p�vodem z~N�mecka a~je
neust�le zdokonalov�n. Dnes Mars poskytuje t�m�� v�echny slu�by jako
Novell NetWare verze 3.12. Na�jeho v�voji spolupracuje v�ce lid�
z~cel�ho sv�ta a~i~Martin na�projektu st�le pracuje. Jak s�m p��e,
hlavn�m d�vodem, kter� ho p�im�l k~uvoln�n� Marsu do�voln�ho u��v�n�,
bylo uve�ejn�n� Linware.


\subsection{Spole�n� rysy Marsu a~Linware}

Disky ur�en� ke�sd�len� jsou ve�skute�nosti ur�it� adres��e v~lok�ln�m
filesyst�mu Linuxu a~u�ivatel�, kte�� se do�emul�tor� p�ihla�uj�,
odpov�daj� ka�d� norm�ln�mu u�ivateli v~Linuxu. NW p��stupov� pr�va
pak vypl�vaj� z~Unixov�ch pr�v u�ivatele k~soubor�m a~adres���m,
proto�e jsou na�u�ivatele uplat�ov�na stejn�m zp�sobem, jako kdyby
pracoval p��mo v~Linuxu (proto�e program, kter� soubory z~disku �te
a~zas�l� mu je na�stanici, b�� s~jeho UID/GID). Ve�sd�len�ch adres���ch
lze pou��t symbolick�ch linek, ale nelze je omezit na�konkr�tn�
podstrom.

Ani jeden emul�tor nezav�d� implementaci klasick�ch NW pr�v k~adres���m
a~soubor�m, se kter�mi jejich vzor v�hradn� pracuje. Vede to
k~jist�m omezen�m, ale na�druhou stranu to maxim�ln� zjednodu�uje
funkci emul�tor�. Nep��jemnost tak m��e zp�sobit program, kter� p�tr�
po pr�vech v~adres��i, proto�e d�ky t�to filozofii ��dn� pr�va nenajde
i~p�es to, �e m� do�adres��e p��stup. Do�budoucna se m��eme t�it na
implementaci NW pr�v v~Marsu, kterou ji� Martin Stower v~konferenci
ozn�mil.

Hesla pro Linux a~pro emul�tor jsou vedena zvlṻ, proto�e p�i
autentifikaci do�emul�toru nevyhovuje syst�m pou��van� v~Unixu, kde
jsou hesla �ifrov�na tak, �e z~ulo�en� zak�dovan� podoby nelze zp�tn�
zjistit p�vodn� heslo. V�skyt dvou r�zn�ch hesel na�jednom po��ta�i
tak m��e b�t zdrojem drobn�ch pot��� pro u�ivatele syst�mu. Na�druhou
stranu oba programy umo��uj� m�nit heslo do�emul�toru klasick�mi NW
utilitami p��mo ze stanice pomoc� funkc� protokolu NCP stejn�m
zp�sobem, jako m�n�me heslo na�NetWare serveru.

\subsection{Hlavn� rozd�ly mezi Marsem a~Linware}

Pokus�m se stru�n� popsat hlavn� rozd�ly mezi ob�ma programy, kter�
jsou vid�t zven��. Nebudu se zab�vat ani vlastn� stavbou obou program�
ani jejich testov�n�m nap��klad na�rychlost, stabilitu a~jin� dal��
m���tka.  Spolu s~vybudov�n�m kvalitn� metodiky je to n�m�t nejm�n� na
jednu v�t�� samostatnou pr�ci.

Mars je slo�en z~v�ce program�, ale navenek pracujeme jen
s~jedn�m. Ka�d�ho p�ipojen�ho u�ivatele obsluhuje samostatn� proces.
M� jen jeden konfigura�n� soubor, kter� je pom�rn� obs�hl�, p�ehledn�
a~jednotliv� volby jsou v~n�m dob�e dokumentov�ny. Nastavit lze t�m��
v�e a~jen velmi m�lo voleb je nastaviteln�ch pouze p�i kompilaci, co�
p�isp�v� k~u�ivatelsk�mu komfortu. Mars um� vytvo�it tiskov� fronty,
do�kter�ch m��eme zas�lat tiskov� �lohy a~tak� tiskov� server, kter�
m��e odeb�rat �lohy z~jin�ch NW tiskov�ch front. Z~front mohou b�t
�lohy sm�rov�ny p��mo do�linuxov�ho tiskov�ho syst�mu nebo lze vyu��t
jak�koliv jin� tiskov� server, kter� se dok�e na�NW tiskov� fronty
napojit. Bindery datab�ze je ulo�ena v~samostatn�ch souborech
a~obsahuje i~zak�dovan� hesla u�ivatel�. Mezi nejsympati�t�j�� rys
pat�� podpora dlouh�ch jmen, tak�e z~Windows 95 lze pracovat
i~s~dlouh�mi n�zvy (v~NetWare je to tzv. OS/2 namespace) na�NW
disc�ch. Dokumentace je p�im��en�, v~n�meck�m jazyce obs�hlej��.

Linware je jen jeden jedin� d�mon, kter� s�m obsluhuje v�echny
p�ipojen� u�ivatele. Pot�ebuje ov�em pro korektn� b�h dva dal�� d�mony
{\tt IPXRIPD} a~{\tt IPXSAPD}. Konfigura�n� soubor je jeden a~je
oproti Marsu nepom�rn� skrom�j��. Linware nepodporuje tiskov� fronty,
nem� bindery datab�zi. Hesla jsou ulo�ena v~zak�dovan� podob� ve
speci�ln�m souboru {\tt /etc/lwpasswd}. Hlavn� v�hodou Linware je
vlastnost, �e um� zkracovat dlouh� jm�na a~umo��uje tak i~v~prost�ed�
DOSu editovat soubory s~dlouh�mi jm�ny, co� je v�hodn� nap��klad pro
�pravy WWW str�nek z~Windows~3.x, kter� jsou na�mnoha m�stech st�le
pou��v�ny pro svoji nen�ro�nost. Na�druh� stran� neposkytuje soubory
s~dlouh�mi n�zvy pomoc� OS/2 namespace, co� m��e b�t na�p�ek�ku.
Dokumentace je stru�n�.  Linware pot�ebuje pro svou �innost
patch na�j�dro, a~tak se nevyhneme jeho kompilaci.

\subsection{Bootov�n� stanic pomoc� BootROM}

Abychom omezili ���en� vir� ve�sv� po��ta�ov� s�ti, je vhodn� i~p�es
to, �e m�me v~ka�d� stanici harddisky, bootovat stanice pomoc�
BootROMek ze serveru. Obrazy bootovac�ch disket jsou na�serveru
chr�n�ny p�ed viry a~my m�me k~dispozici po restartu stanice �ist�
a~hlavn� funk�n� po��ta�.  BootROMky pou��vaj� k~otev�r�n� obraz� na
serveru stadardn� funkce NCP protokolu, tak�e lze bootovat i~z~obraz�
um�st�n�ch na�emul�torech.  V�jimkou jsou BootROMky, kter� pou��vaj�
v�hradn� RPL protokol. Ten nen� v~Linuxu implementov�n a~tak m�me
v~tomto ohledu sm�lu. Bootovat je samoz�ejm� mo�n� i~bezdiskov� stanice.

\subsection{Nasazen� Marsu a~Linware aneb jak je m�m r�d}

Oba emul�tory provozuji ji� pom�rn� dlouho. D�tsk� nemoci maj� u� za
sebou a~lze je pom�rn� seri�zn�m zp�sobem vyu��vat. Linware pou��v�m
pro jeho schopnost zkracovat dlouh� jm�na soubor� pro sd�len� dom�c�ch
adres��� Linuxu. U�ivatel� tak mohou nap��klad snadno upravovat sv�
WWW str�nky z~DOSu nebo Windows~3.x. Mars jsem nasadil do�jedn� u�ebny
ve׹kole, kde je 11 bezdiskov�ch stanic, kter� bootuj� pomoc� BootROM
a~provozuje se na�nich DOS a~Windows~3.x. Linux nahradil NW server,
b�� na�n�m WWW server, proxy, obstar�v� dial-up
a~podobn�. Subjektivn�m pozorov�n�m lze ��ci, �e ani po zdvojn�soben�
opera�n� pam�ti z~16 na�32MB a~v�m�n� procesoru 486DX4/100 za�Pentium
120 nedosahuje sd�len� disk� rychlosti p�vodn�ho NW serveru. Probl�my
jsou zejm�na v~situaci, kdy stanice s~Windows~3.x pou��vaj� odkl�dac�
soubor na�sd�len�ch disc�ch. Kontrolka HDD se rozsv�t� a~stanice na
dlouh� vte�iny doslova ztuhnou. Probl�m bude nejsp��e v~optimalizaci
p��stupu k~disku, kter� pro tento ��el v~Linuxu asi nen�
nejvhodn�j��. Celkov� p��nos v�m�ny OS (p�i dne�n�ch cen�ch hardware)
ov�em pova�uji p�esto za�kladn�. Na�ostatn�ch m�stech, kde jsem Mars
instaloval, pracuje v�ce ne� uspokojiv�, proto�e nepln� �lohu jedin�ho
serveru se spoustou bezdiskov�ch stanic, a~nejsou na�n�j tak kladeny
extr�mn� n�roky.

\subsection{Z�v�r}

Pokud si mysl�te, �e Mars nebo Linware m��e pln� nahradit NetWare
servery od Novellu, za�ijete nejsp��e zklam�n�. Profesion�ln� �e�en�
od firmy Novell vynik� v~mnoha ohledech, zejm�na v�ak v~rychlosti,
nen�ro�nosti na�hardware a~komplexnosi nab�zen�ch slu�eb. Konkurovat
v�ak nem��e v~po�adavc�ch na�flexibilitu, univerz�lnost a~hlavn� cenu.
To je m�sto, kam Mars a~Linware pat�� a~kde jist� c�t�te i~vy s�lu
Linuxu. Nezb�v�, ne� se sm��it s~dan�m stavem v�c� a~vyu��t p�edev��m
siln� str�nky ka�d�ho �e�en�.\KC

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\begingroup
\def\subsvskip{\vskip1.1\bas plus 0.5\bas}

\section{Co nov�ho na�sunsite.unc.edu?}
\label{sunsite}

\autor{Pavel Jan�k ml., 30. dubna 1998}

%\bskip
\subsection{X11}

\begin{citations}
\item [X11/xutils/modeselect-1.0.tar.gz] menu pro p�ihla�ovac�
obrazovku XDM umo��uj�c� zvolit hloubku displaye
\end{citations}

\subsection{apps}

\begin{citations}
\item [apps/doctools/man/man-1.5d.tar.gz] nov� verze prohl��e�e
manu�lov�ch str�nek podporuj�c� kompresi
\item [apps/editors/X/code\_crusader-0.13.0\_shared.tar.gz] v�vojov�
prost�ed� pro C/C++
\item [apps/editors/X/fte-0.46b4.src.zip] editor umo��uj�c�
zv�raz�ov�n� syntaxe a~inteligentn� odsazov�n�
\item [apps/editors/X/nedit-5.0.2-source.tar.gz] program�torsk� editor
\item [apps/editors/X/xwpe-1.5.8a.tgz] zn�m� klon Borland IDE
\item [apps/editors/X/yudit-0.99.tar.gz] textov� editor pro X-Windows
podporuj�c� unicode
\item [apps/graphics/viewers/X/Upm\_linu.tgz] prohl��e� soubor� ve
form�tu HPGL
\item [apps/tex/simple-2.1.2.tgz] preprocessor upraven� pro \TeX
\item [apps/tex/ts-9804.tgz] TeX shell pro X-Window System
\item [apps/tex/xgod-1.1.tar.gz] Go diagramy pro \TeX
\item [apps/www/servers/shellver-0.0.2.tar.gz] mal� a~jednoduch� WWW
server
\end{citations}

\subsection{commercial}

\begin{citations}
\item [commercial/dbox-1.60.tgz] BBS bal�k pro Linux
\item [commercial/nftp-1.21-linux-x86.tar.gz] klient FTP se z�lo�kami
\end{citations}

\subsection{devel}

\begin{citations}
\item [devel/lang/c/cxref-1.4b.tgz] k���ov� odkazy v~jazyce C
\end{citations}

\subsection{docs}

\begin{citations}
\item [docs/linux-doc-project/man-pages/man-pages-1.19.tar.gz] nov�
manu�lov� str�nky pro Linux
\end{citations}

\subsection{games}

\begin{citations}
\item [games/amusements/divination/xbio-2.0.tar.gz] biorytmy
\item [games/strategy/phalanx-14.tar.gz] nov� verze �achov�ho programu
�esk�ho autora
\end{citations}

\subsection{hardware}

\begin{citations}
\item [hardware/pciutils-1.03.tar.gz] PCI utilitky Martina Mare�e
\end{citations}

\subsection{science}

\begin{citations}
\item [science/visualization/plotting/xFgraphs-1.0.tar.gz] grafy
funkc� pro X-Window System
\end{citations}

\subsection{system}

\begin{citations}
\item [system/backup/tbackup-0.9.tgz] z�lohovac� program s~mo�nost�
inkrement�ln�ho z�lohov�n�
\item [system/bbs/forums-2.0.tgz.tgz] BBS v~Perlu
\item [system/network/admin/firewallct-1.0.8.tar.gz] konfigurace
firewallu p�es HTML rozhran�
\item [system/printing/powercolor-0.3.tar.gz] GUI pro konfiguraci
r�zn�ch parametr� tisk�ren HP Deskjet
\end{citations}

\subsection{utils}

\begin{citations}
\item [utils/compress/unrar-2.03.1.tar.gz] RAR pro Linux
\end{citations}\KC

\endgroup
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% V�pis 
\begin{figure}[dt]
\begin{verbatim}
Summary: graphics memory usage meter
Name: gmemusage
Version: 0.2
Release: 1
Source: http://reality.sgi.com/raju/software/gmemusage-0.2.tar.gz
Copyright: GPL
Group: Utilities/System
Packager: Jan "Yenya" Kasprzak <kas@fi.muni.cz>
BuildRoot: /tmp/gmemusage-root

%description
This tool displays the bar graph describing memory usage of processes
on the Linux box. Uses /proc filesystem.

%prep
%setup

%build
make OPTIM="$RPM_OPT_FLAGS"

%install
mkdir -p $RPM_BUILD_ROOT/usr/X11R6/{bin,man/man1}
make PREFIX=$RPM_BUILD_ROOT/usr/X11R6 install

%files
%attr(0775,root,root) /usr/X11R6/bin/gmemusage
%attr(0644,root,root) /usr/X11R6/man/man1/gmemusage.1
\end{verbatim}
\caption{Soubor SPEC pro {\tt gmemusage}}
\label{specfile}
\end{figure}

\vskip\bas

\section{Tvorba RPM bal�k�}
\label{tvorbarpmbaliku}

\autor{Jan Kasprzak, 15. kv�tna 1998}

V~p�edchoz�ch d�lech na�eho seri�lu o~syst�mu RPM jsme rozeb�rali
v�echny vlastnosti RPM z~hlediska u�ivatele. V~dal�� ��sti se budeme
v�novat RPM z~hlediska vlastn� tvorby RPM bal�k�. Co tedy d�lat,
m�me-li n�jak� software a~chceme jej zabalit do�RPM bal�ku?

\vskip\bas
\subsection{Kompilace}

Prvn� �innost, kterou je nutno p�ed vlastn�m zabalen�m softwaru do
form�tu RPM ud�lat, je zkompilovat software pod Linuxem a~ujistit se,
jestli v�bec pod Linuxem funguje. V~n�sleduj�c�m budeme p�edpokl�dat,
�e software lze bez probl�m� zkompilovat a~�e tak� funguje.  Jako
p��klad si vezmeme program {\tt gmemusage}, kter� slou�� k~m��en�
obsazen� opera�n� pam�ti jednotliv�mi procesy. K~jeho zkompilov�n�
a~nainstalov�n� sta�� spustit p��kazy {\tt make} a~{\tt make install}.

\vskip\bas
\subsection {Rychl� start}

Bez jak�hokoli vysv�tlov�n� uvedu p��klad, jak vyrobit RPM-bal�k {\tt
gmemusage} (vysv�tlen� bude n�sledovat):

\begin{itemize}
\cleft

\item Jako root nakop�rujte soubor \citeurl{Zdrojov� text programu
gmemusage}{http://reality.sgi.com/raju/software/gmemusage-0.2.tar.gz}
do�adres��e {\tt /usr/src/redhat/SOURCES/}.

\item Nakop�rujte soubor na�v�pise \ref{specfile} pod n�zvem {\tt
gmemusage-0.2.spec} do adres��e {\tt /usr/src/redhat/SPECS/}.

\item V~adres��i {\tt /usr/src/redhat/SPECS} spus�te p��kaz
	{\tt rpm -ba gmemusage-0.2.spec}. V�sledkem by m�l b�t zdrojov�
	RPM soubor {\tt gmemusage-0.2-1.src.rpm} v~adres��i
	{\tt/usr/src/redhat/SRPMS} (k~�emu jsou zdrojov� RPM soubory,
	uvid�me pozd�ji) a~bin�rn� RPM pro danou architekturu ({\tt gmemusage}
	jsem zkou�el vyr�b�t pouze pro platformu {\tt i386} a~{\tt sparc},
	ale pro {\tt sparc} m�l program jist� probl�my. Bin�rn� RPM soubor
	je v~{\tt RPMS/i386/gmemusage-0.2-1.i386.rpm}.

% XXXXX Tady je to nejak divne vysazeny, prosim uprav a smaz komentar.
\item Nov� vytvo�en� RPM soubor lze nainstalovat p��kazem
	{\tt rpm -Uvh RPMS/i386/gmemusage-0.2-1.i386.rpm}.
\end{itemize}

\vskip\bas
\subsection{Vysv�tlen�}

A~te� zp�t k~tomu, co jsme vlastn� v~p�edchoz� sekci ud�lali.  Je
vid�t n�kolik z�kladn�ch fakt�:

\begin{itemize}
\item RPM vyu��v� adres�� {\tt /usr/src/redhat}.
\item pou��v� se p��kaz {\tt rpm -ba}
\item tvorba bal�ku je ��zena souborem s~koncovkou {\tt.spec}.
\item vytv��� se z�rove� zdrojov� i~bin�rn� RPM soubor.
\end{itemize}

Adres�� {\tt/usr/src/redhat} obsahuje tyto podadres��e (lze zm�nit
v~souboru {\tt /etc/rpmrc}, co� umo�n� vyr�b�t RPM bal�ky i~jako b�n�
u�ivatel):

\begin{itemize}
\item {\tt SPECS} -- obsahuje {\tt spec}-soubory, kter� ��d� vlastn� sestavov�n�
	RPM bal�ku.
\item {\tt SOURCES} -- zde jsou zdrojov� soubory, ze kter�ch se bal�k vytv���.
\item {\tt BUILD} -- do�tohoto adres��e se rozbal� zdrojov� soubory a~prob�h� zde
	kompilace.
\item {\tt RPMS/architektura} -- sem se ulo�� v�sledn� RPM soubory.
\item {\tt SRPMS} -- zde budou v�sledn� zdrojov� RPM soubory.
\end{itemize}

\subsection{SPEC soubor}

Tento soubor ��d� celou kompilaci. Jeho p��klad byl uveden, jednotliv�
mo�nosti budou podrobn� pops�ny v~n�sleduj�c�ch d�lech tohoto seri�lu.

Na�za��tku souboru je hlavi�ka, kter� popisuje, o~jak� bal�k se jedn�,
odkud poch�z� zdrojov� text, kdo bal�k vytvo�il, jak� je jeho licence,
a~mno�stv� dal��ch informac�, pozd�ji z~bal�ku vypsateln�ch pomoc�
{\tt rpm -q}.

D�le n�sleduj� jednotliv� sekce --- jsou odd�leny kl��ov�m slovem
s~procentem na�za��tku ��dku. V~na�em p��kladu jsou pou�ity tyto sekce:

\begin{itemize}
\item {\tt \%description} -- popis bal�ku, kter� d�le rozv�j� kr�tkou informaci
	ze {\tt Summary:} v~hlavi��e souboru.
\item {\tt \%prep} -- p��prava na�kompilaci. Tato sekce se vykon� jako shellovsk�
	skript a~m� za��kol prov�st rozbalen� zdrojov�ho arch�vu, aplikaci
	p��padn�ch z�plat, konfiguraci a~podobn�. Ve�v��e uveden�m souboru
	tato sekce obsahuje jedin� p��kaz -- makro (pozor, ne sekci)
	{\tt \%setup}, kter� d�l� p�esn� to, �e do�adres��e {\tt BUILD}
	rozbal� arch�v, uveden� v~hlavi��e jako {\tt Source:} z~adres��e
	{\tt SOURCES}. Tedy z~cel�ho tam uveden�ho URL se pou�ije pouze
	��st za�posledn�m lom�tkem. Ostatn� slou�� jen pro informaci.
\item {\tt \%build} -- vlastn� kompilace. Jde op�t o~shellovsk� skript. Zde
	je dobr� si v�imnout prom�nn� {\tt \$RPM\_OPT\_FLAGS} -- jednotliv�
	skripty dost�vaj� od RPM p�ednastaven� n�kter� prom�nn�. Tato
	prom�nn� je jednou z~nich a~obsahuje implicitn� volby p�ed�van�
	kompil�toru pro optimalizaci. Tak�e zm�nou tohoto parametru
	nap��klad v~{\tt /etc/rpmrc} m��eme dos�hnout toho, aby se v�echny
	nov� kompilovan� bal�ky stav�ly s~t�mito volbami.
\item {\tt \%install} -- vlastn� instalace soubor� v~bal�ku. V~b�n�ch p��padech
	se v~tomto skriptu spou�t� p��kaz {\tt make install}. Je ov�em
	dobr�, pokud rekompilace RPM bal�ku neprovede instalaci do�skute�n�ho
	syst�mu, ale n�kam do�vlastn�ho stromu. Tato vlastnost se jmenuje
	Buildroot a~zap�n� se uveden�m stejnojmenn�ho parametru v~hlavi�ce
	{\tt spec}-souboru. RPM pak vytvo�� jmenovan� adres�� a~nastav�
	skript�m (v�etn� toho {\tt \%install}) prom�nnou
	{\tt \$RPM\_BUILD\_ROOT}. V�hoda tohoto p��stupu je v~tom, �e takto
	m��e bez modifikace {\tt spec}-souboru vytvo�it RPM bal�k
	i b�n� u�ivatel, nikoliv jen superu�ivatel.
\item {\tt\%files} -- popisuje, kter� soubory maj� b�t zahrnuty do�RPM bal�ku.
	Tato sekce nen� shellovsk� skript, ale seznam.
	Je mo�no t� specifikovat atributy jednotliv�ch soubor�, ��m�
	umo�n�me vytvo�it RPM bal�k i~b�n�mu u�ivateli. Neuvedeme-li
	atributy, RPM vezme takov� atributy, jak� m� jmenovan� soubor
	v dob� tvorby bal�ku.
\end{itemize}

\subsection{P��kaz rpm --b}

K~vytv��en� RPM bal�k� se pou��v� p��kaz {\tt rpm -b}. Jeho argumentem
je {\tt .spec} soubor. Akceptuje n�sleduj�c� p�ep�na�e:

\begin{itemize}
\item {\tt -p} Vykon� pouze {\tt\%prep} sekci ve�{\tt spec}-souboru.

\item {\tt -l} Zkontroluje, jestli soubory jmenovan� v~sekci {\tt\%files}
               skute�n� existuj�.
\item {\tt -c} Vykon� {\tt\%prep} a~{\tt\%build}.
\item {\tt -i} Vykon� {\tt\%prep}, {\tt\%build} a~{\tt\%install}.
\item {\tt -b} Vytvo�� bin�rn� RPM soubor (po vykon�n� {\tt\%prep},
{\tt\%build} a~{\tt\%install}).
\item {\tt -a} Vytvo�� bin�rn� a~zdrojov� RPM soubor (po vykon�n�
{\tt\%prep}, {\tt\%build} a~{\tt\%install}).
\item {\tt --short-circuit} Pou��v� se ve�spojitosti s~{\tt -bc} a~{\tt -bi}.
	Vykon� pouze jmenovanou sekci, bez p�edchoz�ch.
\item {\tt --timecheck ��slo} Vyp��e varov�n�, pokud se sna��me do�RPM bal�ku
	zabalit soubor star�� ne� dan� po�et sekund.
\item {\tt --clean} Sma�e kompila�n� strom p��slu�n�ho bal�ku v~adres��i
	{\tt/usr/src/redhat/BUILD} po skon�en� tvorby bal�ku.
\item {\tt --test} Otestuje syntaxi {\tt spec}-souboru, neprov�d�
��dn� kompila�n� akce.
\item {\tt --sign} Vytvo�� bal�k s~PGP podpisem.
\end{itemize}

Krom� {\tt rpm -b} lze tak� pou��t {\tt rpm -t} a~jako parametr uv�st
soubor ve�form�tu {\tt tar.gz}. Takov�to arch�v se rozbal� a~jako {\tt
spec}-soubor se pou�ije prvn� soubor s~koncovkou {\tt .spec}, obsa�en�
v~arch�vu. P�i kompilaci se samoz�ejm� neprov�d� sekce {\tt\%prep}.

\subsection{Zdrojov� RPM soubory}

Ji� n�kolikr�t padla zm�nka o~zdrojov�ch RPM souborech.  To je soubor
s~koncovkou {\tt .src.rpm}. Takov�to soubor obsahuje v~sob� {\tt
spec}-soubor p��slu�n�ho bal�ku, d�le v�echny soubory pot�ebn�
k~sestaven� bin�rn�ho RPM bal�ku (zejm�na soubory uveden� v~hlavi�ce
%BCh: nebo n�sl. ��dek; a� si Yenya nebo n�kdo jin� zodpov�dn� vybere :-)
% k~sestaven� bin�rn�ho RPM bal�ku (zejm�na ty, kter� jsou uveden� v~hlavi�ce
v~polo�ce {\tt Source}) a~p��padnou ikonku RPM bal�ku.

Zdrojov� RPM bal�k lze zpracov�vat t�emi zp�soby. Prvn� mo�nost je
tento bal�k nainstalovat pomoc� {\tt rpm -i}. V�echny soubory, kter�
zdrojov� bal�k obsahuje, jsou nainstalov�ny do�adres��e {\tt SOURCES}
a~{\tt spec}-soubor je pot� p�esunut do�adres��e {\tt SPECS}.  Dal��
dv� mo�nosti jsou vytvo�en� bin�rn�ho RPM bal�ku pro danou
architekturu, p��padn� vytvo�en� jak bin�rn�ho, tak i~zdrojov�ho RPM
bal�ku. Dos�hneme toho p��kazem {\tt rpm --recompile bal�k.src.rpm},
p��padn� {\tt rpm --rebuild bal�k.src.rpm}. Oproti p��kazu {\tt rpm
-ba} se nav�c implicitn� sma�e kompila�n� adres�� tak, jako kdybychom
pou�ili {\tt --clean}.

To zat�m jako �vod do�problematiky tvorby vlastn�ch RPM bal�k� sta��.
P���t� se podrobn�ji vr�t�me k~form�tu {\tt spec}-souboru
a~k~podrobnostem t�to problematiky.\KC

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\section{LINUX --- Internet server (druh� upraven� vyd�n�)}
\label{linuxinetserver}

\autor{Michal Pol�k, 22. dubna 1998}

Po �ten��sky velmi �sp�n�m vyd�n� knihy LINUX --- Internet server
p�ich�z� na�pulty druh� upraven� vyd�n�.  Tato kn��ka dostala od
redakce �esk�ho CHIPu ocen�n� \uv{CHIP tip}. Hned v~�vodu mus�m
podotknout, �e mi tato kniha poskytla mnoho pou�en� a~tedy tento
�l�nek bude lad�n v~opa�n�m duchu, ne� b�v� v�t�ina recenz� Mirky
Sp��ilov� v~MF DNES\ldots

Cel� publikace je naps�na �tivou formou a~m�sty oko�en�na vtipn�mi
pozn�mkami. Pro znalce prvn�ho vyd�n� pouze uvedu, �e v~druh�m vyd�n�
chyb� podkapitola o~Gopheru (pou��v� to je�t� dneska n�kdo?) a~naopak
p�ibyla zm�nka o~bezt��dn�ch adres�ch a~podkapitola s~n�zvem \uv{Za
Web interaktivn�}, ostatn� z�st�v� v~p�vodn�m zn�n�. V�em, kte�� se
s~touto knihou je�t� nesetkali a~pracuj� s~Linuxem, v�ele doporu�uji
nenechat si tuto knihu uj�t a~m�t ji v~pohotovosti, nejl�pe
v~bl�zkosti po��ta�e. V~po��tku se v�m ani nestihne zapr�it. :-)
Nejenom administr�to�i by m�li v�d�t, jak zhruba zevnit� funguje
Internet a~s�t� v�bec. Pokud plat� vztah u�ivatel LINUXu =
administr�tor (aspo� na�lok�ln�m stroji), je minul� v�ta bezp�edm�tn�.

Kniha je rozd�lena do�t�� ��st�: \uv{Transportn� syst�m},
\uv{Aplika�n� slu�by} a~\uv{Slou��m lidu}.

Kapitola \uv{Transportn� syst�m} je technologicky zam��ena, tj. zab�v�
se p�enosov�mi protokoly, konfigurac� slu�eb a~dal��mi mechanismy,
kter� jsou nezbytn� k~provozov�n� slu�eb Internetu. �ten�� se sezn�m�
se s��ov�mi vrstvami, probl�mem IP adres --- t��dy, p�id�lov�n�,
pods�t�, masky pods�t�, bezt��dn� adresy, sm�rov�n�, z�kladn�
mechanismy TCP.

P�i�em� pojmem bezt��dn� adresa se vrac�me zp�t ke�ko�en�m, kdy
neexistovalo rozd�len� IP adres na�t��dy A, B, C, D. Rychle rostouc�
po�et zapojen�ch s�t� a~po��ta�� si vynutil nov� p��stup k~adres�m,
kdy adresa je rozd�lena pouze na�dv� ��sti --- adresa s�t� a~lok�ln�
adresa v~n�.

Dal�� ��st kapitoly se zab�v� zprovozn�n�m TCP/IP ({\tt ifconfig},
{\tt route}, {\tt ping}, {\tt traceroute}, {\tt gated}), p�ipojen�m
s�riovou linkou SLIP, PPP, podrobn�m popisem DNS, konfigurac� port�,
synchronizac� �asu, nezapom�n� se ani na�bezpe�nost --- TCP wrapper,
firewall.

Na�z�v�r kapitoly se dostala spr�va s�t� (ve�smyslu kabel�e,
zapojov�n� a~konfigurace po��ta��, aktivn�ch s��ov�ch prvk� a~dal��ch
za��zen�, kontrola jejich �innosti), kterou ocen� zejm�na p��znivci
okenn�ho ovl�d�n�. Pojedn�v� se toti� o~programech {\tt tkined} a~{\tt
scotty}, ve�kter�ch si mj. m��ete sch�ma va�� s�t� vlastnoru�n�
namalovat. V�e je realizov�no v~protokolu SNMP, je tedy zapot�eb� m�t
je�t� SNMP agenty.

Kapitola \uv{Aplika�n� slu�by} se zab�v� zprovozn�n�m jednotliv�ch
informa�n�ch slu�eb. V~prvn� �ad� se jedn� o~{\tt telnet} a~{\tt
rlogin}. Kniha v�ak zcela opr�vn�n� vyzdvihuje a~doporu�uje pou��vat
rad�ji \emph{Secure Shell}. Dal��m t�matem je elektronick� po�ta --- od
popisu p�ed�v�n� zpr�v, struktury zpr�v, konfigurace, a� po diskuse
o~{\tt sendmailu}, IDA roz���en� a~aliasech. N�sleduje pojedn�n�
o~UUCP a~elektronick�ch skupin�ch --- zde jsou zm�n�ny programy {\tt
listproc}, {\tt Majordomo}, {\tt TULP}. My se ale zastav�me a�
u~popisu slu�by FTP, kter� je zde zd�razn�na coby nejmen�� spole�n�
jmenovatel pro zve�ejn�n� statick�ch informac� na�Internetu. Zde se
�ten�� dozv� nejenom mechanismus fungov�n�, ale i~detailn� konfiguraci
a~n�kolik u�ite�n�ch rad --- nap�. automatickou konverzi soubor�
(pomoc� {\tt wu-ftpd}).  Z~dopl�kov�ch slu�eb k~FTP je je�t� zm�n�n
program Index Master (bin�rka se jmenuje {\tt index}) na�automatickou
tvorbu informac� o~souborech v~jednotliv�ch adres���ch, �i programy
{\tt mirror} a~{\tt mirror-master}. K~�emu asi slou��?

\begin{quote}
D�ky ok�nk�m (sliding windows) m��e odes�latel vyslat n�kolik TCP
segment� a~ne�ekat p�ed ka�d�m, a� doraz� potvrzen�
p�edchoz�ho. V�sledkem je v�znamn� zrychlen� komunikace, ov�em
s~lidskou tv��� --- p��jemce si diktuje, kolik dat snese. Soci�ln�
demokracii by se takov� p��stup jist� zamlouval.
\end{quote}

Nejv�znamn�j�� a~nejrozs�hlej�� podkapitolou je samoz�ejm� WWW. Po
�vodn�m zah��vac�m sezn�men� se se z�kladn�mi pojmy p�ich�z� na��adu
popis serveru Apache, kter� pr� byl na�za��tku roku 1998 nasazen na
45\% v�ech WWW server� na�sv�t�. V~dob� psan� textu knihy ji� byl
k~m�n� Apache 1.3 beta, kter� by m�l podporovat i~Microsoft Windows 95
a~NT, ale auto�i dali rad�ji p�ednost popisu Apache 1.2.5. Rozeb�r� se
zde v�e od vlastn� konfigurace, problematiky CGI script�, p�es
omezov�n� u�ivatel� �i dosahu p��kaz� a� po skute�n� lah�dky, jako je
nap�. virtu�ln� server, vkl�d�n� vsuvek serverem nebo podm�n�n�
vkl�d�n� ��st� dokument� nebo konfiguraci PROXY serveru. Probl�m
�e�tiny na�Webu je rozeps�n do�samostatn� podkapitoly.

Nov� p�ibyv�� podkapitola \uv{Za Web interaktivn�} obsahuje zm�nku
o~jazyku PHP --- pro stejn� neznal� jako j� --- \emph{Proffessional
Home Page}. Jedn� se o~jednoduch� jazyk, kter� se zapisuje jako
sou��st WWW str�nky, ale tyto instrukce se ke�klientovi nedostanou,
server je s�m vykon�. Na�jejich z�klad� vlo�� do�str�nky d�l��
informace, obsah jin�ho souboru �i v�sledek datab�zov�ho
dotazu. Mo�nost pracovat s~SQL dotazy slibuje prudk� rozmach PHP.

Posledn� podkapitolou jsou informace o~provozu a~konfiguraci
\uv{Usenet News}.

T�et� kapitola \uv{Slou��m lidu} popisuje slu�by Linuxu pro po��ta�e
u�ivatel� v~lok�ln� s�ti.  Hlavn� seznamuje s~emul�tory zn�m�ch
n�stroj� pro sd�len� prost�edk�. Jde hlavn� o~NetWare, Sambu (pro
Microsoft Windows) a~AppleTalk.

Na�z�v�r jsem pro v�s vybral je�t� jeden z~v�rok� aspiruj�c�ch na
za�azen� do�rubriky \uv{Zasm�li jsme se}.

\begin{quote}
Pokud jste nikdy neupravovali sendmail.cf, nejste skute�n� spr�vce
Unixu.\\
Jestli�e jste to ud�lali v�c ne� jednou, jste bl�zen.
\end{quote}

V���m, �e se v�m bude kniha l�bit. Pokud si ji chcete zakoupit,
samoz�ejm� m��ete. M�la by b�t k~dost�n� v~ka�d�m po��ta�ov�m
knihkupectv� a~tak� si ji m��ete objednat p��mo na�serveru spole�nosti
Neokortex \citeurl{Neokortex, spol. s~r. o.}{http://www.neo.cz}.\KC

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\section{Zasm�li jsme se!}
\label{zasmali}

\autor{Pavel Jan�k ml., 12. kv�tna 1998}

Sm�ch je ko�en�m �ivota, a~proto hned za�neme jedn�m vtipem:

% Tady zkontroluj, jestli se pri sazbe zobrazi dobre \emph{}
\begin{quote}
\emph{Ot�zka}: Tak u� se n�m po Linuxu dostaly do�kosmu i~Windowsy.
P��mo na m�s�c. A~v�te, co tam d�laj�?\\
\emph{Odpov��}: Padaj� 6x pomaleji\ldots\\
Jan Stan��ek v~konferenci \emph{jokes@satoya.cz}
\end{quote}

B�t p�ihl�en v~konferenci \emph{jokes@satoya.cz} se opravdu vyplat� ;-)

\begin{quote}
... to byl �� n�pad, �e se Windows 95 budou kon�it stisknut�m tla��tka
Start?
\end{quote}

Ale ani v~konferenci \emph{linux-kernel@vger.rutgers.edu} nen� nouze
o~humor. Tento m�s�c jsem se v�ak sm�l pouze jednou, proto�e do�lo
k~po�kozen� seznamu p�ihl�en�ch, co� jsem post�ehl bohu�el a� po dvou
dnech, kdy jsem m�l v~p�ihr�dce {\tt LinuxKernel} pouh�ch 5
dopis�. Ale to jen tak na�okraj.  Tak tedy, kdy jsem se zasm�l?
Za�neme od za��tku. Alan Cox ve�sv�ch dopisech nikdy nepou��v�
signaturu. Tento m�s�c ji jednou pou�il\ldots

\begin{quote}
Knowledge is power\\
Information is a~weapon\\
Truth is an inconvenience\\
Welcome to the corporate mindset

Free Software, Free Speech\\
Free Information, Free Association\\
Free Thought, Free World\\
Free Your Mind\\
\linka
V�d�n� je s�la\\
Informace je zbra�\\
Pravda je nep��jemnost\\
V�tejte v~komer�n�m my�len�!

Free software, svoboda projevu\\
svoboda informac�, svoboda shroma��ov�n�\\
svobodn� my�len�, svobodn� sv�t\\
Osvobo�te svou mysl!

Signatura Alana Coxe
\end{quote}

Milana Ker�l�gera u� nebav� (stejn� jako i~n�kter� dal��) ��st
v~\emph{linux@muni.cz} p��sp�vky, kter� je mo�no zodpov�d�t po
t��minutov�m hled�n� na�n�kter�m z~vyhled�vac�ch server�. Milan k~tomu
dnes poznamenal:

\begin{quote}
O� by sv�t byl jednodu���, kdyby v�ichni um�li ��st! ;-)
\end{quote}

\KC

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\OLN
\section{Linuxov� noviny a~jejich ���en�}
\label{OLN}

\autor{}

Linuxov� noviny vyd�v� �esk� sdru�en� u�ivatel� opera�n�ho syst�mu
Linux pro sv� p��znivce a~sympatizanty. Vlastn�kem autorsk�ch pr�v
k~tomutu textu jako celku je Pavel Jan�k~ml. \hbox{(\PJemail)}.
Autorsk� pr�va k~jednotliv�m �l�nk�m z�st�vaj� jejich autor�m.

Tento text m��e b�t ���en a~ti�t�n bez omezen�. Pokud pou�ijete ��st
n�kter�ho �l�nku zde uve�ejn�n�ho v~jin�ch d�lech, mus�te uv�st jm�no
autora a~��slo, ve�kter�m byl �l�nek uve�ejn�n.

Linuxov� noviny jsou otev�eny ka�d�mu, kdo by cht�l na�im �ten���m sd�lit
n�co zaj�mav�ho. P��sp�vky (ve�form�tu �ist�ho textu v~k�dov�n� ISO~8859-2)
pos�lejte na�adresu \citeurl{Adresa redakce}{mailto:noviny@linux.cz}. Autor
nem� n�rok na�finan�n� odm�nu a~souhlas� s~podm�nkami uveden�mi v~tomto
odstavci.  Vydavatel� si vyhrazuj� pr�vo rozhodnout, zda V� p��sp�vek
uve�ejn�, �i nikoli.

Registrovan� zn�mky pou�it� v~tomto textu jsou majetkem jejich
vlastn�k�.

Cht�l bych pod�kovat Fakult� informatiky Masarykovy university v~Brn�,
INET, a.s., Juraji Bedn�rovi a~spole�nosti OptiCom za�poskytnut�
diskov�ho prostoru pro Linuxov� noviny.

Linuxov� noviny m��ete naj�t na�akademick� s�ti CESNET
\citeurl{Linuxov� noviny na�s�ti
CESNET}{ftp://ftp.fi.muni.cz/pub/linux/local/noviny}, na�s�ti IBM
Global Network na�adrese \citeurl{Linuxov� noviny na�s�ti IBM Global
Network}{ftp://ftp.inet.cz/pub/People/Pavel.Janik/noviny}, na�serveru
�asopisu Net��ik \citeurl{Slovensk� zrcadlo Linuxov�ch
novin}{ftp://netacik.sk/pub/linux/cz-noviny}, kter� je p�ipojen do
slovensk�ho SIXu, p��padn� na�serveru spole�nosti OptiCom
\citeurl{Linuxov� noviny -- OptiCom}{http://www.mathew.sk/noviny}.

Linuxov� noviny jsou k~dispozici tak� ve�form�tu HTML na
adrese \citeurl{Linuxov� noviny ve�form�tu
HTML}{http://www.linux.cz/noviny}.\KC

\KOLN

\tableofcontents

\bye


