<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
		<id>http://wiki.linux360.ro/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Csdexter</id>
		<title>linux360 - User contributions [en]</title>
		<link rel="self" type="application/atom+xml" href="http://wiki.linux360.ro/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Csdexter"/>
		<link rel="alternate" type="text/html" href="http://wiki.linux360.ro/index.php/Special:Contributions/Csdexter"/>
		<updated>2026-04-19T14:48:51Z</updated>
		<subtitle>User contributions</subtitle>
		<generator>MediaWiki 1.29.2</generator>

	<entry>
		<id>http://wiki.linux360.ro/index.php?title=User:Csdexter&amp;diff=3559</id>
		<title>User:Csdexter</title>
		<link rel="alternate" type="text/html" href="http://wiki.linux360.ro/index.php?title=User:Csdexter&amp;diff=3559"/>
				<updated>2008-11-16T20:10:36Z</updated>
		
		<summary type="html">&lt;p&gt;Csdexter: Added Skype contact&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Radu - Eosif Mihăilescu==&lt;br /&gt;
[mailto:radu.mihailescu@linux360.ro poştă electronică], GSM900: +40 (721) 294400, Jabber: csdexter@jabber.linux360.ro, ICQ: 27762040, Y!M: csdexter, AIM: csdexter, MSN: rmihailescu@hotmail.com, Skype: csdexter&lt;/div&gt;</summary>
		<author><name>Csdexter</name></author>	</entry>

	<entry>
		<id>http://wiki.linux360.ro/index.php?title=linux360:Sandbox&amp;diff=3515</id>
		<title>linux360:Sandbox</title>
		<link rel="alternate" type="text/html" href="http://wiki.linux360.ro/index.php?title=linux360:Sandbox&amp;diff=3515"/>
				<updated>2008-02-05T08:50:12Z</updated>
		
		<summary type="html">&lt;p&gt;Csdexter: Reverted Sandbox&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is the Sandbox of this Wiki ... feel free to test your Wiki proofing skills here.&lt;br /&gt;
&lt;br /&gt;
{{Sandbox}}&lt;/div&gt;</summary>
		<author><name>Csdexter</name></author>	</entry>

	<entry>
		<id>http://wiki.linux360.ro/index.php?title=linux360:About&amp;diff=3446</id>
		<title>linux360:About</title>
		<link rel="alternate" type="text/html" href="http://wiki.linux360.ro/index.php?title=linux360:About&amp;diff=3446"/>
				<updated>2007-08-25T12:13:13Z</updated>
		
		<summary type="html">&lt;p&gt;Csdexter: Removed fucking spam&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;are we there yet ?&lt;/div&gt;</summary>
		<author><name>Csdexter</name></author>	</entry>

	<entry>
		<id>http://wiki.linux360.ro/index.php?title=Cum_dau_net_mai_departe&amp;diff=3445</id>
		<title>Cum dau net mai departe</title>
		<link rel="alternate" type="text/html" href="http://wiki.linux360.ro/index.php?title=Cum_dau_net_mai_departe&amp;diff=3445"/>
				<updated>2007-08-15T10:26:20Z</updated>
		
		<summary type="html">&lt;p&gt;Csdexter: /* Configurarea SNAT-ului */ Promoted content out of &amp;quot;lame excuse for&amp;quot; status&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Scopul Ghidului==&lt;br /&gt;
Setarea unui server de internet folosind SNAT&lt;br /&gt;
&lt;br /&gt;
==Configurarea Serverului==&lt;br /&gt;
Mai intai configuram net-ul pentru server. In functie de distributie sunt utilitare care fac acest lucru automat.&lt;br /&gt;
Asa cum bine stim (sau ar trebui) majoritatea fisierelor de configurare a unui SO linux se gasesc in directorul /etc , iar scripturile&lt;br /&gt;
de inceput in /etc/rc.d pe sistemele ce folosesc sistemul BSD iar pe celelalte in /etc/init.d/ . Pentru a afla cum sa setezi net-ul pentru distributia ta consulta manualul respectivei distributii.&lt;br /&gt;
Setarea manuala a retelei (valabila pentru toate distributiile) se face cu urmatoarele comenzi (presupunand ca suportul necesar pentru&lt;br /&gt;
placile de retea se afla in kernel sau modulele aferente sunt incarcate):&lt;br /&gt;
Scriptul urmator se va salva ca &amp;lt;tt&amp;gt;net.sh&amp;lt;/tt&amp;gt;&amp;lt;code bash&amp;gt;#!/bin/bash&lt;br /&gt;
# net.sh, public domain&lt;br /&gt;
# ---------------------&lt;br /&gt;
# Configureaza corespunzator interfetele de retea&lt;br /&gt;
&lt;br /&gt;
# Parametrii (de completat cu cei primiti de la ISP)&lt;br /&gt;
placa_net=eth0&lt;br /&gt;
placa_retea=eth1&lt;br /&gt;
ip_net=10.0.23.32&lt;br /&gt;
netmask_net=255.255.0.0&lt;br /&gt;
gateway_net=10.0.0.1&lt;br /&gt;
dns1=123.123.123.123&lt;br /&gt;
dns2=123.123.123.124&lt;br /&gt;
ip_retea=192.168.0.1&lt;br /&gt;
netmask_retea=255.255.255.0&lt;br /&gt;
# Sfarsitul zonei configurabile&lt;br /&gt;
&lt;br /&gt;
#configurarea net-ului&lt;br /&gt;
/sbin/ifconfig $placa_net $ip_net netmask $netmask_net &lt;br /&gt;
/sbin/route add default gw $gateway_net dev $placa_net&lt;br /&gt;
&lt;br /&gt;
# Facem backup la orice fisier avem de gand sa modificam&lt;br /&gt;
rm -f /etc/resolv.conf-netsh-backup&lt;br /&gt;
cp /etc/resolv.conf /etc/resolv.conf-netsh-backup&lt;br /&gt;
echo &amp;quot;$dns1&amp;quot;&amp;gt;/etc/resolv.conf&lt;br /&gt;
echo &amp;quot;$dns2&amp;quot;&amp;gt;&amp;gt;/etc/resolv.conf&lt;br /&gt;
&lt;br /&gt;
#configurarea retelei&lt;br /&gt;
/sbin/ifconfig $placa_retea netmask $netmask_retea&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Configurarea SNAT-ului==&lt;br /&gt;
Scriptul urmator se va salva ca &amp;lt;tt&amp;gt;snat.sh&amp;lt;/tt&amp;gt;&amp;lt;code bash&amp;gt;#!/bin/bash&lt;br /&gt;
# snat.sh, public domain&lt;br /&gt;
# ----------------------&lt;br /&gt;
# Configureaza un firewall minim cu SNAT&lt;br /&gt;
&lt;br /&gt;
# Parametrii&lt;br /&gt;
placa_net=eth0&lt;br /&gt;
placa_retea=eth1&lt;br /&gt;
clasa_retea=192.168.0.0&lt;br /&gt;
# Sfarsitul zonei configurabile&lt;br /&gt;
&lt;br /&gt;
iptables=`which iptables`&lt;br /&gt;
&lt;br /&gt;
#mai jos nu edita decat daca stii ce faci&lt;br /&gt;
echo &amp;quot;1&amp;quot; &amp;gt; /proc/sys/net/ipv4/ip_forward&lt;br /&gt;
# Curatire&lt;br /&gt;
$iptables -t filter -F&lt;br /&gt;
$iptables -t nat -F&lt;br /&gt;
$iptables -t mangle -F&lt;br /&gt;
# Politici&lt;br /&gt;
$iptables -P FORWARD DROP&lt;br /&gt;
$iptables -t nat -A POSTROUTING -o $placa_net -j MASQUERADE&lt;br /&gt;
$iptables -A FORWARD -i $placa_retea -j ACCEPT&lt;br /&gt;
$iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Final==&lt;br /&gt;
Asa acum ca avem cele 2 scripturi urmeaza sa le facem executabile si sa le punem sa porneasca la boot-are.&lt;br /&gt;
Pentru a le face executabile vom da comenzile:&amp;lt;code&amp;gt;# chmod +x net.sh&lt;br /&gt;
# chmod +x snat.sh&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;quot;#&amp;quot; simbolizeaza prompt-ul de root.&lt;br /&gt;
Urmatorul pas este adaugarea lor in scriptul rc.local care il gasiti fie in /etc/rc.d fie in /etc/init.d sau in locul indicat de manualul distributiei.&lt;br /&gt;
&lt;br /&gt;
Iar acum suntem in posesia unui server de linux care stie sa si &amp;quot;dea&amp;quot; net-ul mai departe. Si cum stiu ca sunteti niste admini responsabili, va apucati sa cititi mai multe despre &amp;lt;tt&amp;gt;[[Iptables_romana|iptables]]&amp;lt;/tt&amp;gt;, si cum se securizeaza acest server, si ce servicii le mai puteti &lt;br /&gt;
oferi clientilor.&lt;br /&gt;
&lt;br /&gt;
[[Category:HowTo]]&lt;br /&gt;
[[Category:Networking]]&lt;br /&gt;
[[Category:Routing]]&lt;/div&gt;</summary>
		<author><name>Csdexter</name></author>	</entry>

	<entry>
		<id>http://wiki.linux360.ro/index.php?title=Cum_dau_net_mai_departe&amp;diff=3444</id>
		<title>Cum dau net mai departe</title>
		<link rel="alternate" type="text/html" href="http://wiki.linux360.ro/index.php?title=Cum_dau_net_mai_departe&amp;diff=3444"/>
				<updated>2007-08-15T10:23:52Z</updated>
		
		<summary type="html">&lt;p&gt;Csdexter: /* Configurarea Serverului */ Promoted content out of &amp;quot;lame excuse for&amp;quot; state&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Scopul Ghidului==&lt;br /&gt;
Setarea unui server de internet folosind SNAT&lt;br /&gt;
&lt;br /&gt;
==Configurarea Serverului==&lt;br /&gt;
Mai intai configuram net-ul pentru server. In functie de distributie sunt utilitare care fac acest lucru automat.&lt;br /&gt;
Asa cum bine stim (sau ar trebui) majoritatea fisierelor de configurare a unui SO linux se gasesc in directorul /etc , iar scripturile&lt;br /&gt;
de inceput in /etc/rc.d pe sistemele ce folosesc sistemul BSD iar pe celelalte in /etc/init.d/ . Pentru a afla cum sa setezi net-ul pentru distributia ta consulta manualul respectivei distributii.&lt;br /&gt;
Setarea manuala a retelei (valabila pentru toate distributiile) se face cu urmatoarele comenzi (presupunand ca suportul necesar pentru&lt;br /&gt;
placile de retea se afla in kernel sau modulele aferente sunt incarcate):&lt;br /&gt;
Scriptul urmator se va salva ca &amp;lt;tt&amp;gt;net.sh&amp;lt;/tt&amp;gt;&amp;lt;code bash&amp;gt;#!/bin/bash&lt;br /&gt;
# net.sh, public domain&lt;br /&gt;
# ---------------------&lt;br /&gt;
# Configureaza corespunzator interfetele de retea&lt;br /&gt;
&lt;br /&gt;
# Parametrii (de completat cu cei primiti de la ISP)&lt;br /&gt;
placa_net=eth0&lt;br /&gt;
placa_retea=eth1&lt;br /&gt;
ip_net=10.0.23.32&lt;br /&gt;
netmask_net=255.255.0.0&lt;br /&gt;
gateway_net=10.0.0.1&lt;br /&gt;
dns1=123.123.123.123&lt;br /&gt;
dns2=123.123.123.124&lt;br /&gt;
ip_retea=192.168.0.1&lt;br /&gt;
netmask_retea=255.255.255.0&lt;br /&gt;
# Sfarsitul zonei configurabile&lt;br /&gt;
&lt;br /&gt;
#configurarea net-ului&lt;br /&gt;
/sbin/ifconfig $placa_net $ip_net netmask $netmask_net &lt;br /&gt;
/sbin/route add default gw $gateway_net dev $placa_net&lt;br /&gt;
&lt;br /&gt;
# Facem backup la orice fisier avem de gand sa modificam&lt;br /&gt;
rm -f /etc/resolv.conf-netsh-backup&lt;br /&gt;
cp /etc/resolv.conf /etc/resolv.conf-netsh-backup&lt;br /&gt;
echo &amp;quot;$dns1&amp;quot;&amp;gt;/etc/resolv.conf&lt;br /&gt;
echo &amp;quot;$dns2&amp;quot;&amp;gt;&amp;gt;/etc/resolv.conf&lt;br /&gt;
&lt;br /&gt;
#configurarea retelei&lt;br /&gt;
/sbin/ifconfig $placa_retea netmask $netmask_retea&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Configurarea SNAT-ului==&lt;br /&gt;
Scriptul urmator se va salva ca &amp;lt;tt&amp;gt;snat.sh&amp;lt;/tt&amp;gt;&amp;lt;code&amp;gt;#!/bin/sh&lt;br /&gt;
placa_net=eth0&lt;br /&gt;
placa_retea=eth1&lt;br /&gt;
clasa_retea=192.168.0.0&lt;br /&gt;
iptables=/usr/sbin/iptables&lt;br /&gt;
&lt;br /&gt;
#mai jos nu edita decat daca stii ce faci&lt;br /&gt;
echo &amp;quot;1&amp;quot; &amp;gt; /proc/sys/net/ipv4/ip_forward&lt;br /&gt;
$iptables -t nat -F&lt;br /&gt;
$iptables -F FORWARD&lt;br /&gt;
$iptables -P FORWARD DROP&lt;br /&gt;
$iptables -t nat -A POSTROUTING -o $placa_net -j MASQUERADE&lt;br /&gt;
$iptables -A FORWARD -i $placa_retea -j ACCEPT&lt;br /&gt;
$iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Final==&lt;br /&gt;
Asa acum ca avem cele 2 scripturi urmeaza sa le facem executabile si sa le punem sa porneasca la boot-are.&lt;br /&gt;
Pentru a le face executabile vom da comenzile:&amp;lt;code&amp;gt;# chmod +x net.sh&lt;br /&gt;
# chmod +x snat.sh&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;quot;#&amp;quot; simbolizeaza prompt-ul de root.&lt;br /&gt;
Urmatorul pas este adaugarea lor in scriptul rc.local care il gasiti fie in /etc/rc.d fie in /etc/init.d sau in locul indicat de manualul distributiei.&lt;br /&gt;
&lt;br /&gt;
Iar acum suntem in posesia unui server de linux care stie sa si &amp;quot;dea&amp;quot; net-ul mai departe. Si cum stiu ca sunteti niste admini responsabili, va apucati sa cititi mai multe despre &amp;lt;tt&amp;gt;[[Iptables_romana|iptables]]&amp;lt;/tt&amp;gt;, si cum se securizeaza acest server, si ce servicii le mai puteti &lt;br /&gt;
oferi clientilor.&lt;br /&gt;
&lt;br /&gt;
[[Category:HowTo]]&lt;br /&gt;
[[Category:Networking]]&lt;br /&gt;
[[Category:Routing]]&lt;/div&gt;</summary>
		<author><name>Csdexter</name></author>	</entry>

	<entry>
		<id>http://wiki.linux360.ro/index.php?title=User_talk:Kilah&amp;diff=3440</id>
		<title>User talk:Kilah</title>
		<link rel="alternate" type="text/html" href="http://wiki.linux360.ro/index.php?title=User_talk:Kilah&amp;diff=3440"/>
				<updated>2007-04-15T22:22:47Z</updated>
		
		<summary type="html">&lt;p&gt;Csdexter: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Probleme==&lt;br /&gt;
&lt;br /&gt;
Kilah, te rog formateaza-ti articolul(ele) cum trebuie si te rog repara traznaia care ai facut-o cu Sandbox-ul! Chiar nu poate nimeni sa fie putin atent pe aici?! --[[User:Csdexter|@Dexter]] 01:22, 16 April 2007 (EEST)&lt;/div&gt;</summary>
		<author><name>Csdexter</name></author>	</entry>

	<entry>
		<id>http://wiki.linux360.ro/index.php?title=Curbe_Bezier&amp;diff=3388</id>
		<title>Curbe Bezier</title>
		<link rel="alternate" type="text/html" href="http://wiki.linux360.ro/index.php?title=Curbe_Bezier&amp;diff=3388"/>
				<updated>2007-02-05T13:42:30Z</updated>
		
		<summary type="html">&lt;p&gt;Csdexter: /* Interpolarea a patru puncte */ Converted to GeShiCodeTag&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;O curbă '''Bézier''' este o curbă parametrică inventată de inginerul francez [http://en.wikipedia.org/wiki/Pierre_B%C3%A9zier Pierre Bézier] şi făcută publică în anul 1962. Bézier a folosito în procesul de design al automobilelor.&lt;br /&gt;
Curbele Bézier sunt foarte importante şi pentru domeniul tehnologiei informaţiei, fiind folosite în construcţia fonturilor TrueType.&lt;br /&gt;
&lt;br /&gt;
[[Image:Bezier_0.jpg |thumb|300px| Fig. 1 - Graficul polinoamelor Bernstein de ordinul 0]] &lt;br /&gt;
[[Image:Bezier_1.jpg |thumb|300px| Fig. 2 - Graficul polinoamelor Bernstein de ordinul 1]] &lt;br /&gt;
&lt;br /&gt;
==Polinoame Bernstein==&lt;br /&gt;
Polinoamele '''Bernstein''' stau la baza curbelor '''Bézier'''. Acestea poartă numele matematicianului ucrainian [http://en.wikipedia.org/wiki/Sergei_Natanovich_Bernstein Sergei Natanovich Bernstein]. &lt;br /&gt;
&lt;br /&gt;
Pentru a determina polinoamele Bernstein de orice grad se porneşte de la polinomul Bernstein de ordinul zero.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;1 = 1&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Apoi se scade din ambele părţi o varibilă t şi obţinem:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;1-t = 1-t \iff (1-t) + t = 1&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ultima expresie este o combinaţie liniară a polinoamelor Bernstein de bază de ordinul unu. Polinoamele sunt: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\begin{cases} B_{0,1} = 1-t \\ B_{1,1} = t\end{cases}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Acum putem obţine polinoame Bernstein de orice grad prin ridicarea la putere a ultimei expresii:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;((1-t) + t)^{2} = 1 \iff (1-t)^{2} + 2t(1-t) + t^2 = 1&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Obţinem astfel polinoamele Berstein de bază de ordinul doi: &amp;lt;math&amp;gt;\begin{cases}B_{0,2} = (1-t)^2 \\ B_{1,2} = 2t(1-t) \\ B_{2,2} = t^2 \end{cases}&amp;lt;/math&amp;gt;&lt;br /&gt;
[[Image:Bezier_2.jpg |thumb|300px| Fig. 3 - Graficul polinoamelor Bernstein de ordinul 2]] &lt;br /&gt;
&lt;br /&gt;
Foarte interesante şi utile sunt graficele polinoamelor Bernstein, pentru înţelegerea modului în care &amp;quot;funcţionează&amp;quot; curbele Bézier.&lt;br /&gt;
&lt;br /&gt;
==Definirea unei curbe Bézier==&lt;br /&gt;
O curbă Bézier de ordinul n se defineşte, cu ajutorul a N puncte, după cum urmează:&lt;br /&gt;
&amp;lt;math&amp;gt;P(t) = \sum_{k=0}^N B_{k,N}P_{k}&amp;lt;/math&amp;gt;, unde &amp;lt;math&amp;gt;B_{k,N}&amp;lt;/math&amp;gt; este polinomul Bernstein de indice k şi de ordin N. &amp;lt;math&amp;gt;P_{k}&amp;lt;/math&amp;gt; sunt puncte în plan, adică vectori cu două componente &amp;lt;math&amp;gt;(x_{k}, y_{k})&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
===Curba Bézier liniară===&lt;br /&gt;
Curba Bézier liniară este definită folosind polinoamele Bernstein de ordinul 1: &amp;lt;math&amp;gt;\begin{cases} B_{0,1} = 1-t \\ B_{1,1} = t\end{cases}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ecuaţia:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;P(t) = B_{0,1}P_{0} + B_{1,1}P_{1} \iff P(t) = (1-t)P_{0} + tP_{1}, t \in [0,1]&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Reprezentarea grafică este doar o linie şi din acest motiv această formă nu este aproape deloc folosită.&lt;br /&gt;
&lt;br /&gt;
[[Image:Bezier_3.jpg |thumb|300px| Fig. 4 - Graficul polinoamelor Bernstein de ordinul 3]]&lt;br /&gt;
&lt;br /&gt;
===Curba Bézier pătratică===&lt;br /&gt;
Curba Bézier pătratică sau de ordinul doi este o curbă dată prin trei puncte, punctul din mijloc fiind un punct de control care nu se află pe curbă, dar care influenţează aspectul acesteia.&lt;br /&gt;
&lt;br /&gt;
Aceasta foloseşte polinoamele Bernstein de ordinul doi:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\begin{cases}B_{0,2} = (1-t)^{2} \\ B_{1,2} = 2t(1-t) \\ B_{2,2} = t^2\end{cases}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ecuaţia curbei este:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;P(t) = B_{0,2}P_0 + B_{1,2}P_1 + B_{2,2}P_2 \iff P(t) = (1-t)^{2}P_0 + 2t(1-t)P_1 + t^{2}P_2&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
În anumite documente ecuaţiile sunt date în funcţie de puterile lui t, lucru care aduce confuzie, de aceea prezint în continuare şi această formă.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;P(t) = P_0 - P_0t^2 +2tP_1-2t^{2}P_1 + t^{2}P_2 \iff&lt;br /&gt;
P(t) = t^{2}(P_2 - P_0 - 2P_1) +t2P_1 + P_0&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Se fac notaţiile:&lt;br /&gt;
&amp;lt;math&amp;gt;\begin{cases}A = P_2 - 2P_1 - P_0 \\ B = 2P_1 \\ C = P_0\end{cases} \iff \begin{cases}A = P_2 - B - C \\ B = 2P_1 \\ C = P_0 \end{cases}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Şi ecuaţia capătă următoarea formă: &amp;lt;math&amp;gt;P(t) = At^2 + Bt + C&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ca şi proprietăţi ale curbei trebuie să subliniez următoarele:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;P(0) = P_0&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;P(1) = P_2&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Acest lucru poate fi uşor observat şi motivat cu ajutorul graficelor din figura 3.&lt;br /&gt;
===Curba Bézier cubică===&lt;br /&gt;
Curba Bézier cubică sau de ordinul trei este dată prin patru puncte &amp;lt;math&amp;gt;P_0, P_1, P_2&amp;lt;/math&amp;gt; şi &amp;lt;math&amp;gt;P_4&amp;lt;/math&amp;gt;. &amp;lt;math&amp;gt;P_1&amp;lt;/math&amp;gt; şi &amp;lt;math&amp;gt;P_2&amp;lt;/math&amp;gt; sunt puncte de control ale curbei.&lt;br /&gt;
&lt;br /&gt;
Pentru a putea scrie ecuaţia curbei scriem mai întâi ecuaţiile polinoamelor Bernstein de ordinul trei:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\begin{cases}B_{0,3} = (1-t)^{3} \\ B_{1,3} = 3t(1-t)^2 \\ B_{2,3} = 3t^2(1-t) \\ B_{3,3} = t^{3} \end{cases}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Ecuaţia curbei:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;P(t) = B_{0,3}P_0 + B_{1,3}P_1 + B_{2,3}P_2 + B_{3,3}P_3 \iff&lt;br /&gt;
P(t) = (1-t)^{3}P_0 + 3t(1-t)^2P_1 + 3t^2(1-t)P_2 + t^{3}P_3&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Scriem în funcţie de puterile lui t şi obţinem:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;P(t) = t^3(P_3 - 3P_2 + 3P_1 - P_0) + t^2(3P_2 - 6P_1 + 3P_0) + t(3P_1 - 3P_0) + P_0&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Se fac notaţiile:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\begin{cases}A = P_3 - 3P_2 + 3P_1 - P_0 \\ B = 3P_2 - 6P_1 + 3P_0 \\ C = 3P_1 - 3P_0 \end{cases} \iff \begin{cases}A = P_3 - P_0 - B - C \\ B = 3(P_2 - P_1) - C \\ C = 3(P_1 - P_0)\end{cases}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ecuaţia curbei în funcţie de A, B şi C: &amp;lt;math&amp;gt;P(t) = At^3 + Bt^2 + Ct+P_0&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Desenarea unei curbe Bézier==&lt;br /&gt;
Desenarea unei curbe Bézier nu este o sarcină trivială şi asta nu din cauza calculelor, pe care le-am lămurit până la acest moment ci din cauza afişării curbei astfel încât să aibe un aspect foarte lin.&lt;br /&gt;
&lt;br /&gt;
Algoritmul cel mai simplu de desenare este următorul (pentru curba cubica).&lt;br /&gt;
&lt;br /&gt;
Date de intrare: P1, P2, P3, P4 (P2, P3 - puncte de control)&lt;br /&gt;
B03, B13, B23, B33 sunt functii care intorc valorile polinoamelor Bernstein de ordin 3 si indice k (k = 0..3).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
1. PP &amp;lt;- P1    ;initializam punctul anterior (Previous Point) cu P1&lt;br /&gt;
2. IS &amp;lt;- .01   ;setam pasul de incrementare&lt;br /&gt;
3. pentru t = IS; t &amp;lt; 1; t &amp;lt;- t + IS executa&lt;br /&gt;
4.        CP.x = P1.x * B03(t) + P2.x * B13(t) + P3.x * B23(t) + P4.x * B33(t);&lt;br /&gt;
5.        CP.y = P1.y * B03(t) + P2.y * B13(t) + P3.y * B23(t) + P4.y * B33(t);&lt;br /&gt;
6.        drawLine(PP.x, PP.y, CP.x, CP.y);&lt;br /&gt;
7.        PP = CP;&lt;br /&gt;
8. end pentru&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
În continuare codul scris în Java pentru pseudocodul anterior. &lt;br /&gt;
&lt;br /&gt;
'''QuadraticBezier.java'''&lt;br /&gt;
&amp;lt;code java&amp;gt;import java.awt.Graphics;&lt;br /&gt;
import java.awt.Graphics2D;&lt;br /&gt;
import java.awt.RenderingHints;&lt;br /&gt;
import java.awt.geom.Point2D;&lt;br /&gt;
&lt;br /&gt;
import javax.swing.JPanel;&lt;br /&gt;
&lt;br /&gt;
public class QuadraticBezier extends JPanel {&lt;br /&gt;
	private static final long serialVersionUID = -6991920282065229392L;&lt;br /&gt;
	&lt;br /&gt;
	public void paint(Graphics g) {&lt;br /&gt;
		Graphics2D g2 = (Graphics2D)g;&lt;br /&gt;
		super.paint(g2);&lt;br /&gt;
		&lt;br /&gt;
		drawCubicBezier(g2, new Point2D.Float(100,100), &lt;br /&gt;
				            new Point2D.Float(130,150),&lt;br /&gt;
				            new Point2D.Float(150,200),&lt;br /&gt;
				            new Point2D.Float(200,130));&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	/**&lt;br /&gt;
	 * Aceasta functie deseneaza o curba Bezier cubica.&lt;br /&gt;
	 * @param g2 Graphics2D&lt;br /&gt;
	 * @param p1 BezPoint 1&lt;br /&gt;
	 * @param p2 Control Point 1&lt;br /&gt;
	 * @param p3 Control Point 2&lt;br /&gt;
	 * @param p4 BezPoint 2&lt;br /&gt;
	 */&lt;br /&gt;
	public void drawCubicBezier(Graphics2D g2, &lt;br /&gt;
							    Point2D.Float p1, &lt;br /&gt;
							    Point2D.Float p2, &lt;br /&gt;
							    Point2D.Float p3, &lt;br /&gt;
							    Point2D.Float p4) {&lt;br /&gt;
		float is = 0.01f; //pasul de incrementare&lt;br /&gt;
		Point2D.Float prevPoint = p1; //Punctul calculat anterior&lt;br /&gt;
		Point2D.Float curPoint = new Point2D.Float(0,0); //Punctul curent&lt;br /&gt;
		&lt;br /&gt;
		for (float t = is; t &amp;lt;= 1; t += is) {&lt;br /&gt;
			curPoint.x = B03(t)*p1.x + B13(t)*p2.x + B23(t)*p3.x + B33(t)*p4.x;&lt;br /&gt;
			curPoint.y = B03(t)*p1.y + B13(t)*p2.y + B23(t)*p3.y + B33(t)*p4.y;&lt;br /&gt;
			System.out.println(prevPoint.distance(curPoint));&lt;br /&gt;
			if (prevPoint.distance(curPoint) &amp;gt; 5) {&lt;br /&gt;
				g2.drawLine((int)prevPoint.x, (int)prevPoint.y, (int)curPoint.x, (int)curPoint.y);&lt;br /&gt;
				prevPoint.x = curPoint.x;&lt;br /&gt;
				prevPoint.y = curPoint.y;&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	&lt;br /&gt;
	private float B03(float t) {&lt;br /&gt;
		return (float) Math.pow(1-t, 3);&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	private float B13(float t) {&lt;br /&gt;
		return (float) (3*t*Math.pow(1-t, 2));&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	private float B23(float t) {&lt;br /&gt;
		return (3*t*t*(1-t));&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	private float B33(float t) {&lt;br /&gt;
		return (float) Math.pow(t,3);&lt;br /&gt;
	}&lt;br /&gt;
}&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''MainFormDesign.java'''&lt;br /&gt;
&amp;lt;code java&amp;gt;import javax.swing.JFrame;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
public abstract class MainFormDesign extends JFrame {&lt;br /&gt;
	private QuadraticBezier quadraticBezier = null;&lt;br /&gt;
	&lt;br /&gt;
	public MainFormDesign() {&lt;br /&gt;
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);&lt;br /&gt;
		setTitle(&amp;quot;Test Bezier&amp;quot;);&lt;br /&gt;
		setSize(400, 400);&lt;br /&gt;
		&lt;br /&gt;
		setContentPane(getQuadraticBezier());&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	private QuadraticBezier getQuadraticBezier() {&lt;br /&gt;
		if (null == quadraticBezier) {&lt;br /&gt;
			quadraticBezier = new QuadraticBezier();&lt;br /&gt;
		}&lt;br /&gt;
		return quadraticBezier;&lt;br /&gt;
	}&lt;br /&gt;
}&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''MainForm.java'''&lt;br /&gt;
&amp;lt;code java&amp;gt;import javax.swing.SwingUtilities;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
public class MainForm extends MainFormDesign {&lt;br /&gt;
	private static final long serialVersionUID = 1L;&lt;br /&gt;
	&lt;br /&gt;
	public MainForm() {&lt;br /&gt;
		super();&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	public static void main(String[] args) {&lt;br /&gt;
		SwingUtilities.invokeLater(new Runnable() {&lt;br /&gt;
			public void run() {&lt;br /&gt;
				MainForm mf = new MainForm();&lt;br /&gt;
				mf.setVisible(true);&lt;br /&gt;
			}&lt;br /&gt;
		});&lt;br /&gt;
	}&lt;br /&gt;
}&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:Javatestbez.png]] Se poate vedea în imaginea alăturată aspectul urât al curbei. Devine foarte clar că nu aceasta este calea de urmat pentru a desena o curbă Bézier.&lt;br /&gt;
&lt;br /&gt;
==Probleme de interpolare folosind curbe Bézier==&lt;br /&gt;
Interpolare: Interpolarea reprezintă o metodă matematică de a creea  date care lipsesc.&lt;br /&gt;
&lt;br /&gt;
Multe persoane nu se simt confortabil să deseneze curbe Bézier folosind acele controale care nu se află pe curbă. Este un pic nenatural, deşi în aplicaţii complexe ale curbelor acele controale devin mult mai importante şi uşurează foarte mult munca. De exemplu atunci când se doreşte alipirea a două curbe Bézier, dorind păstrarea continuităţii punctul de control al celei de-a doua curbe se modifică astfel încât să fie coliniar cu punctul de control al primei curbe şi punctul comun celor două curbe.&lt;br /&gt;
&lt;br /&gt;
În cazurile în care cunoaştem înainte puncte de pe curbă şi vrem să găsim ecuaţia curbei care trece prin acele puncte, trebuie să găsim o metodă de interpolare.&lt;br /&gt;
===Interpolarea a trei puncte===&lt;br /&gt;
Cunoaştem trei puncte &amp;lt;math&amp;gt;P_1&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;P_C&amp;lt;/math&amp;gt; şi &amp;lt;math&amp;gt;P_3&amp;lt;/math&amp;gt;. Dorim să găsim o curbă Bézier care să trecă prin aceste trei puncte. Este clar că &amp;lt;math&amp;gt;P_1&amp;lt;/math&amp;gt; şi &amp;lt;math&amp;gt;P_3&amp;lt;/math&amp;gt; sunt două dintre punctele care definesc curba Bézier şi mai trebuie să aflăm un punct asfel încât să definim o curbă Bézier de ordinul doi, dar care să treacă prin &amp;lt;math&amp;gt;P_C&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Pentru că &amp;lt;math&amp;gt;P_C&amp;lt;/math&amp;gt; se află pe curbă, înseamnă că satisface ecuaţia ei.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;P_C = P_1B_{0,2}(t_c) + P_2B_{1,2}(t_c) + P_3B_{2,2}(t_c)&amp;lt;/math&amp;gt;, unde &amp;lt;math&amp;gt;P_2&amp;lt;/math&amp;gt; este punctul pe care trebuie să-l aflăm. Ţinând cont că P_C este definit pentru un anumit &amp;lt;math&amp;gt;t_c&amp;lt;/math&amp;gt;, trebuie să-l aflăm pentru a putea afla &amp;lt;math&amp;gt;P_2&amp;lt;/math&amp;gt; folosind doar ecuaţia liniară scrisă anterior.&lt;br /&gt;
&lt;br /&gt;
O metodă bună de a aproxima t-ul cunoscând un punct de pe curbă este printr-un raport al distanţelor.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;t_c = \frac{dist(P_1,P_C)}{dist(P_1,P_C)+dist(P_C,P_3)}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Cunoscând &amp;lt;math&amp;gt;t_c&amp;lt;/math&amp;gt; putem scrie soluţia ecuaţiei:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;P_2 = \frac{P_C - P_1B_{0,2}(t_c) - P_3B_{2,2}(t_c)}{B_{1,2}(t_c)}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
În continuare codul sursă Java care implementează interpolarea a trei puncte folosind o curbă Bézier de ordinul doi.&lt;br /&gt;
&amp;lt;code java&amp;gt;import java.awt.geom.Point2D;&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * &lt;br /&gt;
 * @author cristi&lt;br /&gt;
 */&lt;br /&gt;
public class BezierUtils {&lt;br /&gt;
	&lt;br /&gt;
	/**&lt;br /&gt;
	 * Functia ia ca parametri trei puncte de pe curba si intoarce un array de &lt;br /&gt;
	 * trei elemente care sunt punctele pentru definirea curbei Bezier de ordinul&lt;br /&gt;
	 * doi care trece prin cele trei puncte (Interpolare).&lt;br /&gt;
	 * @param x0 Primul punct de pe curba&lt;br /&gt;
	 * @param x3 Al doilea punct de pe curba&lt;br /&gt;
	 * @param x2 Al treilea punct de pe curba&lt;br /&gt;
	 * @return Point2D.Float[]&lt;br /&gt;
	 */&lt;br /&gt;
	public static Point2D.Float[] getQuadInterpPoints(Point2D.Float x0, Point2D.Float x3, Point2D.Float x2) {&lt;br /&gt;
		Point2D.Float[] result = new Point2D.Float[3];&lt;br /&gt;
		result[0] = new Point2D.Float(x0.x, x0.y);&lt;br /&gt;
		result[2] = new Point2D.Float(x2.x, x2.y);&lt;br /&gt;
		result[1] = new Point2D.Float();&lt;br /&gt;
		double t = x0.distance(x3) / (x0.distance(x3) + x3.distance(x2));&lt;br /&gt;
		result[1].x = ((float)((x3.getX() - fq2(t)*x2.getX() - fq0(t)*x0.getX())/fq1(t)));&lt;br /&gt;
		result[1].y = ((float)((x3.getY() - fq2(t)*x2.getY() - fq0(t)*x0.getY())/fq1(t)));&lt;br /&gt;
		return result;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	/**&lt;br /&gt;
	 * Polinomul Bernstein de indice 0 si ordin 2&lt;br /&gt;
	 * @param t&lt;br /&gt;
	 * @return&lt;br /&gt;
	 * 	returneaza valoarea polinomului Bernstein B_{k,n}(t) in t, k - indice, n - ordin&lt;br /&gt;
	 */&lt;br /&gt;
	private static double fq0(double t) {&lt;br /&gt;
		return Math.pow((1-t), 2);&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	/**&lt;br /&gt;
	 * Polinomul Bernstein de indice 1 si ordin 2&lt;br /&gt;
	 * @param t&lt;br /&gt;
	 * @return&lt;br /&gt;
	 * 	returneaza valoarea polinomului Bernstein B_{k,n}(t) in t, k - indice, n - ordin&lt;br /&gt;
	 */&lt;br /&gt;
	private static double fq1(double t) {&lt;br /&gt;
		return 2*t*(1-t);&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	/**&lt;br /&gt;
	 * Polinomul Bernstein de indice 2 si ordin 2&lt;br /&gt;
	 * @param t&lt;br /&gt;
	 * @return&lt;br /&gt;
	 * 	returneaza valoarea polinomului Bernstein B_{k,n}(t) in t, k - indice, n - ordin&lt;br /&gt;
	 */&lt;br /&gt;
	private static double fq2(double t) {&lt;br /&gt;
		return Math.pow(t, 2);&lt;br /&gt;
	}	&lt;br /&gt;
	&lt;br /&gt;
	public static void main(String[] args) {&lt;br /&gt;
		Point2D.Float P1 = new Point2D.Float(10,10);&lt;br /&gt;
		Point2D.Float PC = new Point2D.Float(30,50);&lt;br /&gt;
		Point2D.Float P3 = new Point2D.Float(15,20);&lt;br /&gt;
		&lt;br /&gt;
		Point2D.Float bezPoints[] = getQuadInterpPoints(P1, PC, P3);&lt;br /&gt;
		System.out.println(&amp;quot;Curba Bezier este definita de:&amp;quot;);&lt;br /&gt;
		System.out.println(bezPoints[0]);&lt;br /&gt;
		System.out.println(bezPoints[1]);&lt;br /&gt;
		System.out.println(bezPoints[2]);&lt;br /&gt;
	}&lt;br /&gt;
}&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Interpolarea a patru puncte===&lt;br /&gt;
Cunoştem patru puncte &amp;lt;math&amp;gt;P_1, P_{C1}, P_{C2}, P_4&amp;lt;/math&amp;gt;, dintre care două puncte sunt pe curbă şi două reprezintă capetele acesteia. Punctele &amp;lt;math&amp;gt;P_{C1}&amp;lt;/math&amp;gt; şi &amp;lt;math&amp;gt;P_{C2}&amp;lt;/math&amp;gt; verifică ecuaţia curbei pentru &amp;lt;math&amp;gt; t_{c1}&amp;lt;/math&amp;gt; şi respectiv &amp;lt;math&amp;gt;t_{c2}&amp;lt;/math&amp;gt;. Pentru a putea obţine un sistem de două ecuaţii cu două necunoscute (&amp;lt;math&amp;gt;P_2, P_3&amp;lt;/math&amp;gt;) trebuie să aproximăm cumva t-urile. Voi folosi aceeaşi metodă ca la interpolarea prin trei puncte:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;t_{c1} = \frac{dist(P_1,P_{C1})}{dist(P_1,P_{C1}) + dist(P_{C1},P_{C2}) + dist(P_{C2},P_4)}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;t_{c2} = \frac{dist(P_1,P_{C1})+dist(P_{C1},P_{C2})}{dist(P_1,P_{C1}) + dist(P_{C1},P_{C2}) + dist(P_{C2},P_4)}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Cunoscând t-urile pentru punctele de pe curbă putem scrie ecuaţiile sistemului:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\begin{cases}P_{C1} = B_{0,3}(t_{c1})P_1 + B_{1,3}(t_{c1})P_2 + B_{2,3}(t_{c1})P_3 + B_{3,3}(t_{c1})P_4 \\ P_{C2} = B_{0,3}(t_{c2})P_1 + B_{1,3}(t_{c2})P_2 + B_{2,3}(t_{c2})P_3 + B_{3,3}(t_{c2})P_4\end{cases}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Rezolvând sistemul se obţine:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\begin{cases}P_2 = - \frac{B_{2,3}(t_{c1})P_{C2} - B_{2,3}(t_{c2})P_{C1} +(B_{2,3}(t_{c2})B_{3,3}(t_{c1}) - B_{2,3}(t_{c1})B_{3,3}(t_{c2}))P_4 + (B_{0,3}(t_{c1})B_{2,3}(t_{c2}) - B_{0,3}(t_{c2})B_{2,3}(t_{c1}))P_1}{B_{1,3}(t_{c1})B_{2,3}(t_{c2}) - B_{1,3}(t_{c2})B_{2,3}(t_{c1})} \\ P_3 = \frac{B_{1,3}(t_{c1})P_{C2} - B_{1,3}(t_{c2})P_{C1} +(B_{1,3}(t_{c2})B_{3,3}(t_{c1}) - B_{1,3}(t_{c1})B_{3,3}(t_{c2}))P_4 + (B_{0,3}(t_{c1})B_{1,3}(t_{c2}) - B_{0,3}(t_{c2})B_{1,3}(t_{c1}))P_1}{B_{1,3}(t_{c1})B_{2,3}(t_{c2}) - B_{1,3}(t_{c2})B_{2,3}(t_{c1})}\end{cases}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
În continuare codul sursă Java care implementează interpolarea a patru puncte folosind o curbă Bézier de ordinul trei.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code java&amp;gt;import java.awt.geom.Point2D;&lt;br /&gt;
&lt;br /&gt;
public class BezierUtils {&lt;br /&gt;
	&lt;br /&gt;
	&lt;br /&gt;
	/**&lt;br /&gt;
	 * Ecuatiile sunt rezolvate in Maxima 0.7.0a folosind urmatoarele &lt;br /&gt;
	 * eqn: x4  = x0*f1(t4) + x1*f2(t4) + x2*f3(t4) + x3*f4(t4); &lt;br /&gt;
	 * eqn1: x5 = x0*f1(t5) + x1*f2(t5) + x2*f3(t5) + x3*f4(t5); &lt;br /&gt;
	 * algsys([eqn, eqn1], [x1, x2]);&lt;br /&gt;
	 * &lt;br /&gt;
	 * Functiile f1, f2, f3 si f4 sunt polinoamele Bernstein de ordinul 3.&lt;br /&gt;
	 * &lt;br /&gt;
	 * @param x0&lt;br /&gt;
	 * @param x4&lt;br /&gt;
	 * @param x5&lt;br /&gt;
	 * @param x3&lt;br /&gt;
	 * @return&lt;br /&gt;
	 */&lt;br /&gt;
	public static Point2D.Float[] getBezierInterpPoints(Point2D.Float x0, Point2D.Float x4, Point2D.Float x5, Point2D.Float x3) {&lt;br /&gt;
		Point2D.Float[] result = new Point2D.Float[4];&lt;br /&gt;
		result[0] = new Point2D.Float();&lt;br /&gt;
		result[0].x = x0.x;&lt;br /&gt;
		result[0].y = x0.y;&lt;br /&gt;
		result[3] = new Point2D.Float();&lt;br /&gt;
		result[3].x = x3.x;&lt;br /&gt;
		result[3].y = x3.y;&lt;br /&gt;
		&lt;br /&gt;
		float t4 = (float) (x0.distance(x4) / (x0.distance(x4) + x4.distance(x5) + x5.distance(x3)));&lt;br /&gt;
		float t5 = (float) ((x0.distance(x4) + x4.distance(x5)) / (x0.distance(x4) + x4.distance(x5) + x5.distance(x3)));&lt;br /&gt;
		&lt;br /&gt;
		result[1] = new Point2D.Float();&lt;br /&gt;
		result[2] = new Point2D.Float();&lt;br /&gt;
		result[1].x = ((float) (-(f3(t4) * x5.x - f3(t5) * x4.x + (f4(t4) * f3(t5) - f3(t4) * f4(t5)) * x3.x + (f1(t4) * f3(t5) - f3(t4)&lt;br /&gt;
				* f1(t5))&lt;br /&gt;
				* x0.x) / (f2(t4) * f3(t5) - f3(t4) * f2(t5))));&lt;br /&gt;
		result[2].x = ((float) ((f2(t4) * x5.x - f2(t5) * x4.x + (f4(t4) * f2(t5) - f2(t4) * f4(t5)) * x3.x + (f1(t4) * f2(t5) - f2(t4)&lt;br /&gt;
				* f1(t5))&lt;br /&gt;
				* x0.x) / (f2(t4) * f3(t5) - f3(t4) * f2(t5))));&lt;br /&gt;
		result[1].y = ((float) (-(f3(t4) * x5.y - f3(t5) * x4.y + (f4(t4) * f3(t5) - f3(t4) * f4(t5)) * x3.y + (f1(t4) * f3(t5) - f3(t4)&lt;br /&gt;
				* f1(t5))&lt;br /&gt;
				* x0.y) / (f2(t4) * f3(t5) - f3(t4) * f2(t5))));&lt;br /&gt;
		result[2].y = ((float) ((f2(t4) * x5.y - f2(t5) * x4.y + (f4(t4) * f2(t5) - f2(t4) * f4(t5)) * x3.y + (f1(t4) * f2(t5) - f2(t4)&lt;br /&gt;
				* f1(t5))&lt;br /&gt;
				* x0.y) / (f2(t4) * f3(t5) - f3(t4) * f2(t5))));&lt;br /&gt;
		return result;&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	&lt;br /&gt;
	&lt;br /&gt;
	/**&lt;br /&gt;
	 * Polinomul Bernstein de indice 0 si de ordin 3&lt;br /&gt;
	 * &lt;br /&gt;
	 * @param t&lt;br /&gt;
	 */&lt;br /&gt;
	private static double f1(double t) {&lt;br /&gt;
		return Math.pow((1 - t), 3);&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	&lt;br /&gt;
	&lt;br /&gt;
	/**&lt;br /&gt;
	 * Polinomul Bernstein de indice 1 si de ordin 3&lt;br /&gt;
	 * &lt;br /&gt;
	 * @param t&lt;br /&gt;
	 */&lt;br /&gt;
	private static double f2(double t) {&lt;br /&gt;
		return 3 * t * Math.pow(1 - t, 2);&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	&lt;br /&gt;
	&lt;br /&gt;
	/**&lt;br /&gt;
	 * Polinomul Bernstein de indice 2 si de ordin 3&lt;br /&gt;
	 * &lt;br /&gt;
	 * @param t&lt;br /&gt;
	 */&lt;br /&gt;
	private static double f3(double t) {&lt;br /&gt;
		return 3 * Math.pow(t, 2) * (1 - t);&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	&lt;br /&gt;
	&lt;br /&gt;
	/**&lt;br /&gt;
	 * Polinomul Bernstein de indice 3 si de ordin 3&lt;br /&gt;
	 * &lt;br /&gt;
	 * @param t&lt;br /&gt;
	 */&lt;br /&gt;
	private static double f4(double t) {&lt;br /&gt;
		return Math.pow(t, 3);&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	public static void main(String[] args) {&lt;br /&gt;
		Point2D.Float P1 = new Point2D.Float(0,0);&lt;br /&gt;
		Point2D.Float Pc1 = new Point2D.Float(50,50);&lt;br /&gt;
		Point2D.Float Pc2 = new Point2D.Float(100,60);&lt;br /&gt;
		Point2D.Float P4 = new Point2D.Float(100,0);&lt;br /&gt;
		&lt;br /&gt;
		Point2D.Float[] bezCoords = getBezierInterpPoints(P1, Pc1, Pc2, P4);&lt;br /&gt;
		System.out.println(&amp;quot;Curba Bezier cubica este data de:&amp;quot;);&lt;br /&gt;
		System.out.println(bezCoords[0]);&lt;br /&gt;
		System.out.println(bezCoords[1]);&lt;br /&gt;
		System.out.println(bezCoords[2]);&lt;br /&gt;
		System.out.println(bezCoords[3]);&lt;br /&gt;
	}&lt;br /&gt;
}&amp;lt;/code&amp;gt;&lt;br /&gt;
[[Category:Pending]]&lt;/div&gt;</summary>
		<author><name>Csdexter</name></author>	</entry>

	<entry>
		<id>http://wiki.linux360.ro/index.php?title=Curbe_Bezier&amp;diff=3387</id>
		<title>Curbe Bezier</title>
		<link rel="alternate" type="text/html" href="http://wiki.linux360.ro/index.php?title=Curbe_Bezier&amp;diff=3387"/>
				<updated>2007-02-05T13:41:02Z</updated>
		
		<summary type="html">&lt;p&gt;Csdexter: /* Interpolarea a trei puncte */ Converted to GeShiCodeTag&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;O curbă '''Bézier''' este o curbă parametrică inventată de inginerul francez [http://en.wikipedia.org/wiki/Pierre_B%C3%A9zier Pierre Bézier] şi făcută publică în anul 1962. Bézier a folosito în procesul de design al automobilelor.&lt;br /&gt;
Curbele Bézier sunt foarte importante şi pentru domeniul tehnologiei informaţiei, fiind folosite în construcţia fonturilor TrueType.&lt;br /&gt;
&lt;br /&gt;
[[Image:Bezier_0.jpg |thumb|300px| Fig. 1 - Graficul polinoamelor Bernstein de ordinul 0]] &lt;br /&gt;
[[Image:Bezier_1.jpg |thumb|300px| Fig. 2 - Graficul polinoamelor Bernstein de ordinul 1]] &lt;br /&gt;
&lt;br /&gt;
==Polinoame Bernstein==&lt;br /&gt;
Polinoamele '''Bernstein''' stau la baza curbelor '''Bézier'''. Acestea poartă numele matematicianului ucrainian [http://en.wikipedia.org/wiki/Sergei_Natanovich_Bernstein Sergei Natanovich Bernstein]. &lt;br /&gt;
&lt;br /&gt;
Pentru a determina polinoamele Bernstein de orice grad se porneşte de la polinomul Bernstein de ordinul zero.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;1 = 1&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Apoi se scade din ambele părţi o varibilă t şi obţinem:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;1-t = 1-t \iff (1-t) + t = 1&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ultima expresie este o combinaţie liniară a polinoamelor Bernstein de bază de ordinul unu. Polinoamele sunt: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\begin{cases} B_{0,1} = 1-t \\ B_{1,1} = t\end{cases}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Acum putem obţine polinoame Bernstein de orice grad prin ridicarea la putere a ultimei expresii:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;((1-t) + t)^{2} = 1 \iff (1-t)^{2} + 2t(1-t) + t^2 = 1&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Obţinem astfel polinoamele Berstein de bază de ordinul doi: &amp;lt;math&amp;gt;\begin{cases}B_{0,2} = (1-t)^2 \\ B_{1,2} = 2t(1-t) \\ B_{2,2} = t^2 \end{cases}&amp;lt;/math&amp;gt;&lt;br /&gt;
[[Image:Bezier_2.jpg |thumb|300px| Fig. 3 - Graficul polinoamelor Bernstein de ordinul 2]] &lt;br /&gt;
&lt;br /&gt;
Foarte interesante şi utile sunt graficele polinoamelor Bernstein, pentru înţelegerea modului în care &amp;quot;funcţionează&amp;quot; curbele Bézier.&lt;br /&gt;
&lt;br /&gt;
==Definirea unei curbe Bézier==&lt;br /&gt;
O curbă Bézier de ordinul n se defineşte, cu ajutorul a N puncte, după cum urmează:&lt;br /&gt;
&amp;lt;math&amp;gt;P(t) = \sum_{k=0}^N B_{k,N}P_{k}&amp;lt;/math&amp;gt;, unde &amp;lt;math&amp;gt;B_{k,N}&amp;lt;/math&amp;gt; este polinomul Bernstein de indice k şi de ordin N. &amp;lt;math&amp;gt;P_{k}&amp;lt;/math&amp;gt; sunt puncte în plan, adică vectori cu două componente &amp;lt;math&amp;gt;(x_{k}, y_{k})&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
===Curba Bézier liniară===&lt;br /&gt;
Curba Bézier liniară este definită folosind polinoamele Bernstein de ordinul 1: &amp;lt;math&amp;gt;\begin{cases} B_{0,1} = 1-t \\ B_{1,1} = t\end{cases}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ecuaţia:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;P(t) = B_{0,1}P_{0} + B_{1,1}P_{1} \iff P(t) = (1-t)P_{0} + tP_{1}, t \in [0,1]&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Reprezentarea grafică este doar o linie şi din acest motiv această formă nu este aproape deloc folosită.&lt;br /&gt;
&lt;br /&gt;
[[Image:Bezier_3.jpg |thumb|300px| Fig. 4 - Graficul polinoamelor Bernstein de ordinul 3]]&lt;br /&gt;
&lt;br /&gt;
===Curba Bézier pătratică===&lt;br /&gt;
Curba Bézier pătratică sau de ordinul doi este o curbă dată prin trei puncte, punctul din mijloc fiind un punct de control care nu se află pe curbă, dar care influenţează aspectul acesteia.&lt;br /&gt;
&lt;br /&gt;
Aceasta foloseşte polinoamele Bernstein de ordinul doi:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\begin{cases}B_{0,2} = (1-t)^{2} \\ B_{1,2} = 2t(1-t) \\ B_{2,2} = t^2\end{cases}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ecuaţia curbei este:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;P(t) = B_{0,2}P_0 + B_{1,2}P_1 + B_{2,2}P_2 \iff P(t) = (1-t)^{2}P_0 + 2t(1-t)P_1 + t^{2}P_2&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
În anumite documente ecuaţiile sunt date în funcţie de puterile lui t, lucru care aduce confuzie, de aceea prezint în continuare şi această formă.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;P(t) = P_0 - P_0t^2 +2tP_1-2t^{2}P_1 + t^{2}P_2 \iff&lt;br /&gt;
P(t) = t^{2}(P_2 - P_0 - 2P_1) +t2P_1 + P_0&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Se fac notaţiile:&lt;br /&gt;
&amp;lt;math&amp;gt;\begin{cases}A = P_2 - 2P_1 - P_0 \\ B = 2P_1 \\ C = P_0\end{cases} \iff \begin{cases}A = P_2 - B - C \\ B = 2P_1 \\ C = P_0 \end{cases}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Şi ecuaţia capătă următoarea formă: &amp;lt;math&amp;gt;P(t) = At^2 + Bt + C&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ca şi proprietăţi ale curbei trebuie să subliniez următoarele:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;P(0) = P_0&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;P(1) = P_2&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Acest lucru poate fi uşor observat şi motivat cu ajutorul graficelor din figura 3.&lt;br /&gt;
===Curba Bézier cubică===&lt;br /&gt;
Curba Bézier cubică sau de ordinul trei este dată prin patru puncte &amp;lt;math&amp;gt;P_0, P_1, P_2&amp;lt;/math&amp;gt; şi &amp;lt;math&amp;gt;P_4&amp;lt;/math&amp;gt;. &amp;lt;math&amp;gt;P_1&amp;lt;/math&amp;gt; şi &amp;lt;math&amp;gt;P_2&amp;lt;/math&amp;gt; sunt puncte de control ale curbei.&lt;br /&gt;
&lt;br /&gt;
Pentru a putea scrie ecuaţia curbei scriem mai întâi ecuaţiile polinoamelor Bernstein de ordinul trei:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\begin{cases}B_{0,3} = (1-t)^{3} \\ B_{1,3} = 3t(1-t)^2 \\ B_{2,3} = 3t^2(1-t) \\ B_{3,3} = t^{3} \end{cases}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Ecuaţia curbei:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;P(t) = B_{0,3}P_0 + B_{1,3}P_1 + B_{2,3}P_2 + B_{3,3}P_3 \iff&lt;br /&gt;
P(t) = (1-t)^{3}P_0 + 3t(1-t)^2P_1 + 3t^2(1-t)P_2 + t^{3}P_3&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Scriem în funcţie de puterile lui t şi obţinem:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;P(t) = t^3(P_3 - 3P_2 + 3P_1 - P_0) + t^2(3P_2 - 6P_1 + 3P_0) + t(3P_1 - 3P_0) + P_0&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Se fac notaţiile:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\begin{cases}A = P_3 - 3P_2 + 3P_1 - P_0 \\ B = 3P_2 - 6P_1 + 3P_0 \\ C = 3P_1 - 3P_0 \end{cases} \iff \begin{cases}A = P_3 - P_0 - B - C \\ B = 3(P_2 - P_1) - C \\ C = 3(P_1 - P_0)\end{cases}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ecuaţia curbei în funcţie de A, B şi C: &amp;lt;math&amp;gt;P(t) = At^3 + Bt^2 + Ct+P_0&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Desenarea unei curbe Bézier==&lt;br /&gt;
Desenarea unei curbe Bézier nu este o sarcină trivială şi asta nu din cauza calculelor, pe care le-am lămurit până la acest moment ci din cauza afişării curbei astfel încât să aibe un aspect foarte lin.&lt;br /&gt;
&lt;br /&gt;
Algoritmul cel mai simplu de desenare este următorul (pentru curba cubica).&lt;br /&gt;
&lt;br /&gt;
Date de intrare: P1, P2, P3, P4 (P2, P3 - puncte de control)&lt;br /&gt;
B03, B13, B23, B33 sunt functii care intorc valorile polinoamelor Bernstein de ordin 3 si indice k (k = 0..3).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
1. PP &amp;lt;- P1    ;initializam punctul anterior (Previous Point) cu P1&lt;br /&gt;
2. IS &amp;lt;- .01   ;setam pasul de incrementare&lt;br /&gt;
3. pentru t = IS; t &amp;lt; 1; t &amp;lt;- t + IS executa&lt;br /&gt;
4.        CP.x = P1.x * B03(t) + P2.x * B13(t) + P3.x * B23(t) + P4.x * B33(t);&lt;br /&gt;
5.        CP.y = P1.y * B03(t) + P2.y * B13(t) + P3.y * B23(t) + P4.y * B33(t);&lt;br /&gt;
6.        drawLine(PP.x, PP.y, CP.x, CP.y);&lt;br /&gt;
7.        PP = CP;&lt;br /&gt;
8. end pentru&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
În continuare codul scris în Java pentru pseudocodul anterior. &lt;br /&gt;
&lt;br /&gt;
'''QuadraticBezier.java'''&lt;br /&gt;
&amp;lt;code java&amp;gt;import java.awt.Graphics;&lt;br /&gt;
import java.awt.Graphics2D;&lt;br /&gt;
import java.awt.RenderingHints;&lt;br /&gt;
import java.awt.geom.Point2D;&lt;br /&gt;
&lt;br /&gt;
import javax.swing.JPanel;&lt;br /&gt;
&lt;br /&gt;
public class QuadraticBezier extends JPanel {&lt;br /&gt;
	private static final long serialVersionUID = -6991920282065229392L;&lt;br /&gt;
	&lt;br /&gt;
	public void paint(Graphics g) {&lt;br /&gt;
		Graphics2D g2 = (Graphics2D)g;&lt;br /&gt;
		super.paint(g2);&lt;br /&gt;
		&lt;br /&gt;
		drawCubicBezier(g2, new Point2D.Float(100,100), &lt;br /&gt;
				            new Point2D.Float(130,150),&lt;br /&gt;
				            new Point2D.Float(150,200),&lt;br /&gt;
				            new Point2D.Float(200,130));&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	/**&lt;br /&gt;
	 * Aceasta functie deseneaza o curba Bezier cubica.&lt;br /&gt;
	 * @param g2 Graphics2D&lt;br /&gt;
	 * @param p1 BezPoint 1&lt;br /&gt;
	 * @param p2 Control Point 1&lt;br /&gt;
	 * @param p3 Control Point 2&lt;br /&gt;
	 * @param p4 BezPoint 2&lt;br /&gt;
	 */&lt;br /&gt;
	public void drawCubicBezier(Graphics2D g2, &lt;br /&gt;
							    Point2D.Float p1, &lt;br /&gt;
							    Point2D.Float p2, &lt;br /&gt;
							    Point2D.Float p3, &lt;br /&gt;
							    Point2D.Float p4) {&lt;br /&gt;
		float is = 0.01f; //pasul de incrementare&lt;br /&gt;
		Point2D.Float prevPoint = p1; //Punctul calculat anterior&lt;br /&gt;
		Point2D.Float curPoint = new Point2D.Float(0,0); //Punctul curent&lt;br /&gt;
		&lt;br /&gt;
		for (float t = is; t &amp;lt;= 1; t += is) {&lt;br /&gt;
			curPoint.x = B03(t)*p1.x + B13(t)*p2.x + B23(t)*p3.x + B33(t)*p4.x;&lt;br /&gt;
			curPoint.y = B03(t)*p1.y + B13(t)*p2.y + B23(t)*p3.y + B33(t)*p4.y;&lt;br /&gt;
			System.out.println(prevPoint.distance(curPoint));&lt;br /&gt;
			if (prevPoint.distance(curPoint) &amp;gt; 5) {&lt;br /&gt;
				g2.drawLine((int)prevPoint.x, (int)prevPoint.y, (int)curPoint.x, (int)curPoint.y);&lt;br /&gt;
				prevPoint.x = curPoint.x;&lt;br /&gt;
				prevPoint.y = curPoint.y;&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	&lt;br /&gt;
	private float B03(float t) {&lt;br /&gt;
		return (float) Math.pow(1-t, 3);&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	private float B13(float t) {&lt;br /&gt;
		return (float) (3*t*Math.pow(1-t, 2));&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	private float B23(float t) {&lt;br /&gt;
		return (3*t*t*(1-t));&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	private float B33(float t) {&lt;br /&gt;
		return (float) Math.pow(t,3);&lt;br /&gt;
	}&lt;br /&gt;
}&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''MainFormDesign.java'''&lt;br /&gt;
&amp;lt;code java&amp;gt;import javax.swing.JFrame;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
public abstract class MainFormDesign extends JFrame {&lt;br /&gt;
	private QuadraticBezier quadraticBezier = null;&lt;br /&gt;
	&lt;br /&gt;
	public MainFormDesign() {&lt;br /&gt;
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);&lt;br /&gt;
		setTitle(&amp;quot;Test Bezier&amp;quot;);&lt;br /&gt;
		setSize(400, 400);&lt;br /&gt;
		&lt;br /&gt;
		setContentPane(getQuadraticBezier());&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	private QuadraticBezier getQuadraticBezier() {&lt;br /&gt;
		if (null == quadraticBezier) {&lt;br /&gt;
			quadraticBezier = new QuadraticBezier();&lt;br /&gt;
		}&lt;br /&gt;
		return quadraticBezier;&lt;br /&gt;
	}&lt;br /&gt;
}&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''MainForm.java'''&lt;br /&gt;
&amp;lt;code java&amp;gt;import javax.swing.SwingUtilities;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
public class MainForm extends MainFormDesign {&lt;br /&gt;
	private static final long serialVersionUID = 1L;&lt;br /&gt;
	&lt;br /&gt;
	public MainForm() {&lt;br /&gt;
		super();&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	public static void main(String[] args) {&lt;br /&gt;
		SwingUtilities.invokeLater(new Runnable() {&lt;br /&gt;
			public void run() {&lt;br /&gt;
				MainForm mf = new MainForm();&lt;br /&gt;
				mf.setVisible(true);&lt;br /&gt;
			}&lt;br /&gt;
		});&lt;br /&gt;
	}&lt;br /&gt;
}&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:Javatestbez.png]] Se poate vedea în imaginea alăturată aspectul urât al curbei. Devine foarte clar că nu aceasta este calea de urmat pentru a desena o curbă Bézier.&lt;br /&gt;
&lt;br /&gt;
==Probleme de interpolare folosind curbe Bézier==&lt;br /&gt;
Interpolare: Interpolarea reprezintă o metodă matematică de a creea  date care lipsesc.&lt;br /&gt;
&lt;br /&gt;
Multe persoane nu se simt confortabil să deseneze curbe Bézier folosind acele controale care nu se află pe curbă. Este un pic nenatural, deşi în aplicaţii complexe ale curbelor acele controale devin mult mai importante şi uşurează foarte mult munca. De exemplu atunci când se doreşte alipirea a două curbe Bézier, dorind păstrarea continuităţii punctul de control al celei de-a doua curbe se modifică astfel încât să fie coliniar cu punctul de control al primei curbe şi punctul comun celor două curbe.&lt;br /&gt;
&lt;br /&gt;
În cazurile în care cunoaştem înainte puncte de pe curbă şi vrem să găsim ecuaţia curbei care trece prin acele puncte, trebuie să găsim o metodă de interpolare.&lt;br /&gt;
===Interpolarea a trei puncte===&lt;br /&gt;
Cunoaştem trei puncte &amp;lt;math&amp;gt;P_1&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;P_C&amp;lt;/math&amp;gt; şi &amp;lt;math&amp;gt;P_3&amp;lt;/math&amp;gt;. Dorim să găsim o curbă Bézier care să trecă prin aceste trei puncte. Este clar că &amp;lt;math&amp;gt;P_1&amp;lt;/math&amp;gt; şi &amp;lt;math&amp;gt;P_3&amp;lt;/math&amp;gt; sunt două dintre punctele care definesc curba Bézier şi mai trebuie să aflăm un punct asfel încât să definim o curbă Bézier de ordinul doi, dar care să treacă prin &amp;lt;math&amp;gt;P_C&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Pentru că &amp;lt;math&amp;gt;P_C&amp;lt;/math&amp;gt; se află pe curbă, înseamnă că satisface ecuaţia ei.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;P_C = P_1B_{0,2}(t_c) + P_2B_{1,2}(t_c) + P_3B_{2,2}(t_c)&amp;lt;/math&amp;gt;, unde &amp;lt;math&amp;gt;P_2&amp;lt;/math&amp;gt; este punctul pe care trebuie să-l aflăm. Ţinând cont că P_C este definit pentru un anumit &amp;lt;math&amp;gt;t_c&amp;lt;/math&amp;gt;, trebuie să-l aflăm pentru a putea afla &amp;lt;math&amp;gt;P_2&amp;lt;/math&amp;gt; folosind doar ecuaţia liniară scrisă anterior.&lt;br /&gt;
&lt;br /&gt;
O metodă bună de a aproxima t-ul cunoscând un punct de pe curbă este printr-un raport al distanţelor.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;t_c = \frac{dist(P_1,P_C)}{dist(P_1,P_C)+dist(P_C,P_3)}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Cunoscând &amp;lt;math&amp;gt;t_c&amp;lt;/math&amp;gt; putem scrie soluţia ecuaţiei:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;P_2 = \frac{P_C - P_1B_{0,2}(t_c) - P_3B_{2,2}(t_c)}{B_{1,2}(t_c)}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
În continuare codul sursă Java care implementează interpolarea a trei puncte folosind o curbă Bézier de ordinul doi.&lt;br /&gt;
&amp;lt;code java&amp;gt;import java.awt.geom.Point2D;&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * &lt;br /&gt;
 * @author cristi&lt;br /&gt;
 */&lt;br /&gt;
public class BezierUtils {&lt;br /&gt;
	&lt;br /&gt;
	/**&lt;br /&gt;
	 * Functia ia ca parametri trei puncte de pe curba si intoarce un array de &lt;br /&gt;
	 * trei elemente care sunt punctele pentru definirea curbei Bezier de ordinul&lt;br /&gt;
	 * doi care trece prin cele trei puncte (Interpolare).&lt;br /&gt;
	 * @param x0 Primul punct de pe curba&lt;br /&gt;
	 * @param x3 Al doilea punct de pe curba&lt;br /&gt;
	 * @param x2 Al treilea punct de pe curba&lt;br /&gt;
	 * @return Point2D.Float[]&lt;br /&gt;
	 */&lt;br /&gt;
	public static Point2D.Float[] getQuadInterpPoints(Point2D.Float x0, Point2D.Float x3, Point2D.Float x2) {&lt;br /&gt;
		Point2D.Float[] result = new Point2D.Float[3];&lt;br /&gt;
		result[0] = new Point2D.Float(x0.x, x0.y);&lt;br /&gt;
		result[2] = new Point2D.Float(x2.x, x2.y);&lt;br /&gt;
		result[1] = new Point2D.Float();&lt;br /&gt;
		double t = x0.distance(x3) / (x0.distance(x3) + x3.distance(x2));&lt;br /&gt;
		result[1].x = ((float)((x3.getX() - fq2(t)*x2.getX() - fq0(t)*x0.getX())/fq1(t)));&lt;br /&gt;
		result[1].y = ((float)((x3.getY() - fq2(t)*x2.getY() - fq0(t)*x0.getY())/fq1(t)));&lt;br /&gt;
		return result;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	/**&lt;br /&gt;
	 * Polinomul Bernstein de indice 0 si ordin 2&lt;br /&gt;
	 * @param t&lt;br /&gt;
	 * @return&lt;br /&gt;
	 * 	returneaza valoarea polinomului Bernstein B_{k,n}(t) in t, k - indice, n - ordin&lt;br /&gt;
	 */&lt;br /&gt;
	private static double fq0(double t) {&lt;br /&gt;
		return Math.pow((1-t), 2);&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	/**&lt;br /&gt;
	 * Polinomul Bernstein de indice 1 si ordin 2&lt;br /&gt;
	 * @param t&lt;br /&gt;
	 * @return&lt;br /&gt;
	 * 	returneaza valoarea polinomului Bernstein B_{k,n}(t) in t, k - indice, n - ordin&lt;br /&gt;
	 */&lt;br /&gt;
	private static double fq1(double t) {&lt;br /&gt;
		return 2*t*(1-t);&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	/**&lt;br /&gt;
	 * Polinomul Bernstein de indice 2 si ordin 2&lt;br /&gt;
	 * @param t&lt;br /&gt;
	 * @return&lt;br /&gt;
	 * 	returneaza valoarea polinomului Bernstein B_{k,n}(t) in t, k - indice, n - ordin&lt;br /&gt;
	 */&lt;br /&gt;
	private static double fq2(double t) {&lt;br /&gt;
		return Math.pow(t, 2);&lt;br /&gt;
	}	&lt;br /&gt;
	&lt;br /&gt;
	public static void main(String[] args) {&lt;br /&gt;
		Point2D.Float P1 = new Point2D.Float(10,10);&lt;br /&gt;
		Point2D.Float PC = new Point2D.Float(30,50);&lt;br /&gt;
		Point2D.Float P3 = new Point2D.Float(15,20);&lt;br /&gt;
		&lt;br /&gt;
		Point2D.Float bezPoints[] = getQuadInterpPoints(P1, PC, P3);&lt;br /&gt;
		System.out.println(&amp;quot;Curba Bezier este definita de:&amp;quot;);&lt;br /&gt;
		System.out.println(bezPoints[0]);&lt;br /&gt;
		System.out.println(bezPoints[1]);&lt;br /&gt;
		System.out.println(bezPoints[2]);&lt;br /&gt;
	}&lt;br /&gt;
}&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Interpolarea a patru puncte===&lt;br /&gt;
Cunoştem patru puncte &amp;lt;math&amp;gt;P_1, P_{C1}, P_{C2}, P_4&amp;lt;/math&amp;gt;, dintre care două puncte sunt pe curbă şi două reprezintă capetele acesteia. Punctele &amp;lt;math&amp;gt;P_{C1}&amp;lt;/math&amp;gt; şi &amp;lt;math&amp;gt;P_{C2}&amp;lt;/math&amp;gt; verifică ecuaţia curbei pentru &amp;lt;math&amp;gt; t_{c1}&amp;lt;/math&amp;gt; şi respectiv &amp;lt;math&amp;gt;t_{c2}&amp;lt;/math&amp;gt;. Pentru a putea obţine un sistem de două ecuaţii cu două necunoscute (&amp;lt;math&amp;gt;P_2, P_3&amp;lt;/math&amp;gt;) trebuie să aproximăm cumva t-urile. Voi folosi aceeaşi metodă ca la interpolarea prin trei puncte:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;t_{c1} = \frac{dist(P_1,P_{C1})}{dist(P_1,P_{C1}) + dist(P_{C1},P_{C2}) + dist(P_{C2},P_4)}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;t_{c2} = \frac{dist(P_1,P_{C1})+dist(P_{C1},P_{C2})}{dist(P_1,P_{C1}) + dist(P_{C1},P_{C2}) + dist(P_{C2},P_4)}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Cunoscând t-urile pentru punctele de pe curbă putem scrie ecuaţiile sistemului:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\begin{cases}P_{C1} = B_{0,3}(t_{c1})P_1 + B_{1,3}(t_{c1})P_2 + B_{2,3}(t_{c1})P_3 + B_{3,3}(t_{c1})P_4 \\ P_{C2} = B_{0,3}(t_{c2})P_1 + B_{1,3}(t_{c2})P_2 + B_{2,3}(t_{c2})P_3 + B_{3,3}(t_{c2})P_4\end{cases}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Rezolvând sistemul se obţine:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\begin{cases}P_2 = - \frac{B_{2,3}(t_{c1})P_{C2} - B_{2,3}(t_{c2})P_{C1} +(B_{2,3}(t_{c2})B_{3,3}(t_{c1}) - B_{2,3}(t_{c1})B_{3,3}(t_{c2}))P_4 + (B_{0,3}(t_{c1})B_{2,3}(t_{c2}) - B_{0,3}(t_{c2})B_{2,3}(t_{c1}))P_1}{B_{1,3}(t_{c1})B_{2,3}(t_{c2}) - B_{1,3}(t_{c2})B_{2,3}(t_{c1})} \\ P_3 = \frac{B_{1,3}(t_{c1})P_{C2} - B_{1,3}(t_{c2})P_{C1} +(B_{1,3}(t_{c2})B_{3,3}(t_{c1}) - B_{1,3}(t_{c1})B_{3,3}(t_{c2}))P_4 + (B_{0,3}(t_{c1})B_{1,3}(t_{c2}) - B_{0,3}(t_{c2})B_{1,3}(t_{c1}))P_1}{B_{1,3}(t_{c1})B_{2,3}(t_{c2}) - B_{1,3}(t_{c2})B_{2,3}(t_{c1})}\end{cases}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
În continuare codul sursă Java care implementează interpolarea a patru puncte folosind o curbă Bézier de ordinul trei.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;java/&amp;gt;import java.awt.geom.Point2D;&lt;br /&gt;
&lt;br /&gt;
public class BezierUtils {&lt;br /&gt;
	&lt;br /&gt;
	&lt;br /&gt;
	/**&lt;br /&gt;
	 * Ecuatiile sunt rezolvate in Maxima 0.7.0a folosind urmatoarele &lt;br /&gt;
	 * eqn: x4  = x0*f1(t4) + x1*f2(t4) + x2*f3(t4) + x3*f4(t4); &lt;br /&gt;
	 * eqn1: x5 = x0*f1(t5) + x1*f2(t5) + x2*f3(t5) + x3*f4(t5); &lt;br /&gt;
	 * algsys([eqn, eqn1], [x1, x2]);&lt;br /&gt;
	 * &lt;br /&gt;
	 * Functiile f1, f2, f3 si f4 sunt polinoamele Bernstein de ordinul 3.&lt;br /&gt;
	 * &lt;br /&gt;
	 * @param x0&lt;br /&gt;
	 * @param x4&lt;br /&gt;
	 * @param x5&lt;br /&gt;
	 * @param x3&lt;br /&gt;
	 * @return&lt;br /&gt;
	 */&lt;br /&gt;
	public static Point2D.Float[] getBezierInterpPoints(Point2D.Float x0, Point2D.Float x4, Point2D.Float x5, Point2D.Float x3) {&lt;br /&gt;
		Point2D.Float[] result = new Point2D.Float[4];&lt;br /&gt;
		result[0] = new Point2D.Float();&lt;br /&gt;
		result[0].x = x0.x;&lt;br /&gt;
		result[0].y = x0.y;&lt;br /&gt;
		result[3] = new Point2D.Float();&lt;br /&gt;
		result[3].x = x3.x;&lt;br /&gt;
		result[3].y = x3.y;&lt;br /&gt;
		&lt;br /&gt;
		float t4 = (float) (x0.distance(x4) / (x0.distance(x4) + x4.distance(x5) + x5.distance(x3)));&lt;br /&gt;
		float t5 = (float) ((x0.distance(x4) + x4.distance(x5)) / (x0.distance(x4) + x4.distance(x5) + x5.distance(x3)));&lt;br /&gt;
		&lt;br /&gt;
		result[1] = new Point2D.Float();&lt;br /&gt;
		result[2] = new Point2D.Float();&lt;br /&gt;
		result[1].x = ((float) (-(f3(t4) * x5.x - f3(t5) * x4.x + (f4(t4) * f3(t5) - f3(t4) * f4(t5)) * x3.x + (f1(t4) * f3(t5) - f3(t4)&lt;br /&gt;
				* f1(t5))&lt;br /&gt;
				* x0.x) / (f2(t4) * f3(t5) - f3(t4) * f2(t5))));&lt;br /&gt;
		result[2].x = ((float) ((f2(t4) * x5.x - f2(t5) * x4.x + (f4(t4) * f2(t5) - f2(t4) * f4(t5)) * x3.x + (f1(t4) * f2(t5) - f2(t4)&lt;br /&gt;
				* f1(t5))&lt;br /&gt;
				* x0.x) / (f2(t4) * f3(t5) - f3(t4) * f2(t5))));&lt;br /&gt;
		result[1].y = ((float) (-(f3(t4) * x5.y - f3(t5) * x4.y + (f4(t4) * f3(t5) - f3(t4) * f4(t5)) * x3.y + (f1(t4) * f3(t5) - f3(t4)&lt;br /&gt;
				* f1(t5))&lt;br /&gt;
				* x0.y) / (f2(t4) * f3(t5) - f3(t4) * f2(t5))));&lt;br /&gt;
		result[2].y = ((float) ((f2(t4) * x5.y - f2(t5) * x4.y + (f4(t4) * f2(t5) - f2(t4) * f4(t5)) * x3.y + (f1(t4) * f2(t5) - f2(t4)&lt;br /&gt;
				* f1(t5))&lt;br /&gt;
				* x0.y) / (f2(t4) * f3(t5) - f3(t4) * f2(t5))));&lt;br /&gt;
		return result;&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	&lt;br /&gt;
	&lt;br /&gt;
	/**&lt;br /&gt;
	 * Polinomul Bernstein de indice 0 si de ordin 3&lt;br /&gt;
	 * &lt;br /&gt;
	 * @param t&lt;br /&gt;
	 */&lt;br /&gt;
	private static double f1(double t) {&lt;br /&gt;
		return Math.pow((1 - t), 3);&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	&lt;br /&gt;
	&lt;br /&gt;
	/**&lt;br /&gt;
	 * Polinomul Bernstein de indice 1 si de ordin 3&lt;br /&gt;
	 * &lt;br /&gt;
	 * @param t&lt;br /&gt;
	 */&lt;br /&gt;
	private static double f2(double t) {&lt;br /&gt;
		return 3 * t * Math.pow(1 - t, 2);&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	&lt;br /&gt;
	&lt;br /&gt;
	/**&lt;br /&gt;
	 * Polinomul Bernstein de indice 2 si de ordin 3&lt;br /&gt;
	 * &lt;br /&gt;
	 * @param t&lt;br /&gt;
	 */&lt;br /&gt;
	private static double f3(double t) {&lt;br /&gt;
		return 3 * Math.pow(t, 2) * (1 - t);&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	&lt;br /&gt;
	&lt;br /&gt;
	/**&lt;br /&gt;
	 * Polinomul Bernstein de indice 3 si de ordin 3&lt;br /&gt;
	 * &lt;br /&gt;
	 * @param t&lt;br /&gt;
	 */&lt;br /&gt;
	private static double f4(double t) {&lt;br /&gt;
		return Math.pow(t, 3);&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	public static void main(String[] args) {&lt;br /&gt;
		Point2D.Float P1 = new Point2D.Float(0,0);&lt;br /&gt;
		Point2D.Float Pc1 = new Point2D.Float(50,50);&lt;br /&gt;
		Point2D.Float Pc2 = new Point2D.Float(100,60);&lt;br /&gt;
		Point2D.Float P4 = new Point2D.Float(100,0);&lt;br /&gt;
		&lt;br /&gt;
		Point2D.Float[] bezCoords = getBezierInterpPoints(P1, Pc1, Pc2, P4);&lt;br /&gt;
		System.out.println(&amp;quot;Curba Bezier cubica este data de:&amp;quot;);&lt;br /&gt;
		System.out.println(bezCoords[0]);&lt;br /&gt;
		System.out.println(bezCoords[1]);&lt;br /&gt;
		System.out.println(bezCoords[2]);&lt;br /&gt;
		System.out.println(bezCoords[3]);&lt;br /&gt;
	}&lt;br /&gt;
}&amp;lt;/code&amp;gt;&lt;br /&gt;
[[Category:Pending]]&lt;/div&gt;</summary>
		<author><name>Csdexter</name></author>	</entry>

	<entry>
		<id>http://wiki.linux360.ro/index.php?title=Curbe_Bezier&amp;diff=3386</id>
		<title>Curbe Bezier</title>
		<link rel="alternate" type="text/html" href="http://wiki.linux360.ro/index.php?title=Curbe_Bezier&amp;diff=3386"/>
				<updated>2007-02-05T13:39:14Z</updated>
		
		<summary type="html">&lt;p&gt;Csdexter: /* Desenarea unei curbe Bézier */ Converted to GeShiCodeTag&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;O curbă '''Bézier''' este o curbă parametrică inventată de inginerul francez [http://en.wikipedia.org/wiki/Pierre_B%C3%A9zier Pierre Bézier] şi făcută publică în anul 1962. Bézier a folosito în procesul de design al automobilelor.&lt;br /&gt;
Curbele Bézier sunt foarte importante şi pentru domeniul tehnologiei informaţiei, fiind folosite în construcţia fonturilor TrueType.&lt;br /&gt;
&lt;br /&gt;
[[Image:Bezier_0.jpg |thumb|300px| Fig. 1 - Graficul polinoamelor Bernstein de ordinul 0]] &lt;br /&gt;
[[Image:Bezier_1.jpg |thumb|300px| Fig. 2 - Graficul polinoamelor Bernstein de ordinul 1]] &lt;br /&gt;
&lt;br /&gt;
==Polinoame Bernstein==&lt;br /&gt;
Polinoamele '''Bernstein''' stau la baza curbelor '''Bézier'''. Acestea poartă numele matematicianului ucrainian [http://en.wikipedia.org/wiki/Sergei_Natanovich_Bernstein Sergei Natanovich Bernstein]. &lt;br /&gt;
&lt;br /&gt;
Pentru a determina polinoamele Bernstein de orice grad se porneşte de la polinomul Bernstein de ordinul zero.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;1 = 1&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Apoi se scade din ambele părţi o varibilă t şi obţinem:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;1-t = 1-t \iff (1-t) + t = 1&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ultima expresie este o combinaţie liniară a polinoamelor Bernstein de bază de ordinul unu. Polinoamele sunt: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\begin{cases} B_{0,1} = 1-t \\ B_{1,1} = t\end{cases}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Acum putem obţine polinoame Bernstein de orice grad prin ridicarea la putere a ultimei expresii:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;((1-t) + t)^{2} = 1 \iff (1-t)^{2} + 2t(1-t) + t^2 = 1&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Obţinem astfel polinoamele Berstein de bază de ordinul doi: &amp;lt;math&amp;gt;\begin{cases}B_{0,2} = (1-t)^2 \\ B_{1,2} = 2t(1-t) \\ B_{2,2} = t^2 \end{cases}&amp;lt;/math&amp;gt;&lt;br /&gt;
[[Image:Bezier_2.jpg |thumb|300px| Fig. 3 - Graficul polinoamelor Bernstein de ordinul 2]] &lt;br /&gt;
&lt;br /&gt;
Foarte interesante şi utile sunt graficele polinoamelor Bernstein, pentru înţelegerea modului în care &amp;quot;funcţionează&amp;quot; curbele Bézier.&lt;br /&gt;
&lt;br /&gt;
==Definirea unei curbe Bézier==&lt;br /&gt;
O curbă Bézier de ordinul n se defineşte, cu ajutorul a N puncte, după cum urmează:&lt;br /&gt;
&amp;lt;math&amp;gt;P(t) = \sum_{k=0}^N B_{k,N}P_{k}&amp;lt;/math&amp;gt;, unde &amp;lt;math&amp;gt;B_{k,N}&amp;lt;/math&amp;gt; este polinomul Bernstein de indice k şi de ordin N. &amp;lt;math&amp;gt;P_{k}&amp;lt;/math&amp;gt; sunt puncte în plan, adică vectori cu două componente &amp;lt;math&amp;gt;(x_{k}, y_{k})&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
===Curba Bézier liniară===&lt;br /&gt;
Curba Bézier liniară este definită folosind polinoamele Bernstein de ordinul 1: &amp;lt;math&amp;gt;\begin{cases} B_{0,1} = 1-t \\ B_{1,1} = t\end{cases}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ecuaţia:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;P(t) = B_{0,1}P_{0} + B_{1,1}P_{1} \iff P(t) = (1-t)P_{0} + tP_{1}, t \in [0,1]&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Reprezentarea grafică este doar o linie şi din acest motiv această formă nu este aproape deloc folosită.&lt;br /&gt;
&lt;br /&gt;
[[Image:Bezier_3.jpg |thumb|300px| Fig. 4 - Graficul polinoamelor Bernstein de ordinul 3]]&lt;br /&gt;
&lt;br /&gt;
===Curba Bézier pătratică===&lt;br /&gt;
Curba Bézier pătratică sau de ordinul doi este o curbă dată prin trei puncte, punctul din mijloc fiind un punct de control care nu se află pe curbă, dar care influenţează aspectul acesteia.&lt;br /&gt;
&lt;br /&gt;
Aceasta foloseşte polinoamele Bernstein de ordinul doi:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\begin{cases}B_{0,2} = (1-t)^{2} \\ B_{1,2} = 2t(1-t) \\ B_{2,2} = t^2\end{cases}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ecuaţia curbei este:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;P(t) = B_{0,2}P_0 + B_{1,2}P_1 + B_{2,2}P_2 \iff P(t) = (1-t)^{2}P_0 + 2t(1-t)P_1 + t^{2}P_2&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
În anumite documente ecuaţiile sunt date în funcţie de puterile lui t, lucru care aduce confuzie, de aceea prezint în continuare şi această formă.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;P(t) = P_0 - P_0t^2 +2tP_1-2t^{2}P_1 + t^{2}P_2 \iff&lt;br /&gt;
P(t) = t^{2}(P_2 - P_0 - 2P_1) +t2P_1 + P_0&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Se fac notaţiile:&lt;br /&gt;
&amp;lt;math&amp;gt;\begin{cases}A = P_2 - 2P_1 - P_0 \\ B = 2P_1 \\ C = P_0\end{cases} \iff \begin{cases}A = P_2 - B - C \\ B = 2P_1 \\ C = P_0 \end{cases}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Şi ecuaţia capătă următoarea formă: &amp;lt;math&amp;gt;P(t) = At^2 + Bt + C&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ca şi proprietăţi ale curbei trebuie să subliniez următoarele:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;P(0) = P_0&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;P(1) = P_2&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Acest lucru poate fi uşor observat şi motivat cu ajutorul graficelor din figura 3.&lt;br /&gt;
===Curba Bézier cubică===&lt;br /&gt;
Curba Bézier cubică sau de ordinul trei este dată prin patru puncte &amp;lt;math&amp;gt;P_0, P_1, P_2&amp;lt;/math&amp;gt; şi &amp;lt;math&amp;gt;P_4&amp;lt;/math&amp;gt;. &amp;lt;math&amp;gt;P_1&amp;lt;/math&amp;gt; şi &amp;lt;math&amp;gt;P_2&amp;lt;/math&amp;gt; sunt puncte de control ale curbei.&lt;br /&gt;
&lt;br /&gt;
Pentru a putea scrie ecuaţia curbei scriem mai întâi ecuaţiile polinoamelor Bernstein de ordinul trei:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\begin{cases}B_{0,3} = (1-t)^{3} \\ B_{1,3} = 3t(1-t)^2 \\ B_{2,3} = 3t^2(1-t) \\ B_{3,3} = t^{3} \end{cases}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Ecuaţia curbei:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;P(t) = B_{0,3}P_0 + B_{1,3}P_1 + B_{2,3}P_2 + B_{3,3}P_3 \iff&lt;br /&gt;
P(t) = (1-t)^{3}P_0 + 3t(1-t)^2P_1 + 3t^2(1-t)P_2 + t^{3}P_3&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Scriem în funcţie de puterile lui t şi obţinem:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;P(t) = t^3(P_3 - 3P_2 + 3P_1 - P_0) + t^2(3P_2 - 6P_1 + 3P_0) + t(3P_1 - 3P_0) + P_0&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Se fac notaţiile:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\begin{cases}A = P_3 - 3P_2 + 3P_1 - P_0 \\ B = 3P_2 - 6P_1 + 3P_0 \\ C = 3P_1 - 3P_0 \end{cases} \iff \begin{cases}A = P_3 - P_0 - B - C \\ B = 3(P_2 - P_1) - C \\ C = 3(P_1 - P_0)\end{cases}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ecuaţia curbei în funcţie de A, B şi C: &amp;lt;math&amp;gt;P(t) = At^3 + Bt^2 + Ct+P_0&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Desenarea unei curbe Bézier==&lt;br /&gt;
Desenarea unei curbe Bézier nu este o sarcină trivială şi asta nu din cauza calculelor, pe care le-am lămurit până la acest moment ci din cauza afişării curbei astfel încât să aibe un aspect foarte lin.&lt;br /&gt;
&lt;br /&gt;
Algoritmul cel mai simplu de desenare este următorul (pentru curba cubica).&lt;br /&gt;
&lt;br /&gt;
Date de intrare: P1, P2, P3, P4 (P2, P3 - puncte de control)&lt;br /&gt;
B03, B13, B23, B33 sunt functii care intorc valorile polinoamelor Bernstein de ordin 3 si indice k (k = 0..3).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
1. PP &amp;lt;- P1    ;initializam punctul anterior (Previous Point) cu P1&lt;br /&gt;
2. IS &amp;lt;- .01   ;setam pasul de incrementare&lt;br /&gt;
3. pentru t = IS; t &amp;lt; 1; t &amp;lt;- t + IS executa&lt;br /&gt;
4.        CP.x = P1.x * B03(t) + P2.x * B13(t) + P3.x * B23(t) + P4.x * B33(t);&lt;br /&gt;
5.        CP.y = P1.y * B03(t) + P2.y * B13(t) + P3.y * B23(t) + P4.y * B33(t);&lt;br /&gt;
6.        drawLine(PP.x, PP.y, CP.x, CP.y);&lt;br /&gt;
7.        PP = CP;&lt;br /&gt;
8. end pentru&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
În continuare codul scris în Java pentru pseudocodul anterior. &lt;br /&gt;
&lt;br /&gt;
'''QuadraticBezier.java'''&lt;br /&gt;
&amp;lt;code java&amp;gt;import java.awt.Graphics;&lt;br /&gt;
import java.awt.Graphics2D;&lt;br /&gt;
import java.awt.RenderingHints;&lt;br /&gt;
import java.awt.geom.Point2D;&lt;br /&gt;
&lt;br /&gt;
import javax.swing.JPanel;&lt;br /&gt;
&lt;br /&gt;
public class QuadraticBezier extends JPanel {&lt;br /&gt;
	private static final long serialVersionUID = -6991920282065229392L;&lt;br /&gt;
	&lt;br /&gt;
	public void paint(Graphics g) {&lt;br /&gt;
		Graphics2D g2 = (Graphics2D)g;&lt;br /&gt;
		super.paint(g2);&lt;br /&gt;
		&lt;br /&gt;
		drawCubicBezier(g2, new Point2D.Float(100,100), &lt;br /&gt;
				            new Point2D.Float(130,150),&lt;br /&gt;
				            new Point2D.Float(150,200),&lt;br /&gt;
				            new Point2D.Float(200,130));&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	/**&lt;br /&gt;
	 * Aceasta functie deseneaza o curba Bezier cubica.&lt;br /&gt;
	 * @param g2 Graphics2D&lt;br /&gt;
	 * @param p1 BezPoint 1&lt;br /&gt;
	 * @param p2 Control Point 1&lt;br /&gt;
	 * @param p3 Control Point 2&lt;br /&gt;
	 * @param p4 BezPoint 2&lt;br /&gt;
	 */&lt;br /&gt;
	public void drawCubicBezier(Graphics2D g2, &lt;br /&gt;
							    Point2D.Float p1, &lt;br /&gt;
							    Point2D.Float p2, &lt;br /&gt;
							    Point2D.Float p3, &lt;br /&gt;
							    Point2D.Float p4) {&lt;br /&gt;
		float is = 0.01f; //pasul de incrementare&lt;br /&gt;
		Point2D.Float prevPoint = p1; //Punctul calculat anterior&lt;br /&gt;
		Point2D.Float curPoint = new Point2D.Float(0,0); //Punctul curent&lt;br /&gt;
		&lt;br /&gt;
		for (float t = is; t &amp;lt;= 1; t += is) {&lt;br /&gt;
			curPoint.x = B03(t)*p1.x + B13(t)*p2.x + B23(t)*p3.x + B33(t)*p4.x;&lt;br /&gt;
			curPoint.y = B03(t)*p1.y + B13(t)*p2.y + B23(t)*p3.y + B33(t)*p4.y;&lt;br /&gt;
			System.out.println(prevPoint.distance(curPoint));&lt;br /&gt;
			if (prevPoint.distance(curPoint) &amp;gt; 5) {&lt;br /&gt;
				g2.drawLine((int)prevPoint.x, (int)prevPoint.y, (int)curPoint.x, (int)curPoint.y);&lt;br /&gt;
				prevPoint.x = curPoint.x;&lt;br /&gt;
				prevPoint.y = curPoint.y;&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	&lt;br /&gt;
	private float B03(float t) {&lt;br /&gt;
		return (float) Math.pow(1-t, 3);&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	private float B13(float t) {&lt;br /&gt;
		return (float) (3*t*Math.pow(1-t, 2));&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	private float B23(float t) {&lt;br /&gt;
		return (3*t*t*(1-t));&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	private float B33(float t) {&lt;br /&gt;
		return (float) Math.pow(t,3);&lt;br /&gt;
	}&lt;br /&gt;
}&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''MainFormDesign.java'''&lt;br /&gt;
&amp;lt;code java&amp;gt;import javax.swing.JFrame;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
public abstract class MainFormDesign extends JFrame {&lt;br /&gt;
	private QuadraticBezier quadraticBezier = null;&lt;br /&gt;
	&lt;br /&gt;
	public MainFormDesign() {&lt;br /&gt;
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);&lt;br /&gt;
		setTitle(&amp;quot;Test Bezier&amp;quot;);&lt;br /&gt;
		setSize(400, 400);&lt;br /&gt;
		&lt;br /&gt;
		setContentPane(getQuadraticBezier());&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	private QuadraticBezier getQuadraticBezier() {&lt;br /&gt;
		if (null == quadraticBezier) {&lt;br /&gt;
			quadraticBezier = new QuadraticBezier();&lt;br /&gt;
		}&lt;br /&gt;
		return quadraticBezier;&lt;br /&gt;
	}&lt;br /&gt;
}&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''MainForm.java'''&lt;br /&gt;
&amp;lt;code java&amp;gt;import javax.swing.SwingUtilities;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
public class MainForm extends MainFormDesign {&lt;br /&gt;
	private static final long serialVersionUID = 1L;&lt;br /&gt;
	&lt;br /&gt;
	public MainForm() {&lt;br /&gt;
		super();&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	public static void main(String[] args) {&lt;br /&gt;
		SwingUtilities.invokeLater(new Runnable() {&lt;br /&gt;
			public void run() {&lt;br /&gt;
				MainForm mf = new MainForm();&lt;br /&gt;
				mf.setVisible(true);&lt;br /&gt;
			}&lt;br /&gt;
		});&lt;br /&gt;
	}&lt;br /&gt;
}&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:Javatestbez.png]] Se poate vedea în imaginea alăturată aspectul urât al curbei. Devine foarte clar că nu aceasta este calea de urmat pentru a desena o curbă Bézier.&lt;br /&gt;
&lt;br /&gt;
==Probleme de interpolare folosind curbe Bézier==&lt;br /&gt;
Interpolare: Interpolarea reprezintă o metodă matematică de a creea  date care lipsesc.&lt;br /&gt;
&lt;br /&gt;
Multe persoane nu se simt confortabil să deseneze curbe Bézier folosind acele controale care nu se află pe curbă. Este un pic nenatural, deşi în aplicaţii complexe ale curbelor acele controale devin mult mai importante şi uşurează foarte mult munca. De exemplu atunci când se doreşte alipirea a două curbe Bézier, dorind păstrarea continuităţii punctul de control al celei de-a doua curbe se modifică astfel încât să fie coliniar cu punctul de control al primei curbe şi punctul comun celor două curbe.&lt;br /&gt;
&lt;br /&gt;
În cazurile în care cunoaştem înainte puncte de pe curbă şi vrem să găsim ecuaţia curbei care trece prin acele puncte, trebuie să găsim o metodă de interpolare.&lt;br /&gt;
===Interpolarea a trei puncte===&lt;br /&gt;
Cunoaştem trei puncte &amp;lt;math&amp;gt;P_1&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;P_C&amp;lt;/math&amp;gt; şi &amp;lt;math&amp;gt;P_3&amp;lt;/math&amp;gt;. Dorim să găsim o curbă Bézier care să trecă prin aceste trei puncte. Este clar că &amp;lt;math&amp;gt;P_1&amp;lt;/math&amp;gt; şi &amp;lt;math&amp;gt;P_3&amp;lt;/math&amp;gt; sunt două dintre punctele care definesc curba Bézier şi mai trebuie să aflăm un punct asfel încât să definim o curbă Bézier de ordinul doi, dar care să treacă prin &amp;lt;math&amp;gt;P_C&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Pentru că &amp;lt;math&amp;gt;P_C&amp;lt;/math&amp;gt; se află pe curbă, înseamnă că satisface ecuaţia ei.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;P_C = P_1B_{0,2}(t_c) + P_2B_{1,2}(t_c) + P_3B_{2,2}(t_c)&amp;lt;/math&amp;gt;, unde &amp;lt;math&amp;gt;P_2&amp;lt;/math&amp;gt; este punctul pe care trebuie să-l aflăm. Ţinând cont că P_C este definit pentru un anumit &amp;lt;math&amp;gt;t_c&amp;lt;/math&amp;gt;, trebuie să-l aflăm pentru a putea afla &amp;lt;math&amp;gt;P_2&amp;lt;/math&amp;gt; folosind doar ecuaţia liniară scrisă anterior.&lt;br /&gt;
&lt;br /&gt;
O metodă bună de a aproxima t-ul cunoscând un punct de pe curbă este printr-un raport al distanţelor.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;t_c = \frac{dist(P_1,P_C)}{dist(P_1,P_C)+dist(P_C,P_3)}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Cunoscând &amp;lt;math&amp;gt;t_c&amp;lt;/math&amp;gt; putem scrie soluţia ecuaţiei:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;P_2 = \frac{P_C - P_1B_{0,2}(t_c) - P_3B_{2,2}(t_c)}{B_{1,2}(t_c)}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
În continuare codul sursă Java care implementează interpolarea a trei puncte folosind o curbă Bézier de ordinul doi.&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;java/&amp;gt;import java.awt.geom.Point2D;&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * &lt;br /&gt;
 * @author cristi&lt;br /&gt;
 */&lt;br /&gt;
public class BezierUtils {&lt;br /&gt;
	&lt;br /&gt;
	/**&lt;br /&gt;
	 * Functia ia ca parametri trei puncte de pe curba si intoarce un array de &lt;br /&gt;
	 * trei elemente care sunt punctele pentru definirea curbei Bezier de ordinul&lt;br /&gt;
	 * doi care trece prin cele trei puncte (Interpolare).&lt;br /&gt;
	 * @param x0 Primul punct de pe curba&lt;br /&gt;
	 * @param x3 Al doilea punct de pe curba&lt;br /&gt;
	 * @param x2 Al treilea punct de pe curba&lt;br /&gt;
	 * @return Point2D.Float[]&lt;br /&gt;
	 */&lt;br /&gt;
	public static Point2D.Float[] getQuadInterpPoints(Point2D.Float x0, Point2D.Float x3, Point2D.Float x2) {&lt;br /&gt;
		Point2D.Float[] result = new Point2D.Float[3];&lt;br /&gt;
		result[0] = new Point2D.Float(x0.x, x0.y);&lt;br /&gt;
		result[2] = new Point2D.Float(x2.x, x2.y);&lt;br /&gt;
		result[1] = new Point2D.Float();&lt;br /&gt;
		double t = x0.distance(x3) / (x0.distance(x3) + x3.distance(x2));&lt;br /&gt;
		result[1].x = ((float)((x3.getX() - fq2(t)*x2.getX() - fq0(t)*x0.getX())/fq1(t)));&lt;br /&gt;
		result[1].y = ((float)((x3.getY() - fq2(t)*x2.getY() - fq0(t)*x0.getY())/fq1(t)));&lt;br /&gt;
		return result;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	/**&lt;br /&gt;
	 * Polinomul Bernstein de indice 0 si ordin 2&lt;br /&gt;
	 * @param t&lt;br /&gt;
	 * @return&lt;br /&gt;
	 * 	returneaza valoarea polinomului Bernstein B_{k,n}(t) in t, k - indice, n - ordin&lt;br /&gt;
	 */&lt;br /&gt;
	private static double fq0(double t) {&lt;br /&gt;
		return Math.pow((1-t), 2);&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	/**&lt;br /&gt;
	 * Polinomul Bernstein de indice 1 si ordin 2&lt;br /&gt;
	 * @param t&lt;br /&gt;
	 * @return&lt;br /&gt;
	 * 	returneaza valoarea polinomului Bernstein B_{k,n}(t) in t, k - indice, n - ordin&lt;br /&gt;
	 */&lt;br /&gt;
	private static double fq1(double t) {&lt;br /&gt;
		return 2*t*(1-t);&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	/**&lt;br /&gt;
	 * Polinomul Bernstein de indice 2 si ordin 2&lt;br /&gt;
	 * @param t&lt;br /&gt;
	 * @return&lt;br /&gt;
	 * 	returneaza valoarea polinomului Bernstein B_{k,n}(t) in t, k - indice, n - ordin&lt;br /&gt;
	 */&lt;br /&gt;
	private static double fq2(double t) {&lt;br /&gt;
		return Math.pow(t, 2);&lt;br /&gt;
	}	&lt;br /&gt;
	&lt;br /&gt;
	public static void main(String[] args) {&lt;br /&gt;
		Point2D.Float P1 = new Point2D.Float(10,10);&lt;br /&gt;
		Point2D.Float PC = new Point2D.Float(30,50);&lt;br /&gt;
		Point2D.Float P3 = new Point2D.Float(15,20);&lt;br /&gt;
		&lt;br /&gt;
		Point2D.Float bezPoints[] = getQuadInterpPoints(P1, PC, P3);&lt;br /&gt;
		System.out.println(&amp;quot;Curba Bezier este definita de:&amp;quot;);&lt;br /&gt;
		System.out.println(bezPoints[0]);&lt;br /&gt;
		System.out.println(bezPoints[1]);&lt;br /&gt;
		System.out.println(bezPoints[2]);&lt;br /&gt;
	}&lt;br /&gt;
}&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Interpolarea a patru puncte===&lt;br /&gt;
Cunoştem patru puncte &amp;lt;math&amp;gt;P_1, P_{C1}, P_{C2}, P_4&amp;lt;/math&amp;gt;, dintre care două puncte sunt pe curbă şi două reprezintă capetele acesteia. Punctele &amp;lt;math&amp;gt;P_{C1}&amp;lt;/math&amp;gt; şi &amp;lt;math&amp;gt;P_{C2}&amp;lt;/math&amp;gt; verifică ecuaţia curbei pentru &amp;lt;math&amp;gt; t_{c1}&amp;lt;/math&amp;gt; şi respectiv &amp;lt;math&amp;gt;t_{c2}&amp;lt;/math&amp;gt;. Pentru a putea obţine un sistem de două ecuaţii cu două necunoscute (&amp;lt;math&amp;gt;P_2, P_3&amp;lt;/math&amp;gt;) trebuie să aproximăm cumva t-urile. Voi folosi aceeaşi metodă ca la interpolarea prin trei puncte:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;t_{c1} = \frac{dist(P_1,P_{C1})}{dist(P_1,P_{C1}) + dist(P_{C1},P_{C2}) + dist(P_{C2},P_4)}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;t_{c2} = \frac{dist(P_1,P_{C1})+dist(P_{C1},P_{C2})}{dist(P_1,P_{C1}) + dist(P_{C1},P_{C2}) + dist(P_{C2},P_4)}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Cunoscând t-urile pentru punctele de pe curbă putem scrie ecuaţiile sistemului:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\begin{cases}P_{C1} = B_{0,3}(t_{c1})P_1 + B_{1,3}(t_{c1})P_2 + B_{2,3}(t_{c1})P_3 + B_{3,3}(t_{c1})P_4 \\ P_{C2} = B_{0,3}(t_{c2})P_1 + B_{1,3}(t_{c2})P_2 + B_{2,3}(t_{c2})P_3 + B_{3,3}(t_{c2})P_4\end{cases}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Rezolvând sistemul se obţine:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\begin{cases}P_2 = - \frac{B_{2,3}(t_{c1})P_{C2} - B_{2,3}(t_{c2})P_{C1} +(B_{2,3}(t_{c2})B_{3,3}(t_{c1}) - B_{2,3}(t_{c1})B_{3,3}(t_{c2}))P_4 + (B_{0,3}(t_{c1})B_{2,3}(t_{c2}) - B_{0,3}(t_{c2})B_{2,3}(t_{c1}))P_1}{B_{1,3}(t_{c1})B_{2,3}(t_{c2}) - B_{1,3}(t_{c2})B_{2,3}(t_{c1})} \\ P_3 = \frac{B_{1,3}(t_{c1})P_{C2} - B_{1,3}(t_{c2})P_{C1} +(B_{1,3}(t_{c2})B_{3,3}(t_{c1}) - B_{1,3}(t_{c1})B_{3,3}(t_{c2}))P_4 + (B_{0,3}(t_{c1})B_{1,3}(t_{c2}) - B_{0,3}(t_{c2})B_{1,3}(t_{c1}))P_1}{B_{1,3}(t_{c1})B_{2,3}(t_{c2}) - B_{1,3}(t_{c2})B_{2,3}(t_{c1})}\end{cases}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
În continuare codul sursă Java care implementează interpolarea a patru puncte folosind o curbă Bézier de ordinul trei.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;java/&amp;gt;import java.awt.geom.Point2D;&lt;br /&gt;
&lt;br /&gt;
public class BezierUtils {&lt;br /&gt;
	&lt;br /&gt;
	&lt;br /&gt;
	/**&lt;br /&gt;
	 * Ecuatiile sunt rezolvate in Maxima 0.7.0a folosind urmatoarele &lt;br /&gt;
	 * eqn: x4  = x0*f1(t4) + x1*f2(t4) + x2*f3(t4) + x3*f4(t4); &lt;br /&gt;
	 * eqn1: x5 = x0*f1(t5) + x1*f2(t5) + x2*f3(t5) + x3*f4(t5); &lt;br /&gt;
	 * algsys([eqn, eqn1], [x1, x2]);&lt;br /&gt;
	 * &lt;br /&gt;
	 * Functiile f1, f2, f3 si f4 sunt polinoamele Bernstein de ordinul 3.&lt;br /&gt;
	 * &lt;br /&gt;
	 * @param x0&lt;br /&gt;
	 * @param x4&lt;br /&gt;
	 * @param x5&lt;br /&gt;
	 * @param x3&lt;br /&gt;
	 * @return&lt;br /&gt;
	 */&lt;br /&gt;
	public static Point2D.Float[] getBezierInterpPoints(Point2D.Float x0, Point2D.Float x4, Point2D.Float x5, Point2D.Float x3) {&lt;br /&gt;
		Point2D.Float[] result = new Point2D.Float[4];&lt;br /&gt;
		result[0] = new Point2D.Float();&lt;br /&gt;
		result[0].x = x0.x;&lt;br /&gt;
		result[0].y = x0.y;&lt;br /&gt;
		result[3] = new Point2D.Float();&lt;br /&gt;
		result[3].x = x3.x;&lt;br /&gt;
		result[3].y = x3.y;&lt;br /&gt;
		&lt;br /&gt;
		float t4 = (float) (x0.distance(x4) / (x0.distance(x4) + x4.distance(x5) + x5.distance(x3)));&lt;br /&gt;
		float t5 = (float) ((x0.distance(x4) + x4.distance(x5)) / (x0.distance(x4) + x4.distance(x5) + x5.distance(x3)));&lt;br /&gt;
		&lt;br /&gt;
		result[1] = new Point2D.Float();&lt;br /&gt;
		result[2] = new Point2D.Float();&lt;br /&gt;
		result[1].x = ((float) (-(f3(t4) * x5.x - f3(t5) * x4.x + (f4(t4) * f3(t5) - f3(t4) * f4(t5)) * x3.x + (f1(t4) * f3(t5) - f3(t4)&lt;br /&gt;
				* f1(t5))&lt;br /&gt;
				* x0.x) / (f2(t4) * f3(t5) - f3(t4) * f2(t5))));&lt;br /&gt;
		result[2].x = ((float) ((f2(t4) * x5.x - f2(t5) * x4.x + (f4(t4) * f2(t5) - f2(t4) * f4(t5)) * x3.x + (f1(t4) * f2(t5) - f2(t4)&lt;br /&gt;
				* f1(t5))&lt;br /&gt;
				* x0.x) / (f2(t4) * f3(t5) - f3(t4) * f2(t5))));&lt;br /&gt;
		result[1].y = ((float) (-(f3(t4) * x5.y - f3(t5) * x4.y + (f4(t4) * f3(t5) - f3(t4) * f4(t5)) * x3.y + (f1(t4) * f3(t5) - f3(t4)&lt;br /&gt;
				* f1(t5))&lt;br /&gt;
				* x0.y) / (f2(t4) * f3(t5) - f3(t4) * f2(t5))));&lt;br /&gt;
		result[2].y = ((float) ((f2(t4) * x5.y - f2(t5) * x4.y + (f4(t4) * f2(t5) - f2(t4) * f4(t5)) * x3.y + (f1(t4) * f2(t5) - f2(t4)&lt;br /&gt;
				* f1(t5))&lt;br /&gt;
				* x0.y) / (f2(t4) * f3(t5) - f3(t4) * f2(t5))));&lt;br /&gt;
		return result;&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	&lt;br /&gt;
	&lt;br /&gt;
	/**&lt;br /&gt;
	 * Polinomul Bernstein de indice 0 si de ordin 3&lt;br /&gt;
	 * &lt;br /&gt;
	 * @param t&lt;br /&gt;
	 */&lt;br /&gt;
	private static double f1(double t) {&lt;br /&gt;
		return Math.pow((1 - t), 3);&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	&lt;br /&gt;
	&lt;br /&gt;
	/**&lt;br /&gt;
	 * Polinomul Bernstein de indice 1 si de ordin 3&lt;br /&gt;
	 * &lt;br /&gt;
	 * @param t&lt;br /&gt;
	 */&lt;br /&gt;
	private static double f2(double t) {&lt;br /&gt;
		return 3 * t * Math.pow(1 - t, 2);&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	&lt;br /&gt;
	&lt;br /&gt;
	/**&lt;br /&gt;
	 * Polinomul Bernstein de indice 2 si de ordin 3&lt;br /&gt;
	 * &lt;br /&gt;
	 * @param t&lt;br /&gt;
	 */&lt;br /&gt;
	private static double f3(double t) {&lt;br /&gt;
		return 3 * Math.pow(t, 2) * (1 - t);&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	&lt;br /&gt;
	&lt;br /&gt;
	/**&lt;br /&gt;
	 * Polinomul Bernstein de indice 3 si de ordin 3&lt;br /&gt;
	 * &lt;br /&gt;
	 * @param t&lt;br /&gt;
	 */&lt;br /&gt;
	private static double f4(double t) {&lt;br /&gt;
		return Math.pow(t, 3);&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	public static void main(String[] args) {&lt;br /&gt;
		Point2D.Float P1 = new Point2D.Float(0,0);&lt;br /&gt;
		Point2D.Float Pc1 = new Point2D.Float(50,50);&lt;br /&gt;
		Point2D.Float Pc2 = new Point2D.Float(100,60);&lt;br /&gt;
		Point2D.Float P4 = new Point2D.Float(100,0);&lt;br /&gt;
		&lt;br /&gt;
		Point2D.Float[] bezCoords = getBezierInterpPoints(P1, Pc1, Pc2, P4);&lt;br /&gt;
		System.out.println(&amp;quot;Curba Bezier cubica este data de:&amp;quot;);&lt;br /&gt;
		System.out.println(bezCoords[0]);&lt;br /&gt;
		System.out.println(bezCoords[1]);&lt;br /&gt;
		System.out.println(bezCoords[2]);&lt;br /&gt;
		System.out.println(bezCoords[3]);&lt;br /&gt;
	}&lt;br /&gt;
}&amp;lt;/code&amp;gt;&lt;br /&gt;
[[Category:Pending]]&lt;/div&gt;</summary>
		<author><name>Csdexter</name></author>	</entry>

	<entry>
		<id>http://wiki.linux360.ro/index.php?title=Main_Page&amp;diff=3378</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="http://wiki.linux360.ro/index.php?title=Main_Page&amp;diff=3378"/>
				<updated>2007-02-03T11:11:22Z</updated>
		
		<summary type="html">&lt;p&gt;Csdexter: Fixed link, trimmed lists to first 10 entries&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* A început migrarea tutorialelor şi ghidurilor (HowTo) din forum în Wiki -- nu ezitaţi să daţi o mână de ajutor ;-) &lt;br /&gt;
* Vă rugăm, folosiţi '''doar''' [[linux360:Sandbox|caietul de ciorne]] pentru încercări şi probe.&lt;br /&gt;
* Pentru acces de editare, vă rugăm contactaţi [mailto:wiki-admin@linux360.ro administraţia].&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
* '''Ultimele 10 [[:Category:HowTo|ghiduri]] actualizate:'''&lt;br /&gt;
** [[ATi_%C5%9Fi_Slackware|ATi şi Slackware]] ([[:Category:FAQ|Întrebări puse frecvent]]/[[:Category:Tips'n'Tricks|ponturi]])&lt;br /&gt;
** [[Supraveghere video sub Linux folosind ZoneMinder]] ([[:Category:FAQ|Întrebări puse frecvent]]/[[:Category:Tips'n'Tricks|ponturi]])&lt;br /&gt;
** [[Internet mobil cu Vodafone SmartModem]] ([[:Category:Networking|retea]])&lt;br /&gt;
** [[Supraveghere video sub Linux]] ([[:Category:FAQ|Întrebări puse frecvent]]/[[:Category:Tips'n'Tricks|ponturi]])&lt;br /&gt;
** [[Debricking Linksys WRT54GL cu OpenWrt]] ([[:Category:Troubleshooting|remedieri]])&lt;br /&gt;
** [[Instalare Gentoo - Sfaturi]] ([[:Category:FAQ|Întrebări puse frecvent]])&lt;br /&gt;
** [[Detecţie componente hardware din consolă]] ([[:Category:FAQ|Întrebări puse frecvent]]/[[:Category:Tips'n'Tricks|ponturi]])&lt;br /&gt;
** [[Dezlipire sticker Microsoft Windows|Cum să scăpăm de abţibildul de la Microsoft?]] ([[:Category:FAQ|Întrebări puse frecvent]]/[[:Category:Tips'n'Tricks|ponturi]])&lt;br /&gt;
** [[Ce este GNU/Linux? / Cum invat Linux?]] ([[:Category:FAQ|Întrebări puse frecvent]])&lt;br /&gt;
** [[Comunica prin lpt|Controlul motoarelor pas cu pas prin portul paralel]] ([[:Category:Programming|programare]])&lt;br /&gt;
&lt;br /&gt;
* '''Ultimele 10 [[:Category:Tutorial|tutoriale]] actualizate''':&lt;br /&gt;
** [[Setari vim existentiale]] ([[:Category:Tips'n'Tricks|ponturi]])&lt;br /&gt;
** [[Script pentru restabilirea conexiunii ADSL]] ([[:Category:Networking|reţea]])&lt;br /&gt;
** [[Configurare Gaim pentru a afisa in status melodia curenta|Configurarea GAIM  pentru a afişa în status melodia curentă]] ([[:Category:Multimedia|multimedia]]/[[:Category:Office|programe de birotică]])&lt;br /&gt;
** [[Introducere in Gtk-sharp|Introducere în Gtk#]] ([[:Category:Programming|programare]])&lt;br /&gt;
** [[Schimbarea setarilor GTK 2|Schimbarea setărilor Gtk+ 2]] ([[:Category:GEs|medii grafice]]/[[:Category:Tips'n'Tricks|ponturi]])&lt;br /&gt;
** [[Sistem de depanare a aplicatiilor in limbajul C-plus-plus|Sistem de depanare a aplicaţiilor în limbajul C++]] ([[:Category:Programming|programare]])&lt;br /&gt;
** [[Iptables romana|Introducere în &amp;lt;tt&amp;gt;iptables&amp;lt;/tt&amp;gt;]] ([[:Category:Networking|reţea]]/[[:Category:Firewall|filtrare trafic]])&lt;br /&gt;
** [[Supra%C3%AEnc%C4%83rcarea operatorilor %C3%AEn limbajul C-plus-plus|Supraîncărcarea operatorilor în ANSI C++]] ([[:Category:Programming|programare]])&lt;br /&gt;
** [[Securitatea sistemului de operare (Slackware)]] ([[:Category:Tips'n'Tricks|ponturi]])&lt;br /&gt;
&lt;br /&gt;
* '''Ultimele 10 [[:Category:Collection|colecţii]] actualizate''':&lt;br /&gt;
** [[Scripturi BASH|Scripturi Bash utile]] ([[:Category:Programming|programare]])&lt;br /&gt;
** [[Salutare lume!|Salutare, lume!]] ([[:Category:Programming|programare]])&lt;br /&gt;
&lt;br /&gt;
* '''Ultimele 10 [[:Category:Presentation|prezentări]] actualizate''':&lt;br /&gt;
** [[Libipq by example|&amp;lt;tt&amp;gt;libipq&amp;lt;/tt&amp;gt; în exemple]] ([[:Cateogory:Networking|reţea]]/[[:Category:Programming|programare]])&lt;br /&gt;
** [[KDSFlash]] ([[:Category:Graphics|grafică]]/[[:Category:Animation|animaţie]]/[[:Category:Programming|programare]])&lt;br /&gt;
&lt;br /&gt;
* '''Articole [[:Category:Pending|în curs de scriere]]''':&lt;br /&gt;
** [[Echivalentele Linux ale programelor Windows]] ([[User:Raver|raver]])&lt;br /&gt;
** [[Partiţii]] ([[User:Sorin25|sorin25]])&lt;br /&gt;
** [[Autorizarea accesului la resurse web în Apache]] ([[User:Sorin25|sorin25]])&lt;br /&gt;
** [[ACIS|Administrare, configurare şi intreţinere servere]] ([[User:Csdexter|@Dexter]])&lt;br /&gt;
** [[Curbe Bezier|Curbe Bézier]] ([[User:Cbidea|Phaser]])&lt;br /&gt;
** [[Procesul de initializare al unui sistem Slackware GNU/Linux]] ([[User:Vladg|Vladg]])&lt;br /&gt;
** [[Instalarea distribuţiei Slackware Linux]] ([[User:Gabel|gabel]])&lt;br /&gt;
** [[Configurarea X în Slackware]] ([[User:Gabel|gabel]])&lt;/div&gt;</summary>
		<author><name>Csdexter</name></author>	</entry>

	<entry>
		<id>http://wiki.linux360.ro/index.php?title=Supraveghere_video_sub_Linux_folosind_ZoneMinder&amp;diff=3377</id>
		<title>Supraveghere video sub Linux folosind ZoneMinder</title>
		<link rel="alternate" type="text/html" href="http://wiki.linux360.ro/index.php?title=Supraveghere_video_sub_Linux_folosind_ZoneMinder&amp;diff=3377"/>
				<updated>2007-02-03T11:09:23Z</updated>
		
		<summary type="html">&lt;p&gt;Csdexter: /* Prima problema: memoria partajată (shared memory) */ SI units&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[http://www.zoneminder.com/ ZoneMinder] este cel mai profesional soft de monitorizare video disponibil pe Linux.&lt;br /&gt;
&lt;br /&gt;
Am avut ocazia să îl folosesc împreună cu o cameră [http://www.comrace.ro/Compo/3699/3699.htm SOHO CAS-230/E] conectată la server-ul cu ZoneMinder prin reţea.&lt;br /&gt;
&lt;br /&gt;
Configuraţia software folosită:&lt;br /&gt;
* ZoneMinder 1.21.0 (ruland pe ZoneMinder LiveCD)&lt;br /&gt;
* ZoneMinder 1.21.3 (ruland pe Mandrake 10.0)&lt;br /&gt;
&lt;br /&gt;
Din interfaţă web ZoneMinder aveţi atenţie la următoarele setări mai delicate:&lt;br /&gt;
* ''ZM_OPT_REMOTE_CAMERAS''  - trebuie bifat in cazul de fata&lt;br /&gt;
* ''ZM_OPT_USE_AUTH''        - nu ar trebui activat in mod normal	&lt;br /&gt;
* ''ZM_PATH_LOGS''           - /var/log/zm ar trebui sa fie trecut aici&lt;br /&gt;
* ''ZM_COLOUR_JPEG_FILES''   - nu e nevoie in cazul de fata&lt;br /&gt;
* ''ZM_NETCAM_REGEXPS''      - (nu exista in 1.21.0) debifat&lt;br /&gt;
* ''ZM_HTTP_VERSION''        - in cazul de fata e 1.1 la 1.21.0 si 1.0 la 1.21.3&lt;br /&gt;
* ''ZM_HTTP_TIMEOUT''        - minim 2500&lt;br /&gt;
* ''ZM_WEB_REFRESH_METHOD''  - http&lt;br /&gt;
* ''ZM_VIDEO_STREAM_METHOD'' - jpeg&lt;br /&gt;
&lt;br /&gt;
După setarea parametrilor de mai sus şi conectarea camerei la server verificaţi următoarele:&lt;br /&gt;
* Comanda&amp;lt;code bash&amp;gt;zmc -m &amp;lt;monitor_ID&amp;gt;&amp;lt;/code&amp;gt;nu trebuie să returneze imediat. Daca returneaza imediat (cu, sau fara eroare), ceva nu e bine; verificati log-urile.&lt;br /&gt;
* Memoria partajată (shared memory) (a se vedea [[Supraveghere_video_sub_Linux_folosind_ZoneMinder#Prima_problema:_memoria_partajat.C4.83_.28shared_memory.29|Prima problema]]) se calculeaza astfel: buffer (tabul ''Buffers'' de la monitor) x latimea imaginii x inaltimea imaginii x 3 (pentru o imagine de 24 biti). Pentru o imagine 640x480 pe 24 biti ar necesita aproximativ 92Mb memorie shared, cu buffer-ele setate standard.&lt;br /&gt;
&lt;br /&gt;
== Prima problema: memoria partajată (shared memory) ==&lt;br /&gt;
&lt;br /&gt;
Simptoma: în loguri apar mesaje referitoare la shared memory.&lt;br /&gt;
&lt;br /&gt;
Se rezolva prin marirea memoriei partajate.&lt;br /&gt;
&lt;br /&gt;
Memoria partajata alocata curent poate fi afisata cu comenzile:&lt;br /&gt;
&amp;lt;code bash&amp;gt;cat /proc/sys/kernel/shmall&lt;br /&gt;
cat /proc/sys/kernel/shmmax&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Valorile returnate sunt in octeti (bytes) si ar trebui sa fie de minim 134217728 (128 MiB). &lt;br /&gt;
Daca valorile returnate sunt mai mici decat minimul precizat, ar trebui marite. Pentru a le mari definitiv se editeaza valorile ''kernel.shmall'' si ''kernel.shmmax'' din ''/etc/sysctl.conf''. Daca aceste variabile nu exista in ''sysctl.conf'', ele vor fi create.&lt;br /&gt;
Atentie: valorile setate in ''sysctl.conf'' nu vor fi incarcate decat abia la bootare. Pentru aplicarea lor imediata, folosiţi comanda:&lt;br /&gt;
&amp;lt;code bash&amp;gt;/sbin/sysctl -p&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== A doua problema: erori legate de formatul JPEG ==&lt;br /&gt;
&lt;br /&gt;
Simptoma:&lt;br /&gt;
&amp;lt;code bash&amp;gt;# zmc -m 1&lt;br /&gt;
Not a JPEG file: starts with 0x48 0x54&amp;lt;/code&amp;gt;&lt;br /&gt;
Camera reda imagini de dimensiunea 640x480, pe 24 biti culoare, deci acestea trebuie sa fie si setarile monitorului ZM.&lt;br /&gt;
Atentie: cu cat imaginea are dimensiuni mai mari si culoare mai adanca, cu atat va creste si valoarea shared memory pe care ZM o cere (a se vedea mai sus).&lt;br /&gt;
&lt;br /&gt;
== A treia problema: Nu apare imagine ==&lt;br /&gt;
&lt;br /&gt;
Simptoma: Nu apare nici o imagine cand se deschide un monitor, in logurile ZM (de obicei aflate in ''/var/log/zm'') totul pare OK, dar in ''/var/log/messages'' apar mesaje de eroare de genul:&lt;br /&gt;
&amp;lt;pre&amp;gt;Got TERM signal, exiting&lt;br /&gt;
Select error: Interrupted system call&lt;br /&gt;
Shared memory not initialised by capture daemon&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Trebuie verificat ca ''ZM_PATH_ZMS'' sa fie setat corect. In mod normal, in ''/var/www'' trebuie sa existe un director ''cgi-bin'' ce contine doua fisiere, cel putin:&lt;br /&gt;
&amp;lt;code bash&amp;gt;# pwd&lt;br /&gt;
/var/www/cgi-bin&lt;br /&gt;
# ls&lt;br /&gt;
nph-zms zms&amp;lt;/code&amp;gt;&lt;br /&gt;
Deci, in ''ZM_PATH_ZMS'' se pot pune doua valori: ''/cgi-bin/zms'' sau ''/cgi-bin/nph-zms''. Incercati cu ambele, pana cand functioneaza.&lt;br /&gt;
&lt;br /&gt;
== A patra problemă: Camera are uneori probleme şi trebuie resetată. ==&lt;br /&gt;
&lt;br /&gt;
Dacă ZoneMinder nu mai receptează imagini, ping-ul la IP-ul camerei nu mai merge sau are pierderi, trebuie scoasă alimentarea camerei pentru câteva secunde...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Atenţie: server-ul de captura va avea nevoie de un hard disk mare pentru a putea face faţă cantităţii de date trimisă de cameră.&lt;br /&gt;
Puteţi folosi mecanismul standard al distribuţiei (e.g. ''tmpwatch'') sau, în lipsa acestuia, o soluţie ad-hoc de forma [[Scripturi_BASH#Stergere_directoare_vechi_de_pe_o_parti.C5.A3ie_pentru_salvarea_spa.C5.A3iului|următoare]] pentru a rezolva problema.&lt;br /&gt;
&lt;br /&gt;
[[Category:HowTo]]&lt;/div&gt;</summary>
		<author><name>Csdexter</name></author>	</entry>

	<entry>
		<id>http://wiki.linux360.ro/index.php?title=Main_Page&amp;diff=3360</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="http://wiki.linux360.ro/index.php?title=Main_Page&amp;diff=3360"/>
				<updated>2007-01-30T08:25:53Z</updated>
		
		<summary type="html">&lt;p&gt;Csdexter: Trimmed lists to first 10 entries&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* A început migrarea tutorialelor şi ghidurilor (HowTo) din forum în Wiki -- nu ezitaţi să daţi o mână de ajutor ;-) &lt;br /&gt;
* Vă rugăm, folosiţi '''doar''' [[linux360:Sandbox|caietul de ciorne]] pentru încercări şi probe.&lt;br /&gt;
* Pentru acces de editare, vă rugăm contactaţi [mailto:wiki-admin@linux360.ro administraţia].&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
* '''Ultimele 10 [[:Category:HowTo|ghiduri]] actualizate:'''&lt;br /&gt;
** [[Supraveghere video sub Linux folosind ZoneMinder]] ([[:Category:FAQ|Întrebări puse frecvent]]/[[:Category:Tips'n'Tricks|ponturi]])&lt;br /&gt;
** [[Internet mobil cu Vodafone SmartModem]] ([[:Category:Networking|retea]])&lt;br /&gt;
** [[Supraveghere video sub Linux]] ([[:Category:FAQ|Întrebări puse frecvent]]/[[:Category:Tips'n'Tricks|ponturi]])&lt;br /&gt;
** [[Debricking Linksys WRT54GL cu OpenWrt]] ([[:Category:Troubleshooting|remedieri]])&lt;br /&gt;
** [[Instalare Gentoo - Sfaturi]] ([[:Category:FAQ|Întrebări puse frecvent]])&lt;br /&gt;
** [[Detecţie componente hardware din consolă]] ([[:Category:FAQ|Întrebări puse frecvent]]/[[:Category:Tips'n'Tricks|ponturi]])&lt;br /&gt;
** [[Dezlipire sticker Microsoft Windows|Cum să scăpăm de abţibildul de la Microsoft?]] ([[:Category:FAQ|Întrebări puse frecvent]]/[[:Category:Tips'n'Tricks|ponturi]])&lt;br /&gt;
** [[Ce este GNU/Linux? / Cum invat Linux?]] ([[:Category:FAQ|Întrebări puse frecvent]])&lt;br /&gt;
** [[Comunica prin lpt|Controlul motoarelor pas cu pas prin portul paralel]] ([[:Category:Programming|programare]])&lt;br /&gt;
** [[Cum dau net mai departe|Redistribuirea/Partajarea conexiunii la Internet]]  ([[:Category:Networking|retea]]/[[:Category:Routing|rutare]])&lt;br /&gt;
&lt;br /&gt;
* '''Ultimele 10 [[:Category:Tutorial|tutoriale]] actualizate''':&lt;br /&gt;
** [[Setari vim existentiale]] ([[:Category:Tips'n'Tricks|ponturi]])&lt;br /&gt;
** [[Script pentru restabilirea conexiunii ADSL]] ([[:Category:Networking|reţea]])&lt;br /&gt;
** [[Configurare Gaim pentru a afisa in status melodia curenta|Configurarea GAIM  pentru a afişa în status melodia curentă]] ([[:Category:Multimedia|multimedia]]/[[:Category:Office|programe de birotică]])&lt;br /&gt;
** [[Introducere in Gtk-sharp|Introducere în Gtk#]] ([[:Category:Programming|programare]])&lt;br /&gt;
** [[Schimbarea setarilor GTK 2|Schimbarea setărilor Gtk+ 2]] ([[:Category:GEs|medii grafice]]/[[:Category:Tips'n'Tricks|ponturi]])&lt;br /&gt;
** [[Sistem de depanare a aplicatiilor in limbajul C-plus-plus|Sistem de depanare a aplicaţiilor în limbajul C++]] ([[:Category:Programming|programare]])&lt;br /&gt;
** [[Iptables romana|Introducere în &amp;lt;tt&amp;gt;iptables&amp;lt;/tt&amp;gt;]] ([[:Category:Networking|reţea]]/[[:Category:Firewall|filtrare trafic]])&lt;br /&gt;
** [[Supra%C3%AEnc%C4%83rcarea operatorilor %C3%AEn limbajul C-plus-plus|Supraîncărcarea operatorilor în ANSI C++]] ([[:Category:Programming|programare]])&lt;br /&gt;
** [[Securitatea sistemului de operare (Slackware)]] ([[:Category:Tips'n'Tricks|ponturi]])&lt;br /&gt;
&lt;br /&gt;
* '''Ultimele 10 [[:Category:Collection|colecţii]] actualizate''':&lt;br /&gt;
** [[Scripturi BASH|Scripturi Bash utile]] ([[:Category:Programming|programare]])&lt;br /&gt;
** [[Salutare lume!|Salutare, lume!]] ([[:Category:Programming|programare]])&lt;br /&gt;
&lt;br /&gt;
* '''Ultimele 10 [[:Category:Presentation|prezentări]] actualizate''':&lt;br /&gt;
** [[Libipq by example|&amp;lt;tt&amp;gt;libipq&amp;lt;/tt&amp;gt; în exemple]] ([[:Cateogory:Networking|reţea]]/[[:Category:Programming|programare]])&lt;br /&gt;
** [[KDSFlash]] ([[:Category:Graphics|grafică]]/[[:Category:Animation|animaţie]]/[[:Category:Programming|programare]])&lt;br /&gt;
&lt;br /&gt;
* '''Articole [[:Category:Pending|în curs de scriere]]''':&lt;br /&gt;
** [[Echivalentele Linux ale programelor Windows]] ([[User:Raver|raver]])&lt;br /&gt;
** [[Partiţii]] ([[User:Sorin25|sorin25]])&lt;br /&gt;
** [[Autorizarea accesului la resurse web în Apache]] ([[User:Sorin25|sorin25]])&lt;br /&gt;
** [[ACIS|Administrare, configurare şi intreţinere servere]] ([[User:Csdexter|@Dexter]])&lt;br /&gt;
** [[Curbe Bezier|Curbe Bézier]] ([[User:Cbidea|Phaser]])&lt;br /&gt;
** [[Procesul de initializare al unui sistem Slackware GNU/Linux]] ([[User:Vladg|Vladg]])&lt;br /&gt;
** [[Instalarea distribuţiei Slackware Linux]] ([[User:Gabel|gabel]])&lt;br /&gt;
** [[Configurarea X în Slackware]] ([[User:Gabel|gabel]])&lt;/div&gt;</summary>
		<author><name>Csdexter</name></author>	</entry>

	<entry>
		<id>http://wiki.linux360.ro/index.php?title=Supraveghere_video_sub_Linux_folosind_ZoneMinder&amp;diff=3359</id>
		<title>Supraveghere video sub Linux folosind ZoneMinder</title>
		<link rel="alternate" type="text/html" href="http://wiki.linux360.ro/index.php?title=Supraveghere_video_sub_Linux_folosind_ZoneMinder&amp;diff=3359"/>
				<updated>2007-01-30T08:23:56Z</updated>
		
		<summary type="html">&lt;p&gt;Csdexter: And one more cosmetic fix&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[http://www.zoneminder.com/ ZoneMinder] este cel mai profesional soft de monitorizare video disponibil pe Linux.&lt;br /&gt;
&lt;br /&gt;
Am avut ocazia să îl folosesc împreună cu o cameră SOHO CAS-230/E conectată la server-ul cu ZoneMinder prin reţea.&lt;br /&gt;
&lt;br /&gt;
Configuraţia software folosită:&lt;br /&gt;
* ZoneMinder 1.21.0 (ruland pe ZoneMinder LiveCD)&lt;br /&gt;
* ZoneMinder 1.21.3 (ruland pe Mandrake 10.0)&lt;br /&gt;
&lt;br /&gt;
Din interfaţă web ZoneMinder aveţi atenţie la următoarele setări mai delicate:&lt;br /&gt;
* ''ZM_OPT_REMOTE_CAMERAS''  - trebuie bifat in cazul de fata&lt;br /&gt;
* ''ZM_OPT_USE_AUTH''        - nu ar trebui activat in mod normal	&lt;br /&gt;
* ''ZM_PATH_LOGS''           - /var/log/zm ar trebui sa fie trecut aici&lt;br /&gt;
* ''ZM_COLOUR_JPEG_FILES''   - nu e nevoie in cazul de fata&lt;br /&gt;
* ''ZM_NETCAM_REGEXPS''      - (nu exista in 1.21.0) debifat&lt;br /&gt;
* ''ZM_HTTP_VERSION''        - in cazul de fata e 1.1 la 1.21.0 si 1.0 la 1.21.3&lt;br /&gt;
* ''ZM_HTTP_TIMEOUT''        - minim 2500&lt;br /&gt;
* ''ZM_WEB_REFRESH_METHOD''  - http&lt;br /&gt;
* ''ZM_VIDEO_STREAM_METHOD'' - jpeg&lt;br /&gt;
&lt;br /&gt;
După setarea parametrilor de mai sus şi conectarea camerei la server verificaţi următoarele:&lt;br /&gt;
* Comanda&amp;lt;code bash&amp;gt;zmc -m &amp;lt;monitor_ID&amp;gt;&amp;lt;/code&amp;gt;nu trebuie să returneze imediat. Daca returneaza imediat (cu, sau fara eroare), ceva nu e bine; verificati log-urile.&lt;br /&gt;
* Memoria partajată (shared memory) (a se vedea [[Supraveghere_video_sub_Linux_folosind_ZoneMinder#Prima_problema:_memoria_partajat.C4.83_.28shared_memory.29|Prima problema]]) se calculeaza astfel: buffer (tabul ''Buffers'' de la monitor) x latimea imaginii x inaltimea imaginii x 3 (pentru o imagine de 24 biti). Pentru o imagine 640x480 pe 24 biti ar necesita aproximativ 92Mb memorie shared, cu buffer-ele setate standard.&lt;br /&gt;
&lt;br /&gt;
== Prima problema: memoria partajată (shared memory) ==&lt;br /&gt;
&lt;br /&gt;
Simptoma: în loguri apar mesaje referitoare la shared memory.&lt;br /&gt;
&lt;br /&gt;
Se rezolva prin marirea memoriei partajate.&lt;br /&gt;
&lt;br /&gt;
Memoria partajata alocata curent poate fi afisata cu comenzile:&lt;br /&gt;
&amp;lt;code bash&amp;gt;cat /proc/sys/kernel/shmall&lt;br /&gt;
cat /proc/sys/kernel/shmmax&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Valorile returnate sunt in octeti (bytes) si ar trebui sa fie minim 134217728 (128 Mb). &lt;br /&gt;
Daca valorile returnate sunt mai mici decat minimul precizat, ar trebui marite. Pentru a le mari definitiv se editeaza valorile ''kernel.shmall'' si ''kernel.shmmax'' din ''/etc/sysctl.conf''. Daca aceste variabile nu exista in ''sysctl.conf'', ele vor fi create.&lt;br /&gt;
Atentie: valorile setate in ''sysctl.conf'' nu vor fi incarcate decat abia la bootare. Pentru aplicarea lor imediata, folosiţi comanda:&lt;br /&gt;
&amp;lt;code bash&amp;gt;/sbin/sysctl -p&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== A doua problema: erori legate de formatul JPEG ==&lt;br /&gt;
&lt;br /&gt;
Simptoma:&lt;br /&gt;
&amp;lt;code bash&amp;gt;# zmc -m 1&lt;br /&gt;
Not a JPEG file: starts with 0x48 0x54&amp;lt;/code&amp;gt;&lt;br /&gt;
Camera reda imagini de dimensiunea 640x480, pe 24 biti culoare, deci acestea trebuie sa fie si setarile monitorului ZM.&lt;br /&gt;
Atentie: cu cat imaginea are dimensiuni mai mari si culoare mai adanca, cu atat va creste si valoarea shared memory pe care ZM o cere (a se vedea mai sus).&lt;br /&gt;
&lt;br /&gt;
== A treia problema: Nu apare imagine ==&lt;br /&gt;
&lt;br /&gt;
Simptoma: Nu apare nici o imagine cand se deschide un monitor, in logurile ZM (de obicei aflate in ''/var/log/zm'') totul pare OK, dar in ''/var/log/messages'' apar mesaje de eroare de genul:&lt;br /&gt;
&amp;lt;pre&amp;gt;Got TERM signal, exiting&lt;br /&gt;
Select error: Interrupted system call&lt;br /&gt;
Shared memory not initialised by capture daemon&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Trebuie verificat ca ''ZM_PATH_ZMS'' sa fie setat corect. In mod normal, in ''/var/www'' trebuie sa existe un director ''cgi-bin'' ce contine doua fisiere, cel putin:&lt;br /&gt;
&amp;lt;code bash&amp;gt;# pwd&lt;br /&gt;
/var/www/cgi-bin&lt;br /&gt;
# ls&lt;br /&gt;
nph-zms zms&amp;lt;/code&amp;gt;&lt;br /&gt;
Deci, in ''ZM_PATH_ZMS'' se pot pune doua valori: ''/cgi-bin/zms'' sau ''/cgi-bin/nph-zms''. Incercati cu ambele, pana cand functioneaza.&lt;br /&gt;
&lt;br /&gt;
== A patra problemă: Camera are uneori probleme şi trebuie resetată. ==&lt;br /&gt;
&lt;br /&gt;
Dacă ZoneMinder nu mai receptează imagini, ping-ul la IP-ul camerei nu mai merge sau are pierderi, trebuie scoasă alimentarea camerei pentru câteva secunde...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Atenţie: server-ul de captura va avea nevoie de un hard disk mare pentru a putea face faţă cantităţii de date trimisă de cameră.&lt;br /&gt;
Puteţi folosi mecanismul standard al distribuţiei (e.g. ''tmpwatch'') sau, în lipsa acestuia, o soluţie ad-hoc de forma [[Scripturi_BASH#Stergere_directoare_vechi_de_pe_o_parti.C5.A3ie_pentru_salvarea_spa.C5.A3iului|următoare]] pentru a rezolva problema.&lt;br /&gt;
&lt;br /&gt;
[[Category:HowTo]]&lt;/div&gt;</summary>
		<author><name>Csdexter</name></author>	</entry>

	<entry>
		<id>http://wiki.linux360.ro/index.php?title=Supraveghere_video_sub_Linux_folosind_ZoneMinder&amp;diff=3358</id>
		<title>Supraveghere video sub Linux folosind ZoneMinder</title>
		<link rel="alternate" type="text/html" href="http://wiki.linux360.ro/index.php?title=Supraveghere_video_sub_Linux_folosind_ZoneMinder&amp;diff=3358"/>
				<updated>2007-01-30T08:23:13Z</updated>
		
		<summary type="html">&lt;p&gt;Csdexter: Fixed the fix (link syntax)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[http://www.zoneminder.com/ ZoneMinder] este cel mai profesional soft de monitorizare video disponibil pe Linux.&lt;br /&gt;
&lt;br /&gt;
Am avut ocazia să îl folosesc împreună cu o cameră SOHO CAS-230/E conectată la server-ul cu ZoneMinder prin reţea.&lt;br /&gt;
&lt;br /&gt;
Configuraţia software folosită:&lt;br /&gt;
* ZoneMinder 1.21.0 (ruland pe ZoneMinder LiveCD)&lt;br /&gt;
* ZoneMinder 1.21.3 (ruland pe Mandrake 10.0)&lt;br /&gt;
&lt;br /&gt;
Din interfaţă web ZoneMinder aveţi atenţie la următoarele setări mai delicate:&lt;br /&gt;
* ''ZM_OPT_REMOTE_CAMERAS''  - trebuie bifat in cazul de fata&lt;br /&gt;
* ''ZM_OPT_USE_AUTH''        - nu ar trebui activat in mod normal	&lt;br /&gt;
* ''ZM_PATH_LOGS''           - /var/log/zm ar trebui sa fie trecut aici&lt;br /&gt;
* ''ZM_COLOUR_JPEG_FILES''   - nu e nevoie in cazul de fata&lt;br /&gt;
* ''ZM_NETCAM_REGEXPS''      - (nu exista in 1.21.0) debifat&lt;br /&gt;
* ''ZM_HTTP_VERSION''        - in cazul de fata e 1.1 la 1.21.0 si 1.0 la 1.21.3&lt;br /&gt;
* ''ZM_HTTP_TIMEOUT''        - minim 2500&lt;br /&gt;
* ''ZM_WEB_REFRESH_METHOD''  - http&lt;br /&gt;
* ''ZM_VIDEO_STREAM_METHOD'' - jpeg&lt;br /&gt;
&lt;br /&gt;
După setarea parametrilor de mai sus şi conectarea camerei la server verificaţi următoarele:&lt;br /&gt;
* Comanda&amp;lt;code bash&amp;gt;zmc -m &amp;lt;monitor_ID&amp;gt;&amp;lt;/code&amp;gt;nu trebuie să returneze imediat. Daca returneaza imediat (cu, sau fara eroare), ceva nu e bine; verificati log-urile.&lt;br /&gt;
* Memoria partajată (shared memory) (a se vedea [[Supraveghere_video_sub_Linux_folosind_ZoneMinder#Prima_problema:_memoria_partajat.C4.83_.28shared_memory.29 Prima problema]]) se calculeaza astfel: buffer (tabul ''Buffers'' de la monitor) x latimea imaginii x inaltimea imaginii x 3 (pentru o imagine de 24 biti). Pentru o imagine 640x480 pe 24 biti ar necesita aproximativ 92Mb memorie shared, cu buffer-ele setate standard.&lt;br /&gt;
&lt;br /&gt;
== Prima problema: memoria partajată (shared memory) ==&lt;br /&gt;
&lt;br /&gt;
Simptoma: în loguri apar mesaje referitoare la shared memory.&lt;br /&gt;
&lt;br /&gt;
Se rezolva prin marirea memoriei partajate.&lt;br /&gt;
&lt;br /&gt;
Memoria partajata alocata curent poate fi afisata cu comenzile:&lt;br /&gt;
&amp;lt;code bash&amp;gt;cat /proc/sys/kernel/shmall&lt;br /&gt;
cat /proc/sys/kernel/shmmax&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Valorile returnate sunt in octeti (bytes) si ar trebui sa fie minim 134217728 (128 Mb). &lt;br /&gt;
Daca valorile returnate sunt mai mici decat minimul precizat, ar trebui marite. Pentru a le mari definitiv se editeaza valorile ''kernel.shmall'' si ''kernel.shmmax'' din ''/etc/sysctl.conf''. Daca aceste variabile nu exista in ''sysctl.conf'', ele vor fi create.&lt;br /&gt;
Atentie: valorile setate in ''sysctl.conf'' nu vor fi incarcate decat abia la bootare. Pentru aplicarea lor imediata, folosiţi comanda:&lt;br /&gt;
&amp;lt;code bash&amp;gt;/sbin/sysctl -p&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== A doua problema: erori legate de formatul JPEG ==&lt;br /&gt;
&lt;br /&gt;
Simptoma:&lt;br /&gt;
&amp;lt;code bash&amp;gt;# zmc -m 1&lt;br /&gt;
Not a JPEG file: starts with 0x48 0x54&amp;lt;/code&amp;gt;&lt;br /&gt;
Camera reda imagini de dimensiunea 640x480, pe 24 biti culoare, deci acestea trebuie sa fie si setarile monitorului ZM.&lt;br /&gt;
Atentie: cu cat imaginea are dimensiuni mai mari si culoare mai adanca, cu atat va creste si valoarea shared memory pe care ZM o cere (a se vedea mai sus).&lt;br /&gt;
&lt;br /&gt;
== A treia problema: Nu apare imagine ==&lt;br /&gt;
&lt;br /&gt;
Simptoma: Nu apare nici o imagine cand se deschide un monitor, in logurile ZM (de obicei aflate in ''/var/log/zm'') totul pare OK, dar in ''/var/log/messages'' apar mesaje de eroare de genul:&lt;br /&gt;
&amp;lt;pre&amp;gt;Got TERM signal, exiting&lt;br /&gt;
Select error: Interrupted system call&lt;br /&gt;
Shared memory not initialised by capture daemon&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Trebuie verificat ca ''ZM_PATH_ZMS'' sa fie setat corect. In mod normal, in ''/var/www'' trebuie sa existe un director ''cgi-bin'' ce contine doua fisiere, cel putin:&lt;br /&gt;
&amp;lt;code bash&amp;gt;# pwd&lt;br /&gt;
/var/www/cgi-bin&lt;br /&gt;
# ls&lt;br /&gt;
nph-zms zms&amp;lt;/code&amp;gt;&lt;br /&gt;
Deci, in ''ZM_PATH_ZMS'' se pot pune doua valori: ''/cgi-bin/zms'' sau ''/cgi-bin/nph-zms''. Incercati cu ambele, pana cand functioneaza.&lt;br /&gt;
&lt;br /&gt;
== A patra problemă: Camera are uneori probleme şi trebuie resetată. ==&lt;br /&gt;
&lt;br /&gt;
Dacă ZoneMinder nu mai receptează imagini, ping-ul la IP-ul camerei nu mai merge sau are pierderi, trebuie scoasă alimentarea camerei pentru câteva secunde...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Atenţie: server-ul de captura va avea nevoie de un hard disk mare pentru a putea face faţă cantităţii de date trimisă de cameră.&lt;br /&gt;
Puteţi folosi mecanismul standard al distribuţiei (e.g. ''tmpwatch'') sau, în lipsa acestuia, o soluţie ad-hoc de forma [[Scripturi_BASH#Stergere_directoare_vechi_de_pe_o_parti.C5.A3ie_pentru_salvarea_spa.C5.A3iului următoare]] pentru a rezolva problema.&lt;br /&gt;
&lt;br /&gt;
[[Category:HowTo]]&lt;/div&gt;</summary>
		<author><name>Csdexter</name></author>	</entry>

	<entry>
		<id>http://wiki.linux360.ro/index.php?title=Supraveghere_video_sub_Linux_folosind_ZoneMinder&amp;diff=3357</id>
		<title>Supraveghere video sub Linux folosind ZoneMinder</title>
		<link rel="alternate" type="text/html" href="http://wiki.linux360.ro/index.php?title=Supraveghere_video_sub_Linux_folosind_ZoneMinder&amp;diff=3357"/>
				<updated>2007-01-30T08:22:07Z</updated>
		
		<summary type="html">&lt;p&gt;Csdexter: Various link-syntax fixes, technical omissions filled in&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[http://www.zoneminder.com/ ZoneMinder] este cel mai profesional soft de monitorizare video disponibil pe Linux.&lt;br /&gt;
&lt;br /&gt;
Am avut ocazia să îl folosesc împreună cu o cameră SOHO CAS-230/E conectată la server-ul cu ZoneMinder prin reţea.&lt;br /&gt;
&lt;br /&gt;
Configuraţia software folosită:&lt;br /&gt;
* ZoneMinder 1.21.0 (ruland pe ZoneMinder LiveCD)&lt;br /&gt;
* ZoneMinder 1.21.3 (ruland pe Mandrake 10.0)&lt;br /&gt;
&lt;br /&gt;
Din interfaţă web ZoneMinder aveţi atenţie la următoarele setări mai delicate:&lt;br /&gt;
* ''ZM_OPT_REMOTE_CAMERAS''  - trebuie bifat in cazul de fata&lt;br /&gt;
* ''ZM_OPT_USE_AUTH''        - nu ar trebui activat in mod normal	&lt;br /&gt;
* ''ZM_PATH_LOGS''           - /var/log/zm ar trebui sa fie trecut aici&lt;br /&gt;
* ''ZM_COLOUR_JPEG_FILES''   - nu e nevoie in cazul de fata&lt;br /&gt;
* ''ZM_NETCAM_REGEXPS''      - (nu exista in 1.21.0) debifat&lt;br /&gt;
* ''ZM_HTTP_VERSION''        - in cazul de fata e 1.1 la 1.21.0 si 1.0 la 1.21.3&lt;br /&gt;
* ''ZM_HTTP_TIMEOUT''        - minim 2500&lt;br /&gt;
* ''ZM_WEB_REFRESH_METHOD''  - http&lt;br /&gt;
* ''ZM_VIDEO_STREAM_METHOD'' - jpeg&lt;br /&gt;
&lt;br /&gt;
După setarea parametrilor de mai sus şi conectarea camerei la server verificaţi următoarele:&lt;br /&gt;
* Comanda&amp;lt;code bash&amp;gt;zmc -m &amp;lt;monitor_ID&amp;gt;&amp;lt;/code&amp;gt;nu trebuie să returneze imediat. Daca returneaza imediat (cu, sau fara eroare), ceva nu e bine; verificati log-urile.&lt;br /&gt;
* Memoria partajată (shared memory) (a se vedea [Supraveghere_video_sub_Linux_folosind_ZoneMinder#Prima_problema:_memoria_partajat.C4.83_.28shared_memory.29 Prima problema]) se calculeaza astfel: buffer (tabul ''Buffers'' de la monitor) x latimea imaginii x inaltimea imaginii x 3 (pentru o imagine de 24 biti). Pentru o imagine 640x480 pe 24 biti ar necesita aproximativ 92Mb memorie shared, cu buffer-ele setate standard.&lt;br /&gt;
&lt;br /&gt;
== Prima problema: memoria partajată (shared memory) ==&lt;br /&gt;
&lt;br /&gt;
Simptoma: în loguri apar mesaje referitoare la shared memory.&lt;br /&gt;
&lt;br /&gt;
Se rezolva prin marirea memoriei partajate.&lt;br /&gt;
&lt;br /&gt;
Memoria partajata alocata curent poate fi afisata cu comenzile:&lt;br /&gt;
&amp;lt;code bash&amp;gt;cat /proc/sys/kernel/shmall&lt;br /&gt;
cat /proc/sys/kernel/shmmax&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Valorile returnate sunt in octeti (bytes) si ar trebui sa fie minim 134217728 (128 Mb). &lt;br /&gt;
Daca valorile returnate sunt mai mici decat minimul precizat, ar trebui marite. Pentru a le mari definitiv se editeaza valorile ''kernel.shmall'' si ''kernel.shmmax'' din ''/etc/sysctl.conf''. Daca aceste variabile nu exista in ''sysctl.conf'', ele vor fi create.&lt;br /&gt;
Atentie: valorile setate in ''sysctl.conf'' nu vor fi incarcate decat abia la bootare. Pentru aplicarea lor imediata, folosiţi comanda:&lt;br /&gt;
&amp;lt;code bash&amp;gt;/sbin/sysctl -p&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== A doua problema: erori legate de formatul JPEG ==&lt;br /&gt;
&lt;br /&gt;
Simptoma:&lt;br /&gt;
&amp;lt;code bash&amp;gt;# zmc -m 1&lt;br /&gt;
Not a JPEG file: starts with 0x48 0x54&amp;lt;/code&amp;gt;&lt;br /&gt;
Camera reda imagini de dimensiunea 640x480, pe 24 biti culoare, deci acestea trebuie sa fie si setarile monitorului ZM.&lt;br /&gt;
Atentie: cu cat imaginea are dimensiuni mai mari si culoare mai adanca, cu atat va creste si valoarea shared memory pe care ZM o cere (a se vedea mai sus).&lt;br /&gt;
&lt;br /&gt;
== A treia problema: Nu apare imagine ==&lt;br /&gt;
&lt;br /&gt;
Simptoma: Nu apare nici o imagine cand se deschide un monitor, in logurile ZM (de obicei aflate in ''/var/log/zm'') totul pare OK, dar in ''/var/log/messages'' apar mesaje de eroare de genul:&lt;br /&gt;
&amp;lt;pre&amp;gt;Got TERM signal, exiting&lt;br /&gt;
Select error: Interrupted system call&lt;br /&gt;
Shared memory not initialised by capture daemon&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Trebuie verificat ca ''ZM_PATH_ZMS'' sa fie setat corect. In mod normal, in ''/var/www'' trebuie sa existe un director ''cgi-bin'' ce contine doua fisiere, cel putin:&lt;br /&gt;
&amp;lt;code bash&amp;gt;# pwd&lt;br /&gt;
/var/www/cgi-bin&lt;br /&gt;
# ls&lt;br /&gt;
nph-zms zms&amp;lt;/code&amp;gt;&lt;br /&gt;
Deci, in ''ZM_PATH_ZMS'' se pot pune doua valori: ''/cgi-bin/zms'' sau ''/cgi-bin/nph-zms''. Incercati cu ambele, pana cand functioneaza.&lt;br /&gt;
&lt;br /&gt;
== A patra problemă: Camera are uneori probleme şi trebuie resetată. ==&lt;br /&gt;
&lt;br /&gt;
Dacă ZoneMinder nu mai receptează imagini, ping-ul la IP-ul camerei nu mai merge sau are pierderi, trebuie scoasă alimentarea camerei pentru câteva secunde...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Atenţie: server-ul de captura va avea nevoie de un hard disk mare pentru a putea face faţă cantităţii de date trimisă de cameră.&lt;br /&gt;
Puteţi folosi mecanismul standard al distribuţiei (e.g. ''tmpwatch'') sau, în lipsa acestuia, o soluţie ad-hoc de forma [Scripturi_BASH#Stergere_directoare_vechi_de_pe_o_parti.C5.A3ie_pentru_salvarea_spa.C5.A3iului următoare] pentru a rezolva problema.&lt;br /&gt;
&lt;br /&gt;
[[Category:HowTo]]&lt;/div&gt;</summary>
		<author><name>Csdexter</name></author>	</entry>

	<entry>
		<id>http://wiki.linux360.ro/index.php?title=Supra%C3%83%C2%AEnc%C3%84%C6%92rcarea_operatorilor_%C3%83%C2%AEn_limbajul_C-plus-plus&amp;diff=3335</id>
		<title>SupraÃ®ncÄƒrcarea operatorilor Ã®n limbajul C-plus-plus</title>
		<link rel="alternate" type="text/html" href="http://wiki.linux360.ro/index.php?title=Supra%C3%83%C2%AEnc%C3%84%C6%92rcarea_operatorilor_%C3%83%C2%AEn_limbajul_C-plus-plus&amp;diff=3335"/>
				<updated>2007-01-12T10:16:26Z</updated>
		
		<summary type="html">&lt;p&gt;Csdexter: /* Exemplu */ Adapted to GeSHiCodeTag&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;''Titlul oribil este rezultatul unei limitări in Wiki -- imediat ce se rezolvă, vom face şi titul mai uşor de privit''&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Introducere ==&lt;br /&gt;
Operatiile de baza sunt implementate in limbajul C++ cu ajutorul operatorilor. In limbajul C++ operatorii sunt, de fapt, functii. Operatorii oferiti de limbaj pot ''lucra'' decat asupra tipurilor de date predefinite. Pentru a folosi operatorii asupra tipurilor de date construite de noi, limbajul C++ ne ofera un mecanism care se numeste '''supraincarcarea operatorilor'''.&lt;br /&gt;
&lt;br /&gt;
De ce am avea nevoie de asa ceva? Dupa cum se stie se poate crea o functie a unei clase care sa faca exact ce ar face un operator si care sa o definim (de exemplu) '''suma'''. Atunci am apela acea metoda astfel:&lt;br /&gt;
&lt;br /&gt;
 Obiect ob1;&lt;br /&gt;
 Obiect ob2;&lt;br /&gt;
 Obiect ob3 = ob1.suma( ob2 );&lt;br /&gt;
&lt;br /&gt;
Cam greoi! Ar fi mai simplu daca am scrie aşa:&lt;br /&gt;
 Obiect ob3 = ob1 + ob2;&lt;br /&gt;
&lt;br /&gt;
Astfel s-a ajuns la nevoia de a supraincarcarea operatorii!&lt;br /&gt;
&lt;br /&gt;
== Teorie ==&lt;br /&gt;
&lt;br /&gt;
Supraincarcarea metodelor claselor in general si a operatorilor in particular sunt doua dintre cele mai importante mecanisme ale limbajului C++. Ele sunt un pas urias catre polimorfism (asta este alta bazaconie inventata de oamenii cu creiere luminate). Aceste ''oportunitati''  sunt cele care ofera flexibilitate aplicatiilor pe care le construim.&lt;br /&gt;
&lt;br /&gt;
Iata lista operatorilor din C++ care se pot supraincarca:&lt;br /&gt;
* new delete&lt;br /&gt;
* () []&lt;br /&gt;
* + - * / %&lt;br /&gt;
* ^ &amp;amp; | ~&lt;br /&gt;
* ! = &amp;lt; &amp;gt;&lt;br /&gt;
* += -= *= /= %=&lt;br /&gt;
* ^= &amp;amp;= |=&lt;br /&gt;
* &amp;lt;&amp;lt; &amp;gt;&amp;gt;&lt;br /&gt;
* &amp;gt;&amp;gt;= &amp;lt;&amp;lt;=&lt;br /&gt;
* == != &amp;lt;= &amp;gt;=&lt;br /&gt;
* &amp;amp;&amp;amp; ||&lt;br /&gt;
* ++ --&lt;br /&gt;
* ,&lt;br /&gt;
* -&amp;gt;*&lt;br /&gt;
* -&amp;gt;&lt;br /&gt;
unde operatorul '''()''' este apelul unei functii, iar operatorul '''[]''' este operatorul de indexare.&lt;br /&gt;
&lt;br /&gt;
Urmatorii operatori nu se pot supraincarca:&lt;br /&gt;
* . .* :: ?: sizeof&lt;br /&gt;
&lt;br /&gt;
Reguli care trebuie sa fie respectate in supraincarcarea operatorilor:&lt;br /&gt;
* operatorii =, (), [], si -&amp;gt; trebuie sa fie membrii nestatici ai clasei&lt;br /&gt;
* operatorul = nu poate fi mostenit&lt;br /&gt;
* operatorii pentru tipurile predefinite ale limbajului nu se pot supraincarca&lt;br /&gt;
* operatorii nu pot avea argumente implicite&lt;br /&gt;
&lt;br /&gt;
Operatorii pentru un anumit tip definit de utilizator (clasa) pot sa fie sau nu membru al clasei. In cazul in care se supraincarca un operator pentru o clasa, dar acel operator nu apartine clasei, trebuie sa fie declarat '''friend''' in clasa respectiva si sa aiba cel putin un argument de tipul clasei respective. Exceptie de la aceasta regula fac operatorii '''= () [] -&amp;gt;''' care nu pot fi supraincarcati folosind functii de tipul friend ale unei anumite clase.&lt;br /&gt;
&lt;br /&gt;
== Exemplu ==&lt;br /&gt;
&lt;br /&gt;
Un exemplu: voi da ca exemple supraincarcarea operatorilor ++ pre si post indexat.&lt;br /&gt;
 &amp;lt;code cpp&amp;gt;#include &amp;lt;iostream&amp;gt;&lt;br /&gt;
using namespace std;&lt;br /&gt;
&lt;br /&gt;
class MyPoint&lt;br /&gt;
 {&lt;br /&gt;
 public:&lt;br /&gt;
    MyPoint(); // constructor implicit&lt;br /&gt;
    MyPoint( const double a ); // constructor de initializare&lt;br /&gt;
    MyPoint( const double a, const double b ); // constructor de initializare&lt;br /&gt;
    MyPoint( const MyPoint &amp;amp;r ); // constructor de copiere&lt;br /&gt;
&lt;br /&gt;
    MyPoint&amp;amp; operator+=( const MyPoint&amp;amp; point ); // adunare cu un alt punct&lt;br /&gt;
    MyPoint&amp;amp; operator-=( const MyPoint&amp;amp; point ); // scadere&lt;br /&gt;
    MyPoint&amp;amp; operator*=( const double dVal ); // inmultire cu o constanta&lt;br /&gt;
&lt;br /&gt;
    // considerand punctul ca un vector de 2 elemente ( pozitiile 0,1 ), pe pozitia 0 fiind x&lt;br /&gt;
    // NOTA: nu este recomandat, este doar un exemplu de utilizare al operatorului []&lt;br /&gt;
    double &amp;amp; operator[]( const int index );&lt;br /&gt;
&lt;br /&gt;
    friend MyPoint operator+ (const MyPoint&amp;amp; p1, const MyPoint&amp;amp; p2); // suma a 2 vectori&lt;br /&gt;
    friend MyPoint operator- (const MyPoint&amp;amp; p1, const MyPoint&amp;amp; p2); // diferenta a 2 vectori&lt;br /&gt;
    double operator*( const MyPoint&amp;amp; point ) const; // produsul scalar a 2 vectori&lt;br /&gt;
    MyPoint operator*( const double dVal ) const; // multiplicare cu o constanta&lt;br /&gt;
    friend MyPoint operator*( const double dVal, const MyPoint&amp;amp; point); // pentru a asigura comutativitatea operatiei precedente&lt;br /&gt;
&lt;br /&gt;
    MyPoint&amp;amp; operator=( const MyPoint&amp;amp; point );&lt;br /&gt;
&lt;br /&gt;
    MyPoint&amp;amp; operator++(); // ++ prefixat&lt;br /&gt;
    MyPoint operator++( int ); // ++ postfixat&lt;br /&gt;
&lt;br /&gt;
    friend ostream&amp;amp; operator&amp;lt;&amp;lt;( ostream &amp;amp;stream, const MyPoint &amp;amp;pt );&lt;br /&gt;
    friend istream&amp;amp; operator&amp;gt;&amp;gt;( istream &amp;amp;stream, MyPoint &amp;amp;pt );&lt;br /&gt;
&lt;br /&gt;
    void   setX( double x );&lt;br /&gt;
    double getX() const;&lt;br /&gt;
&lt;br /&gt;
    void   setY( double y );&lt;br /&gt;
    double getY() const;&lt;br /&gt;
 private:&lt;br /&gt;
    double x;&lt;br /&gt;
    double y;&lt;br /&gt;
 };&lt;br /&gt;
&lt;br /&gt;
 MyPoint::MyPoint()&lt;br /&gt;
 {&lt;br /&gt;
    x = 0;&lt;br /&gt;
    y = 0;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 MyPoint::MyPoint( const MyPoint &amp;amp;r )&lt;br /&gt;
 {&lt;br /&gt;
    x = r.x;&lt;br /&gt;
    y = r.y;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 MyPoint::MyPoint( const double a )&lt;br /&gt;
 {&lt;br /&gt;
    x = a;&lt;br /&gt;
    y = a;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 MyPoint::MyPoint( const double a, const double b )&lt;br /&gt;
 {&lt;br /&gt;
    x = a;&lt;br /&gt;
    y = b;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 MyPoint&amp;amp; MyPoint::operator+=( const MyPoint&amp;amp; point )&lt;br /&gt;
 {&lt;br /&gt;
    x+=point.x;&lt;br /&gt;
    y+=point.y;&lt;br /&gt;
    return *this;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 MyPoint&amp;amp; MyPoint::operator-=( const MyPoint&amp;amp; point )&lt;br /&gt;
 {&lt;br /&gt;
    x-=point.x;&lt;br /&gt;
    y-=point.y;&lt;br /&gt;
    return *this;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 MyPoint&amp;amp; MyPoint::operator*=( const double dVal )&lt;br /&gt;
 {&lt;br /&gt;
    x*=dVal;&lt;br /&gt;
    y*=dVal;&lt;br /&gt;
    return *this;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 MyPoint operator+ (const MyPoint&amp;amp; p1, const MyPoint&amp;amp; p2)&lt;br /&gt;
 {&lt;br /&gt;
    MyPoint temp;&lt;br /&gt;
    &lt;br /&gt;
    temp.x = p1.x + p2.x;&lt;br /&gt;
    temp.y = p1.y + p2.y;&lt;br /&gt;
    &lt;br /&gt;
    return temp;&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 MyPoint operator- (const MyPoint&amp;amp; p1, const MyPoint&amp;amp; p2)&lt;br /&gt;
 {&lt;br /&gt;
    MyPoint temp;&lt;br /&gt;
    &lt;br /&gt;
    temp.x = p1.x - p2.x;&lt;br /&gt;
    temp.y = p1.y - p2.y;&lt;br /&gt;
    &lt;br /&gt;
    return temp;&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 double MyPoint::operator*( const MyPoint&amp;amp; point ) const&lt;br /&gt;
 {&lt;br /&gt;
    // produs vectorial intre 2 vectori&lt;br /&gt;
    // fiecare vector e determinat de origine si coordonatele punctului&lt;br /&gt;
    return x * point.x + y * point.y;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 MyPoint MyPoint::operator*( const double dVal ) const&lt;br /&gt;
 {&lt;br /&gt;
    return MyPoint(x * dVal, y * dVal);&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 MyPoint operator*( const double dVal, const MyPoint&amp;amp; point )&lt;br /&gt;
 {&lt;br /&gt;
    return MyPoint(point.x * dVal, point.y * dVal);&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 MyPoint&amp;amp; MyPoint::operator=( const MyPoint&amp;amp; point )&lt;br /&gt;
 {&lt;br /&gt;
    x = point.x;&lt;br /&gt;
    y = point.y;&lt;br /&gt;
    return *this;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 MyPoint&amp;amp; MyPoint::operator++()&lt;br /&gt;
 {&lt;br /&gt;
    x++;&lt;br /&gt;
    y++;&lt;br /&gt;
    return *this;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 MyPoint MyPoint::operator++( int )&lt;br /&gt;
 {&lt;br /&gt;
    MyPoint r = *this;&lt;br /&gt;
    x++;&lt;br /&gt;
    y++;&lt;br /&gt;
    return r;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 ostream&amp;amp; operator&amp;lt;&amp;lt;( ostream &amp;amp;stream, const MyPoint &amp;amp;pt )&lt;br /&gt;
 {&lt;br /&gt;
    stream &amp;lt;&amp;lt; &amp;quot;( &amp;quot; &amp;lt;&amp;lt; pt.x &amp;lt;&amp;lt; &amp;quot;, &amp;quot; &amp;lt;&amp;lt; pt.y &amp;lt;&amp;lt; &amp;quot; )&amp;quot;;&lt;br /&gt;
    return stream;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 istream&amp;amp; operator&amp;gt;&amp;gt;( istream &amp;amp;stream, MyPoint &amp;amp;pt )&lt;br /&gt;
 {&lt;br /&gt;
    stream &amp;gt;&amp;gt; pt.x &amp;gt;&amp;gt; pt.y;&lt;br /&gt;
    return stream;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 void MyPoint::setX( double x )&lt;br /&gt;
 {&lt;br /&gt;
    this-&amp;gt;x = x;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 double MyPoint::getX() const&lt;br /&gt;
 {&lt;br /&gt;
    return x;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 void MyPoint::setY( double y )&lt;br /&gt;
 {&lt;br /&gt;
    this-&amp;gt;y = y;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 double MyPoint::getY() const&lt;br /&gt;
 {&lt;br /&gt;
    return y;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
double&amp;amp; MyPoint::operator[]( const int index )&lt;br /&gt;
{&lt;br /&gt;
	if( index == 0 ) return x;&lt;br /&gt;
	return y;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
 int main( int argc, char *argv[] )&lt;br /&gt;
 {&lt;br /&gt;
    // initializarea punctelor&lt;br /&gt;
    MyPoint pt( 5, 7 );&lt;br /&gt;
    MyPoint pt2;&lt;br /&gt;
&lt;br /&gt;
    // test pentru serializare    &lt;br /&gt;
    cout &amp;lt;&amp;lt; pt &amp;lt;&amp;lt; endl; // afiseaza la consola ( 5, 7 )&lt;br /&gt;
    cout &amp;lt;&amp;lt; pt++ &amp;lt;&amp;lt; endl; // afiseaza la consola ( 5, 7 )&lt;br /&gt;
    cout &amp;lt;&amp;lt; pt &amp;lt;&amp;lt; endl; // afiseaza la consola ( 6, 8 )&lt;br /&gt;
    cout &amp;lt;&amp;lt; ++pt &amp;lt;&amp;lt; endl; // afiseaza la consola ( 7, 9 )&lt;br /&gt;
&lt;br /&gt;
    pt = MyPoint( 1, 3 );&lt;br /&gt;
    &lt;br /&gt;
    // Multiplicarea cu o constanta. folosirea operatorului *&lt;br /&gt;
    // Folosim atat operatorul * cat si operatorul * ca si metoda friend.&lt;br /&gt;
    // 2 * pt este echivalent cu: *(2, pt)&lt;br /&gt;
    // pt * 2 este echivalent cu: pt.*(2)&lt;br /&gt;
    cout &amp;lt;&amp;lt; 2 * pt &amp;lt;&amp;lt; &amp;quot; &amp;quot; &amp;lt;&amp;lt; pt * 2 &amp;lt;&amp;lt; endl; // afiseaza la consola ( 2, 6 ) (2, 6)&lt;br /&gt;
&lt;br /&gt;
    // folosirea operatorului [] supraincarcat.&lt;br /&gt;
    cout &amp;lt;&amp;lt; &amp;quot;x pt[0]=&amp;quot; &amp;lt;&amp;lt; pt[0] &amp;lt;&amp;lt; &amp;quot;; y pt[1]=&amp;quot; &amp;lt;&amp;lt; pt[1] &amp;lt;&amp;lt; endl;&lt;br /&gt;
    pt[0] = 5;&lt;br /&gt;
    pt[1] = 5;&lt;br /&gt;
    &lt;br /&gt;
    pt2 = pt;&lt;br /&gt;
    &lt;br /&gt;
    // Folosirea operatorului + si - supraincarcate si a constructorului&lt;br /&gt;
    // cu un singur parametru double. Avantajul e ca logica + e definita&lt;br /&gt;
    // intr-un singur loc. Dezavantajul e chemarea transparenta a constructorului&lt;br /&gt;
    // si creerea unui obiect temporar.&lt;br /&gt;
    pt2 = pt2 - 2; // echivalent cu: pt2.=(pt2.-(MyPoint(2)));&lt;br /&gt;
    cout &amp;lt;&amp;lt; pt2 &amp;lt;&amp;lt; endl;&lt;br /&gt;
    &lt;br /&gt;
    pt2 = 2 + pt2; // echivalent cu: pt2.=(MyPoint(2).+(pt2));&lt;br /&gt;
    cout &amp;lt;&amp;lt; pt2 &amp;lt;&amp;lt; endl;&lt;br /&gt;
&lt;br /&gt;
    pt2 = pt2 + pt2; // echivalent cu: pt2.=(pt2.+(pt2));&lt;br /&gt;
    cout &amp;lt;&amp;lt; pt2 &amp;lt;&amp;lt; endl;&lt;br /&gt;
&lt;br /&gt;
    return 0;&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Versiunea originală de [[User:Radubolovan|Radu Bolovan]] 12:04, 22 November 2005 (EET)&lt;br /&gt;
&lt;br /&gt;
[[Category:Tutorial]]&lt;br /&gt;
[[Category:Programming]]&lt;/div&gt;</summary>
		<author><name>Csdexter</name></author>	</entry>

	<entry>
		<id>http://wiki.linux360.ro/index.php?title=Sistem_de_depanare_a_aplicatiilor_in_limbajul_C-plus-plus&amp;diff=3334</id>
		<title>Sistem de depanare a aplicatiilor in limbajul C-plus-plus</title>
		<link rel="alternate" type="text/html" href="http://wiki.linux360.ro/index.php?title=Sistem_de_depanare_a_aplicatiilor_in_limbajul_C-plus-plus&amp;diff=3334"/>
				<updated>2007-01-12T10:15:05Z</updated>
		
		<summary type="html">&lt;p&gt;Csdexter: /* Mesaje intr-o consola */ Adapted to GeSHiCodeTag&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Acest tutorial de programare este realizat cu ajutorul Bibliotecii [http://www.trolltech.com/products/qt/index.html Qt versiunea 3.x], dar se poate adapta uşor folosind orice altă bibliotecă.&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Când dezvoltăm aplicaţii de proporţii (sau poate mai simple), pot aparea momente în care aplicaţia noastră să nu mai facă ce ne aşteptam noi sa faca şi incepem să ne punem (firesc) întrebarea &amp;quot;Acum ce s-a mai întâmplat?&amp;quot;.&lt;br /&gt;
Pentru a ne ajuta în această privinţă, ne putem construi o mulţime de unelte. Voi enumera o parte dintre ele:&lt;br /&gt;
* depanare prin executia programului folosind ''breakpoints'' si/sau linie cu linie;&lt;br /&gt;
* scrierea unor mesaje într-un fişier de log;&lt;br /&gt;
* scrierea unor mesaje într-o consola;&lt;br /&gt;
* aruncarea şi prinderea excepţiilor;&lt;br /&gt;
Folosirea unor ''breakpoints'' nu face cazul acestui tutorial.&lt;br /&gt;
Aruncarea şi prinderea excepţiilor este o tehnologie mult prea complex pentru a fi detaliat aici; există  suficient material pe internet pentru aceasta.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Mesaje intr-o consola==&lt;br /&gt;
Sa presupunem ca la un moment dat avem nevoie sa obtinem valorile unor variabile care nu se pot afla prin ''breakpoints''; de exemplu într-o funcţie de reîmprospatare a unei ferestre, care se apelează într-un ciclu infinit. Aceste valori le putem afla prin două modalitaţi: scrierea lor intr-un fişier de log sau afişarea lor intr-o consolă. Fiecare dintre cele două are avantaje şi dezavantaje.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''consolă - avantaje (faţă de log)''':&lt;br /&gt;
* mesajele se pot urmări În timpul rulării programului&lt;br /&gt;
* nu necesită spaţiu suplimentar pe Hard Disk Drive (HDD)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''consolă - dezavantaje (faţă de log)''':&lt;br /&gt;
* consumă resurse suplimentare&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Crearea consolei'''&lt;br /&gt;
- '''kdsconsole.h'''&amp;lt;code cpp&amp;gt;&lt;br /&gt;
 /***************************************************************************&lt;br /&gt;
 *   Copyright (C) 2005 Radu Bolovan                                       *&lt;br /&gt;
 *   radubolovan@dainet.ro                                                 *&lt;br /&gt;
 *                                                                         *&lt;br /&gt;
 *   This is free software; you can redistribute it and/or modify it       *&lt;br /&gt;
 *   under the terms of the GNU General Public License as published by     *&lt;br /&gt;
 *   the Free Software Foundation; either version 2 of the License, or     *&lt;br /&gt;
 *   (at your option) any later version.                                   *&lt;br /&gt;
 *                                                                         *&lt;br /&gt;
 *   This program is distributed in the hope that it will be useful,       *&lt;br /&gt;
 *   but WITHOUT ANY WARRANTY; without even the implied warranty of        *&lt;br /&gt;
 *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the         *&lt;br /&gt;
 *   GNU General Public License for more details.                          *&lt;br /&gt;
 *                                                                         *&lt;br /&gt;
 *   You should have received a copy of the GNU General Public License     *&lt;br /&gt;
 *   along with this program; if not, write to the                         *&lt;br /&gt;
 *   Free Software Foundation, Inc.,                                       *&lt;br /&gt;
 *   59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.             *&lt;br /&gt;
 ***************************************************************************/&lt;br /&gt;
 #ifndef KDSCONSOLE_H&lt;br /&gt;
 #define KDSCONSOLE_H&lt;br /&gt;
 &lt;br /&gt;
 #include &amp;lt;qtextedit.h&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 class QTimer;&lt;br /&gt;
 &lt;br /&gt;
 class KDSConsole : public QTextEdit&lt;br /&gt;
 {&lt;br /&gt;
     Q_OBJECT&lt;br /&gt;
 public:&lt;br /&gt;
     /* constructor */&lt;br /&gt;
     KDSConsole( QWidget *parent = 0, const char *strLogFileName = 0 );&lt;br /&gt;
 &lt;br /&gt;
     /* destructor */&lt;br /&gt;
     ~KDSConsole();&lt;br /&gt;
 &lt;br /&gt;
     /* activare salvare automata intr-un fisier */&lt;br /&gt;
     void enableAutoSave( bool bEnable, int nTime = 2000 );&lt;br /&gt;
 &lt;br /&gt;
     /* seteaza fisierul in care sa salveze */&lt;br /&gt;
     void setLogFileName( QString strLogFileName );&lt;br /&gt;
 &lt;br /&gt;
 public slots:&lt;br /&gt;
     /* salveaza in fisier */&lt;br /&gt;
     void saveToLogFile();&lt;br /&gt;
 &lt;br /&gt;
 protected:&lt;br /&gt;
     /* se apeleaza DOAR cand se apasa butonul drept al mouse-ului&lt;br /&gt;
      * ----- vezi kdsconsole.cpp -----&lt;br /&gt;
     */&lt;br /&gt;
     void contentsMousePressEvent( QMouseEvent *event );&lt;br /&gt;
 &lt;br /&gt;
 protected:&lt;br /&gt;
     /* numele fisierului in care se salveaza */&lt;br /&gt;
     char *m_strLogFileName;&lt;br /&gt;
 &lt;br /&gt;
     /* timer-ul */&lt;br /&gt;
     QTimer *m_pTimer;&lt;br /&gt;
 };&lt;br /&gt;
 &lt;br /&gt;
 extern KDSConsole *g_pConsole;&lt;br /&gt;
 &lt;br /&gt;
 #endif&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
- '''kdsconsole.cpp'''&amp;lt;code cpp&amp;gt;&lt;br /&gt;
 #include &amp;quot;kdsconsole.h&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 #include &amp;lt;qtimer.h&amp;gt;&lt;br /&gt;
 #include &amp;lt;qaction.h&amp;gt;&lt;br /&gt;
 #include &amp;lt;qevent.h&amp;gt;&lt;br /&gt;
 #include &amp;lt;qpopupmenu.h&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 KDSConsole *g_pConsole = NULL;&lt;br /&gt;
 &lt;br /&gt;
 KDSConsole::KDSConsole( QWidget *parent, const char *strLogFileName )&lt;br /&gt;
 : QTextEdit( parent )&lt;br /&gt;
 {&lt;br /&gt;
     /* nu trebuie sa se editeze */&lt;br /&gt;
     setReadOnly( true );&lt;br /&gt;
 &lt;br /&gt;
     /* aliniez textul la stanga */&lt;br /&gt;
     setAlignment ( Qt::AlignLeft );&lt;br /&gt;
 &lt;br /&gt;
     /* daca consola se creaza de sine statatoare&lt;br /&gt;
      * (intr-o alta fereastra decat a aplicatiei, sau a unei clase a aplicatiei)&lt;br /&gt;
      * setez dimensiunile ferestrei&lt;br /&gt;
     */&lt;br /&gt;
     if( !parent )&lt;br /&gt;
         setMinimumSize( 640, 150 );&lt;br /&gt;
 &lt;br /&gt;
     /* setez numele fisierul in care se va scrie&lt;br /&gt;
      * strLogFileName este numele fisierului&lt;br /&gt;
     */&lt;br /&gt;
     if( strLogFileName )&lt;br /&gt;
     {&lt;br /&gt;
         m_strLogFileName = new char [ strlen( strLogFileName ) + 1 ];&lt;br /&gt;
         strcpy( m_strLogFileName, strLogFileName );&lt;br /&gt;
     }&lt;br /&gt;
     else&lt;br /&gt;
         m_strLogFileName = NULL;&lt;br /&gt;
 &lt;br /&gt;
     /* setez un ceas pentru optiunea de auto salvare */&lt;br /&gt;
     m_pTimer = new QTimer( this );&lt;br /&gt;
     connect( m_pTimer, SIGNAL( timeout() ), this, SLOT( saveToLogFile() ) );&lt;br /&gt;
 &lt;br /&gt;
     setMouseTracking( true );&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 KDSConsole::~KDSConsole()&lt;br /&gt;
 {&lt;br /&gt;
     /* daca exista un fisier atasat, ii sterg numele din memorie */&lt;br /&gt;
     if( m_strLogFileName )&lt;br /&gt;
     {&lt;br /&gt;
         delete []m_strLogFileName;&lt;br /&gt;
         m_strLogFileName = NULL;&lt;br /&gt;
     }&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 void KDSConsole::enableAutoSave( bool bEnable, int nTime )&lt;br /&gt;
 {&lt;br /&gt;
     if( bEnable )&lt;br /&gt;
         m_pTimer-&amp;gt;start( nTime );&lt;br /&gt;
     else&lt;br /&gt;
         m_pTimer-&amp;gt;stop();&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 void KDSConsole::setLogFileName( QString strLogFileName )&lt;br /&gt;
 {&lt;br /&gt;
     unsigned int nLength = strLogFileName.length() + 1;&lt;br /&gt;
 &lt;br /&gt;
     /* daca exista deja un fisier atasat si daca numele lui este mai mic decat cel curent,&lt;br /&gt;
      * el (numele) trebuie realocat dinamic&lt;br /&gt;
     */&lt;br /&gt;
     if( m_strLogFileName )&lt;br /&gt;
     {&lt;br /&gt;
         if( strlen( m_strLogFileName ) &amp;lt; nLength )&lt;br /&gt;
         {&lt;br /&gt;
             delete []m_strLogFileName;&lt;br /&gt;
             m_strLogFileName = new char[ nLength ];&lt;br /&gt;
             }&lt;br /&gt;
     }&lt;br /&gt;
     else&lt;br /&gt;
         m_strLogFileName = new char[ nLength ];&lt;br /&gt;
 &lt;br /&gt;
     unsigned int nIndex;&lt;br /&gt;
 &lt;br /&gt;
     /* copiez numele fisierului curent &amp;quot;in&amp;quot; cel al clasei */&lt;br /&gt;
     for( nIndex = 0; nIndex &amp;lt; nLength - 1; nIndex++ )&lt;br /&gt;
         m_strLogFileName[ nIndex ] = strLogFileName.at( nIndex ).latin1();&lt;br /&gt;
     m_strLogFileName[ nIndex ] = '\0';&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 void KDSConsole::saveToLogFile()&lt;br /&gt;
 {&lt;br /&gt;
     /* daca nu exista un fisier atasat&lt;br /&gt;
      * atunci afisez un mesaj de eroare in consola&lt;br /&gt;
      * si ies din functie&lt;br /&gt;
      */&lt;br /&gt;
     if( !m_strLogFileName )&lt;br /&gt;
     {&lt;br /&gt;
         append( &amp;quot;I cannot find an attached file&amp;quot; );&lt;br /&gt;
         return;&lt;br /&gt;
     }&lt;br /&gt;
 &lt;br /&gt;
     FILE *file = fopen( m_strLogFileName, &amp;quot;w&amp;quot; );&lt;br /&gt;
 &lt;br /&gt;
     /* daca nu se poate crea fisierul cu numele dat,&lt;br /&gt;
      * afisez un mesaj in consola si ies din functie&lt;br /&gt;
     */&lt;br /&gt;
     if( !file )&lt;br /&gt;
     {&lt;br /&gt;
         QString strTmp = &amp;quot;I cannot create file &amp;quot; + (QString)m_strLogFileName;&lt;br /&gt;
         append( strTmp );&lt;br /&gt;
         return;&lt;br /&gt;
     }&lt;br /&gt;
 &lt;br /&gt;
     /* obtin textul din consola si il convertesc QString la char* */&lt;br /&gt;
     QString strTmp = text();&lt;br /&gt;
     int nLength = strTmp.length() + 1;&lt;br /&gt;
     char *strText = new char[ nLength ];&lt;br /&gt;
     int nIndex;&lt;br /&gt;
     for( nIndex = 0; nIndex &amp;lt; nLength - 1; nIndex++ )&lt;br /&gt;
         strText[ nIndex ] = strTmp.at( nIndex ).latin1();&lt;br /&gt;
     strText[ nIndex ] = '\0';&lt;br /&gt;
 &lt;br /&gt;
     /* scriu in fisier textul din consola */&lt;br /&gt;
     fprintf( file, &amp;quot;%s&amp;quot;, strText );&lt;br /&gt;
 &lt;br /&gt;
     /* daca nu se poate inchide fisierul, se afiseaza un mesaj in consola */&lt;br /&gt;
     if( fclose( file ) == 0 )&lt;br /&gt;
          append( &amp;quot;Saved to log&amp;quot; );&lt;br /&gt;
     else&lt;br /&gt;
          append( &amp;quot;I couldn't close the file&amp;quot; );&lt;br /&gt;
 &lt;br /&gt;
     delete []strText;&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 void KDSConsole::contentsMousePressEvent( QMouseEvent *event )&lt;br /&gt;
 {&lt;br /&gt;
     /* in cazul in care se apasa butonul drept al mouse-ului&lt;br /&gt;
      * se creaza un meniu&lt;br /&gt;
     */&lt;br /&gt;
     if( event-&amp;gt;button() == Qt::RightButton )&lt;br /&gt;
     {&lt;br /&gt;
         QPopupMenu *menu = new QPopupMenu( this );&lt;br /&gt;
         menu-&amp;gt;insertItem( tr( &amp;quot;Save to log file&amp;quot; ), this, SLOT( saveToLogFile() ) );&lt;br /&gt;
         menu-&amp;gt;setMouseTracking( true );&lt;br /&gt;
         menu-&amp;gt;exec( mapToGlobal( event-&amp;gt;pos() ) );&lt;br /&gt;
     }&lt;br /&gt;
 }&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dupa cum se vede am declarat şi definit o variabilă globală de tipul '''KDSConsole''', externă - pentru a o putea apela din orice fişier. Pentru folosirea unui astfel de obiect ('''KDSConsole''') voi mai adăuga incă două metode, faţă de cel obişnuit:&lt;br /&gt;
&amp;lt;code cpp&amp;gt;g_pConsole = new KDSConsole();&lt;br /&gt;
 g_pConsole-&amp;gt;setCaption( &amp;quot;KDSConsole&amp;quot; );&lt;br /&gt;
 g_pConsole-&amp;gt;show();&lt;br /&gt;
 &lt;br /&gt;
 //ceva cod&lt;br /&gt;
 &lt;br /&gt;
 g_pConsole-&amp;gt;append( &amp;quot;Test in consola&amp;quot; ); //functia append() apartine clasei QTextEdit&lt;br /&gt;
 &lt;br /&gt;
 //alt cod&lt;br /&gt;
 &lt;br /&gt;
 g_pConsole-&amp;gt;hide();&lt;br /&gt;
 delete g_pConsole;&lt;br /&gt;
 g_pConsole = NULL;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
1) Funcţii statice ale unei clase:&lt;br /&gt;
&lt;br /&gt;
- '''kdsutils.h'''&amp;lt;code cpp&amp;gt;&lt;br /&gt;
 #ifndef KDSUTILS_H&lt;br /&gt;
 #define KDSUTILS_H&lt;br /&gt;
 &lt;br /&gt;
 #include &amp;quot;kdsconsole.h&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 #include &amp;lt;qstring.h&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 class KDSUtils&lt;br /&gt;
 {&lt;br /&gt;
     public:&lt;br /&gt;
     KDSUtils(){;}&lt;br /&gt;
     ~KDSUtils(){;}&lt;br /&gt;
 &lt;br /&gt;
     static void initConsole(){ g_pConsole = new KDSConsole(); g_pConsole-&amp;gt;setCaption( &amp;quot;KDSConsole&amp;quot; ); g_pConsole-&amp;gt;Show(); }&lt;br /&gt;
     static void appendToConsole( QString str ){ if( g_pConsole ) g_pConsole-&amp;gt;append( str ); }&lt;br /&gt;
     static void setConsoleFileName( QString str ){ if( g_pConsole ) g_pConsole-&amp;gt;setLogFileName( str ); }&lt;br /&gt;
     static void setConsoleAutoSave( bool bEnable, int nTime ){ if( g_pConsole ) g_pConsole-&amp;gt;enableAutoSave( bEnable, nTime ); }&lt;br /&gt;
     static void saveConsoleToFile() { if( g_pConsole ) g_pConsole-&amp;gt;saveToLogFile(); }&lt;br /&gt;
     static void destroyConsole(){ if( g_pConsole ){ g_pConsole-&amp;gt;hide(); delete g_pConsole; g_pConsole = NULL; } }&lt;br /&gt;
 };&lt;br /&gt;
  &lt;br /&gt;
 #endif&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Acestea se pot apela (după cum se cunoaşte) prin:&lt;br /&gt;
&amp;lt;code cpp&amp;gt;KDSUtils::initConsole(); //numai la initializarea aplicatiei&lt;br /&gt;
KDSUtils::setConsoleFileName( &amp;quot;/home/Radu/kdsconsole.txt&amp;quot; );&lt;br /&gt;
KDSUtils::setConsoleAutoSave( true, 60000 ); // salveaza o data pe minut - 1000 milisecunde = o secunda&lt;br /&gt;
 &lt;br /&gt;
//ceva cod&lt;br /&gt;
&lt;br /&gt;
KDSUtils::ippendToConsole( &amp;quot;Un text in consola&amp;quot; );&lt;br /&gt;
&lt;br /&gt;
//alt cod&lt;br /&gt;
&lt;br /&gt;
KDSUtils::destroyConsole(); //cand nu mai avem nevoie de consola&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2) Macro-uri:&lt;br /&gt;
&lt;br /&gt;
- '''kdsdefs.h'''&amp;lt;code cpp&amp;gt;&lt;br /&gt;
 #ifndef KDSUTILS_H&lt;br /&gt;
 #define KDSUTILS_H&lt;br /&gt;
 &lt;br /&gt;
 #include &amp;quot;kdsconsole.h&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 #define INIT_CONSOLE() KDSUtils::initConsole()&lt;br /&gt;
 #define SET_CONSOLE_FILE_NAME( fileName ) KDSUtils::setConsoleFileName( fileName )&lt;br /&gt;
 #define SET_CONSOLE_AUTOSAVE( enable, time ) KDSUtils::setConsoleAutoSave( enable, time )&lt;br /&gt;
 #define SAVE_CONSOLE_TO_FILE() KDSUtils::saveConsoleToFile()&lt;br /&gt;
 #define KDS_TRACE( string ) KDSUtils::appendToConsole( string )&lt;br /&gt;
 #define DESTROY_CONSOLE() KDSUtils::destroyConsole()&lt;br /&gt;
 &lt;br /&gt;
 #endif&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Observatii:&lt;br /&gt;
&lt;br /&gt;
1) Nu folosiţi mai mult de una dintre cele trei metode!!!&lt;br /&gt;
&lt;br /&gt;
2) Acelaşi efect se poate obţine punând&lt;br /&gt;
 printf( &amp;quot;Un text catre consola&amp;quot; );&lt;br /&gt;
oriunde in cod si rularea programului din consolă (KConsole)&lt;br /&gt;
&lt;br /&gt;
3) Funcţia de adăugare a unui text în consolă se mai poate implementa astfel încat sa primească un numar nelimitat de parametrii şi să funcţioneze analog funcţiei '''sprintf()'''.&lt;br /&gt;
&lt;br /&gt;
--[[User:Radubolovan|Radu Bolovan]] 01:32, 21 December 2005 (EET)&lt;br /&gt;
&lt;br /&gt;
[[Category:Tutorial]]&lt;br /&gt;
[[Category:Programming]]&lt;/div&gt;</summary>
		<author><name>Csdexter</name></author>	</entry>

	<entry>
		<id>http://wiki.linux360.ro/index.php?title=Introducere_in_Gtk-sharp&amp;diff=3333</id>
		<title>Introducere in Gtk-sharp</title>
		<link rel="alternate" type="text/html" href="http://wiki.linux360.ro/index.php?title=Introducere_in_Gtk-sharp&amp;diff=3333"/>
				<updated>2007-01-12T10:13:16Z</updated>
		
		<summary type="html">&lt;p&gt;Csdexter: /* Adaugarea evenimentelor */ Fixed hard-return in paragraph&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Introducere==&lt;br /&gt;
&lt;br /&gt;
===Ce este Gtk#?===&lt;br /&gt;
Un raspuns complet la aceasta intrebare gasiti pe pagina principala a &lt;br /&gt;
proiectului [http://www.mono-project.com/GtkSharp Gtk#]. Pe scurt, este o &lt;br /&gt;
interfata C# pentru celebra platforma de dezvoltare a interfetelor grafice &lt;br /&gt;
[http://www.gtk.org/ GTK+]. Cel mai bine ruleaza pe platforma &lt;br /&gt;
[http://www.mono-project.com Mono], insa poate rula pe orice platforma .NET.&lt;br /&gt;
&lt;br /&gt;
===Cum instalez Gtk#?===&lt;br /&gt;
Pentru a nu complica lucrurile va sugerez sa instalati [http://www.mono-project.com Mono].&lt;br /&gt;
Pentru a instala Mono aveti mai multe optiuni:&lt;br /&gt;
* sa descarcati si sa instalati pachetele binare de pe site-ul proiectului&lt;br /&gt;
* sa descarcati, compilati si instalati pacatele care contin sursele, le gasiti tot de pe site-ul proiectului&lt;br /&gt;
* sa instalati pachetele din alt repository, ex: yum, apt, portage&lt;br /&gt;
&lt;br /&gt;
===Cunostinte necesare===&lt;br /&gt;
Pentru a intelege exemplele prezentate in acest tutorial aveti nevoie doar de&lt;br /&gt;
cunostinte de baza privind limbajul C#.&lt;br /&gt;
&lt;br /&gt;
==Aplicatii==&lt;br /&gt;
&lt;br /&gt;
===Prima aplicatie Gtk#===&lt;br /&gt;
Mai intai vom crea cea mai simpla aplicatie gtk# in care nu vom folosesi nici &lt;br /&gt;
un element grafic. Scopul acestei aplicatii este de a testa integritatea &lt;br /&gt;
mediului de dezvoltare si de a va familiariza cu comenzile pe care trebuie sa &lt;br /&gt;
le executati pentru a compila un program folosind compilatorul oferit de &lt;br /&gt;
platforma Mono.&lt;br /&gt;
&lt;br /&gt;
Folosind editorul dumneavoastra preferat scrieti urmatorul program si salvati-l&lt;br /&gt;
intr-un fisier cu numele &amp;quot;helloword.cs&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code csharp&amp;gt;using System;&lt;br /&gt;
using Gtk;&lt;br /&gt;
&lt;br /&gt;
public class GtkHelloWorld {&lt;br /&gt;
&lt;br /&gt;
	public static void Main() {&lt;br /&gt;
		Console.WriteLine(&amp;quot;HelloWorld&amp;quot;);&lt;br /&gt;
	}&lt;br /&gt;
 &lt;br /&gt;
}&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Programul de mai sus trebuie compilat cu urmatoarea comanda:&lt;br /&gt;
 mcs -pkg:gtk-sharp-2.0 helloword.cs&lt;br /&gt;
&lt;br /&gt;
Prin comanda de mai sus am instruit compilatorul de C# sa include pachetul &lt;br /&gt;
&amp;quot;gtk-sharp-2.0&amp;quot;. Acest pachet contine mai multe librarii, ceea ce ne scuteste &lt;br /&gt;
de efortul de a specifica manual fiecare librarie necesara compilarii unei &lt;br /&gt;
aplicatii gtk#.&lt;br /&gt;
&lt;br /&gt;
===Adaugarea interfetei grafice===&lt;br /&gt;
In continuare ne propunem sa dezvoltam programul anterior adaugandu-i cateva&lt;br /&gt;
elemente grafice.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code csharp&amp;gt;using System;&lt;br /&gt;
using Gtk;&lt;br /&gt;
&lt;br /&gt;
public class SalutareWindow {&lt;br /&gt;
 &lt;br /&gt;
	public static void Main() {&lt;br /&gt;
		Application.Init();&lt;br /&gt;
&lt;br /&gt;
		// cream fereastra&lt;br /&gt;
		Window myWin = new Window(&amp;quot;Prima aplicatie GTK#! &amp;quot;);&lt;br /&gt;
		myWin.Resize(300, 200);&lt;br /&gt;
    &lt;br /&gt;
		// cream o eticheta care va contine un text&lt;br /&gt;
		Label myLabel = new Label();&lt;br /&gt;
		myLabel.Text = &amp;quot;Salutare lume!!!!&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
		// adaugam eticheta la fereastra&lt;br /&gt;
		myWin.Add(myLabel);&lt;br /&gt;
&lt;br /&gt;
		// afisam fereastra si elementele pe care aceasta le contine&lt;br /&gt;
		myWin.ShowAll();&lt;br /&gt;
    &lt;br /&gt;
		Application.Run();&lt;br /&gt;
	}&lt;br /&gt;
}&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Compilati programul asa cum am aratat mai sus, rulati-l si ar trebui sa obtineti &lt;br /&gt;
ceva asemanator ceea ce vedeti in urmatoarea imagine:&lt;br /&gt;
&lt;br /&gt;
[[Image:A001_window_01.png]]&lt;br /&gt;
&lt;br /&gt;
Daca veniti dintr-un mediu de programare windows primul lucru pe care il veti &lt;br /&gt;
observa este ca nu am specificat pozitia in cadrul ferestrei si dimensiunile &lt;br /&gt;
pe care le va avea widgetul &amp;quot;myLabel&amp;quot;. Aceasta deoarece gtk# foloseste un &lt;br /&gt;
sistem de pozitionare si redimensionare foarte diferit de cel cu care sunteti &lt;br /&gt;
obisnuit. Insa despre acest subiect vom discuta in alt tutorial.&lt;br /&gt;
&lt;br /&gt;
Functia &amp;quot;Application.Init()&amp;quot; este prezenta in toate aplicatiile gtk# si are &lt;br /&gt;
rolul de a initializa biblioteca gtk# si de a o pregati pentru utilizare. &lt;br /&gt;
Functia &amp;quot;Application.Run()&amp;quot; este o alta functie pe care o veti intalni in toate &lt;br /&gt;
aplicatiile gtk#. Cand executia programului ajunge la aceasta functie, &lt;br /&gt;
programul intra in asa numita &amp;quot;bucla principala&amp;quot;, si ramane in acesta bucla &lt;br /&gt;
atat timp cat este deschisa o fereasta gtk#. In acest stadiu sunt captate si &lt;br /&gt;
procesate evenimentele. Daca nu apelam aceasta functie programul isi termina &lt;br /&gt;
executia imediat ce a rulat toate intructiunile.&lt;br /&gt;
&lt;br /&gt;
===Adaugarea evenimentelor===&lt;br /&gt;
Toate platformele .NET implementeaza evenimentele cu ajutorul unor clase &lt;br /&gt;
speciale numite &amp;quot;delegati&amp;quot;. Principiul de implementare si utilizare este foarte &lt;br /&gt;
asemanator cu sistemul de semnale si sloturi din Qt, insa spre deosebire de Qt &lt;br /&gt;
nu este o extensie a limbajului, ci face parte din limbaj.&lt;br /&gt;
&lt;br /&gt;
Deobicei un delegat are urmatorul prototip, insa poate sa difere in functie de eveniment:&amp;lt;code csharp&amp;gt;void HandlerMetod(object obj, EventArgs args);&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In continuare vom crea o fereastra care contine un singur buton. Cand apasam &lt;br /&gt;
butonul este afisat un text in consola.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code csharp&amp;gt;using System;&lt;br /&gt;
using Gtk;&lt;br /&gt;
&lt;br /&gt;
public class SalutareWindow&lt;br /&gt;
{	&lt;br /&gt;
	public static void Main ()&lt;br /&gt;
	{&lt;br /&gt;
		Application.Init();&lt;br /&gt;
 &lt;br /&gt;
 		// cream fereastra&lt;br /&gt;
 		Window myWin = new Window(&amp;quot;Prima aplicatie GTK#! &amp;quot;);&lt;br /&gt;
		myWin.SetDefaultSize (300, 200);&lt;br /&gt;
		&lt;br /&gt;
		// cream un buton care contine textul &amp;quot;Salutare lume!&amp;quot;&lt;br /&gt;
		Button myButton = new Button(&amp;quot;Salutare lume!&amp;quot;);&lt;br /&gt;
		&lt;br /&gt;
		// atasam even. &amp;quot;Cicked&amp;quot; func. HelloButton_OnPress ()&lt;br /&gt;
		myButton.Clicked += new EventHandler (OnButtonClicked);&lt;br /&gt;
		&lt;br /&gt;
		// adaugam butonul la fereastra&lt;br /&gt;
		myWin.Add (myButton);&lt;br /&gt;
		&lt;br /&gt;
		// atasam even. DeleteEvent func. Window_OnDelete ()&lt;br /&gt;
		myWin.DeleteEvent += new DeleteEventHandler (OnWindowDelete);&lt;br /&gt;
		&lt;br /&gt;
		// afisam fereastra si widgeturile pe care le contine&lt;br /&gt;
		myWin.ShowAll ();&lt;br /&gt;
		&lt;br /&gt;
		Application.Run();&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	static void OnButtonClicked (object sender, EventArgs a)&lt;br /&gt;
	{&lt;br /&gt;
		Console.WriteLine (&amp;quot;Ai apasat butonul!&amp;quot;);&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	static void OnWindowDelete (object sender, DeleteEventArgs a)&lt;br /&gt;
	{&lt;br /&gt;
		Console.WriteLine (&amp;quot;Aplicatia s-a terminat!&amp;quot;);&lt;br /&gt;
		Application.Quit ();&lt;br /&gt;
	}&lt;br /&gt;
}&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Compilati programul, iar ceea ce veti obtine trebuie sa arate cam asa:&lt;br /&gt;
&lt;br /&gt;
[[Image:A001_window_02.png]]&lt;br /&gt;
&lt;br /&gt;
Observatie:&lt;br /&gt;
Toate metodele sunt statice deoarece sunt apelate din interiorul metodei &lt;br /&gt;
&amp;quot;Main()&amp;quot; care trebuie sa fie statica.&lt;br /&gt;
&lt;br /&gt;
Asadar am creat un buton si am atasat evenimentului &amp;quot;Clicked&amp;quot; generat de acest&lt;br /&gt;
buton metoda &amp;quot;OnButtonClicked()&amp;quot;. Acest eveniment este generat de apasarea &lt;br /&gt;
butonului stang al mouse-ului. Metoda &amp;quot;OnButtonClicked()&amp;quot; nu face altceva decat &lt;br /&gt;
sa afiseze un mesaj in consola.&lt;br /&gt;
&lt;br /&gt;
Deasemenea am atasat evenimentului &amp;quot;DeleteEvent&amp;quot; generat de fereastra principala&lt;br /&gt;
metoda &amp;quot;OnWindowDelete()&amp;quot;. Acest eveniment este trimis ferestrei de catre &lt;br /&gt;
managerul de ferestre atunci cand utilizatorul vrea sa inchida fereastra &lt;br /&gt;
(folosind butonul &amp;quot;Close&amp;quot; din bara de titlu, de ex.). Metoda &amp;quot;OnWindowDelete()&amp;quot; &lt;br /&gt;
executa metoda &amp;quot;Application.Quit()&amp;quot; care are rolul de a termina executia buclei &lt;br /&gt;
principale si, in consecinta, a programului.&lt;br /&gt;
&lt;br /&gt;
==Legaturi utile==&lt;br /&gt;
* [http://www.go-mono.com/docs/ Documentatia oficiala Gtk#]&lt;br /&gt;
* [http://www.mono-project.com/GtkSharpBeginnersGuide Gtk# Beginners Guide]&lt;br /&gt;
* [http://www.mono-project.com/Gtk:HelloWorld HelloWorld]&lt;br /&gt;
&lt;br /&gt;
[[Category:Tutorial]]&lt;br /&gt;
[[Category:Programming]]&lt;/div&gt;</summary>
		<author><name>Csdexter</name></author>	</entry>

	<entry>
		<id>http://wiki.linux360.ro/index.php?title=Introducere_in_Gtk-sharp&amp;diff=3332</id>
		<title>Introducere in Gtk-sharp</title>
		<link rel="alternate" type="text/html" href="http://wiki.linux360.ro/index.php?title=Introducere_in_Gtk-sharp&amp;diff=3332"/>
				<updated>2007-01-12T10:12:24Z</updated>
		
		<summary type="html">&lt;p&gt;Csdexter: /* Adaugarea evenimentelor */ Adapted to GeSHiCodeTag and fixed ANSI C terminology&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Introducere==&lt;br /&gt;
&lt;br /&gt;
===Ce este Gtk#?===&lt;br /&gt;
Un raspuns complet la aceasta intrebare gasiti pe pagina principala a &lt;br /&gt;
proiectului [http://www.mono-project.com/GtkSharp Gtk#]. Pe scurt, este o &lt;br /&gt;
interfata C# pentru celebra platforma de dezvoltare a interfetelor grafice &lt;br /&gt;
[http://www.gtk.org/ GTK+]. Cel mai bine ruleaza pe platforma &lt;br /&gt;
[http://www.mono-project.com Mono], insa poate rula pe orice platforma .NET.&lt;br /&gt;
&lt;br /&gt;
===Cum instalez Gtk#?===&lt;br /&gt;
Pentru a nu complica lucrurile va sugerez sa instalati [http://www.mono-project.com Mono].&lt;br /&gt;
Pentru a instala Mono aveti mai multe optiuni:&lt;br /&gt;
* sa descarcati si sa instalati pachetele binare de pe site-ul proiectului&lt;br /&gt;
* sa descarcati, compilati si instalati pacatele care contin sursele, le gasiti tot de pe site-ul proiectului&lt;br /&gt;
* sa instalati pachetele din alt repository, ex: yum, apt, portage&lt;br /&gt;
&lt;br /&gt;
===Cunostinte necesare===&lt;br /&gt;
Pentru a intelege exemplele prezentate in acest tutorial aveti nevoie doar de&lt;br /&gt;
cunostinte de baza privind limbajul C#.&lt;br /&gt;
&lt;br /&gt;
==Aplicatii==&lt;br /&gt;
&lt;br /&gt;
===Prima aplicatie Gtk#===&lt;br /&gt;
Mai intai vom crea cea mai simpla aplicatie gtk# in care nu vom folosesi nici &lt;br /&gt;
un element grafic. Scopul acestei aplicatii este de a testa integritatea &lt;br /&gt;
mediului de dezvoltare si de a va familiariza cu comenzile pe care trebuie sa &lt;br /&gt;
le executati pentru a compila un program folosind compilatorul oferit de &lt;br /&gt;
platforma Mono.&lt;br /&gt;
&lt;br /&gt;
Folosind editorul dumneavoastra preferat scrieti urmatorul program si salvati-l&lt;br /&gt;
intr-un fisier cu numele &amp;quot;helloword.cs&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code csharp&amp;gt;using System;&lt;br /&gt;
using Gtk;&lt;br /&gt;
&lt;br /&gt;
public class GtkHelloWorld {&lt;br /&gt;
&lt;br /&gt;
	public static void Main() {&lt;br /&gt;
		Console.WriteLine(&amp;quot;HelloWorld&amp;quot;);&lt;br /&gt;
	}&lt;br /&gt;
 &lt;br /&gt;
}&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Programul de mai sus trebuie compilat cu urmatoarea comanda:&lt;br /&gt;
 mcs -pkg:gtk-sharp-2.0 helloword.cs&lt;br /&gt;
&lt;br /&gt;
Prin comanda de mai sus am instruit compilatorul de C# sa include pachetul &lt;br /&gt;
&amp;quot;gtk-sharp-2.0&amp;quot;. Acest pachet contine mai multe librarii, ceea ce ne scuteste &lt;br /&gt;
de efortul de a specifica manual fiecare librarie necesara compilarii unei &lt;br /&gt;
aplicatii gtk#.&lt;br /&gt;
&lt;br /&gt;
===Adaugarea interfetei grafice===&lt;br /&gt;
In continuare ne propunem sa dezvoltam programul anterior adaugandu-i cateva&lt;br /&gt;
elemente grafice.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code csharp&amp;gt;using System;&lt;br /&gt;
using Gtk;&lt;br /&gt;
&lt;br /&gt;
public class SalutareWindow {&lt;br /&gt;
 &lt;br /&gt;
	public static void Main() {&lt;br /&gt;
		Application.Init();&lt;br /&gt;
&lt;br /&gt;
		// cream fereastra&lt;br /&gt;
		Window myWin = new Window(&amp;quot;Prima aplicatie GTK#! &amp;quot;);&lt;br /&gt;
		myWin.Resize(300, 200);&lt;br /&gt;
    &lt;br /&gt;
		// cream o eticheta care va contine un text&lt;br /&gt;
		Label myLabel = new Label();&lt;br /&gt;
		myLabel.Text = &amp;quot;Salutare lume!!!!&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
		// adaugam eticheta la fereastra&lt;br /&gt;
		myWin.Add(myLabel);&lt;br /&gt;
&lt;br /&gt;
		// afisam fereastra si elementele pe care aceasta le contine&lt;br /&gt;
		myWin.ShowAll();&lt;br /&gt;
    &lt;br /&gt;
		Application.Run();&lt;br /&gt;
	}&lt;br /&gt;
}&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Compilati programul asa cum am aratat mai sus, rulati-l si ar trebui sa obtineti &lt;br /&gt;
ceva asemanator ceea ce vedeti in urmatoarea imagine:&lt;br /&gt;
&lt;br /&gt;
[[Image:A001_window_01.png]]&lt;br /&gt;
&lt;br /&gt;
Daca veniti dintr-un mediu de programare windows primul lucru pe care il veti &lt;br /&gt;
observa este ca nu am specificat pozitia in cadrul ferestrei si dimensiunile &lt;br /&gt;
pe care le va avea widgetul &amp;quot;myLabel&amp;quot;. Aceasta deoarece gtk# foloseste un &lt;br /&gt;
sistem de pozitionare si redimensionare foarte diferit de cel cu care sunteti &lt;br /&gt;
obisnuit. Insa despre acest subiect vom discuta in alt tutorial.&lt;br /&gt;
&lt;br /&gt;
Functia &amp;quot;Application.Init()&amp;quot; este prezenta in toate aplicatiile gtk# si are &lt;br /&gt;
rolul de a initializa biblioteca gtk# si de a o pregati pentru utilizare. &lt;br /&gt;
Functia &amp;quot;Application.Run()&amp;quot; este o alta functie pe care o veti intalni in toate &lt;br /&gt;
aplicatiile gtk#. Cand executia programului ajunge la aceasta functie, &lt;br /&gt;
programul intra in asa numita &amp;quot;bucla principala&amp;quot;, si ramane in acesta bucla &lt;br /&gt;
atat timp cat este deschisa o fereasta gtk#. In acest stadiu sunt captate si &lt;br /&gt;
procesate evenimentele. Daca nu apelam aceasta functie programul isi termina &lt;br /&gt;
executia imediat ce a rulat toate intructiunile.&lt;br /&gt;
&lt;br /&gt;
===Adaugarea evenimentelor===&lt;br /&gt;
Toate platformele .NET implementeaza evenimentele cu ajutorul unor clase &lt;br /&gt;
speciale numite &amp;quot;delegati&amp;quot;. Principiul de implementare si utilizare este foarte &lt;br /&gt;
asemanator cu sistemul de semnale si sloturi din Qt, insa spre deosebire de Qt &lt;br /&gt;
nu este o extensie a limbajului, ci face parte din limbaj.&lt;br /&gt;
&lt;br /&gt;
Deobicei un delegat are urmatorul prototip, insa poate sa difere in functie &lt;br /&gt;
de eveniment:&amp;lt;code csharp&amp;gt;void HandlerMetod(object obj, EventArgs args);&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In continuare vom crea o fereastra care contine un singur buton. Cand apasam &lt;br /&gt;
butonul este afisat un text in consola.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code csharp&amp;gt;using System;&lt;br /&gt;
using Gtk;&lt;br /&gt;
&lt;br /&gt;
public class SalutareWindow&lt;br /&gt;
{	&lt;br /&gt;
	public static void Main ()&lt;br /&gt;
	{&lt;br /&gt;
		Application.Init();&lt;br /&gt;
 &lt;br /&gt;
 		// cream fereastra&lt;br /&gt;
 		Window myWin = new Window(&amp;quot;Prima aplicatie GTK#! &amp;quot;);&lt;br /&gt;
		myWin.SetDefaultSize (300, 200);&lt;br /&gt;
		&lt;br /&gt;
		// cream un buton care contine textul &amp;quot;Salutare lume!&amp;quot;&lt;br /&gt;
		Button myButton = new Button(&amp;quot;Salutare lume!&amp;quot;);&lt;br /&gt;
		&lt;br /&gt;
		// atasam even. &amp;quot;Cicked&amp;quot; func. HelloButton_OnPress ()&lt;br /&gt;
		myButton.Clicked += new EventHandler (OnButtonClicked);&lt;br /&gt;
		&lt;br /&gt;
		// adaugam butonul la fereastra&lt;br /&gt;
		myWin.Add (myButton);&lt;br /&gt;
		&lt;br /&gt;
		// atasam even. DeleteEvent func. Window_OnDelete ()&lt;br /&gt;
		myWin.DeleteEvent += new DeleteEventHandler (OnWindowDelete);&lt;br /&gt;
		&lt;br /&gt;
		// afisam fereastra si widgeturile pe care le contine&lt;br /&gt;
		myWin.ShowAll ();&lt;br /&gt;
		&lt;br /&gt;
		Application.Run();&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	static void OnButtonClicked (object sender, EventArgs a)&lt;br /&gt;
	{&lt;br /&gt;
		Console.WriteLine (&amp;quot;Ai apasat butonul!&amp;quot;);&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	static void OnWindowDelete (object sender, DeleteEventArgs a)&lt;br /&gt;
	{&lt;br /&gt;
		Console.WriteLine (&amp;quot;Aplicatia s-a terminat!&amp;quot;);&lt;br /&gt;
		Application.Quit ();&lt;br /&gt;
	}&lt;br /&gt;
}&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Compilati programul, iar ceea ce veti obtine trebuie sa arate cam asa:&lt;br /&gt;
&lt;br /&gt;
[[Image:A001_window_02.png]]&lt;br /&gt;
&lt;br /&gt;
Observatie:&lt;br /&gt;
Toate metodele sunt statice deoarece sunt apelate din interiorul metodei &lt;br /&gt;
&amp;quot;Main()&amp;quot; care trebuie sa fie statica.&lt;br /&gt;
&lt;br /&gt;
Asadar am creat un buton si am atasat evenimentului &amp;quot;Clicked&amp;quot; generat de acest&lt;br /&gt;
buton metoda &amp;quot;OnButtonClicked()&amp;quot;. Acest eveniment este generat de apasarea &lt;br /&gt;
butonului stang al mouse-ului. Metoda &amp;quot;OnButtonClicked()&amp;quot; nu face altceva decat &lt;br /&gt;
sa afiseze un mesaj in consola.&lt;br /&gt;
&lt;br /&gt;
Deasemenea am atasat evenimentului &amp;quot;DeleteEvent&amp;quot; generat de fereastra principala&lt;br /&gt;
metoda &amp;quot;OnWindowDelete()&amp;quot;. Acest eveniment este trimis ferestrei de catre &lt;br /&gt;
managerul de ferestre atunci cand utilizatorul vrea sa inchida fereastra &lt;br /&gt;
(folosind butonul &amp;quot;Close&amp;quot; din bara de titlu, de ex.). Metoda &amp;quot;OnWindowDelete()&amp;quot; &lt;br /&gt;
executa metoda &amp;quot;Application.Quit()&amp;quot; care are rolul de a termina executia buclei &lt;br /&gt;
principale si, in consecinta, a programului.&lt;br /&gt;
&lt;br /&gt;
==Legaturi utile==&lt;br /&gt;
* [http://www.go-mono.com/docs/ Documentatia oficiala Gtk#]&lt;br /&gt;
* [http://www.mono-project.com/GtkSharpBeginnersGuide Gtk# Beginners Guide]&lt;br /&gt;
* [http://www.mono-project.com/Gtk:HelloWorld HelloWorld]&lt;br /&gt;
&lt;br /&gt;
[[Category:Tutorial]]&lt;br /&gt;
[[Category:Programming]]&lt;/div&gt;</summary>
		<author><name>Csdexter</name></author>	</entry>

	<entry>
		<id>http://wiki.linux360.ro/index.php?title=Introducere_in_Gtk-sharp&amp;diff=3331</id>
		<title>Introducere in Gtk-sharp</title>
		<link rel="alternate" type="text/html" href="http://wiki.linux360.ro/index.php?title=Introducere_in_Gtk-sharp&amp;diff=3331"/>
				<updated>2007-01-12T10:10:44Z</updated>
		
		<summary type="html">&lt;p&gt;Csdexter: /* Adaugarea interfetei grafice */ Adapted to GeSHiCodeTag&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Introducere==&lt;br /&gt;
&lt;br /&gt;
===Ce este Gtk#?===&lt;br /&gt;
Un raspuns complet la aceasta intrebare gasiti pe pagina principala a &lt;br /&gt;
proiectului [http://www.mono-project.com/GtkSharp Gtk#]. Pe scurt, este o &lt;br /&gt;
interfata C# pentru celebra platforma de dezvoltare a interfetelor grafice &lt;br /&gt;
[http://www.gtk.org/ GTK+]. Cel mai bine ruleaza pe platforma &lt;br /&gt;
[http://www.mono-project.com Mono], insa poate rula pe orice platforma .NET.&lt;br /&gt;
&lt;br /&gt;
===Cum instalez Gtk#?===&lt;br /&gt;
Pentru a nu complica lucrurile va sugerez sa instalati [http://www.mono-project.com Mono].&lt;br /&gt;
Pentru a instala Mono aveti mai multe optiuni:&lt;br /&gt;
* sa descarcati si sa instalati pachetele binare de pe site-ul proiectului&lt;br /&gt;
* sa descarcati, compilati si instalati pacatele care contin sursele, le gasiti tot de pe site-ul proiectului&lt;br /&gt;
* sa instalati pachetele din alt repository, ex: yum, apt, portage&lt;br /&gt;
&lt;br /&gt;
===Cunostinte necesare===&lt;br /&gt;
Pentru a intelege exemplele prezentate in acest tutorial aveti nevoie doar de&lt;br /&gt;
cunostinte de baza privind limbajul C#.&lt;br /&gt;
&lt;br /&gt;
==Aplicatii==&lt;br /&gt;
&lt;br /&gt;
===Prima aplicatie Gtk#===&lt;br /&gt;
Mai intai vom crea cea mai simpla aplicatie gtk# in care nu vom folosesi nici &lt;br /&gt;
un element grafic. Scopul acestei aplicatii este de a testa integritatea &lt;br /&gt;
mediului de dezvoltare si de a va familiariza cu comenzile pe care trebuie sa &lt;br /&gt;
le executati pentru a compila un program folosind compilatorul oferit de &lt;br /&gt;
platforma Mono.&lt;br /&gt;
&lt;br /&gt;
Folosind editorul dumneavoastra preferat scrieti urmatorul program si salvati-l&lt;br /&gt;
intr-un fisier cu numele &amp;quot;helloword.cs&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code csharp&amp;gt;using System;&lt;br /&gt;
using Gtk;&lt;br /&gt;
&lt;br /&gt;
public class GtkHelloWorld {&lt;br /&gt;
&lt;br /&gt;
	public static void Main() {&lt;br /&gt;
		Console.WriteLine(&amp;quot;HelloWorld&amp;quot;);&lt;br /&gt;
	}&lt;br /&gt;
 &lt;br /&gt;
}&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Programul de mai sus trebuie compilat cu urmatoarea comanda:&lt;br /&gt;
 mcs -pkg:gtk-sharp-2.0 helloword.cs&lt;br /&gt;
&lt;br /&gt;
Prin comanda de mai sus am instruit compilatorul de C# sa include pachetul &lt;br /&gt;
&amp;quot;gtk-sharp-2.0&amp;quot;. Acest pachet contine mai multe librarii, ceea ce ne scuteste &lt;br /&gt;
de efortul de a specifica manual fiecare librarie necesara compilarii unei &lt;br /&gt;
aplicatii gtk#.&lt;br /&gt;
&lt;br /&gt;
===Adaugarea interfetei grafice===&lt;br /&gt;
In continuare ne propunem sa dezvoltam programul anterior adaugandu-i cateva&lt;br /&gt;
elemente grafice.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code csharp&amp;gt;using System;&lt;br /&gt;
using Gtk;&lt;br /&gt;
&lt;br /&gt;
public class SalutareWindow {&lt;br /&gt;
 &lt;br /&gt;
	public static void Main() {&lt;br /&gt;
		Application.Init();&lt;br /&gt;
&lt;br /&gt;
		// cream fereastra&lt;br /&gt;
		Window myWin = new Window(&amp;quot;Prima aplicatie GTK#! &amp;quot;);&lt;br /&gt;
		myWin.Resize(300, 200);&lt;br /&gt;
    &lt;br /&gt;
		// cream o eticheta care va contine un text&lt;br /&gt;
		Label myLabel = new Label();&lt;br /&gt;
		myLabel.Text = &amp;quot;Salutare lume!!!!&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
		// adaugam eticheta la fereastra&lt;br /&gt;
		myWin.Add(myLabel);&lt;br /&gt;
&lt;br /&gt;
		// afisam fereastra si elementele pe care aceasta le contine&lt;br /&gt;
		myWin.ShowAll();&lt;br /&gt;
    &lt;br /&gt;
		Application.Run();&lt;br /&gt;
	}&lt;br /&gt;
}&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Compilati programul asa cum am aratat mai sus, rulati-l si ar trebui sa obtineti &lt;br /&gt;
ceva asemanator ceea ce vedeti in urmatoarea imagine:&lt;br /&gt;
&lt;br /&gt;
[[Image:A001_window_01.png]]&lt;br /&gt;
&lt;br /&gt;
Daca veniti dintr-un mediu de programare windows primul lucru pe care il veti &lt;br /&gt;
observa este ca nu am specificat pozitia in cadrul ferestrei si dimensiunile &lt;br /&gt;
pe care le va avea widgetul &amp;quot;myLabel&amp;quot;. Aceasta deoarece gtk# foloseste un &lt;br /&gt;
sistem de pozitionare si redimensionare foarte diferit de cel cu care sunteti &lt;br /&gt;
obisnuit. Insa despre acest subiect vom discuta in alt tutorial.&lt;br /&gt;
&lt;br /&gt;
Functia &amp;quot;Application.Init()&amp;quot; este prezenta in toate aplicatiile gtk# si are &lt;br /&gt;
rolul de a initializa biblioteca gtk# si de a o pregati pentru utilizare. &lt;br /&gt;
Functia &amp;quot;Application.Run()&amp;quot; este o alta functie pe care o veti intalni in toate &lt;br /&gt;
aplicatiile gtk#. Cand executia programului ajunge la aceasta functie, &lt;br /&gt;
programul intra in asa numita &amp;quot;bucla principala&amp;quot;, si ramane in acesta bucla &lt;br /&gt;
atat timp cat este deschisa o fereasta gtk#. In acest stadiu sunt captate si &lt;br /&gt;
procesate evenimentele. Daca nu apelam aceasta functie programul isi termina &lt;br /&gt;
executia imediat ce a rulat toate intructiunile.&lt;br /&gt;
&lt;br /&gt;
===Adaugarea evenimentelor===&lt;br /&gt;
Toate platformele .NET implementeaza evenimentele cu ajutorul unor clase &lt;br /&gt;
speciale numite &amp;quot;delegati&amp;quot;. Principiul de implementare si utilizare este foarte &lt;br /&gt;
asemanator cu sistemul de semnale si sloturi din Qt, insa spre deosebire de Qt &lt;br /&gt;
nu este o extensie a limbajului, ci face parte din limbaj.&lt;br /&gt;
&lt;br /&gt;
Deobicei un delegat are urmatoarea semnatura, insa poate sa difere in functie &lt;br /&gt;
de eveniment:&lt;br /&gt;
&lt;br /&gt;
 void HandlerMetod(object obj, EventArgs args)&lt;br /&gt;
&lt;br /&gt;
In continuare vom crea o fereastra care contine un singur buton. Cand apasam &lt;br /&gt;
butonul este afisat un text in consola.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
using System;&lt;br /&gt;
using Gtk;&lt;br /&gt;
&lt;br /&gt;
public class SalutareWindow&lt;br /&gt;
{	&lt;br /&gt;
	public static void Main ()&lt;br /&gt;
	{&lt;br /&gt;
		Application.Init();&lt;br /&gt;
 &lt;br /&gt;
 		// cream fereastra&lt;br /&gt;
 		Window myWin = new Window(&amp;quot;Prima aplicatie GTK#! &amp;quot;);&lt;br /&gt;
		myWin.SetDefaultSize (300, 200);&lt;br /&gt;
		&lt;br /&gt;
		// cream un buton care contine textul &amp;quot;Salutare lume!&amp;quot;&lt;br /&gt;
		Button myButton = new Button(&amp;quot;Salutare lume!&amp;quot;);&lt;br /&gt;
		&lt;br /&gt;
		// atasam even. &amp;quot;Cicked&amp;quot; func. HelloButton_OnPress ()&lt;br /&gt;
		myButton.Clicked += new EventHandler (OnButtonClicked);&lt;br /&gt;
		&lt;br /&gt;
		// adaugam butonul la fereastra&lt;br /&gt;
		myWin.Add (myButton);&lt;br /&gt;
		&lt;br /&gt;
		// atasam even. DeleteEvent func. Window_OnDelete ()&lt;br /&gt;
		myWin.DeleteEvent += new DeleteEventHandler (OnWindowDelete);&lt;br /&gt;
		&lt;br /&gt;
		// afisam fereastra si widgeturile pe care le contine&lt;br /&gt;
		myWin.ShowAll ();&lt;br /&gt;
		&lt;br /&gt;
		Application.Run();&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	static void OnButtonClicked (object sender, EventArgs a)&lt;br /&gt;
	{&lt;br /&gt;
		Console.WriteLine (&amp;quot;Ai apasat butonul!&amp;quot;);&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	static void OnWindowDelete (object sender, DeleteEventArgs a)&lt;br /&gt;
	{&lt;br /&gt;
		Console.WriteLine (&amp;quot;Aplicatia s-a terminat!&amp;quot;);&lt;br /&gt;
		Application.Quit ();&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Compilati programul, iar ceea ce veti obtine trebuie sa arate cam asa:&lt;br /&gt;
&lt;br /&gt;
[[Image:A001_window_02.png]]&lt;br /&gt;
&lt;br /&gt;
Observatie:&lt;br /&gt;
Toate metodele sunt statice deoarece sunt apelate din interiorul metodei &lt;br /&gt;
&amp;quot;Main()&amp;quot; care trebuie sa fie statica.&lt;br /&gt;
&lt;br /&gt;
Asadar am creat un buton si am atasat evenimentului &amp;quot;Clicked&amp;quot; generat de acest&lt;br /&gt;
buton metoda &amp;quot;OnButtonClicked()&amp;quot;. Acest eveniment este generat de apasarea &lt;br /&gt;
butonului stang al mouse-ului. Metoda &amp;quot;OnButtonClicked()&amp;quot; nu face altceva decat &lt;br /&gt;
sa afiseze un mesaj in consola.&lt;br /&gt;
&lt;br /&gt;
Deasemenea am atasat evenimentului &amp;quot;DeleteEvent&amp;quot; generat de fereastra principala&lt;br /&gt;
metoda &amp;quot;OnWindowDelete()&amp;quot;. Acest eveniment este trimis ferestrei de catre &lt;br /&gt;
managerul de ferestre atunci cand utilizatorul vrea sa inchida fereastra &lt;br /&gt;
(folosind butonul &amp;quot;Close&amp;quot; din bara de titlu, de ex.). Metoda &amp;quot;OnWindowDelete()&amp;quot; &lt;br /&gt;
executa metoda &amp;quot;Application.Quit()&amp;quot; care are rolul de a termina executia buclei &lt;br /&gt;
principale si, in consecinta, a programului.&lt;br /&gt;
&lt;br /&gt;
==Legaturi utile==&lt;br /&gt;
* [http://www.go-mono.com/docs/ Documentatia oficiala Gtk#]&lt;br /&gt;
* [http://www.mono-project.com/GtkSharpBeginnersGuide Gtk# Beginners Guide]&lt;br /&gt;
* [http://www.mono-project.com/Gtk:HelloWorld HelloWorld]&lt;br /&gt;
&lt;br /&gt;
[[Category:Tutorial]]&lt;br /&gt;
[[Category:Programming]]&lt;/div&gt;</summary>
		<author><name>Csdexter</name></author>	</entry>

	<entry>
		<id>http://wiki.linux360.ro/index.php?title=Introducere_in_Gtk-sharp&amp;diff=3330</id>
		<title>Introducere in Gtk-sharp</title>
		<link rel="alternate" type="text/html" href="http://wiki.linux360.ro/index.php?title=Introducere_in_Gtk-sharp&amp;diff=3330"/>
				<updated>2007-01-12T10:10:10Z</updated>
		
		<summary type="html">&lt;p&gt;Csdexter: /* Prima aplicatie Gtk# */ Adapted to GeSHiCodeTag&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Introducere==&lt;br /&gt;
&lt;br /&gt;
===Ce este Gtk#?===&lt;br /&gt;
Un raspuns complet la aceasta intrebare gasiti pe pagina principala a &lt;br /&gt;
proiectului [http://www.mono-project.com/GtkSharp Gtk#]. Pe scurt, este o &lt;br /&gt;
interfata C# pentru celebra platforma de dezvoltare a interfetelor grafice &lt;br /&gt;
[http://www.gtk.org/ GTK+]. Cel mai bine ruleaza pe platforma &lt;br /&gt;
[http://www.mono-project.com Mono], insa poate rula pe orice platforma .NET.&lt;br /&gt;
&lt;br /&gt;
===Cum instalez Gtk#?===&lt;br /&gt;
Pentru a nu complica lucrurile va sugerez sa instalati [http://www.mono-project.com Mono].&lt;br /&gt;
Pentru a instala Mono aveti mai multe optiuni:&lt;br /&gt;
* sa descarcati si sa instalati pachetele binare de pe site-ul proiectului&lt;br /&gt;
* sa descarcati, compilati si instalati pacatele care contin sursele, le gasiti tot de pe site-ul proiectului&lt;br /&gt;
* sa instalati pachetele din alt repository, ex: yum, apt, portage&lt;br /&gt;
&lt;br /&gt;
===Cunostinte necesare===&lt;br /&gt;
Pentru a intelege exemplele prezentate in acest tutorial aveti nevoie doar de&lt;br /&gt;
cunostinte de baza privind limbajul C#.&lt;br /&gt;
&lt;br /&gt;
==Aplicatii==&lt;br /&gt;
&lt;br /&gt;
===Prima aplicatie Gtk#===&lt;br /&gt;
Mai intai vom crea cea mai simpla aplicatie gtk# in care nu vom folosesi nici &lt;br /&gt;
un element grafic. Scopul acestei aplicatii este de a testa integritatea &lt;br /&gt;
mediului de dezvoltare si de a va familiariza cu comenzile pe care trebuie sa &lt;br /&gt;
le executati pentru a compila un program folosind compilatorul oferit de &lt;br /&gt;
platforma Mono.&lt;br /&gt;
&lt;br /&gt;
Folosind editorul dumneavoastra preferat scrieti urmatorul program si salvati-l&lt;br /&gt;
intr-un fisier cu numele &amp;quot;helloword.cs&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code csharp&amp;gt;using System;&lt;br /&gt;
using Gtk;&lt;br /&gt;
&lt;br /&gt;
public class GtkHelloWorld {&lt;br /&gt;
&lt;br /&gt;
	public static void Main() {&lt;br /&gt;
		Console.WriteLine(&amp;quot;HelloWorld&amp;quot;);&lt;br /&gt;
	}&lt;br /&gt;
 &lt;br /&gt;
}&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Programul de mai sus trebuie compilat cu urmatoarea comanda:&lt;br /&gt;
 mcs -pkg:gtk-sharp-2.0 helloword.cs&lt;br /&gt;
&lt;br /&gt;
Prin comanda de mai sus am instruit compilatorul de C# sa include pachetul &lt;br /&gt;
&amp;quot;gtk-sharp-2.0&amp;quot;. Acest pachet contine mai multe librarii, ceea ce ne scuteste &lt;br /&gt;
de efortul de a specifica manual fiecare librarie necesara compilarii unei &lt;br /&gt;
aplicatii gtk#.&lt;br /&gt;
&lt;br /&gt;
===Adaugarea interfetei grafice===&lt;br /&gt;
In continuare ne propunem sa dezvoltam programul anterior adaugandu-i cateva&lt;br /&gt;
elemente grafice.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
using System;&lt;br /&gt;
using Gtk;&lt;br /&gt;
&lt;br /&gt;
public class SalutareWindow {&lt;br /&gt;
 &lt;br /&gt;
	public static void Main() {&lt;br /&gt;
		Application.Init();&lt;br /&gt;
&lt;br /&gt;
		// cream fereastra&lt;br /&gt;
		Window myWin = new Window(&amp;quot;Prima aplicatie GTK#! &amp;quot;);&lt;br /&gt;
		myWin.Resize(300, 200);&lt;br /&gt;
    &lt;br /&gt;
		// cream o eticheta care va contine un text&lt;br /&gt;
		Label myLabel = new Label();&lt;br /&gt;
		myLabel.Text = &amp;quot;Salutare lume!!!!&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
		// adaugam eticheta la fereastra&lt;br /&gt;
		myWin.Add(myLabel);&lt;br /&gt;
&lt;br /&gt;
		// afisam fereastra si elementele pe care aceasta le contine&lt;br /&gt;
		myWin.ShowAll();&lt;br /&gt;
    &lt;br /&gt;
		Application.Run();&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Compilati programul asa cum am aratat mai sus, rulati-l si ar trebui sa obtineti &lt;br /&gt;
ceva asemanator ceea ce vedeti in urmatoarea imagine:&lt;br /&gt;
&lt;br /&gt;
[[Image:A001_window_01.png]]&lt;br /&gt;
&lt;br /&gt;
Daca veniti dintr-un mediu de programare windows primul lucru pe care il veti &lt;br /&gt;
observa este ca nu am specificat pozitia in cadrul ferestrei si dimensiunile &lt;br /&gt;
pe care le va avea widgetul &amp;quot;myLabel&amp;quot;. Aceasta deoarece gtk# foloseste un &lt;br /&gt;
sistem de pozitionare si redimensionare foarte diferit de cel cu care sunteti &lt;br /&gt;
obisnuit. Insa despre acest subiect vom discuta in alt tutorial.&lt;br /&gt;
&lt;br /&gt;
Functia &amp;quot;Application.Init()&amp;quot; este prezenta in toate aplicatiile gtk# si are &lt;br /&gt;
rolul de a initializa biblioteca gtk# si de a o pregati pentru utilizare. &lt;br /&gt;
Functia &amp;quot;Application.Run()&amp;quot; este o alta functie pe care o veti intalni in toate &lt;br /&gt;
aplicatiile gtk#. Cand executia programului ajunge la aceasta functie, &lt;br /&gt;
programul intra in asa numita &amp;quot;bucla principala&amp;quot;, si ramane in acesta bucla &lt;br /&gt;
atat timp cat este deschisa o fereasta gtk#. In acest stadiu sunt captate si &lt;br /&gt;
procesate evenimentele. Daca nu apelam aceasta functie programul isi termina &lt;br /&gt;
executia imediat ce a rulat toate intructiunile.&lt;br /&gt;
&lt;br /&gt;
===Adaugarea evenimentelor===&lt;br /&gt;
Toate platformele .NET implementeaza evenimentele cu ajutorul unor clase &lt;br /&gt;
speciale numite &amp;quot;delegati&amp;quot;. Principiul de implementare si utilizare este foarte &lt;br /&gt;
asemanator cu sistemul de semnale si sloturi din Qt, insa spre deosebire de Qt &lt;br /&gt;
nu este o extensie a limbajului, ci face parte din limbaj.&lt;br /&gt;
&lt;br /&gt;
Deobicei un delegat are urmatoarea semnatura, insa poate sa difere in functie &lt;br /&gt;
de eveniment:&lt;br /&gt;
&lt;br /&gt;
 void HandlerMetod(object obj, EventArgs args)&lt;br /&gt;
&lt;br /&gt;
In continuare vom crea o fereastra care contine un singur buton. Cand apasam &lt;br /&gt;
butonul este afisat un text in consola.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
using System;&lt;br /&gt;
using Gtk;&lt;br /&gt;
&lt;br /&gt;
public class SalutareWindow&lt;br /&gt;
{	&lt;br /&gt;
	public static void Main ()&lt;br /&gt;
	{&lt;br /&gt;
		Application.Init();&lt;br /&gt;
 &lt;br /&gt;
 		// cream fereastra&lt;br /&gt;
 		Window myWin = new Window(&amp;quot;Prima aplicatie GTK#! &amp;quot;);&lt;br /&gt;
		myWin.SetDefaultSize (300, 200);&lt;br /&gt;
		&lt;br /&gt;
		// cream un buton care contine textul &amp;quot;Salutare lume!&amp;quot;&lt;br /&gt;
		Button myButton = new Button(&amp;quot;Salutare lume!&amp;quot;);&lt;br /&gt;
		&lt;br /&gt;
		// atasam even. &amp;quot;Cicked&amp;quot; func. HelloButton_OnPress ()&lt;br /&gt;
		myButton.Clicked += new EventHandler (OnButtonClicked);&lt;br /&gt;
		&lt;br /&gt;
		// adaugam butonul la fereastra&lt;br /&gt;
		myWin.Add (myButton);&lt;br /&gt;
		&lt;br /&gt;
		// atasam even. DeleteEvent func. Window_OnDelete ()&lt;br /&gt;
		myWin.DeleteEvent += new DeleteEventHandler (OnWindowDelete);&lt;br /&gt;
		&lt;br /&gt;
		// afisam fereastra si widgeturile pe care le contine&lt;br /&gt;
		myWin.ShowAll ();&lt;br /&gt;
		&lt;br /&gt;
		Application.Run();&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	static void OnButtonClicked (object sender, EventArgs a)&lt;br /&gt;
	{&lt;br /&gt;
		Console.WriteLine (&amp;quot;Ai apasat butonul!&amp;quot;);&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	static void OnWindowDelete (object sender, DeleteEventArgs a)&lt;br /&gt;
	{&lt;br /&gt;
		Console.WriteLine (&amp;quot;Aplicatia s-a terminat!&amp;quot;);&lt;br /&gt;
		Application.Quit ();&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Compilati programul, iar ceea ce veti obtine trebuie sa arate cam asa:&lt;br /&gt;
&lt;br /&gt;
[[Image:A001_window_02.png]]&lt;br /&gt;
&lt;br /&gt;
Observatie:&lt;br /&gt;
Toate metodele sunt statice deoarece sunt apelate din interiorul metodei &lt;br /&gt;
&amp;quot;Main()&amp;quot; care trebuie sa fie statica.&lt;br /&gt;
&lt;br /&gt;
Asadar am creat un buton si am atasat evenimentului &amp;quot;Clicked&amp;quot; generat de acest&lt;br /&gt;
buton metoda &amp;quot;OnButtonClicked()&amp;quot;. Acest eveniment este generat de apasarea &lt;br /&gt;
butonului stang al mouse-ului. Metoda &amp;quot;OnButtonClicked()&amp;quot; nu face altceva decat &lt;br /&gt;
sa afiseze un mesaj in consola.&lt;br /&gt;
&lt;br /&gt;
Deasemenea am atasat evenimentului &amp;quot;DeleteEvent&amp;quot; generat de fereastra principala&lt;br /&gt;
metoda &amp;quot;OnWindowDelete()&amp;quot;. Acest eveniment este trimis ferestrei de catre &lt;br /&gt;
managerul de ferestre atunci cand utilizatorul vrea sa inchida fereastra &lt;br /&gt;
(folosind butonul &amp;quot;Close&amp;quot; din bara de titlu, de ex.). Metoda &amp;quot;OnWindowDelete()&amp;quot; &lt;br /&gt;
executa metoda &amp;quot;Application.Quit()&amp;quot; care are rolul de a termina executia buclei &lt;br /&gt;
principale si, in consecinta, a programului.&lt;br /&gt;
&lt;br /&gt;
==Legaturi utile==&lt;br /&gt;
* [http://www.go-mono.com/docs/ Documentatia oficiala Gtk#]&lt;br /&gt;
* [http://www.mono-project.com/GtkSharpBeginnersGuide Gtk# Beginners Guide]&lt;br /&gt;
* [http://www.mono-project.com/Gtk:HelloWorld HelloWorld]&lt;br /&gt;
&lt;br /&gt;
[[Category:Tutorial]]&lt;br /&gt;
[[Category:Programming]]&lt;/div&gt;</summary>
		<author><name>Csdexter</name></author>	</entry>

	<entry>
		<id>http://wiki.linux360.ro/index.php?title=Script_pentru_restabilirea_conexiunii_ADSL&amp;diff=3329</id>
		<title>Script pentru restabilirea conexiunii ADSL</title>
		<link rel="alternate" type="text/html" href="http://wiki.linux360.ro/index.php?title=Script_pentru_restabilirea_conexiunii_ADSL&amp;diff=3329"/>
				<updated>2007-01-12T10:07:57Z</updated>
		
		<summary type="html">&lt;p&gt;Csdexter: /* Scriptul efectiv */ Adapted to GeSHiCodeTag&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Observatii==&lt;br /&gt;
Scriptul de fata este util abonatilor Romtelecom care au conexiuni ADSL si folosesc modemurile  Speedtouch 330 pe USB, modemuri care se desincronizeaza destul de des. Scriptul detecteaza, rezolva si tine evidenta problemele aparute. &lt;br /&gt;
&lt;br /&gt;
Pentru ca scriptul sa functioneze corect trebuie sa efectuati cateva schimbari in fisierele de configurare a sistemului. In primul rand scriptul trebuie rulat in fiecare minut din crontab. Pentru aceasta trebuie sa adaugati in fisierul &amp;lt;tt&amp;gt;/etc/crontab&amp;lt;/tt&amp;gt; linia de mai jos:&lt;br /&gt;
 * * * * * root /calea/catre/check_host.sh&lt;br /&gt;
&lt;br /&gt;
In cazul in care sistemul este restartat in timp ce ruleaza scriptul de restabilire a conexiunii ADSL fisierele lock folosite de acest script raman in directorul /tmp, ceea ce impiedica functionarea corecta a scriptului dupa restart. Pentru a evita aceasta situatie, dupa fiecare restart a sistemului trebuie sa stergeti aceste fisiere, in cazul in care exista. Este suficient sa adaugati urmatoarea linie intr-un fisier care va fi executat la bootare, de ex. &amp;lt;tt&amp;gt;/etc/rc.d/rc.local&amp;lt;/tt&amp;gt; sau &amp;lt;tt&amp;gt;/etc/conf.d/local.start&amp;lt;/tt&amp;gt; pe sistemele gentoo.&lt;br /&gt;
 rm -f /tmp/chech_host*&lt;br /&gt;
&lt;br /&gt;
Pentru a evita situatiile in care fisierele lock raman in directorul /tmp deorece sistemul a fost restartat in timp ce rula scriptul de restabilire a conexiunii&lt;br /&gt;
&lt;br /&gt;
Exista o situatie in care pot aparea probleme, si anume atunci cand sistemul este resetat in timp ce scriptul ruleaza. Apoi trebuie sa va asigurati ca nu apar probleme in urma unei rebootari a sistemului din cauza fisierelor lock ramase in /tmp. Pentru a evita aceasta situatie la fiecare reboot trebuie sa va asigurati ca aceste fisiere nu exista in directorul /tmp.&lt;br /&gt;
&lt;br /&gt;
Inainte de folosi acest script, va rog schimbati variabilele in functie de nevoile personale. Cea mai importanta variabila este &amp;lt;tt&amp;gt;CONEXIUNE&amp;lt;/tt&amp;gt;. Variabila indica numele fisierului ce contine informatiile despre conexiune ADSL (nume utilizator, parola, etc...). Acest fisier se afla deobicei in directorul &amp;lt;tt&amp;gt;/etc/ppp/peers&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Un log generat de aplicatie arata cam asa:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
BEGINING &amp;gt; Sat Mar 11 21:49:01 GMT 2006&lt;br /&gt;
END &amp;gt; Sun Mar 12 10:34:44 GMT 2006&lt;br /&gt;
BEGINING &amp;gt; Mon Mar 13 08:07:11 GMT 2006&lt;br /&gt;
END &amp;gt; Mon Mar 13 08:13:12 GMT 2006&lt;br /&gt;
SINGLE &amp;gt; Fri Mar 17 16:17:49 GMT 2006&lt;br /&gt;
BEGINING &amp;gt; Sat Mar 18 07:23:55 GMT 2006&lt;br /&gt;
END &amp;gt; Sat Mar 18 07:24:44 GMT 2006&lt;br /&gt;
SINGLE &amp;gt; Wed Mar 22 01:39:09 GMT 2006&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Scriptul efectiv==&lt;br /&gt;
&amp;lt;code bash&amp;gt;#!/bin/sh&lt;br /&gt;
# check_host.sh&lt;br /&gt;
&lt;br /&gt;
# SETEAZA variabilele de mai jos&lt;br /&gt;
##################################################&lt;br /&gt;
&lt;br /&gt;
# fis. in care vor fi logate intreruperile&lt;br /&gt;
LOG_FILE=/var/log/check_host&lt;br /&gt;
# daca exista fis. $LOCK_FILE o alta instanta a scriptului inca ruleaza&lt;br /&gt;
LOCK_FILE=/tmp/check_host.sh.lock&lt;br /&gt;
# daca exista fis. $TAG_FILE inseamna ca si testul anterior a esuat sa&lt;br /&gt;
# stabileasca conexiunea&lt;br /&gt;
TAG_FILE=/tmp/chech_host.sh.tag&lt;br /&gt;
# hostul fol. pentru verificarea conexiunii; poate fi gateway-ul, de ex.&lt;br /&gt;
HOST=www.yahoo.com&lt;br /&gt;
# numele fis. care contine setarile pentru conexiunea ADSL&lt;br /&gt;
# acest fis. se afla deobicei in dir. /etc/ppp/peers/&lt;br /&gt;
CONEXIUNE=adsl_express&lt;br /&gt;
&lt;br /&gt;
if ! ping -c 3 $HOST &amp;amp;&amp;gt;/dev/null &amp;amp;&amp;amp; ! test -f $LOCK_FILE ; then&lt;br /&gt;
  touch $LOCK_FILE&lt;br /&gt;
&lt;br /&gt;
  # aici incercam sa restabilim conexiunea&lt;br /&gt;
  killall -9 pppd&lt;br /&gt;
  sleep 35&lt;br /&gt;
  pppd call $CONEXIUNE&lt;br /&gt;
&lt;br /&gt;
  ping -c 3 $HOST &amp;amp;&amp;gt;/dev/null&lt;br /&gt;
  TEST=$?&lt;br /&gt;
&lt;br /&gt;
  if [ $TEST -eq 0 ]; then&lt;br /&gt;
    if [ ! -f $TAG_FILE ]; then&lt;br /&gt;
      echo &amp;quot;SINGLE &amp;gt;&amp;quot; `date`&amp;gt;&amp;gt;$LOG_FILE&lt;br /&gt;
    else&lt;br /&gt;
      echo &amp;quot;END &amp;gt;&amp;quot; `date`&amp;gt;&amp;gt;$LOG_FILE&lt;br /&gt;
    fi&lt;br /&gt;
    rm -f $TAG_FILE&lt;br /&gt;
  else&lt;br /&gt;
    if [ ! -f $TAG_FILE ]; then&lt;br /&gt;
      echo &amp;quot;BEGINING &amp;gt;&amp;quot; `date`&amp;gt;&amp;gt;$LOG_FILE&lt;br /&gt;
      touch $TAG_FILE&lt;br /&gt;
    fi&lt;br /&gt;
  fi&lt;br /&gt;
&lt;br /&gt;
  rm -f $LOCK_FILE&lt;br /&gt;
fi&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:HowTo]]&lt;br /&gt;
[[Category:Networking]]&lt;/div&gt;</summary>
		<author><name>Csdexter</name></author>	</entry>

	<entry>
		<id>http://wiki.linux360.ro/index.php?title=Internet_mobil_cu_Vodafone_SmartModem&amp;diff=3328</id>
		<title>Internet mobil cu Vodafone SmartModem</title>
		<link rel="alternate" type="text/html" href="http://wiki.linux360.ro/index.php?title=Internet_mobil_cu_Vodafone_SmartModem&amp;diff=3328"/>
				<updated>2007-01-12T10:07:00Z</updated>
		
		<summary type="html">&lt;p&gt;Csdexter: First attempt at a cosmetic fix&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Vă voi prezenta aici cum am reuşit să fac să funcţioneze conexiunea la internet folosind un Vodafone SmartModem.&lt;br /&gt;
[http://www.vodafone.ro/personal/servicii-si-tarife/internet-si-date/acces-mobil-la-internet/vodafone-smartmodem/ Acesta] este modemul. Pe spatele lui ar trebui să scrie Huawei E220.&lt;br /&gt;
&lt;br /&gt;
Pentru conectarea la calculator el vine cu două cabluri USB; '''Îl vom folosi pe cel scurt''' deoarece din ce am citit sunt cazuri în care cel lung nu funcţionează.&lt;br /&gt;
&lt;br /&gt;
De asemenea, el are o cartelă Vodafone în el. În timp ce e oprit, scoateţi cartela, introduceţi-o într-un telefon şi '''dezactivaţi-i cererea PIN-ului'''. Am auzit că e mai simplu fără PIN şi aşa merge la mine.&lt;br /&gt;
&lt;br /&gt;
Modemul include şi o interfaţă USB Mass Storage. Practic are ceva memorie flash comportându-se ca un CD-ROM în prima fază. Pe Windows e un lucru foarte bun, modemul având în memoria respectivă driver-e, programul de conectare şi un ''Autorun''. Pe Linux această interfaţă USB Mass Storage complică puţin lucrurile deoarece după ce HALd o detectează, o montează şi se opreşte aici, &amp;quot;uitând&amp;quot; să mai cerceteze dacă nu cumva dispozitivul USB proaspăt ataşat nu e mai mult decât un simplu CD-ROM.&lt;br /&gt;
&lt;br /&gt;
Comenzile de mai jos vor fi introduse ca root. Dacă vreuna din comenzile de mai jos nu vă funcţionează, instalaţi pachetul corespunzător (nu este scopul acestui ghid).&lt;br /&gt;
&lt;br /&gt;
Să trecem la treabă!&lt;br /&gt;
&lt;br /&gt;
* dezactivaţi conexiunile la internet existente (LAN, Wireless):&lt;br /&gt;
** Ubuntu (&amp;amp; family): System Settings &amp;gt; Network Settings: Disable&lt;br /&gt;
** openSUSE: Yast2 &amp;gt; Network devices: Delete&lt;br /&gt;
** Mandriva: Mandriva Control Center &amp;gt; Network &amp;amp; Internet: Delete a network interface&lt;br /&gt;
* conectaţi modemul la calculator şi aşteptaţi câteva secunde&lt;br /&gt;
* dacă folosiţi KDE în câteva secunde veţi fi întrebaţi ce să faceţi cu CD-ROM-ul proaspăt detectat de HALd. Alegeţi &amp;quot;Do nothing&amp;quot;.&lt;br /&gt;
** depinzând de distribuţie, versiunea de HALd/KDE, s-ar putea ca CD-ROM-ul să fie deja montat. Verificaţi cu &amp;lt;code bash&amp;gt;mount&amp;lt;/code&amp;gt;&lt;br /&gt;
** în cazul openSUSE va fi necesar un &amp;lt;code bash&amp;gt;umount /dev/sr1&amp;lt;/code&amp;gt;&lt;br /&gt;
* descărcaţi [http://www.kanoistika.sk/bobovsky/archiv/umts/huaweiAktBbo-i386.out Activator] şi rulaţi-l (are nevoie de drepturi de execuţie)&lt;br /&gt;
* dacă CD-ROM-ul e detectat din nou şi e remontat, Activator-ul nu a funcţionat. Indiferent dacă a funcţionat sau nu, trebuie verificat ce dispozitive au fost create. Dacă '''nu aveţi 2 sau 3 dispozitive listate, nu e bine''': &amp;lt;code bash&amp;gt;ls -l /dev/ttyU*&amp;lt;/code&amp;gt;&lt;br /&gt;
* dacă '''nu aveţi 2 sau 3 dispozitive listate''' atunci va trebui să faceţi următoarele:&lt;br /&gt;
** scoateţi modulul responsabil pentru detectarea interfeţelor USB Mass Storage (va da eroare dacă CD-ROM-ul modemului e înca montat!): &amp;lt;code bash&amp;gt;rmmod usb_storage&amp;lt;/code&amp;gt;&lt;br /&gt;
** adăugaţi modulul responsabil pentru detectarea modemurilor USB. Parametrii pot fi diferiţi deci verificaţi cu lsusb. Cazul meu:&lt;br /&gt;
&amp;lt;code&amp;gt;lsusb&lt;br /&gt;
...&lt;br /&gt;
Bus 003 Device 008: ID 12d1:1003&lt;br /&gt;
...&lt;br /&gt;
modprobe usbserial vendor=0x12d1 product=0x1003&amp;lt;/code&amp;gt;&lt;br /&gt;
* ar trebui să aveţi 2 sau 3 dispozitive ttyU*:&lt;br /&gt;
&amp;lt;code&amp;gt;ls -l /dev/ttyU*&lt;br /&gt;
crw-rw---- 1 root uucp 188, 0 Jan 10 10:07 /dev/ttyUSB0&lt;br /&gt;
crw-rw---- 1 root uucp 188, 1 Jan 10 10:07 /dev/ttyUSB1&lt;br /&gt;
crw-rw---- 1 root uucp 188, 2 Jan 10 10:07 /dev/ttyUSB2&amp;lt;/code&amp;gt;&lt;br /&gt;
* ''/etc/wvdial.conf'' trebuie să conţină următoarele:&lt;br /&gt;
&amp;lt;pre&amp;gt;[Dialer pin]&lt;br /&gt;
Init1 = AT+CPIN=1234&lt;br /&gt;
&lt;br /&gt;
[Dialer hsdpa]&lt;br /&gt;
Phone = *99***16#&lt;br /&gt;
Username = internet.vodafone.ro&lt;br /&gt;
Password = vodafone&lt;br /&gt;
Stupid Mode = 1&lt;br /&gt;
Dial Command = ATDT&lt;br /&gt;
Modem = /dev/ttyUSB0&lt;br /&gt;
Baud = 460800&lt;br /&gt;
Init2 = ATZ&lt;br /&gt;
Init3 = ATE0V1&amp;amp;D2&amp;amp;C1S0=0+IFC=2,2&lt;br /&gt;
ISDN = 0&lt;br /&gt;
Modem Type = Analog Modem&lt;br /&gt;
Init5 =AT+CGDCONT=1,&amp;quot;IP&amp;quot;,&amp;quot;internet.vodafone.ro&amp;quot;;&amp;lt;/pre&amp;gt;&lt;br /&gt;
* evident secţiunea ''pin'' poate lipsi sau PIN-ul poate fi altul decât 1234&lt;br /&gt;
* comanda de conectare fără PIN (cazul meu şi cazul recomandat):&lt;br /&gt;
&amp;lt;code&amp;gt;wvdial hsdpa&lt;br /&gt;
--&amp;gt; WvDial: Internet dialer version 1.54.0&lt;br /&gt;
--&amp;gt; Cannot get information for serial port.&lt;br /&gt;
--&amp;gt; Initializing modem.&lt;br /&gt;
--&amp;gt; Sending: ATZ&lt;br /&gt;
ATZ&lt;br /&gt;
OK&lt;br /&gt;
--&amp;gt; Sending: ATZ&lt;br /&gt;
ATZ&lt;br /&gt;
OK&lt;br /&gt;
--&amp;gt; Sending: ATE0V1&amp;amp;D2&amp;amp;C1S0=0+IFC=2,2&lt;br /&gt;
ATE0V1&amp;amp;D2&amp;amp;C1S0=0+IFC=2,2&lt;br /&gt;
OK&lt;br /&gt;
--&amp;gt; Sending: AT+CGDCONT=1,&amp;quot;IP&amp;quot;,&amp;quot;internet.vodafone.ro&amp;quot;;&lt;br /&gt;
OK&lt;br /&gt;
--&amp;gt; Modem initialized.&lt;br /&gt;
--&amp;gt; Sending: ATDT*99***16#&lt;br /&gt;
--&amp;gt; Waiting for carrier.&lt;br /&gt;
CONNECT&lt;br /&gt;
--&amp;gt; Carrier detected.  Starting PPP immediately.&lt;br /&gt;
--&amp;gt; Starting pppd at Wed Jan 10 10:08:24 2007&lt;br /&gt;
--&amp;gt; pid of pppd: 5378&lt;br /&gt;
--&amp;gt; Using interface ppp0&lt;br /&gt;
--&amp;gt; pppd: Dial Command&lt;br /&gt;
--&amp;gt; pppd: Dial Command&lt;br /&gt;
--&amp;gt; pppd: Dial Command&lt;br /&gt;
--&amp;gt; pppd: Dial Command&lt;br /&gt;
--&amp;gt; pppd: Dial Command&lt;br /&gt;
--&amp;gt; local  IP address 172.X.X.X&lt;br /&gt;
--&amp;gt; pppd: Dial Command&lt;br /&gt;
--&amp;gt; remote IP address 10.64.64.64&lt;br /&gt;
--&amp;gt; pppd: Dial Command&lt;br /&gt;
--&amp;gt; primary   DNS address 193.230.161.3&lt;br /&gt;
--&amp;gt; pppd: Dial Command&lt;br /&gt;
--&amp;gt; secondary DNS address 193.230.161.4&lt;br /&gt;
--&amp;gt; pppd: Dial Command&lt;br /&gt;
--&amp;gt; Script /etc/ppp/ip-up run successful&lt;br /&gt;
--&amp;gt; Default route Ok.&lt;br /&gt;
--&amp;gt; Nameserver (DNS) Ok.&lt;br /&gt;
--&amp;gt; Connected... Press Ctrl-C to disconnect&lt;br /&gt;
--&amp;gt; pppd: Dial Command&amp;lt;/code&amp;gt;&lt;br /&gt;
* comanda de conectare cu PIN (caz nerecomandat):&amp;lt;code bash&amp;gt;wvdial pin hsdpa&amp;lt;/code&amp;gt;&lt;br /&gt;
** output-ul ar trebui să fie asemănător&lt;br /&gt;
&lt;br /&gt;
Acum ar trebui să fiţi conectaţi!&lt;br /&gt;
&lt;br /&gt;
Ca notă de final:&lt;br /&gt;
&lt;br /&gt;
- ''cea mai sigură metodă'' de conectare: folosind cablul scurt, cu networking-ul dezactivat şi fără cerere PIN (mie îmi funcţionează mereu)&lt;br /&gt;
&lt;br /&gt;
- ''o metodă mai comodă'': folosind cablul lung, cu networking-ul activat (dar cablul de reţea scos) şi fără cerere PIN. E mai comod să nu dezactivaţi reţeaua (în funcţie de setările dvs s-ar putea să fie mai complicat să o reactivaţi) iar uneori cablul lung e de asemenea mai comod decât cel scurt. Mie îmi funcţionează, dar conectarea durează mai mult.&lt;br /&gt;
&lt;br /&gt;
- ''o metodă care nu mi-a mers niciodată'': orice configuraţie cu cererea PIN-ului activată. Mereu primesc &amp;quot;TIMED OUT&amp;quot; la conectare!&lt;br /&gt;
&lt;br /&gt;
Dacă ceva nu merge, întrebaţi pe forum!&lt;br /&gt;
&lt;br /&gt;
[[Category:HowTo]]&lt;/div&gt;</summary>
		<author><name>Csdexter</name></author>	</entry>

	<entry>
		<id>http://wiki.linux360.ro/index.php?title=Main_Page&amp;diff=3325</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="http://wiki.linux360.ro/index.php?title=Main_Page&amp;diff=3325"/>
				<updated>2007-01-10T20:43:43Z</updated>
		
		<summary type="html">&lt;p&gt;Csdexter: Trimmed lists to first 10 entries&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* A început migrarea tutorialelor şi ghidurilor (HowTo) din forum în Wiki -- nu ezitaţi să daţi o mână de ajutor ;-) &lt;br /&gt;
* Vă rugăm, folosiţi '''doar''' [[linux360:Sandbox|caietul de ciorne]] pentru încercări şi probe.&lt;br /&gt;
* Pentru acces de editare, vă rugăm contactaţi [mailto:wiki-admin@linux360.ro administraţia].&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
* '''Ultimele 10 [[:Category:HowTo|ghiduri]] actualizate:'''&lt;br /&gt;
** [[Internet mobil cu Vodafone SmartModem]] ([[:Category:Networking|retea]])&lt;br /&gt;
** [[Supraveghere video sub Linux]] ([[:Category:FAQ|Întrebări puse frecvent]]/[[:Category:Tips'n'Tricks|ponturi]])&lt;br /&gt;
** [[Debricking Linksys WRT54GL cu OpenWrt]] ([[:Category:Troubleshooting|remedieri]])&lt;br /&gt;
** [[Instalare Gentoo - Sfaturi]] ([[:Category:FAQ|Întrebări puse frecvent]])&lt;br /&gt;
** [[Detecţie componente hardware din consolă]] ([[:Category:FAQ|Întrebări puse frecvent]]/[[:Category:Tips'n'Tricks|ponturi]])&lt;br /&gt;
** [[Dezlipire sticker Microsoft Windows|Cum să scăpăm de abţibildul de la Microsoft?]] ([[:Category:FAQ|Întrebări puse frecvent]]/[[:Category:Tips'n'Tricks|ponturi]])&lt;br /&gt;
** [[Ce este GNU/Linux? / Cum invat Linux?]] ([[:Category:FAQ|Întrebări puse frecvent]])&lt;br /&gt;
** [[Comunica prin lpt|Controlul motoarelor pas cu pas prin portul paralel]] ([[:Category:Programming|programare]])&lt;br /&gt;
** [[Cum dau net mai departe|Redistribuirea/Partajarea conexiunii la Internet]]  ([[:Category:Networking|retea]]/[[:Category:Routing|rutare]])&lt;br /&gt;
** [[Yum în România|&amp;lt;tt&amp;gt;yum&amp;lt;/tt&amp;gt; în România]] ([[:Category:Tips'n'Tricks|ponturi]])&lt;br /&gt;
&lt;br /&gt;
* '''Ultimele 10 [[:Category:Tutorial|tutoriale]] actualizate''':&lt;br /&gt;
** [[Setari vim existentiale]] ([[:Category:Tips'n'Tricks|ponturi]])&lt;br /&gt;
** [[Script pentru restabilirea conexiunii ADSL]] ([[:Category:Networking|reţea]])&lt;br /&gt;
** [[Configurare Gaim pentru a afisa in status melodia curenta|Configurarea GAIM  pentru a afişa în status melodia curentă]] ([[:Category:Multimedia|multimedia]]/[[:Category:Office|programe de birotică]])&lt;br /&gt;
** [[Introducere in Gtk-sharp|Introducere în Gtk#]] ([[:Category:Programming|programare]])&lt;br /&gt;
** [[Schimbarea setarilor GTK 2|Schimbarea setărilor Gtk+ 2]] ([[:Category:GEs|medii grafice]]/[[:Category:Tips'n'Tricks|ponturi]])&lt;br /&gt;
** [[Sistem de depanare a aplicatiilor in limbajul C-plus-plus|Sistem de depanare a aplicaţiilor în limbajul C++]] ([[:Category:Programming|programare]])&lt;br /&gt;
** [[Iptables romana|Introducere în &amp;lt;tt&amp;gt;iptables&amp;lt;/tt&amp;gt;]] ([[:Category:Networking|reţea]]/[[:Category:Firewall|filtrare trafic]])&lt;br /&gt;
** [[Supra%C3%AEnc%C4%83rcarea operatorilor %C3%AEn limbajul C-plus-plus|Supraîncărcarea operatorilor în ANSI C++]] ([[:Category:Programming|programare]])&lt;br /&gt;
** [[Securitatea sistemului de operare (Slackware)]] ([[:Category:Tips'n'Tricks|ponturi]])&lt;br /&gt;
&lt;br /&gt;
* '''Ultimele 10 [[:Category:Collection|colecţii]] actualizate''':&lt;br /&gt;
** [[Scripturi BASH|Scripturi Bash utile]] ([[:Category:Programming|programare]])&lt;br /&gt;
** [[Salutare lume!|Salutare, lume!]] ([[:Category:Programming|programare]])&lt;br /&gt;
&lt;br /&gt;
* '''Ultimele 10 [[:Category:Presentation|prezentări]] actualizate''':&lt;br /&gt;
** [[Libipq by example|&amp;lt;tt&amp;gt;libipq&amp;lt;/tt&amp;gt; în exemple]] ([[:Cateogory:Networking|reţea]]/[[:Category:Programming|programare]])&lt;br /&gt;
** [[KDSFlash]] ([[:Category:Graphics|grafică]]/[[:Category:Animation|animaţie]]/[[:Category:Programming|programare]])&lt;br /&gt;
&lt;br /&gt;
* '''Articole [[:Category:Pending|în curs de scriere]]''':&lt;br /&gt;
** [[Echivalentele Linux ale programelor Windows]] ([[User:Raver|raver]])&lt;br /&gt;
** [[Partiţii]] ([[User:Sorin25|sorin25]])&lt;br /&gt;
** [[Autorizarea accesului la resurse web în Apache]] ([[User:Sorin25|sorin25]])&lt;br /&gt;
** [[ACIS|Administrare, configurare şi intreţinere servere]] ([[User:Csdexter|@Dexter]])&lt;br /&gt;
** [[Curbe Bezier|Curbe Bézier]] ([[User:Cbidea|Phaser]])&lt;br /&gt;
** [[Procesul de initializare al unui sistem Slackware GNU/Linux]] ([[User:Vladg|Vladg]])&lt;br /&gt;
** [[Instalarea distribuţiei Slackware Linux]] ([[User:Gabel|gabel]])&lt;br /&gt;
** [[Configurarea X în Slackware]] ([[User:Gabel|gabel]])&lt;/div&gt;</summary>
		<author><name>Csdexter</name></author>	</entry>

	<entry>
		<id>http://wiki.linux360.ro/index.php?title=Configurarea_X_%C3%83%C2%AEn_Slackware&amp;diff=3317</id>
		<title>Configurarea X Ã®n Slackware</title>
		<link rel="alternate" type="text/html" href="http://wiki.linux360.ro/index.php?title=Configurarea_X_%C3%83%C2%AEn_Slackware&amp;diff=3317"/>
				<updated>2006-12-18T17:37:12Z</updated>
		
		<summary type="html">&lt;p&gt;Csdexter: /* Configurarea monitorului */ Adapted to Romanian terminology&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Această pagină este în lucru&lt;br /&gt;
&lt;br /&gt;
==Comanda xorgconfig==&lt;br /&gt;
&lt;br /&gt;
 This program will create a basic xorg.conf file, based on menu selections&lt;br /&gt;
 you make.  It will ask for a pathname when it is ready to write the file.&lt;br /&gt;
 &lt;br /&gt;
 The xorg.conf file usually resides in /etc/X11 or /usr/X11R6/etc/X11.  If&lt;br /&gt;
 no xorg.conf file is present there, Xorg will probe the system to&lt;br /&gt;
 autoconfigure itself.  You can run Xorg -configure to generate a xorg.conf&lt;br /&gt;
 file based on the results of autoconfiguration, or let this program&lt;br /&gt;
 produce a base xorg.conf file for your configuration, and fine-tune it.&lt;br /&gt;
 A sample xorg.conf file is also supplied with Xorg; it is configured&lt;br /&gt;
 for a standard VGA card and monitor with 640x480 resolution.&lt;br /&gt;
 &lt;br /&gt;
 There are also many chipset and card-specific options and settings available,&lt;br /&gt;
 but this program does not know about these. On some configurations some of&lt;br /&gt;
 these settings must be specified. Refer to the X driver man pages and the&lt;br /&gt;
 chipset-specific READMEs in /usr/X11R6/lib/X11/doc for further details.&lt;br /&gt;
 &lt;br /&gt;
 Before continuing with this program, make sure you know what video card&lt;br /&gt;
 you have, and preferably also the chipset it uses and the amount of video&lt;br /&gt;
 memory on your video card, as well as the specifications of your monitor.&lt;br /&gt;
 &lt;br /&gt;
 Press enter to continue, or ctrl-c to abort.&lt;br /&gt;
&lt;br /&gt;
[Enter]&lt;br /&gt;
&lt;br /&gt;
==Configurarea mouse-ului==&lt;br /&gt;
*Alegerea protocolului de comunicatie si a tipului dispozitivului de indicatie utilizat (in cele mai multe cazuri, un mouse)&lt;br /&gt;
&lt;br /&gt;
 First specify a mouse protocol type. Choose one from the following list:&lt;br /&gt;
 &lt;br /&gt;
  1.  Auto [Auto detect]&lt;br /&gt;
  2.  SysMouse [SysMouse]&lt;br /&gt;
  3.  MouseSystems [Mouse Systems (3-button protocol)]&lt;br /&gt;
  4.  PS/2 [PS/2 Mouse]&lt;br /&gt;
  5.  Microsoft [Microsoft compatible (2-button protocol)]&lt;br /&gt;
  6.  Busmouse [Bus Mouse]&lt;br /&gt;
  7.  IMPS/2 [IntelliMouse PS/2]&lt;br /&gt;
  8.  ExplorerPS/2 [Explorer PS/2]&lt;br /&gt;
  9.  GlidePointPS/2 [GlidePoint PS/2]&lt;br /&gt;
 10.  MouseManPlusPS/2 [MouseManPlus PS/2]&lt;br /&gt;
 11.  NetMousePS/2 [NetMouse PS/2]&lt;br /&gt;
 12.  NetScrollPS/2 [NetScroll PS/2]&lt;br /&gt;
 13.  ThinkingMousePS/2 [ThinkingMouse PS/2]&lt;br /&gt;
 14.  AceCad [AceCad]&lt;br /&gt;
 &lt;br /&gt;
 The recommended protocol is Auto. If you have a very old mouse&lt;br /&gt;
 or don't want OS support or auto detection, and you have a two-button&lt;br /&gt;
 or three-button serial mouse, it is most likely of type Microsoft.&lt;br /&gt;
 &lt;br /&gt;
 Enter a protocol number:&lt;br /&gt;
&lt;br /&gt;
[1][Enter]&lt;br /&gt;
&lt;br /&gt;
*Activarea emulării tastei din mijloc (a treia din punct de vedere uman, a doua din punct de vedere informatic) pentru dispozitivele dotate doar cu doua taste&lt;br /&gt;
&lt;br /&gt;
 If your mouse has only two buttons, it is recommended that you enable&lt;br /&gt;
 Emulate3Buttons.&lt;br /&gt;
 &lt;br /&gt;
 Please answer the following question with either 'y' or 'n'.&lt;br /&gt;
 Do you want to enable Emulate3Buttons?&lt;br /&gt;
&lt;br /&gt;
[n][Enter]&lt;br /&gt;
&lt;br /&gt;
*Specificarea inodului-dispozitiv (intrare din &amp;lt;tt&amp;gt;/dev&amp;lt;/tt&amp;gt;) ce corespunde portului fizic la care este conectat dispozitivul&lt;br /&gt;
&lt;br /&gt;
 Now give the full device name that the mouse is connected to, for example&lt;br /&gt;
 /dev/tty00. Just pressing enter will use the default, /dev/mouse.&lt;br /&gt;
 &lt;br /&gt;
 Mouse device:&lt;br /&gt;
&lt;br /&gt;
[Enter]&lt;br /&gt;
&lt;br /&gt;
==Configurarea tastaturii==&lt;br /&gt;
*Alegerea tipului constructiv şi a formei de asezare a tastelor pe tastatura&lt;br /&gt;
&lt;br /&gt;
 Please select one of the following keyboard types that is the better&lt;br /&gt;
 description of your keyboard. If nothing really matches,&lt;br /&gt;
 choose &amp;quot;Generic 104-key PC&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
   1  Generic 101-key PC&lt;br /&gt;
   2  Generic 102-key (Intl) PC&lt;br /&gt;
   3  Generic 104-key PC&lt;br /&gt;
   4  Generic 105-key (Intl) PC&lt;br /&gt;
   5  Dell 101-key PC&lt;br /&gt;
   6  Everex STEPnote&lt;br /&gt;
   7  Keytronic FlexPro&lt;br /&gt;
   8  Microsoft Natural&lt;br /&gt;
   9  Northgate OmniKey 101&lt;br /&gt;
  10  Winbook Model XP5&lt;br /&gt;
  11  Japanese 106-key&lt;br /&gt;
  12  PC-98xx Series&lt;br /&gt;
  13  A4Tech KB-21&lt;br /&gt;
  14  A4Tech KBS-8&lt;br /&gt;
  15  Brazilian ABNT2&lt;br /&gt;
  16  Acer AirKey V&lt;br /&gt;
 &lt;br /&gt;
 Enter a number to choose the keyboard.&lt;br /&gt;
 &lt;br /&gt;
 Press enter for the next page&lt;br /&gt;
&lt;br /&gt;
[1][Enter]&lt;br /&gt;
&lt;br /&gt;
   1  U.S. English&lt;br /&gt;
   2  Arabic&lt;br /&gt;
   3  Albania&lt;br /&gt;
   4  Armenia&lt;br /&gt;
   5  Azerbaijan&lt;br /&gt;
   6  Belarus&lt;br /&gt;
   7  Belgium&lt;br /&gt;
   8  Bangladesh&lt;br /&gt;
   9  India&lt;br /&gt;
  10  Bosnia and Herzegovina&lt;br /&gt;
  11  Brazil&lt;br /&gt;
  12  Bulgaria&lt;br /&gt;
  13  Myanmar&lt;br /&gt;
  14  Canada&lt;br /&gt;
  15  Croatia&lt;br /&gt;
  16  Czechia&lt;br /&gt;
  17  Denmark&lt;br /&gt;
  18  Netherlands&lt;br /&gt;
 &lt;br /&gt;
 Enter a number to choose the country.&lt;br /&gt;
 Press enter for the next page&lt;br /&gt;
&lt;br /&gt;
[1][Enter]&lt;br /&gt;
&lt;br /&gt;
 Please enter a variant name for 'us' layout. Or just press enter&lt;br /&gt;
 for default variant&lt;br /&gt;
&lt;br /&gt;
[Enter]&lt;br /&gt;
&lt;br /&gt;
*Activarea opţiunilor suplimentare (dacă nu doriţi activarea acestora, [[#Configurarea monitorului|continuati cu]] secţiunea &amp;quot;Configurare monitor&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
 Please answer the following question with either 'y' or 'n'.&lt;br /&gt;
 Do you want to select additional XKB options (group switcher,&lt;br /&gt;
 group indicator, etc.)?&lt;br /&gt;
&lt;br /&gt;
[y][Enter]&lt;br /&gt;
&lt;br /&gt;
    Group Shift/Lock behavior&lt;br /&gt;
 &lt;br /&gt;
   1  R-Alt switches group while pressed.&lt;br /&gt;
   2  Left Alt key switches group while pressed.&lt;br /&gt;
   3  Left Win-key switches group while pressed.&lt;br /&gt;
   4  Right Win-key switches group while pressed.&lt;br /&gt;
   5  Both Win-keys switch group while pressed.&lt;br /&gt;
   6  Right Ctrl key switches group while pressed.&lt;br /&gt;
   7  Right Alt key changes group.&lt;br /&gt;
   8  Left Alt key changes group.&lt;br /&gt;
   9  CapsLock key changes group.&lt;br /&gt;
  10  Shift+CapsLock changes group.&lt;br /&gt;
  11  Both Shift keys together change group.&lt;br /&gt;
  12  Both Alt keys together change group.&lt;br /&gt;
  13  Both Ctrl keys together change group.&lt;br /&gt;
  14  Control+Shift changes group.&lt;br /&gt;
  15  Alt+Control changes group.&lt;br /&gt;
  16  Alt+Shift changes group.&lt;br /&gt;
  17  Menu key changes group.&lt;br /&gt;
  18  Left Win-key changes group.&lt;br /&gt;
  19  Right Win-key changes group.&lt;br /&gt;
  20  Left Shift key changes group.&lt;br /&gt;
  21  Right Shift key changes group.&lt;br /&gt;
  22  Left Ctrl key changes group.&lt;br /&gt;
  23  Right Ctrl key changes group.&lt;br /&gt;
 &lt;br /&gt;
 Please select the option or just press enter if none&lt;br /&gt;
&lt;br /&gt;
    Third level choosers&lt;br /&gt;
 &lt;br /&gt;
   1  Press Right Control to choose 3rd level.&lt;br /&gt;
   2  Press Menu key to choose 3rd level.&lt;br /&gt;
   3  Press any of Win-keys to choose 3rd level.&lt;br /&gt;
   4  Press Left Win-key to choose 3rd level.&lt;br /&gt;
   5  Press Right Win-key to choose 3rd level.&lt;br /&gt;
   6  Press any of Alt keys to choose 3rd level.&lt;br /&gt;
   7  Press Left Alt key to choose 3rd level.&lt;br /&gt;
   8  Press Right Alt key to choose 3rd level.&lt;br /&gt;
 &lt;br /&gt;
 Please select the option or just press enter if none&lt;br /&gt;
&lt;br /&gt;
    Control key position&lt;br /&gt;
 &lt;br /&gt;
   1  Make CapsLock an additional Control.&lt;br /&gt;
   2  Swap Control and CapsLock.&lt;br /&gt;
   3  Control key at left of 'A'&lt;br /&gt;
   4  Control key at bottom left&lt;br /&gt;
   5  Right Control key works as Right Alt.&lt;br /&gt;
 &lt;br /&gt;
 Please select the option or just press enter if none&lt;br /&gt;
&lt;br /&gt;
    Use keyboard LED to show alternative group.&lt;br /&gt;
 &lt;br /&gt;
   1  NumLock LED shows alternative group.&lt;br /&gt;
   2  CapsLock LED shows alternative group.&lt;br /&gt;
   3  ScrollLock LED shows alternative group.&lt;br /&gt;
 &lt;br /&gt;
 Please select the option or just press enter if none&lt;br /&gt;
&lt;br /&gt;
    CapsLock key behavior&lt;br /&gt;
 &lt;br /&gt;
   1  CapsLock uses internal capitalization. Shift cancels CapsLock.&lt;br /&gt;
   2  CapsLock uses internal capitalization. Shift doesn't cancel CapsLock.&lt;br /&gt;
   3  CapsLock acts as Shift with locking. Shift cancels CapsLock.&lt;br /&gt;
   4  CapsLock acts as Shift with locking. Shift doesn't cancel CapsLock.&lt;br /&gt;
   5  CapsLock just locks the Shift modifier.&lt;br /&gt;
   6  CapsLock toggles normal capitalization of alphabetic characters.&lt;br /&gt;
   7  CapsLock toggles Shift so all keys are affected.&lt;br /&gt;
 &lt;br /&gt;
 Please select the option or just press enter if none&lt;br /&gt;
&lt;br /&gt;
    Alt/Win key behavior&lt;br /&gt;
 &lt;br /&gt;
   1  Add the standard behavior to Menu key.&lt;br /&gt;
   2  Alt and Meta are on the Alt keys (default).&lt;br /&gt;
   3  Meta is mapped to the Win-keys.&lt;br /&gt;
   4  Meta is mapped to the left Win-key.&lt;br /&gt;
   5  Super is mapped to the Win-keys (default).&lt;br /&gt;
   6  Hyper is mapped to the Win-keys.&lt;br /&gt;
   7  Alt is mapped to the right Win-key and Super to Menu.&lt;br /&gt;
 &lt;br /&gt;
 Please select the option or just press enter if none&lt;br /&gt;
&lt;br /&gt;
    key Compose key position&lt;br /&gt;
 &lt;br /&gt;
   1  Right Alt is Compose.&lt;br /&gt;
   2  Right Win-key is Compose.&lt;br /&gt;
   3  Menu is Compose.&lt;br /&gt;
   4  Right Ctrl is Compose.&lt;br /&gt;
 &lt;br /&gt;
 Please select the option or just press enter if none&lt;br /&gt;
&lt;br /&gt;
    Miscellaneous compatibility options&lt;br /&gt;
 &lt;br /&gt;
   1  Shift with numpad keys works as in MS Windows.&lt;br /&gt;
   2  Special keys (Ctrl+Alt+&amp;amp;lt;key&amp;amp;gt;) handled in a server.&lt;br /&gt;
 &lt;br /&gt;
 Please select the option or just press enter if none&lt;br /&gt;
&lt;br /&gt;
    Adding the EuroSign to certain keys&lt;br /&gt;
 &lt;br /&gt;
   1  Add the EuroSign to the E key.&lt;br /&gt;
   2  Add the EuroSign to the 5 key.&lt;br /&gt;
   3  Add the EuroSign to the 2 key.&lt;br /&gt;
 &lt;br /&gt;
 Please select the option or just press enter if none&lt;br /&gt;
&lt;br /&gt;
==Configurarea monitorului==&lt;br /&gt;
*'''Atenţie''': frecventele de linii si cadre sunt parametri critici pentru functionarea in regim stabil a unor modele de monitoare. Va rugam sa consultaţi manualul monitorului inainte de a configura aceste valori!&lt;br /&gt;
&lt;br /&gt;
 Now we want to set the specifications of the monitor. The two critical&lt;br /&gt;
 parameters are the vertical refresh rate, which is the rate at which the&lt;br /&gt;
 the whole screen is refreshed, and most importantly the horizontal sync rate,&lt;br /&gt;
 which is the rate at which scanlines are displayed.&lt;br /&gt;
 &lt;br /&gt;
 The valid range for horizontal sync and vertical sync should be documented&lt;br /&gt;
 in the manual of your monitor.&lt;br /&gt;
 &lt;br /&gt;
 Press enter to continue, or ctrl-c to abort.&lt;br /&gt;
&lt;br /&gt;
*Configurarea plajei de frecvente de linii (sincronizare orizontala) suportata de monitorul folosit:&lt;br /&gt;
&lt;br /&gt;
 You must indicate the horizontal sync range of your monitor. You can either&lt;br /&gt;
 select one of the predefined ranges below that correspond to industry-&lt;br /&gt;
 standard monitor types, or give a specific range.&lt;br /&gt;
 &lt;br /&gt;
 It is VERY IMPORTANT that you do not specify a monitor type with a horizontal&lt;br /&gt;
 sync range that is beyond the capabilities of your monitor. If in doubt,&lt;br /&gt;
 choose a conservative setting.&lt;br /&gt;
 &lt;br /&gt;
     hsync in kHz; monitor type with characteristic modes&lt;br /&gt;
  1  31.5; Standard VGA, 640x480 @ 60 Hz&lt;br /&gt;
  2  31.5 - 35.1; Super VGA, 800x600 @ 56 Hz&lt;br /&gt;
  3  31.5, 35.5; 8514 Compatible, 1024x768 @ 87 Hz interlaced (no 800x600)&lt;br /&gt;
  4  31.5, 35.15, 35.5; Super VGA, 1024x768 @ 87 Hz interlaced, 800x600 @ 56 Hz&lt;br /&gt;
  5  31.5 - 37.9; Extended Super VGA, 800x600 @ 60 Hz, 640x480 @ 72 Hz&lt;br /&gt;
  6  31.5 - 48.5; Non-Interlaced SVGA, 1024x768 @ 60 Hz, 800x600 @ 72 Hz&lt;br /&gt;
  7  31.5 - 57.0; High Frequency SVGA, 1024x768 @ 70 Hz&lt;br /&gt;
  8  31.5 - 64.3; Monitor that can do 1280x1024 @ 60 Hz&lt;br /&gt;
  9  31.5 - 79.0; Monitor that can do 1280x1024 @ 74 Hz&lt;br /&gt;
 10  31.5 - 82.0; Monitor that can do 1280x1024 @ 76 Hz&lt;br /&gt;
 11  Enter your own horizontal sync range&lt;br /&gt;
 &lt;br /&gt;
 Enter your choice (1-11):&lt;br /&gt;
&lt;br /&gt;
[11][Enter]&lt;br /&gt;
&lt;br /&gt;
 Please enter the horizontal sync range of your monitor, in the format used&lt;br /&gt;
 in the table of monitor types above. You can either specify one or more&lt;br /&gt;
 continuous ranges (e.g. 15-25, 30-50), or one or more fixed sync frequencies.&lt;br /&gt;
 &lt;br /&gt;
 Horizontal sync range:&lt;br /&gt;
&lt;br /&gt;
[Introduceţi plaja de frecvente de linii admisibila specificată în manualul monitorului]&lt;br /&gt;
&lt;br /&gt;
*Configurarea plajei de frecvente de cadre (sincronizare verticala) suportata de monitorul folosit:&lt;br /&gt;
&lt;br /&gt;
 You must indicate the vertical sync range of your monitor. You can either&lt;br /&gt;
 select one of the predefined ranges below that correspond to industry-&lt;br /&gt;
 standard monitor types, or give a specific range. For interlaced modes,&lt;br /&gt;
 the number that counts is the high one (e.g. 87 Hz rather than 43 Hz).&lt;br /&gt;
 &lt;br /&gt;
  1  50-70&lt;br /&gt;
  2  50-90&lt;br /&gt;
  3  50-100&lt;br /&gt;
  4  40-150&lt;br /&gt;
  5  Enter your own vertical sync range&lt;br /&gt;
 &lt;br /&gt;
 Enter your choice:&lt;br /&gt;
&lt;br /&gt;
[5][Enter]&lt;br /&gt;
&lt;br /&gt;
 Vertical sync range:&lt;br /&gt;
&lt;br /&gt;
[Introduceţi plaja de frecvente de cadre admisibila specificată în manualul monitorului]&lt;br /&gt;
&lt;br /&gt;
*Stabilirea unui nume generic pentru monitor&lt;br /&gt;
&lt;br /&gt;
 You must now enter a few identification/description strings, namely an&lt;br /&gt;
 identifier, a vendor name, and a model name. Just pressing enter will fill&lt;br /&gt;
 in default names.&lt;br /&gt;
 &lt;br /&gt;
 The strings are free-form, spaces are allowed.&lt;br /&gt;
 Enter an identifier for your monitor definition:&lt;br /&gt;
&lt;br /&gt;
[MyMonitor][Enter]&lt;br /&gt;
&lt;br /&gt;
==Configurarea plăcii video==&lt;br /&gt;
&lt;br /&gt;
*Alegerea tipului plăcii video&lt;br /&gt;
&lt;br /&gt;
 Now we must configure video card specific settings. At this point you can&lt;br /&gt;
 choose to make a selection out of a database of video card definitions.&lt;br /&gt;
 Because there can be variation in Ramdacs and clock generators even&lt;br /&gt;
 between cards of the same model, it is not sensible to blindly copy&lt;br /&gt;
 the settings (e.g. a Device section). For this reason, after you make a&lt;br /&gt;
 selection, you will still be asked about the components of the card, with&lt;br /&gt;
 the settings from the chosen database entry presented as a strong hint.&lt;br /&gt;
 &lt;br /&gt;
 The database entries include information about the chipset, what driver to&lt;br /&gt;
 run, the Ramdac and ClockChip, and comments that will be included in the&lt;br /&gt;
 Device section. However, a lot of definitions only hint about what driver&lt;br /&gt;
 to run (based on the chipset the card uses) and are untested.&lt;br /&gt;
 &lt;br /&gt;
 If you can't find your card in the database, there's nothing to worry about.&lt;br /&gt;
 You should only choose a database entry that is exactly the same model as&lt;br /&gt;
 your card; choosing one that looks similar is just a bad idea (e.g. a&lt;br /&gt;
 GemStone Snail 64 may be as different from a GemStone Snail 64+ in terms of&lt;br /&gt;
 hardware as can be).&lt;br /&gt;
 &lt;br /&gt;
 Do you want to look at the card database?&lt;br /&gt;
&lt;br /&gt;
[y]&lt;br /&gt;
&lt;br /&gt;
*Tipuri de plăci video&lt;br /&gt;
&lt;br /&gt;
   0  * Generic VESA compatible                         -&lt;br /&gt;
   1  * Generic VGA compatible                          -&lt;br /&gt;
   2  * Unsupported VGA compatible                      -&lt;br /&gt;
   3  ** 3DLabs, TI (generic)               [glint]     -&lt;br /&gt;
   4  ** 3Dfx (generic)                     [tdfx]      -&lt;br /&gt;
   5  ** ATI (generic)                      [ati]       -&lt;br /&gt;
   6  ** ATI Radeon (generic)               [radeon]    -&lt;br /&gt;
   7  ** ATI Rage 128 based (generic)       [r128]      -&lt;br /&gt;
   8  ** Alliance Pro Motion (generic)      [apm]       -&lt;br /&gt;
   9  ** Ark Logic (generic)                [ark]       -&lt;br /&gt;
  10  ** Chips and Technologies (generic)   [chips]     -&lt;br /&gt;
  11  ** Cirrus Logic (generic)             [cirrus]    -&lt;br /&gt;
  12  ** Cyrix MediaGX (generic)            [cyrix]     -&lt;br /&gt;
  13  ** DEC TGA (generic)                  [tga]       -&lt;br /&gt;
  14  ** Intel i740 (generic)               [i740]      -&lt;br /&gt;
  15  ** Intel i810 (generic)               [i810]      -&lt;br /&gt;
  16  ** Linux framebuffer (generic)        [fbdev]     -&lt;br /&gt;
  17  ** Matrox Graphics (generic)          [mga]       -&lt;br /&gt;
 &lt;br /&gt;
 Enter a number to choose the corresponding card definition.&lt;br /&gt;
 Press enter for the next page, q to continue configuration.&lt;br /&gt;
&lt;br /&gt;
[5][Enter]&lt;br /&gt;
&lt;br /&gt;
*Confirmarea selectării tipului plăcii video&lt;br /&gt;
&lt;br /&gt;
 Your selected card definition:&lt;br /&gt;
 &lt;br /&gt;
 Identifier: ** ATI (generic)                      [ati]&lt;br /&gt;
 Chipset:    -&lt;br /&gt;
 Driver:     ati&lt;br /&gt;
 &lt;br /&gt;
 Press enter to continue, or ctrl-c to abort.&lt;br /&gt;
&lt;br /&gt;
[Enter]&lt;br /&gt;
&lt;br /&gt;
*Setarea cantităţii de memorie a plăcii video&lt;br /&gt;
&lt;br /&gt;
 Now you must give information about your video card. This will be used for&lt;br /&gt;
 the &amp;quot;Device&amp;quot; section of your video card in xorg.conf.&lt;br /&gt;
 &lt;br /&gt;
 It is probably a good idea to use the same approximate amount as that detected&lt;br /&gt;
 by the server you intend to use. If you encounter problems that are due to the&lt;br /&gt;
 used server not supporting the amount memory you have, specify the maximum&lt;br /&gt;
 amount supported by the server.&lt;br /&gt;
 &lt;br /&gt;
 How much video memory do you have on your video card:&lt;br /&gt;
 &lt;br /&gt;
  1  256K&lt;br /&gt;
  2  512K&lt;br /&gt;
  3  1024K&lt;br /&gt;
  4  2048K&lt;br /&gt;
  5  4096K&lt;br /&gt;
  6  8192K&lt;br /&gt;
  7  16384K&lt;br /&gt;
  8  32768K&lt;br /&gt;
  9  65536K&lt;br /&gt;
 10  131072K&lt;br /&gt;
 11  262144K&lt;br /&gt;
 12  Other&lt;br /&gt;
 &lt;br /&gt;
 Enter your choice:&lt;br /&gt;
&lt;br /&gt;
[11][Enter]&lt;br /&gt;
&lt;br /&gt;
*Stabilirea denumirii plăcii video&lt;br /&gt;
&lt;br /&gt;
 You must now enter a few identification/description strings, namely an&lt;br /&gt;
 identifier, a vendor name, and a model name. Just pressing enter will fill&lt;br /&gt;
 in default names (possibly from a card definition).&lt;br /&gt;
 &lt;br /&gt;
 Your card definition is ** ATI (generic)                      [ati].&lt;br /&gt;
 &lt;br /&gt;
 The strings are free-form, spaces are allowed.&lt;br /&gt;
 Enter an identifier for your video card definition:&lt;br /&gt;
&lt;br /&gt;
[MyCard][Enter]&lt;br /&gt;
&lt;br /&gt;
==Setarea rezoluţiei monitorului==&lt;br /&gt;
&lt;br /&gt;
 For each depth, a list of modes (resolutions) is defined. The default&lt;br /&gt;
 resolution that the server will start-up with will be the first listed&lt;br /&gt;
 mode that can be supported by the monitor and card.&lt;br /&gt;
 Currently it is set to:&lt;br /&gt;
 &lt;br /&gt;
 &amp;quot;1280x1024&amp;quot; &amp;quot;1024x768&amp;quot; &amp;quot;800x600&amp;quot; &amp;quot;640x480&amp;quot; for 8-bit&lt;br /&gt;
 &amp;quot;1280x1024&amp;quot; &amp;quot;1024x768&amp;quot; &amp;quot;800x600&amp;quot; &amp;quot;640x480&amp;quot; for 16-bit&lt;br /&gt;
 &amp;quot;1280x1024&amp;quot; &amp;quot;1024x768&amp;quot; &amp;quot;800x600&amp;quot; &amp;quot;640x480&amp;quot; for 24-bit&lt;br /&gt;
 &lt;br /&gt;
 Modes that cannot be supported due to monitor or clock constraints will&lt;br /&gt;
 be automatically skipped by the server.&lt;br /&gt;
 &lt;br /&gt;
  1  Change the modes for 8-bit (256 colors)&lt;br /&gt;
  2  Change the modes for 16-bit (32K/64K colors)&lt;br /&gt;
  3  Change the modes for 24-bit (24-bit color)&lt;br /&gt;
  4  The modes are OK, continue.&lt;br /&gt;
 &lt;br /&gt;
 Enter your choice:&lt;br /&gt;
&lt;br /&gt;
[4][Enter] - dacă nu doriţi nici o modificare a rezoluţiei [[#Setarea adâncimii de culoare|salt]] la secţiunea &amp;quot;Setarea adâncimii de culoare&amp;quot;&lt;br /&gt;
&lt;br /&gt;
sau&lt;br /&gt;
&lt;br /&gt;
[1][Enter], apoi [2][Enter] şi [3][Enter], urmat de [4][Enter]&lt;br /&gt;
&lt;br /&gt;
*Exemplu de setare a rezoluţiei monitorului&lt;br /&gt;
&lt;br /&gt;
 Select modes from the following list:&lt;br /&gt;
 &lt;br /&gt;
  1  &amp;quot;640x400&amp;quot;&lt;br /&gt;
  2  &amp;quot;640x480&amp;quot;&lt;br /&gt;
  3  &amp;quot;800x600&amp;quot;&lt;br /&gt;
  4  &amp;quot;1024x768&amp;quot;&lt;br /&gt;
  5  &amp;quot;1280x1024&amp;quot;&lt;br /&gt;
  6  &amp;quot;320x200&amp;quot;&lt;br /&gt;
  7  &amp;quot;320x240&amp;quot;&lt;br /&gt;
  8  &amp;quot;400x300&amp;quot;&lt;br /&gt;
  9  &amp;quot;1152x864&amp;quot;&lt;br /&gt;
  a  &amp;quot;1600x1200&amp;quot;&lt;br /&gt;
  b  &amp;quot;1800x1400&amp;quot;&lt;br /&gt;
  c  &amp;quot;512x384&amp;quot;&lt;br /&gt;
  d  &amp;quot;1400x1050&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 Please type the digits corresponding to the modes that you want to select.&lt;br /&gt;
 For example, 432 selects &amp;quot;1024x768&amp;quot; &amp;quot;800x600&amp;quot; &amp;quot;640x480&amp;quot;, with a&lt;br /&gt;
 default mode of 1024x768.&lt;br /&gt;
 &lt;br /&gt;
 Which modes?&lt;br /&gt;
&lt;br /&gt;
[433][Enter] &lt;br /&gt;
&lt;br /&gt;
 You can have a virtual screen (desktop), which is screen area that is larger&lt;br /&gt;
 than the physical screen and which is panned by moving the mouse to the edge&lt;br /&gt;
 of the screen. If you don't want virtual desktop at a certain resolution,&lt;br /&gt;
 you cannot have modes listed that are larger. Each color depth can have a&lt;br /&gt;
 differently-sized virtual screen&lt;br /&gt;
 &lt;br /&gt;
 Please answer the following question with either 'y' or 'n'.&lt;br /&gt;
 Do you want a virtual screen that is larger than the physical screen?&lt;br /&gt;
 &lt;br /&gt;
[n][Enter]&lt;br /&gt;
&lt;br /&gt;
==Setarea adâncimii de culoare==&lt;br /&gt;
&lt;br /&gt;
 Please specify which color depth you want to use by default:&lt;br /&gt;
 &lt;br /&gt;
   1  1 bit (monochrome)&lt;br /&gt;
   2  4 bits (16 colors)&lt;br /&gt;
   3  8 bits (256 colors)&lt;br /&gt;
   4  16 bits (65536 colors)&lt;br /&gt;
   5  24 bits (16 million colors)&lt;br /&gt;
 &lt;br /&gt;
 Enter a number to choose the default depth. &lt;br /&gt;
&lt;br /&gt;
[4][Enter]&lt;br /&gt;
&lt;br /&gt;
==Salvarea modificărilor==&lt;br /&gt;
&lt;br /&gt;
 I am going to write the xorg.conf file now. Make sure you don't accidently&lt;br /&gt;
 overwrite a previously configured one.&lt;br /&gt;
 &lt;br /&gt;
 Shall I write it to /etc/X11/xorg.conf?&lt;br /&gt;
&lt;br /&gt;
[y][Enter]&lt;br /&gt;
&lt;br /&gt;
*Confirmarea scrierii fişierului de configurare&lt;br /&gt;
 &lt;br /&gt;
 File has been written. Take a look at it before starting an X server. Note that&lt;br /&gt;
 the xorg.conf file must be in one of the directories searched by the server&lt;br /&gt;
 (e.g. /etc/X11) in order to be used. Within the server press&lt;br /&gt;
 ctrl, alt and '+' simultaneously to cycle video resolutions. Pressing ctrl,&lt;br /&gt;
 alt and backspace simultaneously immediately exits the server (use if&lt;br /&gt;
 the monitor doesn't sync for a particular mode).&lt;br /&gt;
 &lt;br /&gt;
 For further configuration, refer to the xorg.conf(5x) manual page.&lt;br /&gt;
 &lt;br /&gt;
 root@TheLinux:~#&lt;br /&gt;
&lt;br /&gt;
==Fişierul /etc/X11/xorg.conf==&lt;br /&gt;
&lt;br /&gt;
[[Category:Pending]]&lt;/div&gt;</summary>
		<author><name>Csdexter</name></author>	</entry>

	<entry>
		<id>http://wiki.linux360.ro/index.php?title=Configurarea_X_%C3%83%C2%AEn_Slackware&amp;diff=3316</id>
		<title>Configurarea X Ã®n Slackware</title>
		<link rel="alternate" type="text/html" href="http://wiki.linux360.ro/index.php?title=Configurarea_X_%C3%83%C2%AEn_Slackware&amp;diff=3316"/>
				<updated>2006-12-18T17:32:45Z</updated>
		
		<summary type="html">&lt;p&gt;Csdexter: /* Configurarea tastaturii */ Adapted to Romanian terminology&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Această pagină este în lucru&lt;br /&gt;
&lt;br /&gt;
==Comanda xorgconfig==&lt;br /&gt;
&lt;br /&gt;
 This program will create a basic xorg.conf file, based on menu selections&lt;br /&gt;
 you make.  It will ask for a pathname when it is ready to write the file.&lt;br /&gt;
 &lt;br /&gt;
 The xorg.conf file usually resides in /etc/X11 or /usr/X11R6/etc/X11.  If&lt;br /&gt;
 no xorg.conf file is present there, Xorg will probe the system to&lt;br /&gt;
 autoconfigure itself.  You can run Xorg -configure to generate a xorg.conf&lt;br /&gt;
 file based on the results of autoconfiguration, or let this program&lt;br /&gt;
 produce a base xorg.conf file for your configuration, and fine-tune it.&lt;br /&gt;
 A sample xorg.conf file is also supplied with Xorg; it is configured&lt;br /&gt;
 for a standard VGA card and monitor with 640x480 resolution.&lt;br /&gt;
 &lt;br /&gt;
 There are also many chipset and card-specific options and settings available,&lt;br /&gt;
 but this program does not know about these. On some configurations some of&lt;br /&gt;
 these settings must be specified. Refer to the X driver man pages and the&lt;br /&gt;
 chipset-specific READMEs in /usr/X11R6/lib/X11/doc for further details.&lt;br /&gt;
 &lt;br /&gt;
 Before continuing with this program, make sure you know what video card&lt;br /&gt;
 you have, and preferably also the chipset it uses and the amount of video&lt;br /&gt;
 memory on your video card, as well as the specifications of your monitor.&lt;br /&gt;
 &lt;br /&gt;
 Press enter to continue, or ctrl-c to abort.&lt;br /&gt;
&lt;br /&gt;
[Enter]&lt;br /&gt;
&lt;br /&gt;
==Configurarea mouse-ului==&lt;br /&gt;
*Alegerea protocolului de comunicatie si a tipului dispozitivului de indicatie utilizat (in cele mai multe cazuri, un mouse)&lt;br /&gt;
&lt;br /&gt;
 First specify a mouse protocol type. Choose one from the following list:&lt;br /&gt;
 &lt;br /&gt;
  1.  Auto [Auto detect]&lt;br /&gt;
  2.  SysMouse [SysMouse]&lt;br /&gt;
  3.  MouseSystems [Mouse Systems (3-button protocol)]&lt;br /&gt;
  4.  PS/2 [PS/2 Mouse]&lt;br /&gt;
  5.  Microsoft [Microsoft compatible (2-button protocol)]&lt;br /&gt;
  6.  Busmouse [Bus Mouse]&lt;br /&gt;
  7.  IMPS/2 [IntelliMouse PS/2]&lt;br /&gt;
  8.  ExplorerPS/2 [Explorer PS/2]&lt;br /&gt;
  9.  GlidePointPS/2 [GlidePoint PS/2]&lt;br /&gt;
 10.  MouseManPlusPS/2 [MouseManPlus PS/2]&lt;br /&gt;
 11.  NetMousePS/2 [NetMouse PS/2]&lt;br /&gt;
 12.  NetScrollPS/2 [NetScroll PS/2]&lt;br /&gt;
 13.  ThinkingMousePS/2 [ThinkingMouse PS/2]&lt;br /&gt;
 14.  AceCad [AceCad]&lt;br /&gt;
 &lt;br /&gt;
 The recommended protocol is Auto. If you have a very old mouse&lt;br /&gt;
 or don't want OS support or auto detection, and you have a two-button&lt;br /&gt;
 or three-button serial mouse, it is most likely of type Microsoft.&lt;br /&gt;
 &lt;br /&gt;
 Enter a protocol number:&lt;br /&gt;
&lt;br /&gt;
[1][Enter]&lt;br /&gt;
&lt;br /&gt;
*Activarea emulării tastei din mijloc (a treia din punct de vedere uman, a doua din punct de vedere informatic) pentru dispozitivele dotate doar cu doua taste&lt;br /&gt;
&lt;br /&gt;
 If your mouse has only two buttons, it is recommended that you enable&lt;br /&gt;
 Emulate3Buttons.&lt;br /&gt;
 &lt;br /&gt;
 Please answer the following question with either 'y' or 'n'.&lt;br /&gt;
 Do you want to enable Emulate3Buttons?&lt;br /&gt;
&lt;br /&gt;
[n][Enter]&lt;br /&gt;
&lt;br /&gt;
*Specificarea inodului-dispozitiv (intrare din &amp;lt;tt&amp;gt;/dev&amp;lt;/tt&amp;gt;) ce corespunde portului fizic la care este conectat dispozitivul&lt;br /&gt;
&lt;br /&gt;
 Now give the full device name that the mouse is connected to, for example&lt;br /&gt;
 /dev/tty00. Just pressing enter will use the default, /dev/mouse.&lt;br /&gt;
 &lt;br /&gt;
 Mouse device:&lt;br /&gt;
&lt;br /&gt;
[Enter]&lt;br /&gt;
&lt;br /&gt;
==Configurarea tastaturii==&lt;br /&gt;
*Alegerea tipului constructiv şi a formei de asezare a tastelor pe tastatura&lt;br /&gt;
&lt;br /&gt;
 Please select one of the following keyboard types that is the better&lt;br /&gt;
 description of your keyboard. If nothing really matches,&lt;br /&gt;
 choose &amp;quot;Generic 104-key PC&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
   1  Generic 101-key PC&lt;br /&gt;
   2  Generic 102-key (Intl) PC&lt;br /&gt;
   3  Generic 104-key PC&lt;br /&gt;
   4  Generic 105-key (Intl) PC&lt;br /&gt;
   5  Dell 101-key PC&lt;br /&gt;
   6  Everex STEPnote&lt;br /&gt;
   7  Keytronic FlexPro&lt;br /&gt;
   8  Microsoft Natural&lt;br /&gt;
   9  Northgate OmniKey 101&lt;br /&gt;
  10  Winbook Model XP5&lt;br /&gt;
  11  Japanese 106-key&lt;br /&gt;
  12  PC-98xx Series&lt;br /&gt;
  13  A4Tech KB-21&lt;br /&gt;
  14  A4Tech KBS-8&lt;br /&gt;
  15  Brazilian ABNT2&lt;br /&gt;
  16  Acer AirKey V&lt;br /&gt;
 &lt;br /&gt;
 Enter a number to choose the keyboard.&lt;br /&gt;
 &lt;br /&gt;
 Press enter for the next page&lt;br /&gt;
&lt;br /&gt;
[1][Enter]&lt;br /&gt;
&lt;br /&gt;
   1  U.S. English&lt;br /&gt;
   2  Arabic&lt;br /&gt;
   3  Albania&lt;br /&gt;
   4  Armenia&lt;br /&gt;
   5  Azerbaijan&lt;br /&gt;
   6  Belarus&lt;br /&gt;
   7  Belgium&lt;br /&gt;
   8  Bangladesh&lt;br /&gt;
   9  India&lt;br /&gt;
  10  Bosnia and Herzegovina&lt;br /&gt;
  11  Brazil&lt;br /&gt;
  12  Bulgaria&lt;br /&gt;
  13  Myanmar&lt;br /&gt;
  14  Canada&lt;br /&gt;
  15  Croatia&lt;br /&gt;
  16  Czechia&lt;br /&gt;
  17  Denmark&lt;br /&gt;
  18  Netherlands&lt;br /&gt;
 &lt;br /&gt;
 Enter a number to choose the country.&lt;br /&gt;
 Press enter for the next page&lt;br /&gt;
&lt;br /&gt;
[1][Enter]&lt;br /&gt;
&lt;br /&gt;
 Please enter a variant name for 'us' layout. Or just press enter&lt;br /&gt;
 for default variant&lt;br /&gt;
&lt;br /&gt;
[Enter]&lt;br /&gt;
&lt;br /&gt;
*Activarea opţiunilor suplimentare (dacă nu doriţi activarea acestora, [[#Configurarea monitorului|continuati cu]] secţiunea &amp;quot;Configurare monitor&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
 Please answer the following question with either 'y' or 'n'.&lt;br /&gt;
 Do you want to select additional XKB options (group switcher,&lt;br /&gt;
 group indicator, etc.)?&lt;br /&gt;
&lt;br /&gt;
[y][Enter]&lt;br /&gt;
&lt;br /&gt;
    Group Shift/Lock behavior&lt;br /&gt;
 &lt;br /&gt;
   1  R-Alt switches group while pressed.&lt;br /&gt;
   2  Left Alt key switches group while pressed.&lt;br /&gt;
   3  Left Win-key switches group while pressed.&lt;br /&gt;
   4  Right Win-key switches group while pressed.&lt;br /&gt;
   5  Both Win-keys switch group while pressed.&lt;br /&gt;
   6  Right Ctrl key switches group while pressed.&lt;br /&gt;
   7  Right Alt key changes group.&lt;br /&gt;
   8  Left Alt key changes group.&lt;br /&gt;
   9  CapsLock key changes group.&lt;br /&gt;
  10  Shift+CapsLock changes group.&lt;br /&gt;
  11  Both Shift keys together change group.&lt;br /&gt;
  12  Both Alt keys together change group.&lt;br /&gt;
  13  Both Ctrl keys together change group.&lt;br /&gt;
  14  Control+Shift changes group.&lt;br /&gt;
  15  Alt+Control changes group.&lt;br /&gt;
  16  Alt+Shift changes group.&lt;br /&gt;
  17  Menu key changes group.&lt;br /&gt;
  18  Left Win-key changes group.&lt;br /&gt;
  19  Right Win-key changes group.&lt;br /&gt;
  20  Left Shift key changes group.&lt;br /&gt;
  21  Right Shift key changes group.&lt;br /&gt;
  22  Left Ctrl key changes group.&lt;br /&gt;
  23  Right Ctrl key changes group.&lt;br /&gt;
 &lt;br /&gt;
 Please select the option or just press enter if none&lt;br /&gt;
&lt;br /&gt;
    Third level choosers&lt;br /&gt;
 &lt;br /&gt;
   1  Press Right Control to choose 3rd level.&lt;br /&gt;
   2  Press Menu key to choose 3rd level.&lt;br /&gt;
   3  Press any of Win-keys to choose 3rd level.&lt;br /&gt;
   4  Press Left Win-key to choose 3rd level.&lt;br /&gt;
   5  Press Right Win-key to choose 3rd level.&lt;br /&gt;
   6  Press any of Alt keys to choose 3rd level.&lt;br /&gt;
   7  Press Left Alt key to choose 3rd level.&lt;br /&gt;
   8  Press Right Alt key to choose 3rd level.&lt;br /&gt;
 &lt;br /&gt;
 Please select the option or just press enter if none&lt;br /&gt;
&lt;br /&gt;
    Control key position&lt;br /&gt;
 &lt;br /&gt;
   1  Make CapsLock an additional Control.&lt;br /&gt;
   2  Swap Control and CapsLock.&lt;br /&gt;
   3  Control key at left of 'A'&lt;br /&gt;
   4  Control key at bottom left&lt;br /&gt;
   5  Right Control key works as Right Alt.&lt;br /&gt;
 &lt;br /&gt;
 Please select the option or just press enter if none&lt;br /&gt;
&lt;br /&gt;
    Use keyboard LED to show alternative group.&lt;br /&gt;
 &lt;br /&gt;
   1  NumLock LED shows alternative group.&lt;br /&gt;
   2  CapsLock LED shows alternative group.&lt;br /&gt;
   3  ScrollLock LED shows alternative group.&lt;br /&gt;
 &lt;br /&gt;
 Please select the option or just press enter if none&lt;br /&gt;
&lt;br /&gt;
    CapsLock key behavior&lt;br /&gt;
 &lt;br /&gt;
   1  CapsLock uses internal capitalization. Shift cancels CapsLock.&lt;br /&gt;
   2  CapsLock uses internal capitalization. Shift doesn't cancel CapsLock.&lt;br /&gt;
   3  CapsLock acts as Shift with locking. Shift cancels CapsLock.&lt;br /&gt;
   4  CapsLock acts as Shift with locking. Shift doesn't cancel CapsLock.&lt;br /&gt;
   5  CapsLock just locks the Shift modifier.&lt;br /&gt;
   6  CapsLock toggles normal capitalization of alphabetic characters.&lt;br /&gt;
   7  CapsLock toggles Shift so all keys are affected.&lt;br /&gt;
 &lt;br /&gt;
 Please select the option or just press enter if none&lt;br /&gt;
&lt;br /&gt;
    Alt/Win key behavior&lt;br /&gt;
 &lt;br /&gt;
   1  Add the standard behavior to Menu key.&lt;br /&gt;
   2  Alt and Meta are on the Alt keys (default).&lt;br /&gt;
   3  Meta is mapped to the Win-keys.&lt;br /&gt;
   4  Meta is mapped to the left Win-key.&lt;br /&gt;
   5  Super is mapped to the Win-keys (default).&lt;br /&gt;
   6  Hyper is mapped to the Win-keys.&lt;br /&gt;
   7  Alt is mapped to the right Win-key and Super to Menu.&lt;br /&gt;
 &lt;br /&gt;
 Please select the option or just press enter if none&lt;br /&gt;
&lt;br /&gt;
    key Compose key position&lt;br /&gt;
 &lt;br /&gt;
   1  Right Alt is Compose.&lt;br /&gt;
   2  Right Win-key is Compose.&lt;br /&gt;
   3  Menu is Compose.&lt;br /&gt;
   4  Right Ctrl is Compose.&lt;br /&gt;
 &lt;br /&gt;
 Please select the option or just press enter if none&lt;br /&gt;
&lt;br /&gt;
    Miscellaneous compatibility options&lt;br /&gt;
 &lt;br /&gt;
   1  Shift with numpad keys works as in MS Windows.&lt;br /&gt;
   2  Special keys (Ctrl+Alt+&amp;amp;lt;key&amp;amp;gt;) handled in a server.&lt;br /&gt;
 &lt;br /&gt;
 Please select the option or just press enter if none&lt;br /&gt;
&lt;br /&gt;
    Adding the EuroSign to certain keys&lt;br /&gt;
 &lt;br /&gt;
   1  Add the EuroSign to the E key.&lt;br /&gt;
   2  Add the EuroSign to the 5 key.&lt;br /&gt;
   3  Add the EuroSign to the 2 key.&lt;br /&gt;
 &lt;br /&gt;
 Please select the option or just press enter if none&lt;br /&gt;
&lt;br /&gt;
==Configurarea monitorului==&lt;br /&gt;
*Atenţionare: parametri critici - rata de refresh verticală şi orizontală. Citiţi manualul monitorului!&lt;br /&gt;
&lt;br /&gt;
 Now we want to set the specifications of the monitor. The two critical&lt;br /&gt;
 parameters are the vertical refresh rate, which is the rate at which the&lt;br /&gt;
 the whole screen is refreshed, and most importantly the horizontal sync rate,&lt;br /&gt;
 which is the rate at which scanlines are displayed.&lt;br /&gt;
 &lt;br /&gt;
 The valid range for horizontal sync and vertical sync should be documented&lt;br /&gt;
 in the manual of your monitor.&lt;br /&gt;
 &lt;br /&gt;
 Press enter to continue, or ctrl-c to abort.&lt;br /&gt;
&lt;br /&gt;
*Setarea ratei de refresh orizontale&lt;br /&gt;
&lt;br /&gt;
 You must indicate the horizontal sync range of your monitor. You can either&lt;br /&gt;
 select one of the predefined ranges below that correspond to industry-&lt;br /&gt;
 standard monitor types, or give a specific range.&lt;br /&gt;
 &lt;br /&gt;
 It is VERY IMPORTANT that you do not specify a monitor type with a horizontal&lt;br /&gt;
 sync range that is beyond the capabilities of your monitor. If in doubt,&lt;br /&gt;
 choose a conservative setting.&lt;br /&gt;
 &lt;br /&gt;
     hsync in kHz; monitor type with characteristic modes&lt;br /&gt;
  1  31.5; Standard VGA, 640x480 @ 60 Hz&lt;br /&gt;
  2  31.5 - 35.1; Super VGA, 800x600 @ 56 Hz&lt;br /&gt;
  3  31.5, 35.5; 8514 Compatible, 1024x768 @ 87 Hz interlaced (no 800x600)&lt;br /&gt;
  4  31.5, 35.15, 35.5; Super VGA, 1024x768 @ 87 Hz interlaced, 800x600 @ 56 Hz&lt;br /&gt;
  5  31.5 - 37.9; Extended Super VGA, 800x600 @ 60 Hz, 640x480 @ 72 Hz&lt;br /&gt;
  6  31.5 - 48.5; Non-Interlaced SVGA, 1024x768 @ 60 Hz, 800x600 @ 72 Hz&lt;br /&gt;
  7  31.5 - 57.0; High Frequency SVGA, 1024x768 @ 70 Hz&lt;br /&gt;
  8  31.5 - 64.3; Monitor that can do 1280x1024 @ 60 Hz&lt;br /&gt;
  9  31.5 - 79.0; Monitor that can do 1280x1024 @ 74 Hz&lt;br /&gt;
 10  31.5 - 82.0; Monitor that can do 1280x1024 @ 76 Hz&lt;br /&gt;
 11  Enter your own horizontal sync range&lt;br /&gt;
 &lt;br /&gt;
 Enter your choice (1-11):&lt;br /&gt;
&lt;br /&gt;
[11][Enter]&lt;br /&gt;
&lt;br /&gt;
 Please enter the horizontal sync range of your monitor, in the format used&lt;br /&gt;
 in the table of monitor types above. You can either specify one or more&lt;br /&gt;
 continuous ranges (e.g. 15-25, 30-50), or one or more fixed sync frequencies.&lt;br /&gt;
 &lt;br /&gt;
 Horizontal sync range:&lt;br /&gt;
&lt;br /&gt;
[Introduceţi rata de refresh orizontală specificată în manualul monitorului]&lt;br /&gt;
&lt;br /&gt;
*Setarea ratei de refresh verticale&lt;br /&gt;
&lt;br /&gt;
 You must indicate the vertical sync range of your monitor. You can either&lt;br /&gt;
 select one of the predefined ranges below that correspond to industry-&lt;br /&gt;
 standard monitor types, or give a specific range. For interlaced modes,&lt;br /&gt;
 the number that counts is the high one (e.g. 87 Hz rather than 43 Hz).&lt;br /&gt;
 &lt;br /&gt;
  1  50-70&lt;br /&gt;
  2  50-90&lt;br /&gt;
  3  50-100&lt;br /&gt;
  4  40-150&lt;br /&gt;
  5  Enter your own vertical sync range&lt;br /&gt;
 &lt;br /&gt;
 Enter your choice:&lt;br /&gt;
&lt;br /&gt;
[5][Enter]&lt;br /&gt;
&lt;br /&gt;
 Vertical sync range:&lt;br /&gt;
&lt;br /&gt;
[Introduceţi rata de refresh verticală specificată în manualul monitorului]&lt;br /&gt;
&lt;br /&gt;
*Stabilirea unui nume generic pentru monitor&lt;br /&gt;
&lt;br /&gt;
 You must now enter a few identification/description strings, namely an&lt;br /&gt;
 identifier, a vendor name, and a model name. Just pressing enter will fill&lt;br /&gt;
 in default names.&lt;br /&gt;
 &lt;br /&gt;
 The strings are free-form, spaces are allowed.&lt;br /&gt;
 Enter an identifier for your monitor definition:&lt;br /&gt;
&lt;br /&gt;
[MyMonitor][Enter]&lt;br /&gt;
&lt;br /&gt;
==Configurarea plăcii video==&lt;br /&gt;
&lt;br /&gt;
*Alegerea tipului plăcii video&lt;br /&gt;
&lt;br /&gt;
 Now we must configure video card specific settings. At this point you can&lt;br /&gt;
 choose to make a selection out of a database of video card definitions.&lt;br /&gt;
 Because there can be variation in Ramdacs and clock generators even&lt;br /&gt;
 between cards of the same model, it is not sensible to blindly copy&lt;br /&gt;
 the settings (e.g. a Device section). For this reason, after you make a&lt;br /&gt;
 selection, you will still be asked about the components of the card, with&lt;br /&gt;
 the settings from the chosen database entry presented as a strong hint.&lt;br /&gt;
 &lt;br /&gt;
 The database entries include information about the chipset, what driver to&lt;br /&gt;
 run, the Ramdac and ClockChip, and comments that will be included in the&lt;br /&gt;
 Device section. However, a lot of definitions only hint about what driver&lt;br /&gt;
 to run (based on the chipset the card uses) and are untested.&lt;br /&gt;
 &lt;br /&gt;
 If you can't find your card in the database, there's nothing to worry about.&lt;br /&gt;
 You should only choose a database entry that is exactly the same model as&lt;br /&gt;
 your card; choosing one that looks similar is just a bad idea (e.g. a&lt;br /&gt;
 GemStone Snail 64 may be as different from a GemStone Snail 64+ in terms of&lt;br /&gt;
 hardware as can be).&lt;br /&gt;
 &lt;br /&gt;
 Do you want to look at the card database?&lt;br /&gt;
&lt;br /&gt;
[y]&lt;br /&gt;
&lt;br /&gt;
*Tipuri de plăci video&lt;br /&gt;
&lt;br /&gt;
   0  * Generic VESA compatible                         -&lt;br /&gt;
   1  * Generic VGA compatible                          -&lt;br /&gt;
   2  * Unsupported VGA compatible                      -&lt;br /&gt;
   3  ** 3DLabs, TI (generic)               [glint]     -&lt;br /&gt;
   4  ** 3Dfx (generic)                     [tdfx]      -&lt;br /&gt;
   5  ** ATI (generic)                      [ati]       -&lt;br /&gt;
   6  ** ATI Radeon (generic)               [radeon]    -&lt;br /&gt;
   7  ** ATI Rage 128 based (generic)       [r128]      -&lt;br /&gt;
   8  ** Alliance Pro Motion (generic)      [apm]       -&lt;br /&gt;
   9  ** Ark Logic (generic)                [ark]       -&lt;br /&gt;
  10  ** Chips and Technologies (generic)   [chips]     -&lt;br /&gt;
  11  ** Cirrus Logic (generic)             [cirrus]    -&lt;br /&gt;
  12  ** Cyrix MediaGX (generic)            [cyrix]     -&lt;br /&gt;
  13  ** DEC TGA (generic)                  [tga]       -&lt;br /&gt;
  14  ** Intel i740 (generic)               [i740]      -&lt;br /&gt;
  15  ** Intel i810 (generic)               [i810]      -&lt;br /&gt;
  16  ** Linux framebuffer (generic)        [fbdev]     -&lt;br /&gt;
  17  ** Matrox Graphics (generic)          [mga]       -&lt;br /&gt;
 &lt;br /&gt;
 Enter a number to choose the corresponding card definition.&lt;br /&gt;
 Press enter for the next page, q to continue configuration.&lt;br /&gt;
&lt;br /&gt;
[5][Enter]&lt;br /&gt;
&lt;br /&gt;
*Confirmarea selectării tipului plăcii video&lt;br /&gt;
&lt;br /&gt;
 Your selected card definition:&lt;br /&gt;
 &lt;br /&gt;
 Identifier: ** ATI (generic)                      [ati]&lt;br /&gt;
 Chipset:    -&lt;br /&gt;
 Driver:     ati&lt;br /&gt;
 &lt;br /&gt;
 Press enter to continue, or ctrl-c to abort.&lt;br /&gt;
&lt;br /&gt;
[Enter]&lt;br /&gt;
&lt;br /&gt;
*Setarea cantităţii de memorie a plăcii video&lt;br /&gt;
&lt;br /&gt;
 Now you must give information about your video card. This will be used for&lt;br /&gt;
 the &amp;quot;Device&amp;quot; section of your video card in xorg.conf.&lt;br /&gt;
 &lt;br /&gt;
 It is probably a good idea to use the same approximate amount as that detected&lt;br /&gt;
 by the server you intend to use. If you encounter problems that are due to the&lt;br /&gt;
 used server not supporting the amount memory you have, specify the maximum&lt;br /&gt;
 amount supported by the server.&lt;br /&gt;
 &lt;br /&gt;
 How much video memory do you have on your video card:&lt;br /&gt;
 &lt;br /&gt;
  1  256K&lt;br /&gt;
  2  512K&lt;br /&gt;
  3  1024K&lt;br /&gt;
  4  2048K&lt;br /&gt;
  5  4096K&lt;br /&gt;
  6  8192K&lt;br /&gt;
  7  16384K&lt;br /&gt;
  8  32768K&lt;br /&gt;
  9  65536K&lt;br /&gt;
 10  131072K&lt;br /&gt;
 11  262144K&lt;br /&gt;
 12  Other&lt;br /&gt;
 &lt;br /&gt;
 Enter your choice:&lt;br /&gt;
&lt;br /&gt;
[11][Enter]&lt;br /&gt;
&lt;br /&gt;
*Stabilirea denumirii plăcii video&lt;br /&gt;
&lt;br /&gt;
 You must now enter a few identification/description strings, namely an&lt;br /&gt;
 identifier, a vendor name, and a model name. Just pressing enter will fill&lt;br /&gt;
 in default names (possibly from a card definition).&lt;br /&gt;
 &lt;br /&gt;
 Your card definition is ** ATI (generic)                      [ati].&lt;br /&gt;
 &lt;br /&gt;
 The strings are free-form, spaces are allowed.&lt;br /&gt;
 Enter an identifier for your video card definition:&lt;br /&gt;
&lt;br /&gt;
[MyCard][Enter]&lt;br /&gt;
&lt;br /&gt;
==Setarea rezoluţiei monitorului==&lt;br /&gt;
&lt;br /&gt;
 For each depth, a list of modes (resolutions) is defined. The default&lt;br /&gt;
 resolution that the server will start-up with will be the first listed&lt;br /&gt;
 mode that can be supported by the monitor and card.&lt;br /&gt;
 Currently it is set to:&lt;br /&gt;
 &lt;br /&gt;
 &amp;quot;1280x1024&amp;quot; &amp;quot;1024x768&amp;quot; &amp;quot;800x600&amp;quot; &amp;quot;640x480&amp;quot; for 8-bit&lt;br /&gt;
 &amp;quot;1280x1024&amp;quot; &amp;quot;1024x768&amp;quot; &amp;quot;800x600&amp;quot; &amp;quot;640x480&amp;quot; for 16-bit&lt;br /&gt;
 &amp;quot;1280x1024&amp;quot; &amp;quot;1024x768&amp;quot; &amp;quot;800x600&amp;quot; &amp;quot;640x480&amp;quot; for 24-bit&lt;br /&gt;
 &lt;br /&gt;
 Modes that cannot be supported due to monitor or clock constraints will&lt;br /&gt;
 be automatically skipped by the server.&lt;br /&gt;
 &lt;br /&gt;
  1  Change the modes for 8-bit (256 colors)&lt;br /&gt;
  2  Change the modes for 16-bit (32K/64K colors)&lt;br /&gt;
  3  Change the modes for 24-bit (24-bit color)&lt;br /&gt;
  4  The modes are OK, continue.&lt;br /&gt;
 &lt;br /&gt;
 Enter your choice:&lt;br /&gt;
&lt;br /&gt;
[4][Enter] - dacă nu doriţi nici o modificare a rezoluţiei [[#Setarea adâncimii de culoare|salt]] la secţiunea &amp;quot;Setarea adâncimii de culoare&amp;quot;&lt;br /&gt;
&lt;br /&gt;
sau&lt;br /&gt;
&lt;br /&gt;
[1][Enter], apoi [2][Enter] şi [3][Enter], urmat de [4][Enter]&lt;br /&gt;
&lt;br /&gt;
*Exemplu de setare a rezoluţiei monitorului&lt;br /&gt;
&lt;br /&gt;
 Select modes from the following list:&lt;br /&gt;
 &lt;br /&gt;
  1  &amp;quot;640x400&amp;quot;&lt;br /&gt;
  2  &amp;quot;640x480&amp;quot;&lt;br /&gt;
  3  &amp;quot;800x600&amp;quot;&lt;br /&gt;
  4  &amp;quot;1024x768&amp;quot;&lt;br /&gt;
  5  &amp;quot;1280x1024&amp;quot;&lt;br /&gt;
  6  &amp;quot;320x200&amp;quot;&lt;br /&gt;
  7  &amp;quot;320x240&amp;quot;&lt;br /&gt;
  8  &amp;quot;400x300&amp;quot;&lt;br /&gt;
  9  &amp;quot;1152x864&amp;quot;&lt;br /&gt;
  a  &amp;quot;1600x1200&amp;quot;&lt;br /&gt;
  b  &amp;quot;1800x1400&amp;quot;&lt;br /&gt;
  c  &amp;quot;512x384&amp;quot;&lt;br /&gt;
  d  &amp;quot;1400x1050&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 Please type the digits corresponding to the modes that you want to select.&lt;br /&gt;
 For example, 432 selects &amp;quot;1024x768&amp;quot; &amp;quot;800x600&amp;quot; &amp;quot;640x480&amp;quot;, with a&lt;br /&gt;
 default mode of 1024x768.&lt;br /&gt;
 &lt;br /&gt;
 Which modes?&lt;br /&gt;
&lt;br /&gt;
[433][Enter] &lt;br /&gt;
&lt;br /&gt;
 You can have a virtual screen (desktop), which is screen area that is larger&lt;br /&gt;
 than the physical screen and which is panned by moving the mouse to the edge&lt;br /&gt;
 of the screen. If you don't want virtual desktop at a certain resolution,&lt;br /&gt;
 you cannot have modes listed that are larger. Each color depth can have a&lt;br /&gt;
 differently-sized virtual screen&lt;br /&gt;
 &lt;br /&gt;
 Please answer the following question with either 'y' or 'n'.&lt;br /&gt;
 Do you want a virtual screen that is larger than the physical screen?&lt;br /&gt;
 &lt;br /&gt;
[n][Enter]&lt;br /&gt;
&lt;br /&gt;
==Setarea adâncimii de culoare==&lt;br /&gt;
&lt;br /&gt;
 Please specify which color depth you want to use by default:&lt;br /&gt;
 &lt;br /&gt;
   1  1 bit (monochrome)&lt;br /&gt;
   2  4 bits (16 colors)&lt;br /&gt;
   3  8 bits (256 colors)&lt;br /&gt;
   4  16 bits (65536 colors)&lt;br /&gt;
   5  24 bits (16 million colors)&lt;br /&gt;
 &lt;br /&gt;
 Enter a number to choose the default depth. &lt;br /&gt;
&lt;br /&gt;
[4][Enter]&lt;br /&gt;
&lt;br /&gt;
==Salvarea modificărilor==&lt;br /&gt;
&lt;br /&gt;
 I am going to write the xorg.conf file now. Make sure you don't accidently&lt;br /&gt;
 overwrite a previously configured one.&lt;br /&gt;
 &lt;br /&gt;
 Shall I write it to /etc/X11/xorg.conf?&lt;br /&gt;
&lt;br /&gt;
[y][Enter]&lt;br /&gt;
&lt;br /&gt;
*Confirmarea scrierii fişierului de configurare&lt;br /&gt;
 &lt;br /&gt;
 File has been written. Take a look at it before starting an X server. Note that&lt;br /&gt;
 the xorg.conf file must be in one of the directories searched by the server&lt;br /&gt;
 (e.g. /etc/X11) in order to be used. Within the server press&lt;br /&gt;
 ctrl, alt and '+' simultaneously to cycle video resolutions. Pressing ctrl,&lt;br /&gt;
 alt and backspace simultaneously immediately exits the server (use if&lt;br /&gt;
 the monitor doesn't sync for a particular mode).&lt;br /&gt;
 &lt;br /&gt;
 For further configuration, refer to the xorg.conf(5x) manual page.&lt;br /&gt;
 &lt;br /&gt;
 root@TheLinux:~#&lt;br /&gt;
&lt;br /&gt;
==Fişierul /etc/X11/xorg.conf==&lt;br /&gt;
&lt;br /&gt;
[[Category:Pending]]&lt;/div&gt;</summary>
		<author><name>Csdexter</name></author>	</entry>

	<entry>
		<id>http://wiki.linux360.ro/index.php?title=Configurarea_X_%C3%83%C2%AEn_Slackware&amp;diff=3315</id>
		<title>Configurarea X Ã®n Slackware</title>
		<link rel="alternate" type="text/html" href="http://wiki.linux360.ro/index.php?title=Configurarea_X_%C3%83%C2%AEn_Slackware&amp;diff=3315"/>
				<updated>2006-12-18T17:31:06Z</updated>
		
		<summary type="html">&lt;p&gt;Csdexter: /* Configurarea mouse-ului */ Adapted to Romanian terminology&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Această pagină este în lucru&lt;br /&gt;
&lt;br /&gt;
==Comanda xorgconfig==&lt;br /&gt;
&lt;br /&gt;
 This program will create a basic xorg.conf file, based on menu selections&lt;br /&gt;
 you make.  It will ask for a pathname when it is ready to write the file.&lt;br /&gt;
 &lt;br /&gt;
 The xorg.conf file usually resides in /etc/X11 or /usr/X11R6/etc/X11.  If&lt;br /&gt;
 no xorg.conf file is present there, Xorg will probe the system to&lt;br /&gt;
 autoconfigure itself.  You can run Xorg -configure to generate a xorg.conf&lt;br /&gt;
 file based on the results of autoconfiguration, or let this program&lt;br /&gt;
 produce a base xorg.conf file for your configuration, and fine-tune it.&lt;br /&gt;
 A sample xorg.conf file is also supplied with Xorg; it is configured&lt;br /&gt;
 for a standard VGA card and monitor with 640x480 resolution.&lt;br /&gt;
 &lt;br /&gt;
 There are also many chipset and card-specific options and settings available,&lt;br /&gt;
 but this program does not know about these. On some configurations some of&lt;br /&gt;
 these settings must be specified. Refer to the X driver man pages and the&lt;br /&gt;
 chipset-specific READMEs in /usr/X11R6/lib/X11/doc for further details.&lt;br /&gt;
 &lt;br /&gt;
 Before continuing with this program, make sure you know what video card&lt;br /&gt;
 you have, and preferably also the chipset it uses and the amount of video&lt;br /&gt;
 memory on your video card, as well as the specifications of your monitor.&lt;br /&gt;
 &lt;br /&gt;
 Press enter to continue, or ctrl-c to abort.&lt;br /&gt;
&lt;br /&gt;
[Enter]&lt;br /&gt;
&lt;br /&gt;
==Configurarea mouse-ului==&lt;br /&gt;
*Alegerea protocolului de comunicatie si a tipului dispozitivului de indicatie utilizat (in cele mai multe cazuri, un mouse)&lt;br /&gt;
&lt;br /&gt;
 First specify a mouse protocol type. Choose one from the following list:&lt;br /&gt;
 &lt;br /&gt;
  1.  Auto [Auto detect]&lt;br /&gt;
  2.  SysMouse [SysMouse]&lt;br /&gt;
  3.  MouseSystems [Mouse Systems (3-button protocol)]&lt;br /&gt;
  4.  PS/2 [PS/2 Mouse]&lt;br /&gt;
  5.  Microsoft [Microsoft compatible (2-button protocol)]&lt;br /&gt;
  6.  Busmouse [Bus Mouse]&lt;br /&gt;
  7.  IMPS/2 [IntelliMouse PS/2]&lt;br /&gt;
  8.  ExplorerPS/2 [Explorer PS/2]&lt;br /&gt;
  9.  GlidePointPS/2 [GlidePoint PS/2]&lt;br /&gt;
 10.  MouseManPlusPS/2 [MouseManPlus PS/2]&lt;br /&gt;
 11.  NetMousePS/2 [NetMouse PS/2]&lt;br /&gt;
 12.  NetScrollPS/2 [NetScroll PS/2]&lt;br /&gt;
 13.  ThinkingMousePS/2 [ThinkingMouse PS/2]&lt;br /&gt;
 14.  AceCad [AceCad]&lt;br /&gt;
 &lt;br /&gt;
 The recommended protocol is Auto. If you have a very old mouse&lt;br /&gt;
 or don't want OS support or auto detection, and you have a two-button&lt;br /&gt;
 or three-button serial mouse, it is most likely of type Microsoft.&lt;br /&gt;
 &lt;br /&gt;
 Enter a protocol number:&lt;br /&gt;
&lt;br /&gt;
[1][Enter]&lt;br /&gt;
&lt;br /&gt;
*Activarea emulării tastei din mijloc (a treia din punct de vedere uman, a doua din punct de vedere informatic) pentru dispozitivele dotate doar cu doua taste&lt;br /&gt;
&lt;br /&gt;
 If your mouse has only two buttons, it is recommended that you enable&lt;br /&gt;
 Emulate3Buttons.&lt;br /&gt;
 &lt;br /&gt;
 Please answer the following question with either 'y' or 'n'.&lt;br /&gt;
 Do you want to enable Emulate3Buttons?&lt;br /&gt;
&lt;br /&gt;
[n][Enter]&lt;br /&gt;
&lt;br /&gt;
*Specificarea inodului-dispozitiv (intrare din &amp;lt;tt&amp;gt;/dev&amp;lt;/tt&amp;gt;) ce corespunde portului fizic la care este conectat dispozitivul&lt;br /&gt;
&lt;br /&gt;
 Now give the full device name that the mouse is connected to, for example&lt;br /&gt;
 /dev/tty00. Just pressing enter will use the default, /dev/mouse.&lt;br /&gt;
 &lt;br /&gt;
 Mouse device:&lt;br /&gt;
&lt;br /&gt;
[Enter]&lt;br /&gt;
&lt;br /&gt;
==Configurarea tastaturii==&lt;br /&gt;
*Alegerea tipului şi layout-ului tastaturii&lt;br /&gt;
&lt;br /&gt;
 Please select one of the following keyboard types that is the better&lt;br /&gt;
 description of your keyboard. If nothing really matches,&lt;br /&gt;
 choose &amp;quot;Generic 104-key PC&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
   1  Generic 101-key PC&lt;br /&gt;
   2  Generic 102-key (Intl) PC&lt;br /&gt;
   3  Generic 104-key PC&lt;br /&gt;
   4  Generic 105-key (Intl) PC&lt;br /&gt;
   5  Dell 101-key PC&lt;br /&gt;
   6  Everex STEPnote&lt;br /&gt;
   7  Keytronic FlexPro&lt;br /&gt;
   8  Microsoft Natural&lt;br /&gt;
   9  Northgate OmniKey 101&lt;br /&gt;
  10  Winbook Model XP5&lt;br /&gt;
  11  Japanese 106-key&lt;br /&gt;
  12  PC-98xx Series&lt;br /&gt;
  13  A4Tech KB-21&lt;br /&gt;
  14  A4Tech KBS-8&lt;br /&gt;
  15  Brazilian ABNT2&lt;br /&gt;
  16  Acer AirKey V&lt;br /&gt;
 &lt;br /&gt;
 Enter a number to choose the keyboard.&lt;br /&gt;
 &lt;br /&gt;
 Press enter for the next page&lt;br /&gt;
&lt;br /&gt;
[1][Enter]&lt;br /&gt;
&lt;br /&gt;
   1  U.S. English&lt;br /&gt;
   2  Arabic&lt;br /&gt;
   3  Albania&lt;br /&gt;
   4  Armenia&lt;br /&gt;
   5  Azerbaijan&lt;br /&gt;
   6  Belarus&lt;br /&gt;
   7  Belgium&lt;br /&gt;
   8  Bangladesh&lt;br /&gt;
   9  India&lt;br /&gt;
  10  Bosnia and Herzegovina&lt;br /&gt;
  11  Brazil&lt;br /&gt;
  12  Bulgaria&lt;br /&gt;
  13  Myanmar&lt;br /&gt;
  14  Canada&lt;br /&gt;
  15  Croatia&lt;br /&gt;
  16  Czechia&lt;br /&gt;
  17  Denmark&lt;br /&gt;
  18  Netherlands&lt;br /&gt;
 &lt;br /&gt;
 Enter a number to choose the country.&lt;br /&gt;
 Press enter for the next page&lt;br /&gt;
&lt;br /&gt;
[1][Enter]&lt;br /&gt;
&lt;br /&gt;
 Please enter a variant name for 'us' layout. Or just press enter&lt;br /&gt;
 for default variant&lt;br /&gt;
&lt;br /&gt;
[Enter]&lt;br /&gt;
&lt;br /&gt;
*Activarea opţiunilor suplimentare (dacă nu doriţi activarea acestora, [[#Configurarea monitorului|salt]] la secţiunea &amp;quot;Configurare monitor&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
 Please answer the following question with either 'y' or 'n'.&lt;br /&gt;
 Do you want to select additional XKB options (group switcher,&lt;br /&gt;
 group indicator, etc.)?&lt;br /&gt;
&lt;br /&gt;
[y][Enter]&lt;br /&gt;
&lt;br /&gt;
    Group Shift/Lock behavior&lt;br /&gt;
 &lt;br /&gt;
   1  R-Alt switches group while pressed.&lt;br /&gt;
   2  Left Alt key switches group while pressed.&lt;br /&gt;
   3  Left Win-key switches group while pressed.&lt;br /&gt;
   4  Right Win-key switches group while pressed.&lt;br /&gt;
   5  Both Win-keys switch group while pressed.&lt;br /&gt;
   6  Right Ctrl key switches group while pressed.&lt;br /&gt;
   7  Right Alt key changes group.&lt;br /&gt;
   8  Left Alt key changes group.&lt;br /&gt;
   9  CapsLock key changes group.&lt;br /&gt;
  10  Shift+CapsLock changes group.&lt;br /&gt;
  11  Both Shift keys together change group.&lt;br /&gt;
  12  Both Alt keys together change group.&lt;br /&gt;
  13  Both Ctrl keys together change group.&lt;br /&gt;
  14  Control+Shift changes group.&lt;br /&gt;
  15  Alt+Control changes group.&lt;br /&gt;
  16  Alt+Shift changes group.&lt;br /&gt;
  17  Menu key changes group.&lt;br /&gt;
  18  Left Win-key changes group.&lt;br /&gt;
  19  Right Win-key changes group.&lt;br /&gt;
  20  Left Shift key changes group.&lt;br /&gt;
  21  Right Shift key changes group.&lt;br /&gt;
  22  Left Ctrl key changes group.&lt;br /&gt;
  23  Right Ctrl key changes group.&lt;br /&gt;
 &lt;br /&gt;
 Please select the option or just press enter if none&lt;br /&gt;
&lt;br /&gt;
    Third level choosers&lt;br /&gt;
 &lt;br /&gt;
   1  Press Right Control to choose 3rd level.&lt;br /&gt;
   2  Press Menu key to choose 3rd level.&lt;br /&gt;
   3  Press any of Win-keys to choose 3rd level.&lt;br /&gt;
   4  Press Left Win-key to choose 3rd level.&lt;br /&gt;
   5  Press Right Win-key to choose 3rd level.&lt;br /&gt;
   6  Press any of Alt keys to choose 3rd level.&lt;br /&gt;
   7  Press Left Alt key to choose 3rd level.&lt;br /&gt;
   8  Press Right Alt key to choose 3rd level.&lt;br /&gt;
 &lt;br /&gt;
 Please select the option or just press enter if none&lt;br /&gt;
&lt;br /&gt;
    Control key position&lt;br /&gt;
 &lt;br /&gt;
   1  Make CapsLock an additional Control.&lt;br /&gt;
   2  Swap Control and CapsLock.&lt;br /&gt;
   3  Control key at left of 'A'&lt;br /&gt;
   4  Control key at bottom left&lt;br /&gt;
   5  Right Control key works as Right Alt.&lt;br /&gt;
 &lt;br /&gt;
 Please select the option or just press enter if none&lt;br /&gt;
&lt;br /&gt;
    Use keyboard LED to show alternative group.&lt;br /&gt;
 &lt;br /&gt;
   1  NumLock LED shows alternative group.&lt;br /&gt;
   2  CapsLock LED shows alternative group.&lt;br /&gt;
   3  ScrollLock LED shows alternative group.&lt;br /&gt;
 &lt;br /&gt;
 Please select the option or just press enter if none&lt;br /&gt;
&lt;br /&gt;
    CapsLock key behavior&lt;br /&gt;
 &lt;br /&gt;
   1  CapsLock uses internal capitalization. Shift cancels CapsLock.&lt;br /&gt;
   2  CapsLock uses internal capitalization. Shift doesn't cancel CapsLock.&lt;br /&gt;
   3  CapsLock acts as Shift with locking. Shift cancels CapsLock.&lt;br /&gt;
   4  CapsLock acts as Shift with locking. Shift doesn't cancel CapsLock.&lt;br /&gt;
   5  CapsLock just locks the Shift modifier.&lt;br /&gt;
   6  CapsLock toggles normal capitalization of alphabetic characters.&lt;br /&gt;
   7  CapsLock toggles Shift so all keys are affected.&lt;br /&gt;
 &lt;br /&gt;
 Please select the option or just press enter if none&lt;br /&gt;
&lt;br /&gt;
    Alt/Win key behavior&lt;br /&gt;
 &lt;br /&gt;
   1  Add the standard behavior to Menu key.&lt;br /&gt;
   2  Alt and Meta are on the Alt keys (default).&lt;br /&gt;
   3  Meta is mapped to the Win-keys.&lt;br /&gt;
   4  Meta is mapped to the left Win-key.&lt;br /&gt;
   5  Super is mapped to the Win-keys (default).&lt;br /&gt;
   6  Hyper is mapped to the Win-keys.&lt;br /&gt;
   7  Alt is mapped to the right Win-key and Super to Menu.&lt;br /&gt;
 &lt;br /&gt;
 Please select the option or just press enter if none&lt;br /&gt;
&lt;br /&gt;
    key Compose key position&lt;br /&gt;
 &lt;br /&gt;
   1  Right Alt is Compose.&lt;br /&gt;
   2  Right Win-key is Compose.&lt;br /&gt;
   3  Menu is Compose.&lt;br /&gt;
   4  Right Ctrl is Compose.&lt;br /&gt;
 &lt;br /&gt;
 Please select the option or just press enter if none&lt;br /&gt;
&lt;br /&gt;
    Miscellaneous compatibility options&lt;br /&gt;
 &lt;br /&gt;
   1  Shift with numpad keys works as in MS Windows.&lt;br /&gt;
   2  Special keys (Ctrl+Alt+&amp;amp;lt;key&amp;amp;gt;) handled in a server.&lt;br /&gt;
 &lt;br /&gt;
 Please select the option or just press enter if none&lt;br /&gt;
&lt;br /&gt;
    Adding the EuroSign to certain keys&lt;br /&gt;
 &lt;br /&gt;
   1  Add the EuroSign to the E key.&lt;br /&gt;
   2  Add the EuroSign to the 5 key.&lt;br /&gt;
   3  Add the EuroSign to the 2 key.&lt;br /&gt;
 &lt;br /&gt;
 Please select the option or just press enter if none&lt;br /&gt;
&lt;br /&gt;
==Configurarea monitorului==&lt;br /&gt;
*Atenţionare: parametri critici - rata de refresh verticală şi orizontală. Citiţi manualul monitorului!&lt;br /&gt;
&lt;br /&gt;
 Now we want to set the specifications of the monitor. The two critical&lt;br /&gt;
 parameters are the vertical refresh rate, which is the rate at which the&lt;br /&gt;
 the whole screen is refreshed, and most importantly the horizontal sync rate,&lt;br /&gt;
 which is the rate at which scanlines are displayed.&lt;br /&gt;
 &lt;br /&gt;
 The valid range for horizontal sync and vertical sync should be documented&lt;br /&gt;
 in the manual of your monitor.&lt;br /&gt;
 &lt;br /&gt;
 Press enter to continue, or ctrl-c to abort.&lt;br /&gt;
&lt;br /&gt;
*Setarea ratei de refresh orizontale&lt;br /&gt;
&lt;br /&gt;
 You must indicate the horizontal sync range of your monitor. You can either&lt;br /&gt;
 select one of the predefined ranges below that correspond to industry-&lt;br /&gt;
 standard monitor types, or give a specific range.&lt;br /&gt;
 &lt;br /&gt;
 It is VERY IMPORTANT that you do not specify a monitor type with a horizontal&lt;br /&gt;
 sync range that is beyond the capabilities of your monitor. If in doubt,&lt;br /&gt;
 choose a conservative setting.&lt;br /&gt;
 &lt;br /&gt;
     hsync in kHz; monitor type with characteristic modes&lt;br /&gt;
  1  31.5; Standard VGA, 640x480 @ 60 Hz&lt;br /&gt;
  2  31.5 - 35.1; Super VGA, 800x600 @ 56 Hz&lt;br /&gt;
  3  31.5, 35.5; 8514 Compatible, 1024x768 @ 87 Hz interlaced (no 800x600)&lt;br /&gt;
  4  31.5, 35.15, 35.5; Super VGA, 1024x768 @ 87 Hz interlaced, 800x600 @ 56 Hz&lt;br /&gt;
  5  31.5 - 37.9; Extended Super VGA, 800x600 @ 60 Hz, 640x480 @ 72 Hz&lt;br /&gt;
  6  31.5 - 48.5; Non-Interlaced SVGA, 1024x768 @ 60 Hz, 800x600 @ 72 Hz&lt;br /&gt;
  7  31.5 - 57.0; High Frequency SVGA, 1024x768 @ 70 Hz&lt;br /&gt;
  8  31.5 - 64.3; Monitor that can do 1280x1024 @ 60 Hz&lt;br /&gt;
  9  31.5 - 79.0; Monitor that can do 1280x1024 @ 74 Hz&lt;br /&gt;
 10  31.5 - 82.0; Monitor that can do 1280x1024 @ 76 Hz&lt;br /&gt;
 11  Enter your own horizontal sync range&lt;br /&gt;
 &lt;br /&gt;
 Enter your choice (1-11):&lt;br /&gt;
&lt;br /&gt;
[11][Enter]&lt;br /&gt;
&lt;br /&gt;
 Please enter the horizontal sync range of your monitor, in the format used&lt;br /&gt;
 in the table of monitor types above. You can either specify one or more&lt;br /&gt;
 continuous ranges (e.g. 15-25, 30-50), or one or more fixed sync frequencies.&lt;br /&gt;
 &lt;br /&gt;
 Horizontal sync range:&lt;br /&gt;
&lt;br /&gt;
[Introduceţi rata de refresh orizontală specificată în manualul monitorului]&lt;br /&gt;
&lt;br /&gt;
*Setarea ratei de refresh verticale&lt;br /&gt;
&lt;br /&gt;
 You must indicate the vertical sync range of your monitor. You can either&lt;br /&gt;
 select one of the predefined ranges below that correspond to industry-&lt;br /&gt;
 standard monitor types, or give a specific range. For interlaced modes,&lt;br /&gt;
 the number that counts is the high one (e.g. 87 Hz rather than 43 Hz).&lt;br /&gt;
 &lt;br /&gt;
  1  50-70&lt;br /&gt;
  2  50-90&lt;br /&gt;
  3  50-100&lt;br /&gt;
  4  40-150&lt;br /&gt;
  5  Enter your own vertical sync range&lt;br /&gt;
 &lt;br /&gt;
 Enter your choice:&lt;br /&gt;
&lt;br /&gt;
[5][Enter]&lt;br /&gt;
&lt;br /&gt;
 Vertical sync range:&lt;br /&gt;
&lt;br /&gt;
[Introduceţi rata de refresh verticală specificată în manualul monitorului]&lt;br /&gt;
&lt;br /&gt;
*Stabilirea unui nume generic pentru monitor&lt;br /&gt;
&lt;br /&gt;
 You must now enter a few identification/description strings, namely an&lt;br /&gt;
 identifier, a vendor name, and a model name. Just pressing enter will fill&lt;br /&gt;
 in default names.&lt;br /&gt;
 &lt;br /&gt;
 The strings are free-form, spaces are allowed.&lt;br /&gt;
 Enter an identifier for your monitor definition:&lt;br /&gt;
&lt;br /&gt;
[MyMonitor][Enter]&lt;br /&gt;
&lt;br /&gt;
==Configurarea plăcii video==&lt;br /&gt;
&lt;br /&gt;
*Alegerea tipului plăcii video&lt;br /&gt;
&lt;br /&gt;
 Now we must configure video card specific settings. At this point you can&lt;br /&gt;
 choose to make a selection out of a database of video card definitions.&lt;br /&gt;
 Because there can be variation in Ramdacs and clock generators even&lt;br /&gt;
 between cards of the same model, it is not sensible to blindly copy&lt;br /&gt;
 the settings (e.g. a Device section). For this reason, after you make a&lt;br /&gt;
 selection, you will still be asked about the components of the card, with&lt;br /&gt;
 the settings from the chosen database entry presented as a strong hint.&lt;br /&gt;
 &lt;br /&gt;
 The database entries include information about the chipset, what driver to&lt;br /&gt;
 run, the Ramdac and ClockChip, and comments that will be included in the&lt;br /&gt;
 Device section. However, a lot of definitions only hint about what driver&lt;br /&gt;
 to run (based on the chipset the card uses) and are untested.&lt;br /&gt;
 &lt;br /&gt;
 If you can't find your card in the database, there's nothing to worry about.&lt;br /&gt;
 You should only choose a database entry that is exactly the same model as&lt;br /&gt;
 your card; choosing one that looks similar is just a bad idea (e.g. a&lt;br /&gt;
 GemStone Snail 64 may be as different from a GemStone Snail 64+ in terms of&lt;br /&gt;
 hardware as can be).&lt;br /&gt;
 &lt;br /&gt;
 Do you want to look at the card database?&lt;br /&gt;
&lt;br /&gt;
[y]&lt;br /&gt;
&lt;br /&gt;
*Tipuri de plăci video&lt;br /&gt;
&lt;br /&gt;
   0  * Generic VESA compatible                         -&lt;br /&gt;
   1  * Generic VGA compatible                          -&lt;br /&gt;
   2  * Unsupported VGA compatible                      -&lt;br /&gt;
   3  ** 3DLabs, TI (generic)               [glint]     -&lt;br /&gt;
   4  ** 3Dfx (generic)                     [tdfx]      -&lt;br /&gt;
   5  ** ATI (generic)                      [ati]       -&lt;br /&gt;
   6  ** ATI Radeon (generic)               [radeon]    -&lt;br /&gt;
   7  ** ATI Rage 128 based (generic)       [r128]      -&lt;br /&gt;
   8  ** Alliance Pro Motion (generic)      [apm]       -&lt;br /&gt;
   9  ** Ark Logic (generic)                [ark]       -&lt;br /&gt;
  10  ** Chips and Technologies (generic)   [chips]     -&lt;br /&gt;
  11  ** Cirrus Logic (generic)             [cirrus]    -&lt;br /&gt;
  12  ** Cyrix MediaGX (generic)            [cyrix]     -&lt;br /&gt;
  13  ** DEC TGA (generic)                  [tga]       -&lt;br /&gt;
  14  ** Intel i740 (generic)               [i740]      -&lt;br /&gt;
  15  ** Intel i810 (generic)               [i810]      -&lt;br /&gt;
  16  ** Linux framebuffer (generic)        [fbdev]     -&lt;br /&gt;
  17  ** Matrox Graphics (generic)          [mga]       -&lt;br /&gt;
 &lt;br /&gt;
 Enter a number to choose the corresponding card definition.&lt;br /&gt;
 Press enter for the next page, q to continue configuration.&lt;br /&gt;
&lt;br /&gt;
[5][Enter]&lt;br /&gt;
&lt;br /&gt;
*Confirmarea selectării tipului plăcii video&lt;br /&gt;
&lt;br /&gt;
 Your selected card definition:&lt;br /&gt;
 &lt;br /&gt;
 Identifier: ** ATI (generic)                      [ati]&lt;br /&gt;
 Chipset:    -&lt;br /&gt;
 Driver:     ati&lt;br /&gt;
 &lt;br /&gt;
 Press enter to continue, or ctrl-c to abort.&lt;br /&gt;
&lt;br /&gt;
[Enter]&lt;br /&gt;
&lt;br /&gt;
*Setarea cantităţii de memorie a plăcii video&lt;br /&gt;
&lt;br /&gt;
 Now you must give information about your video card. This will be used for&lt;br /&gt;
 the &amp;quot;Device&amp;quot; section of your video card in xorg.conf.&lt;br /&gt;
 &lt;br /&gt;
 It is probably a good idea to use the same approximate amount as that detected&lt;br /&gt;
 by the server you intend to use. If you encounter problems that are due to the&lt;br /&gt;
 used server not supporting the amount memory you have, specify the maximum&lt;br /&gt;
 amount supported by the server.&lt;br /&gt;
 &lt;br /&gt;
 How much video memory do you have on your video card:&lt;br /&gt;
 &lt;br /&gt;
  1  256K&lt;br /&gt;
  2  512K&lt;br /&gt;
  3  1024K&lt;br /&gt;
  4  2048K&lt;br /&gt;
  5  4096K&lt;br /&gt;
  6  8192K&lt;br /&gt;
  7  16384K&lt;br /&gt;
  8  32768K&lt;br /&gt;
  9  65536K&lt;br /&gt;
 10  131072K&lt;br /&gt;
 11  262144K&lt;br /&gt;
 12  Other&lt;br /&gt;
 &lt;br /&gt;
 Enter your choice:&lt;br /&gt;
&lt;br /&gt;
[11][Enter]&lt;br /&gt;
&lt;br /&gt;
*Stabilirea denumirii plăcii video&lt;br /&gt;
&lt;br /&gt;
 You must now enter a few identification/description strings, namely an&lt;br /&gt;
 identifier, a vendor name, and a model name. Just pressing enter will fill&lt;br /&gt;
 in default names (possibly from a card definition).&lt;br /&gt;
 &lt;br /&gt;
 Your card definition is ** ATI (generic)                      [ati].&lt;br /&gt;
 &lt;br /&gt;
 The strings are free-form, spaces are allowed.&lt;br /&gt;
 Enter an identifier for your video card definition:&lt;br /&gt;
&lt;br /&gt;
[MyCard][Enter]&lt;br /&gt;
&lt;br /&gt;
==Setarea rezoluţiei monitorului==&lt;br /&gt;
&lt;br /&gt;
 For each depth, a list of modes (resolutions) is defined. The default&lt;br /&gt;
 resolution that the server will start-up with will be the first listed&lt;br /&gt;
 mode that can be supported by the monitor and card.&lt;br /&gt;
 Currently it is set to:&lt;br /&gt;
 &lt;br /&gt;
 &amp;quot;1280x1024&amp;quot; &amp;quot;1024x768&amp;quot; &amp;quot;800x600&amp;quot; &amp;quot;640x480&amp;quot; for 8-bit&lt;br /&gt;
 &amp;quot;1280x1024&amp;quot; &amp;quot;1024x768&amp;quot; &amp;quot;800x600&amp;quot; &amp;quot;640x480&amp;quot; for 16-bit&lt;br /&gt;
 &amp;quot;1280x1024&amp;quot; &amp;quot;1024x768&amp;quot; &amp;quot;800x600&amp;quot; &amp;quot;640x480&amp;quot; for 24-bit&lt;br /&gt;
 &lt;br /&gt;
 Modes that cannot be supported due to monitor or clock constraints will&lt;br /&gt;
 be automatically skipped by the server.&lt;br /&gt;
 &lt;br /&gt;
  1  Change the modes for 8-bit (256 colors)&lt;br /&gt;
  2  Change the modes for 16-bit (32K/64K colors)&lt;br /&gt;
  3  Change the modes for 24-bit (24-bit color)&lt;br /&gt;
  4  The modes are OK, continue.&lt;br /&gt;
 &lt;br /&gt;
 Enter your choice:&lt;br /&gt;
&lt;br /&gt;
[4][Enter] - dacă nu doriţi nici o modificare a rezoluţiei [[#Setarea adâncimii de culoare|salt]] la secţiunea &amp;quot;Setarea adâncimii de culoare&amp;quot;&lt;br /&gt;
&lt;br /&gt;
sau&lt;br /&gt;
&lt;br /&gt;
[1][Enter], apoi [2][Enter] şi [3][Enter], urmat de [4][Enter]&lt;br /&gt;
&lt;br /&gt;
*Exemplu de setare a rezoluţiei monitorului&lt;br /&gt;
&lt;br /&gt;
 Select modes from the following list:&lt;br /&gt;
 &lt;br /&gt;
  1  &amp;quot;640x400&amp;quot;&lt;br /&gt;
  2  &amp;quot;640x480&amp;quot;&lt;br /&gt;
  3  &amp;quot;800x600&amp;quot;&lt;br /&gt;
  4  &amp;quot;1024x768&amp;quot;&lt;br /&gt;
  5  &amp;quot;1280x1024&amp;quot;&lt;br /&gt;
  6  &amp;quot;320x200&amp;quot;&lt;br /&gt;
  7  &amp;quot;320x240&amp;quot;&lt;br /&gt;
  8  &amp;quot;400x300&amp;quot;&lt;br /&gt;
  9  &amp;quot;1152x864&amp;quot;&lt;br /&gt;
  a  &amp;quot;1600x1200&amp;quot;&lt;br /&gt;
  b  &amp;quot;1800x1400&amp;quot;&lt;br /&gt;
  c  &amp;quot;512x384&amp;quot;&lt;br /&gt;
  d  &amp;quot;1400x1050&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 Please type the digits corresponding to the modes that you want to select.&lt;br /&gt;
 For example, 432 selects &amp;quot;1024x768&amp;quot; &amp;quot;800x600&amp;quot; &amp;quot;640x480&amp;quot;, with a&lt;br /&gt;
 default mode of 1024x768.&lt;br /&gt;
 &lt;br /&gt;
 Which modes?&lt;br /&gt;
&lt;br /&gt;
[433][Enter] &lt;br /&gt;
&lt;br /&gt;
 You can have a virtual screen (desktop), which is screen area that is larger&lt;br /&gt;
 than the physical screen and which is panned by moving the mouse to the edge&lt;br /&gt;
 of the screen. If you don't want virtual desktop at a certain resolution,&lt;br /&gt;
 you cannot have modes listed that are larger. Each color depth can have a&lt;br /&gt;
 differently-sized virtual screen&lt;br /&gt;
 &lt;br /&gt;
 Please answer the following question with either 'y' or 'n'.&lt;br /&gt;
 Do you want a virtual screen that is larger than the physical screen?&lt;br /&gt;
 &lt;br /&gt;
[n][Enter]&lt;br /&gt;
&lt;br /&gt;
==Setarea adâncimii de culoare==&lt;br /&gt;
&lt;br /&gt;
 Please specify which color depth you want to use by default:&lt;br /&gt;
 &lt;br /&gt;
   1  1 bit (monochrome)&lt;br /&gt;
   2  4 bits (16 colors)&lt;br /&gt;
   3  8 bits (256 colors)&lt;br /&gt;
   4  16 bits (65536 colors)&lt;br /&gt;
   5  24 bits (16 million colors)&lt;br /&gt;
 &lt;br /&gt;
 Enter a number to choose the default depth. &lt;br /&gt;
&lt;br /&gt;
[4][Enter]&lt;br /&gt;
&lt;br /&gt;
==Salvarea modificărilor==&lt;br /&gt;
&lt;br /&gt;
 I am going to write the xorg.conf file now. Make sure you don't accidently&lt;br /&gt;
 overwrite a previously configured one.&lt;br /&gt;
 &lt;br /&gt;
 Shall I write it to /etc/X11/xorg.conf?&lt;br /&gt;
&lt;br /&gt;
[y][Enter]&lt;br /&gt;
&lt;br /&gt;
*Confirmarea scrierii fişierului de configurare&lt;br /&gt;
 &lt;br /&gt;
 File has been written. Take a look at it before starting an X server. Note that&lt;br /&gt;
 the xorg.conf file must be in one of the directories searched by the server&lt;br /&gt;
 (e.g. /etc/X11) in order to be used. Within the server press&lt;br /&gt;
 ctrl, alt and '+' simultaneously to cycle video resolutions. Pressing ctrl,&lt;br /&gt;
 alt and backspace simultaneously immediately exits the server (use if&lt;br /&gt;
 the monitor doesn't sync for a particular mode).&lt;br /&gt;
 &lt;br /&gt;
 For further configuration, refer to the xorg.conf(5x) manual page.&lt;br /&gt;
 &lt;br /&gt;
 root@TheLinux:~#&lt;br /&gt;
&lt;br /&gt;
==Fişierul /etc/X11/xorg.conf==&lt;br /&gt;
&lt;br /&gt;
[[Category:Pending]]&lt;/div&gt;</summary>
		<author><name>Csdexter</name></author>	</entry>

	<entry>
		<id>http://wiki.linux360.ro/index.php?title=Configurarea_X_%C3%83%C2%AEn_Slackware&amp;diff=3314</id>
		<title>Configurarea X Ã®n Slackware</title>
		<link rel="alternate" type="text/html" href="http://wiki.linux360.ro/index.php?title=Configurarea_X_%C3%83%C2%AEn_Slackware&amp;diff=3314"/>
				<updated>2006-12-18T17:28:34Z</updated>
		
		<summary type="html">&lt;p&gt;Csdexter: /* Configurarea mouse-ului */ Adapted to Romanian terminology&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Această pagină este în lucru&lt;br /&gt;
&lt;br /&gt;
==Comanda xorgconfig==&lt;br /&gt;
&lt;br /&gt;
 This program will create a basic xorg.conf file, based on menu selections&lt;br /&gt;
 you make.  It will ask for a pathname when it is ready to write the file.&lt;br /&gt;
 &lt;br /&gt;
 The xorg.conf file usually resides in /etc/X11 or /usr/X11R6/etc/X11.  If&lt;br /&gt;
 no xorg.conf file is present there, Xorg will probe the system to&lt;br /&gt;
 autoconfigure itself.  You can run Xorg -configure to generate a xorg.conf&lt;br /&gt;
 file based on the results of autoconfiguration, or let this program&lt;br /&gt;
 produce a base xorg.conf file for your configuration, and fine-tune it.&lt;br /&gt;
 A sample xorg.conf file is also supplied with Xorg; it is configured&lt;br /&gt;
 for a standard VGA card and monitor with 640x480 resolution.&lt;br /&gt;
 &lt;br /&gt;
 There are also many chipset and card-specific options and settings available,&lt;br /&gt;
 but this program does not know about these. On some configurations some of&lt;br /&gt;
 these settings must be specified. Refer to the X driver man pages and the&lt;br /&gt;
 chipset-specific READMEs in /usr/X11R6/lib/X11/doc for further details.&lt;br /&gt;
 &lt;br /&gt;
 Before continuing with this program, make sure you know what video card&lt;br /&gt;
 you have, and preferably also the chipset it uses and the amount of video&lt;br /&gt;
 memory on your video card, as well as the specifications of your monitor.&lt;br /&gt;
 &lt;br /&gt;
 Press enter to continue, or ctrl-c to abort.&lt;br /&gt;
&lt;br /&gt;
[Enter]&lt;br /&gt;
&lt;br /&gt;
==Configurarea mouse-ului==&lt;br /&gt;
*Alegerea protocolului de comunicatie si a tipului dispozitivului de indicatie utilizat (in cele mai multe cazuri, un mouse)&lt;br /&gt;
&lt;br /&gt;
 First specify a mouse protocol type. Choose one from the following list:&lt;br /&gt;
 &lt;br /&gt;
  1.  Auto [Auto detect]&lt;br /&gt;
  2.  SysMouse [SysMouse]&lt;br /&gt;
  3.  MouseSystems [Mouse Systems (3-button protocol)]&lt;br /&gt;
  4.  PS/2 [PS/2 Mouse]&lt;br /&gt;
  5.  Microsoft [Microsoft compatible (2-button protocol)]&lt;br /&gt;
  6.  Busmouse [Bus Mouse]&lt;br /&gt;
  7.  IMPS/2 [IntelliMouse PS/2]&lt;br /&gt;
  8.  ExplorerPS/2 [Explorer PS/2]&lt;br /&gt;
  9.  GlidePointPS/2 [GlidePoint PS/2]&lt;br /&gt;
 10.  MouseManPlusPS/2 [MouseManPlus PS/2]&lt;br /&gt;
 11.  NetMousePS/2 [NetMouse PS/2]&lt;br /&gt;
 12.  NetScrollPS/2 [NetScroll PS/2]&lt;br /&gt;
 13.  ThinkingMousePS/2 [ThinkingMouse PS/2]&lt;br /&gt;
 14.  AceCad [AceCad]&lt;br /&gt;
 &lt;br /&gt;
 The recommended protocol is Auto. If you have a very old mouse&lt;br /&gt;
 or don't want OS support or auto detection, and you have a two-button&lt;br /&gt;
 or three-button serial mouse, it is most likely of type Microsoft.&lt;br /&gt;
 &lt;br /&gt;
 Enter a protocol number:&lt;br /&gt;
&lt;br /&gt;
[1][Enter]&lt;br /&gt;
&lt;br /&gt;
*Activarea emulării butonului din mijloc la mouse-ul cu două butoane&lt;br /&gt;
&lt;br /&gt;
 If your mouse has only two buttons, it is recommended that you enable&lt;br /&gt;
 Emulate3Buttons.&lt;br /&gt;
 &lt;br /&gt;
 Please answer the following question with either 'y' or 'n'.&lt;br /&gt;
 Do you want to enable Emulate3Buttons?&lt;br /&gt;
&lt;br /&gt;
[n][Enter]&lt;br /&gt;
&lt;br /&gt;
*Setarea device-ului la care conectat mouse-ul&lt;br /&gt;
&lt;br /&gt;
 Now give the full device name that the mouse is connected to, for example&lt;br /&gt;
 /dev/tty00. Just pressing enter will use the default, /dev/mouse.&lt;br /&gt;
 &lt;br /&gt;
 Mouse device:&lt;br /&gt;
&lt;br /&gt;
[Enter]&lt;br /&gt;
&lt;br /&gt;
==Configurarea tastaturii==&lt;br /&gt;
*Alegerea tipului şi layout-ului tastaturii&lt;br /&gt;
&lt;br /&gt;
 Please select one of the following keyboard types that is the better&lt;br /&gt;
 description of your keyboard. If nothing really matches,&lt;br /&gt;
 choose &amp;quot;Generic 104-key PC&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
   1  Generic 101-key PC&lt;br /&gt;
   2  Generic 102-key (Intl) PC&lt;br /&gt;
   3  Generic 104-key PC&lt;br /&gt;
   4  Generic 105-key (Intl) PC&lt;br /&gt;
   5  Dell 101-key PC&lt;br /&gt;
   6  Everex STEPnote&lt;br /&gt;
   7  Keytronic FlexPro&lt;br /&gt;
   8  Microsoft Natural&lt;br /&gt;
   9  Northgate OmniKey 101&lt;br /&gt;
  10  Winbook Model XP5&lt;br /&gt;
  11  Japanese 106-key&lt;br /&gt;
  12  PC-98xx Series&lt;br /&gt;
  13  A4Tech KB-21&lt;br /&gt;
  14  A4Tech KBS-8&lt;br /&gt;
  15  Brazilian ABNT2&lt;br /&gt;
  16  Acer AirKey V&lt;br /&gt;
 &lt;br /&gt;
 Enter a number to choose the keyboard.&lt;br /&gt;
 &lt;br /&gt;
 Press enter for the next page&lt;br /&gt;
&lt;br /&gt;
[1][Enter]&lt;br /&gt;
&lt;br /&gt;
   1  U.S. English&lt;br /&gt;
   2  Arabic&lt;br /&gt;
   3  Albania&lt;br /&gt;
   4  Armenia&lt;br /&gt;
   5  Azerbaijan&lt;br /&gt;
   6  Belarus&lt;br /&gt;
   7  Belgium&lt;br /&gt;
   8  Bangladesh&lt;br /&gt;
   9  India&lt;br /&gt;
  10  Bosnia and Herzegovina&lt;br /&gt;
  11  Brazil&lt;br /&gt;
  12  Bulgaria&lt;br /&gt;
  13  Myanmar&lt;br /&gt;
  14  Canada&lt;br /&gt;
  15  Croatia&lt;br /&gt;
  16  Czechia&lt;br /&gt;
  17  Denmark&lt;br /&gt;
  18  Netherlands&lt;br /&gt;
 &lt;br /&gt;
 Enter a number to choose the country.&lt;br /&gt;
 Press enter for the next page&lt;br /&gt;
&lt;br /&gt;
[1][Enter]&lt;br /&gt;
&lt;br /&gt;
 Please enter a variant name for 'us' layout. Or just press enter&lt;br /&gt;
 for default variant&lt;br /&gt;
&lt;br /&gt;
[Enter]&lt;br /&gt;
&lt;br /&gt;
*Activarea opţiunilor suplimentare (dacă nu doriţi activarea acestora, [[#Configurarea monitorului|salt]] la secţiunea &amp;quot;Configurare monitor&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
 Please answer the following question with either 'y' or 'n'.&lt;br /&gt;
 Do you want to select additional XKB options (group switcher,&lt;br /&gt;
 group indicator, etc.)?&lt;br /&gt;
&lt;br /&gt;
[y][Enter]&lt;br /&gt;
&lt;br /&gt;
    Group Shift/Lock behavior&lt;br /&gt;
 &lt;br /&gt;
   1  R-Alt switches group while pressed.&lt;br /&gt;
   2  Left Alt key switches group while pressed.&lt;br /&gt;
   3  Left Win-key switches group while pressed.&lt;br /&gt;
   4  Right Win-key switches group while pressed.&lt;br /&gt;
   5  Both Win-keys switch group while pressed.&lt;br /&gt;
   6  Right Ctrl key switches group while pressed.&lt;br /&gt;
   7  Right Alt key changes group.&lt;br /&gt;
   8  Left Alt key changes group.&lt;br /&gt;
   9  CapsLock key changes group.&lt;br /&gt;
  10  Shift+CapsLock changes group.&lt;br /&gt;
  11  Both Shift keys together change group.&lt;br /&gt;
  12  Both Alt keys together change group.&lt;br /&gt;
  13  Both Ctrl keys together change group.&lt;br /&gt;
  14  Control+Shift changes group.&lt;br /&gt;
  15  Alt+Control changes group.&lt;br /&gt;
  16  Alt+Shift changes group.&lt;br /&gt;
  17  Menu key changes group.&lt;br /&gt;
  18  Left Win-key changes group.&lt;br /&gt;
  19  Right Win-key changes group.&lt;br /&gt;
  20  Left Shift key changes group.&lt;br /&gt;
  21  Right Shift key changes group.&lt;br /&gt;
  22  Left Ctrl key changes group.&lt;br /&gt;
  23  Right Ctrl key changes group.&lt;br /&gt;
 &lt;br /&gt;
 Please select the option or just press enter if none&lt;br /&gt;
&lt;br /&gt;
    Third level choosers&lt;br /&gt;
 &lt;br /&gt;
   1  Press Right Control to choose 3rd level.&lt;br /&gt;
   2  Press Menu key to choose 3rd level.&lt;br /&gt;
   3  Press any of Win-keys to choose 3rd level.&lt;br /&gt;
   4  Press Left Win-key to choose 3rd level.&lt;br /&gt;
   5  Press Right Win-key to choose 3rd level.&lt;br /&gt;
   6  Press any of Alt keys to choose 3rd level.&lt;br /&gt;
   7  Press Left Alt key to choose 3rd level.&lt;br /&gt;
   8  Press Right Alt key to choose 3rd level.&lt;br /&gt;
 &lt;br /&gt;
 Please select the option or just press enter if none&lt;br /&gt;
&lt;br /&gt;
    Control key position&lt;br /&gt;
 &lt;br /&gt;
   1  Make CapsLock an additional Control.&lt;br /&gt;
   2  Swap Control and CapsLock.&lt;br /&gt;
   3  Control key at left of 'A'&lt;br /&gt;
   4  Control key at bottom left&lt;br /&gt;
   5  Right Control key works as Right Alt.&lt;br /&gt;
 &lt;br /&gt;
 Please select the option or just press enter if none&lt;br /&gt;
&lt;br /&gt;
    Use keyboard LED to show alternative group.&lt;br /&gt;
 &lt;br /&gt;
   1  NumLock LED shows alternative group.&lt;br /&gt;
   2  CapsLock LED shows alternative group.&lt;br /&gt;
   3  ScrollLock LED shows alternative group.&lt;br /&gt;
 &lt;br /&gt;
 Please select the option or just press enter if none&lt;br /&gt;
&lt;br /&gt;
    CapsLock key behavior&lt;br /&gt;
 &lt;br /&gt;
   1  CapsLock uses internal capitalization. Shift cancels CapsLock.&lt;br /&gt;
   2  CapsLock uses internal capitalization. Shift doesn't cancel CapsLock.&lt;br /&gt;
   3  CapsLock acts as Shift with locking. Shift cancels CapsLock.&lt;br /&gt;
   4  CapsLock acts as Shift with locking. Shift doesn't cancel CapsLock.&lt;br /&gt;
   5  CapsLock just locks the Shift modifier.&lt;br /&gt;
   6  CapsLock toggles normal capitalization of alphabetic characters.&lt;br /&gt;
   7  CapsLock toggles Shift so all keys are affected.&lt;br /&gt;
 &lt;br /&gt;
 Please select the option or just press enter if none&lt;br /&gt;
&lt;br /&gt;
    Alt/Win key behavior&lt;br /&gt;
 &lt;br /&gt;
   1  Add the standard behavior to Menu key.&lt;br /&gt;
   2  Alt and Meta are on the Alt keys (default).&lt;br /&gt;
   3  Meta is mapped to the Win-keys.&lt;br /&gt;
   4  Meta is mapped to the left Win-key.&lt;br /&gt;
   5  Super is mapped to the Win-keys (default).&lt;br /&gt;
   6  Hyper is mapped to the Win-keys.&lt;br /&gt;
   7  Alt is mapped to the right Win-key and Super to Menu.&lt;br /&gt;
 &lt;br /&gt;
 Please select the option or just press enter if none&lt;br /&gt;
&lt;br /&gt;
    key Compose key position&lt;br /&gt;
 &lt;br /&gt;
   1  Right Alt is Compose.&lt;br /&gt;
   2  Right Win-key is Compose.&lt;br /&gt;
   3  Menu is Compose.&lt;br /&gt;
   4  Right Ctrl is Compose.&lt;br /&gt;
 &lt;br /&gt;
 Please select the option or just press enter if none&lt;br /&gt;
&lt;br /&gt;
    Miscellaneous compatibility options&lt;br /&gt;
 &lt;br /&gt;
   1  Shift with numpad keys works as in MS Windows.&lt;br /&gt;
   2  Special keys (Ctrl+Alt+&amp;amp;lt;key&amp;amp;gt;) handled in a server.&lt;br /&gt;
 &lt;br /&gt;
 Please select the option or just press enter if none&lt;br /&gt;
&lt;br /&gt;
    Adding the EuroSign to certain keys&lt;br /&gt;
 &lt;br /&gt;
   1  Add the EuroSign to the E key.&lt;br /&gt;
   2  Add the EuroSign to the 5 key.&lt;br /&gt;
   3  Add the EuroSign to the 2 key.&lt;br /&gt;
 &lt;br /&gt;
 Please select the option or just press enter if none&lt;br /&gt;
&lt;br /&gt;
==Configurarea monitorului==&lt;br /&gt;
*Atenţionare: parametri critici - rata de refresh verticală şi orizontală. Citiţi manualul monitorului!&lt;br /&gt;
&lt;br /&gt;
 Now we want to set the specifications of the monitor. The two critical&lt;br /&gt;
 parameters are the vertical refresh rate, which is the rate at which the&lt;br /&gt;
 the whole screen is refreshed, and most importantly the horizontal sync rate,&lt;br /&gt;
 which is the rate at which scanlines are displayed.&lt;br /&gt;
 &lt;br /&gt;
 The valid range for horizontal sync and vertical sync should be documented&lt;br /&gt;
 in the manual of your monitor.&lt;br /&gt;
 &lt;br /&gt;
 Press enter to continue, or ctrl-c to abort.&lt;br /&gt;
&lt;br /&gt;
*Setarea ratei de refresh orizontale&lt;br /&gt;
&lt;br /&gt;
 You must indicate the horizontal sync range of your monitor. You can either&lt;br /&gt;
 select one of the predefined ranges below that correspond to industry-&lt;br /&gt;
 standard monitor types, or give a specific range.&lt;br /&gt;
 &lt;br /&gt;
 It is VERY IMPORTANT that you do not specify a monitor type with a horizontal&lt;br /&gt;
 sync range that is beyond the capabilities of your monitor. If in doubt,&lt;br /&gt;
 choose a conservative setting.&lt;br /&gt;
 &lt;br /&gt;
     hsync in kHz; monitor type with characteristic modes&lt;br /&gt;
  1  31.5; Standard VGA, 640x480 @ 60 Hz&lt;br /&gt;
  2  31.5 - 35.1; Super VGA, 800x600 @ 56 Hz&lt;br /&gt;
  3  31.5, 35.5; 8514 Compatible, 1024x768 @ 87 Hz interlaced (no 800x600)&lt;br /&gt;
  4  31.5, 35.15, 35.5; Super VGA, 1024x768 @ 87 Hz interlaced, 800x600 @ 56 Hz&lt;br /&gt;
  5  31.5 - 37.9; Extended Super VGA, 800x600 @ 60 Hz, 640x480 @ 72 Hz&lt;br /&gt;
  6  31.5 - 48.5; Non-Interlaced SVGA, 1024x768 @ 60 Hz, 800x600 @ 72 Hz&lt;br /&gt;
  7  31.5 - 57.0; High Frequency SVGA, 1024x768 @ 70 Hz&lt;br /&gt;
  8  31.5 - 64.3; Monitor that can do 1280x1024 @ 60 Hz&lt;br /&gt;
  9  31.5 - 79.0; Monitor that can do 1280x1024 @ 74 Hz&lt;br /&gt;
 10  31.5 - 82.0; Monitor that can do 1280x1024 @ 76 Hz&lt;br /&gt;
 11  Enter your own horizontal sync range&lt;br /&gt;
 &lt;br /&gt;
 Enter your choice (1-11):&lt;br /&gt;
&lt;br /&gt;
[11][Enter]&lt;br /&gt;
&lt;br /&gt;
 Please enter the horizontal sync range of your monitor, in the format used&lt;br /&gt;
 in the table of monitor types above. You can either specify one or more&lt;br /&gt;
 continuous ranges (e.g. 15-25, 30-50), or one or more fixed sync frequencies.&lt;br /&gt;
 &lt;br /&gt;
 Horizontal sync range:&lt;br /&gt;
&lt;br /&gt;
[Introduceţi rata de refresh orizontală specificată în manualul monitorului]&lt;br /&gt;
&lt;br /&gt;
*Setarea ratei de refresh verticale&lt;br /&gt;
&lt;br /&gt;
 You must indicate the vertical sync range of your monitor. You can either&lt;br /&gt;
 select one of the predefined ranges below that correspond to industry-&lt;br /&gt;
 standard monitor types, or give a specific range. For interlaced modes,&lt;br /&gt;
 the number that counts is the high one (e.g. 87 Hz rather than 43 Hz).&lt;br /&gt;
 &lt;br /&gt;
  1  50-70&lt;br /&gt;
  2  50-90&lt;br /&gt;
  3  50-100&lt;br /&gt;
  4  40-150&lt;br /&gt;
  5  Enter your own vertical sync range&lt;br /&gt;
 &lt;br /&gt;
 Enter your choice:&lt;br /&gt;
&lt;br /&gt;
[5][Enter]&lt;br /&gt;
&lt;br /&gt;
 Vertical sync range:&lt;br /&gt;
&lt;br /&gt;
[Introduceţi rata de refresh verticală specificată în manualul monitorului]&lt;br /&gt;
&lt;br /&gt;
*Stabilirea unui nume generic pentru monitor&lt;br /&gt;
&lt;br /&gt;
 You must now enter a few identification/description strings, namely an&lt;br /&gt;
 identifier, a vendor name, and a model name. Just pressing enter will fill&lt;br /&gt;
 in default names.&lt;br /&gt;
 &lt;br /&gt;
 The strings are free-form, spaces are allowed.&lt;br /&gt;
 Enter an identifier for your monitor definition:&lt;br /&gt;
&lt;br /&gt;
[MyMonitor][Enter]&lt;br /&gt;
&lt;br /&gt;
==Configurarea plăcii video==&lt;br /&gt;
&lt;br /&gt;
*Alegerea tipului plăcii video&lt;br /&gt;
&lt;br /&gt;
 Now we must configure video card specific settings. At this point you can&lt;br /&gt;
 choose to make a selection out of a database of video card definitions.&lt;br /&gt;
 Because there can be variation in Ramdacs and clock generators even&lt;br /&gt;
 between cards of the same model, it is not sensible to blindly copy&lt;br /&gt;
 the settings (e.g. a Device section). For this reason, after you make a&lt;br /&gt;
 selection, you will still be asked about the components of the card, with&lt;br /&gt;
 the settings from the chosen database entry presented as a strong hint.&lt;br /&gt;
 &lt;br /&gt;
 The database entries include information about the chipset, what driver to&lt;br /&gt;
 run, the Ramdac and ClockChip, and comments that will be included in the&lt;br /&gt;
 Device section. However, a lot of definitions only hint about what driver&lt;br /&gt;
 to run (based on the chipset the card uses) and are untested.&lt;br /&gt;
 &lt;br /&gt;
 If you can't find your card in the database, there's nothing to worry about.&lt;br /&gt;
 You should only choose a database entry that is exactly the same model as&lt;br /&gt;
 your card; choosing one that looks similar is just a bad idea (e.g. a&lt;br /&gt;
 GemStone Snail 64 may be as different from a GemStone Snail 64+ in terms of&lt;br /&gt;
 hardware as can be).&lt;br /&gt;
 &lt;br /&gt;
 Do you want to look at the card database?&lt;br /&gt;
&lt;br /&gt;
[y]&lt;br /&gt;
&lt;br /&gt;
*Tipuri de plăci video&lt;br /&gt;
&lt;br /&gt;
   0  * Generic VESA compatible                         -&lt;br /&gt;
   1  * Generic VGA compatible                          -&lt;br /&gt;
   2  * Unsupported VGA compatible                      -&lt;br /&gt;
   3  ** 3DLabs, TI (generic)               [glint]     -&lt;br /&gt;
   4  ** 3Dfx (generic)                     [tdfx]      -&lt;br /&gt;
   5  ** ATI (generic)                      [ati]       -&lt;br /&gt;
   6  ** ATI Radeon (generic)               [radeon]    -&lt;br /&gt;
   7  ** ATI Rage 128 based (generic)       [r128]      -&lt;br /&gt;
   8  ** Alliance Pro Motion (generic)      [apm]       -&lt;br /&gt;
   9  ** Ark Logic (generic)                [ark]       -&lt;br /&gt;
  10  ** Chips and Technologies (generic)   [chips]     -&lt;br /&gt;
  11  ** Cirrus Logic (generic)             [cirrus]    -&lt;br /&gt;
  12  ** Cyrix MediaGX (generic)            [cyrix]     -&lt;br /&gt;
  13  ** DEC TGA (generic)                  [tga]       -&lt;br /&gt;
  14  ** Intel i740 (generic)               [i740]      -&lt;br /&gt;
  15  ** Intel i810 (generic)               [i810]      -&lt;br /&gt;
  16  ** Linux framebuffer (generic)        [fbdev]     -&lt;br /&gt;
  17  ** Matrox Graphics (generic)          [mga]       -&lt;br /&gt;
 &lt;br /&gt;
 Enter a number to choose the corresponding card definition.&lt;br /&gt;
 Press enter for the next page, q to continue configuration.&lt;br /&gt;
&lt;br /&gt;
[5][Enter]&lt;br /&gt;
&lt;br /&gt;
*Confirmarea selectării tipului plăcii video&lt;br /&gt;
&lt;br /&gt;
 Your selected card definition:&lt;br /&gt;
 &lt;br /&gt;
 Identifier: ** ATI (generic)                      [ati]&lt;br /&gt;
 Chipset:    -&lt;br /&gt;
 Driver:     ati&lt;br /&gt;
 &lt;br /&gt;
 Press enter to continue, or ctrl-c to abort.&lt;br /&gt;
&lt;br /&gt;
[Enter]&lt;br /&gt;
&lt;br /&gt;
*Setarea cantităţii de memorie a plăcii video&lt;br /&gt;
&lt;br /&gt;
 Now you must give information about your video card. This will be used for&lt;br /&gt;
 the &amp;quot;Device&amp;quot; section of your video card in xorg.conf.&lt;br /&gt;
 &lt;br /&gt;
 It is probably a good idea to use the same approximate amount as that detected&lt;br /&gt;
 by the server you intend to use. If you encounter problems that are due to the&lt;br /&gt;
 used server not supporting the amount memory you have, specify the maximum&lt;br /&gt;
 amount supported by the server.&lt;br /&gt;
 &lt;br /&gt;
 How much video memory do you have on your video card:&lt;br /&gt;
 &lt;br /&gt;
  1  256K&lt;br /&gt;
  2  512K&lt;br /&gt;
  3  1024K&lt;br /&gt;
  4  2048K&lt;br /&gt;
  5  4096K&lt;br /&gt;
  6  8192K&lt;br /&gt;
  7  16384K&lt;br /&gt;
  8  32768K&lt;br /&gt;
  9  65536K&lt;br /&gt;
 10  131072K&lt;br /&gt;
 11  262144K&lt;br /&gt;
 12  Other&lt;br /&gt;
 &lt;br /&gt;
 Enter your choice:&lt;br /&gt;
&lt;br /&gt;
[11][Enter]&lt;br /&gt;
&lt;br /&gt;
*Stabilirea denumirii plăcii video&lt;br /&gt;
&lt;br /&gt;
 You must now enter a few identification/description strings, namely an&lt;br /&gt;
 identifier, a vendor name, and a model name. Just pressing enter will fill&lt;br /&gt;
 in default names (possibly from a card definition).&lt;br /&gt;
 &lt;br /&gt;
 Your card definition is ** ATI (generic)                      [ati].&lt;br /&gt;
 &lt;br /&gt;
 The strings are free-form, spaces are allowed.&lt;br /&gt;
 Enter an identifier for your video card definition:&lt;br /&gt;
&lt;br /&gt;
[MyCard][Enter]&lt;br /&gt;
&lt;br /&gt;
==Setarea rezoluţiei monitorului==&lt;br /&gt;
&lt;br /&gt;
 For each depth, a list of modes (resolutions) is defined. The default&lt;br /&gt;
 resolution that the server will start-up with will be the first listed&lt;br /&gt;
 mode that can be supported by the monitor and card.&lt;br /&gt;
 Currently it is set to:&lt;br /&gt;
 &lt;br /&gt;
 &amp;quot;1280x1024&amp;quot; &amp;quot;1024x768&amp;quot; &amp;quot;800x600&amp;quot; &amp;quot;640x480&amp;quot; for 8-bit&lt;br /&gt;
 &amp;quot;1280x1024&amp;quot; &amp;quot;1024x768&amp;quot; &amp;quot;800x600&amp;quot; &amp;quot;640x480&amp;quot; for 16-bit&lt;br /&gt;
 &amp;quot;1280x1024&amp;quot; &amp;quot;1024x768&amp;quot; &amp;quot;800x600&amp;quot; &amp;quot;640x480&amp;quot; for 24-bit&lt;br /&gt;
 &lt;br /&gt;
 Modes that cannot be supported due to monitor or clock constraints will&lt;br /&gt;
 be automatically skipped by the server.&lt;br /&gt;
 &lt;br /&gt;
  1  Change the modes for 8-bit (256 colors)&lt;br /&gt;
  2  Change the modes for 16-bit (32K/64K colors)&lt;br /&gt;
  3  Change the modes for 24-bit (24-bit color)&lt;br /&gt;
  4  The modes are OK, continue.&lt;br /&gt;
 &lt;br /&gt;
 Enter your choice:&lt;br /&gt;
&lt;br /&gt;
[4][Enter] - dacă nu doriţi nici o modificare a rezoluţiei [[#Setarea adâncimii de culoare|salt]] la secţiunea &amp;quot;Setarea adâncimii de culoare&amp;quot;&lt;br /&gt;
&lt;br /&gt;
sau&lt;br /&gt;
&lt;br /&gt;
[1][Enter], apoi [2][Enter] şi [3][Enter], urmat de [4][Enter]&lt;br /&gt;
&lt;br /&gt;
*Exemplu de setare a rezoluţiei monitorului&lt;br /&gt;
&lt;br /&gt;
 Select modes from the following list:&lt;br /&gt;
 &lt;br /&gt;
  1  &amp;quot;640x400&amp;quot;&lt;br /&gt;
  2  &amp;quot;640x480&amp;quot;&lt;br /&gt;
  3  &amp;quot;800x600&amp;quot;&lt;br /&gt;
  4  &amp;quot;1024x768&amp;quot;&lt;br /&gt;
  5  &amp;quot;1280x1024&amp;quot;&lt;br /&gt;
  6  &amp;quot;320x200&amp;quot;&lt;br /&gt;
  7  &amp;quot;320x240&amp;quot;&lt;br /&gt;
  8  &amp;quot;400x300&amp;quot;&lt;br /&gt;
  9  &amp;quot;1152x864&amp;quot;&lt;br /&gt;
  a  &amp;quot;1600x1200&amp;quot;&lt;br /&gt;
  b  &amp;quot;1800x1400&amp;quot;&lt;br /&gt;
  c  &amp;quot;512x384&amp;quot;&lt;br /&gt;
  d  &amp;quot;1400x1050&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 Please type the digits corresponding to the modes that you want to select.&lt;br /&gt;
 For example, 432 selects &amp;quot;1024x768&amp;quot; &amp;quot;800x600&amp;quot; &amp;quot;640x480&amp;quot;, with a&lt;br /&gt;
 default mode of 1024x768.&lt;br /&gt;
 &lt;br /&gt;
 Which modes?&lt;br /&gt;
&lt;br /&gt;
[433][Enter] &lt;br /&gt;
&lt;br /&gt;
 You can have a virtual screen (desktop), which is screen area that is larger&lt;br /&gt;
 than the physical screen and which is panned by moving the mouse to the edge&lt;br /&gt;
 of the screen. If you don't want virtual desktop at a certain resolution,&lt;br /&gt;
 you cannot have modes listed that are larger. Each color depth can have a&lt;br /&gt;
 differently-sized virtual screen&lt;br /&gt;
 &lt;br /&gt;
 Please answer the following question with either 'y' or 'n'.&lt;br /&gt;
 Do you want a virtual screen that is larger than the physical screen?&lt;br /&gt;
 &lt;br /&gt;
[n][Enter]&lt;br /&gt;
&lt;br /&gt;
==Setarea adâncimii de culoare==&lt;br /&gt;
&lt;br /&gt;
 Please specify which color depth you want to use by default:&lt;br /&gt;
 &lt;br /&gt;
   1  1 bit (monochrome)&lt;br /&gt;
   2  4 bits (16 colors)&lt;br /&gt;
   3  8 bits (256 colors)&lt;br /&gt;
   4  16 bits (65536 colors)&lt;br /&gt;
   5  24 bits (16 million colors)&lt;br /&gt;
 &lt;br /&gt;
 Enter a number to choose the default depth. &lt;br /&gt;
&lt;br /&gt;
[4][Enter]&lt;br /&gt;
&lt;br /&gt;
==Salvarea modificărilor==&lt;br /&gt;
&lt;br /&gt;
 I am going to write the xorg.conf file now. Make sure you don't accidently&lt;br /&gt;
 overwrite a previously configured one.&lt;br /&gt;
 &lt;br /&gt;
 Shall I write it to /etc/X11/xorg.conf?&lt;br /&gt;
&lt;br /&gt;
[y][Enter]&lt;br /&gt;
&lt;br /&gt;
*Confirmarea scrierii fişierului de configurare&lt;br /&gt;
 &lt;br /&gt;
 File has been written. Take a look at it before starting an X server. Note that&lt;br /&gt;
 the xorg.conf file must be in one of the directories searched by the server&lt;br /&gt;
 (e.g. /etc/X11) in order to be used. Within the server press&lt;br /&gt;
 ctrl, alt and '+' simultaneously to cycle video resolutions. Pressing ctrl,&lt;br /&gt;
 alt and backspace simultaneously immediately exits the server (use if&lt;br /&gt;
 the monitor doesn't sync for a particular mode).&lt;br /&gt;
 &lt;br /&gt;
 For further configuration, refer to the xorg.conf(5x) manual page.&lt;br /&gt;
 &lt;br /&gt;
 root@TheLinux:~#&lt;br /&gt;
&lt;br /&gt;
==Fişierul /etc/X11/xorg.conf==&lt;br /&gt;
&lt;br /&gt;
[[Category:Pending]]&lt;/div&gt;</summary>
		<author><name>Csdexter</name></author>	</entry>

	<entry>
		<id>http://wiki.linux360.ro/index.php?title=Talk:Supra%C3%83%C2%AEnc%C3%84%C6%92rcarea_operatorilor_%C3%83%C2%AEn_limbajul_C-plus-plus&amp;diff=3306</id>
		<title>Talk:SupraÃ®ncÄƒrcarea operatorilor Ã®n limbajul C-plus-plus</title>
		<link rel="alternate" type="text/html" href="http://wiki.linux360.ro/index.php?title=Talk:Supra%C3%83%C2%AEnc%C3%84%C6%92rcarea_operatorilor_%C3%83%C2%AEn_limbajul_C-plus-plus&amp;diff=3306"/>
				<updated>2006-12-11T16:55:10Z</updated>
		
		<summary type="html">&lt;p&gt;Csdexter: Forgot to sign my entry&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Despre continut ==&lt;br /&gt;
* Am scos eu comentariile din cod pentru ca stilul WikiPedia (pe care il urmam ca model) este impersonal. As dori sa multumesc aici lui [[User:andreich]] si lui [[User:Radubolovan|Radu Bolovan]] pentru contributiile aduse la exemplul de C++ dat in articol. [[User:Csdexter|@Dexter]] 12:43, 22 November 2005 (EET)&lt;br /&gt;
* Multumim lui [[User:Radubolovan|Radu Bolovan]] pentru corectura negatiei (Ar fi mai simplu). [[User:Csdexter|@Dexter]] 22:08, 22 November 2005 (EET)&lt;br /&gt;
* Si eu iti multumesc [[User:Csdexter|@Dexter]] pentru forma actuala a paginii. Arata mult mai bine asa cum este acum decat cum o facusem eu! [[User:Radubolovan|Radu Bolovan]] 10:42, 23 November 2005 (EET)&lt;br /&gt;
* Il rugam pe [[User:86.35.118.6]] sa se abtina, pe viitor, de la stersaturi nemotivate -- in caz contrar risca sa i se impuna restrictii administrative de acces la acest Wiki. [[User:Csdexter|@Dexter]] 15:11, 1 December 2005 (EET)&lt;br /&gt;
* Am primit astazi urmatoarele observatii de la un cititor: &amp;quot;''Buna ziua, Am incercat sa iau legatura cu autorul unuia dintre articolele de pe wiki pentru a-i transmite cateva sugestii legate de o bucata de cod data ca exemplu, fara succes insa. Articolul este «'''Supraîncărcarea operatorilor în limbajul C++'''» iar sugestiile respective ar fi:''&lt;br /&gt;
** ''constructorul de copiere definit in forma &amp;lt;code&amp;gt;&amp;lt;cpp/&amp;gt;MyPoint(MyPoint &amp;amp;r);&amp;lt;/code&amp;gt; se foloseste numai in (rarele) cazuri cand este necesara modificarea parametrului in interiorul sau, in marea majoritate a cazurilor preferandu-se forma &amp;lt;code&amp;gt;&amp;lt;cpp/&amp;gt;MyPoint(MyPoint const &amp;amp;r);&amp;lt;/code&amp;gt; a doua forma, printre altele, iti permite sa copii obiecte temporare (se foloseste de exemplu in &amp;lt;tt&amp;gt;out &amp;lt;&amp;lt; pt++ &amp;lt;&amp;lt; endl;&amp;lt;/tt&amp;gt;);''&lt;br /&gt;
** ''prin supraincarcare nu poate fi modificata aritatea unui operator, prin urmare operatorul &amp;lt;tt&amp;gt;=&amp;lt;/tt&amp;gt; nu poate fi supraincarcat astfel:&amp;lt;code&amp;gt;&amp;lt;cpp/&amp;gt;MyPoint&amp;amp; operator=(double a, double b);&amp;lt;/code&amp;gt;pentru ca ar deveni operator ternar (cum s-ar folosi intr-o expresie in cazul asta?);''&lt;br /&gt;
** ''a doua varianta a operatorului &amp;lt;tt&amp;gt;*&amp;lt;/tt&amp;gt;, multiplicarea cu o constanta, ar trebui sa returneze un temporar, la fel ca prima varianta, nu sa modifice obiectul initial si apoi sa returneze o referinta la el (este oarecum nefiresc ca in &amp;lt;tt&amp;gt;p1 = p2 * 5&amp;lt;/tt&amp;gt; sa se modifice atat &amp;lt;tt&amp;gt;p1&amp;lt;/tt&amp;gt; cat si &amp;lt;tt&amp;gt;p2&amp;lt;/tt&amp;gt;, lasand la o parte faptul ca &amp;lt;tt&amp;gt;p1&amp;lt;/tt&amp;gt; ar trebui declarat ca referinta);''&lt;br /&gt;
** ''plecand de la punctul anterior, ar fi fost utila zic eu si varianta de supraincarcare care sa permita si expresii de genul &amp;lt;tt&amp;gt;p1 = 5 * p2&amp;lt;/tt&amp;gt;;''&lt;br /&gt;
** ''la operatorii aritmetici uzuali (&amp;lt;tt&amp;gt;+&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;-&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;*&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;/&amp;lt;/tt&amp;gt;) parametrul poate fi &amp;lt;tt&amp;gt;const&amp;lt;/tt&amp;gt;, pentru ca in mod normal acestia nu modifica valorile argumentelor;''&lt;br /&gt;
** ''la supraincarcarea operatorului &amp;lt;tt&amp;gt;&amp;gt;&amp;gt;&amp;lt;/tt&amp;gt; al doilea parametru nu poate fi &amp;lt;tt&amp;gt;const&amp;lt;/tt&amp;gt;, scopul fiind tocmai de a-i modifica valoarea;''&lt;br /&gt;
** ''din moment ce membrii &amp;lt;tt&amp;gt;x&amp;lt;/tt&amp;gt; si &amp;lt;tt&amp;gt;y&amp;lt;/tt&amp;gt; sunt double, &amp;lt;tt&amp;gt;getX()&amp;lt;/tt&amp;gt; si &amp;lt;tt&amp;gt;getY()&amp;lt;/tt&amp;gt; ar trebui sa returneze tot &amp;lt;tt&amp;gt;double&amp;lt;/tt&amp;gt;;&lt;br /&gt;
** ''pentru forma postfixata a operatorului &amp;lt;tt&amp;gt;++&amp;lt;/tt&amp;gt; se foloseste de obicei un parametru anonim:&amp;lt;code&amp;gt;&amp;lt;cpp/&amp;gt;MyPoint MyPoint::operator++(int)&amp;lt;/code&amp;gt;(nu stiu daca vine din standard chestia asta sau e best practice)''&lt;br /&gt;
** ''tot legat de &amp;lt;tt&amp;gt;++&amp;lt;/tt&amp;gt; postfixat, pentru a obtine comportarea fireasca pentru un operator postfixat, se face o copie a obiectului initial, se modifica obiectul si apoi se returneaza copia initiala (altfel se obtine acelasi efect ca si in cazul variantei prefixate)''&amp;quot;.&lt;br /&gt;
E cineva prin jur cu suficienta experienta in ANSI C++ spre a se uita peste recomandari si eventual chiar a le implementa in articol? [[User:Csdexter|@Dexter]] 18:55, 11 December 2006 (EET) în numele lui Ionuţ Luncanu.&lt;/div&gt;</summary>
		<author><name>Csdexter</name></author>	</entry>

	<entry>
		<id>http://wiki.linux360.ro/index.php?title=Talk:Supra%C3%83%C2%AEnc%C3%84%C6%92rcarea_operatorilor_%C3%83%C2%AEn_limbajul_C-plus-plus&amp;diff=3305</id>
		<title>Talk:SupraÃ®ncÄƒrcarea operatorilor Ã®n limbajul C-plus-plus</title>
		<link rel="alternate" type="text/html" href="http://wiki.linux360.ro/index.php?title=Talk:Supra%C3%83%C2%AEnc%C3%84%C6%92rcarea_operatorilor_%C3%83%C2%AEn_limbajul_C-plus-plus&amp;diff=3305"/>
				<updated>2006-12-11T16:53:50Z</updated>
		
		<summary type="html">&lt;p&gt;Csdexter: Added suggestions from Ionuţ Luncanu&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Despre continut ==&lt;br /&gt;
* Am scos eu comentariile din cod pentru ca stilul WikiPedia (pe care il urmam ca model) este impersonal. As dori sa multumesc aici lui [[User:andreich]] si lui [[User:Radubolovan|Radu Bolovan]] pentru contributiile aduse la exemplul de C++ dat in articol. [[User:Csdexter|@Dexter]] 12:43, 22 November 2005 (EET)&lt;br /&gt;
* Multumim lui [[User:Radubolovan|Radu Bolovan]] pentru corectura negatiei (Ar fi mai simplu). [[User:Csdexter|@Dexter]] 22:08, 22 November 2005 (EET)&lt;br /&gt;
* Si eu iti multumesc [[User:Csdexter|@Dexter]] pentru forma actuala a paginii. Arata mult mai bine asa cum este acum decat cum o facusem eu! [[User:Radubolovan|Radu Bolovan]] 10:42, 23 November 2005 (EET)&lt;br /&gt;
* Il rugam pe [[User:86.35.118.6]] sa se abtina, pe viitor, de la stersaturi nemotivate -- in caz contrar risca sa i se impuna restrictii administrative de acces la acest Wiki. [[User:Csdexter|@Dexter]] 15:11, 1 December 2005 (EET)&lt;br /&gt;
* Am primit astazi urmatoarele observatii de la un cititor: &amp;quot;''Buna ziua, Am incercat sa iau legatura cu autorul unuia dintre articolele de pe wiki pentru a-i transmite cateva sugestii legate de o bucata de cod data ca exemplu, fara succes insa. Articolul este «'''Supraîncărcarea operatorilor în limbajul C++'''» iar sugestiile respective ar fi:''&lt;br /&gt;
** ''constructorul de copiere definit in forma &amp;lt;code&amp;gt;&amp;lt;cpp/&amp;gt;MyPoint(MyPoint &amp;amp;r);&amp;lt;/code&amp;gt; se foloseste numai in (rarele) cazuri cand este necesara modificarea parametrului in interiorul sau, in marea majoritate a cazurilor preferandu-se forma &amp;lt;code&amp;gt;&amp;lt;cpp/&amp;gt;MyPoint(MyPoint const &amp;amp;r);&amp;lt;/code&amp;gt; a doua forma, printre altele, iti permite sa copii obiecte temporare (se foloseste de exemplu in &amp;lt;tt&amp;gt;out &amp;lt;&amp;lt; pt++ &amp;lt;&amp;lt; endl;&amp;lt;/tt&amp;gt;);''&lt;br /&gt;
** ''prin supraincarcare nu poate fi modificata aritatea unui operator, prin urmare operatorul &amp;lt;tt&amp;gt;=&amp;lt;/tt&amp;gt; nu poate fi supraincarcat astfel:&amp;lt;code&amp;gt;&amp;lt;cpp/&amp;gt;MyPoint&amp;amp; operator=(double a, double b);&amp;lt;/code&amp;gt;pentru ca ar deveni operator ternar (cum s-ar folosi intr-o expresie in cazul asta?);''&lt;br /&gt;
** ''a doua varianta a operatorului &amp;lt;tt&amp;gt;*&amp;lt;/tt&amp;gt;, multiplicarea cu o constanta, ar trebui sa returneze un temporar, la fel ca prima varianta, nu sa modifice obiectul initial si apoi sa returneze o referinta la el (este oarecum nefiresc ca in &amp;lt;tt&amp;gt;p1 = p2 * 5&amp;lt;/tt&amp;gt; sa se modifice atat &amp;lt;tt&amp;gt;p1&amp;lt;/tt&amp;gt; cat si &amp;lt;tt&amp;gt;p2&amp;lt;/tt&amp;gt;, lasand la o parte faptul ca &amp;lt;tt&amp;gt;p1&amp;lt;/tt&amp;gt; ar trebui declarat ca referinta);''&lt;br /&gt;
** ''plecand de la punctul anterior, ar fi fost utila zic eu si varianta de supraincarcare care sa permita si expresii de genul &amp;lt;tt&amp;gt;p1 = 5 * p2&amp;lt;/tt&amp;gt;;''&lt;br /&gt;
** ''la operatorii aritmetici uzuali (&amp;lt;tt&amp;gt;+&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;-&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;*&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;/&amp;lt;/tt&amp;gt;) parametrul poate fi &amp;lt;tt&amp;gt;const&amp;lt;/tt&amp;gt;, pentru ca in mod normal acestia nu modifica valorile argumentelor;''&lt;br /&gt;
** ''la supraincarcarea operatorului &amp;lt;tt&amp;gt;&amp;gt;&amp;gt;&amp;lt;/tt&amp;gt; al doilea parametru nu poate fi &amp;lt;tt&amp;gt;const&amp;lt;/tt&amp;gt;, scopul fiind tocmai de a-i modifica valoarea;''&lt;br /&gt;
** ''din moment ce membrii &amp;lt;tt&amp;gt;x&amp;lt;/tt&amp;gt; si &amp;lt;tt&amp;gt;y&amp;lt;/tt&amp;gt; sunt double, &amp;lt;tt&amp;gt;getX()&amp;lt;/tt&amp;gt; si &amp;lt;tt&amp;gt;getY()&amp;lt;/tt&amp;gt; ar trebui sa returneze tot &amp;lt;tt&amp;gt;double&amp;lt;/tt&amp;gt;;&lt;br /&gt;
** ''pentru forma postfixata a operatorului &amp;lt;tt&amp;gt;++&amp;lt;/tt&amp;gt; se foloseste de obicei un parametru anonim:&amp;lt;code&amp;gt;&amp;lt;cpp/&amp;gt;MyPoint MyPoint::operator++(int)&amp;lt;/code&amp;gt;(nu stiu daca vine din standard chestia asta sau e best practice)''&lt;br /&gt;
** ''tot legat de &amp;lt;tt&amp;gt;++&amp;lt;/tt&amp;gt; postfixat, pentru a obtine comportarea fireasca pentru un operator postfixat, se face o copie a obiectului initial, se modifica obiectul si apoi se returneaza copia initiala (altfel se obtine acelasi efect ca si in cazul variantei prefixate)''&amp;quot;.&lt;br /&gt;
E cineva prin jur cu suficienta experienta in ANSI C++ spre a se uita peste recomandari si eventual chiar a le implementa in articol?&lt;/div&gt;</summary>
		<author><name>Csdexter</name></author>	</entry>

	<entry>
		<id>http://wiki.linux360.ro/index.php?title=User_talk:Vladg/incomplete/Demararea_fizic%C3%84%C6%92&amp;diff=3303</id>
		<title>User talk:Vladg/incomplete/Demararea fizicÄƒ</title>
		<link rel="alternate" type="text/html" href="http://wiki.linux360.ro/index.php?title=User_talk:Vladg/incomplete/Demararea_fizic%C3%84%C6%92&amp;diff=3303"/>
				<updated>2006-12-10T22:49:31Z</updated>
		
		<summary type="html">&lt;p&gt;Csdexter: More syntax fixes -- must be the hour&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Am ales acest scurt fragment pentru a-ti da o idee despre stilul intentionat aici:&lt;br /&gt;
&lt;br /&gt;
'''Iniţializarea unui sistem de calcul'''&lt;br /&gt;
&lt;br /&gt;
Procesul de iniţializare al unui computer&amp;lt;ref&amp;gt;vezi [http://dexonline.ro/search.php?cuv=computer computer] versus [http://dexonline.ro/search.php?cuv=calculator calculator]&amp;lt;/ref&amp;gt; este dependent de arhitectura sa.&amp;lt;ref&amp;gt;microprocesorul este o parte esenţială din definiţia unei arhitecturi, dar un anume model de microprocesor nu defineşte ''sine die'' o arhitectură de sistem de calcul&amp;lt;/ref&amp;gt; În cazul de faţă, vom trata particularităţile specifice arhitecturii IBM PC&amp;lt;ref&amp;gt;i386 sau x86 se referă la procesor pe când noi ne referim la toate PC-urile din lumea asta, adică la &amp;quot;''IBM PC &amp;amp; clones/compatibles''&amp;quot;&amp;lt;/ref&amp;gt;. Procesul este unul complex, dar poate fi rezumat în felul următor:&lt;br /&gt;
&lt;br /&gt;
* În momentul imediat următor conectării sistemului la reţea au loc mai multe procese de natură analogică, cum ar fi (pentru simplificare, presupunem că este vorba de un sistem AT&amp;lt;ref&amp;gt;Advanced Technology&amp;lt;/ref&amp;gt; sau un sistem ATX&amp;lt;ref&amp;gt;AT Extended&amp;lt;/ref&amp;gt; programat să pornească automat la apariţia sau revenirea tensiunii de reţea):&lt;br /&gt;
** Sursa de alimentare detectează tensiunea reţelei şi intră în regim de funcţionare stabil, ca urmare a acestui fapt, la ieşirea sa apar tensiunile nominale necesare alimentării componentelor electronice din sistemul de calcul&lt;br /&gt;
** Dupa un interval de timp suficient de lung pentru ca tensiunile de ieşire ale sursei să se fi stabilizat şi intrat în standard, microcontrolerul din sursa pune semnalul PG&amp;lt;ref&amp;gt;Power Good&amp;lt;/ref&amp;gt; pe &amp;quot;1&amp;quot; logic semnalizând astfel controlerului de alimentare prezent pe placa de bază ca tensiunile de alimentare s-au stabilizat şi sunt deci utilizabile în domeniul digital&lt;br /&gt;
** Controlerul de alimentare verifică în acest moment la rându-i tensiunile livrate şi, în cazul în care acestea corespund standardelor programate de producător, începe alimentarea diverselor etaje funcţionale de pe placa de bază, de obicei începând cu controlerele de ceas şi periferie&amp;lt;ref name=&amp;quot;southbridge&amp;quot;&amp;gt;South Bridge&amp;lt;/ref&amp;gt;&lt;br /&gt;
* Controlerul de ceas îşi pune în funcţiune rezonatorul cu cuarţ din dotare şi începe să genereze (uneori prin multiplicare şi/sau diviziune) semnalele de tact necesare celorlalte blocuri funcţionale&lt;br /&gt;
* În multe sisteme, controlerul de ceas cumulează şi funcţia de controler de pornire aşa că, urmând secvenţa programată de producător, resetează pe rând şi pune în funcţiune blocurile funcţionale şi magistralele legate la acesta&lt;br /&gt;
* Controlerul de periferie&amp;lt;ref name=&amp;quot;southbridge&amp;quot;/&amp;gt; îşi execută secvenţa de iniţializare, de cele mai multe ori executându-şi propriul microcod, fără acces la alte memorii. Odată ce ea este executată, acesta iniţializează şi pune în funcţiune controlerul de magistrală&amp;lt;ref name=&amp;quot;northbridge&amp;quot;&amp;gt;North Bridge&amp;lt;/ref&amp;gt;&lt;br /&gt;
* Controlerul de magistrală&amp;lt;ref name=&amp;quot;northbridge&amp;quot;/&amp;gt; pune în funcţiune controlerul de memorie (uneori sunt aceeaşi unitate funcţională, alteori&amp;lt;ref&amp;gt;vezi cazul AMD64&amp;lt;/ref&amp;gt; sunt blocuri diferite) şi procesorul central&lt;br /&gt;
* Un standard istoric dictează ca acesta, ca urmare a secvenţei de resetare, va începe să execute cod de la adresa &lt;br /&gt;
&lt;br /&gt;
(to be continued, mai scriu si maine)&lt;br /&gt;
&lt;br /&gt;
La pornirea sursei de alimentare, memoria primară a sistemului(memoria cu acces aleatoriu — engl.: RAM) este goală, aşa că microprocesorul este programat să execute instrucţiunile situate într-o zonă rezervată(FFFF0h) a memoriei numai-citire(engl. presc. ROM) a sistemului de intrare/iesire pe bază(engl.presc. BIOS). Scopul acestei zone este de a direcţiona microprocesorul către locaţia unde se află programul BIOS.&lt;br /&gt;
&lt;br /&gt;
* Odată ce BIOSul este încărcat în memorie, acesta efectuează mai multe operaţii: autotestarea la punerea în funcţiune(engl. presc. POST), initializarea/inventar al dispozitivelor ş.a.&lt;br /&gt;
&lt;br /&gt;
* Către final, BIOSul caută o unitate de disc de pe care să demareze. De obicei, această unitate de disc este selecţionată în prealabil de către utilizator şi poate fi un CD-ROM, o unitate de dischete, un hard disc..&lt;br /&gt;
&lt;br /&gt;
* Când găseşte unitatea de disc, îi încarcă şi execută sectorul de demarare(engl. boot sector), care, în cazul unui hard disc, poartă numele de MBR(Master Boot Record) şi este localizat în primul sector al hard discului(primii 512 octeţi). Din momentul acesta, controlul este predat codului din MBR.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Csdexter</name></author>	</entry>

	<entry>
		<id>http://wiki.linux360.ro/index.php?title=User_talk:Vladg/incomplete/Demararea_fizic%C3%84%C6%92&amp;diff=3302</id>
		<title>User talk:Vladg/incomplete/Demararea fizicÄƒ</title>
		<link rel="alternate" type="text/html" href="http://wiki.linux360.ro/index.php?title=User_talk:Vladg/incomplete/Demararea_fizic%C3%84%C6%92&amp;diff=3302"/>
				<updated>2006-12-10T22:48:03Z</updated>
		
		<summary type="html">&lt;p&gt;Csdexter: Wiki syntax fix (missing trailing slash on XML tag)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Am ales acest scurt fragment pentru a-ti da o idee despre stilul intentionat aici:&lt;br /&gt;
&lt;br /&gt;
'''Iniţializarea unui sistem de calcul'''&lt;br /&gt;
&lt;br /&gt;
Procesul de iniţializare al unui computer&amp;lt;ref&amp;gt;vezi [http://dexonline.ro/search.php?cuv=computer computer] versus [http://dexonline.ro/search.php?cuv=calculator calculator]&amp;lt;/ref&amp;gt; este dependent de arhitectura sa.&amp;lt;ref&amp;gt;microprocesorul este o parte esenţială din definiţia unei arhitecturi, dar un anume model de microprocesor nu defineşte ''sine die'' o arhitectură de sistem de calcul&amp;lt;/ref&amp;gt; În cazul de faţă, vom trata particularităţile specifice arhitecturii IBM PC&amp;lt;ref&amp;gt;i386 sau x86 se referă la procesor pe când noi ne referim la toate PC-urile din lumea asta, adică la &amp;quot;''IBM PC &amp;amp; clones/compatibles''&amp;quot;&amp;lt;/ref&amp;gt;. Procesul este unul complex, dar poate fi rezumat în felul următor:&lt;br /&gt;
&lt;br /&gt;
* În momentul imediat următor conectării sistemului la reţea au loc mai multe procese de natură analogică, cum ar fi (pentru simplificare, presupunem că este vorba de un sistem AT&amp;lt;ref&amp;gt;Advanced Technology&amp;lt;/ref&amp;gt; sau un sistem ATX&amp;lt;ref&amp;gt;AT Extended&amp;lt;/ref&amp;gt; programat să pornească automat la apariţia sau revenirea tensiunii de reţea):&lt;br /&gt;
** Sursa de alimentare detectează tensiunea reţelei şi intră în regim de funcţionare stabil, ca urmare a acestui fapt, la ieşirea sa apar tensiunile nominale necesare alimentării componentelor electronice din sistemul de calcul&lt;br /&gt;
** Dupa un interval de timp suficient de lung pentru ca tensiunile de ieşire ale sursei să se fi stabilizat şi intrat în standard, microcontrolerul din sursa pune semnalul PG&amp;lt;ref&amp;gt;Power Good&amp;lt;/ref&amp;gt; pe &amp;quot;1&amp;quot; logic semnalizând astfel controlerului de alimentare prezent pe placa de bază ca tensiunile de alimentare s-au stabilizat şi sunt deci utilizabile în domeniul digital&lt;br /&gt;
** Controlerul de alimentare verifică în acest moment la rându-i tensiunile livrate şi, în cazul în care acestea corespund standardelor programate de producător, începe alimentarea diverselor etaje funcţionale de pe placa de bază, de obicei începând cu controlerele de ceas şi periferie&amp;lt;ref name=southbridge&amp;gt;South Bridge&amp;lt;/ref&amp;gt;&lt;br /&gt;
* Controlerul de ceas îşi pune în funcţiune rezonatorul cu cuarţ din dotare şi începe să genereze (uneori prin multiplicare şi/sau diviziune) semnalele de tact necesare celorlalte blocuri funcţionale&lt;br /&gt;
* În multe sisteme, controlerul de ceas cumulează şi funcţia de controler de pornire aşa că, urmând secvenţa programată de producător, resetează pe rând şi pune în funcţiune blocurile funcţionale şi magistralele legate la acesta&lt;br /&gt;
* Controlerul de periferie&amp;lt;ref name=southbridge&amp;gt; îşi execută secvenţa de iniţializare, de cele mai multe ori executându-şi propriul microcod, fără acces la alte memorii. Odată ce ea este executată, acesta iniţializează şi pune în funcţiune controlerul de magistrală&amp;lt;ref name=northbridge&amp;gt;&lt;br /&gt;
* Controlerul de magistrală&amp;lt;ref name=northbridge/&amp;gt; pune în funcţiune controlerul de memorie (uneori sunt aceeaşi unitate funcţională, alteori&amp;lt;ref&amp;gt;vezi cazul AMD64&amp;lt;/ref&amp;gt; sunt blocuri diferite) şi procesorul central&lt;br /&gt;
* Un standard istoric dictează ca acesta, ca urmare a secvenţei de resetare, va începe să execute cod de la adresa &lt;br /&gt;
&lt;br /&gt;
(to be continued, mai scriu si maine)&lt;br /&gt;
&lt;br /&gt;
La pornirea sursei de alimentare, memoria primară a sistemului(memoria cu acces aleatoriu — engl.: RAM) este goală, aşa că microprocesorul este programat să execute instrucţiunile situate într-o zonă rezervată(FFFF0h) a memoriei numai-citire(engl. presc. ROM) a sistemului de intrare/iesire pe bază(engl.presc. BIOS). Scopul acestei zone este de a direcţiona microprocesorul către locaţia unde se află programul BIOS.&lt;br /&gt;
&lt;br /&gt;
* Odată ce BIOSul este încărcat în memorie, acesta efectuează mai multe operaţii: autotestarea la punerea în funcţiune(engl. presc. POST), initializarea/inventar al dispozitivelor ş.a.&lt;br /&gt;
&lt;br /&gt;
* Către final, BIOSul caută o unitate de disc de pe care să demareze. De obicei, această unitate de disc este selecţionată în prealabil de către utilizator şi poate fi un CD-ROM, o unitate de dischete, un hard disc..&lt;br /&gt;
&lt;br /&gt;
* Când găseşte unitatea de disc, îi încarcă şi execută sectorul de demarare(engl. boot sector), care, în cazul unui hard disc, poartă numele de MBR(Master Boot Record) şi este localizat în primul sector al hard discului(primii 512 octeţi). Din momentul acesta, controlul este predat codului din MBR.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Csdexter</name></author>	</entry>

	<entry>
		<id>http://wiki.linux360.ro/index.php?title=User_talk:Vladg/incomplete/Demararea_fizic%C3%84%C6%92&amp;diff=3301</id>
		<title>User talk:Vladg/incomplete/Demararea fizicÄƒ</title>
		<link rel="alternate" type="text/html" href="http://wiki.linux360.ro/index.php?title=User_talk:Vladg/incomplete/Demararea_fizic%C3%84%C6%92&amp;diff=3301"/>
				<updated>2006-12-10T22:46:48Z</updated>
		
		<summary type="html">&lt;p&gt;Csdexter: Temporary work saved&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Am ales acest scurt fragment pentru a-ti da o idee despre stilul intentionat aici:&lt;br /&gt;
&lt;br /&gt;
'''Iniţializarea unui sistem de calcul'''&lt;br /&gt;
&lt;br /&gt;
Procesul de iniţializare al unui computer&amp;lt;ref&amp;gt;vezi [http://dexonline.ro/search.php?cuv=computer computer] versus [http://dexonline.ro/search.php?cuv=calculator calculator]&amp;lt;/ref&amp;gt; este dependent de arhitectura sa.&amp;lt;ref&amp;gt;microprocesorul este o parte esenţială din definiţia unei arhitecturi, dar un anume model de microprocesor nu defineşte ''sine die'' o arhitectură de sistem de calcul&amp;lt;/ref&amp;gt; În cazul de faţă, vom trata particularităţile specifice arhitecturii IBM PC&amp;lt;ref&amp;gt;i386 sau x86 se referă la procesor pe când noi ne referim la toate PC-urile din lumea asta, adică la &amp;quot;''IBM PC &amp;amp; clones/compatibles''&amp;quot;&amp;lt;/ref&amp;gt;. Procesul este unul complex, dar poate fi rezumat în felul următor:&lt;br /&gt;
&lt;br /&gt;
* În momentul imediat următor conectării sistemului la reţea au loc mai multe procese de natură analogică, cum ar fi (pentru simplificare, presupunem că este vorba de un sistem AT&amp;lt;ref&amp;gt;Advanced Technology&amp;lt;/ref&amp;gt; sau un sistem ATX&amp;lt;ref&amp;gt;AT Extended&amp;lt;/ref&amp;gt; programat să pornească automat la apariţia sau revenirea tensiunii de reţea):&lt;br /&gt;
** Sursa de alimentare detectează tensiunea reţelei şi intră în regim de funcţionare stabil, ca urmare a acestui fapt, la ieşirea sa apar tensiunile nominale necesare alimentării componentelor electronice din sistemul de calcul&lt;br /&gt;
** Dupa un interval de timp suficient de lung pentru ca tensiunile de ieşire ale sursei să se fi stabilizat şi intrat în standard, microcontrolerul din sursa pune semnalul PG&amp;lt;ref&amp;gt;Power Good&amp;lt;/ref&amp;gt; pe &amp;quot;1&amp;quot; logic semnalizând astfel controlerului de alimentare prezent pe placa de bază ca tensiunile de alimentare s-au stabilizat şi sunt deci utilizabile în domeniul digital&lt;br /&gt;
** Controlerul de alimentare verifică în acest moment la rându-i tensiunile livrate şi, în cazul în care acestea corespund standardelor programate de producător, începe alimentarea diverselor etaje funcţionale de pe placa de bază, de obicei începând cu controlerele de ceas şi periferie&amp;lt;ref name=southbridge&amp;gt;South Bridge&amp;lt;/ref&amp;gt;&lt;br /&gt;
* Controlerul de ceas îşi pune în funcţiune rezonatorul cu cuarţ din dotare şi începe să genereze (uneori prin multiplicare şi/sau diviziune) semnalele de tact necesare celorlalte blocuri funcţionale&lt;br /&gt;
* În multe sisteme, controlerul de ceas cumulează şi funcţia de controler de pornire aşa că, urmând secvenţa programată de producător, resetează pe rând şi pune în funcţiune blocurile funcţionale şi magistralele legate la acesta&lt;br /&gt;
* Controlerul de periferie&amp;lt;ref name=southbridge&amp;gt; îşi execută secvenţa de iniţializare, de cele mai multe ori executându-şi propriul microcod, fără acces la alte memorii. Odată ce ea este executată, acesta iniţializează şi pune în funcţiune controlerul de magistrală&amp;lt;ref name=northbridge&amp;gt;&lt;br /&gt;
* Controlerul de magistrală&amp;lt;ref name=northbridge&amp;gt; pune în funcţiune controlerul de memorie (uneori sunt aceeaşi unitate funcţională, alteori&amp;lt;ref&amp;gt;vezi cazul AMD64&amp;lt;/ref&amp;gt; sunt blocuri diferite) şi procesorul central&lt;br /&gt;
* Un standard istoric dictează ca acesta, ca urmare a secvenţei de resetare, va începe să execute cod de la adresa &lt;br /&gt;
&lt;br /&gt;
(to be continued, mai scriu si maine)&lt;br /&gt;
&lt;br /&gt;
La pornirea sursei de alimentare, memoria primară a sistemului(memoria cu acces aleatoriu — engl.: RAM) este goală, aşa că microprocesorul este programat să execute instrucţiunile situate într-o zonă rezervată(FFFF0h) a memoriei numai-citire(engl. presc. ROM) a sistemului de intrare/iesire pe bază(engl.presc. BIOS). Scopul acestei zone este de a direcţiona microprocesorul către locaţia unde se află programul BIOS.&lt;br /&gt;
&lt;br /&gt;
* Odată ce BIOSul este încărcat în memorie, acesta efectuează mai multe operaţii: autotestarea la punerea în funcţiune(engl. presc. POST), initializarea/inventar al dispozitivelor ş.a.&lt;br /&gt;
&lt;br /&gt;
* Către final, BIOSul caută o unitate de disc de pe care să demareze. De obicei, această unitate de disc este selecţionată în prealabil de către utilizator şi poate fi un CD-ROM, o unitate de dischete, un hard disc..&lt;br /&gt;
&lt;br /&gt;
* Când găseşte unitatea de disc, îi încarcă şi execută sectorul de demarare(engl. boot sector), care, în cazul unui hard disc, poartă numele de MBR(Master Boot Record) şi este localizat în primul sector al hard discului(primii 512 octeţi). Din momentul acesta, controlul este predat codului din MBR.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Csdexter</name></author>	</entry>

	<entry>
		<id>http://wiki.linux360.ro/index.php?title=User:Vladg/incomplete/Demararea_fizic%C3%84%C6%92&amp;diff=3300</id>
		<title>User:Vladg/incomplete/Demararea fizicÄƒ</title>
		<link rel="alternate" type="text/html" href="http://wiki.linux360.ro/index.php?title=User:Vladg/incomplete/Demararea_fizic%C3%84%C6%92&amp;diff=3300"/>
				<updated>2006-12-10T21:54:56Z</updated>
		
		<summary type="html">&lt;p&gt;Csdexter: Added pointer to extra work&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Procesul de demarare fizică al unui calculator este dependent de arhitectura microprocesorului. În cazul de faţă, această arhitectură va fi x86/x86-compatibilă. Procesul este unul complex, dar poate fi rezumat în felul urmator:&lt;br /&gt;
&lt;br /&gt;
* La pornirea sursei de alimentare, memoria primară a sistemului(memoria cu acces aleatoriu — engl.: RAM) este goală, aşa că microprocesorul este programat să execute instrucţiunile situate într-o zonă rezervată(FFFF0h) a memoriei numai-citire(engl. presc. ROM) a sistemului de intrare/iesire pe bază(engl.presc. BIOS). Scopul acestei zone este de a direcţiona microprocesorul către locaţia unde se află programul BIOS.&lt;br /&gt;
&lt;br /&gt;
* Odată ce BIOSul este încărcat în memorie, acesta efectuează mai multe operaţii: autotestarea la punerea în funcţiune(engl. presc. POST), initializarea/inventar al dispozitivelor ş.a.&lt;br /&gt;
&lt;br /&gt;
* Către final, BIOSul caută o unitate de disc de pe care să demareze. De obicei, această unitate de disc este selecţionată în prealabil de către utilizator şi poate fi un CD-ROM, o unitate de dischete, un hard disc..&lt;br /&gt;
&lt;br /&gt;
* Când găseşte unitatea de disc, îi încarcă şi execută sectorul de demarare(engl. boot sector), care, în cazul unui hard disc, poartă numele de MBR(Master Boot Record) şi este localizat în primul sector al hard discului(primii 512 octeţi). Din momentul acesta, controlul este predat codului din MBR.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Vezi discutia din pagina de discutii -- ti-am lasat cateva idei acolo ;-) --[[User:Csdexter|@Dexter]] 23:54, 10 December 2006 (EET)&lt;/div&gt;</summary>
		<author><name>Csdexter</name></author>	</entry>

	<entry>
		<id>http://wiki.linux360.ro/index.php?title=Main_Page&amp;diff=3298</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="http://wiki.linux360.ro/index.php?title=Main_Page&amp;diff=3298"/>
				<updated>2006-12-09T19:16:23Z</updated>
		
		<summary type="html">&lt;p&gt;Csdexter: Added newly created article to HowTo list, purged obsolete entries&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* A început migrarea tutorialelor şi ghidurilor (HowTo) din forum în Wiki -- nu ezitaţi să daţi o mână de ajutor ;-) &lt;br /&gt;
* Vă rugăm, folosiţi '''doar''' [[linux360:Sandbox|caietul de ciorne]] pentru încercări şi probe.&lt;br /&gt;
* Pentru acces de editare, vă rugăm contactaţi [mailto:wiki-admin@linux360.ro administraţia].&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
* '''Ultimele 10 [[:Category:HowTo|ghiduri]] actualizate:'''&lt;br /&gt;
** [[Supraveghere video sub Linux]] ([[:Category:FAQ|Întrebări puse frecvent]]/[[:Category:Tips'n'Tricks|ponturi]])&lt;br /&gt;
** [[Debricking Linksys WRT54GL cu OpenWrt]] ([[:Category:Troubleshooting|remedieri]])&lt;br /&gt;
** [[Instalare Gentoo - Sfaturi]] ([[:Category:FAQ|Întrebări puse frecvent]])&lt;br /&gt;
** [[Detecţie componente hardware din consolă]] ([[:Category:FAQ|Întrebări puse frecvent]]/[[:Category:Tips'n'Tricks|ponturi]])&lt;br /&gt;
** [[Dezlipire sticker Microsoft Windows|Cum să scăpăm de abţibildul de la Microsoft?]] ([[:Category:FAQ|Întrebări puse frecvent]]/[[:Category:Tips'n'Tricks|ponturi]])&lt;br /&gt;
** [[Ce este GNU/Linux? / Cum invat Linux?]] ([[:Category:FAQ|Întrebări puse frecvent]])&lt;br /&gt;
** [[Comunica prin lpt|Controlul motoarelor pas cu pas prin portul paralel]] ([[:Category:Programming|programare]])&lt;br /&gt;
** [[Cum dau net mai departe|Redistribuirea/Partajarea conexiunii la Internet]]  ([[:Category:Networking|retea]]/[[:Category:Routing|rutare]])&lt;br /&gt;
** [[Yum în România|&amp;lt;tt&amp;gt;yum&amp;lt;/tt&amp;gt; în România]] ([[:Category:Tips'n'Tricks|ponturi]])&lt;br /&gt;
** [[Postfix tls mysql dovecot|Postfix cu TLS, autentificare din MySQL şi acces prin Dovecot(broken)]] ([[:Category:Networking|reţea]])&lt;br /&gt;
&lt;br /&gt;
* '''Ultimele 10 [[:Category:Tutorial|tutoriale]] actualizate''':&lt;br /&gt;
** [[Setari vim existentiale]] ([[:Category:Tips'n'Tricks|ponturi]])&lt;br /&gt;
** [[Script pentru restabilirea conexiunii ADSL]] ([[:Category:Networking|reţea]])&lt;br /&gt;
** [[Configurare Gaim pentru a afisa in status melodia curenta|Configurarea GAIM  pentru a afişa în status melodia curentă]] ([[:Category:Multimedia|multimedia]]/[[:Category:Office|programe de birotică]])&lt;br /&gt;
** [[Introducere in Gtk-sharp|Introducere în Gtk#]] ([[:Category:Programming|programare]])&lt;br /&gt;
** [[Schimbarea setarilor GTK 2|Schimbarea setărilor Gtk+ 2]] ([[:Category:GEs|medii grafice]]/[[:Category:Tips'n'Tricks|ponturi]])&lt;br /&gt;
** [[Sistem de depanare a aplicatiilor in limbajul C-plus-plus|Sistem de depanare a aplicaţiilor în limbajul C++]] ([[:Category:Programming|programare]])&lt;br /&gt;
** [[Iptables romana|Introducere în &amp;lt;tt&amp;gt;iptables&amp;lt;/tt&amp;gt;]] ([[:Category:Networking|reţea]]/[[:Category:Firewall|filtrare trafic]])&lt;br /&gt;
** [[Supra%C3%AEnc%C4%83rcarea operatorilor %C3%AEn limbajul C-plus-plus|Supraîncărcarea operatorilor în ANSI C++]] ([[:Category:Programming|programare]])&lt;br /&gt;
** [[Securitatea sistemului de operare (Slackware)]] ([[:Category:Tips'n'Tricks|ponturi]])&lt;br /&gt;
&lt;br /&gt;
* '''Ultimele 10 [[:Category:Collection|colecţii]] actualizate''':&lt;br /&gt;
** [[Scripturi BASH|Scripturi Bash utile]] ([[:Category:Programming|programare]])&lt;br /&gt;
** [[Salutare lume!|Salutare, lume!]] ([[:Category:Programming|programare]])&lt;br /&gt;
&lt;br /&gt;
* '''Ultimele 10 [[:Category:Presentation|prezentări]] actualizate''':&lt;br /&gt;
** [[Libipq by example|&amp;lt;tt&amp;gt;libipq&amp;lt;/tt&amp;gt; în exemple]] ([[:Cateogory:Networking|reţea]]/[[:Category:Programming|programare]])&lt;br /&gt;
** [[KDSFlash]] ([[:Category:Graphics|grafică]]/[[:Category:Animation|animaţie]]/[[:Category:Programming|programare]])&lt;br /&gt;
&lt;br /&gt;
* '''Articole [[:Category:Pending|în curs de scriere]]''':&lt;br /&gt;
** [[Echivalentele Linux ale programelor Windows]] ([[User:Raver|raver]])&lt;br /&gt;
** [[Partiţii]] ([[User:Sorin25|sorin25]])&lt;br /&gt;
** [[Autorizarea accesului la resurse web în Apache]] ([[User:Sorin25|sorin25]])&lt;br /&gt;
** [[ACIS|Administrare, configurare şi intreţinere servere]] ([[User:Csdexter|@Dexter]])&lt;br /&gt;
** [[Curbe Bezier|Curbe Bézier]] ([[User:Cbidea|Phaser]])&lt;br /&gt;
** [[Procesul de initializare al unui sistem Slackware GNU/Linux]] ([[User:Vladg|Vladg]])&lt;br /&gt;
** [[Instalarea distribuţiei Slackware Linux]] ([[User:Gabel|gabel]])&lt;/div&gt;</summary>
		<author><name>Csdexter</name></author>	</entry>

	<entry>
		<id>http://wiki.linux360.ro/index.php?title=Slackware_11_(_Kernel_2.6.17.13_%26_2.6.17.13-smp_)_%26_Bootsplash&amp;diff=3277</id>
		<title>Slackware 11 ( Kernel 2.6.17.13 &amp; 2.6.17.13-smp ) &amp; Bootsplash</title>
		<link rel="alternate" type="text/html" href="http://wiki.linux360.ro/index.php?title=Slackware_11_(_Kernel_2.6.17.13_%26_2.6.17.13-smp_)_%26_Bootsplash&amp;diff=3277"/>
				<updated>2006-12-06T00:42:21Z</updated>
		
		<summary type="html">&lt;p&gt;Csdexter: Restored Sandbox&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is the Sandbox of this Wiki ... feel free to test your Wiki proofing skills here.&lt;br /&gt;
&lt;br /&gt;
{{Sandbox}}&lt;/div&gt;</summary>
		<author><name>Csdexter</name></author>	</entry>

	<entry>
		<id>http://wiki.linux360.ro/index.php?title=Ce_este_GNU/Linux%3F_/_Cum_invat_Linux%3F&amp;diff=3118</id>
		<title>Ce este GNU/Linux? / Cum invat Linux?</title>
		<link rel="alternate" type="text/html" href="http://wiki.linux360.ro/index.php?title=Ce_este_GNU/Linux%3F_/_Cum_invat_Linux%3F&amp;diff=3118"/>
				<updated>2006-11-16T09:54:42Z</updated>
		
		<summary type="html">&lt;p&gt;Csdexter: /* Permisiuni */ Same as above&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Ce este GNU/Linux? Cum invat Linux? De unde incep? Cum fac sa...? Ce inseamna...? Cum ma pot ajuta singur in a invata Linux? &lt;br /&gt;
&lt;br /&gt;
Acestea sunt doar cateva din intrebarile pe care un utilizator nou de Linux si le pune in momentul in care incearca sa afle ceva nou, sa invete sa utilizeze si poate chiar sa administreze un astfel de sistem.&lt;br /&gt;
&lt;br /&gt;
Scopul acestui articol este sa raspunda la aceste intrebari, in special la cele care contin notiuni de baza si in general se va urmari sa cuprinda informatiile necesare pentru a intelege despre ce este vorba si cum interactionam cu un sistem GNU/Linux. Subiectele mai avansate vor fi lasate pentru discutie in cadrul forumului sau in cadrul altor articole deoarece depasesc scopul acestuia.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Linux si Windows'''&lt;br /&gt;
&lt;br /&gt;
Vom presupune ca un utilizator are o oarecare experienta cu un sistem de operare, fiind utilizat, pe platformele desktop, cu precadere Microsoft Windows. De aceea vom incerca sa facem pe alocuri o mica comparatie pentru a vedea care sunt corespondentele anumitor notiuni considerate cunoscute deja.&lt;br /&gt;
&lt;br /&gt;
Pentru a vedea corespondentele unor programe de pe Windows pe Linux (sau invers) poate fi consultat articolul [[Echivalentele_Linux_ale_programelor_Windows | Echivalentele Linux ale programelor Windows]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== O digresiune naiva despre contextul in care a aparut Linux ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Nota: Cei care cunosc deja aceste notiuni, sau care doresc sa afle mai multe despre partea practica a notiunilor introductive pot sari peste acesta sectiune.''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Ce sunt sistemele libere? ====&lt;br /&gt;
&lt;br /&gt;
Un sistem de operare liber este alcatuit din programe ale caror sursa este disponibila. Oricine o poate vedea si modifica daca simte ca are ceva de adaugat sau de reparat, conditia fiind sa le spuna si celorlalti despre modificarile sale astfel incat sa existe o munca de colaborare in dezvoltarea unui astfel de sistem. De altfel, fara colaborare nu s-ar fi ajuns aici.&lt;br /&gt;
&lt;br /&gt;
Licenta sub care se desfasoara acesta activitate pe Linux este, in general, [http://www.gnu.org/copyleft/gpl.html GPL] alcatuita de Richard Stallman, coordonatorul proiectului GNU si al Free Software Foundation. Mai multe despre GPL, filosofia care sta in spatele acestor programe si binecunoscutul slogan '''Free as in Freedom''' aflati pe http://www.fsf.org si pe http://www.gnu.org.&lt;br /&gt;
&lt;br /&gt;
La un moment dat in istoria tehnologiei informatiei s-a pus problema ca produsele software ar trebui sa se supuna acelorasi legi comerciale ca oricare alt produs, motiv pentru care a aparut si necesitatea de a ascunde ceea ce sta in spatele muncii sale, pentru a nu putea fi reprodus sau preluat/modificat de altcineva. Ca un raspuns la aceasta miscare a aparut GNU, o echipa de programatori care au creat din placere o suita de programe care sa le inlocuiasca pe cele care incepusera sau devenisera deja '''proprietare''' si asupra caroara ei nu mai putea lucra independent sa le imbunatateasca. Insa acesta suita de programe avea nevoie de un ''coordonator'', de un supra-program care sa impuna niste reguli de functionare, sa dea voie anumitor operatii la un moment dat, sa restrictioneze altele, in fine, avea nevoie de un [http://www.kernel.org/ kernel]. Acest kernel a fost creat de Linus Torvalds si a fost numit '''Linux''', motiv pentru care toate sistemele Linux actuale poarte acesta denumire.&lt;br /&gt;
&lt;br /&gt;
Insa corect este sa spunem sistem '''GNU/Linux''' deoarece in jurul acestor doua proiecte s-a dezvoltat ceea ce numim noi azi un sistem Linux.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Ce este o distributie Linux? ====&lt;br /&gt;
&lt;br /&gt;
O colectie de programe cu sursa deschisa adunate sub aceeasi capota, structurate astfel incat sa indeplineasca un anume scop (sau chiar mai multe simultan), cum ar fi: server web, server de mail, desktop computer, workstation etc. Desigur, o distributie contine obligatoriu utilitarele de baza de la GNU si kernelul Linux pentru a functiona corect. Structurarea programelor poate include chiar modificarea si gruparea lor in functie de scopurile pe care le indeplinesc, astfel creandu-se '''pachetele'''.&lt;br /&gt;
&lt;br /&gt;
'''Dintre calitatile unei distributii notam:'''&lt;br /&gt;
* Are un installer pentru instalare facila.&lt;br /&gt;
* Are utilitarele de baza GNU si kernelul Linux.&lt;br /&gt;
* Are o structura de directoare specifica oricarui sistem UNIX.&lt;br /&gt;
* Are suport pentru mai multe tipuri de sisteme de fisiere.&lt;br /&gt;
* Are un manager de pachete, astfel incat sa se poata adauga, sterge, actualiza (upgrade) si mentine o lista a pachetelor instalate.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===== Care este cea mai buna distributie? =====&lt;br /&gt;
&lt;br /&gt;
Nu exista o ''cea mai buna distributie''. Daca doriti sa invatati Linux exista unele cu interfete ceva mai intuitive, insa diferentele sunt doar de gust. Ceea ce va trebuie cel mai mult este rabdare si perseverenta, deoarece nici o distributie nu este inabordabila. Incercati si vedeti singuri care vi se potriveste.&lt;br /&gt;
&lt;br /&gt;
; [http://www.centos.org/ CentOS] (versiune curenta&amp;lt;nowiki&amp;gt;:&amp;lt;/nowiki&amp;gt; 4.4)&lt;br /&gt;
: Cea mai fidela clona de RedHat Enterprise, disponibila gratuit.&lt;br /&gt;
&lt;br /&gt;
; [http://www.debian.org/ Debian] (versiune curenta&amp;lt;nowiki&amp;gt;:&amp;lt;/nowiki&amp;gt; 3.1r3 &amp;quot;sarge&amp;quot;)&lt;br /&gt;
: Una dintre cele mai vechi si complete distributii, cu o gama impresionanta (Aprilie 2006: peste 15940) de pachete in arsenal.&lt;br /&gt;
&lt;br /&gt;
; [http://fedoraproject.org/wiki/ Fedora Core] (versiune curenta&amp;lt;nowiki&amp;gt;:&amp;lt;/nowiki&amp;gt; 5)&lt;br /&gt;
: Cunoscuta ca fiind initiativa RedHat pentru a oferi o varianta gratuita a produsului sau Enterprise.&lt;br /&gt;
&lt;br /&gt;
; [http://www.gentoo.org/ Gentoo] (versiune curenta&amp;lt;nowiki&amp;gt;:&amp;lt;/nowiki&amp;gt; 2006.0)&lt;br /&gt;
: Un proiect impresionant, avand in vedere ca pune la dispozitia utilizatorului un mediu de lucru prin care sa-si compileze intreaga distributie din surse, cu optiunile alese de el.&lt;br /&gt;
&lt;br /&gt;
; [http://www.mandriva.com/ Mandriva] (versiune curenta&amp;lt;nowiki&amp;gt;:&amp;lt;/nowiki&amp;gt; 2007)&lt;br /&gt;
: Distributie usor de utilizat, cunoscuta ca '''Mandrake''' pana de curand, ofera si varianta Enterprise.&lt;br /&gt;
&lt;br /&gt;
; [http://www.slackware.org/ Slackware] (versiune curenta&amp;lt;nowiki&amp;gt;:&amp;lt;/nowiki&amp;gt; 11)&lt;br /&gt;
: Cunoscuta in mod special pentru simplitate si stabilitate (conform principiului [http://en.wikipedia.org/wiki/KISS_Principle KISS]). Cea mai veche distributie inca mentinuta.&lt;br /&gt;
&lt;br /&gt;
; [http://opensuse.org/ openSUSE] (versiune curenta&amp;lt;nowiki&amp;gt;:&amp;lt;/nowiki&amp;gt; 10.1)&lt;br /&gt;
: Varianta gratuita a distributiei SUSE; ambele sunt sustinute de Novell&lt;br /&gt;
&lt;br /&gt;
; Familia [http://www.ubuntu.com/ Ubuntu], [http://www.kubuntu.org/ Kubuntu], [http://www.edubuntu.org/ edubuntu], [https://wiki.ubuntu.com/Xubuntu Xubuntu] (versiune curenta&amp;lt;nowiki&amp;gt;:&amp;lt;/nowiki&amp;gt; 6.06.1)&lt;br /&gt;
: Distributii usor de utilizat (bazate pe '''Debian'''), relativ recent aparute, cu o toleranta foarte mare pentru incepatori.&lt;br /&gt;
&lt;br /&gt;
; [http://www.knoppix.org/ KNOPPIX] (versiune curenta&amp;lt;nowiki&amp;gt;:&amp;lt;/nowiki&amp;gt; 5.0.1)&lt;br /&gt;
: Cea mai populara distributie Live-CD (boot-abila). Ruland direct de pe CD, si avand foarte multe programe, este recomandata atat incepatorilor (pot lua contact cu Linux-ul fara a-l instala) cat si utilizatorilor avansati (care au nevoie la un moment dat sa recupereze date de pe un hard-disk ce nu mai boot-eaza, de exemplu).&lt;br /&gt;
&lt;br /&gt;
===== Ce este o distributie boot-abila? =====&lt;br /&gt;
&lt;br /&gt;
Una care poate fi pornita si rulata direct de pe CD (DVD), fara a instala nimic pe hard-disk, programele si (parte din) sistemul de fisiere incarcandu-se in RAM. &lt;br /&gt;
&lt;br /&gt;
'''Utilizari frecvente:''' &lt;br /&gt;
* identificarea componentelor hardware ale sistemului vostru&lt;br /&gt;
* testarea unui calculator la achizitionare fara a instala nimic&lt;br /&gt;
* lucrul pe un calculator fara hard-disk (sau al carui hard-disk este intangibil)&lt;br /&gt;
* rezolvarea unor probleme hardware / testarea memoriei&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===== De ce as alege o distributie boot-abila? =====&lt;br /&gt;
&lt;br /&gt;
Deoarece nu trebuie sa instalati nimic pe hard-disk pentru a va &amp;quot;juca&amp;quot; un pic cu comezile de baza si pentru a va familiariza cu noul mediu de lucru si in general, cu setarile standard, nu puteti face prea multe trasnai :-). &lt;br /&gt;
&lt;br /&gt;
Mai apoi probabil ca veti dori ceva instalat totusi, pentru a va ramane salvate setarile pe care le faceti si pentru a putea rula aplicatiile cu o viteza mai mare, deoarece in momentul in care incarca de pe CD, nu ruleaza foarte rapid.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===== Se poate instala Knoppix pe hard-disk? =====&lt;br /&gt;
&lt;br /&gt;
Desigur, folosind comanda:&amp;lt;code&amp;gt;&amp;lt;sh/&amp;gt;sudo knoppix-installer&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Acesta este insa un subiect mai avansat si este recomandabil sa cititi FAQ original al Knoppix-ului pentru a afla mai multe detalii. Nu luati acesta posibilitate ca pe un indemn insa. Este doar dovada ca se poate, in cazul in care doriti.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===== Mai sunt distributii interesante, utile pentru teste? =====&lt;br /&gt;
&lt;br /&gt;
Desigur. Un proiect foarte interesant este [http://www.damnsmalllinux.org/ Damn Small Linux]. Ceea ce ofera ei (in mod special pentru un utilizator de Windows) este [ftp://ibiblio.org/pub/Linux/distributions/damnsmall/current/dsl-embedded.zip o arhiva zip] in care sa gaseste o mini-distributie embedded Linux. Cu alte cuvinte, o luati, dezarhivati, dati dublu-click pe '''dsl-windows.bat''' si veti avea o surpriza placuta.&lt;br /&gt;
&lt;br /&gt;
O alta mini-distributie care ruleaza direct de pe partitia Windows este [http://www.slackware.org/zipslack/ ZipSlack]. Mai multe informatii despre unde o gasiti - http://www.slackware.org/zipslack/getzip.php.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Despre programe/aplicatii ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Ce este un program? ====&lt;br /&gt;
&lt;br /&gt;
La modul cel mai intuitiv, un program este un fisier text scris intr-un limbaj de programare care specifica anumite instructiuni. Insa ceea ce cunostem noi sub numele de program este cu totul altceva. Noi cunoastem ''intruparea'' acelui program, si anume un fisier binar executabil (un ''.exe'' pe Windows). Care este procedeul prin care transformam textul intr-un binar (astfel incat sa poata fi interpretat direct de calculator) si care este ''bagheta magica'' care il transforma din text in binar? Bagheta magica este un program special numit ''compilator'' si procedeul de transformare se numeste ''compilare''.&lt;br /&gt;
&lt;br /&gt;
Textul initial despre care va povesteam este de fapt ''sursa'' programului, esenta lui, pe care noi in sistemele &amp;quot;GNU/Linux&amp;quot; avem posibilitatea de a o modifica si de a crea un program si mai puternic decat cel initial daca suntem suficient de priceputi. In alte sisteme cu sursa inchisa (cum ar fi Microsoft Windows), nu avem aceasta posibilitate, prin urmare drepturile si posibilitatile noastre sunt ingradite. Pentru un utilizator obisnuit nu este o tragedie foarte mare deoarece probabil ca nu simte nevoia acestei libertati, sau nu stie ce sa faca cu ea.&lt;br /&gt;
&lt;br /&gt;
Daca ati ajuns pana aici si nu va este frica sa ma murdariti un pic de &amp;quot;unsoare&amp;quot;, inseamna ca sunteti curiosi sa vedeti mai mult. Aceasta unsoare de care vorbesc este de fapt dorinta de a afla mai multe despre internele unui sistem de operare si cateodata este necesar un mic '''hack''' pentru a rezolva posibilele probleme. In acest caz, nu pot decat sa va felicit deoarece aveti calitatile necesare pentru a invata Linux.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Cum instalez un program... ====&lt;br /&gt;
&lt;br /&gt;
===== ... din surse? =====&lt;br /&gt;
&lt;br /&gt;
Pentru a efectua o instalare corecta se recomanda citirea documentelor referitoare la instalare din arhiva care contine sursele. De regula, un README si un INSTALL ar trebui sa va lamureasca. Apoi dati comenzile urmatoare, pe rand si programul va fi compilat si instalat conform unor optiuni specificate in fisierul Makefile.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt; &amp;lt;sh/&amp;gt; ./configure&lt;br /&gt;
  make&lt;br /&gt;
  make install&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''Nota: Daca doriti sa schimbati optiunile de compilare default (ceea ce se si recomanda), dati comanda '''./configure --help''' sa vedeti o lista a optiunilor pe care le aveti la dispozitie. Aceste optiuni variaza de la program la program. Evident, in argumentele pe care le veti da lui '''./configure''' veti avea o instalare cat mai aproape de ceea ce vreti.''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''make'''&lt;br /&gt;
&lt;br /&gt;
Utilitarul '''make''' s-a nascut din nevoia de a compila, linkedita si instala proiecte mari, alcatuite din sute sau mii de fisiere sursa. Pentru a explica rolul utilitarului '''make''', recapitulam pasii in care mai multe fisiere sursa C sau ASM (limbaj de asamblare) sunt compilate si linkeditate impreuna intr-un fisier executabil:&lt;br /&gt;
&lt;br /&gt;
Fie mai multe fisiere sursa C, cu numele sursa1.c, sursa2.c, sursa3.c. In mod normal, aceste fisiere sunt compilate separat de catre orice compilator C in fisiere individuale obiect: sursa1.o (sau sursa1.obj),&lt;br /&gt;
sursa2.o si sursa3.o. Dupa compilare, in faza de linkeditare din cele trei fisiere obiect rezulta fisierul executabil. Se pot recunoaste usor acesti pasi si in asamblarea si linkeditare impreuna a mai multor fisiere ASM intr-un singur fisier executabil.&lt;br /&gt;
&lt;br /&gt;
Daca din cele trei fisiere sursa de mai sus se modifica doar sursa2.c, care din pasii de mai sus trebuie repetati? Evident, nu este necesara recompilarea in fisiere obiect a fisierelor sursa1.c si sursa3.c, este&lt;br /&gt;
necesara doar recompilarea lui sursa2.c. In urma acestei recompilari se va modifica si sursa2.o, lucru care impune relinkeditarea tuturor fisierelor obiect in fisierul executabil final. Utilitarul '''make''', folosind un fisier de configurare cu numele Makefile, &amp;quot;are grija&amp;quot; ca din pasii necesari obtinerii unui anumit fisier (in cazul nostru fisierul executabil final) sa se execute doar acesi pasi necesari.&lt;br /&gt;
&lt;br /&gt;
Prezentam in continuare in fisier Makefile pentru exemplu enuntat mai sus:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
demo : sursa1.o sursa2.o sursa3.o&lt;br /&gt;
	gcc -o demo sursa1.o sursa2.o sursa3.o&lt;br /&gt;
&lt;br /&gt;
sursa1.o : sursa1.c&lt;br /&gt;
	gcc -c sursa1.c&lt;br /&gt;
&lt;br /&gt;
sursa2.o : sursa2.c&lt;br /&gt;
	gcc -c sursa2.c&lt;br /&gt;
&lt;br /&gt;
sursa2.o : sursa2.c&lt;br /&gt;
	gcc -c sursa1.c&lt;br /&gt;
&lt;br /&gt;
clean :&lt;br /&gt;
	rm sursa1.c~ sursa2.c~ sursa3.c~&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Explicatii:'''&lt;br /&gt;
&lt;br /&gt;
Pe prima linie, fisierul demo, se obtine din fisierele sursa1.o, sursa2.o si sursa3.o cu comanda de pe linia doi. Prima linia este folosita de utilitarul make pentru a sti cand trebuie sa reconstruiasca (prin linkeditare) fisierul demo, iar linia doi pentru a sti cu ce comanda trebuie sa reconstruiasca acest fisier.&lt;br /&gt;
Linia patru este folosita pentru a contrui fisierul sursa1.o din fisierul sursa1.c folosind comanda de pe linia cinci. Aceste doua linii sunt folosita de utilitarul make in doua situatii:&lt;br /&gt;
* a) fie sursa1.o nu exista, el este necesar la linkeditare finala, si deci trebuie creat prin comanda de pe linia cinci;&lt;br /&gt;
* b) fie fisierul sursa1.c are data crearii mai noua decat sursa1.o, fapt ce impune recompilarea lui sursa1.c.&lt;br /&gt;
Modificandu-se sursa1.o, data crearii acestuia va fi mai noua decat data fisierului demo lucru ce va duce linkeditarea finala. Optinea -c folosita la compilatorul gcc inseamna &amp;quot;just compile, don't link&amp;quot;, iar optiunea -o inseamna &amp;quot;creeaza fisierul executabil cu acest nume&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Pentru a rula exemplu de mai sus, se tasteaza comanda:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt; &amp;lt;sh/&amp;gt;make&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Observatii:'''&lt;br /&gt;
* Observati regula ''clean'' din fisierul de mai sus. Prin comanda '''make clean''' se executa comanda de dupa aceasta regula (se executa comanda rm care sterge fisierele de backup)&lt;br /&gt;
* Liniile cu comenzile '''gcc''' si '''rm''' sunt indentate in dreapta cu TAB, nu cu spatii!&lt;br /&gt;
* Intr-un fisier Makefile se pot folosi orice comenzi valide shell pentru a crea un fisier necesar. Exemplu:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
fisier_cu_useri_din_sistem :&lt;br /&gt;
	finger &amp;gt; fisier_cu_useri_din_sistem&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====== Arhivare/Dezarhivare ======&lt;br /&gt;
&lt;br /&gt;
'''Cum utilizez '''tar'''?'''&lt;br /&gt;
&lt;br /&gt;
Codul sursa al unui program se va gasi cel mai des intr-o arhiva. Aceasta poate fi .tar, tar.gz sau .tar.bz2 si va fi numita, generic, ''tarball''.&lt;br /&gt;
Pentru a afla mai multe despre tar si optiunile sale dati comanda '''man tar'''. &lt;br /&gt;
&lt;br /&gt;
Dezarhivarea se face astfel:&lt;br /&gt;
* pentru o arhiva '''tar''': &amp;lt;code&amp;gt; &amp;lt;sh/&amp;gt; tar xvf arhiva.tar &amp;lt;/code&amp;gt;&lt;br /&gt;
* pentru o arhiva '''tar.gz''': &amp;lt;code&amp;gt; &amp;lt;sh/&amp;gt; tar zxvf arhiva.tar.gz &amp;lt;/code&amp;gt;&lt;br /&gt;
* pentru o arhiva '''tar.bz2''': &amp;lt;code&amp;gt; &amp;lt;sh/&amp;gt; tar jxvf arhiva.tar.bz2 &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Arhivarea unui director se face astfel:&lt;br /&gt;
* intr-o arhiva '''.tar''': &amp;lt;code&amp;gt; &amp;lt;sh/&amp;gt; tar cvf arhiva.tar /director/ &amp;lt;/code&amp;gt;&lt;br /&gt;
* intr-o arhiva '''tar.gz''': &amp;lt;code&amp;gt; &amp;lt;sh/&amp;gt; tar czvf arhiva.tar.gz /director/ &amp;lt;/code&amp;gt;&lt;br /&gt;
* intr-o arhiva '''tar.bz2''': &amp;lt;code&amp;gt; &amp;lt;sh/&amp;gt; tar cjvf arhiva.tar.bz2 /director/ &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Desigur, in loc de un director putea fi un simplu fisier. Se pot specifica mai multe fisiere, directoare pentru arhivare in cadrul aceleiasi arhive. De, asemenea, ca o observatie, uneori arhivele ''tar.gz'' pot fi gasite si cu extensia ''tgz'', comenzile de dezarhivare fiind la fel.&lt;br /&gt;
&lt;br /&gt;
'''Exista '''zip''', '''rar''', '''ace''', '''arj''' in Linux?'''&lt;br /&gt;
&lt;br /&gt;
Da. Nu sunt programe cu sursa deschisa, dar in general sunt de gasit prin repository-urile distributiilor mai mari. Sa le luam pe rand:&lt;br /&gt;
* Pentru ''zip'' exista doua programe: '''zip''' si '''unzip'''. Desi nu sunt produse de firma care produce binecunoscutul WinZIP, aceste utilitare sunt compatibile cu WinZIP, gratuite si portate pe mai multe sisteme de operare. [http://www.info-zip.org/ Site-ul oficial].&lt;br /&gt;
** pentru a crea o arhiva zip dintr-un director: &amp;lt;code&amp;gt;zip -r arhiva.zip /director/&amp;lt;/code&amp;gt;&lt;br /&gt;
** pentru a extrage fisierele dintr-o arhiva zip: &amp;lt;code&amp;gt;unzip arhiva.zip&amp;lt;/code&amp;gt;&lt;br /&gt;
* Pentru ''rar'' exista '''rar''' si '''unrar'''. Ambele utilitare pot fi descarcate de pe [http://www.rarlab.com/ site-ul oficial], dar numai '''unrar''' este gratuit.&lt;br /&gt;
** pentru a crea o arhiva rar dintr-un director: &amp;lt;code&amp;gt;rar a arhiva.rar /director/&amp;lt;/code&amp;gt;&lt;br /&gt;
** pentru a extrage fisierele dintr-o arhiva rar: &amp;lt;code&amp;gt;unrar e arhiva.rar /director_destinatie/&amp;lt;/code&amp;gt;&lt;br /&gt;
* Pentru ''ace'' exista '''unace'''. Pe [http://www.winace.com/ site-ul oficial], exista doar acest utilitar la categoria download-urilor pentru Linux. El executa doar dezarhivare:&lt;br /&gt;
** &amp;lt;code&amp;gt;unace e arhiva.ace&amp;lt;/code&amp;gt;&lt;br /&gt;
* Pentru ''arj'' exista '''arj'''. Desi pe [http://www.arjsoftware.com/ site-ul lor oficial] se pare ca platforma UNIX/Linux nu e suportata (FAQ, intrebarea h.), in repository-ul distributiilor mari exista '''arj''':&lt;br /&gt;
** &amp;lt;code&amp;gt;ARJ32 v 3.10, Copyright (c) 1998-2004, ARJ Software Russia. [24 Nov 2005]&amp;lt;/code&amp;gt;&lt;br /&gt;
** pentru a crea o arhiva dintr-un director: &amp;lt;code&amp;gt;arj a -r arhiva.arj /director/&amp;lt;/code&amp;gt;&lt;br /&gt;
** pentru a extrage o arhiva: &amp;lt;code&amp;gt;arj e -r arhiva.arj&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== ... din pachete? =====&lt;br /&gt;
&lt;br /&gt;
Acest lucru este dependent de distributia pe care o folositi. Daca sunteti incepator, se recomanda sa utilizati un manager de pachete in modul grafic.&lt;br /&gt;
&lt;br /&gt;
Daca vreti sa stiti mai multe, cititi in continuare. Dupa cum povesteam mai devreme programele au fost luate de dezvoltatorii distributiilor si puse in pachete pentru a fi grupate mai bine. Da, asta inseamna ca un program original se poate intinde pe mai multe pachete, respectiv poate fi grupat cu mai multe programe inainte de a forma un pachet.&lt;br /&gt;
&lt;br /&gt;
De asemenea, apare o noua notiune, si anume aceea de ''dependinte''. &lt;br /&gt;
&lt;br /&gt;
====== Ce sunt dependintele si cum utilizez un manager de pachete? ======&lt;br /&gt;
&lt;br /&gt;
Dependintele sunt programe/pachete/biblioteci de care depind alte programe pe care vreti voi sa le instalati. Fiind vorba de un sistem cu surse libere (sub licenta GPL sau compatibila) un dezvoltator nu trebuie sa scrie ''totul'' de la capat pentru a realiza un program functional. El se poate baza pe anumite programe/biblioteci introduse de altcineva pentru a-si realiza scopul. Motiv pentru care s-ar putea sa va treziti la un moment dat ca doriti sa instalati ceva si vi se refuza acest drept pe motiv ca ii lipseste o componenta necesara bunei functionari, altfel spus, o dependinta.&lt;br /&gt;
&lt;br /&gt;
De aceea au si aparut de fapt programele numite &amp;quot;manager de pachete&amp;quot;, pentru a rezolva aceste dependinte fara sa trebuiasca utilizatorul sa le caute si sa le instalaze manual. De fapt, fiecare distributie are un manager de pachete bine pus la punct, altfel nu  ar fi ajuns la stadiul actual, tinand cont ca o distributie majora poate avea mii de pachete.&lt;br /&gt;
&lt;br /&gt;
* Pentru '''Gentoo''' veti folosi portage - un sistem de management de pachete inspirat din FreeBSD.&lt;br /&gt;
** Instalarea unui pachet: &amp;lt;code&amp;gt;&amp;lt;sh/&amp;gt;emerge pachet&amp;lt;/code&amp;gt;&lt;br /&gt;
** Dezinstalarea: &amp;lt;code&amp;gt;&amp;lt;sh/&amp;gt;emerge --unmerge pachet&amp;lt;/code&amp;gt;&lt;br /&gt;
** Pentru mai multe detalii, consultati documentatia de pe [http://www.gentoo.ro/ site-ul comunitatii Gentoo in Romania]&lt;br /&gt;
&lt;br /&gt;
* Distributii precum '''RedHat''' (acum numai pentru mediul Enterprise), '''Fedora Core''', '''Mandriva''' si '''openSUSE''' se bazeaza la nivelul cel mai de jos pe pachete in format '''rpm'''. Comenzi utile pentru a lucra cu ele:&lt;br /&gt;
** Pentru instalarea unui pachet: &amp;lt;code&amp;gt; &amp;lt;sh/&amp;gt; rpm -i nume_pachet.rpm &amp;lt;/code&amp;gt;&lt;br /&gt;
** Pentru dezinstalarea unui pachet: &amp;lt;code&amp;gt; &amp;lt;sh/&amp;gt; rpm -e nume_pachet &amp;lt;/code&amp;gt;&lt;br /&gt;
** Ca manager de pachete, acesta variaza de la distributie la distributie. [http://linux.duke.edu/projects/yum/ Yum] pare sa fie alegerea cea mai populara. Pentru a afla cum il setam sa utilizeze site-uri mirror din Romania, cititi articolul [[Yum_%C3%AEn_Rom%C3%A2nia | Yum in Romania]]&lt;br /&gt;
** Mandriva foloseste [http://qa.mandriva.com/twiki/bin/view/Main/UrpmiResources urpmi] sau [http://labix.org/smart smart].&lt;br /&gt;
*** ''Familia'' '''urpmi''' ''preia'' toate functiile utilitatului '''rpm''', nemaifiind nevoie sa folositi comenzile scrise mai sus.&lt;br /&gt;
*** Un scurt exemplu de echivalente:&lt;br /&gt;
**** Pentru instalarea unui pachet: &amp;lt;code&amp;gt; &amp;lt;sh/&amp;gt; urpmi nume_pachet[.rpm] &amp;lt;/code&amp;gt;&lt;br /&gt;
**** Pentru dezinstalarea unui pachet: &amp;lt;code&amp;gt; &amp;lt;sh/&amp;gt; urpme nume_pachet&amp;lt;/code&amp;gt;&lt;br /&gt;
*** Cand extensia .rpm este data, urpmi va cauta pachetul local, in directorul curent.&lt;br /&gt;
*** Ca interfete grafice e recomandat sa aveti instalat '''gurpmi''' (permite instalarea unui rpm executand dublu click pe iconita pachetului) si '''rpmdrake''' (interfata de administrare a pachetelor din Mandriva Control Center).&lt;br /&gt;
*** Pentru mai multe detalii, consultati documentatia de pe [http://www.mandrivausers.ro/ site-ul comunitatii Mandriva in Romania].&lt;br /&gt;
&lt;br /&gt;
* Distributii precum '''Slackware''' se bazeaza pe pachete in format '''tgz'''.&lt;br /&gt;
** Pentru instalarea unui pachet: &amp;lt;code&amp;gt; &amp;lt;sh/&amp;gt; installpkg nume_pachet.tgz &amp;lt;/code&amp;gt;&lt;br /&gt;
** Pentru dezinstalarea unui pachet: &amp;lt;code&amp;gt; &amp;lt;sh/&amp;gt; removepkg nume_pachet &amp;lt;/code&amp;gt;&lt;br /&gt;
** Pentru a folosi managerul de pachete original dati comanda: &amp;lt;code&amp;gt; &amp;lt;sh/&amp;gt; pkgtool &amp;lt;/code&amp;gt;&lt;br /&gt;
** Manager de pachete: [http://directory.fsf.org/slapt-get.html slapt-get].&lt;br /&gt;
** Pentru crearea unui pachet din surse (exceptie unele programe gen php) se procedeaza astfel:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;sh/&amp;gt;tar zxf nume.tgz&lt;br /&gt;
cd nume&lt;br /&gt;
./configure --prefix=/usr --sysconfdir=/etc/&lt;br /&gt;
make&lt;br /&gt;
make install DESTDIR=/tmp/nume&lt;br /&gt;
cd /tmp/nume&lt;br /&gt;
makepkg nume.tgz&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Distributii precum '''Debian''' si '''Ubuntu''' se bazeaza pe pachete in format '''deb'''.&lt;br /&gt;
** Pentru instalarea unui pachet: &amp;lt;code&amp;gt; &amp;lt;sh/&amp;gt; dpkg -i nume_pachet.deb &amp;lt;/code&amp;gt;&lt;br /&gt;
** Pentru dezinstalarea unui pachet: &amp;lt;code&amp;gt; &amp;lt;sh/&amp;gt; dpkg -r nume_pachet &amp;lt;/code&amp;gt;&lt;br /&gt;
** Manager(e) de pachete: '''apt-get''', '''aptitude''', '''Synaptic'''.&lt;br /&gt;
&lt;br /&gt;
* Nu uitati comanda ''man'' care va va da detalii cu privire la folosirea managerului de pachete ales!&lt;br /&gt;
&lt;br /&gt;
Ceea ce trebuie sa retinem este faptul ca un manager de pachete avansat (in stare sa rezolve dependintele si sa instaleze pachetele astfel incat sa nu intre in conflict), trebuie sa si ''stie'' de unde sa ia pachetele. De cele mai multe ori, le setam special pentru a lua de pe site-uri mirror din Romania pachetele de care avem nevoie.&lt;br /&gt;
&lt;br /&gt;
De exemplu, pentru '''Debian''', avem de adaugat mirror-urile pe care le preferam in '''/etc/apt/sources.list'''.&lt;br /&gt;
Dar am tot vorbit de mirror si nu am spus ce este. Bineinteles, exista o locatie oficiala a unei distributii, insa pentru a nu impovara prea tare acel site se creeaza ceea ce noi numim &amp;quot;o oglinda&amp;quot; a locatiei initiale, copiind toate datele pe un server din reteaua metropolitana, cu permisiunea dezvoltatorilor originali desigur. Fiind mai aproape de noi, iar unii beneficiand de o viteza mai buna in Romania decat extern, se prefera de regula un mirror &amp;quot;local&amp;quot; decat unul extern.&lt;br /&gt;
&lt;br /&gt;
=== Comenzi si practici de baza ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Ce este o comanda? ====&lt;br /&gt;
&lt;br /&gt;
O comanda este de fapt rularea unui program sau a unui script intr-o consola (fie ea fizica, sau virtuala). De exemplu, un program des utilizat pentru a da comenzi in consola din modul grafic, este Konsole din KDE.&lt;br /&gt;
&lt;br /&gt;
==== Care sunt comenzile esentiale? ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;sh/&amp;gt;info nume_comanda/fisier_de_configurare&lt;br /&gt;
man nume_comanda/fisier_de_configurare&lt;br /&gt;
apropos ceva&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Acesti &amp;quot;Cei trei muschetari&amp;quot; sunt '''absolut esentiali'''. Cand cineva va spune RTFM (read the fine manual), probabil ca se refera la aceste comenzi. &lt;br /&gt;
&lt;br /&gt;
'''info''' va da informatii privitoare la comanda respectiva sau la fisierul de configurare in cauza. &lt;br /&gt;
&lt;br /&gt;
'''man''' va da manualul comezii respective sau fisierul de configurare al unui program. In general in josul fisierului veti gasi referinte la comenzi, programe, fisiere de configurare care au legatura cu cel solicitat de voi.&lt;br /&gt;
&lt;br /&gt;
'''apropos''' este o comanda de genul &amp;quot;suna ca&amp;quot;. Poate ca nu stim exact o comanda, dar stim ca are legatura cu ''ceva'' si s-ar putea sa avem noroc sa ne dea ca rezultat ceva folositor.&lt;br /&gt;
&lt;br /&gt;
Daca chiar imi trebuie un utilitar / o comanda si ''apropos'' nu m-a dus unde voiam, [http://www.google.ro Google] s-ar putea sa fie mai viteaz. Bineinteles, nu excludem posibilitatea de a intreba pe altcineva, dar este de bun simt sa cautam si noi singuri pentru ca s-ar putea sa gasim raspunsul in cateva secunde.&lt;br /&gt;
&lt;br /&gt;
Chiar daca nu intra in categoria comenzilor esentiale, putem aduce aminte aici despre o resursa foarte importanta - [http://tldp.org The Linux Documentation Project], unde veti gasi foarte multe ghiduri, tutoriale si pagini de manual utile.&lt;br /&gt;
&lt;br /&gt;
==== Alte comenzi utile ====&lt;br /&gt;
&lt;br /&gt;
'''info, man, apropos, which, mkdir, rmdir, mount, touch, rm, cp, mv, cat, cd, ls, grep, ps, who, whoami, su, sudo, df, du, tar, more, less, ps, kill, killall, ln, chown, chmod, chattr, passwd, useradd, groupadd, ping, ifconfig, route, iptables, locate, slocate, updatedb, find'''&lt;br /&gt;
&lt;br /&gt;
Exercitiu: Pentru a afla ce fac fiecare dati '''man ''nume_comanda'' '''.&lt;br /&gt;
&lt;br /&gt;
In cazul in care nu ati observat deja, puteti sa atasati niste optiuni comenzilor pe care le dati. Acestea se manifesta sub forma '''[comanda] --optiune''' de obicei. O astfel de comanda utila (pe care aproape orice program o are), este '''[comanda] --help''' sau '''[comanda] -h''', pentru a va arata o lista de optiuni (de obicei scurta, dar la obiect).&lt;br /&gt;
&lt;br /&gt;
==== Ce fac cu un program care nu se mai opreste? ====&lt;br /&gt;
&lt;br /&gt;
Ori folositi combinatia '''kill PID''', unde PID este un numar (Process ID) aflat la rularea comenzii '''ps aux''', ori dati comanda '''killall nume_comanda'''. De asemenea apasarea tastei '''q''' sau apasarea combinatiei de taste '''CTRL+C''' poate opri rularea unui program in anumite conditii (cand el ruleaza in foreground).&lt;br /&gt;
&lt;br /&gt;
==== Ce este un &amp;quot;shell&amp;quot;? ====&lt;br /&gt;
&lt;br /&gt;
Un interpretor de comenzi. Cel mai utilizat la ora actuala este [http://www.gnu.org/software/bash/ BASH]&lt;br /&gt;
&lt;br /&gt;
===== Bash =====&lt;br /&gt;
&lt;br /&gt;
Iata cateva resurse pentru a afla mai multe despre el: http://www.tldp.org/LDP/abs/html, http://www.tldp.org/HOWTO/Bash-Prog-Intro-HOWTO.html&lt;br /&gt;
&lt;br /&gt;
Conceptul de &amp;quot;programare&amp;quot; in BASH se refera de fapt la a scrie script-uri care sa indeplineasca anumite functii utile. Toate functiile de initializare in sistemele GNU/Linux sunt scrise in BASH sau in SH.&lt;br /&gt;
&lt;br /&gt;
Un script este interpretat si executat direct, nu necesita o compilare ca un program obisnuit.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Utilizatorii şi grupurile sistemului ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Utilizatorii unui sistem se pot vizualiza in /etc/passwd. Majoritatea afisati acolo sunt de tip ''daemon'', adica programe care ruleaza in background fara a fi sub controlul direct al utilizatorului, si de obicei sunt instantiate ca procese de sistem, lansate la '''boot'''. De asemenea, sunt si cativa utilizatori speciali, sub care ruleaza programe de tip server foarte importante. De exemplu:&lt;br /&gt;
* guest - folosit uneori pentru a da acces read-only unor vizitatori&lt;br /&gt;
* ftp   - user-ul folosit pentru conectari anonime la ftp&lt;br /&gt;
* news  - folosit de Usenet&lt;br /&gt;
* lp    - folosit de sistemul de imprimare; vine de la ''line printer''&lt;br /&gt;
* apache/www-data - folosit in special de Apache WebServer&lt;br /&gt;
Si nu in ultimul rand, sunt utilizatorii obisnuiti (umani) ai sistemului. O categorie aparte este '''root''', super-utilizatorul sau, altfel spus, administratorul sistemului, cu drepturi depline asupra lui.&lt;br /&gt;
&lt;br /&gt;
* Daca sunteti un utilizator obisnuit, linia de comanda va arata asa:&amp;lt;code&amp;gt;&amp;lt;sh/&amp;gt;andrei@acasa:/home/andrei$&amp;lt;/code&amp;gt;&lt;br /&gt;
* Daca sunteti '''root''' (administratorul sistemului):&amp;lt;code&amp;gt;&amp;lt;sh/&amp;gt;root@acasa:/home/root#&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bineinteles, toate modificarile majore asupra sistemului trebuie facute ca '''root''', dar atentie ca '''nu''' este recomandat sa folositi in mod ''curent'' acest utilizator, deoarece puteti face greseli destul de mari la inceput, care sa afecteze definitiv integritatea sistemului avand in vedere ca aveti drepturi depline.&lt;br /&gt;
&lt;br /&gt;
Grupurile unui sistem se află trecute în /etc/groups. La crearea unui utilizator, dacă nu se specifică altfel, se creează un nou grup cu aceeaşi denumire a utilizatorului, care va conţine acel utilizator. Grupurile sunt importante, ajutând utilizatorii aceluiaşi sistem să folosească în comun anumite resurse. Un grup poate conţine oricâţi utilizatori, dar un utilizator nu poate face parte decât din maxim 32 de grupuri simultan!&lt;br /&gt;
De exemplu, într-o universitate există grupuri separate pentru fiecare facultate, an, grupă, etc. De asemenea există grupuri şi pentru fiecare catedră în parte. Un profesor de matematică poate face parte, de exemplu, din grupul facultăţii la care predă, din grupul seriilor la care predă, etc.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Cum adaug / sterg utilizatori din sistem? ====&lt;br /&gt;
&lt;br /&gt;
Cu comenzile: '''useradd, userdel, groupadd, groupdel'''. '''man ''comanda'' ''' pentru detalii, unde ''comanda'' se va inlocui cu una din variantele anterioare.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Cum schimb parola unui utilizator? ====&lt;br /&gt;
&lt;br /&gt;
Cu comanda:&amp;lt;code&amp;gt;&amp;lt;sh/&amp;gt;passwd&amp;lt;/code&amp;gt;&lt;br /&gt;
Daca sunteti root, puteti schimba parola oricui:&amp;lt;code&amp;gt;&amp;lt;sh/&amp;gt;passwd gigel&amp;lt;/code&amp;gt; unde gigel trebuie sa fie un utilizator valid din sistem.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Permisiuni ====&lt;br /&gt;
&lt;br /&gt;
Un subiect foarte important în UNIX în general, prea puţin discutat în Windows. Deschideţi o consola şi daţi comanda:&amp;lt;code&amp;gt;&amp;lt;sh/&amp;gt;ls -l&amp;lt;/code&amp;gt;&lt;br /&gt;
Pe prima coloană va apărea ceva de genul: ''drwxr-xr-x''. Ce înseamă asta?&lt;br /&gt;
* primul caracter:&lt;br /&gt;
** - == fişier&lt;br /&gt;
** d == director&lt;br /&gt;
** l == symlink (legătură simbolică)&lt;br /&gt;
** s == socket (conexiune prin retea)&lt;br /&gt;
** p == pipe (conducta intre doua programe)&lt;br /&gt;
** c == character device (fisier special corespondent unui dispozitiv de intrare/iesire la nivel de caracter, e.g. un port serial)&lt;br /&gt;
** b == block device (fisier special corespondent unui dispozitiv de intrare/iesire la nivel de bloc, e.g. un disc dur)&lt;br /&gt;
* următoarele 3 caractere == drepturile utilizatorului care deţine fişierul (a se vedea a 3-a coloană)&lt;br /&gt;
* următoarele 3 caractere == drepturile grupului care deţine fişierul (a se vedea a 4-a coloană)&lt;br /&gt;
* ultimele 3 caractere == drepturile celorlalţi&lt;br /&gt;
** r == drepturi de citire&lt;br /&gt;
** w == drepturi de scriere&lt;br /&gt;
** x == drepturi de execuţie pentru fisiere sau de descindere/traversare pentru directoare&lt;br /&gt;
&lt;br /&gt;
Schimbarea proprietarului unui fişier/director se face cu comanda:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;sh/&amp;gt;chown $utilizator[:$grup] $fisier [, ...]&amp;lt;/code&amp;gt;&lt;br /&gt;
Pentru a schimba proprietarul tuturor subdirectoarelor şi fişierelor dintr-un director:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;sh/&amp;gt;chown -R $utilizator[:$grup] $director [, ...]&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Schimbarea drepturilor se face într-un mod oarecum asemănător:&amp;lt;code&amp;gt;&amp;lt;sh/&amp;gt;&lt;br /&gt;
chmod a-x $fisier&lt;br /&gt;
chmod a+r $fisier&lt;br /&gt;
chmod o+wx -R $director&lt;br /&gt;
chmod g+rw $fisier&amp;lt;/code&amp;gt;&lt;br /&gt;
Unde:&lt;br /&gt;
* a == all; se aplică regula pentru utilizatorul proprietar, grupul proprietar şi restul utilizatorilor şi grupurilor din sistem&lt;br /&gt;
* o == others; se aplică regula pentru restul utilizatorilor şi grupurilor din sistem&lt;br /&gt;
* u == user; regula se aplică pentru utilizatorul proprietar&lt;br /&gt;
* g == group; regula se aplică pentru grupul proprietar&lt;br /&gt;
* -/+ == luăm/dăm drepturi&lt;br /&gt;
* r/w/x == dreptul de citire/scriere/execuţie (sau traversare)&lt;br /&gt;
Foarte logice aceste comenzi dar un admin adevărat nu îşi permite să piardă timpul! :) El va acorda/lua permisiuni folosind o reprezentare a lor in octal (baza 8), unde:&lt;br /&gt;
* 4 == dreptul de citire&lt;br /&gt;
* 2 == dreptul de scriere&lt;br /&gt;
* 1 == dreptul de execuţie&lt;br /&gt;
Exemplu de folosire:&amp;lt;code&amp;gt;&amp;lt;sh/&amp;gt;&lt;br /&gt;
chmod 755 $fisier # echivalent cu &amp;quot;chmod u+rwx,g+rw,o+rw $fisier&amp;quot;&lt;br /&gt;
chmod 644 $fisier # echivalent cu &amp;quot;chmod u+rw,g+r,o+r $fisier&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
Mult mai ... amuzant!&lt;br /&gt;
Important e de asemenea, '''chmod 0'''! Această comandă ia toate drepturile asupra fişierului, fiind utilă, de exemplu, pentru a pune fişierul în ''carantină''.&lt;br /&gt;
&lt;br /&gt;
Nu putem închide acest capitol fără a explica nişte noţiuni pe care le-am introdus:&lt;br /&gt;
* link-ul/legătura/scurtătura == o noţiune ceva mai complexă decât în Windows. Vom crea şi scrie ceva într-un fişier, iar apoi vom face un symlink/simbolic link/legătură simbolică spre el.&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;sh/&amp;gt;$ echo -e &amp;quot;salut\n&amp;quot; &amp;gt; fisier&lt;br /&gt;
$ cat fisier&lt;br /&gt;
salut&lt;br /&gt;
$ ls -l fisier&lt;br /&gt;
-rw-r--r--  1 johndoe johndoe 6 May  8 21:59 fisier&lt;br /&gt;
$ ln -s fisier bla&lt;br /&gt;
$ cat bla&lt;br /&gt;
salut&lt;br /&gt;
$ ls -l bla&lt;br /&gt;
lrwxrwxrwx  1 johndoe johndoe 6 May  8 22:02 bla -&amp;gt; fisier&lt;br /&gt;
$ rm bla&lt;br /&gt;
rm: remove symbolic link `bla'? y&amp;lt;/code&amp;gt;&lt;br /&gt;
* dreptul de execuţie. Mulţi utilizatori începători se lovesc de problema asta. Scrieţi textul acesta într-un fişier numit... ''fisier'':&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;sh/&amp;gt;#!/bin/sh&lt;br /&gt;
echo Hello World!&lt;br /&gt;
exit 0&amp;lt;/code&amp;gt; E un exemplu de script shell. Să încercăm să îl rulăm:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;sh/&amp;gt;$ ./fisier&lt;br /&gt;
bash: ./fisier: Permission denied&lt;br /&gt;
$ sh fisier&lt;br /&gt;
Hello World!&amp;lt;/code&amp;gt;După ce îi dăm drepturi de execuţie:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;sh/&amp;gt;$ chmod 755 fisier&lt;br /&gt;
$ ./fisier&lt;br /&gt;
Hello World!&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Despre fisiere, structura de directoare si partitii ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Ce semnificatie au fisierele si structura de directoare? ====&lt;br /&gt;
&lt;br /&gt;
Dupa cum ati observat deja, la structura de directoare deja diferentele sunt notabile. In primul rand, ca totul in sistemul Linux este un fisier. Absolut totul. Directoarele sunt doar cazuri speciale de fisiere. Dispozitivele (devices) sunt tot fisiere.&lt;br /&gt;
&lt;br /&gt;
Programele asa cum le stim de pe Windows nu mai au extensie. Nici nu au nevoie, deoarece tipul de fisier este stocat chiar in el. Daca vrem neaparat, putem crea / denumi un fisier Eseu.txt, dar asta nu inseamna ceva anume, ci doar pentru noi sa il recunoastem mai usor eventual.&lt;br /&gt;
&lt;br /&gt;
Structura de directoare iar este speciala. Spre deosebire de Windows, calea unui fisier/director se specifica cu '''&amp;quot;/&amp;quot;''' si nu cu '''&amp;quot;\&amp;quot;'''. De fapt, asa a fost de cand lumea si pamantul in lumea tehnologiei informatiei, Windows este de fapt cel care face exceptie de la regula :-). De asemenea, nu mai exista separatiile cu care eram obisnuiti, aici fiind impartit tortul mai cerebral, insa mai putin intuitiv pentru necunoscatori. Poate sa va surprinda, dar un pachet de cele mai multe ori nu se instaleaza in acelasi director, ci se mai imparte in mai multe felii, depinzand de functiile lui.&lt;br /&gt;
&lt;br /&gt;
Iata cum trebuie gandita situatia:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
/bin   - fisiere executabile importante (de ex: ls)&lt;br /&gt;
/boot  - fisiere statice, boot-loader-ul, kernel-ul &lt;br /&gt;
         (de ex: vmlinuz-2.4.27-2-386)&lt;br /&gt;
/etc   - mai toate fisierele importante de configurare sunt &lt;br /&gt;
         aici (de ex: lilo.conf, fstab)&lt;br /&gt;
/dev   - dispozitivele hardware&lt;br /&gt;
/home  - fisierele utilizatorilor (utilizatorul gica isi are &lt;br /&gt;
         home-ul in /home/gica)&lt;br /&gt;
/lib   - biblioteci si module de kernel&lt;br /&gt;
/mnt   - directoarele in care se monteaza alte sisteme de&lt;br /&gt;
         fisiere (de ex, Mandriva monteaza partitia C: &lt;br /&gt;
         a Windows-ului in /mnt/win_c)&lt;br /&gt;
/media - specific mai ales Debian-ului (contine /media/floppy &lt;br /&gt;
         si/sau /media/cdrom, etc... rolul e identic cu cel &lt;br /&gt;
         al directorului /mnt)&lt;br /&gt;
/opt   - software adaugat dupa, de obicei din surse neoficiale &lt;br /&gt;
         (de ex, rpm-urile de la OpenOffice.org)&lt;br /&gt;
/proc  - fiecare proces care ruleaza isi creeaza un director aici&lt;br /&gt;
/root  - home-ul root-ului&lt;br /&gt;
/usr   - ierarhie secundara (contine: /usr/bin, /usr/lib, etc...)&lt;br /&gt;
/sbin  - executabile esentiale de sistem (de ex: shutdown)&lt;br /&gt;
/tmp   - fisiere temporare (asemenea directoare sunt si in home-ul&lt;br /&gt;
         fiecarui user, de ex: /home/gica/tmp)&lt;br /&gt;
/var   - fisiere care se schimba des in timp (de ex: /var/log - &lt;br /&gt;
         jurnale de sistem, /var/cache - fisiere temporare...)&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pentru detalii, a se consulta [http://www.pathname.com/fhs/ documentatia oficiala referitoare la ierarhia standard a fisierelor Unix].&lt;br /&gt;
&lt;br /&gt;
Asadar, un pachet cel mai probabil ca isi va pune fisierele si directoarele in mai multe locuri, &amp;quot;imprastiindu-le&amp;quot; dupa rolul lor prin diversele directoare, iar managerul de pachete (daca exista), va sti ce se intampla, dezinstalarea sau oricare alta operatie asupra pachetului fiind facila pentru utilizator.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Cum vede Linux hard-disk-ul meu? (Partitionare) ====&lt;br /&gt;
&lt;br /&gt;
Dand comanda '''fdisk -l''' veti putea vedea toate partitiile din sistem. Pentru a va lamuri mai bine, cititi articolul [[Parti%C5%A3ii | Partitii]] care va va raspunde la intrebarea din titlu si la multe altele.&lt;br /&gt;
&lt;br /&gt;
Pe scurt, comanda '''mount''' este ceea ce cautati. '''man mount''' pentru detalii.&lt;br /&gt;
&lt;br /&gt;
Care este sintaxa?&lt;br /&gt;
&lt;br /&gt;
'''mount -t tip_sistem_de_fisiere device /cale/unde/vreau/sa/montez'''&lt;br /&gt;
&lt;br /&gt;
De exemplu daca vreau sa montez o partitie FAT32 (cea de-a doua partitie de pe hard-disk-ul meu sa zicem) dau comanda:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt; mount -t vfat /dev/hda2 /mnt/hda2 &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Daca vreau sa montez o partitie NTFS (cea de-a treia partitie de pe hard-disk-ul meu sa zicem) dau comanda:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt; mount -t ntfs /dev/hda3 /mnt/hda3 &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Daca vreau sa montez o partitie ext3 (cea de-a cincea partitie de pe hard-disk-ul meu sa zicem) dau comanda:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt; mount -t ext3 /dev/hda5 /mnt/hda5 &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Daca vreau sa montez o discheta (al carei sistem de fisiere este ext3):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt; mount -t ext3 /dev/fd0 /mnt/floppy &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Daca vreau sa montez un CD/DVD:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt; mount -t iso9660 /dev/cdrom /mnt/cdrom &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Daca vreau sa montez o imagine de CD/DVD in format '''iso''':&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt; mount -t iso9660 -o loop /home/imagine.iso /mnt/cdrom &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pentru a de-monta un device, avand in vedere un exemplu de mai sus, dati comanda:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt; umount /dev/hda5 &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Note aditionale'''&lt;br /&gt;
&lt;br /&gt;
* '''/mnt/hda2''', '''/mnt/cdrom''', '''/mnt/floppy''' etc. trebuie sa fie un directoare deja existente, bineinteles, eventual create chiar de noi anterior.&lt;br /&gt;
* Fisierul care se ocupa cu montarea tuturor device-urilor la pornirea sistemului este /etc/'''fstab'''. Acolo trebuie sa operati modificarile pentru a va retine setarile.&lt;br /&gt;
* Parametrul &amp;quot;-t tip_sistem_de_fisiere&amp;quot; poate lipsi de cele mai multe ori, gasind automat ce sistem de fisiere are partitia pe care vreti sa o montati.&lt;br /&gt;
* Unele comenzi nu vor merge &amp;quot;din prima&amp;quot; avand in vedere ca trebuie sa adaptati informatiile prezentate mai sus pentru sistemul vostru. Un caz bine de retinut este cel al lui /dev/cdrom, care de cele mai multe ori este o &amp;quot;scurtatura&amp;quot; (symbolic link, vezi '''man ln''') catre un device real, gen /dev/hdc, daca /dev/hdc este identificat ca fiind CD-ROM-ul vostru de Linux.   &lt;br /&gt;
* In majoritatea cazurilor, daca dati o comanda de mount, veti avea drept de citire si de scriere pe partitia/device-ul respectiv. Cum NTFS este o tehnologie inchisa, implementarea lui in kernelul Linux nu este inca completa si dreptul de scriere este foarte limitat. Daca doriti totusi sa faceti acest lucru neaparat (asumandu-va riscul ca partitia respectiva sa devina neutilizabila), aruncati un ochi pe proiectul [http://www.jankratochvil.net/project/captive/ Captive NTFS].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Notă amuzantă: În cazul în care vi se pare de undeva cunoscut numele comenzii '''mount''', s-ar putea să fie de la utilitarul de Windows '''Daemon Tools'''. Vă aduceţi aminte că pentru a putea vedea o imagine a unui CD trebuia să creeaţi un CD-ROM virtual şi să &amp;quot;montaţi&amp;quot; în el imaginea dorită? Ei bine, acţiunea este similară cu comanda '''mount''' sub Linux.''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===== Sisteme de fisiere =====&lt;br /&gt;
&lt;br /&gt;
Pe Windows avem trei sisteme de fisiere &amp;quot;populare&amp;quot;: FAT16, FAT32 si NTFS. Sub Linux, avem o intreaga suita: ext2, ext3, jfs, reiserfs, xfs si multe altele care necesita patch-uirea kernelului si recompilarea lui. In linii mari, toate sunt bune pentru un anumit scop. Nu va astepati sa fie un sistem de fisiere universal care sa indeplineasca toate cerintele posibile. Comparatii cu privire la actualele sisteme de fisiere puteti gasi pe [http://www.google.ro Google] cu duiumul, insa numai voi decideti care se potriveste mai bine scopului vostru.&lt;br /&gt;
&lt;br /&gt;
Personal eu utilizez pentru partitiile de Windows FAT32 si pentru partitiile de Linux ext3, deoarece sunt foarte bine  &amp;quot;impamantate&amp;quot;, avand in vedere vechimea lor. Cu alte cuvinte de pe Windows am acces read/write la partitiile Linux ext3 cu ajutorul proiectului [http://sourceforge.net/projects/ext2fsd Ext2 File System Driver for NT/2K/XP], dar atentie ca nu este lipsit complet de riscuri. Pana acum eu nu am avut probleme, dar va sfatuiesc sa nu incercati astfel de pozne daca aveti date importante pe partitiile pe care vreti sa faceti operatii. Un alt proiect de acelasi gen pe care il recomand cu caldura este [http://www.fs-driver.org/index.html Ext2 Installable File System for Windows] si pot garanta ca functioneaza foarte bine.&lt;br /&gt;
&lt;br /&gt;
Sub Linux, accesul read/write la partitiile FAT32 este implementat de mult timp, asadar alegerile pe care le-am facut eu sunt clare. Voi, ramane sa va ganditi daca aveti nevoie de acesta flexibilitate cu pretul unor performante ceva mai scazute.&lt;br /&gt;
&lt;br /&gt;
In ceea ce priveste NTFS, pentru accesul read-only de sub Linux exista implementare direct in kernel, dar pentru acces de scriere, este mai complicata situatia. Se poate scrie cu modulul (driverul) clasic, dar numai in cazuri speciale. Proiectul [http://www.jankratochvil.net/project/captive/ Captive NTFS] este ceea ce cautati, dar din nou atentie sa nu va busiti partitia. Acesta foloseste driverul original ntfs de la Microsoft emuland subsistemele necesare, similar cu Wine.&lt;br /&gt;
&lt;br /&gt;
==== Cum vede Linux celelalte dispozitive din calculatorul meu? ====&lt;br /&gt;
&lt;br /&gt;
===== &amp;lt;tt&amp;gt;/dev&amp;lt;/tt&amp;gt; =====&lt;br /&gt;
&lt;br /&gt;
/dev este directorul in care se gasesc dispozitivele de sistem. Unele sunt &amp;quot;Character devices&amp;quot;, altele sunt &amp;quot;Block devices&amp;quot; si reprezinta modul de interactiune dintre module (respectiv kernel) si dispozitivele fizice. Diferenta dintre cele doua este ca &amp;quot;Block devices&amp;quot; au un buffer pentru cereri, astfel avand dreptul sa alega ordinea in care sa raspunda acestora. Acest lucru cu precadere important pentru dispozitivele de stocare, unde este mai rapid sa scrie sau sa citesca sectoare care sunt apropiate unul de celalalt, decat acelea care sunt departate. O alta diferenta este faptul ca &amp;quot;Block devices&amp;quot; accepta intrari si iesiri doar in blocuri (ale caror marimi variaza in functie de dispozitiv), pe cand &amp;quot;Character devices&amp;quot; pot folosi cat de multi sau de putini octeti (bytes) doresc. Multe din dispozitivele aflate in /dev sunt de tip caracter deoarece nu au nevoie de acest tip de buffering, si nu opereaza cu o dimensiune fixa a blocurilor de date&lt;br /&gt;
&lt;br /&gt;
Puteti vedea care sunt de un tip sau celalalt dand comanda '''ls -l'''. Unde apare '''b''' avem de-a face un un block device, iar unde apare '''c''' avem de-a face cu un character device.&lt;br /&gt;
&lt;br /&gt;
In practica, noi nu ne prea ocupam cu crearea acestor blocuri, desi in cazul in care detectia nu este buna aveti posibilitatea sa faceti acest lucru. '''man mknod''' pentru detalii.&lt;br /&gt;
&lt;br /&gt;
===== &amp;lt;tt&amp;gt;/proc&amp;lt;/tt&amp;gt; =====&lt;br /&gt;
&lt;br /&gt;
Sistemul de fisiere proc este un pseudo sistem de fisere montat in /proc care reprezinta obiectele accesibile utilizatorilor si reflecta starea kernel-ului si a proceselor care ruleaza la momentul respectiv. &amp;quot;Pseudo&amp;quot; deoarece sistemul de fisiere /proc nu este altceva decat starea in memorie a structurilor de date ale nucleului pe care le afisaza. Nu este deloc suprinzator ca aceste fisiere au de obicei dimensiunea 0. Unele din aceste fisiere pot fi modificate de catre root, alterand optiunile din timpul rularii.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Ce este un boot-loader? ====&lt;br /&gt;
&lt;br /&gt;
Un program care ruleaza in momentul in care porneste calculatorul vostru. El este responsabil cu incarcarea si transferarea controlului catre un sistem de operare (in principal kernelul sau) sau catre boot-loader-ul altui sistem de operare (operatie numita chain-load).&lt;br /&gt;
&lt;br /&gt;
La ora actuala, cel mai popular si mai puternic boot loader in lumea Linux pare sa fie [http://www.gnu.org/software/grub/ GRUB] acum dezvoltat de echipa GNU. Personal, eu am folosit o varianta compilata de GRUB sa incarce mai multe sisteme de operare incapatanate (care voiau doar o anumita ordine de instalare), cum ar fi diverse versiuni de Windows, fara a avea la dispozitie nici o partitie Linux.&lt;br /&gt;
&lt;br /&gt;
Mai multe, in ceea ce urmeaza.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===== Cum configurez un boot-loader? =====&lt;br /&gt;
&lt;br /&gt;
Aici intervin cele mai cunoscute programe de acest tip pentru platforma Linux: GRUB si LILO. Pentru CD-ROM-uri si dischete, avem: [http://syslinux.zytor.com/ syslinux] si [http://syslinux.zytor.com/iso.php isolinux].&lt;br /&gt;
&lt;br /&gt;
====== GRUB ======&lt;br /&gt;
&lt;br /&gt;
Pagina oficiala este [http://www.gnu.org/software/grub/ GRUB], iar cele mai bune informatii referitoare la subiect le puteti gasi in [http://www.gnu.org/software/grub/manual/grub.html GRUB Manual].&lt;br /&gt;
&lt;br /&gt;
Iata cateva o metoda pe care le-am folosit-o pana acum cand am avut probleme. Ea implica instalarea manuala a GRUB-ului, motiv pentru care se recomanda dezinstalarea variantei venita o data cu sistemul vostru.&lt;br /&gt;
&lt;br /&gt;
Dar inainte de toate, cititi documentatia oficiala! Dati comanda '''info grub''' intr-o consola sau alternativ consultati documentatia online la adresa http://www.gnu.org/software/grub/manual/.&lt;br /&gt;
&lt;br /&gt;
Daca vreti sa folositi instalarea care vine o data cu sistemul vostru, atunci nu aveti decat sa modificati fisierul '''grub.conf''' sau '''menu.lst''' dupa caz pentru a adauga optiunile pe care le doriti. In caz ca nu mai este functionala acea varianta de GRUB, presupunand ca boot-loader-ul de Windows a rescris MBR-ul sau altceva asemanator s-a intamplat, urmati pasii:&lt;br /&gt;
&lt;br /&gt;
# Boot-ati de pe un Live CD, Knoppix de exemplu.&lt;br /&gt;
# Intrati in consola.&lt;br /&gt;
# Daca nu sunteti root(administratorul sistemului) dati comanda '''su -'''.Acesta este trucul pentru a deveni root in Knoppix, insa nu este universal valabil, deoarece de obicei cere o parola.&lt;br /&gt;
# Creati un director. ('''man mkdir''') Exemplu: '''mkdir /hard'''&lt;br /&gt;
# Montati partitia unde se gaseste GRUB. Exemplu: '''mount /dev/hda2 /hard'''. De notat ca GRUB isi instaleaza fisiere de configurare in directorul /boot/grub, deci daca directorul /boot se gaseste pe alta partitie (cum recomanda unele distributii), comanda ''mount'' data de voi trebuie sa reflecte locatia corecta.&lt;br /&gt;
# Daca partitia unde se gaseste GRUB este diferita de cea unde se gaseste sistemul, montati si sistemul, urmand exemplele anterioare.&lt;br /&gt;
# Dati comanda: &amp;lt;code&amp;gt; grub-install /dev/hda &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Altfel, varianta mai dificila un pic este:&lt;br /&gt;
&lt;br /&gt;
# Luati o discheta care sa nu va trebuiasca prea curand si puneti-o in floppy-disk drive.&lt;br /&gt;
# Luati varianta [ftp://alpha.gnu.org/gnu/grub/grub-0.97.tar.gz 0.97] (de exemplu).&lt;br /&gt;
# Dezarhivati-o ([http://wiki.linux360.ro/wiki/Ce_este_GNU/Linux%3F_/_Cum_invat_Linux%3F#Cum_utilizez_tar.3F_.28arhivare.2Fdezarhivare.29 exemplu aici])&lt;br /&gt;
# Dati comanda '''./configure &amp;amp;&amp;amp; make install''' in noul director dezarhivat. Acum ar trebui sa aveti o versiune de GRUB compilata chiar in fata ochilor vostri.&lt;br /&gt;
# Daca BIOS-ul este setat sa booteze prima data de pe discheta, lasati discheta inauntru. Daca nu, dupa ce ati terminat toate aceste operatii si dati reboot, nu uitati sa setati in BIOS sa booteze prima data de pe discheta. &lt;br /&gt;
# Apoi, dati comenzile urmatoare pentru a crea o discheta boot-abila de GRUB, noi fiind tot in directorul initial, in care am compilat programul. &amp;lt;code&amp;gt;dd if=stage1 of=/dev/fd0 bs=512 count=1 &amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;dd if-stage2 of=/dev/fd0 bs=512 seek=1 &amp;lt;/code&amp;gt;&lt;br /&gt;
# Identificati partitiile. Un '''fdisk -l''' ar trebui sa va dea suficiente informatii. Atentie ca GRUB vede partitiile altfel decat sistemul de operare. Este destul de intuitiva notatia, dar daca nu va descurcati, '''info grub'''.&lt;br /&gt;
# Copiati toate fisierele din directorul nostru de lucru (cel in care am compilat noul GRUB) in '''/boot/grub'''. Daca directorul din urma nu exista, il creati.&lt;br /&gt;
# Dati reboot (CTRL+ALT+DEL), iar el va boota de pe discheta (daca asa e setat din BIOS, vedeti mai sus indicatia).&lt;br /&gt;
# Daca ati facut ce trebuia, el va incarca GRUB de pe discheta si va veti gasi in fata unei &amp;quot;pseudo-console&amp;quot;, o interfata de dat comenzi de fapt. &lt;br /&gt;
# Puteti da comenzile '''root(hd0,1)''' si '''setup (hd0)''' de exemplu, asta presupunand ca partitia este '''hda2''' si hard-discul este ''hda''. '''Adaptati dupa caz!''' Acum ar trebui sa aveti o idee cam cum le noteaza, nu-i asa? In principal, fiti atenti ca el incepe notatia de la 0, nu de la 1. Adica, in exemplul nostru (hd0,1) corespunde lui /dev/hda2 de pe hard-disk-ul primar (hd0).&lt;br /&gt;
&lt;br /&gt;
Iata si un exemplu de fisier de configurare (cu cateva exemple in el), citat din '''/boot/grub/menu.lst''' :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# menu.lst - See: grub(8), info grub, update-grub(8)&lt;br /&gt;
#            grub-install(8), grub-floppy(8),&lt;br /&gt;
#            grub-md5-crypt, /usr/share/doc/grub&lt;br /&gt;
#            and /usr/share/doc/grub-doc/.&lt;br /&gt;
&lt;br /&gt;
## default num&lt;br /&gt;
# Set the default entry to the entry number NUM. Numbering starts &lt;br /&gt;
# from 0, and the entry number 0 is the default if the command is&lt;br /&gt;
# not used.&lt;br /&gt;
#&lt;br /&gt;
# You can specify 'saved' instead of a number. In this case, the &lt;br /&gt;
# default entry is the entry saved with the command 'savedefault'.&lt;br /&gt;
default         0&lt;br /&gt;
&lt;br /&gt;
## timeout sec&lt;br /&gt;
# Set a timeout, in SEC seconds, before automatically booting the &lt;br /&gt;
# default entry (normally the first entry defined).&lt;br /&gt;
#timeout                10&lt;br /&gt;
&lt;br /&gt;
## hiddenmenu&lt;br /&gt;
# Hides the menu by default (press ESC to see the menu)&lt;br /&gt;
#hiddenmenu&lt;br /&gt;
&lt;br /&gt;
# Pretty colours&lt;br /&gt;
#color cyan/blue white/blue&lt;br /&gt;
&lt;br /&gt;
## password ['--md5'] passwd&lt;br /&gt;
# If used in the first section of a menu file, disable all interactive&lt;br /&gt;
# editing control (menu entry editor and command-line)  and entries&lt;br /&gt;
# protected by the command 'lock'&lt;br /&gt;
# e.g. password topsecret&lt;br /&gt;
#      password --md5 $1$gLhU0/$aW78kHK1QfV3P2b2znUoe/&lt;br /&gt;
# password topsecret&lt;br /&gt;
&lt;br /&gt;
#&lt;br /&gt;
# examples&lt;br /&gt;
#&lt;br /&gt;
# title         Windows 95/98/NT/2000&lt;br /&gt;
# root          (hd0,0)&lt;br /&gt;
# makeactive&lt;br /&gt;
# chainloader   +1&lt;br /&gt;
#&lt;br /&gt;
# title         Linux&lt;br /&gt;
# root          (hd0,1)&lt;br /&gt;
# kernel        /vmlinuz root=/dev/hda2 ro&lt;br /&gt;
#&lt;br /&gt;
&lt;br /&gt;
## ## End Default Options ##&lt;br /&gt;
&lt;br /&gt;
title       Ubuntu, kernel 2.6.12-10-686&lt;br /&gt;
#lock       # -&amp;gt; Optiune utila daca este activata parola md5, acesta &lt;br /&gt;
            # oprind accesul daca nu este introdusa o parola valida.&lt;br /&gt;
root        (hd0,1)&lt;br /&gt;
kernel      /boot/vmlinuz-2.6.12-10-686 root=/dev/hda2 ro quiet splash&lt;br /&gt;
initrd      /boot/initrd.img-2.6.12-10-686&lt;br /&gt;
savedefault&lt;br /&gt;
boot&lt;br /&gt;
&lt;br /&gt;
title       Ubuntu, kernel 2.6.12-10-686 (recovery mode)&lt;br /&gt;
root        (hd0,1)&lt;br /&gt;
kernel      /boot/vmlinuz-2.6.12-10-686 root=/dev/hda2 ro single&lt;br /&gt;
initrd      /boot/initrd.img-2.6.12-10-686&lt;br /&gt;
boot&lt;br /&gt;
&lt;br /&gt;
title       Ubuntu, memtest86+&lt;br /&gt;
root        (hd0,1)&lt;br /&gt;
kernel      /boot/memtest86+.bin&lt;br /&gt;
boot&lt;br /&gt;
&lt;br /&gt;
### END DEBIAN AUTOMAGIC KERNELS LIST&lt;br /&gt;
&lt;br /&gt;
# This is a divider, added to separate the menu items below from&lt;br /&gt;
# the Debian ones.&lt;br /&gt;
title           Other operating systems:&lt;br /&gt;
root&lt;br /&gt;
&lt;br /&gt;
title           FreeBSD&lt;br /&gt;
root            (hd0,2,a)&lt;br /&gt;
&lt;br /&gt;
title           Windows&lt;br /&gt;
rootnoverify    (hd0,3)&lt;br /&gt;
chainloader     +1&lt;br /&gt;
&lt;br /&gt;
# Acesta ultima operatie incarca boot-loader-ul Windows cu ajutorul&lt;br /&gt;
# lui GRUB (operatie numita chainload)&lt;br /&gt;
&lt;br /&gt;
# Pentru operatii mai sofisticate legate de Windows, vedeti &lt;br /&gt;
# sectiunile: hide, map si makeactive din manual.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''N.a.:'' '''[FIXME]''' De adaugat si completat daca mai e ceva, in principiu vreau sa-l fac tutorial separat si il voi muta intr-un alt articol, aici venind un link catre el.&lt;br /&gt;
&lt;br /&gt;
====== LILO ======&lt;br /&gt;
&lt;br /&gt;
'''[FIXME]''' Articol despre LILO. Aveti un articol despre LILO sau un link catre unul foarte bun? Puneti-l aici.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Kernel-ul (Nucleul) GNU/Linux  ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Kernelul Linux (in limba romana romana &amp;quot;nucleu&amp;quot;), este supra-programul care guverneaza modul in care aplicatiile au voie sa functioneze, in ce parametri, cu ce drepturi, cata memorie sa fie alocata s.a.m.d. Este &amp;quot;generalul&amp;quot; sistemului de operare, daca vreti sa-i spuneam asa.&lt;br /&gt;
&lt;br /&gt;
Avantajul nucleului creat de Linus Torvalds fata de alte variante cu sursa inchisa este faptul ca il puteti compila chiar voi creand astfel ceva optimizat, fix pentru sistemul vostru, dand astfel un spor de performanta si securitate.&lt;br /&gt;
&lt;br /&gt;
Mai mult, avand sursele, puteti gasi patch-uri pentru el care sa-i imbogateasca functionalitatea si tot ce aveti de facut este sa il recompilati activand noile optiuni.&lt;br /&gt;
&lt;br /&gt;
Nota explicativa: Procesul de aplicare al unui patch este foarte simplu: patch -pX &amp;lt; nume.patch, unde X este un numar. '''man patch''' pentru detalii.&lt;br /&gt;
&lt;br /&gt;
Din generatia noua de nuclee mentionam ramurile 2.4 si 2.6 care vor fi explicate mai in detaliu in cele ce urmeaza. Scopul prezentarilor urmatoare este sa va indice ce inseamna diversele sectiuni pe care le veti intalni pe parcursul compilarii si cateva din optiunile cele mai importante, astfel incat sa puteti alege singuri optinunile pe care le doriti.&lt;br /&gt;
&lt;br /&gt;
In primul rand, trebuie sa luam sursele si sa ne asiguram ca avem pe sistemul nostru toate cele necesare compilarii efective. Pentru usurinta, vom lua doua exemple de fisiere de configurarea din Slackware 10.2. Motivul? Sursele care vin o data cu Slackware nu sunt modificate in nici un fel si ne ofera noua o metoda mai comoda de a lucra, pornind deja de la o baza (de la un fisier config functional), nefiind necesar sa setam absolut totul de la baza.&lt;br /&gt;
&lt;br /&gt;
De fapt, acesta este unul dintre cele mai bune sfaturi pe care vi le pot da, pana cand veti prinde chichitele compilarii si anume: porniti de la un config bun si incepeti sa rafinati optiunile, respectiv sa dezactivati suportul pentru ceea ce nu aveti nevoie. Atentie insa, pastrati suportul macar in stadiu de modul pentru anumite optiuni pe care este posibil sa le folositi in viitor dar nu stiti sigur.&lt;br /&gt;
&lt;br /&gt;
==== Recompilarea kernelului ====&lt;br /&gt;
&lt;br /&gt;
===== Ce sunt modulele? =====&lt;br /&gt;
&lt;br /&gt;
In momentul in care compilati aveti posibilitatea de a activa suportul direct in kernel pentru ceva, respectiv sa il dezactiva... sau sa il compilati ca modul. Modulul poate fi folosit (incarcat in kernel) la rulare sau nu, depizand de ce vreti sa faceti.&lt;br /&gt;
&lt;br /&gt;
Avand in vedere ca toate interfetele de comunicare cu dispozitivele fizice sunt introduse chiar in kernel, puteti sa compilati acest suport chiar ca modul. Adesea noi ne referim la module cu &amp;quot;drivere&amp;quot;, in linii mari putand spune ca sunt echivalentele driverelor de pe Windows, avand insa un spor mare de viteza ruland direct in kernel.&lt;br /&gt;
&lt;br /&gt;
Majoritatea distributiilor mari creeaza un kernel generic cu toate optiunile compilate ca modul, nestiind ce setup are fiecare utilizator pe calculatorul lui, ruland scripturi la initializarea sistemului pentru detectia hardware si incarcarea modulelor specifice. Acesta este de fapt motivul pentru care este de preferat sa pornim de la un astfel de un fisier config, oferindu-ne o configurare functionala, tocmai buna pentru a o lua noi la rafinat.&lt;br /&gt;
&lt;br /&gt;
De asemenea, pentru a ne usura munca este de preferabila o interfata grafica (make xconfig sau make gconfig) usor de folosit pentru a avea la dispozitie toate optiunile necesare, accesul facil la sistemul de ajutor [HELP] si modificari ulterioare in cazul in care am gresit ceva.&lt;br /&gt;
&lt;br /&gt;
===== Copierea surselor pe calculatorul vostru =====&lt;br /&gt;
&lt;br /&gt;
Sursele originale le veti gasi la ftp://ftp.kernel.org/pub/linux/kernel&lt;br /&gt;
&lt;br /&gt;
Dupa cum am spus vom lua ca exemplu un config si sursele (identice cu cele oficiale) din distributia Slackware &lt;br /&gt;
atat pentru 2.4 cat si pentru 2.6.&lt;br /&gt;
&lt;br /&gt;
* Config-ul pentru kernelul nostru de test 2.4:&lt;br /&gt;
http://ftp.iasi.roedu.net/mirrors/ftp.slackware.com/slackware-10.2/source/k/config&lt;br /&gt;
* Sursele pentru kernelul 2.4:&lt;br /&gt;
http://ftp.iasi.roedu.net/mirrors/ftp.slackware.com/slackware-10.2/source/k/linux-2.4.31.tar.bz2&lt;br /&gt;
* Config-ul pentru kernelul nostru de test 2.6:&lt;br /&gt;
http://ftp.iasi.roedu.net/mirrors/ftp.slackware.com/slackware-10.2/testing/source/linux-2.6.13/config-2.6.13&lt;br /&gt;
* Sursele pentru kernelul 2.6:&lt;br /&gt;
http://ftp.iasi.roedu.net/mirrors/ftp.slackware.com/slackware-10.2/testing/source/linux-2.6.13/linux-2.6.13.tar.bz2&lt;br /&gt;
&lt;br /&gt;
Primul lucru pe care il aveti de facut este sa dezarhivati sursele. Inainte de toate, nu uitati sa consultati directorul '''Documentation''' care include toate detaliile expuse in continuare si multe altele. De asemenea, fisierul '''README''' din directorul radacina al surselor va ofera informatii importante.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====== linux 2.4 ======&lt;br /&gt;
&lt;br /&gt;
'''Cerinte 2.4'''&lt;br /&gt;
&lt;br /&gt;
Pentru a compila kernelul linux versiunea 2.4 trebuie sa aveti urmatoarele programe:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
*  Gnu C                  2.95.3                  # gcc --version&lt;br /&gt;
*  Gnu make               3.77                    # make --version&lt;br /&gt;
*  binutils               2.9.1.0.25              # ld -v&lt;br /&gt;
*  util-linux             2.10o                   # fdformat --version&lt;br /&gt;
*  modutils               2.4.14                  # insmod -V&lt;br /&gt;
*  e2fsprogs              1.25                    # tune2fs&lt;br /&gt;
*  jfsutils               1.0.12                  # fsck.jfs -V&lt;br /&gt;
*  reiserfsprogs          3.6.3                   # reiserfsck -V 2&amp;gt;&amp;amp;1|grep reiserfsprogs&lt;br /&gt;
*  xfsprogs               2.6.0                   # xfs_db -V&lt;br /&gt;
*  pcmcia-cs              3.1.21                  # cardmgr -V&lt;br /&gt;
*  quota-tools            3.09                    # quota -V&lt;br /&gt;
*  PPP                    2.4.0                   # pppd --version&lt;br /&gt;
*  isdn4k-utils           3.1pre1                 # isdnctrl 2&amp;gt;&amp;amp;1|grep version&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pentru detalii, consultati '''Documentation/Changes'''. Lista programelor de mai sus poate varia in functie de ce optiuni folositi.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Compilarea efectiva (pasi)'''&lt;br /&gt;
&lt;br /&gt;
'''1.''' Oricare din urmatoarele comenzi lanseaza procesul de compilare, insa doar ultimele doua sunt intr-un meniu grafic usor de utilizat. Pentru incepatori este recomandat sa foloseasca unul din ele. Nota: pentru a rula '''make menuconfig''' trebuie sa aveti instalat '''ncurses''', pentru a rula '''make xconfig''' trebuie sa aveti instalat '''qt''' si bibliotecile sale iar pentru a rula '''make gconfig''' trebuie sa aveti instalat '''gtk'''.&lt;br /&gt;
&lt;br /&gt;
* '''make oldconfig'''&lt;br /&gt;
* '''make config'''&lt;br /&gt;
* '''make menuconfig'''&lt;br /&gt;
* '''make xconfig'''&lt;br /&gt;
* '''make gconfig'''&lt;br /&gt;
&lt;br /&gt;
'''2.''' Incarcati config-ul (din meniul Load daca l-ati lansat grafic) &lt;br /&gt;
&lt;br /&gt;
'''3.''' Dupa ce ati configurat ce era de configurat dati Save si apoi:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
make dep&lt;br /&gt;
make bzImage&lt;br /&gt;
make install&lt;br /&gt;
make modules_install&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''4.''' Copiati imaginea $Director_surse/arch/i386/boot/bzImage in /boot si redenumiti-o linux-2.4.31-test (in conformitate cu exemplul nostru, dar voi adaptati dupa caz), daca arhitectura pentru care l-ati compilat este x86.&lt;br /&gt;
&lt;br /&gt;
'''NU stergeti kernelul vechi functional pe care il aveti!''' In cazul in care ceva nu a mers cum trebuie, trebuie sa aveti o metoda de a reveni la un stadiu functional. Acesta este si motivul pentru care nu va sfatuiesc nici sa inlocuiti vechiul kernel cu cel compilat de voi pana cand nu aveti certitudinea ca functioneaza 100%.&lt;br /&gt;
&lt;br /&gt;
'''5.''' Editati fisierul de configurare al boot-loader-ului folosit de voi, pentru cei care folosesc LILO acesta va fi probabil /etc/lilo.conf, iar pentru cei care folosesc GRUB, va fi probabil /boot/grub/grub.conf sau menu.lst si adaugati in lista de intrari noua voastra &amp;quot;opera&amp;quot;. Pentru a afla despre cum interactionati cu boot-loader-ul cautati in sectiunile corespunzatoare din acest articol sau pe [http://www.google.ro Google]&lt;br /&gt;
&lt;br /&gt;
Nota: Daca ati compilat aproape totul ca modul (cum se intampla cu nucleele generice de obicei), atunci nu uitati sa creeati si un initrd cu comanda '''mkinitrd'''. Consultati pagina de manual pentru detalii.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====== linux 2.6 ======&lt;br /&gt;
&lt;br /&gt;
'''Cerinte 2.6'''&lt;br /&gt;
&lt;br /&gt;
Pentru a compila kernelul linux versiunea 2.4 trebuie sa aveti urmatoarele programe:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
*  Gnu C                  2.95.3                  # gcc --version&lt;br /&gt;
*  Gnu make               3.79.1                  # make --version&lt;br /&gt;
*  binutils               2.12                    # ld -v&lt;br /&gt;
*  util-linux             2.10o                   # fdformat --version&lt;br /&gt;
*  module-init-tools      0.9.10                  # depmod -V&lt;br /&gt;
*  e2fsprogs              1.29                    # tune2fs&lt;br /&gt;
*  jfsutils               1.1.3                   # fsck.jfs -V&lt;br /&gt;
*  reiserfsprogs          3.6.3                   # reiserfsck -V 2&amp;gt;&amp;amp;1|grep reiserfsprogs&lt;br /&gt;
*  xfsprogs               2.6.0                   # xfs_db -V&lt;br /&gt;
*  pcmciautils            004&lt;br /&gt;
*  pcmcia-cs              3.1.21                  # cardmgr -V&lt;br /&gt;
*  quota-tools            3.09                    # quota -V&lt;br /&gt;
*  PPP                    2.4.0                   # pppd --version&lt;br /&gt;
*  isdn4k-utils           3.1pre1                 # isdnctrl 2&amp;gt;&amp;amp;1|grep version&lt;br /&gt;
*  nfs-utils              1.0.5                   # showmount --version&lt;br /&gt;
*  procps                 3.2.0                   # ps --version&lt;br /&gt;
*  oprofile               0.9                     # oprofiled --version&lt;br /&gt;
*  udev                   058                     # udevinfo -V&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pentru detalii, consultati '''Documentation/Changes'''. Lista programelor de mai sus poate varia in functie de ce optiuni folositi.&lt;br /&gt;
&lt;br /&gt;
'''Compilarea efectiva (pasi)'''&lt;br /&gt;
&lt;br /&gt;
Pasii '''1.''' si '''2.''' sunt identici cu cei de mai sus.&lt;br /&gt;
&lt;br /&gt;
'''3.''' Dupa ce ati configurat ce era de configurat dati Save si apoi:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
make&lt;br /&gt;
make install&lt;br /&gt;
make modules_install&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pasii '''4.''' si '''5.''' sunt identici, la fel si nota despre '''mkinitrd'''.&lt;br /&gt;
&lt;br /&gt;
====== Optiuni de compilare si ce semnifica fiecare sectiune ======&lt;br /&gt;
&lt;br /&gt;
'''Asemanari si deosebiri intre 2.4 si 2.6'''&lt;br /&gt;
&lt;br /&gt;
'''[Va urma]'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Instalarea unei distributii (pe scurt) ===&lt;br /&gt;
&lt;br /&gt;
In linii mari instalarea unei distributiii se reduce la:&lt;br /&gt;
* pornirea programului de instalare la boot (de obicei de pe un CD)&lt;br /&gt;
* detectarea sumara a hardware-ului&lt;br /&gt;
* partitionarea harddisk-ului&lt;br /&gt;
* instalarea efectiva a sistemului&lt;br /&gt;
* ultimele retusuri; configurarea hardware-ului, instalarea boot-loader-ului.&lt;br /&gt;
&lt;br /&gt;
Cea mai importanta parte este partitionarea. Sa vedem ceva notiuni de baza:&lt;br /&gt;
* pe un hard-disk pot exista pana la 4 partitii primare si una extended ce poate contine oricate partitii logice.&lt;br /&gt;
* pentru a instala Linux-ul aveti nevoie de cel putin doua partitii de orice tip (primare, logice, una primara si cealalta logica):&lt;br /&gt;
** o partitie '''swap'''&lt;br /&gt;
*** va fi formatata folosind sistemul de fisiere '''swap'''&lt;br /&gt;
*** nu va avea punct de montare&lt;br /&gt;
*** dimensiunea recomandata: dublul cantitatii de memorie RAM instalata pe calculator, dar nu mai mult de 2 Gb&lt;br /&gt;
*** e mai mult un mit in ziua de azi (datorita hard-disk-urilor rapide), dar cu cat e mai aproape de primul sector al hard-disk-ului (centrul platanului), cu atat e mai bine&lt;br /&gt;
*** kernel-ul va folosi spatiul de pe aceasta partitie pentru a suplini memoria calculatorului&lt;br /&gt;
** o partitie '''root'''&lt;br /&gt;
*** s-a discutat deja despre sisteme de fisiere; '''ext3''' este cel mai folosit momentan&lt;br /&gt;
*** punctul de montare este: '''/'''&lt;br /&gt;
*** dimensiune recomandata: in functie de imprejurari; aproximativ 5Gb e destul in general; mai putin pentru un server care nu are interfata grafica instalata; 8 - 10Gb pentru o instalare completa&lt;br /&gt;
* alte partitii:&lt;br /&gt;
** pentru server-e este important ca /var si /tmp sa fie partitii separate; /var/log, /var/cache, etc, pot deveni foarte mari si e bine sa nu deranjeze alte directoare, iar /tmp este, in general, accesibil oricui - de aceea se monteaza separat cu optiunea ''noexec'' (un fel de ''chmod -x'' pentru fiecare fisier de acolo)&lt;br /&gt;
** pentru un desktop e chiar ideal ca /home sa fie partitie separata; va permite reinstalarea usoara a sistemului, chiar schimbarea distributiei (se alege formatarea partitiei ''root'' si lasarea intacta a celei ''home''); dupa pornire sistemul va arata ca inainte (cel putin din punctul de vedere al utilizatorului), datele importante si setarile fiind pastrate de fiecare utilizator in ''home''-ul sau&lt;br /&gt;
&lt;br /&gt;
Fiecare distributie are un model de dezvoltare. Acesta presupune existenta a cel putin doua ramuri (una cu pachete considerate stabile (in general cu versiuni mai vechi) si alta cu pachete noi, instabile) si a unor reguli care stabilesc clar drumul pe care trebuie sa il strabata un pachet pentru a ajunge din ramura instabila in cea stabila. In functie de cerere si de sectorul de utilizare pe care il vizeaza fiecare distributie in parte, modelul de dezvoltare se modifica in timp, imbunatatindu-se continuu.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Debian ====&lt;br /&gt;
&lt;br /&gt;
O distributie cu un iz ''geek''... Poate speria utilizatorul incepator, oferind doar un installer text. Nu este cazul: installer-ul acesta este probabil unul din cele mai intuitive dintre toate installer-urile text pe care le veti gasi in lumea Linux!&lt;br /&gt;
&lt;br /&gt;
Dar, inainte de instalare, sa vedem ce &amp;quot;fel&amp;quot; de Debian putem alege:&lt;br /&gt;
* ''stable'' - nume de cod Sarge! E o alegere perfecta pentru server-e sau pentru desktop-urile celor mai conservatori. Are pachete (deci, aplicatii) mai vechi, dar cu siguranta foarte bine testate si ''rock-solid''.&lt;br /&gt;
* ''unstable'' - nume de cod Sid! Daca azi apare un nou XMMS, de exemplu, mai mult ca sigur, maine acest nou XMMS e in Debian ''unstable''. E o alegere relativ buna pentru cei cu adrenalina, care vor ''bleeding edge''.&lt;br /&gt;
* ''testing'' - nume de cod Etch! Nu-i nici ''stable'' nici ''unstable''. Daca azi apare un nou XMMS, nu conteaza... dar e posibil ca maine, XMMS-ul din ''testing'' sa primeasca &amp;quot;aprobare&amp;quot; si sa fie mutat in ramura ''stable''. O alegere relativ buna pentru desktop.&lt;br /&gt;
&lt;br /&gt;
V-ati decis! Atunci, punctul de plecare este [http://www.debian.org/distrib/ Getting Debian]. Lasand la o parte instalarea de pe floppy (fara sa fim carcotasi... dar totusi, e depasita) si indiferent daca alegeti CD-ul minimal pentru netinstall sau CD-urile &amp;quot;complete&amp;quot;, instalarea decurge in principal la fel:&lt;br /&gt;
* dupa ce ati boot-at de pe CD, scrieti &amp;quot;linux26&amp;quot; la prompt, inainte de a continua. Astfel sistemul se va instala cu kernel 2.6&lt;br /&gt;
* urmeaza cateva intrebari de baza si detectia hardware-ului&lt;br /&gt;
* se seteaza reteaua&lt;br /&gt;
* la capitolul partitionare installer-ul ofera o interfata deosebit de prietenoasa pentru un mod text. Aveti grija la emoticonuri si fulgere... pe bune!&lt;br /&gt;
* urmeaza instalarea pachetelor&lt;br /&gt;
* se instaleaza si boot-loader-ul; GRUB e recomandat, pe MBR (Master Boot Record)&lt;br /&gt;
* se mai seteaza si ultimele detalii, sunt adaugati utilizatorii si e gata!&lt;br /&gt;
&lt;br /&gt;
Pentru detalii, consultati [http://www.debian.ro/ pagina oficiala a comunitatii Debian in Romania].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Fedora Core ====&lt;br /&gt;
&lt;br /&gt;
'''[FIXME]'''&lt;br /&gt;
&lt;br /&gt;
==== Gentoo ====&lt;br /&gt;
&lt;br /&gt;
'''[FIXME]'''&lt;br /&gt;
&lt;br /&gt;
==== Mandriva ====&lt;br /&gt;
&lt;br /&gt;
Recunoscuta ca distributia cu cel mai usor proces de instalare, ofera foarte multe variante si metode de instalare. &lt;br /&gt;
&lt;br /&gt;
La Debian am discutat despre ramuri... La Mandriva avem:&lt;br /&gt;
* ''Official'' - este distributia stabila. Mentine un echilibru intre pachete vechi si pachete noi, stabilitate versus noutate. Folosing medii/repository-uri neoficiale ce contin pachete ''Cooker'' &amp;quot;stabilizate&amp;quot;, puteti avea un ''Official'' cu versiuni noi la toate pachetele.&lt;br /&gt;
* ''Cooker'' - nume de cod pentru ramura ''unstable''. E ''bleeding-edge''-ul de la Mandriva. Bucataria frantuzeasca in care se amesteca azi XMMS-ul lansat ieri. E, in general, mai instabil decat Debian unstable, in mare parte datorita experimentelor care se fac pe pachetele care alcatuiesc Mandriva Control Center (se lucreaza foarte mult la adaugarea de noi module si la imbunatatirea detectiei hardware) si pe KDE (fiind o distributie KDE-centrica, cei de la Mandriva incearca sa stoarca mereu si ultima picatura de performanta pentru a-i mari viteza de rulare).&lt;br /&gt;
&lt;br /&gt;
Versiunea ''Free'' (cea fara programe care nu sunt compatibile GPL) poate fi descarcata pornind de pe [http://www.mandriva.com/en/downloads/mirrors pagina oficiala de download].&lt;br /&gt;
&lt;br /&gt;
Puteti alege dintre urmatoarele:&lt;br /&gt;
* 3 CD-uri care acopera o arie larga de aplicatii si driver-e, toate GPL&lt;br /&gt;
** primul CD este suficient pentru o instalare minimala cu ''urpmi'', ''Xorg'', ''KDE'', ''iceWM''&lt;br /&gt;
** si primul si al doilea CD sunt boot-abile si includ utilitare de recuperare (foarte util este utilitarul de (re)instalat boot-loader-ul) accesibile apasand F1 inainte de lansarea procesului de instalare&lt;br /&gt;
* DVD - insumeaza cele 3 CD-uri de mai sus&lt;br /&gt;
* One - Live CD instalabil&lt;br /&gt;
* Mini - CD cu un Mandriva minimal, pentru netinstall&lt;br /&gt;
&lt;br /&gt;
Daca ati ales sa instalati de pe CD-uri sau DVD, instalarea va decurge dupa cum urmeaza:&lt;br /&gt;
* Installer-ul standard are interfata grafica si se lanseaza automat. Pentru installer-ul text trebuie sa apasati F1 inainte ca installer-ul grafic sa porneasca.&lt;br /&gt;
* O particularitate Mandriva este nivelul de securitate pe care doriti sa il aveti in sistem. In general ''Standard'' e recomandat pentru desktop (permite utilizatorilor de rand sa scrie pe partitiile Windows FAT32, de exemplu). ''High'' sau ''Paranoid'' sunt pentru server-e in special. &lt;br /&gt;
* La capitolul partitionare, installer-ul e bine pregatit. DiskDrake ofera mai multe facilitati. Daca se alege varianta &amp;quot;Custom&amp;quot;, DiskDrake prezinta o interfata foarte prietenoasa in care oricine se poate descurca fara probleme.&lt;br /&gt;
* urpmi intra apoi in scena! Foarte discret, mascat mereu de interfete grafice, el intreaba de CD-uri, FTP-uri, HTTP-uri, etc... Intr-un cuvant: repository-uri/depozite de pachete. Apoi aseaza &amp;quot;pe masa&amp;quot; ce are la dispozitie. Pachetele pot fi selectate unul cate unul, sau pe categorii, iar urpmi va rezolva dependintele instantaneu si va face si propuneri.&lt;br /&gt;
* Instalarea incepe. Cei ce migreaza de pe Windows vor fi cu siguranta surprinsi de viteza de instalare a unei distributii binare!&lt;br /&gt;
* In mare instalarea e gata. Acum urmeaza setarea parolei de root si crearea utilizatorilor de rand. Apoi sunt facute ultimele retusuri (selectarea boot-loader-ului, configurarea interfetei grafice, conexiunea la net).&lt;br /&gt;
* La final installer-ul ofera alte cateva optiuni pe care in general le puteti ignora.&lt;br /&gt;
* Dupa reboot intra in scena DrakFirstTime. El se ocupa cu pre-configurarea desktop-ului si a update-urilor automate. Si cu asta, e cam gata!&lt;br /&gt;
&lt;br /&gt;
Pentru mai multe detalii, consultati documentatia de pe [http://www.mandrivausers.ro/ site-ul comunitatii Mandriva in Romania].&lt;br /&gt;
&lt;br /&gt;
==== Slackware ====&lt;br /&gt;
&lt;br /&gt;
'''[FIXME]'''&lt;br /&gt;
&lt;br /&gt;
==== openSUSE ====&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Popular&amp;quot; numita SUSE, de fapt noi ne vom ocupa aici de openSUSE. Ca si in testele de IQ, putem spune ca openSUSE este pentru Novell, ce este FedoraCore pentru RedHat.&lt;br /&gt;
&lt;br /&gt;
Developmentul e impartit in 3 ramuri:&lt;br /&gt;
* ''Released Version'' - versiunea stabila, cea recomandata pentru download. Corespunde ramurii ''stable'' de la Debian, ''Official'' de la Mandriva&lt;br /&gt;
* ''Development Version'' - versiune Alpha, Beta sau RC (Release Candidate). Corespunde ramurii testing de la ''testing'' de la Debian, respectiv ramurii ''Community'' de la Mandriva, cand e in stadiu de RC.&lt;br /&gt;
* ''Factory'' - versiunea instabila, cu modificari zilnice. Recomandat doar dezvoltatorilor. Corespunde ramurii ''unstable'' de la Debian, respectiv ''Cooker'' de la Mandriva&lt;br /&gt;
&lt;br /&gt;
Alegeti versiunea stabila de pe [http://en.opensuse.org/Download pagina de download] si sa-i dam drumul! Ca si mai sus, vom folosi CD-urile, deoarece sunt cel mai comun mediu de instalare. &lt;br /&gt;
&lt;br /&gt;
* Dupa bootarea de pe primul CD veti observa un meniu din care veti alege, cel mai probabil, instalarea standard.&lt;br /&gt;
* In timpul instalarii veti fi ''asistat'' de un panou in partea stanga care va explica ce se petrece in partea dreapta. Acest panou exista si in installer-ul de la RedHat/FedoraCore/CentOS.&lt;br /&gt;
* Tot ca la RedHat/FedoraCore/CentOS, installer-ul se ofera sa verifice CD-urile inainte de a incepe, pentru a nu incepe instalarea cu CD-uri &amp;quot;defecte&amp;quot;. Avand in vedere ca aceasta verificare mananca mult timp, daca ati verificat imaginile ISO cu md5sum dupa descarcare, puteti sari acest pas.&lt;br /&gt;
* Dupa ce se alege &amp;quot;New Installation&amp;quot; si se seteaza ceasul, installer-ul ne ofera un sumar al instalarii ce va urma.&lt;br /&gt;
* Este recomandat sa folositi butonul &amp;quot;Change&amp;quot; (sau cum se numeste in limba aleasa la instalare) de jos pentru a modifica anumite setari.&lt;br /&gt;
* Installer-ul va afisa cu rosu partitiile ce urmeaza sa fie modificate.&lt;br /&gt;
* Dupa inceperea instalarii propriu-zise, veti observa ca sistemul se va reboot-a dupa ce se instaleaza toate pachetele de pe primul CD. In meniul de la inceput, lasati sistemul sa boot-eze de pe harddisk.&lt;br /&gt;
* Dupa setarea parolei de root, update-urilor online, utilizatorilor, etc, puteti pasi direct in openSUSE Linux. Nu mai e nevoie de reboot din moment ce sistemul a fost reboot-at dupa primul CD.&lt;br /&gt;
&lt;br /&gt;
==== Ubuntu ====&lt;br /&gt;
&lt;br /&gt;
Fiind derivat din Debian, Ubuntu are in mare acelasi installer. Iar din moment ce instalarea este descrisa detaliat de [http://www.ubuntu.ro comunitatea Ubuntu Romania], va invitam sa cititi [http://wiki.ubuntu.ro/ManualUbuntuInstalareUbuntu acest articol].&lt;br /&gt;
&lt;br /&gt;
=== Imblanzirea unei distributii (&amp;quot;customize&amp;quot;, configurare, intretinere) ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Initializarea sistemului ====&lt;br /&gt;
&lt;br /&gt;
===== /etc =====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;/etc&amp;lt;/tt&amp;gt; este directorul magic in care se gasesc toate fisierele de configurare de sistem bine crescute.&lt;br /&gt;
&lt;br /&gt;
====== /etc/inittab ======&lt;br /&gt;
&lt;br /&gt;
Dupa incarcarea nucleului, verificarea device-urilor existente in sistem si incarcarea driverelor pentru acestea se trece la faza init, programul '''/sbin/init''' fiind lansat pentru a alege o actiune pentru pornire.&lt;br /&gt;
&lt;br /&gt;
Operatiile executate de programul '''init''' sunt controlate de fisierul '''/etc/inittab'''.&lt;br /&gt;
&lt;br /&gt;
Fisierul '''inittab''' contine intrari ce determina anumite actiuni pe care le poate face sistemul in momentul intrarii intr-un nivel de executie.&lt;br /&gt;
&lt;br /&gt;
Formatul fisierului este:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''id:runlevels:action:command'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
ex:	&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
1:2345:resppawn: /sbin/mingetty tty1&lt;br /&gt;
ca::ctrlaltdel: /sbin/shutdown -t3 -r now&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
unde:	&lt;br /&gt;
&lt;br /&gt;
'''id''' este un identificator unic(caractere alfanumerice)&lt;br /&gt;
&lt;br /&gt;
'''runlevels''' reprezinta lista nivelurilor de rulare(0,1,2,3,4,5,6)&lt;br /&gt;
&lt;br /&gt;
'''0''' procesele sunt terminate si se opreste sistemul &lt;br /&gt;
&lt;br /&gt;
'''1''' se intra in nivelul mono-utilizator(in acest nivel reteaua, interfata grafica si anumite sisteme de fisiere nu fie active); este folosit mai ales pentru recuperarea sistemului in cazuri de urgenta&lt;br /&gt;
&lt;br /&gt;
'''2''' se intra in nivelul multi-utilizator(doar unele procese nu sunt active - NIS NFS AT X)&lt;br /&gt;
&lt;br /&gt;
'''3''' se intra in nivelul multi-utilizator cu acces la serviciile de retea&lt;br /&gt;
&lt;br /&gt;
'''4''' se intra in nivelul personalizat - se recomanda folosirea acestui runlevel pentru cazul in care doriti o versiune proprie (si nestandard) a serviciilor care sunt oprite/pornite&lt;br /&gt;
&lt;br /&gt;
'''5''' se intra in nivelul multi-utilizator cu acces la serviciile de retea si serverul grafic X; folosit mai ales in medii Linux Desktop&lt;br /&gt;
&lt;br /&gt;
'''6''' se opresc toate procesele si se reincarca sistemul de operare&lt;br /&gt;
&lt;br /&gt;
'''action''' actiunea pe care o realizeaza programul init&lt;br /&gt;
&lt;br /&gt;
'''wait''' asteapta incheierea executiei comenzii inainte sa treaca la la alta intrare din inittab&lt;br /&gt;
&lt;br /&gt;
'''respawn''' se lanseaza o noua instanta a unui proces, daca acesta isi incheie executia&lt;br /&gt;
&lt;br /&gt;
'''powerfail''' se executa daca se primeste semnalul SIGPWR de la UPS&lt;br /&gt;
&lt;br /&gt;
'''initdefault''' nivelul de rulare in care se intra dupa terminarea actiunii boot si init (intre 0 si 6 sau literele s sau S care sunt alias-uri pentru runlevel 1); atentie! daca acest runlevel este 0 sau 6 s-ar putea sa nu reusiti sa porniti masina cu Linux!&lt;br /&gt;
&lt;br /&gt;
'''ctrlaltdel''' procesul se executa cand init primeste semnalul SIGINT-cand de la consola se apasa Ctrl+Alt+Del&lt;br /&gt;
&lt;br /&gt;
'''command''' comanda/programul ce se va executa&lt;br /&gt;
&lt;br /&gt;
====== /etc/fstab ======&lt;br /&gt;
&lt;br /&gt;
Fisierul acesta contine informatii despre care partitii doriti sa fie montate la boot, unde sa fie montate, si cu ce opriuni. Mai multe detalii in articolul [[Partiţii]], sectiunea [[Parti%C5%A3ii#Montare | Montare]]&lt;br /&gt;
&lt;br /&gt;
====== /etc/modules.conf ======&lt;br /&gt;
&lt;br /&gt;
Acesta este fisierul in care puteti activa si dezactiva modulele incarcate de kernel la boot. De acest proces se ocupa un scipt de initializare care verifica existenta acestui fisier si incarca ce se gaseste in el.&lt;br /&gt;
&lt;br /&gt;
====== /etc/rc.d ======&lt;br /&gt;
&lt;br /&gt;
Aici se gasesc toate scipturile de initializare/comanda corespunzatoare fiecarui runlevel. Ele veriaza in functie de stilul ales - System V sau BSD init style.&lt;br /&gt;
&lt;br /&gt;
'''SYS V init style'''&lt;br /&gt;
&lt;br /&gt;
Acesta este sistemul de a imparti pe diverse runlevel-uri cel mai ultilizat la ora actuala in lumea Linux. Modelul a fost gandit pentru o abstractizare cat mai buna,  insa modificarea lui nu este intuitiva de la bun inceput. De obicei, avem un &amp;lt;tt&amp;gt;/etc/init.d&amp;lt;/tt&amp;gt; in care se gasesc toate scripturile, iar apoi in '''/etc/rc0.d''' pana la '''/etc/rc6.d''' se vor gasi symlink-uri catre scripturile din '''/etc/init.d'''. Ele vor avea un '''S''' sau un '''K''' in fata, urmate de un numar semnificand ordinea in care sunt rulate si numele serviciului. (Exemplu: '''S20inetd''' este un symlink in '''/etc/rc2.d''' catre '''/etc/init.d/inetd''')&lt;br /&gt;
&lt;br /&gt;
'''BSD init style'''&lt;br /&gt;
&lt;br /&gt;
Cunoscut cu precadere datorita distributiei coordonate de Patrick Volkerding, Slackware. Astfel, vom avea in direct &amp;lt;tt&amp;gt;/etc/rc.d&amp;lt;/tt&amp;gt; toate scripturile necesare: '''rc.S''' care se ocupa cu toate functiile initializare ale sistemului, '''rc.K''' care se ocupa cu oprirea tuturor serviciilor pentru intrarea in runlevel-ul 1, '''rc.M''' care se ocupa cu initializarea tuturor functiilor corespunzatoare nivelelor multi-user, '''rc.4''' rulat pentru intrarea in runlevel-ul grafic (X), '''rc.6''' - script polimorf, are un symlink catre '''rc.0''', si se ocupa cu oprirea sau restartarea sistemului, depinzand cum a fost chemat. Apoi, mai sunt inca o suita de rc-uri (rc.httpd de exemplu) care se ocupa cu functiile diverselor servicii si evident sunt chemate de scripturile principale.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===== Setarea conexiunii la internet =====&lt;br /&gt;
&lt;br /&gt;
In cele ce urmeaza, vom da cateva indicatii referitoare la cum sa va activati/setati conexiunea la internet.&lt;br /&gt;
&lt;br /&gt;
====== Incarcarea modulului specific ======&lt;br /&gt;
&lt;br /&gt;
Dupa cum am spus si in alte sectiuni, corespondentele driverelor de pe Windows sunt modulele. Asadar, noi trebuie sa identificam ce placa de retea (sau alt dispozitiv specific) avem si sa incarcam modulul necesar pentru a face dispozitivul functional.&lt;br /&gt;
&lt;br /&gt;
Identificati in primul rand ce dispozitiv aveti si apoi cautati a vedeti ce modul se potriveste, urmand sa il incarcati cu comanda: &amp;lt;code&amp;gt;&lt;br /&gt;
modprobe [modul]&lt;br /&gt;
&amp;lt;/code&amp;gt; unde '''[modul]''' evident se va inlocui cu numele modulului specific.&lt;br /&gt;
&lt;br /&gt;
Alternativ, se poate utiliza si comanda '''insmod''' in loc de '''modprobe'''. Ca de obicei, dati '''man insmod''', respectiv '''man modprobe''', pentru detalii.&lt;br /&gt;
&lt;br /&gt;
De exemplu, eu am descoperit cu comanda '''lspci''' ca am o placa de retea cu chipset Realtek 8139, motiv pentru care am cautat pe [http://www.tldp.org/HOWTO/Ethernet-HOWTO.html Ethernet Howto] de la [http://tldp.org The Linux Documentation Project] si am descoperit ca ceea ce imi trebuia era modulul numit '''8139too'''. &lt;br /&gt;
&lt;br /&gt;
Evident, chipset-ul placii de retea in mod normal ar fi trebuit sa-l stiu de dinainte de la achizitie, pentru a fi sigur ca este suportat de sistemul meu de operare. Daca '''lspci''' nu va lamureste, atunci uitati-va pe documentul de la achizitie, cutia in care a venit placa respectiva, sau cel mai bine, direct pe placa.&lt;br /&gt;
&lt;br /&gt;
====== Setari: IP, netmask, broadcast, gateway, DNS ======&lt;br /&gt;
&lt;br /&gt;
Ca '''root''', dati comenzile:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
ifconfig eth0 &amp;lt;IP&amp;gt; netmask &amp;lt;netmask&amp;gt; broadcast &amp;lt;broadcast&amp;gt; up&lt;br /&gt;
&lt;br /&gt;
route add default gateway &amp;lt;IP-ul gateway-ului/router-ului&amp;gt;&lt;br /&gt;
echo &amp;quot;nameserver &amp;lt;IP server dns1&amp;gt;&amp;quot; &amp;gt; /etc/resolv.conf&lt;br /&gt;
echo &amp;quot;nameserver &amp;lt;IP server dns2&amp;gt;&amp;quot; &amp;gt;&amp;gt; /etc/resolv.conf&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Peste tot, perechea de semne &amp;quot;&amp;lt;&amp;quot; si &amp;quot;&amp;gt;&amp;quot; si tot ce scrie intre ele sa va inlocui cu datele necesare, adica adresa IP, netmask-ul, adresa broadcast (optionala deoarece va fi calculata automat de cele mai multe ori), adresa gateway-ului si bineinteles DNS-urile.&lt;br /&gt;
&lt;br /&gt;
Mai multe despre semnificatia acestor denumiri si multe alte detalii interesante gasiti [http://tldp.org/HOWTO/Networking-Overview-HOWTO.html aici].&lt;br /&gt;
&lt;br /&gt;
====== Un firewall micut care sa ne protejeze ======&lt;br /&gt;
&lt;br /&gt;
Iata un exemplu de firewall relativ intuitiv, cu cele mai de baza optiuni:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
case &amp;quot;$1&amp;quot; in&lt;br /&gt;
&lt;br /&gt;
    &amp;quot;start&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;Begin firewall script.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
echo 1 &amp;gt; /proc/sys/net/ipv4/conf/all/rp_filter #Impotriva ip spoofing&lt;br /&gt;
echo 1 &amp;gt; /proc/sys/net/ipv4/tcp_syncookies  #Impotriva atacurilor DoS&lt;br /&gt;
echo 0 &amp;gt; /proc/sys/net/ipv4/ip_forward&lt;br /&gt;
echo 0 &amp;gt; /proc/sys/net/ipv4/conf/all/proxy_arp&lt;br /&gt;
echo 1 &amp;gt; /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts&lt;br /&gt;
echo 1 &amp;gt; /proc/sys/net/ipv4/icmp_echo_ignore_all #Nu raspundem la ping&lt;br /&gt;
&lt;br /&gt;
echo 0 &amp;gt; /proc/sys/net/ipv4/conf/all/send_redirects&lt;br /&gt;
echo 0 &amp;gt; /proc/sys/net/ipv4/conf/all/accept_redirects&lt;br /&gt;
echo 0 &amp;gt; /proc/sys/net/ipv4/conf/all/accept_source_route&lt;br /&gt;
&lt;br /&gt;
echo 0 &amp;gt; /proc/sys/net/ipv4/tcp_timestamps&lt;br /&gt;
echo 0 &amp;gt; /proc/sys/net/ipv4/tcp_sack&lt;br /&gt;
echo 0 &amp;gt; /proc/sys/net/ipv4/tcp_window_scaling&lt;br /&gt;
echo 60 &amp;gt; /proc/sys/net/ipv4/tcp_fin_timeout&lt;br /&gt;
echo 1800 &amp;gt; /proc/sys/net/ipv4/tcp_keepalive_time&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
##########&lt;br /&gt;
# POLICY #&lt;br /&gt;
##########&lt;br /&gt;
&lt;br /&gt;
iptables -t filter -P INPUT DROP  # Nu intra nimic &amp;quot;by default&amp;quot; &lt;br /&gt;
iptables -t filter -P OUTPUT ACCEPT&lt;br /&gt;
iptables -t filter -P FORWARD DROP&lt;br /&gt;
&lt;br /&gt;
##########&lt;br /&gt;
# ACCEPT #&lt;br /&gt;
##########&lt;br /&gt;
&lt;br /&gt;
# Acceptam conexiunile initiate anterior de noi.&lt;br /&gt;
&lt;br /&gt;
iptables -A INPUT -i eth0 -m state --state ESTABLISHED,RELATED \&lt;br /&gt;
 -j ACCEPT&lt;br /&gt;
iptables -A INPUT -s 127.0.0.1 -d 127.0.0.1 -i lo -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
#################################################################&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;End firewall script.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
;;&lt;br /&gt;
&lt;br /&gt;
    &amp;quot;stop&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
    echo &amp;quot;Stopping firewall...&amp;quot;&lt;br /&gt;
&lt;br /&gt;
iptables -t filter -P INPUT DROP&lt;br /&gt;
iptables -t filter -P OUTPUT DROP&lt;br /&gt;
iptables -t filter -P FORWARD DROP&lt;br /&gt;
&lt;br /&gt;
iptables -t filter -F&lt;br /&gt;
&lt;br /&gt;
;;&lt;br /&gt;
&lt;br /&gt;
    &amp;quot;restart&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
    $0 stop&lt;br /&gt;
    sleep 2&lt;br /&gt;
    $0 start&lt;br /&gt;
&lt;br /&gt;
;;&lt;br /&gt;
&lt;br /&gt;
    &amp;quot;show&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
iptables -t filter -nvxL&lt;br /&gt;
&lt;br /&gt;
;;&lt;br /&gt;
&lt;br /&gt;
    *)&lt;br /&gt;
&lt;br /&gt;
    echo &amp;quot;Usage: firewall&lt;br /&gt;
         {start|stop|restart|show}&amp;quot; &amp;gt;&amp;amp;2&lt;br /&gt;
    exit 1&lt;br /&gt;
&lt;br /&gt;
;;&lt;br /&gt;
&lt;br /&gt;
esac&lt;br /&gt;
&lt;br /&gt;
exit 0&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Module (drivere) ====&lt;br /&gt;
&lt;br /&gt;
Mai tineti minte discutia din sectiunea [[Ce_este_GNU/Linux%3F_/_Cum_invat_Linux%3F#Ce_sunt_modulele.3F| Ce sunt modulele]]? &lt;br /&gt;
Pai acum este momentul sa punem in aplicare ce am discutat acolo, deoarece trebuie sa incarcam toate modulele necesare astfel incat dispozitivele din calculatorul nostru sa functioneze asa cum dorim. &lt;br /&gt;
&lt;br /&gt;
===== Placa grafica =====&lt;br /&gt;
&lt;br /&gt;
In cele ce urmeaza vom discuta despre placa grafica si modulele specifice care trebuie instalate astfel incat sa beneficiem de capacitatea ei la maxim.&lt;br /&gt;
&lt;br /&gt;
====== ATI ======&lt;br /&gt;
&lt;br /&gt;
Vedeti articolul [[ATi video (2.6)]]&lt;br /&gt;
&lt;br /&gt;
====== NVidia ======&lt;br /&gt;
&lt;br /&gt;
Intrati pe pagina oficiala NVIDIA, sectiunea Drivers aflata la adresa http://www.nvidia.com/content/drivers/drivers.asp, sau, cel mai bine pentru scopul nostru la adresa http://www.nvidia.com/object/unix.html.&lt;br /&gt;
&lt;br /&gt;
De aici intrati pe pagina care se potriveste cel mai bine cu arhitectura voastra, in cazul meu, Graphics Drivers - Linux IA32 - latest version. La ora actuala cea mai noua versiune este [http://www.nvidia.com/object/linux_display_ia32_1.0-8756.html 1.0-8756]. &lt;br /&gt;
&lt;br /&gt;
Alegerea mea se explica deoarece am un procesor pe 32 de biti si placa grafica NVIDIA Geforce 2 MX400 cu 64MB. Adaptati pentru hardware-ul vostru!&lt;br /&gt;
&lt;br /&gt;
Pe pagina respectiva veti observa niste link-uri care sunt foarte utile, nu le evitati sub nici o forma. Dintre ele, va recomand cu precadere fisierul [http://download.nvidia.com/XFree86/Linux-x86/1.0-8756/README/index.html README].&lt;br /&gt;
&lt;br /&gt;
Apoi, evident va luati de pe site ultima varianta a driver-ului, in cazul de fata,  [http://download.nvidia.com/XFree86/Linux-x86/1.0-8756/NVIDIA-Linux-x86-1.0-8756-pkg1.run NVIDIA-Linux-x86-1.0-8756-pkg1.run].&lt;br /&gt;
&lt;br /&gt;
Inainte de a continua, verificati daca aveti instalate sursele kernelului, si daca in '''/usr/src/linux/include/linux''' aveti fisierul '''version.h'''. In cazul in care nu il aveti inseamna ca trebuie sa il creati, recompiland kernelul. Daca nu aveti sursele kernelului, instalati-le.&lt;br /&gt;
&lt;br /&gt;
Pentru a crea fisierul version.h, in kernel-urile mai noi de 2.6 trebuie sa compilati macar o data sursele. Pentru a face acest lucru, consultati sectiunea din acest articol referitoare la [http://wiki.linux360.ro/wiki/Ce_este_GNU/Linux%3F_/_Cum_invat_Linux%3F#Recompilarea_kernelului recompilarea kernelului].&lt;br /&gt;
&lt;br /&gt;
De asemenea, asigurati-va ca nu aveti modulele referitoare la framebuffer-ul RIVA (rivafb) sau nvidia compilate deoarece vor intra in conflict cu driverul de la NVIDIA.&lt;br /&gt;
&lt;br /&gt;
Ca sa scapam mai repede de aceste doua mici probleme, exista metode... nu tocmai ortodoxe. Incepeti o compilare a kernelului si o opriti cu CTRL+C dupa ce vedeti ca a compilat version.h, il salvati in alta parte decat in '''/usr/src/linux/include/linux''', dati un make mrproper si apoi copiati la loc version.h de unde l-am luat.&lt;br /&gt;
&lt;br /&gt;
Iar pentru cele doua module care par sa intre in conflict, pur si simplu le mutati de acolo in alta parte, fara a mai necesita nici o recompilare. Din moment ce installer-ul de la NVIDIA nu le gaseste, nu va plange ca intra in conflict cu ele.&lt;br /&gt;
&lt;br /&gt;
Pasul urmator este sa opriti serverul grafic, '''X'''. Metoda fina ar fi sa incercati urmatoarele: '''Logoff''' din meniul de start sau '''xdm stop''', '''gdm stop''', respectiv '''kdm stop''' din consola. Daca nu va merg aceste solutii atunci va trebui sa il ucideti brutal. Dati '''ps uax''' sa-i aflati PID-ul, iar apoi, '''kill [PID]''', unde in loc de [PID], puneti numarul efectiv aflat cu ''ps''. Daca este si mai incapatanat, incercati cu '''kill -9 [PID]''', metoda cea mai agresiva de a-l opri de altfel. Dar daca stau bine sa ma gandesc si ati avut rabdarea sa cititi pana aici, cred ca cea mai buna alternativa este sa intrati in runlevel-ul 1, dand direct comanda '''init 1''' intr-o consola. Trebuie sa aveti drepturi de administrator pentru a face acest lucru, bineinteles.&lt;br /&gt;
&lt;br /&gt;
Daca ati oprit serverul grafic inseamna ca sunteti in fata unei console in acest moment. Mergeti in directorul in care ati salvat fisierul de la NVIDIA si dati comanda &amp;lt;code&amp;gt;sh NVIDIA-Linux-x86-1.0-8756-pkg1.run&amp;lt;/code&amp;gt; daca acesta este fisierul pe care l-ati luat. Daca ati luat alt fisier mai nou, evident, adaptati. Va vor mai fi puse cateva intrebari cu raspunsuri intuitive de catre installer. Daca raspundeti bine in curand el va va spune ca isi compileaza modulul.&lt;br /&gt;
&lt;br /&gt;
In final tot ce aveti de facut este sa modificati fisierul '''/etc/X11/xorg.conf''' corespunzator astfel incat sa foloseasca modulul nou compilat de la NVIDIA, in loc de cel standard. Inlocuiti linia &amp;lt;code&amp;gt;     Driver &amp;quot;nv&amp;quot;&lt;br /&gt;
(sau Driver &amp;quot;vesa&amp;quot;)&lt;br /&gt;
(sau Driver &amp;quot;fbdev&amp;quot;)&lt;br /&gt;
&amp;lt;/code&amp;gt; cu &amp;lt;code&amp;gt; Driver &amp;quot;nvidia&amp;quot; &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
De asemenea, stergeti urmatoarele linii:&amp;lt;code&amp;gt;&lt;br /&gt;
Load &amp;quot;dri&amp;quot;&lt;br /&gt;
Load &amp;quot;GLCore&amp;quot;&lt;br /&gt;
&amp;lt;/code&amp;gt; si adaugati-o pe urmatoarea, in cazul in care nu exista deja:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
Load &amp;quot;glx&amp;quot;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Acestea fiind zise, acum ar trebui doar sa reporniti serverul grafic '''X''' si va veti avea astfel parte de accelerare grafica maxima.&lt;br /&gt;
&lt;br /&gt;
Atentie, acesta este un ghid foarte intuitiv si cu toleranta destul de mica pentru alte probleme ce pot aparea. Daca aveti nedumeriri sau cautati optiuni, respectiv metode de a rezolva anumite probleme mai avansate, nu ezitati sa consultati fisierul [http://download.nvidia.com/XFree86/Linux-x86/1.0-8756/README/index.html README].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''[FIXME]''' Acesta este un o alta sectiune pe care o voi mai peria, completa si transforma in articol separat, urmand sa pun in locul ei aici un link catre noua locatie.&lt;br /&gt;
&lt;br /&gt;
====== VESA ======&lt;br /&gt;
&lt;br /&gt;
Daca nu aveti placi grafice de la ATI sau de la NVIDIA si nu ati gasit nici un driver de la producatorul original al chipsetului grafic, atunci nu disperati, mai exista sanse. VESA nu ofera capacitati de accelerare 3D si nici putere de procesare foarte mare, dar asigura o imagine de calitate prin functionalitatea ei de baza pentru aproape orice chipset grafic.&lt;br /&gt;
&lt;br /&gt;
'''[FIXME]''' De continuat.&lt;br /&gt;
&lt;br /&gt;
===== Placa audio =====&lt;br /&gt;
&lt;br /&gt;
'''[FIXME]''' De vorbit despre ALSA si OSS&lt;br /&gt;
&lt;br /&gt;
==== Configurarea serverului grafic X ====&lt;br /&gt;
&lt;br /&gt;
'''[FIXME]''' De dezvoltat&lt;br /&gt;
&lt;br /&gt;
Editati fisierul '''/etc/X11/xorg.conf''' &lt;br /&gt;
&lt;br /&gt;
===== Manageri desktop =====&lt;br /&gt;
&lt;br /&gt;
Un manager desktop are rolul de a oferi utilizatorului o interfata grafica pentru a interactiona cu calculatorul.&lt;br /&gt;
&lt;br /&gt;
Spre deosebire de Windows care are un singur manager desktop, cel implicit, in lumea Unix puteti alege din foarte multe managere desktop, dintre care cele mai importante sunt [[Ce_este_GNU/Linux%3F_/_Cum_invat_Linux%3F#KDE|KDE]] si [[Ce_este_GNU/Linux%3F_/_Cum_invat_Linux%3F#Gnome|Gnome]] (nu neaparat in aceasta ordine). A avea de unde alege intre mai multi manageri desktop insemna libertate si diversitate.&lt;br /&gt;
&lt;br /&gt;
Puteti sa va instalati oricati manageri desktop pe distributia dumneavoastra, putand alege pe cel cu care vreti sa porniti, de obicei, la ecranul de autentificare.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====== KDE ======&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[http://www.kde.org/ '''K''' '''D'''esktop '''E'''nvironment] este un manager desktop liber, scris in principal in [http://www.trolltech.com/products/qt Qt], fondat in 1996 de [http://www.kde.nl/people/ettrich.html Matthias Ettrich], student pe atunci.&lt;br /&gt;
&lt;br /&gt;
Functioneaza pe multe Unix-uri: Linux, BSD, AIX, Unixware, OpenServer, Solaris. A fost portat si pe Mac OS X si functioneaza si pe Windows cu [http://www.cygwin.com/ Cygwin].&lt;br /&gt;
&lt;br /&gt;
Pana in versiunile 2.x, mascota KDE a fost [http://www.kde.org/screenshots/images/large/kde2final_1.jpg Kandalf]. In versiunile curente (3.x), mascota KDE este [http://www.kde.org/stuff/clipart/konqi-klogo-official-400x500.png Konqi], insotit uneori de prietena lui, [http://www.kde.org/stuff/clipart/katie-221x223.jpg Katie].&lt;br /&gt;
&lt;br /&gt;
Proiectul [http://wiki.linux360.ro/wiki/Ce_este_GNU/Linux%3F_/_Cum_invat_Linux%3F#Gnome Gnome] a pornit ca o alternativa libera la KDE, deoarece pe atunci Qt-ul nu era liber. In 1998 Qt-ul a fost licentiat sub licenta [http://doc.trolltech.com/3.0/license.html QPL], ceva mai &amp;quot;libera&amp;quot;, dar necompatibila cu [http://www.gnu.org/licenses/gpl.html GPL-ul]. Fundatia [http://www.kde.org/whatiskde/kdefreeqtfoundation.php Free Qt] a fost creata tot in 1998 si garanteaza ca daca in viitor Qt-ul nu va mai fi liber, Trolltech nu va mai exista sau nu va mai scoate nici o versiune libera de Qt timp de 12 luni, Fundatia va putea licentia versiunea curenta de Qt sub licenta de tip [http://www.opensource.org/licenses/bsd-license.php BSD]. In 2000, versiunea de Unix a Qt-ului a fost licentiata GPL de catre Trolltech, iar incepand cu versiunea 4.0, Qt-ul are versiune libera si pentru Mac si Windows. De asemenea, acordul dintre Trolltech si Fundatia Free Qt a fost reinnoit in 2004.&lt;br /&gt;
&lt;br /&gt;
KDE-ul este dezvoltat de voluntari (ca de altfel majoritatea proiectelor Open Source), dar companii ca Novell, Trolltech sau Mandriva platesc angajati pentru a contribui la proiect.&lt;br /&gt;
&lt;br /&gt;
Puteti avea KDE pe aproape orice distributie. Pe unele dintre ele KDE-ul este chiar desktop-ul standard: Mandriva, Knoppix, Kubuntu, etc...&lt;br /&gt;
&lt;br /&gt;
'''Componente importante:'''&lt;br /&gt;
&lt;br /&gt;
* aRts - server de sunet&lt;br /&gt;
* DCOP - interfata de comunicare intre procese&lt;br /&gt;
* KHTML - engine HTML&lt;br /&gt;
* Konqueror - manager de fisiere, web browser&lt;br /&gt;
* KWin - managerul de ferestre&lt;br /&gt;
* KOffice - suita office&lt;br /&gt;
* kcontrol - panoul de configurare&lt;br /&gt;
* KDevelop - mediu integrat de dezvoltare&lt;br /&gt;
* Amarok - player audio&lt;br /&gt;
* K3b - aplicatie de scris CD-uri si DVD-uri&lt;br /&gt;
* Kate - editor text&lt;br /&gt;
* KMail - client mail&lt;br /&gt;
* Konsole - emulator de consola&lt;br /&gt;
* Kopete - client de mesagerie instanta, multi-protocol&lt;br /&gt;
* Ark, KArchiver - manageri de arhive&lt;br /&gt;
&lt;br /&gt;
Se observa o anumita conventie de notare: in unele denumiri, litera &amp;quot;C&amp;quot; (de la &amp;quot;cool&amp;quot; ?) a fost inlocuita cu &amp;quot;K&amp;quot; (Konsole), in altele litera &amp;quot;K&amp;quot; a fost adaugata fortat (KOffice), iar in altele &amp;quot;K&amp;quot; pare a fi natural (Kate, Amarok; initial Amarok se scria amaroK). Exista si exceptii. De exemplu gwenview (un program de vizualizat imagini).&lt;br /&gt;
&lt;br /&gt;
====== Gnome ======&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[http://www.gnome.org/ Gnome] este un manager desktop liber, scris in principal in [http://www.gtk.org/ GTK+], fondat in 1997 de [http://tirania.org/blog/ Miguel de Icaza] si [http://primates.ximian.com/~federico/ Federico Mena-Quintero]. Functioneaza pe majoritatea tipurilor de Unix fiind adoptat si de Sun Microsystems, inlocuind CDE in desktop-ul Java creat de cei de la Sun. Multe aplicatii Gnome ruleaza pe Windows cu [http://www.cygwin.com/ Cygwin].&lt;br /&gt;
&lt;br /&gt;
Proiectul a fost conceput ca o alternativa la [http://wiki.linux360.ro/wiki/Ce_este_GNU/Linux%3F_/_Cum_invat_Linux%3F#KDE KDE], in conditiile in care Qt-ul nu era inca liber. Momentan GTK+ este licentiat [http://www.gnu.org/copyleft/lesser.html LGPL].&lt;br /&gt;
&lt;br /&gt;
Initial era scris &amp;quot;GNOME&amp;quot; si insemna '''G'''NU '''N'''etwork '''O'''bject '''M'''odel '''E'''nvironment (acronim gandit de Elliot Lee). Acronimul este considerat depasit si probabil se va renunta la el definitiv, &amp;quot;GNOME&amp;quot; devenind astfel, &amp;quot;Gnome&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Proiectul e dezvoltat de voluntari si coordonat de [http://foundation.gnome.org/ Fundatia Gnome]. Dezvoltatorii, utilizatorii, fanii si curiosii se intalnesc anual undeva in Europa la [http://guadec.org/ GUADEC].&lt;br /&gt;
&lt;br /&gt;
Il puteti avea pe aproape orice distributie Linux, dar exista cateva pe care este desktop implicit: Fedora Core, Ubuntu, etc.&lt;br /&gt;
&lt;br /&gt;
'''Componente importante:'''&lt;br /&gt;
&lt;br /&gt;
* GConf — pentru stocarea setarilor&lt;br /&gt;
* GNOME VFS — sistem de fisiere virtual&lt;br /&gt;
* GNOME Keyring — pentru stocare criptata&lt;br /&gt;
* LibXML — librarie XML&lt;br /&gt;
* Ekiga — soft pentru comunicare VOIP&lt;br /&gt;
* Epiphany — web browser&lt;br /&gt;
* Evince — pentru vizualizare fisiere PDF si PostScript&lt;br /&gt;
* Eye of GNOME — pentru vizualizare imagini&lt;br /&gt;
* File Roller — manager de arhive&lt;br /&gt;
* GNOME Terminal — emulator de consola&lt;br /&gt;
* Evolution — client de mail, agenda&lt;br /&gt;
* gedit — editor text&lt;br /&gt;
* Metacity — manager de ferestre&lt;br /&gt;
* Nautilus — manager de fisiere&lt;br /&gt;
* Totem — player multimedia&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====== Xfce ======&lt;br /&gt;
&lt;br /&gt;
[http://www.xfce.org/ Xfce] este un manager desktop liber pentru sistemele de operare de tip Unix (Linux, Solaris, BSD), bazat pe [http://www.gtk.org/ GTK+], ca si [http://wiki.linux360.ro/wiki/Ce_este_GNU/Linux%3F_/_Cum_invat_Linux%3F#Gnome Gnome].&lt;br /&gt;
&lt;br /&gt;
Se remarca prin consum redus de resurse fiind numit in distributia [http://www.zenwalk.org/ ZenWalk], &amp;quot;Cholesterol Free Desktop Environment&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
Desi nu este nou in lumea Unix, el este mai putin cunoscut, poate din cauza ca a si fost rescris de mai multe ori de la 0. In ultimul timp popularitatea lui a crescut dovada ca exista din ce in ce mai multe distributii il au ca desktop implicit (Xubuntu, ZenWalk). De asemenea, in Mandriva 2007, rpm-urile cu Xfce vor fi incluse in mediul ''main'' (deci in iso-urile ce pot fi descarcate de pe mirror-urile oficiale), fiind mutate din mediul ''contrib''.&lt;br /&gt;
&lt;br /&gt;
Initial era scris '''XFce''' si insemna '''XF'''orms '''C'''ommon '''E'''nvironment. Cand XFce a fost rescris in GTK+, scrierea a devenit '''Xfce''', acronimul fiind desfiintat.&lt;br /&gt;
&lt;br /&gt;
'''Componente importante:'''&lt;br /&gt;
&lt;br /&gt;
* Thunar - manager de fisiere&lt;br /&gt;
* Terminal - emulator de consola&lt;br /&gt;
* xfwm4 - manager de ferestre&lt;br /&gt;
* orage - calendar&lt;br /&gt;
* xarchiver - manager de arhive&lt;br /&gt;
&lt;br /&gt;
====== Transparente si eye-candy ======&lt;br /&gt;
&lt;br /&gt;
=== Cuvant de incheiere ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ei bine, in linii mari cam astea au fost intrebarile si raspunsurile care mi-au venit mie in minte. Sper ca am mai facut un pic de lumina in universul Linux pestru cei care abia acum s-au intalnit cu el sau pentru cei care sunt inca pe la inceputuri.&lt;br /&gt;
&lt;br /&gt;
Acesta nu este un ghid complet si nici nu incearca sa trateze foarte in detaliu subiectele in discutie, subiectele mai voluminoase meritand locul lor separat. Motiv pentru care astept sugestii si contributii astfel incat sa-l corectam si sa il imbogatim impreuna acolo unde am uitat ceva important, poate o alta intrebare, poate in alt raspuns, si impreuna sa-l ajutam sa evolueze.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== DISCLAIMER ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Linux este marca înregistrata a lui Linus Torvalds. Microsoft Windows este marca înregistrata a Microsoft Corporation. Toate celelalte simboluri externe, referiri la alte produse software, respectiv marcile înregistrate din aceasta pagina, aparţin autorilor lor de drept.'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Bibliografie ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Partea cu make si Makefile e extrasa din cursul de Sisteme de Operare al domnilor profesori Boian Florian si Bufnea Darius, Universitatea Babes-Bolyai Cluj-Napoca&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Nota autorilor: Documentul este inca in lucru!'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:HowTo]]&lt;br /&gt;
[[Category:FAQ]]&lt;/div&gt;</summary>
		<author><name>Csdexter</name></author>	</entry>

	<entry>
		<id>http://wiki.linux360.ro/index.php?title=Ce_este_GNU/Linux%3F_/_Cum_invat_Linux%3F&amp;diff=3117</id>
		<title>Ce este GNU/Linux? / Cum invat Linux?</title>
		<link rel="alternate" type="text/html" href="http://wiki.linux360.ro/index.php?title=Ce_este_GNU/Linux%3F_/_Cum_invat_Linux%3F&amp;diff=3117"/>
				<updated>2006-11-16T09:52:11Z</updated>
		
		<summary type="html">&lt;p&gt;Csdexter: /* Ce sunt dependintele si cum utilizez un manager de pachete? */ Temporarily fixed formatting break caused by misparse of &amp;lt;nowiki /&amp;gt; caused, in turn, by unauthorised MediaWiki upgrade :-(&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Ce este GNU/Linux? Cum invat Linux? De unde incep? Cum fac sa...? Ce inseamna...? Cum ma pot ajuta singur in a invata Linux? &lt;br /&gt;
&lt;br /&gt;
Acestea sunt doar cateva din intrebarile pe care un utilizator nou de Linux si le pune in momentul in care incearca sa afle ceva nou, sa invete sa utilizeze si poate chiar sa administreze un astfel de sistem.&lt;br /&gt;
&lt;br /&gt;
Scopul acestui articol este sa raspunda la aceste intrebari, in special la cele care contin notiuni de baza si in general se va urmari sa cuprinda informatiile necesare pentru a intelege despre ce este vorba si cum interactionam cu un sistem GNU/Linux. Subiectele mai avansate vor fi lasate pentru discutie in cadrul forumului sau in cadrul altor articole deoarece depasesc scopul acestuia.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Linux si Windows'''&lt;br /&gt;
&lt;br /&gt;
Vom presupune ca un utilizator are o oarecare experienta cu un sistem de operare, fiind utilizat, pe platformele desktop, cu precadere Microsoft Windows. De aceea vom incerca sa facem pe alocuri o mica comparatie pentru a vedea care sunt corespondentele anumitor notiuni considerate cunoscute deja.&lt;br /&gt;
&lt;br /&gt;
Pentru a vedea corespondentele unor programe de pe Windows pe Linux (sau invers) poate fi consultat articolul [[Echivalentele_Linux_ale_programelor_Windows | Echivalentele Linux ale programelor Windows]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== O digresiune naiva despre contextul in care a aparut Linux ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Nota: Cei care cunosc deja aceste notiuni, sau care doresc sa afle mai multe despre partea practica a notiunilor introductive pot sari peste acesta sectiune.''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Ce sunt sistemele libere? ====&lt;br /&gt;
&lt;br /&gt;
Un sistem de operare liber este alcatuit din programe ale caror sursa este disponibila. Oricine o poate vedea si modifica daca simte ca are ceva de adaugat sau de reparat, conditia fiind sa le spuna si celorlalti despre modificarile sale astfel incat sa existe o munca de colaborare in dezvoltarea unui astfel de sistem. De altfel, fara colaborare nu s-ar fi ajuns aici.&lt;br /&gt;
&lt;br /&gt;
Licenta sub care se desfasoara acesta activitate pe Linux este, in general, [http://www.gnu.org/copyleft/gpl.html GPL] alcatuita de Richard Stallman, coordonatorul proiectului GNU si al Free Software Foundation. Mai multe despre GPL, filosofia care sta in spatele acestor programe si binecunoscutul slogan '''Free as in Freedom''' aflati pe http://www.fsf.org si pe http://www.gnu.org.&lt;br /&gt;
&lt;br /&gt;
La un moment dat in istoria tehnologiei informatiei s-a pus problema ca produsele software ar trebui sa se supuna acelorasi legi comerciale ca oricare alt produs, motiv pentru care a aparut si necesitatea de a ascunde ceea ce sta in spatele muncii sale, pentru a nu putea fi reprodus sau preluat/modificat de altcineva. Ca un raspuns la aceasta miscare a aparut GNU, o echipa de programatori care au creat din placere o suita de programe care sa le inlocuiasca pe cele care incepusera sau devenisera deja '''proprietare''' si asupra caroara ei nu mai putea lucra independent sa le imbunatateasca. Insa acesta suita de programe avea nevoie de un ''coordonator'', de un supra-program care sa impuna niste reguli de functionare, sa dea voie anumitor operatii la un moment dat, sa restrictioneze altele, in fine, avea nevoie de un [http://www.kernel.org/ kernel]. Acest kernel a fost creat de Linus Torvalds si a fost numit '''Linux''', motiv pentru care toate sistemele Linux actuale poarte acesta denumire.&lt;br /&gt;
&lt;br /&gt;
Insa corect este sa spunem sistem '''GNU/Linux''' deoarece in jurul acestor doua proiecte s-a dezvoltat ceea ce numim noi azi un sistem Linux.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Ce este o distributie Linux? ====&lt;br /&gt;
&lt;br /&gt;
O colectie de programe cu sursa deschisa adunate sub aceeasi capota, structurate astfel incat sa indeplineasca un anume scop (sau chiar mai multe simultan), cum ar fi: server web, server de mail, desktop computer, workstation etc. Desigur, o distributie contine obligatoriu utilitarele de baza de la GNU si kernelul Linux pentru a functiona corect. Structurarea programelor poate include chiar modificarea si gruparea lor in functie de scopurile pe care le indeplinesc, astfel creandu-se '''pachetele'''.&lt;br /&gt;
&lt;br /&gt;
'''Dintre calitatile unei distributii notam:'''&lt;br /&gt;
* Are un installer pentru instalare facila.&lt;br /&gt;
* Are utilitarele de baza GNU si kernelul Linux.&lt;br /&gt;
* Are o structura de directoare specifica oricarui sistem UNIX.&lt;br /&gt;
* Are suport pentru mai multe tipuri de sisteme de fisiere.&lt;br /&gt;
* Are un manager de pachete, astfel incat sa se poata adauga, sterge, actualiza (upgrade) si mentine o lista a pachetelor instalate.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===== Care este cea mai buna distributie? =====&lt;br /&gt;
&lt;br /&gt;
Nu exista o ''cea mai buna distributie''. Daca doriti sa invatati Linux exista unele cu interfete ceva mai intuitive, insa diferentele sunt doar de gust. Ceea ce va trebuie cel mai mult este rabdare si perseverenta, deoarece nici o distributie nu este inabordabila. Incercati si vedeti singuri care vi se potriveste.&lt;br /&gt;
&lt;br /&gt;
; [http://www.centos.org/ CentOS] (versiune curenta&amp;lt;nowiki&amp;gt;:&amp;lt;/nowiki&amp;gt; 4.4)&lt;br /&gt;
: Cea mai fidela clona de RedHat Enterprise, disponibila gratuit.&lt;br /&gt;
&lt;br /&gt;
; [http://www.debian.org/ Debian] (versiune curenta&amp;lt;nowiki&amp;gt;:&amp;lt;/nowiki&amp;gt; 3.1r3 &amp;quot;sarge&amp;quot;)&lt;br /&gt;
: Una dintre cele mai vechi si complete distributii, cu o gama impresionanta (Aprilie 2006: peste 15940) de pachete in arsenal.&lt;br /&gt;
&lt;br /&gt;
; [http://fedoraproject.org/wiki/ Fedora Core] (versiune curenta&amp;lt;nowiki&amp;gt;:&amp;lt;/nowiki&amp;gt; 5)&lt;br /&gt;
: Cunoscuta ca fiind initiativa RedHat pentru a oferi o varianta gratuita a produsului sau Enterprise.&lt;br /&gt;
&lt;br /&gt;
; [http://www.gentoo.org/ Gentoo] (versiune curenta&amp;lt;nowiki&amp;gt;:&amp;lt;/nowiki&amp;gt; 2006.0)&lt;br /&gt;
: Un proiect impresionant, avand in vedere ca pune la dispozitia utilizatorului un mediu de lucru prin care sa-si compileze intreaga distributie din surse, cu optiunile alese de el.&lt;br /&gt;
&lt;br /&gt;
; [http://www.mandriva.com/ Mandriva] (versiune curenta&amp;lt;nowiki&amp;gt;:&amp;lt;/nowiki&amp;gt; 2007)&lt;br /&gt;
: Distributie usor de utilizat, cunoscuta ca '''Mandrake''' pana de curand, ofera si varianta Enterprise.&lt;br /&gt;
&lt;br /&gt;
; [http://www.slackware.org/ Slackware] (versiune curenta&amp;lt;nowiki&amp;gt;:&amp;lt;/nowiki&amp;gt; 11)&lt;br /&gt;
: Cunoscuta in mod special pentru simplitate si stabilitate (conform principiului [http://en.wikipedia.org/wiki/KISS_Principle KISS]). Cea mai veche distributie inca mentinuta.&lt;br /&gt;
&lt;br /&gt;
; [http://opensuse.org/ openSUSE] (versiune curenta&amp;lt;nowiki&amp;gt;:&amp;lt;/nowiki&amp;gt; 10.1)&lt;br /&gt;
: Varianta gratuita a distributiei SUSE; ambele sunt sustinute de Novell&lt;br /&gt;
&lt;br /&gt;
; Familia [http://www.ubuntu.com/ Ubuntu], [http://www.kubuntu.org/ Kubuntu], [http://www.edubuntu.org/ edubuntu], [https://wiki.ubuntu.com/Xubuntu Xubuntu] (versiune curenta&amp;lt;nowiki&amp;gt;:&amp;lt;/nowiki&amp;gt; 6.06.1)&lt;br /&gt;
: Distributii usor de utilizat (bazate pe '''Debian'''), relativ recent aparute, cu o toleranta foarte mare pentru incepatori.&lt;br /&gt;
&lt;br /&gt;
; [http://www.knoppix.org/ KNOPPIX] (versiune curenta&amp;lt;nowiki&amp;gt;:&amp;lt;/nowiki&amp;gt; 5.0.1)&lt;br /&gt;
: Cea mai populara distributie Live-CD (boot-abila). Ruland direct de pe CD, si avand foarte multe programe, este recomandata atat incepatorilor (pot lua contact cu Linux-ul fara a-l instala) cat si utilizatorilor avansati (care au nevoie la un moment dat sa recupereze date de pe un hard-disk ce nu mai boot-eaza, de exemplu).&lt;br /&gt;
&lt;br /&gt;
===== Ce este o distributie boot-abila? =====&lt;br /&gt;
&lt;br /&gt;
Una care poate fi pornita si rulata direct de pe CD (DVD), fara a instala nimic pe hard-disk, programele si (parte din) sistemul de fisiere incarcandu-se in RAM. &lt;br /&gt;
&lt;br /&gt;
'''Utilizari frecvente:''' &lt;br /&gt;
* identificarea componentelor hardware ale sistemului vostru&lt;br /&gt;
* testarea unui calculator la achizitionare fara a instala nimic&lt;br /&gt;
* lucrul pe un calculator fara hard-disk (sau al carui hard-disk este intangibil)&lt;br /&gt;
* rezolvarea unor probleme hardware / testarea memoriei&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===== De ce as alege o distributie boot-abila? =====&lt;br /&gt;
&lt;br /&gt;
Deoarece nu trebuie sa instalati nimic pe hard-disk pentru a va &amp;quot;juca&amp;quot; un pic cu comezile de baza si pentru a va familiariza cu noul mediu de lucru si in general, cu setarile standard, nu puteti face prea multe trasnai :-). &lt;br /&gt;
&lt;br /&gt;
Mai apoi probabil ca veti dori ceva instalat totusi, pentru a va ramane salvate setarile pe care le faceti si pentru a putea rula aplicatiile cu o viteza mai mare, deoarece in momentul in care incarca de pe CD, nu ruleaza foarte rapid.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===== Se poate instala Knoppix pe hard-disk? =====&lt;br /&gt;
&lt;br /&gt;
Desigur, folosind comanda:&amp;lt;code&amp;gt;&amp;lt;sh/&amp;gt;sudo knoppix-installer&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Acesta este insa un subiect mai avansat si este recomandabil sa cititi FAQ original al Knoppix-ului pentru a afla mai multe detalii. Nu luati acesta posibilitate ca pe un indemn insa. Este doar dovada ca se poate, in cazul in care doriti.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===== Mai sunt distributii interesante, utile pentru teste? =====&lt;br /&gt;
&lt;br /&gt;
Desigur. Un proiect foarte interesant este [http://www.damnsmalllinux.org/ Damn Small Linux]. Ceea ce ofera ei (in mod special pentru un utilizator de Windows) este [ftp://ibiblio.org/pub/Linux/distributions/damnsmall/current/dsl-embedded.zip o arhiva zip] in care sa gaseste o mini-distributie embedded Linux. Cu alte cuvinte, o luati, dezarhivati, dati dublu-click pe '''dsl-windows.bat''' si veti avea o surpriza placuta.&lt;br /&gt;
&lt;br /&gt;
O alta mini-distributie care ruleaza direct de pe partitia Windows este [http://www.slackware.org/zipslack/ ZipSlack]. Mai multe informatii despre unde o gasiti - http://www.slackware.org/zipslack/getzip.php.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Despre programe/aplicatii ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Ce este un program? ====&lt;br /&gt;
&lt;br /&gt;
La modul cel mai intuitiv, un program este un fisier text scris intr-un limbaj de programare care specifica anumite instructiuni. Insa ceea ce cunostem noi sub numele de program este cu totul altceva. Noi cunoastem ''intruparea'' acelui program, si anume un fisier binar executabil (un ''.exe'' pe Windows). Care este procedeul prin care transformam textul intr-un binar (astfel incat sa poata fi interpretat direct de calculator) si care este ''bagheta magica'' care il transforma din text in binar? Bagheta magica este un program special numit ''compilator'' si procedeul de transformare se numeste ''compilare''.&lt;br /&gt;
&lt;br /&gt;
Textul initial despre care va povesteam este de fapt ''sursa'' programului, esenta lui, pe care noi in sistemele &amp;quot;GNU/Linux&amp;quot; avem posibilitatea de a o modifica si de a crea un program si mai puternic decat cel initial daca suntem suficient de priceputi. In alte sisteme cu sursa inchisa (cum ar fi Microsoft Windows), nu avem aceasta posibilitate, prin urmare drepturile si posibilitatile noastre sunt ingradite. Pentru un utilizator obisnuit nu este o tragedie foarte mare deoarece probabil ca nu simte nevoia acestei libertati, sau nu stie ce sa faca cu ea.&lt;br /&gt;
&lt;br /&gt;
Daca ati ajuns pana aici si nu va este frica sa ma murdariti un pic de &amp;quot;unsoare&amp;quot;, inseamna ca sunteti curiosi sa vedeti mai mult. Aceasta unsoare de care vorbesc este de fapt dorinta de a afla mai multe despre internele unui sistem de operare si cateodata este necesar un mic '''hack''' pentru a rezolva posibilele probleme. In acest caz, nu pot decat sa va felicit deoarece aveti calitatile necesare pentru a invata Linux.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Cum instalez un program... ====&lt;br /&gt;
&lt;br /&gt;
===== ... din surse? =====&lt;br /&gt;
&lt;br /&gt;
Pentru a efectua o instalare corecta se recomanda citirea documentelor referitoare la instalare din arhiva care contine sursele. De regula, un README si un INSTALL ar trebui sa va lamureasca. Apoi dati comenzile urmatoare, pe rand si programul va fi compilat si instalat conform unor optiuni specificate in fisierul Makefile.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt; &amp;lt;sh/&amp;gt; ./configure&lt;br /&gt;
  make&lt;br /&gt;
  make install&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''Nota: Daca doriti sa schimbati optiunile de compilare default (ceea ce se si recomanda), dati comanda '''./configure --help''' sa vedeti o lista a optiunilor pe care le aveti la dispozitie. Aceste optiuni variaza de la program la program. Evident, in argumentele pe care le veti da lui '''./configure''' veti avea o instalare cat mai aproape de ceea ce vreti.''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''make'''&lt;br /&gt;
&lt;br /&gt;
Utilitarul '''make''' s-a nascut din nevoia de a compila, linkedita si instala proiecte mari, alcatuite din sute sau mii de fisiere sursa. Pentru a explica rolul utilitarului '''make''', recapitulam pasii in care mai multe fisiere sursa C sau ASM (limbaj de asamblare) sunt compilate si linkeditate impreuna intr-un fisier executabil:&lt;br /&gt;
&lt;br /&gt;
Fie mai multe fisiere sursa C, cu numele sursa1.c, sursa2.c, sursa3.c. In mod normal, aceste fisiere sunt compilate separat de catre orice compilator C in fisiere individuale obiect: sursa1.o (sau sursa1.obj),&lt;br /&gt;
sursa2.o si sursa3.o. Dupa compilare, in faza de linkeditare din cele trei fisiere obiect rezulta fisierul executabil. Se pot recunoaste usor acesti pasi si in asamblarea si linkeditare impreuna a mai multor fisiere ASM intr-un singur fisier executabil.&lt;br /&gt;
&lt;br /&gt;
Daca din cele trei fisiere sursa de mai sus se modifica doar sursa2.c, care din pasii de mai sus trebuie repetati? Evident, nu este necesara recompilarea in fisiere obiect a fisierelor sursa1.c si sursa3.c, este&lt;br /&gt;
necesara doar recompilarea lui sursa2.c. In urma acestei recompilari se va modifica si sursa2.o, lucru care impune relinkeditarea tuturor fisierelor obiect in fisierul executabil final. Utilitarul '''make''', folosind un fisier de configurare cu numele Makefile, &amp;quot;are grija&amp;quot; ca din pasii necesari obtinerii unui anumit fisier (in cazul nostru fisierul executabil final) sa se execute doar acesi pasi necesari.&lt;br /&gt;
&lt;br /&gt;
Prezentam in continuare in fisier Makefile pentru exemplu enuntat mai sus:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
demo : sursa1.o sursa2.o sursa3.o&lt;br /&gt;
	gcc -o demo sursa1.o sursa2.o sursa3.o&lt;br /&gt;
&lt;br /&gt;
sursa1.o : sursa1.c&lt;br /&gt;
	gcc -c sursa1.c&lt;br /&gt;
&lt;br /&gt;
sursa2.o : sursa2.c&lt;br /&gt;
	gcc -c sursa2.c&lt;br /&gt;
&lt;br /&gt;
sursa2.o : sursa2.c&lt;br /&gt;
	gcc -c sursa1.c&lt;br /&gt;
&lt;br /&gt;
clean :&lt;br /&gt;
	rm sursa1.c~ sursa2.c~ sursa3.c~&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Explicatii:'''&lt;br /&gt;
&lt;br /&gt;
Pe prima linie, fisierul demo, se obtine din fisierele sursa1.o, sursa2.o si sursa3.o cu comanda de pe linia doi. Prima linia este folosita de utilitarul make pentru a sti cand trebuie sa reconstruiasca (prin linkeditare) fisierul demo, iar linia doi pentru a sti cu ce comanda trebuie sa reconstruiasca acest fisier.&lt;br /&gt;
Linia patru este folosita pentru a contrui fisierul sursa1.o din fisierul sursa1.c folosind comanda de pe linia cinci. Aceste doua linii sunt folosita de utilitarul make in doua situatii:&lt;br /&gt;
* a) fie sursa1.o nu exista, el este necesar la linkeditare finala, si deci trebuie creat prin comanda de pe linia cinci;&lt;br /&gt;
* b) fie fisierul sursa1.c are data crearii mai noua decat sursa1.o, fapt ce impune recompilarea lui sursa1.c.&lt;br /&gt;
Modificandu-se sursa1.o, data crearii acestuia va fi mai noua decat data fisierului demo lucru ce va duce linkeditarea finala. Optinea -c folosita la compilatorul gcc inseamna &amp;quot;just compile, don't link&amp;quot;, iar optiunea -o inseamna &amp;quot;creeaza fisierul executabil cu acest nume&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Pentru a rula exemplu de mai sus, se tasteaza comanda:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt; &amp;lt;sh/&amp;gt;make&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Observatii:'''&lt;br /&gt;
* Observati regula ''clean'' din fisierul de mai sus. Prin comanda '''make clean''' se executa comanda de dupa aceasta regula (se executa comanda rm care sterge fisierele de backup)&lt;br /&gt;
* Liniile cu comenzile '''gcc''' si '''rm''' sunt indentate in dreapta cu TAB, nu cu spatii!&lt;br /&gt;
* Intr-un fisier Makefile se pot folosi orice comenzi valide shell pentru a crea un fisier necesar. Exemplu:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
fisier_cu_useri_din_sistem :&lt;br /&gt;
	finger &amp;gt; fisier_cu_useri_din_sistem&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====== Arhivare/Dezarhivare ======&lt;br /&gt;
&lt;br /&gt;
'''Cum utilizez '''tar'''?'''&lt;br /&gt;
&lt;br /&gt;
Codul sursa al unui program se va gasi cel mai des intr-o arhiva. Aceasta poate fi .tar, tar.gz sau .tar.bz2 si va fi numita, generic, ''tarball''.&lt;br /&gt;
Pentru a afla mai multe despre tar si optiunile sale dati comanda '''man tar'''. &lt;br /&gt;
&lt;br /&gt;
Dezarhivarea se face astfel:&lt;br /&gt;
* pentru o arhiva '''tar''': &amp;lt;code&amp;gt; &amp;lt;sh/&amp;gt; tar xvf arhiva.tar &amp;lt;/code&amp;gt;&lt;br /&gt;
* pentru o arhiva '''tar.gz''': &amp;lt;code&amp;gt; &amp;lt;sh/&amp;gt; tar zxvf arhiva.tar.gz &amp;lt;/code&amp;gt;&lt;br /&gt;
* pentru o arhiva '''tar.bz2''': &amp;lt;code&amp;gt; &amp;lt;sh/&amp;gt; tar jxvf arhiva.tar.bz2 &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Arhivarea unui director se face astfel:&lt;br /&gt;
* intr-o arhiva '''.tar''': &amp;lt;code&amp;gt; &amp;lt;sh/&amp;gt; tar cvf arhiva.tar /director/ &amp;lt;/code&amp;gt;&lt;br /&gt;
* intr-o arhiva '''tar.gz''': &amp;lt;code&amp;gt; &amp;lt;sh/&amp;gt; tar czvf arhiva.tar.gz /director/ &amp;lt;/code&amp;gt;&lt;br /&gt;
* intr-o arhiva '''tar.bz2''': &amp;lt;code&amp;gt; &amp;lt;sh/&amp;gt; tar cjvf arhiva.tar.bz2 /director/ &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Desigur, in loc de un director putea fi un simplu fisier. Se pot specifica mai multe fisiere, directoare pentru arhivare in cadrul aceleiasi arhive. De, asemenea, ca o observatie, uneori arhivele ''tar.gz'' pot fi gasite si cu extensia ''tgz'', comenzile de dezarhivare fiind la fel.&lt;br /&gt;
&lt;br /&gt;
'''Exista '''zip''', '''rar''', '''ace''', '''arj''' in Linux?'''&lt;br /&gt;
&lt;br /&gt;
Da. Nu sunt programe cu sursa deschisa, dar in general sunt de gasit prin repository-urile distributiilor mai mari. Sa le luam pe rand:&lt;br /&gt;
* Pentru ''zip'' exista doua programe: '''zip''' si '''unzip'''. Desi nu sunt produse de firma care produce binecunoscutul WinZIP, aceste utilitare sunt compatibile cu WinZIP, gratuite si portate pe mai multe sisteme de operare. [http://www.info-zip.org/ Site-ul oficial].&lt;br /&gt;
** pentru a crea o arhiva zip dintr-un director: &amp;lt;code&amp;gt;zip -r arhiva.zip /director/&amp;lt;/code&amp;gt;&lt;br /&gt;
** pentru a extrage fisierele dintr-o arhiva zip: &amp;lt;code&amp;gt;unzip arhiva.zip&amp;lt;/code&amp;gt;&lt;br /&gt;
* Pentru ''rar'' exista '''rar''' si '''unrar'''. Ambele utilitare pot fi descarcate de pe [http://www.rarlab.com/ site-ul oficial], dar numai '''unrar''' este gratuit.&lt;br /&gt;
** pentru a crea o arhiva rar dintr-un director: &amp;lt;code&amp;gt;rar a arhiva.rar /director/&amp;lt;/code&amp;gt;&lt;br /&gt;
** pentru a extrage fisierele dintr-o arhiva rar: &amp;lt;code&amp;gt;unrar e arhiva.rar /director_destinatie/&amp;lt;/code&amp;gt;&lt;br /&gt;
* Pentru ''ace'' exista '''unace'''. Pe [http://www.winace.com/ site-ul oficial], exista doar acest utilitar la categoria download-urilor pentru Linux. El executa doar dezarhivare:&lt;br /&gt;
** &amp;lt;code&amp;gt;unace e arhiva.ace&amp;lt;/code&amp;gt;&lt;br /&gt;
* Pentru ''arj'' exista '''arj'''. Desi pe [http://www.arjsoftware.com/ site-ul lor oficial] se pare ca platforma UNIX/Linux nu e suportata (FAQ, intrebarea h.), in repository-ul distributiilor mari exista '''arj''':&lt;br /&gt;
** &amp;lt;code&amp;gt;ARJ32 v 3.10, Copyright (c) 1998-2004, ARJ Software Russia. [24 Nov 2005]&amp;lt;/code&amp;gt;&lt;br /&gt;
** pentru a crea o arhiva dintr-un director: &amp;lt;code&amp;gt;arj a -r arhiva.arj /director/&amp;lt;/code&amp;gt;&lt;br /&gt;
** pentru a extrage o arhiva: &amp;lt;code&amp;gt;arj e -r arhiva.arj&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== ... din pachete? =====&lt;br /&gt;
&lt;br /&gt;
Acest lucru este dependent de distributia pe care o folositi. Daca sunteti incepator, se recomanda sa utilizati un manager de pachete in modul grafic.&lt;br /&gt;
&lt;br /&gt;
Daca vreti sa stiti mai multe, cititi in continuare. Dupa cum povesteam mai devreme programele au fost luate de dezvoltatorii distributiilor si puse in pachete pentru a fi grupate mai bine. Da, asta inseamna ca un program original se poate intinde pe mai multe pachete, respectiv poate fi grupat cu mai multe programe inainte de a forma un pachet.&lt;br /&gt;
&lt;br /&gt;
De asemenea, apare o noua notiune, si anume aceea de ''dependinte''. &lt;br /&gt;
&lt;br /&gt;
====== Ce sunt dependintele si cum utilizez un manager de pachete? ======&lt;br /&gt;
&lt;br /&gt;
Dependintele sunt programe/pachete/biblioteci de care depind alte programe pe care vreti voi sa le instalati. Fiind vorba de un sistem cu surse libere (sub licenta GPL sau compatibila) un dezvoltator nu trebuie sa scrie ''totul'' de la capat pentru a realiza un program functional. El se poate baza pe anumite programe/biblioteci introduse de altcineva pentru a-si realiza scopul. Motiv pentru care s-ar putea sa va treziti la un moment dat ca doriti sa instalati ceva si vi se refuza acest drept pe motiv ca ii lipseste o componenta necesara bunei functionari, altfel spus, o dependinta.&lt;br /&gt;
&lt;br /&gt;
De aceea au si aparut de fapt programele numite &amp;quot;manager de pachete&amp;quot;, pentru a rezolva aceste dependinte fara sa trebuiasca utilizatorul sa le caute si sa le instalaze manual. De fapt, fiecare distributie are un manager de pachete bine pus la punct, altfel nu  ar fi ajuns la stadiul actual, tinand cont ca o distributie majora poate avea mii de pachete.&lt;br /&gt;
&lt;br /&gt;
* Pentru '''Gentoo''' veti folosi portage - un sistem de management de pachete inspirat din FreeBSD.&lt;br /&gt;
** Instalarea unui pachet: &amp;lt;code&amp;gt;&amp;lt;sh/&amp;gt;emerge pachet&amp;lt;/code&amp;gt;&lt;br /&gt;
** Dezinstalarea: &amp;lt;code&amp;gt;&amp;lt;sh/&amp;gt;emerge --unmerge pachet&amp;lt;/code&amp;gt;&lt;br /&gt;
** Pentru mai multe detalii, consultati documentatia de pe [http://www.gentoo.ro/ site-ul comunitatii Gentoo in Romania]&lt;br /&gt;
&lt;br /&gt;
* Distributii precum '''RedHat''' (acum numai pentru mediul Enterprise), '''Fedora Core''', '''Mandriva''' si '''openSUSE''' se bazeaza la nivelul cel mai de jos pe pachete in format '''rpm'''. Comenzi utile pentru a lucra cu ele:&lt;br /&gt;
** Pentru instalarea unui pachet: &amp;lt;code&amp;gt; &amp;lt;sh/&amp;gt; rpm -i nume_pachet.rpm &amp;lt;/code&amp;gt;&lt;br /&gt;
** Pentru dezinstalarea unui pachet: &amp;lt;code&amp;gt; &amp;lt;sh/&amp;gt; rpm -e nume_pachet &amp;lt;/code&amp;gt;&lt;br /&gt;
** Ca manager de pachete, acesta variaza de la distributie la distributie. [http://linux.duke.edu/projects/yum/ Yum] pare sa fie alegerea cea mai populara. Pentru a afla cum il setam sa utilizeze site-uri mirror din Romania, cititi articolul [[Yum_%C3%AEn_Rom%C3%A2nia | Yum in Romania]]&lt;br /&gt;
** Mandriva foloseste [http://qa.mandriva.com/twiki/bin/view/Main/UrpmiResources urpmi] sau [http://labix.org/smart smart].&lt;br /&gt;
*** ''Familia'' '''urpmi''' ''preia'' toate functiile utilitatului '''rpm''', nemaifiind nevoie sa folositi comenzile scrise mai sus.&lt;br /&gt;
*** Un scurt exemplu de echivalente:&lt;br /&gt;
**** Pentru instalarea unui pachet: &amp;lt;code&amp;gt; &amp;lt;sh/&amp;gt; urpmi nume_pachet[.rpm] &amp;lt;/code&amp;gt;&lt;br /&gt;
**** Pentru dezinstalarea unui pachet: &amp;lt;code&amp;gt; &amp;lt;sh/&amp;gt; urpme nume_pachet&amp;lt;/code&amp;gt;&lt;br /&gt;
*** Cand extensia .rpm este data, urpmi va cauta pachetul local, in directorul curent.&lt;br /&gt;
*** Ca interfete grafice e recomandat sa aveti instalat '''gurpmi''' (permite instalarea unui rpm executand dublu click pe iconita pachetului) si '''rpmdrake''' (interfata de administrare a pachetelor din Mandriva Control Center).&lt;br /&gt;
*** Pentru mai multe detalii, consultati documentatia de pe [http://www.mandrivausers.ro/ site-ul comunitatii Mandriva in Romania].&lt;br /&gt;
&lt;br /&gt;
* Distributii precum '''Slackware''' se bazeaza pe pachete in format '''tgz'''.&lt;br /&gt;
** Pentru instalarea unui pachet: &amp;lt;code&amp;gt; &amp;lt;sh/&amp;gt; installpkg nume_pachet.tgz &amp;lt;/code&amp;gt;&lt;br /&gt;
** Pentru dezinstalarea unui pachet: &amp;lt;code&amp;gt; &amp;lt;sh/&amp;gt; removepkg nume_pachet &amp;lt;/code&amp;gt;&lt;br /&gt;
** Pentru a folosi managerul de pachete original dati comanda: &amp;lt;code&amp;gt; &amp;lt;sh/&amp;gt; pkgtool &amp;lt;/code&amp;gt;&lt;br /&gt;
** Manager de pachete: [http://directory.fsf.org/slapt-get.html slapt-get].&lt;br /&gt;
** Pentru crearea unui pachet din surse (exceptie unele programe gen php) se procedeaza astfel:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;sh/&amp;gt;tar zxf nume.tgz&lt;br /&gt;
cd nume&lt;br /&gt;
./configure --prefix=/usr --sysconfdir=/etc/&lt;br /&gt;
make&lt;br /&gt;
make install DESTDIR=/tmp/nume&lt;br /&gt;
cd /tmp/nume&lt;br /&gt;
makepkg nume.tgz&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Distributii precum '''Debian''' si '''Ubuntu''' se bazeaza pe pachete in format '''deb'''.&lt;br /&gt;
** Pentru instalarea unui pachet: &amp;lt;code&amp;gt; &amp;lt;sh/&amp;gt; dpkg -i nume_pachet.deb &amp;lt;/code&amp;gt;&lt;br /&gt;
** Pentru dezinstalarea unui pachet: &amp;lt;code&amp;gt; &amp;lt;sh/&amp;gt; dpkg -r nume_pachet &amp;lt;/code&amp;gt;&lt;br /&gt;
** Manager(e) de pachete: '''apt-get''', '''aptitude''', '''Synaptic'''.&lt;br /&gt;
&lt;br /&gt;
* Nu uitati comanda ''man'' care va va da detalii cu privire la folosirea managerului de pachete ales!&lt;br /&gt;
&lt;br /&gt;
Ceea ce trebuie sa retinem este faptul ca un manager de pachete avansat (in stare sa rezolve dependintele si sa instaleze pachetele astfel incat sa nu intre in conflict), trebuie sa si ''stie'' de unde sa ia pachetele. De cele mai multe ori, le setam special pentru a lua de pe site-uri mirror din Romania pachetele de care avem nevoie.&lt;br /&gt;
&lt;br /&gt;
De exemplu, pentru '''Debian''', avem de adaugat mirror-urile pe care le preferam in '''/etc/apt/sources.list'''.&lt;br /&gt;
Dar am tot vorbit de mirror si nu am spus ce este. Bineinteles, exista o locatie oficiala a unei distributii, insa pentru a nu impovara prea tare acel site se creeaza ceea ce noi numim &amp;quot;o oglinda&amp;quot; a locatiei initiale, copiind toate datele pe un server din reteaua metropolitana, cu permisiunea dezvoltatorilor originali desigur. Fiind mai aproape de noi, iar unii beneficiand de o viteza mai buna in Romania decat extern, se prefera de regula un mirror &amp;quot;local&amp;quot; decat unul extern.&lt;br /&gt;
&lt;br /&gt;
=== Comenzi si practici de baza ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Ce este o comanda? ====&lt;br /&gt;
&lt;br /&gt;
O comanda este de fapt rularea unui program sau a unui script intr-o consola (fie ea fizica, sau virtuala). De exemplu, un program des utilizat pentru a da comenzi in consola din modul grafic, este Konsole din KDE.&lt;br /&gt;
&lt;br /&gt;
==== Care sunt comenzile esentiale? ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;sh/&amp;gt;info nume_comanda/fisier_de_configurare&lt;br /&gt;
man nume_comanda/fisier_de_configurare&lt;br /&gt;
apropos ceva&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Acesti &amp;quot;Cei trei muschetari&amp;quot; sunt '''absolut esentiali'''. Cand cineva va spune RTFM (read the fine manual), probabil ca se refera la aceste comenzi. &lt;br /&gt;
&lt;br /&gt;
'''info''' va da informatii privitoare la comanda respectiva sau la fisierul de configurare in cauza. &lt;br /&gt;
&lt;br /&gt;
'''man''' va da manualul comezii respective sau fisierul de configurare al unui program. In general in josul fisierului veti gasi referinte la comenzi, programe, fisiere de configurare care au legatura cu cel solicitat de voi.&lt;br /&gt;
&lt;br /&gt;
'''apropos''' este o comanda de genul &amp;quot;suna ca&amp;quot;. Poate ca nu stim exact o comanda, dar stim ca are legatura cu ''ceva'' si s-ar putea sa avem noroc sa ne dea ca rezultat ceva folositor.&lt;br /&gt;
&lt;br /&gt;
Daca chiar imi trebuie un utilitar / o comanda si ''apropos'' nu m-a dus unde voiam, [http://www.google.ro Google] s-ar putea sa fie mai viteaz. Bineinteles, nu excludem posibilitatea de a intreba pe altcineva, dar este de bun simt sa cautam si noi singuri pentru ca s-ar putea sa gasim raspunsul in cateva secunde.&lt;br /&gt;
&lt;br /&gt;
Chiar daca nu intra in categoria comenzilor esentiale, putem aduce aminte aici despre o resursa foarte importanta - [http://tldp.org The Linux Documentation Project], unde veti gasi foarte multe ghiduri, tutoriale si pagini de manual utile.&lt;br /&gt;
&lt;br /&gt;
==== Alte comenzi utile ====&lt;br /&gt;
&lt;br /&gt;
'''info, man, apropos, which, mkdir, rmdir, mount, touch, rm, cp, mv, cat, cd, ls, grep, ps, who, whoami, su, sudo, df, du, tar, more, less, ps, kill, killall, ln, chown, chmod, chattr, passwd, useradd, groupadd, ping, ifconfig, route, iptables, locate, slocate, updatedb, find'''&lt;br /&gt;
&lt;br /&gt;
Exercitiu: Pentru a afla ce fac fiecare dati '''man ''nume_comanda'' '''.&lt;br /&gt;
&lt;br /&gt;
In cazul in care nu ati observat deja, puteti sa atasati niste optiuni comenzilor pe care le dati. Acestea se manifesta sub forma '''[comanda] --optiune''' de obicei. O astfel de comanda utila (pe care aproape orice program o are), este '''[comanda] --help''' sau '''[comanda] -h''', pentru a va arata o lista de optiuni (de obicei scurta, dar la obiect).&lt;br /&gt;
&lt;br /&gt;
==== Ce fac cu un program care nu se mai opreste? ====&lt;br /&gt;
&lt;br /&gt;
Ori folositi combinatia '''kill PID''', unde PID este un numar (Process ID) aflat la rularea comenzii '''ps aux''', ori dati comanda '''killall nume_comanda'''. De asemenea apasarea tastei '''q''' sau apasarea combinatiei de taste '''CTRL+C''' poate opri rularea unui program in anumite conditii (cand el ruleaza in foreground).&lt;br /&gt;
&lt;br /&gt;
==== Ce este un &amp;quot;shell&amp;quot;? ====&lt;br /&gt;
&lt;br /&gt;
Un interpretor de comenzi. Cel mai utilizat la ora actuala este [http://www.gnu.org/software/bash/ BASH]&lt;br /&gt;
&lt;br /&gt;
===== Bash =====&lt;br /&gt;
&lt;br /&gt;
Iata cateva resurse pentru a afla mai multe despre el: http://www.tldp.org/LDP/abs/html, http://www.tldp.org/HOWTO/Bash-Prog-Intro-HOWTO.html&lt;br /&gt;
&lt;br /&gt;
Conceptul de &amp;quot;programare&amp;quot; in BASH se refera de fapt la a scrie script-uri care sa indeplineasca anumite functii utile. Toate functiile de initializare in sistemele GNU/Linux sunt scrise in BASH sau in SH.&lt;br /&gt;
&lt;br /&gt;
Un script este interpretat si executat direct, nu necesita o compilare ca un program obisnuit.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Utilizatorii şi grupurile sistemului ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Utilizatorii unui sistem se pot vizualiza in /etc/passwd. Majoritatea afisati acolo sunt de tip ''daemon'', adica programe care ruleaza in background fara a fi sub controlul direct al utilizatorului, si de obicei sunt instantiate ca procese de sistem, lansate la '''boot'''. De asemenea, sunt si cativa utilizatori speciali, sub care ruleaza programe de tip server foarte importante. De exemplu:&lt;br /&gt;
* guest - folosit uneori pentru a da acces read-only unor vizitatori&lt;br /&gt;
* ftp   - user-ul folosit pentru conectari anonime la ftp&lt;br /&gt;
* news  - folosit de Usenet&lt;br /&gt;
* lp    - folosit de sistemul de imprimare; vine de la ''line printer''&lt;br /&gt;
* apache/www-data - folosit in special de Apache WebServer&lt;br /&gt;
Si nu in ultimul rand, sunt utilizatorii obisnuiti (umani) ai sistemului. O categorie aparte este '''root''', super-utilizatorul sau, altfel spus, administratorul sistemului, cu drepturi depline asupra lui.&lt;br /&gt;
&lt;br /&gt;
* Daca sunteti un utilizator obisnuit, linia de comanda va arata asa:&amp;lt;code&amp;gt;&amp;lt;sh/&amp;gt;andrei@acasa:/home/andrei$&amp;lt;/code&amp;gt;&lt;br /&gt;
* Daca sunteti '''root''' (administratorul sistemului):&amp;lt;code&amp;gt;&amp;lt;sh/&amp;gt;root@acasa:/home/root#&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bineinteles, toate modificarile majore asupra sistemului trebuie facute ca '''root''', dar atentie ca '''nu''' este recomandat sa folositi in mod ''curent'' acest utilizator, deoarece puteti face greseli destul de mari la inceput, care sa afecteze definitiv integritatea sistemului avand in vedere ca aveti drepturi depline.&lt;br /&gt;
&lt;br /&gt;
Grupurile unui sistem se află trecute în /etc/groups. La crearea unui utilizator, dacă nu se specifică altfel, se creează un nou grup cu aceeaşi denumire a utilizatorului, care va conţine acel utilizator. Grupurile sunt importante, ajutând utilizatorii aceluiaşi sistem să folosească în comun anumite resurse. Un grup poate conţine oricâţi utilizatori, dar un utilizator nu poate face parte decât din maxim 32 de grupuri simultan!&lt;br /&gt;
De exemplu, într-o universitate există grupuri separate pentru fiecare facultate, an, grupă, etc. De asemenea există grupuri şi pentru fiecare catedră în parte. Un profesor de matematică poate face parte, de exemplu, din grupul facultăţii la care predă, din grupul seriilor la care predă, etc.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Cum adaug / sterg utilizatori din sistem? ====&lt;br /&gt;
&lt;br /&gt;
Cu comenzile: '''useradd, userdel, groupadd, groupdel'''. '''man ''comanda'' ''' pentru detalii, unde ''comanda'' se va inlocui cu una din variantele anterioare.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Cum schimb parola unui utilizator? ====&lt;br /&gt;
&lt;br /&gt;
Cu comanda:&amp;lt;code&amp;gt;&amp;lt;sh/&amp;gt;passwd&amp;lt;/code&amp;gt;&lt;br /&gt;
Daca sunteti root, puteti schimba parola oricui:&amp;lt;code&amp;gt;&amp;lt;sh/&amp;gt;passwd gigel&amp;lt;/code&amp;gt; unde gigel trebuie sa fie un utilizator valid din sistem.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Permisiuni ====&lt;br /&gt;
&lt;br /&gt;
Un subiect foarte important în UNIX în general, prea puţin discutat în Windows. Deschideţi o consola şi daţi comanda:&amp;lt;code&amp;gt;&amp;lt;sh/&amp;gt;ls -l&amp;lt;/code&amp;gt;&lt;br /&gt;
Pe prima coloană va apărea ceva de genul: ''drwxr-xr-x''. Ce înseamă asta?&lt;br /&gt;
* primul caracter:&lt;br /&gt;
** - == fişier&lt;br /&gt;
** d == director&lt;br /&gt;
** l == symlink (legătură simbolică)&lt;br /&gt;
** s == socket (conexiune prin retea)&lt;br /&gt;
** p == pipe (conducta intre doua programe)&lt;br /&gt;
** c == character device (fisier special corespondent unui dispozitiv de intrare/iesire la nivel de caracter, e.g. un port serial)&lt;br /&gt;
** b == block device (fisier special corespondent unui dispozitiv de intrare/iesire la nivel de bloc, e.g. un disc dur)&lt;br /&gt;
* următoarele 3 caractere == drepturile utilizatorului care deţine fişierul (a se vedea a 3-a coloană)&lt;br /&gt;
* următoarele 3 caractere == drepturile grupului care deţine fişierul (a se vedea a 4-a coloană)&lt;br /&gt;
* ultimele 3 caractere == drepturile celorlalţi&lt;br /&gt;
** r == drepturi de citire&lt;br /&gt;
** w == drepturi de scriere&lt;br /&gt;
** x == drepturi de execuţie pentru fisiere sau de descindere/traversare pentru directoare&lt;br /&gt;
&lt;br /&gt;
Schimbarea proprietarului unui fişier/director se face cu comanda:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;sh/&amp;gt;chown $utilizator[:$grup] $fisier [, ...]&amp;lt;/code&amp;gt;&lt;br /&gt;
Pentru a schimba proprietarul tuturor subdirectoarelor şi fişierelor dintr-un director:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;sh/&amp;gt;chown -R $utilizator[:$grup] $director [, ...]&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Schimbarea drepturilor se face într-un mod oarecum asemănător:&amp;lt;code&amp;gt;&amp;lt;sh/&amp;gt;&lt;br /&gt;
chmod a-x $fisier&lt;br /&gt;
chmod a+r $fisier&lt;br /&gt;
chmod o+wx -R $director&lt;br /&gt;
chmod g+rw $fisier&amp;lt;/code&amp;gt;&lt;br /&gt;
Unde:&lt;br /&gt;
* a == all; se aplică regula pentru utilizatorul proprietar, grupul proprietar şi restul utilizatorilor şi grupurilor din sistem&lt;br /&gt;
* o == others; se aplică regula pentru restul utilizatorilor şi grupurilor din sistem&lt;br /&gt;
* u == user; regula se aplică pentru utilizatorul proprietar&lt;br /&gt;
* g == group; regula se aplică pentru grupul proprietar&lt;br /&gt;
* -/+ == luăm/dăm drepturi&lt;br /&gt;
* r/w/x == dreptul de citire/scriere/execuţie (sau traversare)&lt;br /&gt;
Foarte logice aceste comenzi dar un admin adevărat nu îşi permite să piardă timpul! :) El va acorda/lua permisiuni folosind o reprezentare a lor in octal (baza 8), unde:&lt;br /&gt;
* 4 == dreptul de citire&lt;br /&gt;
* 2 == dreptul de scriere&lt;br /&gt;
* 1 == dreptul de execuţie&lt;br /&gt;
Exemplu de folosire:&amp;lt;code&amp;gt;&amp;lt;sh/&amp;gt;&lt;br /&gt;
chmod 755 $fisier # echivalent cu &amp;quot;chmod u+rwx,g+rw,o+rw $fisier&amp;quot;&lt;br /&gt;
chmod 644 $fisier # echivalent cu &amp;quot;chmod u+rw,g+r,o+r $fisier&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
Mult mai ... amuzant!&lt;br /&gt;
Important e de asemenea, '''chmod 0'''! Această comandă ia toate drepturile asupra fişierului, fiind utilă, de exemplu, pentru a pune fişierul în ''carantină''.&lt;br /&gt;
&lt;br /&gt;
Nu putem închide acest capitol fără a explica nişte noţiuni pe care le-am introdus:&lt;br /&gt;
* link-ul/legătura/scurtătura == o noţiune ceva mai complexă decât în Windows. Vom crea şi scrie ceva într-un fişier, iar apoi vom face un symlink/simbolic link/legătură simbolică spre el.&amp;lt;code&amp;gt;&amp;lt;sh/&amp;gt;&amp;lt;nowiki&amp;gt;$ echo -e &amp;quot;salut\n&amp;quot; &amp;gt; fisier&lt;br /&gt;
$ cat fisier&lt;br /&gt;
salut&lt;br /&gt;
$ ls -l fisier&lt;br /&gt;
-rw-r--r--  1 johndoe johndoe 6 May  8 21:59 fisier&lt;br /&gt;
$ ln -s fisier bla&lt;br /&gt;
$ cat bla&lt;br /&gt;
salut&lt;br /&gt;
$ ls -l bla&lt;br /&gt;
lrwxrwxrwx  1 johndoe johndoe 6 May  8 22:02 bla -&amp;gt; fisier&lt;br /&gt;
$ rm bla&lt;br /&gt;
rm: remove symbolic link `bla'? y&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
* dreptul de execuţie. Mulţi utilizatori începători se lovesc de problema asta. Scrieţi textul acesta într-un fişier numit... ''fisier'':&amp;lt;code&amp;gt;&amp;lt;sh/&amp;gt;&amp;lt;nowiki&amp;gt;#!/bin/sh&lt;br /&gt;
echo Hello World!&lt;br /&gt;
exit 0&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; E un exemplu de script shell. Să încercăm să îl rulăm:&amp;lt;code&amp;gt;&amp;lt;sh/&amp;gt;&amp;lt;nowiki&amp;gt;$ ./fisier&lt;br /&gt;
bash: ./fisier: Permission denied&lt;br /&gt;
$ sh fisier&lt;br /&gt;
Hello World!&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;După ce îi dăm drepturi de execuţie:&amp;lt;code&amp;gt;&amp;lt;sh/&amp;gt;&amp;lt;nowiki&amp;gt;$ chmod 755 fisier&lt;br /&gt;
$ ./fisier&lt;br /&gt;
Hello World!&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Despre fisiere, structura de directoare si partitii ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Ce semnificatie au fisierele si structura de directoare? ====&lt;br /&gt;
&lt;br /&gt;
Dupa cum ati observat deja, la structura de directoare deja diferentele sunt notabile. In primul rand, ca totul in sistemul Linux este un fisier. Absolut totul. Directoarele sunt doar cazuri speciale de fisiere. Dispozitivele (devices) sunt tot fisiere.&lt;br /&gt;
&lt;br /&gt;
Programele asa cum le stim de pe Windows nu mai au extensie. Nici nu au nevoie, deoarece tipul de fisier este stocat chiar in el. Daca vrem neaparat, putem crea / denumi un fisier Eseu.txt, dar asta nu inseamna ceva anume, ci doar pentru noi sa il recunoastem mai usor eventual.&lt;br /&gt;
&lt;br /&gt;
Structura de directoare iar este speciala. Spre deosebire de Windows, calea unui fisier/director se specifica cu '''&amp;quot;/&amp;quot;''' si nu cu '''&amp;quot;\&amp;quot;'''. De fapt, asa a fost de cand lumea si pamantul in lumea tehnologiei informatiei, Windows este de fapt cel care face exceptie de la regula :-). De asemenea, nu mai exista separatiile cu care eram obisnuiti, aici fiind impartit tortul mai cerebral, insa mai putin intuitiv pentru necunoscatori. Poate sa va surprinda, dar un pachet de cele mai multe ori nu se instaleaza in acelasi director, ci se mai imparte in mai multe felii, depinzand de functiile lui.&lt;br /&gt;
&lt;br /&gt;
Iata cum trebuie gandita situatia:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
/bin   - fisiere executabile importante (de ex: ls)&lt;br /&gt;
/boot  - fisiere statice, boot-loader-ul, kernel-ul &lt;br /&gt;
         (de ex: vmlinuz-2.4.27-2-386)&lt;br /&gt;
/etc   - mai toate fisierele importante de configurare sunt &lt;br /&gt;
         aici (de ex: lilo.conf, fstab)&lt;br /&gt;
/dev   - dispozitivele hardware&lt;br /&gt;
/home  - fisierele utilizatorilor (utilizatorul gica isi are &lt;br /&gt;
         home-ul in /home/gica)&lt;br /&gt;
/lib   - biblioteci si module de kernel&lt;br /&gt;
/mnt   - directoarele in care se monteaza alte sisteme de&lt;br /&gt;
         fisiere (de ex, Mandriva monteaza partitia C: &lt;br /&gt;
         a Windows-ului in /mnt/win_c)&lt;br /&gt;
/media - specific mai ales Debian-ului (contine /media/floppy &lt;br /&gt;
         si/sau /media/cdrom, etc... rolul e identic cu cel &lt;br /&gt;
         al directorului /mnt)&lt;br /&gt;
/opt   - software adaugat dupa, de obicei din surse neoficiale &lt;br /&gt;
         (de ex, rpm-urile de la OpenOffice.org)&lt;br /&gt;
/proc  - fiecare proces care ruleaza isi creeaza un director aici&lt;br /&gt;
/root  - home-ul root-ului&lt;br /&gt;
/usr   - ierarhie secundara (contine: /usr/bin, /usr/lib, etc...)&lt;br /&gt;
/sbin  - executabile esentiale de sistem (de ex: shutdown)&lt;br /&gt;
/tmp   - fisiere temporare (asemenea directoare sunt si in home-ul&lt;br /&gt;
         fiecarui user, de ex: /home/gica/tmp)&lt;br /&gt;
/var   - fisiere care se schimba des in timp (de ex: /var/log - &lt;br /&gt;
         jurnale de sistem, /var/cache - fisiere temporare...)&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pentru detalii, a se consulta [http://www.pathname.com/fhs/ documentatia oficiala referitoare la ierarhia standard a fisierelor Unix].&lt;br /&gt;
&lt;br /&gt;
Asadar, un pachet cel mai probabil ca isi va pune fisierele si directoarele in mai multe locuri, &amp;quot;imprastiindu-le&amp;quot; dupa rolul lor prin diversele directoare, iar managerul de pachete (daca exista), va sti ce se intampla, dezinstalarea sau oricare alta operatie asupra pachetului fiind facila pentru utilizator.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Cum vede Linux hard-disk-ul meu? (Partitionare) ====&lt;br /&gt;
&lt;br /&gt;
Dand comanda '''fdisk -l''' veti putea vedea toate partitiile din sistem. Pentru a va lamuri mai bine, cititi articolul [[Parti%C5%A3ii | Partitii]] care va va raspunde la intrebarea din titlu si la multe altele.&lt;br /&gt;
&lt;br /&gt;
Pe scurt, comanda '''mount''' este ceea ce cautati. '''man mount''' pentru detalii.&lt;br /&gt;
&lt;br /&gt;
Care este sintaxa?&lt;br /&gt;
&lt;br /&gt;
'''mount -t tip_sistem_de_fisiere device /cale/unde/vreau/sa/montez'''&lt;br /&gt;
&lt;br /&gt;
De exemplu daca vreau sa montez o partitie FAT32 (cea de-a doua partitie de pe hard-disk-ul meu sa zicem) dau comanda:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt; mount -t vfat /dev/hda2 /mnt/hda2 &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Daca vreau sa montez o partitie NTFS (cea de-a treia partitie de pe hard-disk-ul meu sa zicem) dau comanda:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt; mount -t ntfs /dev/hda3 /mnt/hda3 &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Daca vreau sa montez o partitie ext3 (cea de-a cincea partitie de pe hard-disk-ul meu sa zicem) dau comanda:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt; mount -t ext3 /dev/hda5 /mnt/hda5 &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Daca vreau sa montez o discheta (al carei sistem de fisiere este ext3):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt; mount -t ext3 /dev/fd0 /mnt/floppy &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Daca vreau sa montez un CD/DVD:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt; mount -t iso9660 /dev/cdrom /mnt/cdrom &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Daca vreau sa montez o imagine de CD/DVD in format '''iso''':&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt; mount -t iso9660 -o loop /home/imagine.iso /mnt/cdrom &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pentru a de-monta un device, avand in vedere un exemplu de mai sus, dati comanda:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt; umount /dev/hda5 &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Note aditionale'''&lt;br /&gt;
&lt;br /&gt;
* '''/mnt/hda2''', '''/mnt/cdrom''', '''/mnt/floppy''' etc. trebuie sa fie un directoare deja existente, bineinteles, eventual create chiar de noi anterior.&lt;br /&gt;
* Fisierul care se ocupa cu montarea tuturor device-urilor la pornirea sistemului este /etc/'''fstab'''. Acolo trebuie sa operati modificarile pentru a va retine setarile.&lt;br /&gt;
* Parametrul &amp;quot;-t tip_sistem_de_fisiere&amp;quot; poate lipsi de cele mai multe ori, gasind automat ce sistem de fisiere are partitia pe care vreti sa o montati.&lt;br /&gt;
* Unele comenzi nu vor merge &amp;quot;din prima&amp;quot; avand in vedere ca trebuie sa adaptati informatiile prezentate mai sus pentru sistemul vostru. Un caz bine de retinut este cel al lui /dev/cdrom, care de cele mai multe ori este o &amp;quot;scurtatura&amp;quot; (symbolic link, vezi '''man ln''') catre un device real, gen /dev/hdc, daca /dev/hdc este identificat ca fiind CD-ROM-ul vostru de Linux.   &lt;br /&gt;
* In majoritatea cazurilor, daca dati o comanda de mount, veti avea drept de citire si de scriere pe partitia/device-ul respectiv. Cum NTFS este o tehnologie inchisa, implementarea lui in kernelul Linux nu este inca completa si dreptul de scriere este foarte limitat. Daca doriti totusi sa faceti acest lucru neaparat (asumandu-va riscul ca partitia respectiva sa devina neutilizabila), aruncati un ochi pe proiectul [http://www.jankratochvil.net/project/captive/ Captive NTFS].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Notă amuzantă: În cazul în care vi se pare de undeva cunoscut numele comenzii '''mount''', s-ar putea să fie de la utilitarul de Windows '''Daemon Tools'''. Vă aduceţi aminte că pentru a putea vedea o imagine a unui CD trebuia să creeaţi un CD-ROM virtual şi să &amp;quot;montaţi&amp;quot; în el imaginea dorită? Ei bine, acţiunea este similară cu comanda '''mount''' sub Linux.''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===== Sisteme de fisiere =====&lt;br /&gt;
&lt;br /&gt;
Pe Windows avem trei sisteme de fisiere &amp;quot;populare&amp;quot;: FAT16, FAT32 si NTFS. Sub Linux, avem o intreaga suita: ext2, ext3, jfs, reiserfs, xfs si multe altele care necesita patch-uirea kernelului si recompilarea lui. In linii mari, toate sunt bune pentru un anumit scop. Nu va astepati sa fie un sistem de fisiere universal care sa indeplineasca toate cerintele posibile. Comparatii cu privire la actualele sisteme de fisiere puteti gasi pe [http://www.google.ro Google] cu duiumul, insa numai voi decideti care se potriveste mai bine scopului vostru.&lt;br /&gt;
&lt;br /&gt;
Personal eu utilizez pentru partitiile de Windows FAT32 si pentru partitiile de Linux ext3, deoarece sunt foarte bine  &amp;quot;impamantate&amp;quot;, avand in vedere vechimea lor. Cu alte cuvinte de pe Windows am acces read/write la partitiile Linux ext3 cu ajutorul proiectului [http://sourceforge.net/projects/ext2fsd Ext2 File System Driver for NT/2K/XP], dar atentie ca nu este lipsit complet de riscuri. Pana acum eu nu am avut probleme, dar va sfatuiesc sa nu incercati astfel de pozne daca aveti date importante pe partitiile pe care vreti sa faceti operatii. Un alt proiect de acelasi gen pe care il recomand cu caldura este [http://www.fs-driver.org/index.html Ext2 Installable File System for Windows] si pot garanta ca functioneaza foarte bine.&lt;br /&gt;
&lt;br /&gt;
Sub Linux, accesul read/write la partitiile FAT32 este implementat de mult timp, asadar alegerile pe care le-am facut eu sunt clare. Voi, ramane sa va ganditi daca aveti nevoie de acesta flexibilitate cu pretul unor performante ceva mai scazute.&lt;br /&gt;
&lt;br /&gt;
In ceea ce priveste NTFS, pentru accesul read-only de sub Linux exista implementare direct in kernel, dar pentru acces de scriere, este mai complicata situatia. Se poate scrie cu modulul (driverul) clasic, dar numai in cazuri speciale. Proiectul [http://www.jankratochvil.net/project/captive/ Captive NTFS] este ceea ce cautati, dar din nou atentie sa nu va busiti partitia. Acesta foloseste driverul original ntfs de la Microsoft emuland subsistemele necesare, similar cu Wine.&lt;br /&gt;
&lt;br /&gt;
==== Cum vede Linux celelalte dispozitive din calculatorul meu? ====&lt;br /&gt;
&lt;br /&gt;
===== &amp;lt;tt&amp;gt;/dev&amp;lt;/tt&amp;gt; =====&lt;br /&gt;
&lt;br /&gt;
/dev este directorul in care se gasesc dispozitivele de sistem. Unele sunt &amp;quot;Character devices&amp;quot;, altele sunt &amp;quot;Block devices&amp;quot; si reprezinta modul de interactiune dintre module (respectiv kernel) si dispozitivele fizice. Diferenta dintre cele doua este ca &amp;quot;Block devices&amp;quot; au un buffer pentru cereri, astfel avand dreptul sa alega ordinea in care sa raspunda acestora. Acest lucru cu precadere important pentru dispozitivele de stocare, unde este mai rapid sa scrie sau sa citesca sectoare care sunt apropiate unul de celalalt, decat acelea care sunt departate. O alta diferenta este faptul ca &amp;quot;Block devices&amp;quot; accepta intrari si iesiri doar in blocuri (ale caror marimi variaza in functie de dispozitiv), pe cand &amp;quot;Character devices&amp;quot; pot folosi cat de multi sau de putini octeti (bytes) doresc. Multe din dispozitivele aflate in /dev sunt de tip caracter deoarece nu au nevoie de acest tip de buffering, si nu opereaza cu o dimensiune fixa a blocurilor de date&lt;br /&gt;
&lt;br /&gt;
Puteti vedea care sunt de un tip sau celalalt dand comanda '''ls -l'''. Unde apare '''b''' avem de-a face un un block device, iar unde apare '''c''' avem de-a face cu un character device.&lt;br /&gt;
&lt;br /&gt;
In practica, noi nu ne prea ocupam cu crearea acestor blocuri, desi in cazul in care detectia nu este buna aveti posibilitatea sa faceti acest lucru. '''man mknod''' pentru detalii.&lt;br /&gt;
&lt;br /&gt;
===== &amp;lt;tt&amp;gt;/proc&amp;lt;/tt&amp;gt; =====&lt;br /&gt;
&lt;br /&gt;
Sistemul de fisiere proc este un pseudo sistem de fisere montat in /proc care reprezinta obiectele accesibile utilizatorilor si reflecta starea kernel-ului si a proceselor care ruleaza la momentul respectiv. &amp;quot;Pseudo&amp;quot; deoarece sistemul de fisiere /proc nu este altceva decat starea in memorie a structurilor de date ale nucleului pe care le afisaza. Nu este deloc suprinzator ca aceste fisiere au de obicei dimensiunea 0. Unele din aceste fisiere pot fi modificate de catre root, alterand optiunile din timpul rularii.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Ce este un boot-loader? ====&lt;br /&gt;
&lt;br /&gt;
Un program care ruleaza in momentul in care porneste calculatorul vostru. El este responsabil cu incarcarea si transferarea controlului catre un sistem de operare (in principal kernelul sau) sau catre boot-loader-ul altui sistem de operare (operatie numita chain-load).&lt;br /&gt;
&lt;br /&gt;
La ora actuala, cel mai popular si mai puternic boot loader in lumea Linux pare sa fie [http://www.gnu.org/software/grub/ GRUB] acum dezvoltat de echipa GNU. Personal, eu am folosit o varianta compilata de GRUB sa incarce mai multe sisteme de operare incapatanate (care voiau doar o anumita ordine de instalare), cum ar fi diverse versiuni de Windows, fara a avea la dispozitie nici o partitie Linux.&lt;br /&gt;
&lt;br /&gt;
Mai multe, in ceea ce urmeaza.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===== Cum configurez un boot-loader? =====&lt;br /&gt;
&lt;br /&gt;
Aici intervin cele mai cunoscute programe de acest tip pentru platforma Linux: GRUB si LILO. Pentru CD-ROM-uri si dischete, avem: [http://syslinux.zytor.com/ syslinux] si [http://syslinux.zytor.com/iso.php isolinux].&lt;br /&gt;
&lt;br /&gt;
====== GRUB ======&lt;br /&gt;
&lt;br /&gt;
Pagina oficiala este [http://www.gnu.org/software/grub/ GRUB], iar cele mai bune informatii referitoare la subiect le puteti gasi in [http://www.gnu.org/software/grub/manual/grub.html GRUB Manual].&lt;br /&gt;
&lt;br /&gt;
Iata cateva o metoda pe care le-am folosit-o pana acum cand am avut probleme. Ea implica instalarea manuala a GRUB-ului, motiv pentru care se recomanda dezinstalarea variantei venita o data cu sistemul vostru.&lt;br /&gt;
&lt;br /&gt;
Dar inainte de toate, cititi documentatia oficiala! Dati comanda '''info grub''' intr-o consola sau alternativ consultati documentatia online la adresa http://www.gnu.org/software/grub/manual/.&lt;br /&gt;
&lt;br /&gt;
Daca vreti sa folositi instalarea care vine o data cu sistemul vostru, atunci nu aveti decat sa modificati fisierul '''grub.conf''' sau '''menu.lst''' dupa caz pentru a adauga optiunile pe care le doriti. In caz ca nu mai este functionala acea varianta de GRUB, presupunand ca boot-loader-ul de Windows a rescris MBR-ul sau altceva asemanator s-a intamplat, urmati pasii:&lt;br /&gt;
&lt;br /&gt;
# Boot-ati de pe un Live CD, Knoppix de exemplu.&lt;br /&gt;
# Intrati in consola.&lt;br /&gt;
# Daca nu sunteti root(administratorul sistemului) dati comanda '''su -'''.Acesta este trucul pentru a deveni root in Knoppix, insa nu este universal valabil, deoarece de obicei cere o parola.&lt;br /&gt;
# Creati un director. ('''man mkdir''') Exemplu: '''mkdir /hard'''&lt;br /&gt;
# Montati partitia unde se gaseste GRUB. Exemplu: '''mount /dev/hda2 /hard'''. De notat ca GRUB isi instaleaza fisiere de configurare in directorul /boot/grub, deci daca directorul /boot se gaseste pe alta partitie (cum recomanda unele distributii), comanda ''mount'' data de voi trebuie sa reflecte locatia corecta.&lt;br /&gt;
# Daca partitia unde se gaseste GRUB este diferita de cea unde se gaseste sistemul, montati si sistemul, urmand exemplele anterioare.&lt;br /&gt;
# Dati comanda: &amp;lt;code&amp;gt; grub-install /dev/hda &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Altfel, varianta mai dificila un pic este:&lt;br /&gt;
&lt;br /&gt;
# Luati o discheta care sa nu va trebuiasca prea curand si puneti-o in floppy-disk drive.&lt;br /&gt;
# Luati varianta [ftp://alpha.gnu.org/gnu/grub/grub-0.97.tar.gz 0.97] (de exemplu).&lt;br /&gt;
# Dezarhivati-o ([http://wiki.linux360.ro/wiki/Ce_este_GNU/Linux%3F_/_Cum_invat_Linux%3F#Cum_utilizez_tar.3F_.28arhivare.2Fdezarhivare.29 exemplu aici])&lt;br /&gt;
# Dati comanda '''./configure &amp;amp;&amp;amp; make install''' in noul director dezarhivat. Acum ar trebui sa aveti o versiune de GRUB compilata chiar in fata ochilor vostri.&lt;br /&gt;
# Daca BIOS-ul este setat sa booteze prima data de pe discheta, lasati discheta inauntru. Daca nu, dupa ce ati terminat toate aceste operatii si dati reboot, nu uitati sa setati in BIOS sa booteze prima data de pe discheta. &lt;br /&gt;
# Apoi, dati comenzile urmatoare pentru a crea o discheta boot-abila de GRUB, noi fiind tot in directorul initial, in care am compilat programul. &amp;lt;code&amp;gt;dd if=stage1 of=/dev/fd0 bs=512 count=1 &amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;dd if-stage2 of=/dev/fd0 bs=512 seek=1 &amp;lt;/code&amp;gt;&lt;br /&gt;
# Identificati partitiile. Un '''fdisk -l''' ar trebui sa va dea suficiente informatii. Atentie ca GRUB vede partitiile altfel decat sistemul de operare. Este destul de intuitiva notatia, dar daca nu va descurcati, '''info grub'''.&lt;br /&gt;
# Copiati toate fisierele din directorul nostru de lucru (cel in care am compilat noul GRUB) in '''/boot/grub'''. Daca directorul din urma nu exista, il creati.&lt;br /&gt;
# Dati reboot (CTRL+ALT+DEL), iar el va boota de pe discheta (daca asa e setat din BIOS, vedeti mai sus indicatia).&lt;br /&gt;
# Daca ati facut ce trebuia, el va incarca GRUB de pe discheta si va veti gasi in fata unei &amp;quot;pseudo-console&amp;quot;, o interfata de dat comenzi de fapt. &lt;br /&gt;
# Puteti da comenzile '''root(hd0,1)''' si '''setup (hd0)''' de exemplu, asta presupunand ca partitia este '''hda2''' si hard-discul este ''hda''. '''Adaptati dupa caz!''' Acum ar trebui sa aveti o idee cam cum le noteaza, nu-i asa? In principal, fiti atenti ca el incepe notatia de la 0, nu de la 1. Adica, in exemplul nostru (hd0,1) corespunde lui /dev/hda2 de pe hard-disk-ul primar (hd0).&lt;br /&gt;
&lt;br /&gt;
Iata si un exemplu de fisier de configurare (cu cateva exemple in el), citat din '''/boot/grub/menu.lst''' :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# menu.lst - See: grub(8), info grub, update-grub(8)&lt;br /&gt;
#            grub-install(8), grub-floppy(8),&lt;br /&gt;
#            grub-md5-crypt, /usr/share/doc/grub&lt;br /&gt;
#            and /usr/share/doc/grub-doc/.&lt;br /&gt;
&lt;br /&gt;
## default num&lt;br /&gt;
# Set the default entry to the entry number NUM. Numbering starts &lt;br /&gt;
# from 0, and the entry number 0 is the default if the command is&lt;br /&gt;
# not used.&lt;br /&gt;
#&lt;br /&gt;
# You can specify 'saved' instead of a number. In this case, the &lt;br /&gt;
# default entry is the entry saved with the command 'savedefault'.&lt;br /&gt;
default         0&lt;br /&gt;
&lt;br /&gt;
## timeout sec&lt;br /&gt;
# Set a timeout, in SEC seconds, before automatically booting the &lt;br /&gt;
# default entry (normally the first entry defined).&lt;br /&gt;
#timeout                10&lt;br /&gt;
&lt;br /&gt;
## hiddenmenu&lt;br /&gt;
# Hides the menu by default (press ESC to see the menu)&lt;br /&gt;
#hiddenmenu&lt;br /&gt;
&lt;br /&gt;
# Pretty colours&lt;br /&gt;
#color cyan/blue white/blue&lt;br /&gt;
&lt;br /&gt;
## password ['--md5'] passwd&lt;br /&gt;
# If used in the first section of a menu file, disable all interactive&lt;br /&gt;
# editing control (menu entry editor and command-line)  and entries&lt;br /&gt;
# protected by the command 'lock'&lt;br /&gt;
# e.g. password topsecret&lt;br /&gt;
#      password --md5 $1$gLhU0/$aW78kHK1QfV3P2b2znUoe/&lt;br /&gt;
# password topsecret&lt;br /&gt;
&lt;br /&gt;
#&lt;br /&gt;
# examples&lt;br /&gt;
#&lt;br /&gt;
# title         Windows 95/98/NT/2000&lt;br /&gt;
# root          (hd0,0)&lt;br /&gt;
# makeactive&lt;br /&gt;
# chainloader   +1&lt;br /&gt;
#&lt;br /&gt;
# title         Linux&lt;br /&gt;
# root          (hd0,1)&lt;br /&gt;
# kernel        /vmlinuz root=/dev/hda2 ro&lt;br /&gt;
#&lt;br /&gt;
&lt;br /&gt;
## ## End Default Options ##&lt;br /&gt;
&lt;br /&gt;
title       Ubuntu, kernel 2.6.12-10-686&lt;br /&gt;
#lock       # -&amp;gt; Optiune utila daca este activata parola md5, acesta &lt;br /&gt;
            # oprind accesul daca nu este introdusa o parola valida.&lt;br /&gt;
root        (hd0,1)&lt;br /&gt;
kernel      /boot/vmlinuz-2.6.12-10-686 root=/dev/hda2 ro quiet splash&lt;br /&gt;
initrd      /boot/initrd.img-2.6.12-10-686&lt;br /&gt;
savedefault&lt;br /&gt;
boot&lt;br /&gt;
&lt;br /&gt;
title       Ubuntu, kernel 2.6.12-10-686 (recovery mode)&lt;br /&gt;
root        (hd0,1)&lt;br /&gt;
kernel      /boot/vmlinuz-2.6.12-10-686 root=/dev/hda2 ro single&lt;br /&gt;
initrd      /boot/initrd.img-2.6.12-10-686&lt;br /&gt;
boot&lt;br /&gt;
&lt;br /&gt;
title       Ubuntu, memtest86+&lt;br /&gt;
root        (hd0,1)&lt;br /&gt;
kernel      /boot/memtest86+.bin&lt;br /&gt;
boot&lt;br /&gt;
&lt;br /&gt;
### END DEBIAN AUTOMAGIC KERNELS LIST&lt;br /&gt;
&lt;br /&gt;
# This is a divider, added to separate the menu items below from&lt;br /&gt;
# the Debian ones.&lt;br /&gt;
title           Other operating systems:&lt;br /&gt;
root&lt;br /&gt;
&lt;br /&gt;
title           FreeBSD&lt;br /&gt;
root            (hd0,2,a)&lt;br /&gt;
&lt;br /&gt;
title           Windows&lt;br /&gt;
rootnoverify    (hd0,3)&lt;br /&gt;
chainloader     +1&lt;br /&gt;
&lt;br /&gt;
# Acesta ultima operatie incarca boot-loader-ul Windows cu ajutorul&lt;br /&gt;
# lui GRUB (operatie numita chainload)&lt;br /&gt;
&lt;br /&gt;
# Pentru operatii mai sofisticate legate de Windows, vedeti &lt;br /&gt;
# sectiunile: hide, map si makeactive din manual.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''N.a.:'' '''[FIXME]''' De adaugat si completat daca mai e ceva, in principiu vreau sa-l fac tutorial separat si il voi muta intr-un alt articol, aici venind un link catre el.&lt;br /&gt;
&lt;br /&gt;
====== LILO ======&lt;br /&gt;
&lt;br /&gt;
'''[FIXME]''' Articol despre LILO. Aveti un articol despre LILO sau un link catre unul foarte bun? Puneti-l aici.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Kernel-ul (Nucleul) GNU/Linux  ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Kernelul Linux (in limba romana romana &amp;quot;nucleu&amp;quot;), este supra-programul care guverneaza modul in care aplicatiile au voie sa functioneze, in ce parametri, cu ce drepturi, cata memorie sa fie alocata s.a.m.d. Este &amp;quot;generalul&amp;quot; sistemului de operare, daca vreti sa-i spuneam asa.&lt;br /&gt;
&lt;br /&gt;
Avantajul nucleului creat de Linus Torvalds fata de alte variante cu sursa inchisa este faptul ca il puteti compila chiar voi creand astfel ceva optimizat, fix pentru sistemul vostru, dand astfel un spor de performanta si securitate.&lt;br /&gt;
&lt;br /&gt;
Mai mult, avand sursele, puteti gasi patch-uri pentru el care sa-i imbogateasca functionalitatea si tot ce aveti de facut este sa il recompilati activand noile optiuni.&lt;br /&gt;
&lt;br /&gt;
Nota explicativa: Procesul de aplicare al unui patch este foarte simplu: patch -pX &amp;lt; nume.patch, unde X este un numar. '''man patch''' pentru detalii.&lt;br /&gt;
&lt;br /&gt;
Din generatia noua de nuclee mentionam ramurile 2.4 si 2.6 care vor fi explicate mai in detaliu in cele ce urmeaza. Scopul prezentarilor urmatoare este sa va indice ce inseamna diversele sectiuni pe care le veti intalni pe parcursul compilarii si cateva din optiunile cele mai importante, astfel incat sa puteti alege singuri optinunile pe care le doriti.&lt;br /&gt;
&lt;br /&gt;
In primul rand, trebuie sa luam sursele si sa ne asiguram ca avem pe sistemul nostru toate cele necesare compilarii efective. Pentru usurinta, vom lua doua exemple de fisiere de configurarea din Slackware 10.2. Motivul? Sursele care vin o data cu Slackware nu sunt modificate in nici un fel si ne ofera noua o metoda mai comoda de a lucra, pornind deja de la o baza (de la un fisier config functional), nefiind necesar sa setam absolut totul de la baza.&lt;br /&gt;
&lt;br /&gt;
De fapt, acesta este unul dintre cele mai bune sfaturi pe care vi le pot da, pana cand veti prinde chichitele compilarii si anume: porniti de la un config bun si incepeti sa rafinati optiunile, respectiv sa dezactivati suportul pentru ceea ce nu aveti nevoie. Atentie insa, pastrati suportul macar in stadiu de modul pentru anumite optiuni pe care este posibil sa le folositi in viitor dar nu stiti sigur.&lt;br /&gt;
&lt;br /&gt;
==== Recompilarea kernelului ====&lt;br /&gt;
&lt;br /&gt;
===== Ce sunt modulele? =====&lt;br /&gt;
&lt;br /&gt;
In momentul in care compilati aveti posibilitatea de a activa suportul direct in kernel pentru ceva, respectiv sa il dezactiva... sau sa il compilati ca modul. Modulul poate fi folosit (incarcat in kernel) la rulare sau nu, depizand de ce vreti sa faceti.&lt;br /&gt;
&lt;br /&gt;
Avand in vedere ca toate interfetele de comunicare cu dispozitivele fizice sunt introduse chiar in kernel, puteti sa compilati acest suport chiar ca modul. Adesea noi ne referim la module cu &amp;quot;drivere&amp;quot;, in linii mari putand spune ca sunt echivalentele driverelor de pe Windows, avand insa un spor mare de viteza ruland direct in kernel.&lt;br /&gt;
&lt;br /&gt;
Majoritatea distributiilor mari creeaza un kernel generic cu toate optiunile compilate ca modul, nestiind ce setup are fiecare utilizator pe calculatorul lui, ruland scripturi la initializarea sistemului pentru detectia hardware si incarcarea modulelor specifice. Acesta este de fapt motivul pentru care este de preferat sa pornim de la un astfel de un fisier config, oferindu-ne o configurare functionala, tocmai buna pentru a o lua noi la rafinat.&lt;br /&gt;
&lt;br /&gt;
De asemenea, pentru a ne usura munca este de preferabila o interfata grafica (make xconfig sau make gconfig) usor de folosit pentru a avea la dispozitie toate optiunile necesare, accesul facil la sistemul de ajutor [HELP] si modificari ulterioare in cazul in care am gresit ceva.&lt;br /&gt;
&lt;br /&gt;
===== Copierea surselor pe calculatorul vostru =====&lt;br /&gt;
&lt;br /&gt;
Sursele originale le veti gasi la ftp://ftp.kernel.org/pub/linux/kernel&lt;br /&gt;
&lt;br /&gt;
Dupa cum am spus vom lua ca exemplu un config si sursele (identice cu cele oficiale) din distributia Slackware &lt;br /&gt;
atat pentru 2.4 cat si pentru 2.6.&lt;br /&gt;
&lt;br /&gt;
* Config-ul pentru kernelul nostru de test 2.4:&lt;br /&gt;
http://ftp.iasi.roedu.net/mirrors/ftp.slackware.com/slackware-10.2/source/k/config&lt;br /&gt;
* Sursele pentru kernelul 2.4:&lt;br /&gt;
http://ftp.iasi.roedu.net/mirrors/ftp.slackware.com/slackware-10.2/source/k/linux-2.4.31.tar.bz2&lt;br /&gt;
* Config-ul pentru kernelul nostru de test 2.6:&lt;br /&gt;
http://ftp.iasi.roedu.net/mirrors/ftp.slackware.com/slackware-10.2/testing/source/linux-2.6.13/config-2.6.13&lt;br /&gt;
* Sursele pentru kernelul 2.6:&lt;br /&gt;
http://ftp.iasi.roedu.net/mirrors/ftp.slackware.com/slackware-10.2/testing/source/linux-2.6.13/linux-2.6.13.tar.bz2&lt;br /&gt;
&lt;br /&gt;
Primul lucru pe care il aveti de facut este sa dezarhivati sursele. Inainte de toate, nu uitati sa consultati directorul '''Documentation''' care include toate detaliile expuse in continuare si multe altele. De asemenea, fisierul '''README''' din directorul radacina al surselor va ofera informatii importante.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====== linux 2.4 ======&lt;br /&gt;
&lt;br /&gt;
'''Cerinte 2.4'''&lt;br /&gt;
&lt;br /&gt;
Pentru a compila kernelul linux versiunea 2.4 trebuie sa aveti urmatoarele programe:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
*  Gnu C                  2.95.3                  # gcc --version&lt;br /&gt;
*  Gnu make               3.77                    # make --version&lt;br /&gt;
*  binutils               2.9.1.0.25              # ld -v&lt;br /&gt;
*  util-linux             2.10o                   # fdformat --version&lt;br /&gt;
*  modutils               2.4.14                  # insmod -V&lt;br /&gt;
*  e2fsprogs              1.25                    # tune2fs&lt;br /&gt;
*  jfsutils               1.0.12                  # fsck.jfs -V&lt;br /&gt;
*  reiserfsprogs          3.6.3                   # reiserfsck -V 2&amp;gt;&amp;amp;1|grep reiserfsprogs&lt;br /&gt;
*  xfsprogs               2.6.0                   # xfs_db -V&lt;br /&gt;
*  pcmcia-cs              3.1.21                  # cardmgr -V&lt;br /&gt;
*  quota-tools            3.09                    # quota -V&lt;br /&gt;
*  PPP                    2.4.0                   # pppd --version&lt;br /&gt;
*  isdn4k-utils           3.1pre1                 # isdnctrl 2&amp;gt;&amp;amp;1|grep version&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pentru detalii, consultati '''Documentation/Changes'''. Lista programelor de mai sus poate varia in functie de ce optiuni folositi.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Compilarea efectiva (pasi)'''&lt;br /&gt;
&lt;br /&gt;
'''1.''' Oricare din urmatoarele comenzi lanseaza procesul de compilare, insa doar ultimele doua sunt intr-un meniu grafic usor de utilizat. Pentru incepatori este recomandat sa foloseasca unul din ele. Nota: pentru a rula '''make menuconfig''' trebuie sa aveti instalat '''ncurses''', pentru a rula '''make xconfig''' trebuie sa aveti instalat '''qt''' si bibliotecile sale iar pentru a rula '''make gconfig''' trebuie sa aveti instalat '''gtk'''.&lt;br /&gt;
&lt;br /&gt;
* '''make oldconfig'''&lt;br /&gt;
* '''make config'''&lt;br /&gt;
* '''make menuconfig'''&lt;br /&gt;
* '''make xconfig'''&lt;br /&gt;
* '''make gconfig'''&lt;br /&gt;
&lt;br /&gt;
'''2.''' Incarcati config-ul (din meniul Load daca l-ati lansat grafic) &lt;br /&gt;
&lt;br /&gt;
'''3.''' Dupa ce ati configurat ce era de configurat dati Save si apoi:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
make dep&lt;br /&gt;
make bzImage&lt;br /&gt;
make install&lt;br /&gt;
make modules_install&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''4.''' Copiati imaginea $Director_surse/arch/i386/boot/bzImage in /boot si redenumiti-o linux-2.4.31-test (in conformitate cu exemplul nostru, dar voi adaptati dupa caz), daca arhitectura pentru care l-ati compilat este x86.&lt;br /&gt;
&lt;br /&gt;
'''NU stergeti kernelul vechi functional pe care il aveti!''' In cazul in care ceva nu a mers cum trebuie, trebuie sa aveti o metoda de a reveni la un stadiu functional. Acesta este si motivul pentru care nu va sfatuiesc nici sa inlocuiti vechiul kernel cu cel compilat de voi pana cand nu aveti certitudinea ca functioneaza 100%.&lt;br /&gt;
&lt;br /&gt;
'''5.''' Editati fisierul de configurare al boot-loader-ului folosit de voi, pentru cei care folosesc LILO acesta va fi probabil /etc/lilo.conf, iar pentru cei care folosesc GRUB, va fi probabil /boot/grub/grub.conf sau menu.lst si adaugati in lista de intrari noua voastra &amp;quot;opera&amp;quot;. Pentru a afla despre cum interactionati cu boot-loader-ul cautati in sectiunile corespunzatoare din acest articol sau pe [http://www.google.ro Google]&lt;br /&gt;
&lt;br /&gt;
Nota: Daca ati compilat aproape totul ca modul (cum se intampla cu nucleele generice de obicei), atunci nu uitati sa creeati si un initrd cu comanda '''mkinitrd'''. Consultati pagina de manual pentru detalii.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====== linux 2.6 ======&lt;br /&gt;
&lt;br /&gt;
'''Cerinte 2.6'''&lt;br /&gt;
&lt;br /&gt;
Pentru a compila kernelul linux versiunea 2.4 trebuie sa aveti urmatoarele programe:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
*  Gnu C                  2.95.3                  # gcc --version&lt;br /&gt;
*  Gnu make               3.79.1                  # make --version&lt;br /&gt;
*  binutils               2.12                    # ld -v&lt;br /&gt;
*  util-linux             2.10o                   # fdformat --version&lt;br /&gt;
*  module-init-tools      0.9.10                  # depmod -V&lt;br /&gt;
*  e2fsprogs              1.29                    # tune2fs&lt;br /&gt;
*  jfsutils               1.1.3                   # fsck.jfs -V&lt;br /&gt;
*  reiserfsprogs          3.6.3                   # reiserfsck -V 2&amp;gt;&amp;amp;1|grep reiserfsprogs&lt;br /&gt;
*  xfsprogs               2.6.0                   # xfs_db -V&lt;br /&gt;
*  pcmciautils            004&lt;br /&gt;
*  pcmcia-cs              3.1.21                  # cardmgr -V&lt;br /&gt;
*  quota-tools            3.09                    # quota -V&lt;br /&gt;
*  PPP                    2.4.0                   # pppd --version&lt;br /&gt;
*  isdn4k-utils           3.1pre1                 # isdnctrl 2&amp;gt;&amp;amp;1|grep version&lt;br /&gt;
*  nfs-utils              1.0.5                   # showmount --version&lt;br /&gt;
*  procps                 3.2.0                   # ps --version&lt;br /&gt;
*  oprofile               0.9                     # oprofiled --version&lt;br /&gt;
*  udev                   058                     # udevinfo -V&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pentru detalii, consultati '''Documentation/Changes'''. Lista programelor de mai sus poate varia in functie de ce optiuni folositi.&lt;br /&gt;
&lt;br /&gt;
'''Compilarea efectiva (pasi)'''&lt;br /&gt;
&lt;br /&gt;
Pasii '''1.''' si '''2.''' sunt identici cu cei de mai sus.&lt;br /&gt;
&lt;br /&gt;
'''3.''' Dupa ce ati configurat ce era de configurat dati Save si apoi:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
make&lt;br /&gt;
make install&lt;br /&gt;
make modules_install&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pasii '''4.''' si '''5.''' sunt identici, la fel si nota despre '''mkinitrd'''.&lt;br /&gt;
&lt;br /&gt;
====== Optiuni de compilare si ce semnifica fiecare sectiune ======&lt;br /&gt;
&lt;br /&gt;
'''Asemanari si deosebiri intre 2.4 si 2.6'''&lt;br /&gt;
&lt;br /&gt;
'''[Va urma]'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Instalarea unei distributii (pe scurt) ===&lt;br /&gt;
&lt;br /&gt;
In linii mari instalarea unei distributiii se reduce la:&lt;br /&gt;
* pornirea programului de instalare la boot (de obicei de pe un CD)&lt;br /&gt;
* detectarea sumara a hardware-ului&lt;br /&gt;
* partitionarea harddisk-ului&lt;br /&gt;
* instalarea efectiva a sistemului&lt;br /&gt;
* ultimele retusuri; configurarea hardware-ului, instalarea boot-loader-ului.&lt;br /&gt;
&lt;br /&gt;
Cea mai importanta parte este partitionarea. Sa vedem ceva notiuni de baza:&lt;br /&gt;
* pe un hard-disk pot exista pana la 4 partitii primare si una extended ce poate contine oricate partitii logice.&lt;br /&gt;
* pentru a instala Linux-ul aveti nevoie de cel putin doua partitii de orice tip (primare, logice, una primara si cealalta logica):&lt;br /&gt;
** o partitie '''swap'''&lt;br /&gt;
*** va fi formatata folosind sistemul de fisiere '''swap'''&lt;br /&gt;
*** nu va avea punct de montare&lt;br /&gt;
*** dimensiunea recomandata: dublul cantitatii de memorie RAM instalata pe calculator, dar nu mai mult de 2 Gb&lt;br /&gt;
*** e mai mult un mit in ziua de azi (datorita hard-disk-urilor rapide), dar cu cat e mai aproape de primul sector al hard-disk-ului (centrul platanului), cu atat e mai bine&lt;br /&gt;
*** kernel-ul va folosi spatiul de pe aceasta partitie pentru a suplini memoria calculatorului&lt;br /&gt;
** o partitie '''root'''&lt;br /&gt;
*** s-a discutat deja despre sisteme de fisiere; '''ext3''' este cel mai folosit momentan&lt;br /&gt;
*** punctul de montare este: '''/'''&lt;br /&gt;
*** dimensiune recomandata: in functie de imprejurari; aproximativ 5Gb e destul in general; mai putin pentru un server care nu are interfata grafica instalata; 8 - 10Gb pentru o instalare completa&lt;br /&gt;
* alte partitii:&lt;br /&gt;
** pentru server-e este important ca /var si /tmp sa fie partitii separate; /var/log, /var/cache, etc, pot deveni foarte mari si e bine sa nu deranjeze alte directoare, iar /tmp este, in general, accesibil oricui - de aceea se monteaza separat cu optiunea ''noexec'' (un fel de ''chmod -x'' pentru fiecare fisier de acolo)&lt;br /&gt;
** pentru un desktop e chiar ideal ca /home sa fie partitie separata; va permite reinstalarea usoara a sistemului, chiar schimbarea distributiei (se alege formatarea partitiei ''root'' si lasarea intacta a celei ''home''); dupa pornire sistemul va arata ca inainte (cel putin din punctul de vedere al utilizatorului), datele importante si setarile fiind pastrate de fiecare utilizator in ''home''-ul sau&lt;br /&gt;
&lt;br /&gt;
Fiecare distributie are un model de dezvoltare. Acesta presupune existenta a cel putin doua ramuri (una cu pachete considerate stabile (in general cu versiuni mai vechi) si alta cu pachete noi, instabile) si a unor reguli care stabilesc clar drumul pe care trebuie sa il strabata un pachet pentru a ajunge din ramura instabila in cea stabila. In functie de cerere si de sectorul de utilizare pe care il vizeaza fiecare distributie in parte, modelul de dezvoltare se modifica in timp, imbunatatindu-se continuu.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Debian ====&lt;br /&gt;
&lt;br /&gt;
O distributie cu un iz ''geek''... Poate speria utilizatorul incepator, oferind doar un installer text. Nu este cazul: installer-ul acesta este probabil unul din cele mai intuitive dintre toate installer-urile text pe care le veti gasi in lumea Linux!&lt;br /&gt;
&lt;br /&gt;
Dar, inainte de instalare, sa vedem ce &amp;quot;fel&amp;quot; de Debian putem alege:&lt;br /&gt;
* ''stable'' - nume de cod Sarge! E o alegere perfecta pentru server-e sau pentru desktop-urile celor mai conservatori. Are pachete (deci, aplicatii) mai vechi, dar cu siguranta foarte bine testate si ''rock-solid''.&lt;br /&gt;
* ''unstable'' - nume de cod Sid! Daca azi apare un nou XMMS, de exemplu, mai mult ca sigur, maine acest nou XMMS e in Debian ''unstable''. E o alegere relativ buna pentru cei cu adrenalina, care vor ''bleeding edge''.&lt;br /&gt;
* ''testing'' - nume de cod Etch! Nu-i nici ''stable'' nici ''unstable''. Daca azi apare un nou XMMS, nu conteaza... dar e posibil ca maine, XMMS-ul din ''testing'' sa primeasca &amp;quot;aprobare&amp;quot; si sa fie mutat in ramura ''stable''. O alegere relativ buna pentru desktop.&lt;br /&gt;
&lt;br /&gt;
V-ati decis! Atunci, punctul de plecare este [http://www.debian.org/distrib/ Getting Debian]. Lasand la o parte instalarea de pe floppy (fara sa fim carcotasi... dar totusi, e depasita) si indiferent daca alegeti CD-ul minimal pentru netinstall sau CD-urile &amp;quot;complete&amp;quot;, instalarea decurge in principal la fel:&lt;br /&gt;
* dupa ce ati boot-at de pe CD, scrieti &amp;quot;linux26&amp;quot; la prompt, inainte de a continua. Astfel sistemul se va instala cu kernel 2.6&lt;br /&gt;
* urmeaza cateva intrebari de baza si detectia hardware-ului&lt;br /&gt;
* se seteaza reteaua&lt;br /&gt;
* la capitolul partitionare installer-ul ofera o interfata deosebit de prietenoasa pentru un mod text. Aveti grija la emoticonuri si fulgere... pe bune!&lt;br /&gt;
* urmeaza instalarea pachetelor&lt;br /&gt;
* se instaleaza si boot-loader-ul; GRUB e recomandat, pe MBR (Master Boot Record)&lt;br /&gt;
* se mai seteaza si ultimele detalii, sunt adaugati utilizatorii si e gata!&lt;br /&gt;
&lt;br /&gt;
Pentru detalii, consultati [http://www.debian.ro/ pagina oficiala a comunitatii Debian in Romania].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Fedora Core ====&lt;br /&gt;
&lt;br /&gt;
'''[FIXME]'''&lt;br /&gt;
&lt;br /&gt;
==== Gentoo ====&lt;br /&gt;
&lt;br /&gt;
'''[FIXME]'''&lt;br /&gt;
&lt;br /&gt;
==== Mandriva ====&lt;br /&gt;
&lt;br /&gt;
Recunoscuta ca distributia cu cel mai usor proces de instalare, ofera foarte multe variante si metode de instalare. &lt;br /&gt;
&lt;br /&gt;
La Debian am discutat despre ramuri... La Mandriva avem:&lt;br /&gt;
* ''Official'' - este distributia stabila. Mentine un echilibru intre pachete vechi si pachete noi, stabilitate versus noutate. Folosing medii/repository-uri neoficiale ce contin pachete ''Cooker'' &amp;quot;stabilizate&amp;quot;, puteti avea un ''Official'' cu versiuni noi la toate pachetele.&lt;br /&gt;
* ''Cooker'' - nume de cod pentru ramura ''unstable''. E ''bleeding-edge''-ul de la Mandriva. Bucataria frantuzeasca in care se amesteca azi XMMS-ul lansat ieri. E, in general, mai instabil decat Debian unstable, in mare parte datorita experimentelor care se fac pe pachetele care alcatuiesc Mandriva Control Center (se lucreaza foarte mult la adaugarea de noi module si la imbunatatirea detectiei hardware) si pe KDE (fiind o distributie KDE-centrica, cei de la Mandriva incearca sa stoarca mereu si ultima picatura de performanta pentru a-i mari viteza de rulare).&lt;br /&gt;
&lt;br /&gt;
Versiunea ''Free'' (cea fara programe care nu sunt compatibile GPL) poate fi descarcata pornind de pe [http://www.mandriva.com/en/downloads/mirrors pagina oficiala de download].&lt;br /&gt;
&lt;br /&gt;
Puteti alege dintre urmatoarele:&lt;br /&gt;
* 3 CD-uri care acopera o arie larga de aplicatii si driver-e, toate GPL&lt;br /&gt;
** primul CD este suficient pentru o instalare minimala cu ''urpmi'', ''Xorg'', ''KDE'', ''iceWM''&lt;br /&gt;
** si primul si al doilea CD sunt boot-abile si includ utilitare de recuperare (foarte util este utilitarul de (re)instalat boot-loader-ul) accesibile apasand F1 inainte de lansarea procesului de instalare&lt;br /&gt;
* DVD - insumeaza cele 3 CD-uri de mai sus&lt;br /&gt;
* One - Live CD instalabil&lt;br /&gt;
* Mini - CD cu un Mandriva minimal, pentru netinstall&lt;br /&gt;
&lt;br /&gt;
Daca ati ales sa instalati de pe CD-uri sau DVD, instalarea va decurge dupa cum urmeaza:&lt;br /&gt;
* Installer-ul standard are interfata grafica si se lanseaza automat. Pentru installer-ul text trebuie sa apasati F1 inainte ca installer-ul grafic sa porneasca.&lt;br /&gt;
* O particularitate Mandriva este nivelul de securitate pe care doriti sa il aveti in sistem. In general ''Standard'' e recomandat pentru desktop (permite utilizatorilor de rand sa scrie pe partitiile Windows FAT32, de exemplu). ''High'' sau ''Paranoid'' sunt pentru server-e in special. &lt;br /&gt;
* La capitolul partitionare, installer-ul e bine pregatit. DiskDrake ofera mai multe facilitati. Daca se alege varianta &amp;quot;Custom&amp;quot;, DiskDrake prezinta o interfata foarte prietenoasa in care oricine se poate descurca fara probleme.&lt;br /&gt;
* urpmi intra apoi in scena! Foarte discret, mascat mereu de interfete grafice, el intreaba de CD-uri, FTP-uri, HTTP-uri, etc... Intr-un cuvant: repository-uri/depozite de pachete. Apoi aseaza &amp;quot;pe masa&amp;quot; ce are la dispozitie. Pachetele pot fi selectate unul cate unul, sau pe categorii, iar urpmi va rezolva dependintele instantaneu si va face si propuneri.&lt;br /&gt;
* Instalarea incepe. Cei ce migreaza de pe Windows vor fi cu siguranta surprinsi de viteza de instalare a unei distributii binare!&lt;br /&gt;
* In mare instalarea e gata. Acum urmeaza setarea parolei de root si crearea utilizatorilor de rand. Apoi sunt facute ultimele retusuri (selectarea boot-loader-ului, configurarea interfetei grafice, conexiunea la net).&lt;br /&gt;
* La final installer-ul ofera alte cateva optiuni pe care in general le puteti ignora.&lt;br /&gt;
* Dupa reboot intra in scena DrakFirstTime. El se ocupa cu pre-configurarea desktop-ului si a update-urilor automate. Si cu asta, e cam gata!&lt;br /&gt;
&lt;br /&gt;
Pentru mai multe detalii, consultati documentatia de pe [http://www.mandrivausers.ro/ site-ul comunitatii Mandriva in Romania].&lt;br /&gt;
&lt;br /&gt;
==== Slackware ====&lt;br /&gt;
&lt;br /&gt;
'''[FIXME]'''&lt;br /&gt;
&lt;br /&gt;
==== openSUSE ====&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Popular&amp;quot; numita SUSE, de fapt noi ne vom ocupa aici de openSUSE. Ca si in testele de IQ, putem spune ca openSUSE este pentru Novell, ce este FedoraCore pentru RedHat.&lt;br /&gt;
&lt;br /&gt;
Developmentul e impartit in 3 ramuri:&lt;br /&gt;
* ''Released Version'' - versiunea stabila, cea recomandata pentru download. Corespunde ramurii ''stable'' de la Debian, ''Official'' de la Mandriva&lt;br /&gt;
* ''Development Version'' - versiune Alpha, Beta sau RC (Release Candidate). Corespunde ramurii testing de la ''testing'' de la Debian, respectiv ramurii ''Community'' de la Mandriva, cand e in stadiu de RC.&lt;br /&gt;
* ''Factory'' - versiunea instabila, cu modificari zilnice. Recomandat doar dezvoltatorilor. Corespunde ramurii ''unstable'' de la Debian, respectiv ''Cooker'' de la Mandriva&lt;br /&gt;
&lt;br /&gt;
Alegeti versiunea stabila de pe [http://en.opensuse.org/Download pagina de download] si sa-i dam drumul! Ca si mai sus, vom folosi CD-urile, deoarece sunt cel mai comun mediu de instalare. &lt;br /&gt;
&lt;br /&gt;
* Dupa bootarea de pe primul CD veti observa un meniu din care veti alege, cel mai probabil, instalarea standard.&lt;br /&gt;
* In timpul instalarii veti fi ''asistat'' de un panou in partea stanga care va explica ce se petrece in partea dreapta. Acest panou exista si in installer-ul de la RedHat/FedoraCore/CentOS.&lt;br /&gt;
* Tot ca la RedHat/FedoraCore/CentOS, installer-ul se ofera sa verifice CD-urile inainte de a incepe, pentru a nu incepe instalarea cu CD-uri &amp;quot;defecte&amp;quot;. Avand in vedere ca aceasta verificare mananca mult timp, daca ati verificat imaginile ISO cu md5sum dupa descarcare, puteti sari acest pas.&lt;br /&gt;
* Dupa ce se alege &amp;quot;New Installation&amp;quot; si se seteaza ceasul, installer-ul ne ofera un sumar al instalarii ce va urma.&lt;br /&gt;
* Este recomandat sa folositi butonul &amp;quot;Change&amp;quot; (sau cum se numeste in limba aleasa la instalare) de jos pentru a modifica anumite setari.&lt;br /&gt;
* Installer-ul va afisa cu rosu partitiile ce urmeaza sa fie modificate.&lt;br /&gt;
* Dupa inceperea instalarii propriu-zise, veti observa ca sistemul se va reboot-a dupa ce se instaleaza toate pachetele de pe primul CD. In meniul de la inceput, lasati sistemul sa boot-eze de pe harddisk.&lt;br /&gt;
* Dupa setarea parolei de root, update-urilor online, utilizatorilor, etc, puteti pasi direct in openSUSE Linux. Nu mai e nevoie de reboot din moment ce sistemul a fost reboot-at dupa primul CD.&lt;br /&gt;
&lt;br /&gt;
==== Ubuntu ====&lt;br /&gt;
&lt;br /&gt;
Fiind derivat din Debian, Ubuntu are in mare acelasi installer. Iar din moment ce instalarea este descrisa detaliat de [http://www.ubuntu.ro comunitatea Ubuntu Romania], va invitam sa cititi [http://wiki.ubuntu.ro/ManualUbuntuInstalareUbuntu acest articol].&lt;br /&gt;
&lt;br /&gt;
=== Imblanzirea unei distributii (&amp;quot;customize&amp;quot;, configurare, intretinere) ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Initializarea sistemului ====&lt;br /&gt;
&lt;br /&gt;
===== /etc =====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;/etc&amp;lt;/tt&amp;gt; este directorul magic in care se gasesc toate fisierele de configurare de sistem bine crescute.&lt;br /&gt;
&lt;br /&gt;
====== /etc/inittab ======&lt;br /&gt;
&lt;br /&gt;
Dupa incarcarea nucleului, verificarea device-urilor existente in sistem si incarcarea driverelor pentru acestea se trece la faza init, programul '''/sbin/init''' fiind lansat pentru a alege o actiune pentru pornire.&lt;br /&gt;
&lt;br /&gt;
Operatiile executate de programul '''init''' sunt controlate de fisierul '''/etc/inittab'''.&lt;br /&gt;
&lt;br /&gt;
Fisierul '''inittab''' contine intrari ce determina anumite actiuni pe care le poate face sistemul in momentul intrarii intr-un nivel de executie.&lt;br /&gt;
&lt;br /&gt;
Formatul fisierului este:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''id:runlevels:action:command'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
ex:	&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
1:2345:resppawn: /sbin/mingetty tty1&lt;br /&gt;
ca::ctrlaltdel: /sbin/shutdown -t3 -r now&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
unde:	&lt;br /&gt;
&lt;br /&gt;
'''id''' este un identificator unic(caractere alfanumerice)&lt;br /&gt;
&lt;br /&gt;
'''runlevels''' reprezinta lista nivelurilor de rulare(0,1,2,3,4,5,6)&lt;br /&gt;
&lt;br /&gt;
'''0''' procesele sunt terminate si se opreste sistemul &lt;br /&gt;
&lt;br /&gt;
'''1''' se intra in nivelul mono-utilizator(in acest nivel reteaua, interfata grafica si anumite sisteme de fisiere nu fie active); este folosit mai ales pentru recuperarea sistemului in cazuri de urgenta&lt;br /&gt;
&lt;br /&gt;
'''2''' se intra in nivelul multi-utilizator(doar unele procese nu sunt active - NIS NFS AT X)&lt;br /&gt;
&lt;br /&gt;
'''3''' se intra in nivelul multi-utilizator cu acces la serviciile de retea&lt;br /&gt;
&lt;br /&gt;
'''4''' se intra in nivelul personalizat - se recomanda folosirea acestui runlevel pentru cazul in care doriti o versiune proprie (si nestandard) a serviciilor care sunt oprite/pornite&lt;br /&gt;
&lt;br /&gt;
'''5''' se intra in nivelul multi-utilizator cu acces la serviciile de retea si serverul grafic X; folosit mai ales in medii Linux Desktop&lt;br /&gt;
&lt;br /&gt;
'''6''' se opresc toate procesele si se reincarca sistemul de operare&lt;br /&gt;
&lt;br /&gt;
'''action''' actiunea pe care o realizeaza programul init&lt;br /&gt;
&lt;br /&gt;
'''wait''' asteapta incheierea executiei comenzii inainte sa treaca la la alta intrare din inittab&lt;br /&gt;
&lt;br /&gt;
'''respawn''' se lanseaza o noua instanta a unui proces, daca acesta isi incheie executia&lt;br /&gt;
&lt;br /&gt;
'''powerfail''' se executa daca se primeste semnalul SIGPWR de la UPS&lt;br /&gt;
&lt;br /&gt;
'''initdefault''' nivelul de rulare in care se intra dupa terminarea actiunii boot si init (intre 0 si 6 sau literele s sau S care sunt alias-uri pentru runlevel 1); atentie! daca acest runlevel este 0 sau 6 s-ar putea sa nu reusiti sa porniti masina cu Linux!&lt;br /&gt;
&lt;br /&gt;
'''ctrlaltdel''' procesul se executa cand init primeste semnalul SIGINT-cand de la consola se apasa Ctrl+Alt+Del&lt;br /&gt;
&lt;br /&gt;
'''command''' comanda/programul ce se va executa&lt;br /&gt;
&lt;br /&gt;
====== /etc/fstab ======&lt;br /&gt;
&lt;br /&gt;
Fisierul acesta contine informatii despre care partitii doriti sa fie montate la boot, unde sa fie montate, si cu ce opriuni. Mai multe detalii in articolul [[Partiţii]], sectiunea [[Parti%C5%A3ii#Montare | Montare]]&lt;br /&gt;
&lt;br /&gt;
====== /etc/modules.conf ======&lt;br /&gt;
&lt;br /&gt;
Acesta este fisierul in care puteti activa si dezactiva modulele incarcate de kernel la boot. De acest proces se ocupa un scipt de initializare care verifica existenta acestui fisier si incarca ce se gaseste in el.&lt;br /&gt;
&lt;br /&gt;
====== /etc/rc.d ======&lt;br /&gt;
&lt;br /&gt;
Aici se gasesc toate scipturile de initializare/comanda corespunzatoare fiecarui runlevel. Ele veriaza in functie de stilul ales - System V sau BSD init style.&lt;br /&gt;
&lt;br /&gt;
'''SYS V init style'''&lt;br /&gt;
&lt;br /&gt;
Acesta este sistemul de a imparti pe diverse runlevel-uri cel mai ultilizat la ora actuala in lumea Linux. Modelul a fost gandit pentru o abstractizare cat mai buna,  insa modificarea lui nu este intuitiva de la bun inceput. De obicei, avem un &amp;lt;tt&amp;gt;/etc/init.d&amp;lt;/tt&amp;gt; in care se gasesc toate scripturile, iar apoi in '''/etc/rc0.d''' pana la '''/etc/rc6.d''' se vor gasi symlink-uri catre scripturile din '''/etc/init.d'''. Ele vor avea un '''S''' sau un '''K''' in fata, urmate de un numar semnificand ordinea in care sunt rulate si numele serviciului. (Exemplu: '''S20inetd''' este un symlink in '''/etc/rc2.d''' catre '''/etc/init.d/inetd''')&lt;br /&gt;
&lt;br /&gt;
'''BSD init style'''&lt;br /&gt;
&lt;br /&gt;
Cunoscut cu precadere datorita distributiei coordonate de Patrick Volkerding, Slackware. Astfel, vom avea in direct &amp;lt;tt&amp;gt;/etc/rc.d&amp;lt;/tt&amp;gt; toate scripturile necesare: '''rc.S''' care se ocupa cu toate functiile initializare ale sistemului, '''rc.K''' care se ocupa cu oprirea tuturor serviciilor pentru intrarea in runlevel-ul 1, '''rc.M''' care se ocupa cu initializarea tuturor functiilor corespunzatoare nivelelor multi-user, '''rc.4''' rulat pentru intrarea in runlevel-ul grafic (X), '''rc.6''' - script polimorf, are un symlink catre '''rc.0''', si se ocupa cu oprirea sau restartarea sistemului, depinzand cum a fost chemat. Apoi, mai sunt inca o suita de rc-uri (rc.httpd de exemplu) care se ocupa cu functiile diverselor servicii si evident sunt chemate de scripturile principale.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===== Setarea conexiunii la internet =====&lt;br /&gt;
&lt;br /&gt;
In cele ce urmeaza, vom da cateva indicatii referitoare la cum sa va activati/setati conexiunea la internet.&lt;br /&gt;
&lt;br /&gt;
====== Incarcarea modulului specific ======&lt;br /&gt;
&lt;br /&gt;
Dupa cum am spus si in alte sectiuni, corespondentele driverelor de pe Windows sunt modulele. Asadar, noi trebuie sa identificam ce placa de retea (sau alt dispozitiv specific) avem si sa incarcam modulul necesar pentru a face dispozitivul functional.&lt;br /&gt;
&lt;br /&gt;
Identificati in primul rand ce dispozitiv aveti si apoi cautati a vedeti ce modul se potriveste, urmand sa il incarcati cu comanda: &amp;lt;code&amp;gt;&lt;br /&gt;
modprobe [modul]&lt;br /&gt;
&amp;lt;/code&amp;gt; unde '''[modul]''' evident se va inlocui cu numele modulului specific.&lt;br /&gt;
&lt;br /&gt;
Alternativ, se poate utiliza si comanda '''insmod''' in loc de '''modprobe'''. Ca de obicei, dati '''man insmod''', respectiv '''man modprobe''', pentru detalii.&lt;br /&gt;
&lt;br /&gt;
De exemplu, eu am descoperit cu comanda '''lspci''' ca am o placa de retea cu chipset Realtek 8139, motiv pentru care am cautat pe [http://www.tldp.org/HOWTO/Ethernet-HOWTO.html Ethernet Howto] de la [http://tldp.org The Linux Documentation Project] si am descoperit ca ceea ce imi trebuia era modulul numit '''8139too'''. &lt;br /&gt;
&lt;br /&gt;
Evident, chipset-ul placii de retea in mod normal ar fi trebuit sa-l stiu de dinainte de la achizitie, pentru a fi sigur ca este suportat de sistemul meu de operare. Daca '''lspci''' nu va lamureste, atunci uitati-va pe documentul de la achizitie, cutia in care a venit placa respectiva, sau cel mai bine, direct pe placa.&lt;br /&gt;
&lt;br /&gt;
====== Setari: IP, netmask, broadcast, gateway, DNS ======&lt;br /&gt;
&lt;br /&gt;
Ca '''root''', dati comenzile:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
ifconfig eth0 &amp;lt;IP&amp;gt; netmask &amp;lt;netmask&amp;gt; broadcast &amp;lt;broadcast&amp;gt; up&lt;br /&gt;
&lt;br /&gt;
route add default gateway &amp;lt;IP-ul gateway-ului/router-ului&amp;gt;&lt;br /&gt;
echo &amp;quot;nameserver &amp;lt;IP server dns1&amp;gt;&amp;quot; &amp;gt; /etc/resolv.conf&lt;br /&gt;
echo &amp;quot;nameserver &amp;lt;IP server dns2&amp;gt;&amp;quot; &amp;gt;&amp;gt; /etc/resolv.conf&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Peste tot, perechea de semne &amp;quot;&amp;lt;&amp;quot; si &amp;quot;&amp;gt;&amp;quot; si tot ce scrie intre ele sa va inlocui cu datele necesare, adica adresa IP, netmask-ul, adresa broadcast (optionala deoarece va fi calculata automat de cele mai multe ori), adresa gateway-ului si bineinteles DNS-urile.&lt;br /&gt;
&lt;br /&gt;
Mai multe despre semnificatia acestor denumiri si multe alte detalii interesante gasiti [http://tldp.org/HOWTO/Networking-Overview-HOWTO.html aici].&lt;br /&gt;
&lt;br /&gt;
====== Un firewall micut care sa ne protejeze ======&lt;br /&gt;
&lt;br /&gt;
Iata un exemplu de firewall relativ intuitiv, cu cele mai de baza optiuni:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
case &amp;quot;$1&amp;quot; in&lt;br /&gt;
&lt;br /&gt;
    &amp;quot;start&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;Begin firewall script.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
echo 1 &amp;gt; /proc/sys/net/ipv4/conf/all/rp_filter #Impotriva ip spoofing&lt;br /&gt;
echo 1 &amp;gt; /proc/sys/net/ipv4/tcp_syncookies  #Impotriva atacurilor DoS&lt;br /&gt;
echo 0 &amp;gt; /proc/sys/net/ipv4/ip_forward&lt;br /&gt;
echo 0 &amp;gt; /proc/sys/net/ipv4/conf/all/proxy_arp&lt;br /&gt;
echo 1 &amp;gt; /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts&lt;br /&gt;
echo 1 &amp;gt; /proc/sys/net/ipv4/icmp_echo_ignore_all #Nu raspundem la ping&lt;br /&gt;
&lt;br /&gt;
echo 0 &amp;gt; /proc/sys/net/ipv4/conf/all/send_redirects&lt;br /&gt;
echo 0 &amp;gt; /proc/sys/net/ipv4/conf/all/accept_redirects&lt;br /&gt;
echo 0 &amp;gt; /proc/sys/net/ipv4/conf/all/accept_source_route&lt;br /&gt;
&lt;br /&gt;
echo 0 &amp;gt; /proc/sys/net/ipv4/tcp_timestamps&lt;br /&gt;
echo 0 &amp;gt; /proc/sys/net/ipv4/tcp_sack&lt;br /&gt;
echo 0 &amp;gt; /proc/sys/net/ipv4/tcp_window_scaling&lt;br /&gt;
echo 60 &amp;gt; /proc/sys/net/ipv4/tcp_fin_timeout&lt;br /&gt;
echo 1800 &amp;gt; /proc/sys/net/ipv4/tcp_keepalive_time&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
##########&lt;br /&gt;
# POLICY #&lt;br /&gt;
##########&lt;br /&gt;
&lt;br /&gt;
iptables -t filter -P INPUT DROP  # Nu intra nimic &amp;quot;by default&amp;quot; &lt;br /&gt;
iptables -t filter -P OUTPUT ACCEPT&lt;br /&gt;
iptables -t filter -P FORWARD DROP&lt;br /&gt;
&lt;br /&gt;
##########&lt;br /&gt;
# ACCEPT #&lt;br /&gt;
##########&lt;br /&gt;
&lt;br /&gt;
# Acceptam conexiunile initiate anterior de noi.&lt;br /&gt;
&lt;br /&gt;
iptables -A INPUT -i eth0 -m state --state ESTABLISHED,RELATED \&lt;br /&gt;
 -j ACCEPT&lt;br /&gt;
iptables -A INPUT -s 127.0.0.1 -d 127.0.0.1 -i lo -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
#################################################################&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;End firewall script.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
;;&lt;br /&gt;
&lt;br /&gt;
    &amp;quot;stop&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
    echo &amp;quot;Stopping firewall...&amp;quot;&lt;br /&gt;
&lt;br /&gt;
iptables -t filter -P INPUT DROP&lt;br /&gt;
iptables -t filter -P OUTPUT DROP&lt;br /&gt;
iptables -t filter -P FORWARD DROP&lt;br /&gt;
&lt;br /&gt;
iptables -t filter -F&lt;br /&gt;
&lt;br /&gt;
;;&lt;br /&gt;
&lt;br /&gt;
    &amp;quot;restart&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
    $0 stop&lt;br /&gt;
    sleep 2&lt;br /&gt;
    $0 start&lt;br /&gt;
&lt;br /&gt;
;;&lt;br /&gt;
&lt;br /&gt;
    &amp;quot;show&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
iptables -t filter -nvxL&lt;br /&gt;
&lt;br /&gt;
;;&lt;br /&gt;
&lt;br /&gt;
    *)&lt;br /&gt;
&lt;br /&gt;
    echo &amp;quot;Usage: firewall&lt;br /&gt;
         {start|stop|restart|show}&amp;quot; &amp;gt;&amp;amp;2&lt;br /&gt;
    exit 1&lt;br /&gt;
&lt;br /&gt;
;;&lt;br /&gt;
&lt;br /&gt;
esac&lt;br /&gt;
&lt;br /&gt;
exit 0&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Module (drivere) ====&lt;br /&gt;
&lt;br /&gt;
Mai tineti minte discutia din sectiunea [[Ce_este_GNU/Linux%3F_/_Cum_invat_Linux%3F#Ce_sunt_modulele.3F| Ce sunt modulele]]? &lt;br /&gt;
Pai acum este momentul sa punem in aplicare ce am discutat acolo, deoarece trebuie sa incarcam toate modulele necesare astfel incat dispozitivele din calculatorul nostru sa functioneze asa cum dorim. &lt;br /&gt;
&lt;br /&gt;
===== Placa grafica =====&lt;br /&gt;
&lt;br /&gt;
In cele ce urmeaza vom discuta despre placa grafica si modulele specifice care trebuie instalate astfel incat sa beneficiem de capacitatea ei la maxim.&lt;br /&gt;
&lt;br /&gt;
====== ATI ======&lt;br /&gt;
&lt;br /&gt;
Vedeti articolul [[ATi video (2.6)]]&lt;br /&gt;
&lt;br /&gt;
====== NVidia ======&lt;br /&gt;
&lt;br /&gt;
Intrati pe pagina oficiala NVIDIA, sectiunea Drivers aflata la adresa http://www.nvidia.com/content/drivers/drivers.asp, sau, cel mai bine pentru scopul nostru la adresa http://www.nvidia.com/object/unix.html.&lt;br /&gt;
&lt;br /&gt;
De aici intrati pe pagina care se potriveste cel mai bine cu arhitectura voastra, in cazul meu, Graphics Drivers - Linux IA32 - latest version. La ora actuala cea mai noua versiune este [http://www.nvidia.com/object/linux_display_ia32_1.0-8756.html 1.0-8756]. &lt;br /&gt;
&lt;br /&gt;
Alegerea mea se explica deoarece am un procesor pe 32 de biti si placa grafica NVIDIA Geforce 2 MX400 cu 64MB. Adaptati pentru hardware-ul vostru!&lt;br /&gt;
&lt;br /&gt;
Pe pagina respectiva veti observa niste link-uri care sunt foarte utile, nu le evitati sub nici o forma. Dintre ele, va recomand cu precadere fisierul [http://download.nvidia.com/XFree86/Linux-x86/1.0-8756/README/index.html README].&lt;br /&gt;
&lt;br /&gt;
Apoi, evident va luati de pe site ultima varianta a driver-ului, in cazul de fata,  [http://download.nvidia.com/XFree86/Linux-x86/1.0-8756/NVIDIA-Linux-x86-1.0-8756-pkg1.run NVIDIA-Linux-x86-1.0-8756-pkg1.run].&lt;br /&gt;
&lt;br /&gt;
Inainte de a continua, verificati daca aveti instalate sursele kernelului, si daca in '''/usr/src/linux/include/linux''' aveti fisierul '''version.h'''. In cazul in care nu il aveti inseamna ca trebuie sa il creati, recompiland kernelul. Daca nu aveti sursele kernelului, instalati-le.&lt;br /&gt;
&lt;br /&gt;
Pentru a crea fisierul version.h, in kernel-urile mai noi de 2.6 trebuie sa compilati macar o data sursele. Pentru a face acest lucru, consultati sectiunea din acest articol referitoare la [http://wiki.linux360.ro/wiki/Ce_este_GNU/Linux%3F_/_Cum_invat_Linux%3F#Recompilarea_kernelului recompilarea kernelului].&lt;br /&gt;
&lt;br /&gt;
De asemenea, asigurati-va ca nu aveti modulele referitoare la framebuffer-ul RIVA (rivafb) sau nvidia compilate deoarece vor intra in conflict cu driverul de la NVIDIA.&lt;br /&gt;
&lt;br /&gt;
Ca sa scapam mai repede de aceste doua mici probleme, exista metode... nu tocmai ortodoxe. Incepeti o compilare a kernelului si o opriti cu CTRL+C dupa ce vedeti ca a compilat version.h, il salvati in alta parte decat in '''/usr/src/linux/include/linux''', dati un make mrproper si apoi copiati la loc version.h de unde l-am luat.&lt;br /&gt;
&lt;br /&gt;
Iar pentru cele doua module care par sa intre in conflict, pur si simplu le mutati de acolo in alta parte, fara a mai necesita nici o recompilare. Din moment ce installer-ul de la NVIDIA nu le gaseste, nu va plange ca intra in conflict cu ele.&lt;br /&gt;
&lt;br /&gt;
Pasul urmator este sa opriti serverul grafic, '''X'''. Metoda fina ar fi sa incercati urmatoarele: '''Logoff''' din meniul de start sau '''xdm stop''', '''gdm stop''', respectiv '''kdm stop''' din consola. Daca nu va merg aceste solutii atunci va trebui sa il ucideti brutal. Dati '''ps uax''' sa-i aflati PID-ul, iar apoi, '''kill [PID]''', unde in loc de [PID], puneti numarul efectiv aflat cu ''ps''. Daca este si mai incapatanat, incercati cu '''kill -9 [PID]''', metoda cea mai agresiva de a-l opri de altfel. Dar daca stau bine sa ma gandesc si ati avut rabdarea sa cititi pana aici, cred ca cea mai buna alternativa este sa intrati in runlevel-ul 1, dand direct comanda '''init 1''' intr-o consola. Trebuie sa aveti drepturi de administrator pentru a face acest lucru, bineinteles.&lt;br /&gt;
&lt;br /&gt;
Daca ati oprit serverul grafic inseamna ca sunteti in fata unei console in acest moment. Mergeti in directorul in care ati salvat fisierul de la NVIDIA si dati comanda &amp;lt;code&amp;gt;sh NVIDIA-Linux-x86-1.0-8756-pkg1.run&amp;lt;/code&amp;gt; daca acesta este fisierul pe care l-ati luat. Daca ati luat alt fisier mai nou, evident, adaptati. Va vor mai fi puse cateva intrebari cu raspunsuri intuitive de catre installer. Daca raspundeti bine in curand el va va spune ca isi compileaza modulul.&lt;br /&gt;
&lt;br /&gt;
In final tot ce aveti de facut este sa modificati fisierul '''/etc/X11/xorg.conf''' corespunzator astfel incat sa foloseasca modulul nou compilat de la NVIDIA, in loc de cel standard. Inlocuiti linia &amp;lt;code&amp;gt;     Driver &amp;quot;nv&amp;quot;&lt;br /&gt;
(sau Driver &amp;quot;vesa&amp;quot;)&lt;br /&gt;
(sau Driver &amp;quot;fbdev&amp;quot;)&lt;br /&gt;
&amp;lt;/code&amp;gt; cu &amp;lt;code&amp;gt; Driver &amp;quot;nvidia&amp;quot; &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
De asemenea, stergeti urmatoarele linii:&amp;lt;code&amp;gt;&lt;br /&gt;
Load &amp;quot;dri&amp;quot;&lt;br /&gt;
Load &amp;quot;GLCore&amp;quot;&lt;br /&gt;
&amp;lt;/code&amp;gt; si adaugati-o pe urmatoarea, in cazul in care nu exista deja:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
Load &amp;quot;glx&amp;quot;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Acestea fiind zise, acum ar trebui doar sa reporniti serverul grafic '''X''' si va veti avea astfel parte de accelerare grafica maxima.&lt;br /&gt;
&lt;br /&gt;
Atentie, acesta este un ghid foarte intuitiv si cu toleranta destul de mica pentru alte probleme ce pot aparea. Daca aveti nedumeriri sau cautati optiuni, respectiv metode de a rezolva anumite probleme mai avansate, nu ezitati sa consultati fisierul [http://download.nvidia.com/XFree86/Linux-x86/1.0-8756/README/index.html README].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''[FIXME]''' Acesta este un o alta sectiune pe care o voi mai peria, completa si transforma in articol separat, urmand sa pun in locul ei aici un link catre noua locatie.&lt;br /&gt;
&lt;br /&gt;
====== VESA ======&lt;br /&gt;
&lt;br /&gt;
Daca nu aveti placi grafice de la ATI sau de la NVIDIA si nu ati gasit nici un driver de la producatorul original al chipsetului grafic, atunci nu disperati, mai exista sanse. VESA nu ofera capacitati de accelerare 3D si nici putere de procesare foarte mare, dar asigura o imagine de calitate prin functionalitatea ei de baza pentru aproape orice chipset grafic.&lt;br /&gt;
&lt;br /&gt;
'''[FIXME]''' De continuat.&lt;br /&gt;
&lt;br /&gt;
===== Placa audio =====&lt;br /&gt;
&lt;br /&gt;
'''[FIXME]''' De vorbit despre ALSA si OSS&lt;br /&gt;
&lt;br /&gt;
==== Configurarea serverului grafic X ====&lt;br /&gt;
&lt;br /&gt;
'''[FIXME]''' De dezvoltat&lt;br /&gt;
&lt;br /&gt;
Editati fisierul '''/etc/X11/xorg.conf''' &lt;br /&gt;
&lt;br /&gt;
===== Manageri desktop =====&lt;br /&gt;
&lt;br /&gt;
Un manager desktop are rolul de a oferi utilizatorului o interfata grafica pentru a interactiona cu calculatorul.&lt;br /&gt;
&lt;br /&gt;
Spre deosebire de Windows care are un singur manager desktop, cel implicit, in lumea Unix puteti alege din foarte multe managere desktop, dintre care cele mai importante sunt [[Ce_este_GNU/Linux%3F_/_Cum_invat_Linux%3F#KDE|KDE]] si [[Ce_este_GNU/Linux%3F_/_Cum_invat_Linux%3F#Gnome|Gnome]] (nu neaparat in aceasta ordine). A avea de unde alege intre mai multi manageri desktop insemna libertate si diversitate.&lt;br /&gt;
&lt;br /&gt;
Puteti sa va instalati oricati manageri desktop pe distributia dumneavoastra, putand alege pe cel cu care vreti sa porniti, de obicei, la ecranul de autentificare.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====== KDE ======&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[http://www.kde.org/ '''K''' '''D'''esktop '''E'''nvironment] este un manager desktop liber, scris in principal in [http://www.trolltech.com/products/qt Qt], fondat in 1996 de [http://www.kde.nl/people/ettrich.html Matthias Ettrich], student pe atunci.&lt;br /&gt;
&lt;br /&gt;
Functioneaza pe multe Unix-uri: Linux, BSD, AIX, Unixware, OpenServer, Solaris. A fost portat si pe Mac OS X si functioneaza si pe Windows cu [http://www.cygwin.com/ Cygwin].&lt;br /&gt;
&lt;br /&gt;
Pana in versiunile 2.x, mascota KDE a fost [http://www.kde.org/screenshots/images/large/kde2final_1.jpg Kandalf]. In versiunile curente (3.x), mascota KDE este [http://www.kde.org/stuff/clipart/konqi-klogo-official-400x500.png Konqi], insotit uneori de prietena lui, [http://www.kde.org/stuff/clipart/katie-221x223.jpg Katie].&lt;br /&gt;
&lt;br /&gt;
Proiectul [http://wiki.linux360.ro/wiki/Ce_este_GNU/Linux%3F_/_Cum_invat_Linux%3F#Gnome Gnome] a pornit ca o alternativa libera la KDE, deoarece pe atunci Qt-ul nu era liber. In 1998 Qt-ul a fost licentiat sub licenta [http://doc.trolltech.com/3.0/license.html QPL], ceva mai &amp;quot;libera&amp;quot;, dar necompatibila cu [http://www.gnu.org/licenses/gpl.html GPL-ul]. Fundatia [http://www.kde.org/whatiskde/kdefreeqtfoundation.php Free Qt] a fost creata tot in 1998 si garanteaza ca daca in viitor Qt-ul nu va mai fi liber, Trolltech nu va mai exista sau nu va mai scoate nici o versiune libera de Qt timp de 12 luni, Fundatia va putea licentia versiunea curenta de Qt sub licenta de tip [http://www.opensource.org/licenses/bsd-license.php BSD]. In 2000, versiunea de Unix a Qt-ului a fost licentiata GPL de catre Trolltech, iar incepand cu versiunea 4.0, Qt-ul are versiune libera si pentru Mac si Windows. De asemenea, acordul dintre Trolltech si Fundatia Free Qt a fost reinnoit in 2004.&lt;br /&gt;
&lt;br /&gt;
KDE-ul este dezvoltat de voluntari (ca de altfel majoritatea proiectelor Open Source), dar companii ca Novell, Trolltech sau Mandriva platesc angajati pentru a contribui la proiect.&lt;br /&gt;
&lt;br /&gt;
Puteti avea KDE pe aproape orice distributie. Pe unele dintre ele KDE-ul este chiar desktop-ul standard: Mandriva, Knoppix, Kubuntu, etc...&lt;br /&gt;
&lt;br /&gt;
'''Componente importante:'''&lt;br /&gt;
&lt;br /&gt;
* aRts - server de sunet&lt;br /&gt;
* DCOP - interfata de comunicare intre procese&lt;br /&gt;
* KHTML - engine HTML&lt;br /&gt;
* Konqueror - manager de fisiere, web browser&lt;br /&gt;
* KWin - managerul de ferestre&lt;br /&gt;
* KOffice - suita office&lt;br /&gt;
* kcontrol - panoul de configurare&lt;br /&gt;
* KDevelop - mediu integrat de dezvoltare&lt;br /&gt;
* Amarok - player audio&lt;br /&gt;
* K3b - aplicatie de scris CD-uri si DVD-uri&lt;br /&gt;
* Kate - editor text&lt;br /&gt;
* KMail - client mail&lt;br /&gt;
* Konsole - emulator de consola&lt;br /&gt;
* Kopete - client de mesagerie instanta, multi-protocol&lt;br /&gt;
* Ark, KArchiver - manageri de arhive&lt;br /&gt;
&lt;br /&gt;
Se observa o anumita conventie de notare: in unele denumiri, litera &amp;quot;C&amp;quot; (de la &amp;quot;cool&amp;quot; ?) a fost inlocuita cu &amp;quot;K&amp;quot; (Konsole), in altele litera &amp;quot;K&amp;quot; a fost adaugata fortat (KOffice), iar in altele &amp;quot;K&amp;quot; pare a fi natural (Kate, Amarok; initial Amarok se scria amaroK). Exista si exceptii. De exemplu gwenview (un program de vizualizat imagini).&lt;br /&gt;
&lt;br /&gt;
====== Gnome ======&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[http://www.gnome.org/ Gnome] este un manager desktop liber, scris in principal in [http://www.gtk.org/ GTK+], fondat in 1997 de [http://tirania.org/blog/ Miguel de Icaza] si [http://primates.ximian.com/~federico/ Federico Mena-Quintero]. Functioneaza pe majoritatea tipurilor de Unix fiind adoptat si de Sun Microsystems, inlocuind CDE in desktop-ul Java creat de cei de la Sun. Multe aplicatii Gnome ruleaza pe Windows cu [http://www.cygwin.com/ Cygwin].&lt;br /&gt;
&lt;br /&gt;
Proiectul a fost conceput ca o alternativa la [http://wiki.linux360.ro/wiki/Ce_este_GNU/Linux%3F_/_Cum_invat_Linux%3F#KDE KDE], in conditiile in care Qt-ul nu era inca liber. Momentan GTK+ este licentiat [http://www.gnu.org/copyleft/lesser.html LGPL].&lt;br /&gt;
&lt;br /&gt;
Initial era scris &amp;quot;GNOME&amp;quot; si insemna '''G'''NU '''N'''etwork '''O'''bject '''M'''odel '''E'''nvironment (acronim gandit de Elliot Lee). Acronimul este considerat depasit si probabil se va renunta la el definitiv, &amp;quot;GNOME&amp;quot; devenind astfel, &amp;quot;Gnome&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Proiectul e dezvoltat de voluntari si coordonat de [http://foundation.gnome.org/ Fundatia Gnome]. Dezvoltatorii, utilizatorii, fanii si curiosii se intalnesc anual undeva in Europa la [http://guadec.org/ GUADEC].&lt;br /&gt;
&lt;br /&gt;
Il puteti avea pe aproape orice distributie Linux, dar exista cateva pe care este desktop implicit: Fedora Core, Ubuntu, etc.&lt;br /&gt;
&lt;br /&gt;
'''Componente importante:'''&lt;br /&gt;
&lt;br /&gt;
* GConf — pentru stocarea setarilor&lt;br /&gt;
* GNOME VFS — sistem de fisiere virtual&lt;br /&gt;
* GNOME Keyring — pentru stocare criptata&lt;br /&gt;
* LibXML — librarie XML&lt;br /&gt;
* Ekiga — soft pentru comunicare VOIP&lt;br /&gt;
* Epiphany — web browser&lt;br /&gt;
* Evince — pentru vizualizare fisiere PDF si PostScript&lt;br /&gt;
* Eye of GNOME — pentru vizualizare imagini&lt;br /&gt;
* File Roller — manager de arhive&lt;br /&gt;
* GNOME Terminal — emulator de consola&lt;br /&gt;
* Evolution — client de mail, agenda&lt;br /&gt;
* gedit — editor text&lt;br /&gt;
* Metacity — manager de ferestre&lt;br /&gt;
* Nautilus — manager de fisiere&lt;br /&gt;
* Totem — player multimedia&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====== Xfce ======&lt;br /&gt;
&lt;br /&gt;
[http://www.xfce.org/ Xfce] este un manager desktop liber pentru sistemele de operare de tip Unix (Linux, Solaris, BSD), bazat pe [http://www.gtk.org/ GTK+], ca si [http://wiki.linux360.ro/wiki/Ce_este_GNU/Linux%3F_/_Cum_invat_Linux%3F#Gnome Gnome].&lt;br /&gt;
&lt;br /&gt;
Se remarca prin consum redus de resurse fiind numit in distributia [http://www.zenwalk.org/ ZenWalk], &amp;quot;Cholesterol Free Desktop Environment&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
Desi nu este nou in lumea Unix, el este mai putin cunoscut, poate din cauza ca a si fost rescris de mai multe ori de la 0. In ultimul timp popularitatea lui a crescut dovada ca exista din ce in ce mai multe distributii il au ca desktop implicit (Xubuntu, ZenWalk). De asemenea, in Mandriva 2007, rpm-urile cu Xfce vor fi incluse in mediul ''main'' (deci in iso-urile ce pot fi descarcate de pe mirror-urile oficiale), fiind mutate din mediul ''contrib''.&lt;br /&gt;
&lt;br /&gt;
Initial era scris '''XFce''' si insemna '''XF'''orms '''C'''ommon '''E'''nvironment. Cand XFce a fost rescris in GTK+, scrierea a devenit '''Xfce''', acronimul fiind desfiintat.&lt;br /&gt;
&lt;br /&gt;
'''Componente importante:'''&lt;br /&gt;
&lt;br /&gt;
* Thunar - manager de fisiere&lt;br /&gt;
* Terminal - emulator de consola&lt;br /&gt;
* xfwm4 - manager de ferestre&lt;br /&gt;
* orage - calendar&lt;br /&gt;
* xarchiver - manager de arhive&lt;br /&gt;
&lt;br /&gt;
====== Transparente si eye-candy ======&lt;br /&gt;
&lt;br /&gt;
=== Cuvant de incheiere ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ei bine, in linii mari cam astea au fost intrebarile si raspunsurile care mi-au venit mie in minte. Sper ca am mai facut un pic de lumina in universul Linux pestru cei care abia acum s-au intalnit cu el sau pentru cei care sunt inca pe la inceputuri.&lt;br /&gt;
&lt;br /&gt;
Acesta nu este un ghid complet si nici nu incearca sa trateze foarte in detaliu subiectele in discutie, subiectele mai voluminoase meritand locul lor separat. Motiv pentru care astept sugestii si contributii astfel incat sa-l corectam si sa il imbogatim impreuna acolo unde am uitat ceva important, poate o alta intrebare, poate in alt raspuns, si impreuna sa-l ajutam sa evolueze.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== DISCLAIMER ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Linux este marca înregistrata a lui Linus Torvalds. Microsoft Windows este marca înregistrata a Microsoft Corporation. Toate celelalte simboluri externe, referiri la alte produse software, respectiv marcile înregistrate din aceasta pagina, aparţin autorilor lor de drept.'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Bibliografie ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Partea cu make si Makefile e extrasa din cursul de Sisteme de Operare al domnilor profesori Boian Florian si Bufnea Darius, Universitatea Babes-Bolyai Cluj-Napoca&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Nota autorilor: Documentul este inca in lucru!'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:HowTo]]&lt;br /&gt;
[[Category:FAQ]]&lt;/div&gt;</summary>
		<author><name>Csdexter</name></author>	</entry>

	<entry>
		<id>http://wiki.linux360.ro/index.php?title=Curbe_Bezier&amp;diff=3116</id>
		<title>Curbe Bezier</title>
		<link rel="alternate" type="text/html" href="http://wiki.linux360.ro/index.php?title=Curbe_Bezier&amp;diff=3116"/>
				<updated>2006-11-13T12:53:17Z</updated>
		
		<summary type="html">&lt;p&gt;Csdexter: /* Interpolarea a trei puncte */ Enabled syntax highlighting&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;O curbă '''Bézier''' este o curbă parametrică inventată de inginerul francez [http://en.wikipedia.org/wiki/Pierre_B%C3%A9zier Pierre Bézier] şi făcută publică în anul 1962. Bézier a folosito în procesul de design al automobilelor.&lt;br /&gt;
Curbele Bézier sunt foarte importante şi pentru domeniul tehnologiei informaţiei, fiind folosite în construcţia fonturilor TrueType.&lt;br /&gt;
&lt;br /&gt;
[[Image:Bezier_0.jpg |thumb|300px| Fig. 1 - Graficul polinoamelor Bernstein de ordinul 0]] &lt;br /&gt;
[[Image:Bezier_1.jpg |thumb|300px| Fig. 2 - Graficul polinoamelor Bernstein de ordinul 1]] &lt;br /&gt;
&lt;br /&gt;
==Polinoame Bernstein==&lt;br /&gt;
Polinoamele '''Bernstein''' stau la baza curbelor '''Bézier'''. Acestea poartă numele matematicianului ucrainian [http://en.wikipedia.org/wiki/Sergei_Natanovich_Bernstein Sergei Natanovich Bernstein]. &lt;br /&gt;
&lt;br /&gt;
Pentru a determina polinoamele Bernstein de orice grad se porneşte de la polinomul Bernstein de ordinul zero.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;1 = 1&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Apoi se scade din ambele părţi o varibilă t şi obţinem:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;1-t = 1-t \iff (1-t) + t = 1&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ultima expresie este o combinaţie liniară a polinoamelor Bernstein de bază de ordinul unu. Polinoamele sunt: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\begin{cases} B_{0,1} = 1-t \\ B_{1,1} = t\end{cases}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Acum putem obţine polinoame Bernstein de orice grad prin ridicarea la putere a ultimei expresii:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;((1-t) + t)^{2} = 1 \iff (1-t)^{2} + 2t(1-t) + t^2 = 1&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Obţinem astfel polinoamele Berstein de bază de ordinul doi: &amp;lt;math&amp;gt;\begin{cases}B_{0,2} = (1-t)^2 \\ B_{1,2} = 2t(1-t) \\ B_{2,2} = t^2 \end{cases}&amp;lt;/math&amp;gt;&lt;br /&gt;
[[Image:Bezier_2.jpg |thumb|300px| Fig. 3 - Graficul polinoamelor Bernstein de ordinul 2]] &lt;br /&gt;
&lt;br /&gt;
Foarte interesante şi utile sunt graficele polinoamelor Bernstein, pentru înţelegerea modului în care &amp;quot;funcţionează&amp;quot; curbele Bézier.&lt;br /&gt;
&lt;br /&gt;
==Definirea unei curbe Bézier==&lt;br /&gt;
O curbă Bézier de ordinul n se defineşte, cu ajutorul a n puncte, după cum urmează:&lt;br /&gt;
&amp;lt;math&amp;gt;P(t) = \sum_{k=0}^N B_{k,N}*P_{k}&amp;lt;/math&amp;gt;, unde &amp;lt;math&amp;gt;B_{k,N}&amp;lt;/math&amp;gt; este polinomul Bernstein de indice k şi de ordin N. &amp;lt;math&amp;gt;P_{k}&amp;lt;/math&amp;gt; sunt puncte în plan, adică vectori cu două componente &amp;lt;math&amp;gt;(x_{k}, y_{k})&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
===Curba Bézier liniară===&lt;br /&gt;
Curba Bézier liniară este definită folosind polinoamele Bernstein de ordinul 1: &amp;lt;math&amp;gt;\begin{cases} B_{0,1} = 1-t \\ B_{1,1} = t\end{cases}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ecuaţia:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;P(t) = B_{0,1}P_{0} + B_{1,1}P_{1} \iff P(t) = (1-t)P_{0} + tP_{1}, t \in [0,1]&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Reprezentarea grafică este doar o linie şi din acest motiv această formă nu este aproape deloc folosită.&lt;br /&gt;
&lt;br /&gt;
[[Image:Bezier_3.jpg |thumb|300px| Fig. 4 - Graficul polinoamelor Bernstein de ordinul 3]]&lt;br /&gt;
&lt;br /&gt;
===Curba Bézier pătratică===&lt;br /&gt;
Curba Bézier pătratică sau de ordinul doi este o curbă dată prin trei puncte, punctul din mijloc fiind un punct de control care nu se află pe curbă, dar care influenţează aspectul acesteia.&lt;br /&gt;
&lt;br /&gt;
Aceasta foloseşte polinoamele Bernstein de ordinul doi:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\begin{cases}B_{0,2} = (1-t)^{2} \\ B_{1,2} = 2t(1-t) \\ B_{2,2} = t^2\end{cases}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ecuaţia curbei este:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;P(t) = B_{0,2}P_0 + B_{1,2}P_1 + B_{2,2}P_2 \iff P(t) = (1-t)^{2}P_0 + 2t(1-t)P_1 + t^{2}P_2&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
În anumite documente ecuaţiile sunt date în funcţie de puterile lui t, lucru care aduce confuzie, de aceea prezint în continuare şi această formă.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;P(t) = P_0 - P_0t^2 +2tP_1-2t^{2}P_1 + t^{2}P_2 \iff&lt;br /&gt;
P(t) = t^{2}(P_2 - P_0 - 2P_1) +t2P_1 + P_0&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Se fac notaţiile:&lt;br /&gt;
&amp;lt;math&amp;gt;\begin{cases}A = P_2 - 2P_1 - P_0 \\ B = 2P_1 \\ C = P_0\end{cases} \iff \begin{cases}A = P_2 - B - C \\ B = 2P_1 \\ C = P_0 \end{cases}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Şi ecuaţia capătă următoarea formă: &amp;lt;math&amp;gt;P(t) = At^2 + Bt + C&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ca şi proprietăţi ale curbei trebuie să subliniez următoarele:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;P(0) = P_0&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;P(1) = P_2&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Acest lucru poate fi uşor observat şi motivat cu ajutorul graficelor din figura 3.&lt;br /&gt;
===Curba Bézier cubică===&lt;br /&gt;
Curba Bézier cubică sau de ordinul trei este dată prin patru puncte &amp;lt;math&amp;gt;P_0, P_1, P_2&amp;lt;/math&amp;gt; şi &amp;lt;math&amp;gt;P_4&amp;lt;/math&amp;gt;. &amp;lt;math&amp;gt;P_1&amp;lt;/math&amp;gt; şi &amp;lt;math&amp;gt;P_2&amp;lt;/math&amp;gt; sunt puncte de control ale curbei.&lt;br /&gt;
&lt;br /&gt;
Pentru a putea scrie ecuaţia curbei scriem mai întâi ecuaţiile polinoamelor Bernstein de ordinul trei:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\begin{cases}B_{0,3} = (1-t)^{3} \\ B_{1,3} = 3t(1-t)^2 \\ B_{2,3} = 3t^2(1-t) \\ B_{3,3} = t^{3} \end{cases}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Ecuaţia curbei:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;P(t) = B_{0,3}P_0 + B_{1,3}P_1 + B_{2,3}P_2 + B_{3,3}P_3 \iff&lt;br /&gt;
P(t) = (1-t)^{3}P_0 + 3t(1-t)^2P_1 + 3t^2(1-t)P_2 + t^{3}P_3&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Scriem în funcţie de puterile lui t şi obţinem:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;P(t) = t^3(P_3 - 3P_2 + 3P_1 - P_0) + t^2(3P_2 - 6P_1 + 3P_0) + t(3P_1 - 3P_0) + P_0&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Se fac notaţiile:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\begin{cases}A = P_3 - 3P_2 + 3P_1 - P_0 \\ B = 3P_2 - 6P_1 + 3P_0 \\ C = 3P_1 - 3P_0 \end{cases} \iff \begin{cases}A = P_3 - P_0 - B - C \\ B = 3(P_2 - P_1) - C \\ C = 3(P_1 - P_0)\end{cases}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ecuaţia curbei în funcţie de A, B şi C: &amp;lt;math&amp;gt;P(t) = At^3 + Bt^2 + Ct+P_0&amp;lt;/math&amp;gt;&lt;br /&gt;
==Desenarea unei curbe Bézier==&lt;br /&gt;
&lt;br /&gt;
==Probleme de interpolare folosind curbe Bézier==&lt;br /&gt;
Interpolare: Interpolarea reprezintă o metodă matematică de a creea  date care lipsesc.&lt;br /&gt;
&lt;br /&gt;
Multe persoane nu se simt confortabil să deseneze curbe Bézier folosind acele controale care nu se află pe curbă. Este un pic nenatural, deşi în aplicaţii complexe ale curbelor acele controale devin mult mai importante şi uşurează foarte mult munca. De exemplu atunci când se doreşte alipirea a două curbe Bézier, dorind păstrarea continuităţii punctul de control al celei de-a doua curbe se modifică astfel încât să fie coliniar cu punctul de control al primei curbe şi punctul comun celor două curbe.&lt;br /&gt;
&lt;br /&gt;
În cazurile în care cunoaştem înainte puncte de pe curbă şi vrem să găsim ecuaţia curbei care trece prin acele puncte, trebuie să găsim o metodă de interpolare.&lt;br /&gt;
===Interpolarea a trei puncte===&lt;br /&gt;
Cunoaştem trei puncte &amp;lt;math&amp;gt;P_1&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;P_C&amp;lt;/math&amp;gt; şi &amp;lt;math&amp;gt;P_3&amp;lt;/math&amp;gt;. Dorim să găsim o curbă Bézier care să trecă prin aceste trei puncte. Este clar că &amp;lt;math&amp;gt;P_1&amp;lt;/math&amp;gt; şi &amp;lt;math&amp;gt;P_3&amp;lt;/math&amp;gt; sunt două dintre punctele care definesc curba Bézier şi mai trebuie să aflăm un punct asfel încât să definim o curbă Bézier de ordinul doi, dar care să treacă prin &amp;lt;math&amp;gt;P_C&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Pentru că &amp;lt;math&amp;gt;P_C&amp;lt;/math&amp;gt; se află pe curbă, înseamnă că satisface ecuaţia ei.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;P_C = P_1B_{0,2}(t_c) + P_2B_{1,2}(t_c) + P_3B_{2,2}(t_c)&amp;lt;/math&amp;gt;, unde &amp;lt;math&amp;gt;P_2&amp;lt;/math&amp;gt; este punctul pe care trebuie să-l aflăm. Ţinând cont că P_C este definit pentru un anumit &amp;lt;math&amp;gt;t_c&amp;lt;/math&amp;gt;, trebuie să-l aflăm pentru a putea afla &amp;lt;math&amp;gt;P_2&amp;lt;/math&amp;gt; folosind doar ecuaţia liniară scrisă anterior.&lt;br /&gt;
&lt;br /&gt;
O metodă bună de a aproxima t-ul cunoscând un punct de pe curbă este printr-un raport al distanţelor.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;t_c = \frac{dist(P_1,P_C)}{dist(P_1,P_C)+dist(P_C,P_3)}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Cunoscând &amp;lt;math&amp;gt;t_c&amp;lt;/math&amp;gt; putem scrie soluţia ecuaţiei:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;P_2 = \frac{P_C - P_1B_{0,2}(t_c) - P_3B_{2,2}(t_c)}{B_{1,2}(t_c)}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
În continuare codul sursă Java care implementează interpolarea a trei puncte folosind o curbă Bézier de ordinul doi.&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;java/&amp;gt;import java.awt.geom.Point2D;&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * &lt;br /&gt;
 * @author cristi&lt;br /&gt;
 */&lt;br /&gt;
public class BezierUtils {&lt;br /&gt;
	&lt;br /&gt;
	/**&lt;br /&gt;
	 * Functia ia ca parametri trei puncte de pe curba si intoarce un array de &lt;br /&gt;
	 * trei elemente care sunt punctele pentru definirea curbei Bezier de ordinul&lt;br /&gt;
	 * doi care trece prin cele trei puncte (Interpolare).&lt;br /&gt;
	 * @param x0 Primul punct de pe curba&lt;br /&gt;
	 * @param x3 Al doilea punct de pe curba&lt;br /&gt;
	 * @param x2 Al treilea punct de pe curba&lt;br /&gt;
	 * @return Point2D.Float[]&lt;br /&gt;
	 */&lt;br /&gt;
	public static Point2D.Float[] getQuadInterpPoints(Point2D.Float x0, Point2D.Float x3, Point2D.Float x2) {&lt;br /&gt;
		Point2D.Float[] result = new Point2D.Float[3];&lt;br /&gt;
		result[0] = new Point2D.Float(x0.x, x0.y);&lt;br /&gt;
		result[2] = new Point2D.Float(x2.x, x2.y);&lt;br /&gt;
		result[1] = new Point2D.Float();&lt;br /&gt;
		double t = x0.distance(x3) / (x0.distance(x3) + x3.distance(x2));&lt;br /&gt;
		result[1].x = ((float)((x3.getX() - fq2(t)*x2.getX() - fq0(t)*x0.getX())/fq1(t)));&lt;br /&gt;
		result[1].y = ((float)((x3.getY() - fq2(t)*x2.getY() - fq0(t)*x0.getY())/fq1(t)));&lt;br /&gt;
		return result;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	/**&lt;br /&gt;
	 * Polinomul Bernstein de indice 0 si ordin 2&lt;br /&gt;
	 * @param t&lt;br /&gt;
	 * @return&lt;br /&gt;
	 * 	returneaza valoarea polinomului Bernstein B_{k,n}(t) in t, k - indice, n - ordin&lt;br /&gt;
	 */&lt;br /&gt;
	private static double fq0(double t) {&lt;br /&gt;
		return Math.pow((1-t), 2);&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	/**&lt;br /&gt;
	 * Polinomul Bernstein de indice 1 si ordin 2&lt;br /&gt;
	 * @param t&lt;br /&gt;
	 * @return&lt;br /&gt;
	 * 	returneaza valoarea polinomului Bernstein B_{k,n}(t) in t, k - indice, n - ordin&lt;br /&gt;
	 */&lt;br /&gt;
	private static double fq1(double t) {&lt;br /&gt;
		return 2*t*(1-t);&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	/**&lt;br /&gt;
	 * Polinomul Bernstein de indice 2 si ordin 2&lt;br /&gt;
	 * @param t&lt;br /&gt;
	 * @return&lt;br /&gt;
	 * 	returneaza valoarea polinomului Bernstein B_{k,n}(t) in t, k - indice, n - ordin&lt;br /&gt;
	 */&lt;br /&gt;
	private static double fq2(double t) {&lt;br /&gt;
		return Math.pow(t, 2);&lt;br /&gt;
	}	&lt;br /&gt;
	&lt;br /&gt;
	public static void main(String[] args) {&lt;br /&gt;
		Point2D.Float P1 = new Point2D.Float(10,10);&lt;br /&gt;
		Point2D.Float PC = new Point2D.Float(30,50);&lt;br /&gt;
		Point2D.Float P3 = new Point2D.Float(15,20);&lt;br /&gt;
		&lt;br /&gt;
		Point2D.Float bezPoints[] = getQuadInterpPoints(P1, PC, P3);&lt;br /&gt;
		System.out.println(&amp;quot;Curba Bezier este definita de:&amp;quot;);&lt;br /&gt;
		System.out.println(bezPoints[0]);&lt;br /&gt;
		System.out.println(bezPoints[1]);&lt;br /&gt;
		System.out.println(bezPoints[2]);&lt;br /&gt;
	}&lt;br /&gt;
}&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Interpolarea a patru puncte===&lt;br /&gt;
&lt;br /&gt;
[[Category:Pending]]&lt;/div&gt;</summary>
		<author><name>Csdexter</name></author>	</entry>

	<entry>
		<id>http://wiki.linux360.ro/index.php?title=Main_Page&amp;diff=3107</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="http://wiki.linux360.ro/index.php?title=Main_Page&amp;diff=3107"/>
				<updated>2006-11-09T11:53:44Z</updated>
		
		<summary type="html">&lt;p&gt;Csdexter: Added new article to list&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* A început migrarea tutorialelor şi ghidurilor (HowTo) din forum în Wiki -- nu ezitaţi să daţi o mână de ajutor ;-) &lt;br /&gt;
* Vă rugăm, folosiţi '''doar''' [[linux360:Sandbox|caietul de ciorne]] pentru încercări şi probe.&lt;br /&gt;
* Pentru acces de editare, vă rugăm contactaţi [mailto:wiki-admin@linux360.ro administraţia].&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
* '''Ultimele 10 [[:Category:HowTo|ghiduri]] actualizate:'''&lt;br /&gt;
** [[Instalare Gentoo - Sfaturi]] ([[:Category:FAQ|Întrebări puse frecvent]])&lt;br /&gt;
** [[Detecţie componente hardware din consolă]] ([[:Category:FAQ|Întrebări puse frecvent]]/[[:Category:Tips'n'Tricks|ponturi]])&lt;br /&gt;
** [[Dezlipire sticker Microsoft Windows|Cum să scăpăm de abţibildul de la Microsoft?]] ([[:Category:FAQ|Întrebări puse frecvent]]/[[:Category:Tips'n'Tricks|ponturi]])&lt;br /&gt;
** [[Ce este GNU/Linux? / Cum invat Linux?]] ([[:Category:FAQ|Întrebări puse frecvent]])&lt;br /&gt;
** [[Comunica prin lpt|Controlul motoarelor pas cu pas prin portul paralel]] ([[:Category:Programming|programare]])&lt;br /&gt;
** [[Cum dau net mai departe|Redistribuirea/Partajarea conexiunii la Internet]]  ([[:Category:Networking|retea]]/[[:Category:Routing|rutare]])&lt;br /&gt;
** [[Yum în România|&amp;lt;tt&amp;gt;yum&amp;lt;/tt&amp;gt; în România]] ([[:Category:Tips'n'Tricks|ponturi]])&lt;br /&gt;
** [[Postfix tls mysql dovecot|Postfix cu TLS, autentificare din MySQL şi acces prin Dovecot(broken)]] ([[:Category:Networking|reţea]])&lt;br /&gt;
** [[Download si instalare E17 din CVS|Instalare automatizată E17 CVS]] ([[:Category:GEs|medii grafice]])&lt;br /&gt;
** [[MU Online sub wine|MU Online rulat cu Wine]] ([[:Category:VMs|maşini virtuale]]/[[:Category:Games|jocuri]])&lt;br /&gt;
&lt;br /&gt;
* '''Ultimele 10 [[:Category:Tutorial|tutoriale]] actualizate''':&lt;br /&gt;
** [[Setari vim existentiale]] ([[:Category:Tips'n'Tricks|ponturi]])&lt;br /&gt;
** [[Script pentru restabilirea conexiunii ADSL]] ([[:Category:Networking|reţea]])&lt;br /&gt;
** [[Configurare Gaim pentru a afisa in status melodia curenta|Configurarea GAIM  pentru a afişa în status melodia curentă]] ([[:Category:Multimedia|multimedia]]/[[:Category:Office|programe de birotică]])&lt;br /&gt;
** [[Introducere in Gtk-sharp|Introducere în Gtk#]] ([[:Category:Programming|programare]])&lt;br /&gt;
** [[Schimbarea setarilor GTK 2|Schimbarea setărilor Gtk+ 2]] ([[:Category:GEs|medii grafice]]/[[:Category:Tips'n'Tricks|ponturi]])&lt;br /&gt;
** [[Sistem de depanare a aplicatiilor in limbajul C-plus-plus|Sistem de depanare a aplicaţiilor în limbajul C++]] ([[:Category:Programming|programare]])&lt;br /&gt;
** [[Iptables romana|Introducere în &amp;lt;tt&amp;gt;iptables&amp;lt;/tt&amp;gt;]] ([[:Category:Networking|reţea]]/[[:Category:Firewall|filtrare trafic]])&lt;br /&gt;
** [[Supra%C3%AEnc%C4%83rcarea operatorilor %C3%AEn limbajul C-plus-plus|Supraîncărcarea operatorilor în ANSI C++]] ([[:Category:Programming|programare]])&lt;br /&gt;
&lt;br /&gt;
* '''Ultimele 10 [[:Category:Collection|colecţii]] actualizate''':&lt;br /&gt;
** [[Scripturi BASH|Scripturi Bash utile]] ([[:Category:Programming|programare]])&lt;br /&gt;
** [[Salutare lume!|Salutare, lume!]] ([[:Category:Programming|programare]])&lt;br /&gt;
&lt;br /&gt;
* '''Ultimele 10 [[:Category:Presentation|prezentări]] actualizate''':&lt;br /&gt;
** [[Libipq by example|&amp;lt;tt&amp;gt;libipq&amp;lt;/tt&amp;gt; în exemple]] ([[:Cateogory:Networking|reţea]]/[[:Category:Programming|programare]])&lt;br /&gt;
** [[KDSFlash]] ([[:Category:Graphics|grafică]]/[[:Category:Animation|animaţie]]/[[:Category:Programming|programare]])&lt;br /&gt;
&lt;br /&gt;
* '''Articole [[:Category:Pending|în curs de scriere]]''':&lt;br /&gt;
** [[Echivalentele Linux ale programelor Windows]] ([[User:Raver|raver]])&lt;br /&gt;
** [[Partiţii]] ([[User:Sorin25|sorin25]])&lt;br /&gt;
** [[Autorizarea accesului la resurse web în Apache]] ([[User:Sorin25|sorin25]])&lt;br /&gt;
** [[ACIS|Administrare, configurare şi intreţinere servere]] ([[User:Csdexter|@Dexter]])&lt;br /&gt;
** [[Curbe Bezier|Curbe Bézier]] ([[User:Cbidea|Phaser]])&lt;/div&gt;</summary>
		<author><name>Csdexter</name></author>	</entry>

	<entry>
		<id>http://wiki.linux360.ro/index.php?title=Main_Page&amp;diff=3102</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="http://wiki.linux360.ro/index.php?title=Main_Page&amp;diff=3102"/>
				<updated>2006-11-08T14:23:41Z</updated>
		
		<summary type="html">&lt;p&gt;Csdexter: Trimmed list to first 10 entries&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* A început migrarea tutorialelor şi ghidurilor (HowTo) din forum în Wiki -- nu ezitaţi să daţi o mână de ajutor ;-) &lt;br /&gt;
* Vă rugăm, folosiţi '''doar''' [[linux360:Sandbox|caietul de ciorne]] pentru încercări şi probe.&lt;br /&gt;
* Pentru acces de editare, vă rugăm contactaţi [mailto:wiki-admin@linux360.ro administraţia].&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
* '''Ultimele 10 [[:Category:HowTo|ghiduri]] actualizate:'''&lt;br /&gt;
** [[Detecţie componente hardware din consolă]] ([[:Category:FAQ|Întrebări puse frecvent]]/[[:Category:Tips'n'Tricks|ponturi]])&lt;br /&gt;
** [[Dezlipire sticker Microsoft Windows|Cum să scăpăm de abţibildul de la Microsoft?]] ([[:Category:FAQ|Întrebări puse frecvent]]/[[:Category:Tips'n'Tricks|ponturi]])&lt;br /&gt;
** [[Ce este GNU/Linux? / Cum invat Linux?]] ([[:Category:FAQ|Întrebări puse frecvent]])&lt;br /&gt;
** [[Comunica prin lpt|Controlul motoarelor pas cu pas prin portul paralel]] ([[:Category:Programming|programare]])&lt;br /&gt;
** [[Cum dau net mai departe|Redistribuirea/Partajarea conexiunii la Internet]]  ([[:Category:Networking|retea]]/[[:Category:Routing|rutare]])&lt;br /&gt;
** [[Yum în România|&amp;lt;tt&amp;gt;yum&amp;lt;/tt&amp;gt; în România]] ([[:Category:Tips'n'Tricks|ponturi]])&lt;br /&gt;
** [[Postfix tls mysql dovecot|Postfix cu TLS, autentificare din MySQL şi acces prin Dovecot(broken)]] ([[:Category:Networking|reţea]])&lt;br /&gt;
** [[Download si instalare E17 din CVS|Instalare automatizată E17 CVS]] ([[:Category:GEs|medii grafice]])&lt;br /&gt;
** [[MU Online sub wine|MU Online rulat cu Wine]] ([[:Category:VMs|maşini virtuale]]/[[:Category:Games|jocuri]])&lt;br /&gt;
** [[Quagga on Linux|Quagga]] ([[:Category:Networking|reţea]]/[[:Category:Routing|rutare]])&lt;br /&gt;
&lt;br /&gt;
* '''Ultimele 10 [[:Category:Tutorial|tutoriale]] actualizate''':&lt;br /&gt;
** [[Setari vim existentiale]] ([[:Category:Tips'n'Tricks|ponturi]])&lt;br /&gt;
** [[Script pentru restabilirea conexiunii ADSL]] ([[:Category:Networking|reţea]])&lt;br /&gt;
** [[Configurare Gaim pentru a afisa in status melodia curenta|Configurarea GAIM  pentru a afişa în status melodia curentă]] ([[:Category:Multimedia|multimedia]]/[[:Category:Office|programe de birotică]])&lt;br /&gt;
** [[Introducere in Gtk-sharp|Introducere în Gtk#]] ([[:Category:Programming|programare]])&lt;br /&gt;
** [[Schimbarea setarilor GTK 2|Schimbarea setărilor Gtk+ 2]] ([[:Category:GEs|medii grafice]]/[[:Category:Tips'n'Tricks|ponturi]])&lt;br /&gt;
** [[Sistem de depanare a aplicatiilor in limbajul C-plus-plus|Sistem de depanare a aplicaţiilor în limbajul C++]] ([[:Category:Programming|programare]])&lt;br /&gt;
** [[Iptables romana|Introducere în &amp;lt;tt&amp;gt;iptables&amp;lt;/tt&amp;gt;]] ([[:Category:Networking|reţea]]/[[:Category:Firewall|filtrare trafic]])&lt;br /&gt;
** [[Supra%C3%AEnc%C4%83rcarea operatorilor %C3%AEn limbajul C-plus-plus|Supraîncărcarea operatorilor în ANSI C++]] ([[:Category:Programming|programare]])&lt;br /&gt;
&lt;br /&gt;
* '''Ultimele 10 [[:Category:Collection|colecţii]] actualizate''':&lt;br /&gt;
** [[Scripturi BASH|Scripturi Bash utile]] ([[:Category:Programming|programare]])&lt;br /&gt;
** [[Salutare lume!|Salutare, lume!]] ([[:Category:Programming|programare]])&lt;br /&gt;
&lt;br /&gt;
* '''Ultimele 10 [[:Category:Presentation|prezentări]] actualizate''':&lt;br /&gt;
** [[Libipq by example|&amp;lt;tt&amp;gt;libipq&amp;lt;/tt&amp;gt; în exemple]] ([[:Cateogory:Networking|reţea]]/[[:Category:Programming|programare]])&lt;br /&gt;
** [[KDSFlash]] ([[:Category:Graphics|grafică]]/[[:Category:Animation|animaţie]]/[[:Category:Programming|programare]])&lt;br /&gt;
&lt;br /&gt;
* '''Articole [[:Category:Pending|în curs de scriere]]''':&lt;br /&gt;
** [[Instalare Gentoo - Sfaturi]] ([[User:Ingerul|Ingerul]])&lt;br /&gt;
** [[Echivalentele Linux ale programelor Windows]] ([[User:Raver|raver]])&lt;br /&gt;
** [[Partiţii]] ([[User:Sorin25|sorin25]])&lt;br /&gt;
** [[Autorizarea accesului la resurse web în Apache]] ([[User:Sorin25|sorin25]])&lt;br /&gt;
** [[ACIS|Administrare, configurare şi intreţinere servere]] ([[User:Csdexter|@Dexter]])&lt;br /&gt;
** [[Curbe Bezier|Curbe Bézier]] ([[User:Cbidea|Phaser]])&lt;/div&gt;</summary>
		<author><name>Csdexter</name></author>	</entry>

	<entry>
		<id>http://wiki.linux360.ro/index.php?title=Detec%C3%85%C2%A3ie_componente_hardware_din_consol%C3%84%C6%92&amp;diff=3101</id>
		<title>DetecÅ£ie componente hardware din consolÄƒ</title>
		<link rel="alternate" type="text/html" href="http://wiki.linux360.ro/index.php?title=Detec%C3%85%C2%A3ie_componente_hardware_din_consol%C3%84%C6%92&amp;diff=3101"/>
				<updated>2006-11-08T14:22:54Z</updated>
		
		<summary type="html">&lt;p&gt;Csdexter: /* Monitor */ Fixed wiki syntax (extra colon)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;V-aţi pus vreodată problema asta?&lt;br /&gt;
&lt;br /&gt;
Gândiţi-vă că vreţi, de exemplu, să vă luaţi un nou calculator şi să îl testaţi puţin pe Linux şi/sau să vedeţi dacă ce se află în carcasă corespunde cu ce scrie pe factură.&lt;br /&gt;
&lt;br /&gt;
Evident pentru asta veţi avea nevoie de o distribuţie care rulează de pe un Live CD. Acest document vă va ajuta să faceţi toată treaba din consolă pentru ca detecţia să fie independentă de distribuţia aleasă. De asemenea, unele din comenzile de mai jos merg şi pe BSD sau Solaris, deci avem de-a face şi cu o independenţă faţă de sistemul de operare Unix ales.&lt;br /&gt;
&lt;br /&gt;
'''Observaţie:''' Majoritatea comenzilor de mai jos necesită drepturi de root.&lt;br /&gt;
&lt;br /&gt;
=== Procesor ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;sh/&amp;gt;cat /proc/cpuinfo&amp;lt;/code&amp;gt;&lt;br /&gt;
Atentie insa la faptul ca, pe masinile care prezinta o forma de gestiune a energiei consumate (Intel SpeedStep, AMD PowerNow! etc.) suportata de kernel-ul cu care ati pornit masina, in fisierul amintit ar putea aparea o valoare mai mica a frecventei la care este tactat procesorul decat cea din specificatiile din factura -- dupa cum masina este in stres sau repaos in momentul examinarii fisierului.&lt;br /&gt;
&lt;br /&gt;
=== Discuri dure ===&lt;br /&gt;
&lt;br /&gt;
Pentru a obtine o lista a dispozitivelor de acest tip din calculator, vizible de kernel-ul curent:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;sh/&amp;gt;# Discuri ATA si dispozitive SCSI/USB&lt;br /&gt;
dmesg | egrep '(^hd[a-z]:|SCSI device sd[a-z]:)'&lt;br /&gt;
# Detalii discuri SCSI/SATA/USB&lt;br /&gt;
dmesg | grep -B1 -A2 '  Type:[ ]\+Direct-Access'&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Atentie, la interogarea de mai sus (si in functie de versiunea de kernel folosita) ar putea fi raportate si alte dispozitive cu comportament de disc conectate pe magistrala SCSI/USB cum ar fi: unitati optice (CD-ROM, CD-RW, DVD-RAM, DVD-RW, MO, UDO), unitati de disc semi-flexibil (JAZ, ZIP, LS-120), memorii EEPROM de mare viteza (Flash), volume prezentate via SAN etc.&lt;br /&gt;
&lt;br /&gt;
Pentru a obtine o lista a partiilor de pe un disc dur:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;sh/&amp;gt;fdisk -l $dispozitiv&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Detalii despre starea discurilor IDE si SCSI (native) care suporta S.M.A.R.T.:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;sh/&amp;gt;smartctl -a $dispozitiv&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Detalii despre discuri IDE/SCSI/USB:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;sh/&amp;gt;hdparm -i $dispozitiv&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Teste de viteza:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;sh/&amp;gt;hdparm -tT $dispozitiv&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Unde &amp;lt;tt&amp;gt;$dispozitiv&amp;lt;/tt&amp;gt; ia o valoare de forma &amp;lt;tt&amp;gt;/dev/([sh]d[a-z])&amp;lt;/tt&amp;gt;, unde $1 este una din denumirile obtinute la interogarile din deschiderea sectiunii.&lt;br /&gt;
In mod particular, &amp;lt;tt&amp;gt;$dispozitiv&amp;lt;/tt&amp;gt; poate lua valori si de alte forme atunci cand in masina expertizata sunt instalate controlere dedicate, e.g. &amp;lt;tt&amp;gt;/dev/ida/c[0-3]d[0-14]&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;/dev/i2o/c[0-3]t[0-3]d[0-1]&amp;lt;/tt&amp;gt; etc.&lt;br /&gt;
&lt;br /&gt;
=== Dispozitive USB conectate ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;sh/&amp;gt;lsusb&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Atentie, aceasta comanda (ca si sora ei pentru magistrala sistem, &amp;lt;tt&amp;gt;lspci&amp;lt;/tt&amp;gt;) raporteaza doar topologia si componenta din acest moment a magistralei USB si a dispozitivelor atasate -- ea nu da informatii despre gradul de suport sau compatibilitate a dispozitivelor enumerate cu masina si kernel-ul in cauza.&lt;br /&gt;
&lt;br /&gt;
=== Dispozitive PCI, inclusiv AGP, PCI-X, PCI-Express si PCMCIA CardBus ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;sh/&amp;gt;lspci&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Atentie, la fel cum s-a precizat si mai sus, faptul ca un anume dispozitiv apare enumerat in aceasta lista nu inseamna automat ca este si suportat de masina si kernel-ul curent.&lt;br /&gt;
&lt;br /&gt;
=== Dispozitive optice capabile de inscriptionare de tipul CD-RW, DVD-RAM, DVD-RW ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;sh/&amp;gt;cdrecord -scanbus&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Unitati de disc flexibil clasice, direct atasate ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;sh/&amp;gt;dmesg | egrep '(^[Ff]loppy|^FDC)'&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Memorie RAM ===&lt;br /&gt;
&lt;br /&gt;
Cantitate totală, în megaocteţi:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;sh/&amp;gt;dmesg | grep ^Memory:&lt;br /&gt;
free -m&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Detalii:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;sh/&amp;gt;decode-dimms.pl&lt;br /&gt;
dmidecode&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Monitor ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;sh/&amp;gt;monitor-probe -v nvidia&amp;lt;/code&amp;gt;&lt;br /&gt;
''nvidia'' poate fi înlocuit de driver-ul folosit de voi&lt;br /&gt;
&lt;br /&gt;
[[Category:HowTo]]&lt;br /&gt;
[[Category:FAQ]]&lt;br /&gt;
[[Category:Tips'n'Tricks]]&lt;/div&gt;</summary>
		<author><name>Csdexter</name></author>	</entry>

	<entry>
		<id>http://wiki.linux360.ro/index.php?title=Detec%C3%85%C2%A3ie_componente_hardware_din_consol%C3%84%C6%92&amp;diff=3100</id>
		<title>DetecÅ£ie componente hardware din consolÄƒ</title>
		<link rel="alternate" type="text/html" href="http://wiki.linux360.ro/index.php?title=Detec%C3%85%C2%A3ie_componente_hardware_din_consol%C3%84%C6%92&amp;diff=3100"/>
				<updated>2006-11-08T14:22:29Z</updated>
		
		<summary type="html">&lt;p&gt;Csdexter: /* Monitor */ Added missing category tag&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;V-aţi pus vreodată problema asta?&lt;br /&gt;
&lt;br /&gt;
Gândiţi-vă că vreţi, de exemplu, să vă luaţi un nou calculator şi să îl testaţi puţin pe Linux şi/sau să vedeţi dacă ce se află în carcasă corespunde cu ce scrie pe factură.&lt;br /&gt;
&lt;br /&gt;
Evident pentru asta veţi avea nevoie de o distribuţie care rulează de pe un Live CD. Acest document vă va ajuta să faceţi toată treaba din consolă pentru ca detecţia să fie independentă de distribuţia aleasă. De asemenea, unele din comenzile de mai jos merg şi pe BSD sau Solaris, deci avem de-a face şi cu o independenţă faţă de sistemul de operare Unix ales.&lt;br /&gt;
&lt;br /&gt;
'''Observaţie:''' Majoritatea comenzilor de mai jos necesită drepturi de root.&lt;br /&gt;
&lt;br /&gt;
=== Procesor ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;sh/&amp;gt;cat /proc/cpuinfo&amp;lt;/code&amp;gt;&lt;br /&gt;
Atentie insa la faptul ca, pe masinile care prezinta o forma de gestiune a energiei consumate (Intel SpeedStep, AMD PowerNow! etc.) suportata de kernel-ul cu care ati pornit masina, in fisierul amintit ar putea aparea o valoare mai mica a frecventei la care este tactat procesorul decat cea din specificatiile din factura -- dupa cum masina este in stres sau repaos in momentul examinarii fisierului.&lt;br /&gt;
&lt;br /&gt;
=== Discuri dure ===&lt;br /&gt;
&lt;br /&gt;
Pentru a obtine o lista a dispozitivelor de acest tip din calculator, vizible de kernel-ul curent:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;sh/&amp;gt;# Discuri ATA si dispozitive SCSI/USB&lt;br /&gt;
dmesg | egrep '(^hd[a-z]:|SCSI device sd[a-z]:)'&lt;br /&gt;
# Detalii discuri SCSI/SATA/USB&lt;br /&gt;
dmesg | grep -B1 -A2 '  Type:[ ]\+Direct-Access'&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Atentie, la interogarea de mai sus (si in functie de versiunea de kernel folosita) ar putea fi raportate si alte dispozitive cu comportament de disc conectate pe magistrala SCSI/USB cum ar fi: unitati optice (CD-ROM, CD-RW, DVD-RAM, DVD-RW, MO, UDO), unitati de disc semi-flexibil (JAZ, ZIP, LS-120), memorii EEPROM de mare viteza (Flash), volume prezentate via SAN etc.&lt;br /&gt;
&lt;br /&gt;
Pentru a obtine o lista a partiilor de pe un disc dur:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;sh/&amp;gt;fdisk -l $dispozitiv&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Detalii despre starea discurilor IDE si SCSI (native) care suporta S.M.A.R.T.:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;sh/&amp;gt;smartctl -a $dispozitiv&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Detalii despre discuri IDE/SCSI/USB:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;sh/&amp;gt;hdparm -i $dispozitiv&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Teste de viteza:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;sh/&amp;gt;hdparm -tT $dispozitiv&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Unde &amp;lt;tt&amp;gt;$dispozitiv&amp;lt;/tt&amp;gt; ia o valoare de forma &amp;lt;tt&amp;gt;/dev/([sh]d[a-z])&amp;lt;/tt&amp;gt;, unde $1 este una din denumirile obtinute la interogarile din deschiderea sectiunii.&lt;br /&gt;
In mod particular, &amp;lt;tt&amp;gt;$dispozitiv&amp;lt;/tt&amp;gt; poate lua valori si de alte forme atunci cand in masina expertizata sunt instalate controlere dedicate, e.g. &amp;lt;tt&amp;gt;/dev/ida/c[0-3]d[0-14]&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;/dev/i2o/c[0-3]t[0-3]d[0-1]&amp;lt;/tt&amp;gt; etc.&lt;br /&gt;
&lt;br /&gt;
=== Dispozitive USB conectate ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;sh/&amp;gt;lsusb&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Atentie, aceasta comanda (ca si sora ei pentru magistrala sistem, &amp;lt;tt&amp;gt;lspci&amp;lt;/tt&amp;gt;) raporteaza doar topologia si componenta din acest moment a magistralei USB si a dispozitivelor atasate -- ea nu da informatii despre gradul de suport sau compatibilitate a dispozitivelor enumerate cu masina si kernel-ul in cauza.&lt;br /&gt;
&lt;br /&gt;
=== Dispozitive PCI, inclusiv AGP, PCI-X, PCI-Express si PCMCIA CardBus ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;sh/&amp;gt;lspci&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Atentie, la fel cum s-a precizat si mai sus, faptul ca un anume dispozitiv apare enumerat in aceasta lista nu inseamna automat ca este si suportat de masina si kernel-ul curent.&lt;br /&gt;
&lt;br /&gt;
=== Dispozitive optice capabile de inscriptionare de tipul CD-RW, DVD-RAM, DVD-RW ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;sh/&amp;gt;cdrecord -scanbus&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Unitati de disc flexibil clasice, direct atasate ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;sh/&amp;gt;dmesg | egrep '(^[Ff]loppy|^FDC)'&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Memorie RAM ===&lt;br /&gt;
&lt;br /&gt;
Cantitate totală, în megaocteţi:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;sh/&amp;gt;dmesg | grep ^Memory:&lt;br /&gt;
free -m&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Detalii:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;sh/&amp;gt;decode-dimms.pl&lt;br /&gt;
dmidecode&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Monitor ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;sh/&amp;gt;monitor-probe -v nvidia&amp;lt;/code&amp;gt;&lt;br /&gt;
''nvidia'' poate fi înlocuit de driver-ul folosit de voi&lt;br /&gt;
&lt;br /&gt;
[[Category:HowTo]]&lt;br /&gt;
[[Category:FAQ]]&lt;br /&gt;
[[:Category:Tips'n'Tricks]]&lt;/div&gt;</summary>
		<author><name>Csdexter</name></author>	</entry>

	<entry>
		<id>http://wiki.linux360.ro/index.php?title=Detec%C3%85%C2%A3ie_componente_hardware_din_consol%C3%84%C6%92&amp;diff=3099</id>
		<title>DetecÅ£ie componente hardware din consolÄƒ</title>
		<link rel="alternate" type="text/html" href="http://wiki.linux360.ro/index.php?title=Detec%C3%85%C2%A3ie_componente_hardware_din_consol%C3%84%C6%92&amp;diff=3099"/>
				<updated>2006-11-08T14:20:56Z</updated>
		
		<summary type="html">&lt;p&gt;Csdexter: /* Memorie RAM */ Refined grep regex&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;V-aţi pus vreodată problema asta?&lt;br /&gt;
&lt;br /&gt;
Gândiţi-vă că vreţi, de exemplu, să vă luaţi un nou calculator şi să îl testaţi puţin pe Linux şi/sau să vedeţi dacă ce se află în carcasă corespunde cu ce scrie pe factură.&lt;br /&gt;
&lt;br /&gt;
Evident pentru asta veţi avea nevoie de o distribuţie care rulează de pe un Live CD. Acest document vă va ajuta să faceţi toată treaba din consolă pentru ca detecţia să fie independentă de distribuţia aleasă. De asemenea, unele din comenzile de mai jos merg şi pe BSD sau Solaris, deci avem de-a face şi cu o independenţă faţă de sistemul de operare Unix ales.&lt;br /&gt;
&lt;br /&gt;
'''Observaţie:''' Majoritatea comenzilor de mai jos necesită drepturi de root.&lt;br /&gt;
&lt;br /&gt;
=== Procesor ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;sh/&amp;gt;cat /proc/cpuinfo&amp;lt;/code&amp;gt;&lt;br /&gt;
Atentie insa la faptul ca, pe masinile care prezinta o forma de gestiune a energiei consumate (Intel SpeedStep, AMD PowerNow! etc.) suportata de kernel-ul cu care ati pornit masina, in fisierul amintit ar putea aparea o valoare mai mica a frecventei la care este tactat procesorul decat cea din specificatiile din factura -- dupa cum masina este in stres sau repaos in momentul examinarii fisierului.&lt;br /&gt;
&lt;br /&gt;
=== Discuri dure ===&lt;br /&gt;
&lt;br /&gt;
Pentru a obtine o lista a dispozitivelor de acest tip din calculator, vizible de kernel-ul curent:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;sh/&amp;gt;# Discuri ATA si dispozitive SCSI/USB&lt;br /&gt;
dmesg | egrep '(^hd[a-z]:|SCSI device sd[a-z]:)'&lt;br /&gt;
# Detalii discuri SCSI/SATA/USB&lt;br /&gt;
dmesg | grep -B1 -A2 '  Type:[ ]\+Direct-Access'&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Atentie, la interogarea de mai sus (si in functie de versiunea de kernel folosita) ar putea fi raportate si alte dispozitive cu comportament de disc conectate pe magistrala SCSI/USB cum ar fi: unitati optice (CD-ROM, CD-RW, DVD-RAM, DVD-RW, MO, UDO), unitati de disc semi-flexibil (JAZ, ZIP, LS-120), memorii EEPROM de mare viteza (Flash), volume prezentate via SAN etc.&lt;br /&gt;
&lt;br /&gt;
Pentru a obtine o lista a partiilor de pe un disc dur:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;sh/&amp;gt;fdisk -l $dispozitiv&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Detalii despre starea discurilor IDE si SCSI (native) care suporta S.M.A.R.T.:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;sh/&amp;gt;smartctl -a $dispozitiv&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Detalii despre discuri IDE/SCSI/USB:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;sh/&amp;gt;hdparm -i $dispozitiv&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Teste de viteza:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;sh/&amp;gt;hdparm -tT $dispozitiv&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Unde &amp;lt;tt&amp;gt;$dispozitiv&amp;lt;/tt&amp;gt; ia o valoare de forma &amp;lt;tt&amp;gt;/dev/([sh]d[a-z])&amp;lt;/tt&amp;gt;, unde $1 este una din denumirile obtinute la interogarile din deschiderea sectiunii.&lt;br /&gt;
In mod particular, &amp;lt;tt&amp;gt;$dispozitiv&amp;lt;/tt&amp;gt; poate lua valori si de alte forme atunci cand in masina expertizata sunt instalate controlere dedicate, e.g. &amp;lt;tt&amp;gt;/dev/ida/c[0-3]d[0-14]&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;/dev/i2o/c[0-3]t[0-3]d[0-1]&amp;lt;/tt&amp;gt; etc.&lt;br /&gt;
&lt;br /&gt;
=== Dispozitive USB conectate ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;sh/&amp;gt;lsusb&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Atentie, aceasta comanda (ca si sora ei pentru magistrala sistem, &amp;lt;tt&amp;gt;lspci&amp;lt;/tt&amp;gt;) raporteaza doar topologia si componenta din acest moment a magistralei USB si a dispozitivelor atasate -- ea nu da informatii despre gradul de suport sau compatibilitate a dispozitivelor enumerate cu masina si kernel-ul in cauza.&lt;br /&gt;
&lt;br /&gt;
=== Dispozitive PCI, inclusiv AGP, PCI-X, PCI-Express si PCMCIA CardBus ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;sh/&amp;gt;lspci&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Atentie, la fel cum s-a precizat si mai sus, faptul ca un anume dispozitiv apare enumerat in aceasta lista nu inseamna automat ca este si suportat de masina si kernel-ul curent.&lt;br /&gt;
&lt;br /&gt;
=== Dispozitive optice capabile de inscriptionare de tipul CD-RW, DVD-RAM, DVD-RW ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;sh/&amp;gt;cdrecord -scanbus&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Unitati de disc flexibil clasice, direct atasate ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;sh/&amp;gt;dmesg | egrep '(^[Ff]loppy|^FDC)'&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Memorie RAM ===&lt;br /&gt;
&lt;br /&gt;
Cantitate totală, în megaocteţi:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;sh/&amp;gt;dmesg | grep ^Memory:&lt;br /&gt;
free -m&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Detalii:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;sh/&amp;gt;decode-dimms.pl&lt;br /&gt;
dmidecode&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Monitor ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;sh/&amp;gt;monitor-probe -v nvidia&amp;lt;/code&amp;gt;&lt;br /&gt;
''nvidia'' poate fi înlocuit de driver-ul folosit de voi&lt;br /&gt;
&lt;br /&gt;
[[Category:HowTo]]&lt;br /&gt;
[[Category:FAQ]]&lt;/div&gt;</summary>
		<author><name>Csdexter</name></author>	</entry>

	<entry>
		<id>http://wiki.linux360.ro/index.php?title=Detec%C3%85%C2%A3ie_componente_hardware_din_consol%C3%84%C6%92&amp;diff=3098</id>
		<title>DetecÅ£ie componente hardware din consolÄƒ</title>
		<link rel="alternate" type="text/html" href="http://wiki.linux360.ro/index.php?title=Detec%C3%85%C2%A3ie_componente_hardware_din_consol%C3%84%C6%92&amp;diff=3098"/>
				<updated>2006-11-08T14:15:09Z</updated>
		
		<summary type="html">&lt;p&gt;Csdexter: /* Discuri dure */ Added SCSI disk universality warning&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;V-aţi pus vreodată problema asta?&lt;br /&gt;
&lt;br /&gt;
Gândiţi-vă că vreţi, de exemplu, să vă luaţi un nou calculator şi să îl testaţi puţin pe Linux şi/sau să vedeţi dacă ce se află în carcasă corespunde cu ce scrie pe factură.&lt;br /&gt;
&lt;br /&gt;
Evident pentru asta veţi avea nevoie de o distribuţie care rulează de pe un Live CD. Acest document vă va ajuta să faceţi toată treaba din consolă pentru ca detecţia să fie independentă de distribuţia aleasă. De asemenea, unele din comenzile de mai jos merg şi pe BSD sau Solaris, deci avem de-a face şi cu o independenţă faţă de sistemul de operare Unix ales.&lt;br /&gt;
&lt;br /&gt;
'''Observaţie:''' Majoritatea comenzilor de mai jos necesită drepturi de root.&lt;br /&gt;
&lt;br /&gt;
=== Procesor ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;sh/&amp;gt;cat /proc/cpuinfo&amp;lt;/code&amp;gt;&lt;br /&gt;
Atentie insa la faptul ca, pe masinile care prezinta o forma de gestiune a energiei consumate (Intel SpeedStep, AMD PowerNow! etc.) suportata de kernel-ul cu care ati pornit masina, in fisierul amintit ar putea aparea o valoare mai mica a frecventei la care este tactat procesorul decat cea din specificatiile din factura -- dupa cum masina este in stres sau repaos in momentul examinarii fisierului.&lt;br /&gt;
&lt;br /&gt;
=== Discuri dure ===&lt;br /&gt;
&lt;br /&gt;
Pentru a obtine o lista a dispozitivelor de acest tip din calculator, vizible de kernel-ul curent:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;sh/&amp;gt;# Discuri ATA si dispozitive SCSI/USB&lt;br /&gt;
dmesg | egrep '(^hd[a-z]:|SCSI device sd[a-z]:)'&lt;br /&gt;
# Detalii discuri SCSI/SATA/USB&lt;br /&gt;
dmesg | grep -B1 -A2 '  Type:[ ]\+Direct-Access'&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Atentie, la interogarea de mai sus (si in functie de versiunea de kernel folosita) ar putea fi raportate si alte dispozitive cu comportament de disc conectate pe magistrala SCSI/USB cum ar fi: unitati optice (CD-ROM, CD-RW, DVD-RAM, DVD-RW, MO, UDO), unitati de disc semi-flexibil (JAZ, ZIP, LS-120), memorii EEPROM de mare viteza (Flash), volume prezentate via SAN etc.&lt;br /&gt;
&lt;br /&gt;
Pentru a obtine o lista a partiilor de pe un disc dur:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;sh/&amp;gt;fdisk -l $dispozitiv&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Detalii despre starea discurilor IDE si SCSI (native) care suporta S.M.A.R.T.:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;sh/&amp;gt;smartctl -a $dispozitiv&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Detalii despre discuri IDE/SCSI/USB:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;sh/&amp;gt;hdparm -i $dispozitiv&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Teste de viteza:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;sh/&amp;gt;hdparm -tT $dispozitiv&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Unde &amp;lt;tt&amp;gt;$dispozitiv&amp;lt;/tt&amp;gt; ia o valoare de forma &amp;lt;tt&amp;gt;/dev/([sh]d[a-z])&amp;lt;/tt&amp;gt;, unde $1 este una din denumirile obtinute la interogarile din deschiderea sectiunii.&lt;br /&gt;
In mod particular, &amp;lt;tt&amp;gt;$dispozitiv&amp;lt;/tt&amp;gt; poate lua valori si de alte forme atunci cand in masina expertizata sunt instalate controlere dedicate, e.g. &amp;lt;tt&amp;gt;/dev/ida/c[0-3]d[0-14]&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;/dev/i2o/c[0-3]t[0-3]d[0-1]&amp;lt;/tt&amp;gt; etc.&lt;br /&gt;
&lt;br /&gt;
=== Dispozitive USB conectate ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;sh/&amp;gt;lsusb&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Atentie, aceasta comanda (ca si sora ei pentru magistrala sistem, &amp;lt;tt&amp;gt;lspci&amp;lt;/tt&amp;gt;) raporteaza doar topologia si componenta din acest moment a magistralei USB si a dispozitivelor atasate -- ea nu da informatii despre gradul de suport sau compatibilitate a dispozitivelor enumerate cu masina si kernel-ul in cauza.&lt;br /&gt;
&lt;br /&gt;
=== Dispozitive PCI, inclusiv AGP, PCI-X, PCI-Express si PCMCIA CardBus ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;sh/&amp;gt;lspci&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Atentie, la fel cum s-a precizat si mai sus, faptul ca un anume dispozitiv apare enumerat in aceasta lista nu inseamna automat ca este si suportat de masina si kernel-ul curent.&lt;br /&gt;
&lt;br /&gt;
=== Dispozitive optice capabile de inscriptionare de tipul CD-RW, DVD-RAM, DVD-RW ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;sh/&amp;gt;cdrecord -scanbus&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Unitati de disc flexibil clasice, direct atasate ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;sh/&amp;gt;dmesg | egrep '(^[Ff]loppy|^FDC)'&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Memorie RAM ===&lt;br /&gt;
&lt;br /&gt;
Cantitate totală, în megaocteţi:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;sh/&amp;gt;free -m&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Detalii:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;sh/&amp;gt;decode-dimms.pl&lt;br /&gt;
dmidecode&amp;lt;/code&amp;gt;&lt;br /&gt;
=== Monitor ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;sh/&amp;gt;monitor-probe -v nvidia&amp;lt;/code&amp;gt;&lt;br /&gt;
''nvidia'' poate fi înlocuit de driver-ul folosit de voi&lt;br /&gt;
&lt;br /&gt;
[[Category:HowTo]]&lt;br /&gt;
[[Category:FAQ]]&lt;/div&gt;</summary>
		<author><name>Csdexter</name></author>	</entry>

	<entry>
		<id>http://wiki.linux360.ro/index.php?title=Detec%C3%85%C2%A3ie_componente_hardware_din_consol%C3%84%C6%92&amp;diff=3097</id>
		<title>DetecÅ£ie componente hardware din consolÄƒ</title>
		<link rel="alternate" type="text/html" href="http://wiki.linux360.ro/index.php?title=Detec%C3%85%C2%A3ie_componente_hardware_din_consol%C3%84%C6%92&amp;diff=3097"/>
				<updated>2006-11-08T14:06:10Z</updated>
		
		<summary type="html">&lt;p&gt;Csdexter: /* Dispozitive optice */ Converted title to formal style&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;V-aţi pus vreodată problema asta?&lt;br /&gt;
&lt;br /&gt;
Gândiţi-vă că vreţi, de exemplu, să vă luaţi un nou calculator şi să îl testaţi puţin pe Linux şi/sau să vedeţi dacă ce se află în carcasă corespunde cu ce scrie pe factură.&lt;br /&gt;
&lt;br /&gt;
Evident pentru asta veţi avea nevoie de o distribuţie care rulează de pe un Live CD. Acest document vă va ajuta să faceţi toată treaba din consolă pentru ca detecţia să fie independentă de distribuţia aleasă. De asemenea, unele din comenzile de mai jos merg şi pe BSD sau Solaris, deci avem de-a face şi cu o independenţă faţă de sistemul de operare Unix ales.&lt;br /&gt;
&lt;br /&gt;
'''Observaţie:''' Majoritatea comenzilor de mai jos necesită drepturi de root.&lt;br /&gt;
&lt;br /&gt;
=== Procesor ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;sh/&amp;gt;cat /proc/cpuinfo&amp;lt;/code&amp;gt;&lt;br /&gt;
Atentie insa la faptul ca, pe masinile care prezinta o forma de gestiune a energiei consumate (Intel SpeedStep, AMD PowerNow! etc.) suportata de kernel-ul cu care ati pornit masina, in fisierul amintit ar putea aparea o valoare mai mica a frecventei la care este tactat procesorul decat cea din specificatiile din factura -- dupa cum masina este in stres sau repaos in momentul examinarii fisierului.&lt;br /&gt;
&lt;br /&gt;
=== Discuri dure ===&lt;br /&gt;
&lt;br /&gt;
Pentru a obtine o lista a dispozitivelor de acest tip din calculator, vizible de kernel-ul curent:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;sh/&amp;gt;# Discuri ATA si dispozitive SCSI/USB&lt;br /&gt;
dmesg | egrep '(^hd[a-z]:|SCSI device sd[a-z]:)'&lt;br /&gt;
# Detalii discuri SCSI/SATA/USB&lt;br /&gt;
dmesg | grep -B1 -A2 '  Type:[ ]*Direct-Access'&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pentru a obtine o lista a partiilor de pe un disc dur:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;sh/&amp;gt;fdisk -l $dispozitiv&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Detalii despre starea discurilor IDE si SCSI (native) care suporta S.M.A.R.T.:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;sh/&amp;gt;smartctl -a $dispozitiv&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Detalii despre discuri IDE/SCSI/USB:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;sh/&amp;gt;hdparm -i $dispozitiv&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Teste de viteza:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;sh/&amp;gt;hdparm -tT $dispozitiv&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Unde &amp;lt;tt&amp;gt;$dispozitiv&amp;lt;/tt&amp;gt; ia o valoare de forma &amp;lt;tt&amp;gt;/dev/([sh]d[a-z])&amp;lt;/tt&amp;gt;, unde $1 este una din denumirile obtinute la interogarile din deschiderea sectiunii.&lt;br /&gt;
In mod particular, &amp;lt;tt&amp;gt;$dispozitiv&amp;lt;/tt&amp;gt; poate lua valori si de alte forme atunci cand in masina expertizata sunt instalate controlere dedicate, e.g. &amp;lt;tt&amp;gt;/dev/ida/c[0-3]d[0-14]&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;/dev/i2o/c[0-3]t[0-3]d[0-1]&amp;lt;/tt&amp;gt; etc.&lt;br /&gt;
&lt;br /&gt;
=== Dispozitive USB conectate ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;sh/&amp;gt;lsusb&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Atentie, aceasta comanda (ca si sora ei pentru magistrala sistem, &amp;lt;tt&amp;gt;lspci&amp;lt;/tt&amp;gt;) raporteaza doar topologia si componenta din acest moment a magistralei USB si a dispozitivelor atasate -- ea nu da informatii despre gradul de suport sau compatibilitate a dispozitivelor enumerate cu masina si kernel-ul in cauza.&lt;br /&gt;
&lt;br /&gt;
=== Dispozitive PCI, inclusiv AGP, PCI-X, PCI-Express si PCMCIA CardBus ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;sh/&amp;gt;lspci&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Atentie, la fel cum s-a precizat si mai sus, faptul ca un anume dispozitiv apare enumerat in aceasta lista nu inseamna automat ca este si suportat de masina si kernel-ul curent.&lt;br /&gt;
&lt;br /&gt;
=== Dispozitive optice capabile de inscriptionare de tipul CD-RW, DVD-RAM, DVD-RW ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;sh/&amp;gt;cdrecord -scanbus&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Unitati de disc flexibil clasice, direct atasate ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;sh/&amp;gt;dmesg | egrep '(^[Ff]loppy|^FDC)'&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Memorie RAM ===&lt;br /&gt;
&lt;br /&gt;
Cantitate totală, în megaocteţi:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;sh/&amp;gt;free -m&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Detalii:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;sh/&amp;gt;decode-dimms.pl&lt;br /&gt;
dmidecode&amp;lt;/code&amp;gt;&lt;br /&gt;
=== Monitor ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;sh/&amp;gt;monitor-probe -v nvidia&amp;lt;/code&amp;gt;&lt;br /&gt;
''nvidia'' poate fi înlocuit de driver-ul folosit de voi&lt;br /&gt;
&lt;br /&gt;
[[Category:HowTo]]&lt;br /&gt;
[[Category:FAQ]]&lt;/div&gt;</summary>
		<author><name>Csdexter</name></author>	</entry>

	<entry>
		<id>http://wiki.linux360.ro/index.php?title=Detec%C3%85%C2%A3ie_componente_hardware_din_consol%C3%84%C6%92&amp;diff=3096</id>
		<title>DetecÅ£ie componente hardware din consolÄƒ</title>
		<link rel="alternate" type="text/html" href="http://wiki.linux360.ro/index.php?title=Detec%C3%85%C2%A3ie_componente_hardware_din_consol%C3%84%C6%92&amp;diff=3096"/>
				<updated>2006-11-08T14:04:33Z</updated>
		
		<summary type="html">&lt;p&gt;Csdexter: /* Floppy */ Refined grep regex&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;V-aţi pus vreodată problema asta?&lt;br /&gt;
&lt;br /&gt;
Gândiţi-vă că vreţi, de exemplu, să vă luaţi un nou calculator şi să îl testaţi puţin pe Linux şi/sau să vedeţi dacă ce se află în carcasă corespunde cu ce scrie pe factură.&lt;br /&gt;
&lt;br /&gt;
Evident pentru asta veţi avea nevoie de o distribuţie care rulează de pe un Live CD. Acest document vă va ajuta să faceţi toată treaba din consolă pentru ca detecţia să fie independentă de distribuţia aleasă. De asemenea, unele din comenzile de mai jos merg şi pe BSD sau Solaris, deci avem de-a face şi cu o independenţă faţă de sistemul de operare Unix ales.&lt;br /&gt;
&lt;br /&gt;
'''Observaţie:''' Majoritatea comenzilor de mai jos necesită drepturi de root.&lt;br /&gt;
&lt;br /&gt;
=== Procesor ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;sh/&amp;gt;cat /proc/cpuinfo&amp;lt;/code&amp;gt;&lt;br /&gt;
Atentie insa la faptul ca, pe masinile care prezinta o forma de gestiune a energiei consumate (Intel SpeedStep, AMD PowerNow! etc.) suportata de kernel-ul cu care ati pornit masina, in fisierul amintit ar putea aparea o valoare mai mica a frecventei la care este tactat procesorul decat cea din specificatiile din factura -- dupa cum masina este in stres sau repaos in momentul examinarii fisierului.&lt;br /&gt;
&lt;br /&gt;
=== Discuri dure ===&lt;br /&gt;
&lt;br /&gt;
Pentru a obtine o lista a dispozitivelor de acest tip din calculator, vizible de kernel-ul curent:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;sh/&amp;gt;# Discuri ATA si dispozitive SCSI/USB&lt;br /&gt;
dmesg | egrep '(^hd[a-z]:|SCSI device sd[a-z]:)'&lt;br /&gt;
# Detalii discuri SCSI/SATA/USB&lt;br /&gt;
dmesg | grep -B1 -A2 '  Type:[ ]*Direct-Access'&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pentru a obtine o lista a partiilor de pe un disc dur:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;sh/&amp;gt;fdisk -l $dispozitiv&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Detalii despre starea discurilor IDE si SCSI (native) care suporta S.M.A.R.T.:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;sh/&amp;gt;smartctl -a $dispozitiv&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Detalii despre discuri IDE/SCSI/USB:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;sh/&amp;gt;hdparm -i $dispozitiv&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Teste de viteza:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;sh/&amp;gt;hdparm -tT $dispozitiv&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Unde &amp;lt;tt&amp;gt;$dispozitiv&amp;lt;/tt&amp;gt; ia o valoare de forma &amp;lt;tt&amp;gt;/dev/([sh]d[a-z])&amp;lt;/tt&amp;gt;, unde $1 este una din denumirile obtinute la interogarile din deschiderea sectiunii.&lt;br /&gt;
In mod particular, &amp;lt;tt&amp;gt;$dispozitiv&amp;lt;/tt&amp;gt; poate lua valori si de alte forme atunci cand in masina expertizata sunt instalate controlere dedicate, e.g. &amp;lt;tt&amp;gt;/dev/ida/c[0-3]d[0-14]&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;/dev/i2o/c[0-3]t[0-3]d[0-1]&amp;lt;/tt&amp;gt; etc.&lt;br /&gt;
&lt;br /&gt;
=== Dispozitive USB conectate ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;sh/&amp;gt;lsusb&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Atentie, aceasta comanda (ca si sora ei pentru magistrala sistem, &amp;lt;tt&amp;gt;lspci&amp;lt;/tt&amp;gt;) raporteaza doar topologia si componenta din acest moment a magistralei USB si a dispozitivelor atasate -- ea nu da informatii despre gradul de suport sau compatibilitate a dispozitivelor enumerate cu masina si kernel-ul in cauza.&lt;br /&gt;
&lt;br /&gt;
=== Dispozitive PCI, inclusiv AGP, PCI-X, PCI-Express si PCMCIA CardBus ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;sh/&amp;gt;lspci&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Atentie, la fel cum s-a precizat si mai sus, faptul ca un anume dispozitiv apare enumerat in aceasta lista nu inseamna automat ca este si suportat de masina si kernel-ul curent.&lt;br /&gt;
&lt;br /&gt;
=== Dispozitive optice ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;sh/&amp;gt;cdrecord -scanbus&amp;lt;/code&amp;gt;&lt;br /&gt;
=== Unitati de disc flexibil clasice, direct atasate ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;sh/&amp;gt;dmesg | egrep '(^[Ff]loppy|^FDC)'&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Memorie RAM ===&lt;br /&gt;
&lt;br /&gt;
Cantitate totală, în megaocteţi:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;sh/&amp;gt;free -m&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Detalii:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;sh/&amp;gt;decode-dimms.pl&lt;br /&gt;
dmidecode&amp;lt;/code&amp;gt;&lt;br /&gt;
=== Monitor ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;sh/&amp;gt;monitor-probe -v nvidia&amp;lt;/code&amp;gt;&lt;br /&gt;
''nvidia'' poate fi înlocuit de driver-ul folosit de voi&lt;br /&gt;
&lt;br /&gt;
[[Category:HowTo]]&lt;br /&gt;
[[Category:FAQ]]&lt;/div&gt;</summary>
		<author><name>Csdexter</name></author>	</entry>

	<entry>
		<id>http://wiki.linux360.ro/index.php?title=Detec%C3%85%C2%A3ie_componente_hardware_din_consol%C3%84%C6%92&amp;diff=3095</id>
		<title>DetecÅ£ie componente hardware din consolÄƒ</title>
		<link rel="alternate" type="text/html" href="http://wiki.linux360.ro/index.php?title=Detec%C3%85%C2%A3ie_componente_hardware_din_consol%C3%84%C6%92&amp;diff=3095"/>
				<updated>2006-11-08T14:00:58Z</updated>
		
		<summary type="html">&lt;p&gt;Csdexter: /* Dispozitive PCI, inclusiv AGP, PCI-X, PCI-Express si PCMCIA CardBus */  Added enumerated vs. supported warning&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;V-aţi pus vreodată problema asta?&lt;br /&gt;
&lt;br /&gt;
Gândiţi-vă că vreţi, de exemplu, să vă luaţi un nou calculator şi să îl testaţi puţin pe Linux şi/sau să vedeţi dacă ce se află în carcasă corespunde cu ce scrie pe factură.&lt;br /&gt;
&lt;br /&gt;
Evident pentru asta veţi avea nevoie de o distribuţie care rulează de pe un Live CD. Acest document vă va ajuta să faceţi toată treaba din consolă pentru ca detecţia să fie independentă de distribuţia aleasă. De asemenea, unele din comenzile de mai jos merg şi pe BSD sau Solaris, deci avem de-a face şi cu o independenţă faţă de sistemul de operare Unix ales.&lt;br /&gt;
&lt;br /&gt;
'''Observaţie:''' Majoritatea comenzilor de mai jos necesită drepturi de root.&lt;br /&gt;
&lt;br /&gt;
=== Procesor ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;sh/&amp;gt;cat /proc/cpuinfo&amp;lt;/code&amp;gt;&lt;br /&gt;
Atentie insa la faptul ca, pe masinile care prezinta o forma de gestiune a energiei consumate (Intel SpeedStep, AMD PowerNow! etc.) suportata de kernel-ul cu care ati pornit masina, in fisierul amintit ar putea aparea o valoare mai mica a frecventei la care este tactat procesorul decat cea din specificatiile din factura -- dupa cum masina este in stres sau repaos in momentul examinarii fisierului.&lt;br /&gt;
&lt;br /&gt;
=== Discuri dure ===&lt;br /&gt;
&lt;br /&gt;
Pentru a obtine o lista a dispozitivelor de acest tip din calculator, vizible de kernel-ul curent:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;sh/&amp;gt;# Discuri ATA si dispozitive SCSI/USB&lt;br /&gt;
dmesg | egrep '(^hd[a-z]:|SCSI device sd[a-z]:)'&lt;br /&gt;
# Detalii discuri SCSI/SATA/USB&lt;br /&gt;
dmesg | grep -B1 -A2 '  Type:[ ]*Direct-Access'&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pentru a obtine o lista a partiilor de pe un disc dur:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;sh/&amp;gt;fdisk -l $dispozitiv&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Detalii despre starea discurilor IDE si SCSI (native) care suporta S.M.A.R.T.:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;sh/&amp;gt;smartctl -a $dispozitiv&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Detalii despre discuri IDE/SCSI/USB:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;sh/&amp;gt;hdparm -i $dispozitiv&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Teste de viteza:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;sh/&amp;gt;hdparm -tT $dispozitiv&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Unde &amp;lt;tt&amp;gt;$dispozitiv&amp;lt;/tt&amp;gt; ia o valoare de forma &amp;lt;tt&amp;gt;/dev/([sh]d[a-z])&amp;lt;/tt&amp;gt;, unde $1 este una din denumirile obtinute la interogarile din deschiderea sectiunii.&lt;br /&gt;
In mod particular, &amp;lt;tt&amp;gt;$dispozitiv&amp;lt;/tt&amp;gt; poate lua valori si de alte forme atunci cand in masina expertizata sunt instalate controlere dedicate, e.g. &amp;lt;tt&amp;gt;/dev/ida/c[0-3]d[0-14]&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;/dev/i2o/c[0-3]t[0-3]d[0-1]&amp;lt;/tt&amp;gt; etc.&lt;br /&gt;
&lt;br /&gt;
=== Dispozitive USB conectate ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;sh/&amp;gt;lsusb&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Atentie, aceasta comanda (ca si sora ei pentru magistrala sistem, &amp;lt;tt&amp;gt;lspci&amp;lt;/tt&amp;gt;) raporteaza doar topologia si componenta din acest moment a magistralei USB si a dispozitivelor atasate -- ea nu da informatii despre gradul de suport sau compatibilitate a dispozitivelor enumerate cu masina si kernel-ul in cauza.&lt;br /&gt;
&lt;br /&gt;
=== Dispozitive PCI, inclusiv AGP, PCI-X, PCI-Express si PCMCIA CardBus ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;sh/&amp;gt;lspci&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Atentie, la fel cum s-a precizat si mai sus, faptul ca un anume dispozitiv apare enumerat in aceasta lista nu inseamna automat ca este si suportat de masina si kernel-ul curent.&lt;br /&gt;
&lt;br /&gt;
=== Dispozitive optice ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;sh/&amp;gt;cdrecord -scanbus&amp;lt;/code&amp;gt;&lt;br /&gt;
=== Floppy ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;sh/&amp;gt;dmesg | grep -i fd&amp;lt;/code&amp;gt;&lt;br /&gt;
=== Memorie RAM ===&lt;br /&gt;
&lt;br /&gt;
Cantitate totală, în megaocteţi:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;sh/&amp;gt;free -m&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Detalii:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;sh/&amp;gt;decode-dimms.pl&lt;br /&gt;
dmidecode&amp;lt;/code&amp;gt;&lt;br /&gt;
=== Monitor ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;sh/&amp;gt;monitor-probe -v nvidia&amp;lt;/code&amp;gt;&lt;br /&gt;
''nvidia'' poate fi înlocuit de driver-ul folosit de voi&lt;br /&gt;
&lt;br /&gt;
[[Category:HowTo]]&lt;br /&gt;
[[Category:FAQ]]&lt;/div&gt;</summary>
		<author><name>Csdexter</name></author>	</entry>

	<entry>
		<id>http://wiki.linux360.ro/index.php?title=Detec%C3%85%C2%A3ie_componente_hardware_din_consol%C3%84%C6%92&amp;diff=3094</id>
		<title>DetecÅ£ie componente hardware din consolÄƒ</title>
		<link rel="alternate" type="text/html" href="http://wiki.linux360.ro/index.php?title=Detec%C3%85%C2%A3ie_componente_hardware_din_consol%C3%84%C6%92&amp;diff=3094"/>
				<updated>2006-11-08T13:59:54Z</updated>
		
		<summary type="html">&lt;p&gt;Csdexter: /* Dispozitive USB conectate */ Came back on the verboseness of lsusb&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;V-aţi pus vreodată problema asta?&lt;br /&gt;
&lt;br /&gt;
Gândiţi-vă că vreţi, de exemplu, să vă luaţi un nou calculator şi să îl testaţi puţin pe Linux şi/sau să vedeţi dacă ce se află în carcasă corespunde cu ce scrie pe factură.&lt;br /&gt;
&lt;br /&gt;
Evident pentru asta veţi avea nevoie de o distribuţie care rulează de pe un Live CD. Acest document vă va ajuta să faceţi toată treaba din consolă pentru ca detecţia să fie independentă de distribuţia aleasă. De asemenea, unele din comenzile de mai jos merg şi pe BSD sau Solaris, deci avem de-a face şi cu o independenţă faţă de sistemul de operare Unix ales.&lt;br /&gt;
&lt;br /&gt;
'''Observaţie:''' Majoritatea comenzilor de mai jos necesită drepturi de root.&lt;br /&gt;
&lt;br /&gt;
=== Procesor ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;sh/&amp;gt;cat /proc/cpuinfo&amp;lt;/code&amp;gt;&lt;br /&gt;
Atentie insa la faptul ca, pe masinile care prezinta o forma de gestiune a energiei consumate (Intel SpeedStep, AMD PowerNow! etc.) suportata de kernel-ul cu care ati pornit masina, in fisierul amintit ar putea aparea o valoare mai mica a frecventei la care este tactat procesorul decat cea din specificatiile din factura -- dupa cum masina este in stres sau repaos in momentul examinarii fisierului.&lt;br /&gt;
&lt;br /&gt;
=== Discuri dure ===&lt;br /&gt;
&lt;br /&gt;
Pentru a obtine o lista a dispozitivelor de acest tip din calculator, vizible de kernel-ul curent:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;sh/&amp;gt;# Discuri ATA si dispozitive SCSI/USB&lt;br /&gt;
dmesg | egrep '(^hd[a-z]:|SCSI device sd[a-z]:)'&lt;br /&gt;
# Detalii discuri SCSI/SATA/USB&lt;br /&gt;
dmesg | grep -B1 -A2 '  Type:[ ]*Direct-Access'&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pentru a obtine o lista a partiilor de pe un disc dur:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;sh/&amp;gt;fdisk -l $dispozitiv&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Detalii despre starea discurilor IDE si SCSI (native) care suporta S.M.A.R.T.:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;sh/&amp;gt;smartctl -a $dispozitiv&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Detalii despre discuri IDE/SCSI/USB:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;sh/&amp;gt;hdparm -i $dispozitiv&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Teste de viteza:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;sh/&amp;gt;hdparm -tT $dispozitiv&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Unde &amp;lt;tt&amp;gt;$dispozitiv&amp;lt;/tt&amp;gt; ia o valoare de forma &amp;lt;tt&amp;gt;/dev/([sh]d[a-z])&amp;lt;/tt&amp;gt;, unde $1 este una din denumirile obtinute la interogarile din deschiderea sectiunii.&lt;br /&gt;
In mod particular, &amp;lt;tt&amp;gt;$dispozitiv&amp;lt;/tt&amp;gt; poate lua valori si de alte forme atunci cand in masina expertizata sunt instalate controlere dedicate, e.g. &amp;lt;tt&amp;gt;/dev/ida/c[0-3]d[0-14]&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;/dev/i2o/c[0-3]t[0-3]d[0-1]&amp;lt;/tt&amp;gt; etc.&lt;br /&gt;
&lt;br /&gt;
=== Dispozitive USB conectate ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;sh/&amp;gt;lsusb&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Atentie, aceasta comanda (ca si sora ei pentru magistrala sistem, &amp;lt;tt&amp;gt;lspci&amp;lt;/tt&amp;gt;) raporteaza doar topologia si componenta din acest moment a magistralei USB si a dispozitivelor atasate -- ea nu da informatii despre gradul de suport sau compatibilitate a dispozitivelor enumerate cu masina si kernel-ul in cauza.&lt;br /&gt;
&lt;br /&gt;
=== Dispozitive PCI, inclusiv AGP, PCI-X, PCI-Express si PCMCIA CardBus ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;sh/&amp;gt;lspci&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Dispozitive optice ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;sh/&amp;gt;cdrecord -scanbus&amp;lt;/code&amp;gt;&lt;br /&gt;
=== Floppy ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;sh/&amp;gt;dmesg | grep -i fd&amp;lt;/code&amp;gt;&lt;br /&gt;
=== Memorie RAM ===&lt;br /&gt;
&lt;br /&gt;
Cantitate totală, în megaocteţi:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;sh/&amp;gt;free -m&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Detalii:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;sh/&amp;gt;decode-dimms.pl&lt;br /&gt;
dmidecode&amp;lt;/code&amp;gt;&lt;br /&gt;
=== Monitor ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;sh/&amp;gt;monitor-probe -v nvidia&amp;lt;/code&amp;gt;&lt;br /&gt;
''nvidia'' poate fi înlocuit de driver-ul folosit de voi&lt;br /&gt;
&lt;br /&gt;
[[Category:HowTo]]&lt;br /&gt;
[[Category:FAQ]]&lt;/div&gt;</summary>
		<author><name>Csdexter</name></author>	</entry>

	<entry>
		<id>http://wiki.linux360.ro/index.php?title=Detec%C3%85%C2%A3ie_componente_hardware_din_consol%C3%84%C6%92&amp;diff=3093</id>
		<title>DetecÅ£ie componente hardware din consolÄƒ</title>
		<link rel="alternate" type="text/html" href="http://wiki.linux360.ro/index.php?title=Detec%C3%85%C2%A3ie_componente_hardware_din_consol%C3%84%C6%92&amp;diff=3093"/>
				<updated>2006-11-08T13:59:30Z</updated>
		
		<summary type="html">&lt;p&gt;Csdexter: /* Dispozitive PCI, incluzând plăcile de sunet, reţea, video */ Changed title to formal style&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;V-aţi pus vreodată problema asta?&lt;br /&gt;
&lt;br /&gt;
Gândiţi-vă că vreţi, de exemplu, să vă luaţi un nou calculator şi să îl testaţi puţin pe Linux şi/sau să vedeţi dacă ce se află în carcasă corespunde cu ce scrie pe factură.&lt;br /&gt;
&lt;br /&gt;
Evident pentru asta veţi avea nevoie de o distribuţie care rulează de pe un Live CD. Acest document vă va ajuta să faceţi toată treaba din consolă pentru ca detecţia să fie independentă de distribuţia aleasă. De asemenea, unele din comenzile de mai jos merg şi pe BSD sau Solaris, deci avem de-a face şi cu o independenţă faţă de sistemul de operare Unix ales.&lt;br /&gt;
&lt;br /&gt;
'''Observaţie:''' Majoritatea comenzilor de mai jos necesită drepturi de root.&lt;br /&gt;
&lt;br /&gt;
=== Procesor ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;sh/&amp;gt;cat /proc/cpuinfo&amp;lt;/code&amp;gt;&lt;br /&gt;
Atentie insa la faptul ca, pe masinile care prezinta o forma de gestiune a energiei consumate (Intel SpeedStep, AMD PowerNow! etc.) suportata de kernel-ul cu care ati pornit masina, in fisierul amintit ar putea aparea o valoare mai mica a frecventei la care este tactat procesorul decat cea din specificatiile din factura -- dupa cum masina este in stres sau repaos in momentul examinarii fisierului.&lt;br /&gt;
&lt;br /&gt;
=== Discuri dure ===&lt;br /&gt;
&lt;br /&gt;
Pentru a obtine o lista a dispozitivelor de acest tip din calculator, vizible de kernel-ul curent:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;sh/&amp;gt;# Discuri ATA si dispozitive SCSI/USB&lt;br /&gt;
dmesg | egrep '(^hd[a-z]:|SCSI device sd[a-z]:)'&lt;br /&gt;
# Detalii discuri SCSI/SATA/USB&lt;br /&gt;
dmesg | grep -B1 -A2 '  Type:[ ]*Direct-Access'&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pentru a obtine o lista a partiilor de pe un disc dur:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;sh/&amp;gt;fdisk -l $dispozitiv&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Detalii despre starea discurilor IDE si SCSI (native) care suporta S.M.A.R.T.:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;sh/&amp;gt;smartctl -a $dispozitiv&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Detalii despre discuri IDE/SCSI/USB:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;sh/&amp;gt;hdparm -i $dispozitiv&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Teste de viteza:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;sh/&amp;gt;hdparm -tT $dispozitiv&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Unde &amp;lt;tt&amp;gt;$dispozitiv&amp;lt;/tt&amp;gt; ia o valoare de forma &amp;lt;tt&amp;gt;/dev/([sh]d[a-z])&amp;lt;/tt&amp;gt;, unde $1 este una din denumirile obtinute la interogarile din deschiderea sectiunii.&lt;br /&gt;
In mod particular, &amp;lt;tt&amp;gt;$dispozitiv&amp;lt;/tt&amp;gt; poate lua valori si de alte forme atunci cand in masina expertizata sunt instalate controlere dedicate, e.g. &amp;lt;tt&amp;gt;/dev/ida/c[0-3]d[0-14]&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;/dev/i2o/c[0-3]t[0-3]d[0-1]&amp;lt;/tt&amp;gt; etc.&lt;br /&gt;
&lt;br /&gt;
=== Dispozitive USB conectate ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;sh/&amp;gt;lsusb -v&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Atentie, aceasta comanda (ca si sora ei pentru magistrala sistem, &amp;lt;tt&amp;gt;lspci&amp;lt;/tt&amp;gt;) raporteaza doar topologia si componenta din acest moment a magistralei USB si a dispozitivelor atasate -- ea nu da informatii despre gradul de suport sau compatibilitate a dispozitivelor enumerate cu masina si kernel-ul in cauza.&lt;br /&gt;
&lt;br /&gt;
=== Dispozitive PCI, inclusiv AGP, PCI-X, PCI-Express si PCMCIA CardBus ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;sh/&amp;gt;lspci&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Dispozitive optice ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;sh/&amp;gt;cdrecord -scanbus&amp;lt;/code&amp;gt;&lt;br /&gt;
=== Floppy ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;sh/&amp;gt;dmesg | grep -i fd&amp;lt;/code&amp;gt;&lt;br /&gt;
=== Memorie RAM ===&lt;br /&gt;
&lt;br /&gt;
Cantitate totală, în megaocteţi:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;sh/&amp;gt;free -m&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Detalii:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;sh/&amp;gt;decode-dimms.pl&lt;br /&gt;
dmidecode&amp;lt;/code&amp;gt;&lt;br /&gt;
=== Monitor ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;sh/&amp;gt;monitor-probe -v nvidia&amp;lt;/code&amp;gt;&lt;br /&gt;
''nvidia'' poate fi înlocuit de driver-ul folosit de voi&lt;br /&gt;
&lt;br /&gt;
[[Category:HowTo]]&lt;br /&gt;
[[Category:FAQ]]&lt;/div&gt;</summary>
		<author><name>Csdexter</name></author>	</entry>

	</feed>