inicio mail me! sindicaci;ón

Tomasz Wysocki - dziennik internetowy

Otchłań mojego umysłu…

Archive for Linux

Migające conky

Jeśli miga Ci conky, pomóc może dopisanie następującej linii do /etc/X11/xorg.conf:

        Load  "dbe"

Linię należy dopisać w sekcji Module.

Uzupełnianie w bashu (bash completion)

Co to jest? Otóż jest to ta cała maszyneria, która uruchamia się gdy wciśniesz klawisz [tab]. Po co to? To chyba jasne jak słońce, aby odciążyć palce użytkownika od pisania ogromnych ilości tekstu. Ale zacznijmy od początku.

Większość ludzi, korzystających z komputera, można podzielić na dwie grupy: tych, którzy klepią w terminalu długie i niezrozumiałe komendy oraz tych, którzy nie wiedzą, dlaczego Ci drudzy nie użyją myszki. Lub inaczej: tych, którzy wiedzą jak używać shella oraz znają jego moc oraz tych, którzy są w tej kwestii jeszcze laikami.

Co takiego fajnego jest w pisaniu “długich niezrozumiałych komend”? Chyba to, że jedna taka komenda może Ci zaoszczędzić kilka minut lub nawet godzin klikania myszką, na pewno też to, że nie jest taka niezrozumiała gdy spróbujesz ją pojąć oraz to, że staje się o wiele krótsza gdy użyjesz do tego [tab]a!

Jak działa [tab]? Gdy piszesz jakąś komendę w shellu, możesz w wielu momentach wcisnąć [tab], wtedy komputer postara się dokończyć za ciebie komendę lub podpowiedzieć Ci jakie masz możliwości. Nie powinniśmy oczekiwać cudów, to tylko maszyna. Jednak gdy wiemy kiedy użyć [tab]a, może nam to zaoszczędzić zarówno czasu, jak i zbędnego tłuczenia w klawisze. Powszechne jest dopełnianie [tab]em nazw programów oraz plików, ale nie każdy wie, że [tab] ma o wiele większe możliwości. Poza tym możemy dodawać własne (o czym być może kiedyś napiszę). Ujarzmijmy więc te możliwości na Debianie (dystrybucja, z której w tym momencie piszę).

Najpierw sprawdzimy czy potrzebny nam skrypt jest już w systemie (w Debianie z tego co wiem jest domyślnie):

tomwys@tom:~$ whereis bash_completion
bash_completion: /etc/bash_completion.d /etc/bash_completion
tomwys@tom:~$

Skrypt, który nam jest potrzebny, to /etc/bash_completion. Dodajemy więc wczytywanie go do ~/.bash_profile:

tomwys@tom:~$ echo '. /etc/bash_completion' >> ~/.bash_profile

Odpalamy nowy terminal i już możemy się cieszyć z nowych możliwości. Podajmy przykład (listing pierwszy to wciskane klawisze, drugi to rezultat na ekranie):

apti[tab][tab][tab]i[tab]bas[tab][tab]h[enter]
tomwys@tom:~$ aptitude 
autoclean       forbid-version  purge           unhold
changelog       forget-new      reinstall       unmarkauto
clean           hold            remove          update
dist-upgrade    install         search          upgrade
download        markauto        show            
tomwys@tom:~$ aptitude install bas
base                    bash                    bash-minimal
base-config             bash-builtins           bash-static
base-config-skolelinux  bash-completion         basket
base-files              bashdb                  bastet
base-passwd             bash-doc                bastille
tomwys@tom:~$ aptitude install bash
Reading package lists... Done
Building dependency tree... Done
Reading extended state information       
Initializing package states... Done
Reading task descriptions... Done  
Building tag database... Done    
E: Could not open lock file /var/lib/dpkg/lock - open (13 Permission denied)
E: Unable to lock the administration directory (/var/lib/dpkg/), are you root?
tomwys@tom:~$ 

Gdyby nie [tab] musieli byśmy najpierw dowiedzieć się jaki program jest nam potrzebny, jakie ma parametry i jaki pakiet chcemy zainstalować. Poza tym musieli byśmy wcisnąć 22 klawisze. Tak mając szczątkowe informacje wprowadziliśmy naszą komendę i wcisnęliśmy tylko 16 klawiszy. Gdybyśmy wiedzieli od razu o co nam chodzi, wystarczyło by wcisnąć 12 klawiszy:

apti[tab]i[tab]bash[enter]

Zyskalibyśmy wtedy aż 10 klawiszy, to prawie połowa! A zyski będą się pojawiać przy wielu programach. Rozwiązanie to najlepiej jest wypróbować samemu. Życzę milej zabawy.

du

Chcąc przelogować się na konto root, popełniłem błąd i zamiast su wpisałem du. Ku mojemu zaskoczeniu, trafiłem na strasznie przydatny program, o którego istnieniu wcześniej nie wiedziałem, z powodu, no cóż trzeba to przyznać, mojego lenistwa. Wcześniej nie chciało mi się szukać tego właściwego programu, więc używałem substytutu w postaci mc.

Ale do rzeczy. du to prosty program konsolowy, służący do rekursywnego obliczania ilości zajmowanego miejsca przez dany katalog czy plik. du wywołane bez parametrów zacznie rekursywanie przeszukiwać dany katalog i wypisywać rozmiary wszystkich plików i katalogów znajdujących się w nim i w podkatalogach. Domyślne wywołanie du nie jest szczególnie poręczne więc przedstawiam inne, bardziej praktyczne.

Sposoby wywoływania du

Zwykłe liczenie rozmiaru katalogu

Najczęstszą operacją, jaką będziemy wykonywać przy pomocy du, będzie prawdopodobnie liczenie rozmiaru pojedynczego katalogu. Możemy to wykonać za pomocą poniższego polecenia:

$ du -sh files/
7.5G    files/

Jak widać za sprawą opcji “h” rozmiar został wyświetlony w “ludzkim” formacie. Opcja “s” służy do tego, by wyświetlone zostało tylko podsumowanie, a nie wszystkie kroki liczenia (spróbuj wykonać to wywołanie bez “s”).

Poszukiwanie katalogu zajmującego najwięcej miejsca.

Czasami chcemy zwolnić trochę miejsca na dysku i potrzebujemy wiedzieć, co nam najwięcej tego miejsca zabiera. Przydatne może okazać się takie wywołanie du:

$ du -s * | sort -nr
702352  lib
652540  share
155500  bin
38152   include
19856   sbin
6420    local
608     src
520     lib64
40      games
28      X11R6

Podsumowanie

du w połączeniu z innymi programami to bardzo mocne narzędzie, którego możemy używać z pod konsoli. du jest przydatne wszędzie tam, gdzie potrzebujemy znać rozmiar katalogu łącznie z jego zawartością. du posiada wiele opcji, których opis możemy znaleźć w manualu.

Awaria zasilania, zdechła mysz i Bóg wie co jeszcze?

Wczoraj postanowiłem postawić Debiana od nowa. Jest to jedna z trzech dystrybucji działających obecnie na moim komputerze, pozostałe dwie to LFS i Gentoo. Ponieważ płytkę instalacyjną podarowałem znajomemu, musiałem wypalić nową. Instalacją przebiegała bezproblemowo mniej więcej do momentu, gdy rozpakowywane było jądro. Wtedy trach! - wyłączyli prąd, co zdarza się w mojej okolicy bardzo rzadko. Awaria wyglądała niegroźnie, a powtórzenie instalacji od nowa nie było żadnym problemem, jednak czas pokazał, że było inaczej.

Pierwsza zbuntowała się mysz. Co prawda wcześniej wysiadła już w niej rolka (mechaniczne uszkodzenie wewnątrz), ale teraz już całkiem nie żyła. Podczas startu komputera mruga do mnie tylko swoją diodą, a później pogrąża się w zimowy sen. Mam nadzieję, że tylko myszy się to źle odbiło, jednak mam pewne podejrzenia. Wydaje mi się, że mógł jeszcze ucierpieć akcelerator grafiki na karcie graficznej. Gdy pracuje w trybie „vesa” wszystko jest w porządku, jednak gdy przełączam na sterowniki do karty dostaje czarny ekran. Nawet zabicie Xów nie pomaga. Dopiero zmiana spowrotem na „vesa” lub restart przywraca obraz.

A tu mała zagadka: jak zmieniłem driver w konfiguracji xorg mając tylko czarny ekran przed oczami (z „ati” na „vesa”)?

edit:

Odpaliłem Ubuntu z płyty i okazało się, że z kartą graficzną wszystko w porządku. Co za ulga.

Parted - print

I’m going to make changes. I’m making shot, because it may be nice to remind:

# parted
GNU Parted 1.7.1
Using /dev/hda
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) print                                                            

Disk /dev/hda: 80.0GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos

Number  Start   End     Size    Type      File system  Flags
 1      32.3kB  10.7GB  10.7GB  primary   ext2              
 2      10.7GB  74.7GB  63.9GB  extended               lba  
 5      10.7GB  11.3GB  535MB   logical   linux-swap        
 6      11.3GB  63.9GB  52.6GB  logical   ext3              
 7      63.9GB  74.7GB  10.7GB  logical   ext3              
 3      74.7GB  80.0GB  5371MB  primary   ext2              

(parted)
  1. tomwys’ GNU/Linux 0.2 (LFS 6.2)
  2. extended
  3. tomwys’ GNU/Linux 0.1 (LFS 6.1)
  4. -
  5. swap
  6. /home
  7. Gentoo
  8. -

Niedługo zmiany. Być może kiedyś miło będzie odświerzyć pamięć:

# parted
GNU Parted 1.7.1
Using /dev/hda
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) print                                                            

Disk /dev/hda: 80.0GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos

Number  Start   End     Size    Type      File system  Flags
 1      32.3kB  10.7GB  10.7GB  primary   ext2              
 2      10.7GB  74.7GB  63.9GB  extended               lba  
 5      10.7GB  11.3GB  535MB   logical   linux-swap        
 6      11.3GB  63.9GB  52.6GB  logical   ext3              
 7      63.9GB  74.7GB  10.7GB  logical   ext3              
 3      74.7GB  80.0GB  5371MB  primary   ext2              

(parted)
  1. tomwys’ GNU/Linux 0.2 (LFS 6.2)
  2. extended
  3. tomwys’ GNU/Linux 0.1 (LFS 6.1)
  4. -
  5. swap
  6. /home
  7. Gentoo
  8. -

Opera - naczelny ramożerca mojego komputera | Opera - top RAM user of my computer

When I’m writing this post, Opera using almost 80% of my computer’s RAM. Is it too much? For me it is. I have 256MB of RAM, so 200MB for browser is too much. It’s also strange, because I have only two tabs opened, I don’t use widgets, IRC is disabled. It’s probably cause Opera allocates much ram but frees only little of it. Opera uses much CPU also. Maybe I should think about new web-browser or upgrade my computer hardware. It’s some kind of problem.


W chwili gdy piszę ten wpis Opera wykorzystuje prawie 80% RAMu posiadanego przez mój komputer. Czy to dużo? Dla mnie tak. Mam 256MB RAMu i zajęcie 200MB dla samej przeglądarki to zdecydowanie za dużo. Najlepszy w tym wszystkim jest fakt, że mam otwarte tylko dwa taby, nie mam żadnych widgetów, a IRC jest wyłączony. Zajętość prawdopodobnie bierze się z tego, że Opera chętnie rezerwuje nowy ram, a nie kwapi się zbytnio ze zwalnianiem. Opera oprócz ramu zjada dużo CPU. Może warto by się zastanowić nad wymianą przeglądarki, a może raczej nad rozbudową komputera. Trudna sprawa.

Problem z su pod Gentoo

Tuż po instalacji Gentoo natknąłem się na następujący problem:

$ su
Password: 
su: Permission denied
Sorry.

Problem wynika z wysokiego poziomu zabezpieczeń zastosowanego w Gentoo. Aby go rozwiązac, powinniśmy wszystkich użytkowników, chcących korzystać z polecenia su, dodać do grupy wheel:

# gpasswd -a nazwa_użytkownika wheel
Adding user nazwa_użytkownika  to group wheel

Gdzie nazwa_użytkownika to identyfikator użytkownika, który ma mieć uprawnienia do korzystania z su.

$ su
Password: 
#

Gentoo

Zacząłem swoją przygodę z Gentoo. Co prawda kiedyś miałem już tą dystrybucję na dysku, jednak wtedy celem było obejrzenie i ewentualna ocena. Teraz mam zamiar zacząć korzystać z tego systemu.

Dlaczego Gentoo?

Muszę niestety zrezygnować z LFS. Nie mam czasu na zarządzanie nim. Potrzebuję czegoś co działa automatycznie. Jedną z możliwości był powrót do Debiana, jednak postanowiłem spróbować czegoś nowego. Gentoo wydało mi się ciekawą i wartą dłuższego wypróbowania dystrybucją.

Pierwsze wrażenia

Pierwsze co rzuciło mi się w oczy, to ułatwiony proces instalacji, w stosunku do tego przez który musiałem przegryźć się kiedyś. Zrezygnowano ze stage1 i stage2 i ogólnie zmieniono kilka rzeczy. Generalnie system mi się podoba, jednak nie obyło się bez wpadek. Pierwszą rzeczą która mnie zaskoczyła był “Segmentation Fault” w xmms. I nie chodzi tu nawet o samo wystąpienie tego błędu tylko o to, że “sam się naprawił” (normalnie jak nie-Linux).

Czy tak zostanie?

Nie wiem jeszcze czy zostanę przy Gentoo. Jeśli mi się nie spodoba, zwyczajnie wrócę do Debiana.

Problem with compiling Eterm

command.c: In function 'inp_text':
command.c:2560: warning: pointer targets in passing argument 1 of 'tt_write' differ in signedness
command.c: In function 'init_command':
command.c:3005: error: invalid lvalue in assignment
command.c:3007: error: invalid lvalue in assignment
command.c: In function 'main_loop':
command.c:3472: warning: pointer targets in passing argument 1 of 'safe_print_string' differ in signedness
make[2]: *** [command.lo] Error 1
make[1]: *** [all-recursive] Error 1
make: *** [all-recursive-am] Error 2

You can solve this by running a command before make:

 sed -i 's/AT_LEAST((int) num_fds,/AT_LEAST( num_fds,/' src/command.c
Tomasz Wysocki

Montowanie obrazów iso

Pod Linuksem możemy zamontować obraz iso podobnie jak partycje. Wykorzystywane jest do tego jednak urządzenie loop. Najpierw należy sprawdzić czy takie urządzenie posiadamy:

ls /dev/loop*

Jeśli wyświetli nam się lista urządzeń, możemy użyć jedno z nich. Jeśli nie musimy wkąpilować obsługę loop w kernel.

Konfiguracja kernela

Device Drivers  --->   Block devices  --->  [*] Loopback device support

Montowanie obrazu

Obraz montujemy jako root:

mount -t iso9660 -o ro,loop=/dev/loop0 obraz.iso /mnt/iso/
OpcjaZnaczenie
-t iso9660Określa typ obrazu (iso).
roPodmontowuje tylko do odczytu (zapobiega przypadkowemu uszkodzeniu obrazu)
loop=/dev/loop0Określa urządzenie loop używane przy montowaniu.
obraz.isoObraz do podmontowania.
/mnt/iso/Punkt docelowy montowania.

Odmontowywanie obrazu

Obraz możemy odmontować analogicznie do zwykłej partycji:

umount /mnt/iso

/etc/fstab

Istnieje także możliwość automatycznego montowania obrazu podczas startu systemu. Wystarczy dodać odpowiedni wpis do /etc/fstab. Np.:

/var/obraz.iso  /mnt/iso  iso9660  ro,loop=/dev/loop0  0  0

Oczywiście wszystkie opisane czynności możemy wykonać w różnych wariantach (np. montować do odczytu i zapisu). Powodzenia w eksperymentowaniu.

Tomasz “tomwys” Wysocki
· Starsze wpisy »