Stukoli Screencast – grupa podstawowa 01

Stało się, screencast powstał. Jest w nim kilka wpadek, pomyłek i o czymś zapomniałem, ale nie chciało mi się drugi raz tego nagrywać 🙂 Pokazana jest tu tylko bardzo prosta instrukcja instalacji Ubuntu, którą każdy kto odróżnia klawiaturę od myszki mógłby prawdopodobnie przeprowadzić sam oraz instrukcja instalacji nowego oprogramowania. Usuwanie nie jest pokazane, więc jak ktoś sam się nie domyśli, to do wymagań Ubuntu niech sobie dopiszę jakiś ogromny dysk twardy 😉

Wideo jest w rozdzielczości 1280×800, najlepiej oglądać bezpośrednio na Vimeo, z włączonym HD. Powstał tam kanał tematyczny na filmy, jakie nasze koło kiedykolwiek nagra. Jak ktoś chce pobrać wideo na dysk – proszę bardzo. Ostrzegam tylko jeszcze raz: jak umiesz zainstalować Ubuntu, to oglądanie tego nie ma sensu, chyba, że chcesz się ze mnie pośmiać 🙂

StuKoLi Grupa Podstawowa 2010 – 01 from manequin on Vimeo.
Co do formy w jakiej będę umieszczać materiały z nadchodzących zajęć – zastanowię się. Jeżeli trochę lepiej następnym razem bym się przygotował i tak sobie zorganizował czas, żebym mógł to w ciszy i spokoju nagrać oraz zdążyć z obróbką, konwersją i uploadem przed następnymi zajęciami, to myślę, że następny screencast mógłby wyglądać już lepiej 🙂

Stukoli

Dawno nie pisałem nic na blogu, ale dziś pomyślałem, że znowu spróbuję się przymusić do jego reaktywacji 🙂

Głównym powodem jest to, że w tym roku akademickim zostałem głównym prowadzącym zajęcia w grupie podstawowej Studenckiego Koła Linuksowego (w skrócie „StuKoLi”) działającego na mojej uczelni – SGGW. Zamierzam zamieszczać tu materiały z prowadzonych przeze mnie zajęć. Będą to głównie prezentacje w postaci plików PDF lub formatu, jaki mi wygeneruje Libre/OpenOffice. Pierwsze zajęcia, które odbyły się w zeszły poniedziałek, zamierzam jednak streścić za pomocą screencastu i zależnie od tego, jak mocno się w nim skompromituje, zastanowię się nad tą formą publikacji w przyszłości. Zajęcia te, a więc i materiały wygenerowane na ich potrzeby, będą skierowane do użytkowników mocno początkujących i w przeciwieństwie do innych moich postów, rady w nich zawarte nie powinny być groźne dla waszych systemów 🙂 Plan jest nawet taki, żeby przez jakiś czas w ogóle nie dotykać konsoli i pokazywać tę graficzną stronę pingwina.

W związku z powyższym, zmieni się też jedna rzecz na tej stronie – ilość moich danych osobowych. Oprócz imienia i nazwiska, wylądują tu też linki do moich profilków na społecznościówkach, które i tak każdy, posługując się udostępnionymi informacjami, mógłby sobie znaleźć 🙂

Być może, jak zacznę regularnie umieszczać te prezentacje, to przy okazji, raz na jakiś czas, skrobnę jakiś tekścik z cyklu „Twój komputer działa? Przeczytaj, zastosuj, przestanie” 🙂 Przy okazji zrobię jakieś menu oparte na tagach, czy coś w tym stylu, żeby kursanci przez przypadek ich nie czytali 😉 Oczywiście, nie wykluczone, że te plany, które sobie właśnie zaczynam tworzyć, zamiast iść spać, pozostaną tylko planami i nawet materiałów tu nie rzucę, a tylko na oficjalną stronę koła naukowego. Przynajmniej znajomi się ucieszą, bo powiadomienia o nowych postach lecą na Facebooka, a i bez tego generuję tam sporo zbędnej treści 😉

Automatyczna zmiana częstotliwości CPU

Dawno tu nic nie pisałem, a dziś wpadłem na pomysł, że jednak tego bloga trochę reaktywuję. Zobaczymy, jak długo to potrwa 🙂

Przejdę do właściwego tematu tego wpisu. Używam laptopa i oszczędność w pobieraniu energii jest dla mnie w komputerze równie, a czasem nawet bardziej istotna niż wydajność. Gnome Power Manager bardzo dobrze sobie radzi w wydłużaniu czasu pracy na baterii, jednak brakuje mu jednej ważnej dla mnie funkcji – kontroli częstotliwości pracy procesora. Nie mam dużego stażu pod Linuksem, ale czytałem, że kiedyś taka funkcja była, lecz została porzucona, bo zarządca częstotliwości Ondemand powinien na bieżąco dostosowywać częstotliwość pracy zarówno na baterii, jak i zasilaniu z gniazdka. Ja jestem jednak jednym z tych ludzi, który wolą mieć na to większy wpływ i chcą by ich komputer na baterii działał dłużej, a na zasilaczu wydajniej 🙂

Opiszę, jak za pomocą cpufreqd zautomatyzować kontrolę częstotliwości procesora według naszego widzimisia.

Warto zacząć od instalacji omawianego narzędzia, bo nie wgrywa się ono razem z systemem:
sudo apt-get install cpufreqd

Teraz nadszedł czas na edycję reguł, jakimi ma się kierować program:
sudo gedit /etc/cpufreqd.conf

Plik zawiera pewne ustawienia ogólne, po których występują deklaracje różnych profili oraz zasady, na jakich profile mają być przełączane. Zaraz po instalacji plik wypełniony jest przykładowymi profilami i zasadami, dzięki którym konfiguruje się go bardzo łatwo bez czytania manuala, wystarczy tylko dostosować przykłady do swoich potrzeb 🙂 Opiszę jednak, jak zbudowane są profile oraz reguły.

Tak wygląda przykładowa deklaracja profilu:

[Profile]
name=Battery
minfreq=0%
maxfreq=100%
policy=powersave
exec_post=notify-send ‚Zmiana zarządcy’ ‚powersave’
[/Profile]

Pole name zawiera nazwę profilu, do niej będziemy się później odwoływać, przy tworzeniu reguł.
Pola minfreq i maxfreq zawierają minimalną i maksymalną częstotliwość z jaką może pracować procesor, gdy aktywny jest dany profil. Wartość można wyrazić w procentach bądź w kHz (bez podawania jednostki). Z tymi ustawieniami należy uważać, bo jeżeli ustawimy np. minimalną częstotliwość na 100%, to gdy profil będzie aktywny nie będziemy mogli nawet ręcznie zmienić częstotliwości na niższą. Listę dostępnych częstotliwości sprawdzamy poleceniem:
cat sys/devices/system/cpu/cpu0/cpufreq/scaling_available_frequencies
W pole policy wpisujemy zarządce procesora, który ma być wtedy aktywny. Listę dostępnych zarządców można sprawdzić poleceniem:
cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_governors
Pole exec_post występuje tylko w niektórych przykładowych profilach, nie jest ono wymagane i najczęściej nie jest też potrzebne. Daje ono możliwość wykonania dodatkowo zewnętrznych poleceń po aktywacji profilu, a bliźniacze exec_pre wykonuje polecenia przed aktywacją profilu. W podanym tu przykładzie wywołane jest powiadomienie gnome’a o zmianie zarządcy (trzeba mieć zainstalowany jeden z pakietów notify-osd, którego nazwy nie mogę sobie teraz przypomnieć). Ja je wykorzystuję w inny sposób, ale o tym później.

Teraz omówię budowę reguł. Przykładowa reguła wygląda tak:

[Rule]
name=Bateria
ac=off
battery_interval=0-70
cpu_interval=50-100
exec_post=echo 3 > /proc/acpi/sony/brightness
profile=Battery
[/Rule]

W pierwszej linijce podana jest nazwa zasady, kolejne linie określają warunki w jakich reguła ma zadziałać.
Pole ac określa, czy aby reguła zadziałała ma być podpięty zasilacz. Jeżeli ustawione jest na „on”, to reguła zadziała tylko, gdy podpięty będzie zasilacz, a „off” – gdy będziemy pracować na baterii.
Następny warunek, to battery_interval, czyli poziom naładowania baterii wyrażony w procentach. Dzięki temu możemy ustawiać różne profile w zależności od tego w jakim stanie jest bateria.
Cpu_internal określa minimalne i maksymalne zużycie procesora, przy których zasada ma być aktywna.
Wszystkie warunki muszą być spełnione, aby zasada się uaktywniła i zmieniła profil. Zasad jest więcej, bo można np. określić, jakie procesy muszą być uruchomione, lub jaka ma być temperatura procesora. Jak ktoś chce o tym wiedzieć, to podręcznik do konfiguracji wszystko wyjaśnia:
man cpufreqd.conf
Pole exec_post działa identycznie, jak w profilach, a ostatnie pole – profile – określa który profil ma aktywować dana reguła.

Teraz wystarczy napisać odpowiednie profile, a potem reguły ich przełączania i system będzie zarządzał częstotliwością procesora tak, jak my tego chcemy 🙂

Ja u siebie ustawiłem, żeby przy podłączonym zasilaczu zarządcą zawsze był performance, a na baterii ondemand w czasie, gdy bateria 70% lub więcej mocy i powersave, gdy poziom naładowania jest niższy.
Dodatkowo ustawiłem w tym ostatnim profilu wywołanie funkcji, która włączają tryb oszczędności prądu na karcie dźwiękowej Intela, a w innych profilach wywołania wyłączające ten tryb. Kod moich profili i zasad wygląda tak:

[Profile]
name=AC
minfreq=0%
maxfreq=100%
policy=performance
exec_post=cat /sys/module/snd_hda_intel/parameters/power_save | grep 1 && echo 0 > /sys/module/snd_hda_intel/parameters/power_save && notify-send ‚Nieaktywny’ ‚Tryb oszczędzania energii karty dźwiękowej’
#exec_post=echo 8 > /proc/acpi/sony/brightness
[/Profile]

[Profile]
name=Ondemand
minfreq=0%
maxfreq=100%
policy=ondemand
exec_post=cat /sys/module/snd_hda_intel/parameters/power_save | grep 1 && echo 0 > /sys/module/snd_hda_intel/parameters/power_save && notify-send ‚Nieaktywny’ ‚Tryb oszczędzania energii karty dźwiękowej’
[/Profile]

[Profile]
name=Battery
minfreq=0%
maxfreq=100%
policy=powersave
exec_post=cat /sys/module/snd_hda_intel/parameters/power_save | grep 0 && echo 1 > /sys/module/snd_hda_intel/parameters/power_save && notify-send ‚Aktywny’ ‚Tryb oszczędzania energii karty dźwiękowej’
[/Profile]

[Rule]
name=AC Rule
ac=on
profile=AC
[/Rule]

[Rule]
name=Battery high
ac=off
battery_interval=70-100
profile=Ondemand
[/Rule]

[Rule]
name=Battery low
ac=off
battery_interval=0-70
profile=Battery
[/Rule]

Po ustawieniu wszystkiego prawdopodobnie trzeba zrestartować usługę:
sudo service cpufreqd restart

Od teraz możemy cieszyć się większą automatyzacją naszego systemu 🙂

Ja vs. asembler pod Linuksem – 1:0

Dostałem do wykonania projekt z architektury komputerów, polegający na napisaniu pewnego programu w asemblerze i w związku z tym, że windows nie jest moim ulubionym systemem i staram się w tym semestrze go unikać, postanowiłem pisać pod Linuksem  i na ten system właśnie (NASM).

Oto treść zadania:

Napisz program, który pobiera ciąg znaków z wejścia i wypisuje na wyjściu znaki z tego ciągu – jeden znak w linii. Program powinien zakończyć pracę po naciśnięciu przez użytkownika klawisza BACKSPACE + modyfikacje.

Modyfikacje:

  • Każdy znak w nowej linii będzie poprzedzony ilością spacji równą numerowi wiersza.
  • Inny klawisz, oprócz backspace
  • Poniżej statystyka – wypisywanie i zliczanie liter dużych, małych, cyfr i znaków specjalnych

Z materiałami do nauki nie było łatwo, bo większość kursów jest o programowaniu w dosie, a kursy linuksowe najczęściej opisują niewiele więcej niż ‚Hello world’. Zadanie samo w sobie było raczej dla piszących pod dosa, bo musiałem na przykład zaprogramować bezbuforowe wejście klawiatury, które pod dosem jest banalnie łatwe do zrobienia (gotowa funkcja), a pod Linuksem sprawia trochę problemów (sam go nie napisałem, wkleiłem po prostu ~80 linijek tekstu znalezionego w sieci i przy oddawaniu projektu mówiłem, że jest to odpowiednik trzech linijek, które pisali inni z mojej grupy).

Aby ułatwić zadanie ludziom, którzy mają, lub będą mieli kiedyś podobny program do napisania na jakieś zajęcia, umieszczam źródła programu wraz z makefile’em do pobrania, oraz źródło do przeglądania online. Mam nadzieję, że komuś, kiedyś się przyda 😉

Google Chrome 4 beta

O Chrome pewnie każdy (z wyjątkiem wyznawców niebieskiego ‚e’)  słyszał, a jeżeli nie, to w skrócie powiem, że jest to superszybka przeglądarka od Google’a. Od jakiegoś czasu można testować kolejne buildy wersji beta pod pingwinkiem. Polecam, ja nawet zacząłem się przymierzać do całkowitego porzucenia Ognistego Lisa. Google przygotował repo z gotowymi paczkami, nic tylko dodawać, instalować, testować 🙂

Zaraz napiszę, jak dodać sobie nową linijkę do repo, ale uprzedzam: piszę tylko o dystrybucjach debianopochodnych (głównie Ubuntu, bo jego używam) i repo, które podam, zawiera pakiety w wersjach testowych (aczkolwiek całkiem stabilnych) i wszystko robicie na własne ryzyko, bla bla bla… 😛


Linijka do apta, która da nam upragnioną paczkę to:

deb http://dl.google.com/linux/deb/ testing non-free #Google Testing

aby szybko dodać ją do swoich źródeł wklejamy w konsoli:

sudo sh -c 'echo "deb http://dl.google.com/linux/deb/ testing non-free #Google Testing" >> /etc/apt/sources.list'

Klucz apt dodajemy komendą:

sudo sh -c 'wget -q -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | apt-key add -'

Zostało już tylko odświeżyć listę pakietów i zainstalować przeglądarkę:

sudo apt-get update && sudo apt-get install google-chrome-unstable

Gotowe. Najnowsza beta Chrome’a czeka na jazdę próbną 🙂
Dodam tylko, że przeglądarka obsługuje rozszerzenia (funkcja cały czas jest rozwijana) i pojawiła się strona, która jest odpowiednikiem bazy rozszerzeń Firefoksa – chromeextensions.org. Nie ma jeszcze ich dużo, ale za to można w miarę szybko przejrzeć wszystkie 😛 Mam nadzieję, że w dniu premiery wersji stabilnej wybór będzie trochę większy 🙂

PS: Jeżeli ktoś jednak woli dystrybucje bez apta, debów itp., to może zajrzeć na google.com/linuxrepositories/testrepo.html, gdzie podane są repozytoria dla innych dystrybucji.