Blog
Podsieć /48, czyli jak Krzysztof stał się bogaty...
06.04.2008 - Niedziela - 21:15
...w adresy IPv6 ;-)
W piątek złożyłem "podanie" o przydzielenie podsieci do mojego tunelu. Poczekałem dwie godziny i załoga SixXS przydzieliła mi pulę adresów z podsieci /48.
Krzysztof dostał podsieć 2001:6a0:14d::/48, a to oznacza, że mam możliwość zapisania adresów hostów na 80 bitach. Właściwie to mam 2^16 adresów sieci, a w każdej 2^64 adresów hostów, co daje razem 2^80 unikalnych adresów IPv6. Daje to dokładnie 1208925819614629174706176, ale dla prostoty zaokrąglimy to do 1,208*10^21 adresów IPv6, czyli 1,2 tryliarda adresów IP. Dla porównania, cała pula adresowa IPv4 to 2^32 adresów, czyli 4,2 miliarda adresów. Trochę mało, prawda? ;-)
Oczywiście nie posiadam tylu urządzeń, żeby móc wykorzystać nawet 1% tych adresów, ale może kiedyś... ;-) Ogólnie w protokole IPv6 chodzi o to, żeby każde urządzenie miało swój własny unikalny adres IPv6 i żeby nie stosować maskarady i innych podobnych rozwiązań. Jedna z metod autokonfiguracji interfejsu polega na tym, że adres sprzętowy (48-bitowy MAC w przypadku Ethernetu) rozszerza się do 64 bitów (ostatnie 64 bity adresu IP to Device ID) i tak spreparowany adres wstawia się do adresu sieci. Taka sieć oczywiście musi być /64. Jest to tak zwany mechanizm Stateless autoconfiguration, który wykorzystuje specjalne wiadomości ICMPv6: Router Advertisement, Router Solicitation, Neighbor Advertisement i Neighbor Solicitation. Pod Linuksem obsługą tego mechanizmu zajmuje się demon radvd (Router Advertisement Deamon) i spełnia podobne funkcje co DHCP w sieciach IPv4 (istnieje również DHCPv6). W ten sposób, każde dołączone do sieci urządzenie automatycznie dostaje swój własny, unikalny adres IPv6 i jest konfigurowane do routowania ruchu IPv6 na odpowiednie interfejsy.
Sieć SixXS pozwala również na przejęcie odwrotnej strefy DNS dla używanej podsieci. Oczywiście też już sobie skonfigurowałem i w sieci IPv6 mój komputer jest widoczny jako wifi.ed74.sawicki.eu.org, a nie jako 2001:6a0:14d:1:215:afff:fe2d:d813 ;-) Wykorzystałem do tego serwer DNS na SGH (FreeDNS).
Cała konfiguracja IPv6 do działania na routerze linuksowym i na linuksowych stacjach jest banalna. Pod Windowsem XP (jeden z moich komputerów niestety chodzi pod tym przeklętym systemem) też nie jest problemem. Ale ilość opcji pod Windowsem jest nadzwyczaj skąpa. Cóż wymagać od Microsoftu.
Udało mi się nawet skonfigurować OpenVPN do stworzenia wirtualnego ethernetu (nie tunelu), w którym każde (wirtualne) urządzenie również dostaje automatycznie adres IPv6.
OpenVPN - prosta i szybka konfiguracja
09.02.2008 - Sobota - 21:57
Chciałbym napisać w jaki sposób połączyć siecią wirtualną dwa komputery działające pod kontrolą systemu GNU/Linux i wykorzystujące oprogramowanie OpenVPN.
Podstawową sprawą jest posiadanie OpenVPN. Ten program nie ma wydzielonej części serwerowej i klienckiej. W zależności od zawartości pliku konfiguracyjnego może działać jako klient lub serwer (a nawet jako jedno i drugie). Ja, Ubunciarz z wyboru, nie parałem się kompilacją programu ze źródeł. Po co? ;-) Wklepałem po prostu apt-get install openvpn i po chwili miałem już zainstalowane oprogramowanie.
Całość konfiguracji sprowadza się do kilku prostych czynności. Pierwszą jest wygenerowanie klucza, który będzie używany do szyfrowania danych przesyłanych przez VPN. Jak? Banalnie...
root@eu07:~# openvpn --genkey --secret plik.key
Plik z kluczem przekopiowałem do katalogu /etc/openvpn zarówno w jednym jak i drugim komputerze. Wiem, że ten plik powinien być "secret", ale kto mi go przeczyta? Ja sam? ;-)
Następnie należy stworzyć pliki konfiguracyjne serwera i klienta. OpenVPN w trakcie startu przeszukuje /etc/openvpn w poszukiwaniu plików *.conf, a następnie je analizuje i uruchamia się wedle ich zaleceń. Jeden plik - jedna instancja OpenVPN, klienta lub serwera.
Zatem vi /etc/openvpn/server1.conf
dev tun secret /etc/openvpn/plik.key proto tcp-server ifconfig 192.168.11.1 192.168.11.2 daemon verb 4 log-append /var/log/openvpn.log keepalive 10 900 inactive 360000 comp-lzo
W pierwszej linijce pliku konfiguracyjnego wskazujemy OpenVPN, żeby korzystał z mechanizmu TUN, czyli enkapsulacji pakietów w warstwie trzeciej (sieci). Istnieje możliwość pracy w warstwie drugiej (łącza danych) przy pomocy mechanizmu TAP. Oczywiście TAP/TUN musi być obsługiwane przez jądro. Kolejna linia to wskazanie pliku zawierającego klucz. Linijka proto to wybór protokołu. Próbowałem opcji UDP, ale z nieustalonych jeszcze przeze mnie przyczyn nie nawiązałem transmisji pomiędzy komputerami wpiętymi w sieć VPN. Linijka ifconfig to linia wskazująca adresy IP węzłów sieci. Pierwszy adres to adres komputera, na którym jest ta instancja uruchamiana, drugi to adres komputera odległego. Interfejsy są konfigurowane w trybie point to point, a więc nie można podłączyć kilku komputerów do jednego serwera. Według dokumentacji jest to możliwe, ale mi nie wyszło. Linia daemon może pozostać bez wyjaśnienia ;-) Następnie poziom gadatliwości w logach - maksymalnie gadatliwy to dziewiątka; ścieżka do pliku logów i czasy utrzymywania serwera i interfejsów bez transmisji. Wartość inactive polecam ustawić dość dużą, jeśli serwer VPN nie będzie miał cały czas podłączonego klienta wymieniającego dane. No i na końcu wkazujemy, że chcemy wykorzystać kompresję danych.
Teraz należy zadbać o odblokowanie portu 1194 (domyślnego portu OpenVPN) dla transmisji TCP na maszynie, która będzie służyć za serwer.
root@eu07:~# iptables -A INPUT -p tcp --dport 1194 -s 0/0 -j ACCEPT
Cóż pozostaje zrobić teraz? Skonfigurować klienta: vi /etc/openvpn/client1.conf
dev tun proto tcp-client remote adres.serwera.net 1194 secret /etc/openvpn/plik.key ifconfig 192.168.11.2 192.168.11.1 keepalive 10 60 route 192.168.0.0 255.255.255.0 route 192.168.1.0 255.255.255.0 comp-lzo
Wyjaśnić należy linijkę remote, w której zapisany jest adres serwera (ten zewnętrzny, w sieci Internet) oraz port na, którym działa serwer. Różnica jest w linijce ifconfig - adresy zapisane są w odwrotnej kolejności, ale nadal pierwszy to adres końca lokalnego, a drugi końca odległego. Linijki route to informacje, że ruch do podsieci tam wymienionych ma być realizowany z wykorzystaniem VPN. W tym przypadku to adresy sieci rzeczywistych, które są osiągalne z serwera (który pełni dla nich funkcję routera z NAT).
Teraz tylko trzeba wszystko wystartować:
root@eu07:~# /etc/init.d/openvpn start
krzysztof@ed74:~$ sudo /etc/init.d/openvpn start
Teraz można sprawdzić czy VPN działa:
krzysztof@ed74:~$ ping 192.168.11.1 PING 192.168.11.1 (192.168.11.1) 56(84) bytes of data. 64 bytes from 192.168.11.1: icmp_seq=1 ttl=64 time=6.42 ms 64 bytes from 192.168.11.1: icmp_seq=2 ttl=64 time=5.61 ms 64 bytes from 192.168.11.1: icmp_seq=3 ttl=64 time=5.26 ms --- 192.168.11.1 ping statistics --- 3 packets transmitted, 3 received, 0% packet loss, time 1999ms rtt min/avg/max/mdev = 5.262/5.765/6.420/0.484 ms
Widzą się, ale...
krzysztof@ed74:~$ ping 192.168.0.1 PING 192.168.0.1 (192.168.0.1) 56(84) bytes of data. --- 192.168.0.1 ping statistics --- 10 packets transmitted, 0 received, 100% packet loss, time 9008ms
Mimo, że wskazaliśmy komputerowi, że do tej sieci ma pakiety puszczać przez VPN transmisji nie ma. Istotnie wszystkie pakiety, które wysyłamy do 192.168.0.1 są puszczane przez VPN, ale na serwerze nie ma regułek przekazywania pakietów pomiędzy sieciami.
root@eu07:~# iptables -A FORWARD -s 0/0 -d 192.168.11.0/24 -j ACCEPT root@eu07:~# iptables -A FORWARD -s 192.168.11.0/24 -d 0/0 -j ACCEPT
Dopiero po takim posunięciu komputer-serwer potraktuje VPN jak każdą inną sieć podpietą do niego i będzie przekazywał pakiety do innych sieci. Nie ma sensu włączać maskarady (NAT) dla tej podsieci, bo wciąż poruszamy się w zakresie adresów z puli prywatnej, które w sieci wewnętrznej będą śmigały aż miło.
VPN
03.02.2008 - Niedziela - 22:07
Jako, że każdy mężczyzna powinien w życiu, poza drzewem itp., nauczyć się Vima oraz postawić VPN, postanowiłem wreszcie, że postawię VPN ;-)
Głównym założeniem tej sieci wirtualnej jest udostępnienie mi zasobów mojej domowej sieci lokalnej niezależnie od miejsca, w którym przebywam i niezależnie od łącza, którym dysponuję. A oprócz tego zawsze można znajomych dołączyć, szczególnie tych bez adresu publicznego ;-)
Pierwsze kroki postawiłem z OpenVPN. Działa bardzo fajnie, ale ma jedną wadę - połączenia są typu punkt-punkt. Próby skonfigurowania jednej podsieci wirtualnej dla wielu klientów niestety nie powiodły się, mimo poświęcenia wielu godzin. Próbowałem też z OpenSWAN, czyli IPsec, ale też się nie udało.
Pozostałem zatem przy OpenVPN i podsiecią dla każdego klienta (czyli dodatkowym serwerem i interfejsem sieciowym w systemie). Widoczność między podsieciami zapewniam przez regułki iptables. I nadal działa wyśmienicie ;-)
Może kiedyś napiszę jak skonfigurować takiego VPN-a ;-)
Nowe łącze, nowe problemy
28.10.2007 - Niedziela - 12:04
I mam nowe łącze. O ile przestawienie anteny nie było skomplikowane, o tyle problem był z utworzeniem linka PPPoE po interfejsie wlan0. Ale udało się. Nie chcę mówić jak wiele problemów to sprawiło, ale jest.
Megabit jest. Pod warunkiem, że akurat mam w miarę silny sygnał. Bo jeśli nie, to mam ogromne pingi (rekord to trzy sekundy!) i makabryczne straty w pakietach wysyłanych (bez możliwości zmiany MTU dla interfejsu fizycznego wlan0, a nie ppp0). Ale problem powoduje tutaj niezgodność polaryzacji anten. A to oznacza konieczność wymiany anteny... Na razie się trochę pomęczę, a potem zdecyduję, czy jest sens wymiany anteny.
Za to teraz mam wreszcie możliwość pooglądania kolejowych filmików na YouTube ;-) Obejrzenie wszystkich zajmie mi co najmniej kilka dni ;-)
No i mam wreszcie zewnętrzne IP i już prawie zarejestrowaną domenę podpiętą pod ten IP ;-) Trochę się musiałem namęczyć z regułkami iptables, żeby udostępnić tylko to co chcę na zewnątrz, ale wygląda na to, że wszystko jest ok. Nmap (z nmap-online.com) właśnie kończy skanowanie portów. Najbardziej zastanowił mnie noffle, który nasłuchiwał na wszystkich interfejsach sieciowych i bez żadnej autoryzacji przyjmował każde połączenie. Teraz słucha tylko w sieci wewnętrznej po kablu. Mysql też był otwarty z sieci. Co prawda użytkownicy mieli prawo łączyć się tylko po interfejsie zwrotnym i sieci wewnętrznej, ale nie zaszkodzi uciąć możliwości łączenia się z zewnątrz. Miałem też kilka portów, których przeznaczenia nie znałem. Też uciąłem ;-) Przed chwilą zauważyłem, że wyciąłem trochę za dużo i router nie może się z niczym połączyć. Ale już poprawiłem ;-) Chociaż pewnie za jakiś czas okaże się, że o czymś znowu zapomniałem ;-)
Moja domowa sieć jest ostatnio bardzo obciążona. Właśnie do switcha jest podłączonych pięć komputerów. Ja nie wiem po co mi tyle ;-)
A poza tym jakoś to leci ;-)
Ubuntu
15.05.2007 - Wtorek - 18:11
Przyszło do mnie dzisiaj trzydzieści płyt z Ubuntu 7.04. Jutro zaczynam rozdawanie na Wydziale.
Nieco spóźniony wpis z projektem
17.12.2006 - Niedziela - 14:52
Jakiś czas temu miałem termin oddania projektu układu opisanego w VHDL-u. Ponieważ do dyspozycji miałem tylko CPLD Xilinx XC95108, który bardzo pojemnym układem nie jest, program nie mógł być zbyt skomplikowany. Napisałem więc symulator taśmociągu z dwiema programowalnymi bramkami.
Większość opisu napisałem u siebie w domu, skompilowałem i przetestowałem oglądając przebiegi czasowe. Ale już na miejscu, w pracowni, okazało się, że trochę "przedobrzyłem". Nie wziąłem pod uwagę faktu, że układ nie poradzi sobie z tak skomplikowanym programem... Musiałem się wziąć za "odchudzanie"... W moich pierwotnych założeniach układ był zupełnie niezależny od zegara znajdującego się na płytce. Odpowiednie działania miały się wykonywać w momencie pojawienia się narastających zboczy sygnałów symulujących i programujących (to jest wciśnięć przypisku symulującego paczkę i przycisków programowania bramek). Niestety, w XC95108 można wykorzystać tylko trzy sygnały, które będą sprawdzane pod kątem wystąpienia zbocza (takie sprawdzanie jest możliwe tylko w przerzutniku synchronicznym na jego wejściu zegarowym). Ja potrzebowałem niestety co najmniej czterech takich sygnałów. Musiałem więc sobie darować tę możliwość i wykorzystać uzależnienie od zegara wewnętrznego, co jest nieco gorszym rozwiązaniem. Kolejnym problemem była ilość porównać dokonywanych w układzie. Komparatory wielobitowe szybko i skutecznie zżerają zasoby układu, przez co momentalnie straciłem możliwość "wgrania" opisu do tego układu. Musiałem podjąć kolejne kroki optymalizacyjne: łączenie czterobitowych wektorów w ośmiobitowe (dzięki temu nieco lepiej mogłem rozdysponować zasoby w poszczególnych makrokomórkach), minimalizacja ilości zmiennych wewnętrznych (zwalniałem przerzutniki), usunięcie sygnałów typu buffer (kolejne wolne przerzutniki) itd. Po odchudzeniu układ dawał się zaprogramować, ale stracił kilka fajnych bajerów, które miałem ochotę do niego wrzucić. Ważne, że wyrobiłem się w czasie (jako jeden z nielicznych) i nie muszę teraz stosować dalszego odchudzania ;-)
Oczywiście zamieszczam pełny kod opisu układu. Oczywiście w VHDL ;-)
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_arith.all;
use ieee.std_logic_unsigned.all;
entity sterownik is
port(
WE, R, P0, P1, AKC: in std_logic;
CLK: in std_logic;
LED1, LED2: out std_logic_vector(7 downto 0));
end sterownik;
architecture urzadzenie of sterownik is
function hex2led (hex: std_logic_vector(3 downto 0)) return std_logic_vector is
variable s: std_logic_vector(7 downto 1);
begin
case hex is
when "0000" => s:= "1000000";
when "0001" => s:= "1111100";
when "0010" => s:= "0001001";
when "0011" => s:= "0011000";
when "0100" => s:= "0110100";
when "0101" => s:= "0010010";
when "0110" => s:= "0000010";
when "0111" => s:= "1111000";
when "1000" => s:= "0000000";
when "1001" => s:= "0010000";
when "1010" => s:= "0100000";
when "1011" => s:= "0000110";
when "1100" => s:= "1000011";
when "1101" => s:= "0001100";
when "1110" => s:= "0000011";
when "1111" => s:= "0100011";
when others => s:= "1010101";
end case;
return s;
end hex2led;
begin
process(CLK, WE, AKC, P0, P1, R)
variable B: std_logic_vector(7 downto 0) := "00000000";
variable BS: std_logic_vector(7 downto 0);
variable start: std_logic := '0';
begin
if R = '1' then
B := "00000000";
BS := "00000000";
LED1(0) <= '1';
LED2(0) <= '1';
start := '0';
elsif CLK'event and CLK = '1' then
if P0 = '1' then BS(7 downto 4) := BS(7 downto 4) + 1;
elsif P1 = '1' then BS(3 downto 0) := BS(3 downto 0) + 1;
elsif AKC = '1' then start := '1';
elsif WE = '1' then
if B(7 downto 4) < BS(7 downto 4) then
B(7 downto 4) := B(7 downto 4)+1;
if B(7 downto 4) = BS(7 downto 4) then
LED1(0) <= '0';
end if;
elsif B(3 downto 0) < BS(3 downto 0) then
B(3 downto 0) := B(3 downto 0)+1;
if B(3 downto 0) = BS(3 downto 0) then
LED2(0) <= '0';
end if;
elsif B = BS then
B := "00010000";
LED1(0) <= '1';
LED2(0) <= '1';
end if;
end if;
end if;
if start = '1' then
LED1(7 downto 1) <= hex2led(B(7 downto 4));
LED2(7 downto 1) <= hex2led(B(3 downto 0));
else
LED1(7 downto 1) <= hex2led(BS(7 downto 4));
LED2(7 downto 1) <= hex2led(BS(3 downto 0));
end if;
end process;
end urzadzenie;
Testbencha zamieścić? ;-)
Słowa kluczowe: vhdl programowanie komputer linux
Czemu X zamiast jedynki?
25.11.2006 - Sobota - 18:27
Spodobał mi się VHDL, więc postanowiłem nieco głębiej w niego "wejść", no ale do tego potrzebne mi jest oprogramowanie. Oczywiście, mogę sobie kupić płytkę testową z układem programowalnym, ale wydatek rzędu 150 dolarów mnie przeraża. Muszę korzystać z symulatorów. A pod Linuksem wcale nie jest tak różowo. Co prawda Altera i Xilinx (dwaj czołowi producenci układów programowalnych) udostępniają swoje oprogramowanie w wersji dla Linuksa, ale... ISE Webpack Xilinksa to nieco ponad gigabajt danych do ściągnięcia i spore wymagania jeśli chodzi o sprzęt. A na dodatek "Requires Red Hat Enterprise 3.0", przez co już wiadomo, że mogą być kłopoty z jego uruchomieniem na Ubuntu. W przypadku Altery też podobnie...
Dlatego muszę skorzystać z GHDL-a i Gtkwave'a. Niestety zintegrowanego pakietu, który zrobiłby wszystko za mnie nie znalazłem, ale może i dobrze. Lepiej poznam ten język. W pakietach typu ISE Webpack czy Quartus (Altera) po napisaniu kodu można sobie "wyklikać" przebiegi testowe i zobaczyć odpowiedź układu. W przypadku GHDL-a muszę sobie napisać samemu testbencha (program testujący). I tu się zaczynają schody...
Na początek napisałem sobie prosty licznik modulo 16:
library ieee; use ieee.std_logic_1164.all; use ieee.numeric_std.all; entity licznik16 is port( CLK: in std_logic; Q: out std_logic_vector(3 downto 0); R: in std_logic); end licznik16; architecture licz of licznik16 is begin process(CLK, R) variable stan: unsigned(3 downto 0):="0000"; begin if R = '0' then stan:="0000"; elsif (CLK'event and CLK='1') then stan:=stan+1; end if; Q <= std_logic_vector(stan); end process; end licz;
Napisałem, stwierdziłem, że powinien działać, ale warto byłoby go sprawdzić. No to wziąłem się za pisanie testbencha... Na początku wszystko szło bez przeszkód. Testbench napisał się momentalnie. Nieco zaglądałem do podręczników i skakałem po przykładach z Internetu, ale jakoś napisałem. Udało się skompilować i wygenerowałem plik z przebiegami, który obejrzałem sobie w Gtkwave. I tu zaskoczenie! Wszystko gra, ale nie do końca... Ale najpierw rzućmy okiem na testbencha:
library ieee; use ieee.std_logic_1164.all; use ieee.numeric_std.all; entity licztb is end licztb; architecture licztbarch of licztb is component licznik16 port(CLK: in std_logic; Q: out std_logic_vector(3 downto 0); R: in std_logic); end component; signal zegar, reset: std_logic; signal Q: std_logic_vector(3 downto 0); begin mapowanie: licznik16 port map(CLK=>zegar, R=>reset, Q=>Q); process begin Q<"0000"; wait for 10 ns; zegar <= '0'; wait for 10 ns; reset <= '1' after 1 ns, '0' after 90 ns, '1' after 150 ns; wait for 10 ns; for i in 0 to 100 loop zegar <= not(zegar); wait for 50 ns; end loop; wait; end process; end licztbarch;
Czyli jak widać, najpierw zeruję wyjście, co na przebiegach widać. Chwilę potem inicjalizuję zegar (zegar ma operować tylko na stanach 0 i 1, wszelkie pozostałe stany są wykluczone), co też widać. Następnie sprytnie generuję sygnał resetujący licznik, chociaż nie muszę tak naprawdę tego robić, bo licznik został zresetowany na początku procesu. W pętli, tworzę prostokątny przebieg zegara o okresie 100 nanosekund. Zegar ten jest sprzężony z zegarem CLK w w samym liczniku. Czyli z każdym zboczem narastającym (CLK'event and CLK='1') licznik będzie się zwiększał o jeden. I wszystko byłoby ok, gdyby nie to, że zamiast stanu 1 na przebiegach pojawia się stan X (co w logice dziewięciowartościowej oznacza stan nieznany). Mało tego! Układ traktuje go jako jedynkę, bo wcale jego pojawienie się nie zaburza działania. Ale mimo to tego stanu tam nie powinno być!
Ślęczę nad tym już którąś godzinę i nie wiem co z tym zrobić... Czyżby to było związane z konwersją zmiennej typu unsigned na sygnał std_logic_vector? Nie wiem... Ktoś pomoże?
Słowa kluczowe: vhdl programowanie komputer linux
Edgy Eft już działa
01.11.2006 - Środa - 16:09
Zainstalowałem. Bez większych problemów. Co oczywiście nie oznacza, że problemów nie było. Jakimś nieznanym zrządzeniem losu zmienna LANG zamiast wartości pl_PL.UTF-8 miała wartość C, przez co miałem anglopolski interfejs z krzakami, a niektóre programy w ogóle nie chciały się uruchomić. Oczywiście zadziałało:
sudo apt-get install localeconf sudo dpkg-reconfigure localeconf
Już jest wszystko działające. Prawie wszystko... Bo oczywiście mam jeszcze masę programów do zainstalowania z repozytoriów. Wszystko co mi przychodzi do głowy zapisuję na kartce. Już mam prawie całą A4 zapisaną ;-)
Firefox 2.0. Uruchomiłem i wróciłem do lokalnej kopii 1.5.0.7. Muszę wpierw sprawdzić, które rozszerzenia mają odpowiedniki działające z 2.0. Ale na to też przyjdzie pora.
Zauważyłem też jakiś dziwny format /etc/fstab. Ale na szczęście działają też wpisy w starym formacie ;-) Kilka katalogów z routera ładnie po NFS się zamontowało.
Nie podoba mi się ten nowy splash pokazujący się w czasie startu systemu. Nie mam pojęcia co się dzieje. Chyba trzeba będzie go wyrzucić, żeby mieć stary, dobry, tekstowy podgląd na proces startu. Ale za to startuje nieco szybciej ;-)
Migracja Dapper - Edgy
01.11.2006 - Środa - 12:08
Zaktualizuję sobie system. Z Ubuntu 6.06.1 Dapper na 6.10 Edgy. Ale naczytałem się, że może być nieco kłopotów z aktualizacją, więc postawię system od zera. Mam już ściągnięte płyty Desktop i Alternate (ściągnąłem alternate z zamiarem aktualizacji przy jej pomocy), więc teraz zostaje mi tylko wybór płyty. Pewnie zainstaluję z Alternate. Większość zapisanej konfiguracji i tak mam w /home na oddzielnej partycji, dlatego nie będę miał zbyt dużo do ustawiania po instalacji. No może tylko dodam dyski montowane po NFS i zadania do crona.
Zobaczymy jak to będzie wyglądało...
Zrobiłem głupi błąd, a teraz żałuję
25.08.2006 - Piątek - 13:49
Instalując Linuksa pomyślałem, że mógłbym zainstalować go na drugim dysku - sześciogigabajtowym Samsungu. Zupełnie nie wziąłem pod uwagę faktu, że przecież ten dysk ma czasem problemy "ze sobą" i lubi się "zaciąć" z bliżej nieznanej przyczyny.
I co się dzieje? Robię coś, odczytuję jakiś plik i następuje całkowite zawieszenie systemu. Dysk nie odpowiada, wszystko się blokuje... Czasem nawet wiesza się podczas startu systemu. Dmesg nie zwraca żadnych niepokojących informacji o tym dysku, e2fsck nie znalazło badsektorów, a dysk się zacina...
Muszę zaryzykować, usunąć jedną partycję z drugiego dysku i stworzyć tam kopie aktualnych partycji z systemem. Jeśli dobrze mi się wydaje to do uruchomienia tej kopii będzie trzeba wyedytować tylko /etc/fstab i zainstalować uaktualnionego Gruba. No, zobaczymy.
Chyba się uda...
04.08.2006 - Piątek - 18:51
Już od dawna zamierzałem uczynić Linuksa systemem, w którym wykonuję swoje codzienne czynności - czytanie poczty, newsów, przeglądanie stron, programowanie itp. Kiedy miałem modem nie miałem szans tego zrobić. Modem nie chciał współpracować z Linuksem. Kiedy dorobiłem się stałego łącza byłem już zbyt uzależniony od Windowsa. Miałem chęci, żeby jednak się przesiąść ale nie udało mi się to. Sterowniki do D-Linka DWL-520+ nie nadawały się jeszcze do normalnego używania. Nie potrafiły utrzymać połączenia, przez co ich używanie było bez sensu. Pozostawałem przy Windowsie. Ale kiedy w moim domu pojawiła się pierwsza paczka z Ubuntu 5.04 okazało się, że już sterowniki dla tej karty są już na tyle dobre, że można z nich normalnie korzystać. Dorobiłem się trzeciego komputera, który przeznaczyłem na router. Zainstalowałem na nim Ubuntu i przełożyłem do niego kartę sieciową. W tym momencie rozpoczęła się ponownie moja przygoda z Linuksem ;-)
Dwa lata po dorobieniu się stałego łącza zaczynam kolejną migrację na Linuksa. Mam teraz na desktopie zainstalowanego Ubuntu 6.06, który możliwościami i wygodą bije Windowsa na głowę. Skonfigurowałem go do swoich potrzeb i, co najważniejsze, wcale nie czuję, żebym tęsknił za Windowsem ;-)
Od dawna już pod Windowsem korzystałem z oprogramowania wieloplatformowego. Zamiast notatnika miałem GVima, zamiast powszechnych pirackich wersji Photoshopa, korzystałem z Gimpa (chociażby do obróbki zdjęć), zamiast MS Office'a miałem OpenOffice'a. Nawet grupy dyskusyjne czytałem przy pomocy slrn-a ;-) No i oczywiście Firefox ;-)
Większość z tych potrzebnych mi do życia programów to oprogramowanie typowo Linuksowe, które chyba tylko przez przypadek, pojawiły się w wersjach dla Windows ;-) Z nimi nie było problemów. Problemy pojawiły się z oprogramowaniem dostępnym tylko dla Windows. Korzystałem z programu pocztowego TheBat! Szukałem czegoś, co mogłoby mi go zastąpić. Thunderbird jakoś nie przypadł mi do gustu. Przez przypadek zainteresowałem się Sylpheedem. I to okazał się strzał w dziesiątkę! Nie ma on tylu opcji co TheBat!, ale w zupełności mi wystarcza. Korzystałem też z Hamstera jako lokalnego serwera news. Musiałem zacząć korzystać z noffle'a, a ten nie jest tak elastyczny jak Hamster. Trochę szkoda, ale mogę się z tym pogodzić. Brakuje mi jednak jednego programu - IrfanView. Niestety nie mogę znaleźć programu, który miałby opcję, do której się przyzwyczaiłem. Przeglądając zdjęcia muszę, po prostu muszę korzystać ze spacji jako klawisza zmiany zdjęcia na następne (tu nie ma problemu, jest sporo programów, które to potrafią); muszę też mieć możliwość włączenia trybu pełnoekranowego (też sporo ma taką możliwość), ale żaden z dotychczas sprawdzanych nie potrafi wyłączyć się po wciśnięciu Esc. A tego mi bardzo brakuje. Po prostu jestem uzależniony od klawisza Escape jako wyłącznika przeglądarki grafiki ;-)
Po przejściu na Linuksa zmieniłem też klienta Jabbera. Dotychczas korzystałem z Psi, które jest strasznie pamięciożerne. Uznałem w końcu, że mam już dość tej ociężałości i zmieniłem klienta na Gajima. I to był bardzo dobry krok. Jest szybki i ma wszystko czego potrzebuję ;-)
Jeszcze mam trochę rzeczy do skonfigurowania (chociażby drukarkę udostępnioną w sieci przez Sambę), ale mam nadzieję, że wytrwam ;-) Wczoraj włączyłem tylko na chwilę Windowsa, żeby wyeksportować książkę adresową z TheBata! I to było wszystko ;-)
Przy okazji chciałbym nadmienić, że mam licencję na Windowsa XP. Dostałem za darmo z uczelni. Raczej z niej nie skorzystam, ale skoro dawali to wziąłem. Jakoś XP wcale mnie nie kręci ;-)
noffle, slrn i UTF8
25.07.2006 - Wtorek - 00:28
Zainstalowałem na routerze lokalny serwer news - noffle. Bardzo przyjemny program. Łatwy w konfiguracji i nawet prosty w użytkowaniu. Niestety ma jedną wadę - nasłuchuje tylko na localhoście (to znaczy przyjmuje połączenia tylko z adresu zwrotnego - 127.0.0.1). Szkoda. Zainstalowałem sobie leafnode inny tego typu serwer. On, według dokumentacji, ma możliwość nasłuchiwania na lokalnym interfejsie. Niestety, mimo, że robiłem wszystko tak jak było napisane w dokumentacji, nie udało mi się uzyskać pożądanego efektu. Pozostałem przy noffle.
Skoro muszę mieć lokalny czytnik na tym samym komputerze co noffle, to musiałem też na routerze zainstalować slrn-a. I wszystko byłoby cacy gdyby nie pewien problem... Mianowice locale, które u mnie jest:
root@eu07:~ # echo $LANG pl_PL.UTF-8
No właśnie... Unikodowe. A z tego co się dowiedziałem (a potem przekonałem się na własnym komputerze) slrn nie chce poprawnie działać z unikodowym locale. Jeśli miałbym locale kodowane w ISO-8859-2 to nie byłoby żadnego problemu... Ale ja chcę mieć unikodowe locale. Chcę być trendy ;-)
Ale próbowałem. Oczywiście poustawiałem odpowiednie nagłówki slrn-owi. Ale slrn nie potrafi zrozumieć, że mój terminal operuje na unikodzie (set charset utf-8 wywala oczywiście błąd). Dlatego wszystkie posty, które wychodziły ode mnie wychodziły w unikodzie, mimo, że z nagłówkami ISO-8859-2. Pozostało tylko przekonfigurowanie Vima. Ale Vim też się specjalnie do tego nie nadaje - kombinowanie z ustawieniami set termencoding=utf-8 i set encoding=iso-8859-2 nie dawało poprawnego rezultatu, bo znaki owszem były zakodowane w ISO-8859-2, ale pozostawał przed nimi jakiś unikodowy "śmieć". Oczywiście, że można te śmieci usunąć jednym ruchem, ale to nie jest eleganckie rozwiązanie. Wykombinowałem więc, żeby przekodowywać pliki .followup i .article na ISO-8859-2 przed ich wysłaniem. To działało, ale to też nie jest zbyt dobre rozwiązanie - za każdym razem trzeba uruchamiać jakiś program konwertujący.
Oprócz tego pojawiał się kolejny problem. Przy unikodowym locale tylko posty napisane w unikodzie wyświetlały się poprawnie. W innych postach, znaki spoza tych dostępnych bezpośrednio z klawiatury wyświetlane były jako <kod>, a to strasznie nieprzyjemnie wygląda i utrudnia czytanie...
Miałem jeszcze nadzieję, że pomoże tutaj slrn-pl. Ściągnąłem, skompilowałem, uruchomiłem... I nic... To samo. I nie ma się co dziwić, bo to przecież ten sam slrn, oparty na tej samej bibliotece S-LANG. Ponoć w nowej wersji tej biblioteki będzie obsługa unikodu i wtedy slrn dostanie jego wsparcie. Ale kiedy to będzie...
No nic... Musiałem skorzystać z półśrodka, ale przynajmniej poprawnie działającego. Na czas działania slrn-a zmieniam locale z UTF-8 na ISO-8859-2. Locale ISO w Ubuntu jest trochę niepełne i slrn z trybu "dość dużo spolsczonego" przeskakuje w tryb "najwyżej parę spolszczonych wyrazów". Na dodatek na fizycznym terminalu całkowicie wtedy znikają "ogonki" - te litery najzwyczajniej są wcinane, a tekst wyświetla się tak jakby ich nie było. Na szczęście na routerze nie będę korzystał z slrn-a na fizycznym terminalu. Będę korzystał przez SSH, a w Windowsowym putty i w wielu terminalach graficznych pod Linuksem (chociażby standardowy terminal Gnome) jest możliwość wyboru kodowania znaków. Robię "myk" i wszystko jest ok. Szkoda tylko, że potrzebne jest takie kręcenie w kółko...
Wrócę jeszcze do widoczności noffle'a poza localhost. Tego nie przeskoczę, ale mogę pokombinować z montowaniem katalogu z grupami przez sieciowy system plików - nfs (samba się nie nada, bo nie ma możliwości przekazać praw dostępu) i zainstalowaniem na komputerze zdalnym noffle'a, którego pliki konfiguracyjne byłyby też dostępne przez nfs. Hmm... To ma szanse wziąć ;-)
PHP Solutions: Live CD
12.07.2006 - Środa - 18:09
Tak, dotarł do mnie kolejny numer PHP Solutions do recenzji. Idąc śladem Piotra Koniecznego postanowiłem, że recenzje będę zamieszczał na swoim blogu - wpisy z odpowiednim tytułem i opisane słowem kluczowym phpsolmag. A ponieważ Wy - czytelnicy, nie macie nic do powiedzenia, pozostaje Wam tylko czytać ;-)
Na pierwszy ogień pójdzie płyta dołączona do numeru, a właściwie dystrybucja Linuksa PHP Solutions Live. Co to za cudo? Jest to zmodyfikowana wersja Auroksa, która uruchamia się z płyty i zawiera w sobie środowisko LAMP, czyli minimum narzędzi każdego webmastera programującego z wykorzystaniem PHP i MySQL.
Wszystko uruchamia się w miarę szybko i po dwóch minutach pojawia się pulpit KDE. I tu pierwsza rzecz, która mi się nie podoba - KDE jest pamięciożerne, a w przypadku dystrybucji Live to nie jest dobre rozwiązanie. Jakaś wielka tapeta, masa powłączanych bajerów... Wyłączyłem to czym prędzej i widać niewielką poprawę działania. Ponoć wcześniej domyślnym menedżerem był Fluxbox. Z pewnością jest on dużo lżejszy...
Zaraz po wystartowaniu KDE uruchamia się Firefox (w wersji 1.0.7) i pojawia się spis zawartości płyty. Niestety, nie znalazłem tam ani słowa o samej dystrybucji PHP Solutions Live. A szkoda... Bo trzeba się wykazać odrobiną inicjatywy, żeby skorzystać z dóbr tej dystrybucji.
W menu zauważyłem, że jest dostępny Konqueror (no, w końcu to KDE ;-)). Daaawno nie miałem z nim do czynienia. Szybko go uruchomiłem i sprawdziłem jak prezentuje się Antylameriada w tej przeglądarce. No! Jest dobrze ;-)
Ale wróćmy do zasadniczego tematu tej notki. W dystrybucji dostępne są Apache 2.0.54, MySQL 4.1.16 oraz PHP 5.0.4. Całkiem interesujący zestaw. Na jednej ze stron papierowego magazynu było napisane, że dystrybucja ta ma służyć do testowania dowolnych skryptów bez instalacji. To chyba małe niedomówienie ;-) Jeśli skrypt wymaga instalacji, to trzeba go zainstalować. Nie instalujemy tylko systemu, bo dostajemy gotowca ;-)
Jednym z hitów numeru jest pełna wersja skryptu CaRP Koi, który służy do analizy i wyświetlania kanałów RSS na stronach. Skrypt ten umieszczony jest w domyślnym katalogu serwera WWW: /var/www/html/. Otwieram w przeglądarce adres: http://live/carp/. Widzę plik carpsetup.php. Uruchamiam go... I nic. Wyskoczył jakiś błąd, że nie może odpytać DNS-a o domenę www.geckotribe.com. Dziwne... Nie mam DHCP na routerze, więc kartę sieciową skonfigurowałem ręcznie, ale DNS-y wpisałem poprawne. W konsoli:
$ host www.geckotribe.com www.geckotribe.com is an alias for geckotribe.com. geckotribe.com has address 216.194.115.244 www.geckotribe.com is an alias for geckotribe.com. www.geckotribe.com is an alias for geckotribe.com. geckotribe.com mail is handled by 10 mail.geckotribe.com.
Wygląda na to, że jest ok. Ale na wszelki wypadek, w konsoli administratora (na konto root logujemy się bez hasła):
# echo "216.194.115.244 www.geckotribe.com" >> /etc/hosts
Uruchamiam skrypt instalacyjny jeszcze raz. Już nie wyskoczył żaden błąd, ale też nic szczególnego się nie stało (żadne pliki się nie zainstalowały, skrypt o nic nie pytał, zero akcji). Hmm... A może coś z prawami dostępu... Sprawdzam. Tak! /var/www/html/ ma prawa rwxr-xr-x. Dobra, uzupełniłem prawa w tym katalogu i we wszystkich katalogach wewnątrz. Uruchamiam ponownie. O! Działa. Skrypt spytał się jaki sposób instalacji wybieram. Wybrałem manualny i po kilku kliknięciach wszystko było w porządku. Potem jeszcze tylko sprawdziłem jak działa ten skrypt i, w tym temacie, to mi wystarczyło ;-)
Wziąłem na tapetę serwer MySQL. Hmm... Zazwyczaj potrzeba loginu i hasła, a nigdzie takie informacje nie zostały podane. Więc kombinuję. Wywołanie połączenia z serwerem z konta roota: nie, nie działa. Wywołanie połączenia z konta domyślnego (aurox): oooo! Chyba dobrze. Nawet jedna baza już jest, ho, ho ;-)
[aurox@live aurox]$ mysql -u aurox Welcome to the MySQL monitor. Commands end with ; or g. Your MySQL connection id is 3 to server version: 4.1.16 Type 'help;' or 'h' for help. Type 'c' to clear the buffer. mysql> show databases; +----------+ | Database | +----------+ | test | +----------+ 1 row in set (0.74 sec) mysql> use test; Database changed mysql> show tables; Empty set (0.00 sec) mysql>
A co jeszcze na płycie? Na pulpicie są wyróżnione ikony:
- Nvu
- Quanta
- Bluefish
- Eclipse
- gmplayer (na płycie jest jakiś tutorial w pliku wideo)
Oczywiście, jak to w dystrybucjach Live, straaasznie wolno wszystko się uruchamia. Ale widać, że twórcy tej dystrybucji chcieli zapewnić bogaty (bo jednak sporo tego jest) zestaw narzędzi do testowania swoich (i nie tylko) skryptów. Niestety eclipse chyba się "zaćmił" na płycie, bo pojawia się splash, ale potem już raczej nie widać żadnych efektów... Wróć! O! Jednak coś widać! Poprosił mnie o wskazanie katalogu domowego. Teraz pojawił się jakiś pasek postępu. Muszę jeszcze czekać...
Czekam...
Czekam...
Czekam...
Już pojawiło się jakieś okno, ale wciąż nie wyrysowały się żadne kontrolki... Chyba dam sobie z tym spokój.
Podsumowując: w tej dystrybucji jest na plus:
- Interesujący pomysł: Linux, Apache, MySQL i PHP w dystrybucji Live
- PHP 5
- Szybki start
- Sporo oprogramowania związanego z PHP
- Montowanie znalezionych partycji na dyskach twardych
A na minus:
- KDE z wodotryskami
- Wynikające z tego obciążenie pamięci i bardzo powolne działanie oprogramowania po starcie
- Brak chociażby najmniejszego pliku pomocy przydatnego dla osób, które nie znają Apache'a i MySQL-a, a chciałyby przetestować dystrybucję
- Brak możliwości wyjęcia nośnika z czytnika przed wyłączeniem komputera
Ale ogólnie to nawet mi się podoba ;-)
Problem z kolorowaniem w Vimie
04.07.2006 - Wtorek - 16:28
Myślałem, że już wszystko wróciło do normy. Ale okazało się, że jeszcze nie. Nie działało kolorowanie w Vimie. Teoretycznie syntax on jest wpisane do pliku /etc/vim/vimrc, ale kolorów nie widać. Próba włączenia kolorowania przez wydanie komendy syntax on w działającym już Vimie kończyła się błędem:
Wykryto błąd podczas przetwarzania /usr/share/vim/vim64/syntax/syntax.vim: wiersz 42: E216: Nie ma takiej grupy lub wydarzenia: filetypedetect BufRead
I bądź tu człowieku mądry...
Ale coś z tym zrobiłem. Okazało się, że aktualizacja Ubuntu spowodowała też aktualizację Vima 6.3 do Vima 6.4, ale nie spowodowała aktualizacji plików konfiguracyjnych. Wystarczy wyedytować plik /etc/vim/vimrc i zamienić linijkę:
set runtimepath=~/.vim,/etc/vim,/usr/share/vim/vimfiles,/usr/share/vim/addons,/usr/share/vim/vim63,/usr/share/vim/vimfiles,/usr/share/vim/addons/after,~/.vim/after
na:
set runtimepath=~/.vim,/etc/vim,/usr/share/vim/vimfiles,/usr/share/vim/addons,/usr/share/vim/vim64,/usr/share/vim/vimfiles,/usr/share/vim/addons/after,~/.vim/after
Czyli po prostu uaktualnić ścieżki. Potem już wszystko działa wyśmienicie. A piszę to, bo może ktoś będzie miał podobny problem ;-)
A może ściągnąć i zainstalować sobie Vima 7... Może...
I po aktualizacji...
03.07.2006 - Poniedziałek - 16:10
Zakończyłem już aktualizację Ubuntu na routerze. Niestety, nie przebiegła bezproblemowo, ale od początku.
Polecenia:
# apt-get update #apt-get dist-upgrade
wykonałem wczoraj około 23:00. Myślałem, że wszystko wykona się szybko i sprawnie w nocy. Do ściągnięcia było 255 megabajtów pakietów. No to zaczęło się ściągać. Obudziłem się około piątej rano. Ściągnięte było tylko 94%. Nieciekawie. Nie zdąży się to wszystko wykonać przed moim wyjazdem do Skierniewic... Ale wracam do łóżka. O szóstej dysk przestał skrobać. Wstałem i zobaczyłem, że wszystko zostało ściągnięte, prócz jednego, niewielkiego pakietu: lvm2. Ponownie apt-get dist-upgrade. Ściągnęło się. Rozpoczęło się instalowanie pakietów. Kilka pytań, o nazwę systemu, konfigurację Postfiksa itp. OK. Leci dalej. Około 6:30 wywala się nagle... Pakiet lvm2 jest uszkodzony. No to usunąłem ten pakiet i poprosiłem o jego ponowne pobranie. Dodatkowo jeszcze dpkg -f --configure, żeby uzupełnić konfigurację już zainstalowanych pakietów. Ponownie apt-get dist-upgrade. Znowu to samo. Ten pakiet musi być uszkodzony na serwerze. Trudno. Kombinuję dalej. To może apt-get dist-upgrade --ignore-missing --no-download oraz usunięcie tego uszkodzonego pakietu. Poszło! Dokończyło się! Reboot. A tu już siódma rano!
Komputer wstał. Ale sieci nie widzi... Mało tego, ładowanie modułów jądra wywala same błędy... Ponownie apt-get dist-upgrade --ignore-missing --no-download. Ej?! To jeszcze nie był koniec? Teraz stwierdził, że ponad 400 pakietów nie zostało do końca zainstalowanych i rozpoczął ich konfigurację. O! Leci konfiguracja pakietu z jądrem! Koniec? No to reboot.
O! Teraz wstały interfejsy sieciowe. Ale już nie mam czasu grzebać dalej. Muszę się zbierać.
Pojechałem do Skierniewic, załatwiłem to co miałem i wróciłem. Uruchamiam komputer. Patrzę... Hmm... Normalnie mogę z komputerów do niego przyłączonych pingować komputery w Internecie, DNS-y ładnie resolvują adresy, połączenia uda się nawiązać, ale... Nie ma transmisji!
Próbuję sprawdzić pocztę. Nie mogę. Połączenia zrywają się po (udanych) logowaniach na serwer. Czasem tylko można wysłać komendę RETR i to wszystko. WWW nie chodzi, no chyba, że przez proxy, które jest na routerze. Dziwne... Coś nie działa z iptables... Oglądam regułki. Te same. Przed aktualizacją działały bez problemu. Kombinuję... Nic! To samo! A czasem nawet gorzej, bo w ogóle nie widać sieci.
Zaczynam szukać w Internecie. Niestety, wszędzie widzę te same, oklepane regułki (które dotychczas działały i u mnie). Już jestem wkurzony. Zaczynam szukać po słowach kluczowych: iptables i wolno. Masa linków do różnych forów. Oglądam tamtejsze rozwiązania i je testuję. Nic. Albo bez zmian, albo w ogóle brak routingu do proxy(!). Hmm... Dziwne... Internet jest, ale działa jak przy zbyt dużej wartości MTU. Przeszukuję te znalezione strony pod kątem słowa MTU. O! Coś jest. Odnosi sie do Neostrady, ale może zadziała:
# iptables -I FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu
O ja Cię! Nie wiem co dokładnie robi ta regułka, ale najważniejsze, że jest rozwiązaniem mojego problemu! Wreszcie!
Ale teraz, tak się tylko zastanawiam, dlaczego wcześniej działało, a teraz już nie chciało?! ;-)
Aktualizacja Ubuntu
02.07.2006 - Niedziela - 16:36
Przedwczoraj przyszły do mnie płytki z Ubuntu 6.06. W ubuntu style etui jest jedna płyta, która jest płytą instalacyjną i Live CD. No i przypomniało mi się, że najwyższa już pora zaktualizować swoje 5.04 działające na routerze na 6.06. Niestety, przy pomocy przysłanych mi płyt tego się nie da zrobić. Jedyną możliwością jest ściągnięcie obrazu płyty alternative lub zaktualizowanie dystrybucji całkowicie przez Internet. Aktualizacja z płyty pozwoliłaby mi tylko na zaktualizowanie części pakietów bez ich ściągania, a i tak musiałbym ściągnąć cały obraz. Nie ma sensu. Zaktualizuję przez Internet.
No, ale trzeba to rozplanować jakoś logistycznie. Na routerze nie mam żadnego środowiska graficznego, więc odpadają ogromne pakiety związane z iksami, Gnome czy czymkolwiek innym graficznym. Zainstalowane mam tylko małe programy i kilka serwerów, ale nie są one zbyt wielkie. Mimo to ściąganie trochę potrwa, więc aktualizacja pewnie ruszy w nocy ;-)
Na wszelki wypadek zrobiłem sobie kopie najważniejszych katalogów z plikami konfiguracyjnymi, tak, żebym mógł w miarę łatwy sposób odtworzyć konfigurację systemu. Chciałem zrobić również obraz całego dysku, ale dd, po przemieleniu prawie dwóch gigabajtów stwierdziło, że przekroczona została maksymalna wielkość pliku. Dziwne, zapisywałem ten plik na partycji FAT32, a tu maksymalna wielkość pliku jest wyrażana w terabajtach... Ale cóż, nie da się. Szkoda.
Teraz tylko pozostaje mieć nadzieję, że uda się zaktualizować system i że nie będzie później żadnych problemów z działaniem. Trzymajcie kciuki! ;-)
A czemu nie ;-)
02.05.2006 - Wtorek - 14:30
Nie korzystam z iksów na routerze. Ale miałem je zainstalowane, bo czasem się przydawały (na przykład do programu Gtkwave, który analizuje wyniki zwrócone przez programy pisane w VHDL-u). Dzisiaj chciałem je uruchomić. Nie udało się. Czemu? Nie mam pojęcia. Probowałem je rekonfigurować, ale maksimum moich osiągnięć to 320x240x8, co nawet w moim przypadku nie jest do przyjęcia. Cóż więc zrobiłem?
#apt-get remove xorg-common
Wylistowały mi się dwa pełne ekrany pakietów, które będą, niejako przy okazji, usunięte. Ogarnąłem je szybko wzrokiem, wcisnąłem T i poszło...
Dysk mielił chyba pół godziny, ale efekt jest całkiem niezły. Zwolniło mi się prawie pół gigabajta miejsca na dysku, a biorąc pod uwagę, że jest to dysk 3,2 GB to warto było poświęcić nieco czasu ;-)
Jedyne co mnie zdenerwowało to fakt, że usunął się też pakiet php4-gd, ale można go było przywrócić kosztem tylko 3MB miejsca na dysku.
Teraz myślę, żeby zaktualizować na routerze Ubuntu 5.04 na 5.10. Ale, chyba lepiej poczekać aż się pojawi Ubuntu 6.06.
Było przecież gorzej!
21.03.2006 - Wtorek - 18:29
Proste polecenie:
# iwconfig wlan0
I część jego wyniku:
Link Quality=33/100 Signal level=18/100 Noise level=4/100
Co się dzieje? Od kilku tygodni jest dobra jakość sygnału. Na początku bytności karty radiowej w routerze jakość wahała się w okolicach 15%! Urosło?! ;-)
ZSR czyli zdalne sterowanie routerem
11.02.2006 - Sobota - 22:25
Tak, już działa. Jest gdzieś w Sieci malutki formularz, do którego należy wklepać polecenie, a to polecenie wykona się na moim routerze ;-)
Aktualnie cron sprawdza dyspozycje co trzy minuty. I to jest chyba najodpowiedniejsza częstotliwość. Raczej nie będę tego zmieniał. Najwyżej rozrzedzę sprawdzanie w godzinach nocnych.
Pozostał mi jeszcze do wykonania moduł wysyłający informacje z routera do serwera pośredniczącego, ale na to też przyjdzie pora ;-)
Słowa kluczowe: komputer programowanie sieć linux
Dziwny pomysł na zdalną administrację
04.02.2006 - Sobota - 18:46
Ponieważ mojemu routerowi (czyli temu komputerowi, który nabyłem za zabójczą cenę 50 zł i który dalej będę nazywał tym mianem) zdarza się miewać uptime rzędu kilku dni (a chodziłby dłużej, gdybym go po prostu nie wyłączał ;-)) i ponieważ zdarza się, że jestem poza domem, kiedy pracuje ten komputer chciałbym mieć jakąś prostą możliwość kontrolowania komputera zdalnie.
Do dyspozycji mam:
- telefon komórkowy posiadający przeglądarkę WML i XHTML
- router, który nie posiada zewnętrznego adresu IP
- zewnętrzny serwer HTTP z PHP i MySQL
- cron, PHP, MySQL, Perl i wszystko czego zapragnę na routerze
Na bezpośrednie połączenie telefonu komórkowego z routerem są marne szanse. Telefon ma dynamiczny adres IP, a router go nie pozna. Na dodatek telefon musiałby pełnić rolę serwera, a pisanie jakiegokolwiek oprogramowania w Javie, które by realizowało taką funkcję z pewnością mija się z celem. Czyli do połączenia routera z telefonem (a właściwie do przekazania pomiędzy nimi informacji) musi być jakiś pośrednik.
Cały system widzę następująco. Na zewnętrznym serwerze (dostępnym zarówno z routera jak i telefonu) umieszczam prosty skrypt z autoryzacją, służący za pośrednika. Pośrednik ten ma gromadzić w bazie danych (czy w jakikolwiek inny sposób) dyspozycje dla routera. Wydawanie dyspozycji ma następować przez przeglądarkę w telefonie komórkowym. Interfejs skryptu ma też pokazywać jakieś informacje o bieżącym stanie routera, procesów na nim uruchomionych itp.
Router co jakiś czas (i tutaj kłania się cron) powinien łączyć się z serwerem pośredniczącym i uaktualniać dane na temat aktualnego stanu routera, procesów itp. Powinien też pobierać dyspozycje i je wykonywać. Czyli wykonanie dyspozycji nie będzie natychmiastowe, ale opóźnione maksymalnie o czas powtarzalności procesu w cronie. Jest to niezbyt wielka niedogodność biorąc pod uwagę, że router nie jest komputerem o znaczeniu strategicznym ;-) Drugim problemem jest zawodność pośrednika. Jeśli serwer pośredniczący nie będzie działał (lub routerowi nie uda się połączyć z pośrednikiem, co na jedno wychodzi), z całej zdalnej kontroli nici. Ale z tym też trzeba się pogodzić.
Pomysł jest do zrealizowania. Niby to nic specjalnego, ale możliwość wyłączenia komputera w domu jadąc pociągiem to fajna rzecz. Cóż... Trzeba się będzie za to wziąć (oczywiście głowę powinienem mieć zajętą dużo ważniejszymi sprawami - na przykład poniedziałkowym egzaminem z Analogów ;-))
Rozwiązanie gnębiącego problemu?
01.02.2006 - Środa - 22:28
Pamiętacie, jak jakiś czas temu narzekałem na to, że jestem w stanie ściągać z "przyzwoitą" prędkością, ale z wysyłaniem to już jest okropna męczarnia? Wydaje mi się, że znalazłem dziś rozwiązanie - MTU, a konkretnie jego zmniejszenie. Przyszło mi do głowy, żeby dokładnie poczytać o tej wartości. Uruchomiłem Google'a i przeszukałem grupy dyskusyjne pod kątem MTU i WLAN. Już pierwsze posty potwierdziły, że dobrze zacząłem kombinować ;-)
Sprawdziłem w praktyce. Zmniejszenie MTU z 1500 bajtów do (jak na razie) 1000 bajtów spowodowało, że ustabilizowało się wysyłanie. Co prawda są to obserwacje dopiero z kilku minut działania, ale już wydają się być obiecujące.
Cóż... Człowiek uczy się całe życie, nawet jeśli myśli, że zjadł już wszystkie rozumy ;-)
Teraz pozostaje mi tylko głębsze przetestowanie ustawień, a później (w razie powodzenia testów) doświadczalne ustawienie optymalnej wartości MTU :-)
Mission (almost) accomplished
25.11.2005 - Piątek - 22:26
Dziś to zrobiłem. Wreszcie przekazałem wszystkie planowane obowiązki trzeciemu komputerowi. Teraz jest to serwer WWW/SSH/MySQL (dla sieci domowej) oraz router udostępniający połączenie dwóm pozostałym komputerom. A dlaczego mission jest almost accomplished? Bo jakość połączenia wskazywana przez iwconfig oscyluje w granicach 18 - 28 % dla najsilniejszego punktu dostępowego. Oprogramowanie windowsowe wskazywało jakość powyżej 60%. Skąd taka różnica? Nie wiem, ale przypuszczam, że jest stosowana inna metoda pomiaru. Kolejnym, jeszcze nierozwiązanym, problemem, który wynika ze słabego sygnału są komunikaty generowane przez moduł jądra odpowiedzialny za kartę sieciową. Na konsoli (i w poleceniu dmesg) pojawia się masa informacji, że sygnał jest za słaby i żeby zwiększyć txpower. Wiem, że muszę przekazać modułowi parametr debug=0x0, ale nie mam (jeszcze) pojęcia jak, bo moduł ten jest ładowany przez hotpluga.
A tak ogólnie, to bardzo ładnie chodzi ;-)
Dźwięk ponownie
09.10.2005 - Niedziela - 14:09
O ja głupi! Przez to wciąż tkwiące w mojej głowie przekonanie, że karta dźwiękowa zintegrowana to karta dźwiękowa, która nie nadaje się do użytku nie wpadłem na pomysł, że "charczenie" jest spowodowane po prostu przesterowaniem wyjścia! Nawet pomimo tego, że wszystkie objawy na to wskazywały!
Ale fru! Uruchamiam alsamixer i zmniejszam wszystko tak do około 50%. Uruchamiam mpg123 i co? No właśnie nic! Poniżej wartości 85% karta dźwiękowa nie daje żadnego sygnału. To dopiero nazywa się płynna regulacja ;-)
No, ale teraz dźwięk nie charczy, a na oscyloskopie z pewnością pojawiłby się wykres przebiegu ewidentnie różniczkowalnego ;-)
Poprawka!
08.10.2005 - Sobota - 19:11
A jednak! Wszystkie kanały miały ustawioną flagę off. Dopiero dogrzebanie się w manualu do informacji o tym, że włączyć je można klawiszem m pomogło ;-)
Serwerowania ciąg dalszy
08.10.2005 - Sobota - 18:58
Od kilku dni serwer już działa, ale wciąż jest w fazie "zgrubnej" konfiguracji.
Już działa Apache2. Do tego dochodzi PHP w wersji czwartej oraz mySQL też w wersji czwartej. Mogę wymieniać pliki pomiędzy Windowsem i Linuksem dzięki Sambie, dostać się do konsoli dzięki OpenSSH, a na graficzny pulpit dzięki VNC. Żeby nie grzebać za dużo w plikach konfiguracyjnych zainstalowałem Webmina. I normalnie jest luksus ;-)
Ale! Ale nie jestem w stanie uruchomić karty dźwiękowej na tym komputerze. Z tego co udało mi się wygooglać to jest to zintegrowana karta typu Cirrus Logig Crystal CS4236. Znalazłem do niej odpowiedni moduł, znalazłem opis konfiguracji, wykonałem wszystko jak należy. Ale dźwięku nie ma. Z pewnością doszedłem dość daleko, bo przynajmniej programy do odtwarzania przestały krzyczeć, że nie ma urządzenia dźwiękowego, ale wciąż jest cisza!
Głośność kanałów ustawiłem na maksimum, przewody są sprawne. Co jest przyczyną?!
Znajdzie się jakiś Wujek Dobra Rada? ;-)
Samba
06.10.2005 - Czwartek - 21:00
Nie, nie będę pisał o brazylijskim pląsie, ale o linuksowym zastępniku "Sieci Microsoft Windows".
Męczyłem się z tym od dłuższego czasu. Chciałem mieć w miarę łatwy dostęp do dysku serwera działającego na Linuksie spod Windows. Uruchomiłem sambę, ale za nic nie mogłem się zalogować. Za każdym razem byłem pytany o hasło. Wszystkie hasła, które mogłem zmieniłem na własne, ale wciąż żadne z nich nie pasowało.
Dziś znalazłem przyczynę! W pliku smb.conf zamiast:
security = user
Powinienem mieć:
security = share
I wszystko zaczęło pięknie działać! Mam dostęp do wydzielonych katalogów i będę mógł swoje projekty przenieść teraz na serwer.
Pozostaje tylko jeszcze zorganizowanie połączeń pomiędzy wszystkimi komputerami...
Stoi na podłodze kompomotywa ;-)
03.10.2005 - Poniedziałek - 19:42
Dzisiaj dotarła do mnie zamówiona maszyna. Maszyna z serii superkomputerów ;-) Celeron 300 MHz, 64 MB pamięci RAM, dysk Maxtor 3,4 GB oraz wszystko co możliwe zintegrowane ;-)
Maszyna miała jeszcze zainstalowaną szwedzką wersję Windowsa 95, która i tak nie chciała się uruchomić, bo przed pracą żądała połączenia z jakimś szwedzkim serwerem. Czym prędzej ją wywaliłem, a na jej miejsce wpadło Ubuntu.
Na razie testowo zainstalowane. Chciałem tylko sprawdzić jak się będzie zachowywało na tym komputerze i muszę powiedzieć, że bardzo ładnie. Jak tylko będę miał switcha, montuję tam kartę sieciową od anteny WiFi i instaluję Ubuntu tym razem w trybie expert, a nie, jak teraz, default, dla oszczędności czasu, której i tak pewnie nie było, bo chyba wszystko się zainstalowało co mogło ;-)
Bardzo spodobało mi się apt-get, ale szkoda, że domyślnie są zakomentowane linijki z adresami serwerów z pakietami. Tak samo dziwne było to, że podczas instalacji system nie spytał się o hasło dla roota. Ale chwila grzebania w archiwach grup dyskusyjnych zaowocowała wykonaniem sudo -s -H, a potem passwd.
Od razu jak tylko mogłem uruchomiłem serwer openssh oraz serwer VNC dla iksów, bo ciągłe przekładanie wtyczki od monitora było denerwujące ;-)
Niestety do komputera oczywiście nie było kabla zasilającego. Musiałem podkraść go siostrze ;-) Podłączyłem do niego jakąś starą niemiecką klawiaturę. I dobrze, że już dawno nauczyłem się pisać bezwzrokowo na klawiaturze, bo szlag by mnie trafił ;-) Na tej klawiaturze oczywiście klawisz Z jest zamieniony z Y, zamiast średnika i dwukropka jest Ö, zamiast apostrofu i symbolu cala Ä itp. ;-)
Nie miałem też krótkiej skrętki. Mimo, że komputery stoją obok siebie, to łączy je dwunastometrowy przewód ;-)
Nie mogę jeszcze dojść do ładu rozdzielczością ekranu pod iksami. Ale nie jest to dla mnie priorytetem z racji tego, że ten komputer i tak nie będzie służył jako stacja graficzna. Za to przydałoby się skonfigurować kartę dźwiękową, której to instalator samodzielnie nie wykrył. Ale to też może poczekać. Na razie muszę skombinować jakiś tani switch. Bo najtańszy (z nowych) switch kosztuje 59 zł, czyli dokładnie dziesięć złotych drożej niż komputer! :-)
A jutro już niestety na zajęcia...




