Category Archives: os

Kontrola obrotów wentylatora na płytach Asus

Parę dni po przeniesieniu głównego środowiska na Linuksa zorientowałem się, że wentylator zamontowany na procesorze działa zdecydowanie aktywniej niż na Windowsie. O ile tam poradził sobie z kontrolą niezawodny SpeedFan (albo, o zgrozo, ASUS AI Suite), to na Linuksie uważaną za skuteczną metodą jest wykorzystanie dwóch małych aplikacji – fancontrol i konfiguratora doń, tj pwmconfig (a także sensors dla sprawdzenia aktualnych temperatur).

Niestety, już polecenie sudo pwmconfig zwracało błąd polegający na nieznalezieniu kompatybilnych modułów. Jako że moja płyta nie jest zbyt popularna (Asus P5K SE/EPU), trochę się naszukałem rozwiązań – wreszcie zaryzykowałem z dodaniem informacji do bootloadera (GRUB), które teoretycznie miała pomóc w przypadku innej, starszej płycie Asusa. Szczęśliwie zadziałało, obroty i temperatury są w normie, więc mogę je z czystym sumieniem polecić. Jakkolwiek uwaga – Wiki Arch Linuksa podaje, że owo rozwiązanie może być niebezpieczne (sekcja “Sensors not working since Linux 2.6.31”).

Edytujemy plik /etc/default/grub

sudo nano /etc/default/grub

Zmieniamy (albo dodajemy, jeśli jest nieobecna/zakomentowana) linijkę o następującej treści:

GRUB_CMDLINE_LINUX=""

Na docelową:

GRUB_CMDLINE_LINUX="acpi_enforce_resources=lax"

Rekonfigurujemy GRUBa poleceniem:

sudo update-grub

I wreszcie uruchamiamy ponownie system.

sudo reboot

Wreszcie wywołujemy z powodzeniem konfigurację pwmconfig, która pozwali nam kolejno ustalić dopuszczalne wartości minimalne i maksymalne temperatur i prędkości wentylatorów.

sudo pwmconfig

Testujemy konfigurację poleceniem:

sudo fancontrol

Jeśli zadziała, dodajemy komendę “fancontrol” do poleceń uruchamianych wraz z systemem.

Instalacja OwnCloud z użyciem lighttpd i sqlite

OwnCloud, czyli nasz prywatny Dropbox – Malinowe Pi

Przyjemna i prosta solucja do uruchomienia serwera OwnCloud (dlaczego to świetne rozwiązanie?) na słabszym sprzęcie – na przykładzie Raspberry Pi. Uruchamiałem go na apache2 + mysql i mój mini-NAS oparty na terminalu HP T5520 nie dał rady wydajnościowo – teraz spróbuję ponownie.

Edit: Krótka piłka: z lightppd & sqlite i na T5520 jest super. :)

Wingamelauncher, czyli skrypty wspierające automatyczne uruchamianie gier Windows spod Linuksa

Pomiń gadaninę i przejdź do konkretów

Tak się złożyło, że kontynuuję temat zmian “systemowych” (poprzednio przechodziłem na niewspieranego przez Xperię X10 Android 4 ICS) – po raz kolejny w życiu próbuję przenieść cały swój “ekosystem” pod Linuksa.

Zawsze dużo korzystałem z Linuksów, a w ostatnim czasie stan ten osiągnął apogeum. Systemy uniksowe mają sensowną organizację, szybki i sprawny rozwój, wspaniałego basha i tuziny innych rozwiązań (repozytoria, żeby wspomnieć najbardziej bolesny chyba brak), które mnie zdecydowanie przekonują. Doszło do tego, że do większości operacji typu kopie zapasowe, synchronizacja danych, zacząłem pisać skrypty bashowe, uruchamiane w Cygwinie (upraszczając, jest to warstwa tłumacząca polecenia linuksowe na Windows).

Co kilka lat próbowałem przenosić swój ekosystem na Linuksa, ale koniec końców zawsze miałem jakiś krytyczny problem z obsługą swojego sprzętu i mówiłem sobie “kiedyś” – w końcu to “kiedyś” nadeszło.

Zawsze coś…

Nie chcę się skupiać na wszystkich narzędziach, z których korzystam – na to jeszcze będzie czas, próbuję dostosować jakieś IDE pod siebie, przenieść swoje prototypy gier na silniki OpenGL-owe, generalnie jest jeszcze za wcześnie.

Skoncentruję się za to na nieoczywistym rozwiązaniu, które sobie wprowadziłem – tytułowym zestawie skryptów do szybkiego przełączania się pod Windows i automatycznego uruchamiania gier wideo, klikając tylko na skrót w Linuksie.

Dlaczego w ogóle mam taką potrzebę? Nigdy nie jest idealnie – w PC mam kartę graficzną ATI Radeon HD 4850, która po przejęciu przez AMD jest niezbyt wspierana przez producenta, przez co sterowniki działają, powiedzmy, tak sobie – nie mogę grać poprzez WINE z wydajnością, która by mnie satysfakcjonowała.

Rozwiązanie!

Oczywistym jest więc, że przełączam się na Windows w celu rozrywki growej.

Uważam za skrajnie niewygodne konieczność opuszczenia systemu, następnie odczekania kilku minut na możliwość ledwo zalogowania się do Windows, odczekania kolejnej chwili na załadowanie się podstawowych usług, żeby w końcu móc włączyć – ręcznie – wybrany tytuł.

Moje rozwiązanie na pewno nie jest idealne, ale sprawia, że włączenie gry spod Linuksa to wybranie skrótu i odczekanie chwili, po której odpowiednia gra jest uruchomiona i czeka na użytkownika.

Część 1 – Rozbieranie Windows

Niezbędna jest pewna konfiguracja Windowsa – na moim PC stacjonuje Windows 8 z Classic Shell, który pomija ekran startowy.

1. Wyłączyłem konieczność logowania w Windows – niestety jest to niezbędne, aby rozwiązanie było wygodne.

* Wciskamy Win+R, żeby uruchomić menu uruchamiania, wpisujemy “control userpasswords2”;
* W wyświetlonym oknie odznaczamy opcję “Users must enter a user name and password to use this computer” (mam angielskiego windowsa, opcja po polsku opisana będzie podobnie do “użytkownicy musza podać nazwę użytkownika i hasła, by używać tego komputera”).

2. Utworzyłem plik skryptowy wingamelauncher.bat (treść na razie nie jest istotna, może być pusty), utworzyłem do niego skrót i umieściłem go w windowsowym autostarcie.

3. Utworzyłem w tej samej lokalizacji, co wingamelauncher.bat, drugi skrypt – “recreatewgl.bat” o takiej treści:

DEL H:\wingamelauncher.bat
ECHO start calc.exe>H:\wingamelauncher.bat

Oczywiście ścieżkę trzeba zmodyfikować pod swoją lokalizację. Skrypt ten będzie uruchamiany po włączeniu gry, modyfikując wingamelauncher.bat aby nie włączyła się automatycznie ponownie. Zamiast niej będzie odpalony kalkulator – takie tymczasowe rozwiązanie.

Część 2 – Ubieranie Linuksa

1. Tutaj było znacznie więcej zabawy. Zacząłem od zerknięcia do GRUBa, którym wpisem jest u mnie Windows, a którym Linuks – standardowo będzie to wpis trzeci i pierwszy.

Numery te trzeba podać w kolejności od zera – więc 2 i 0.

2. Edytowałem (jako root) plik /etc/default/grub, żeby ustalić zapisywanie ostatniej ładowanej pozycji – by móc je modyfikować z poziomu skryptów.

sudo gedit /etc/default/grub

Zakomentowałem linijkę:

GRUB_DEFAULT="0"

I dodałem inną:

GRUB_DEFAULT="saved"

3. Uwaga, to nie jest ładne rozwiązanie – edytowałem pętle GRUBa 2, aby przywracać domyślne ustawienie po wybraniu innej opcji. Jeśli nie przeszkadza Ci fakt, że po uruchomieniu skryptu domyślnie będzie wybierany Windows, możesz tego rozwiązania nie stosować.

To rozwiązanie ma sporą wadę, m.in. dlatego, że będzie kasowane przez system przy każdej aktualizacji GRUBa – jeśli opracuję inną metodę, to oczywiście polecę.

Otworzyłem plik /boot/grub/grub.cfg:

sudo gedit /boot/grub/grub.cfg

Znalazłem wpisy dla moich systemów (rozpoczynają się od “menuentry”):

menuentry 'Linux Mint 14 Cinnamon 64-bit, 3.5.0-17-generic (/dev/sda8)' --class linuxmint --class gnu-linux --class gnu --class os {
recordfail
gfxmode $linux_gfx_mode
insmod gzio
insmod part_msdos
insmod ext2
set root='hd0,msdos8'
if [ x$feature_platform_search_hint = xy ]; then
search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos8 --hint-efi=hd0,msdos8 --hint-baremetal=ahci0,msdos8 e3df731f-6c30-4b10-8088-e7d0311c4102
else
search --no-floppy --fs-uuid --set=root e3df731f-6c30-4b10-8088-e7d0311c4102
fi
linux /boot/vmlinuz-3.5.0-17-generic root=UUID=e3df731f-6c30-4b10-8088-e7d0311c4102 ro quiet splash $vt_handoff
initrd /boot/initrd.img-3.5.0-17-generic

}

Dodałem polecenie “savedefault 0“, które sprawiło, że po wybraniu pozycji, ustawienie będzie zresetowane i następnym razem w GRUBie zostanie wybrana automatycznie pierwsza opcja (z indeksem 0).

menuentry 'Linux Mint 14 Cinnamon 64-bit, 3.5.0-17-generic (/dev/sda8)' --class linuxmint --class gnu-linux --class gnu --class os {
savedefault 0
recordfail
gfxmode $linux_gfx_mode
insmod gzio
insmod part_msdos
insmod ext2
set root='hd0,msdos8'
if [ x$feature_platform_search_hint = xy ]; then
search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos8 --hint-efi=hd0,msdos8 --hint-baremetal=ahci0,msdos8 e3df731f-6c30-4b10-8088-e7d0311c4102
else
search --no-floppy --fs-uuid --set=root e3df731f-6c30-4b10-8088-e7d0311c4102
fi
linux /boot/vmlinuz-3.5.0-17-generic root=UUID=e3df731f-6c30-4b10-8088-e7d0311c4102 ro quiet splash $vt_handoff
initrd /boot/initrd.img-3.5.0-17-generic

}

Analogiczną zmianę wykonałem dla wpisu Windows – powinien znajdować się jeden-dwa bloki niżej.

4. Edytowałem uprawnienia dla uruchamianie komend w pliku /etc/sudoers, żeby skrypty mogły uruchamiać się bez zapytania o hasło administratora:

sudo gedit /etc/sudoers

Na końcu pliku, przed komendą “#includedir /etc/sudoers.d”, dodałem następujące wiersze:

draiser ALL=(ALL)NOPASSWD:/usr/bin/wingamelauncher
draiser ALL=(ALL)NOPASSWD:/home/draiser/Skrypty/wingamelauncher.sh
draiser ALL=(ALL)NOPASSWD:/usr/sbin/grub-reboot
draiser ALL = NOPASSWD: /sbin/shutdown
draiser ALL=NOPASSWD: /usr/sbin/s2disk

Gdzie “draiser” to nazwa mojego użytkownika (można podać też “ALL” jako zamiennik dla wszystkich użytkowników), a skrypty podane po “NOPASSWD:” to moje lokalizacje skryptu, który zaraz będę prezentował, dodatkowo także odnośniki do systemowych funkcji rebootu ze zmianą kolejności w GRUB, wyłączania systemu i hibernacji.

5*. Krok opcjonalny – s2disk, czyli hibernacja przed ponownym uruchamianiem

Początkowo napisałem skrypt tak, aby po prostu restartował system, ale oczywiście zdecydowanie wygodniej jest, kiedy zapisuje stan pamięci na dysku, a następnie, już po ponownym włączeniu Linuksa, powraca do niego.

Do tego rozwiązania potrzebna jest partycja SWAP o rozmiarze zbliżonym do ilości pamięci RAM w PC, a także pakiet uswsusp, który instalujemy metodą:

sudo apt-get install uswsusp

Jest on konfigurowany po instalacji (wystarczy podać mu lokalizację partycji swap w formacie /dev/sdXY, np /dev/sda1) i następnie nadaje się do użytku.

6. Napisałem następnie właściwy skrypt, który miał za zadanie utworzyć plik wingamelauncher.bat (usuwając poprzednio istniejący) dla Windowsa, wybrać pozycję w GRUBie na Windows i wreszcie zrestartować system – albo korzystając z hibernacji (patrzy krok 5), albo standardowo.

#!/bin/sh
#wingamelauncher - sh linux part
#by dRaiser
#http://draiser.net
if [ -f /mnt/Multimedia/wingamelauncher.bat ]
then
rm /mnt/Multimedia/wingamelauncher.bat
fi
echo "\"$1\"\r\nrecreatewgl.bat" > /mnt/Multimedia/wingamelauncher.bat
sudo grub-reboot 2
#sudo shutdown -r now
sudo s2disk -P 'shutdown method = reboot'

Potrzebne są w nim 3 modyfikacje – czyli podanie właściwej lokalizacji pliku wingamelauncher.bat z punktu widzenia Linuksa – u mnie to punkt montowania “/mnt/Multimedia”, a następnie, w zależności od wybranej metody rebootu:

1) Dla hibernacji przed rebootem, z użyciem pakietu uswsusp, pozostawienie bez zmian;
2) Dla rozwiązania bez hibernacji – usunięcie albo zakomentowanie znakiem “#” linijki “sudo s2disk(…)”, za to odkomentowanie (usunięcie znaku “#”) linijki “sudo shutdown -r now”.

7. Następnie umieściłem link symboliczny do skryptu w katalogu /usr/bin, żeby był wygodnie uruchamiany z dowolnego miejsca w systemie:

sudo ln -s /home/draiser/Skrypty/wingamelauncher.sh /usr/bin/wingamelauncher

Gdzie “/home/draiser/Skrypty/wingamelauncher.sh” to oczywiście fizyczna lokalizacja zapisanego skryptu.

8. Pozostał w zasadzie tylko ostatni krok, tj. utworzenie aktywatora (skrótu) do uruchamiania konkretnej gry. W każdym środowisku graficznym tworzenie launchera wygląda podobnie, pozwolę sobie więc podać wyłącznie schemat polecenia aktywatora:

wingamelauncher "H:\Program Files\Diablo III\Diablo III\Diablo III.exe"

Gdzie ścieżka podana jako parametr polecenia to fizyczna lokalizacja pliku uruchomieniowego gry – widoczna dla Windows.

Na koniec

Jeśli wszystko poszło poprawnie, to uruchomienie skryptu powinno bezproblemowo zamknąć (albo zahibernować) Linuksa, wybrać w GRUB automatycznie Windows, uruchomić go, zalogować się, włączyć launcher Diablo 3. Słowem – wystarczy wyklikać skrót i zrobić sobie kilkuminutową przerwę, a następnie można już siekać bestie. :)

Niegłupim pomysłem jest odchudzenie Windowsa, żeby uruchamiał się możliwie najszybciej, powyłączanie zbędnych usług, et cetera.

Rozwiązanie powinno działać zarówno pod GRUB, jak i GRUB2; systemami debianopochodnymi, jak i resztą.

Zdaję sobie sprawę, że pewnie całą sprawę można rozwiązać lepiej/prościej – pisałem w bashu zawsze “przy okazji” i dopiero zaczynam bawić się weń na poważniej, ale nie znalazłem gotowego rozwiązania dla tego problemu – może komuś, poza mną, się ono przyda. Oczywiście można w ten sposób uruchomić cokolwiek, nie tylko gry. ;)

Grafika pochodzi z artykułu Blizzard sprawdzi się na Linuksie w 2013.

Tweakowanie po androidowemu

xperia-x10-icsPostanowiłem zmienić ROM systemu w mojej wysłużonej i zasłużonej Xperii X10 (Sony Ericsson). Oficjalny ma straszne problemy z wydajnością, co więcej, postępujące w czasie.

Pogrzebałem i znalazłem projekty grupy Feralab, która to grupa specjalizuje się w tweakowaniu Androida własnie pod Xperię X10. Swego czasu czytałem o FeraLab “2.3.9”, czyli usprawnionym oryginalnym sofcie, a teraz dodatkowo znalazłem i autorską betę Androida 4, czyli Ice Cream Sandwich – nie mogłem się nie pokusić o spróbowanie, zwłaszcza że miało być lepiej, szybciej i przyjemniej.

Pamiętając czasy świetnie modowalnych starszych Sony Ericssonów, postanowiłem poflashować. Pobawiłem się wgrywając kernele podejrzanymi toolami, pocieszyłem się patrząc na kolorowe animacje tweakerów, aż wreszcie dotarłem do ICS-a. Wygląda świetnie na X10, działa też sprawnie, z tym małym wyjątkiem, że przynajmniej 1/3 używanych przeze mnie aplikacji crashuje aż miło.

Szlag by to – pożałowałem i zmieniłem software na planowany wcześniej, czyli wspomniany 2.3.9. Tu jest dużo lepiej, jakkolwiek ROM wgrywałem ładnych parę razy – przede wszystkim dlatego, że ma sporo ciekawych ustawień (motywy rządzą, przynajmniej namiastka Holo z ICS jest), ale przede wszystkim dlatego, że czasem zainstalowało się wszystko, a czasem podstawowe funkcje, nomen omen, telefonicznie nie działały.

Tweakerzy wyraźnie informują, że soft musi się “rozepchać” i pokazuje swoje najlepsze strony dopiero po 1-2 dniach – zawierzę tym słowom, bo o ile zabawa jest zabawą, to nie jest tak pięknie, jak być powinno. Wprawdzie wszystkie appki z Google Play działają, to bardzo lubiane przeze mnie pakiety spoza niego, jak np. Moloko czy open-source’owy klient OwnClouda, już niezupełnie (po ponownej reinstalacji udało się je uruchomić poprawnie).. A wydajność jest dyskusyjna – smartfon potrafi śmigać aż miło, ale potrafi też się przycinać jak głupi.

Szczęśliwie, stan pierwszy – śmiganie – raczej dominuje, więc nie jest źle. A i instalacja tego software’u jest emocjonująca (nigdy nie wiadomo, czy smartfon wstanie ;-), więc to pewnie nie koniec zabawy. Zobaczymy, jak będzie dalej, zwłaszcza, jak wypuszczą wersję oficjalną… albo nawet, następną betę tego ICS-a.

Uwaga, krytycznie zły update [Windows 8]

No tak, pochwaliłem nowy system od Microsoftu, to postanowił mnie za to ukarać. Bardzo dobitnie, bo wysypał się tak, że nie było jak go odratować – przy włączaniu ekrany moich monitorów migotały, mogłem pomachać kursorem… i na tym kończyła się aktywność systemu. Wymuszony safe mode zachowywał się tak samo, więc coś wydającego się początkowo drobiazgiem okazało się być problemem krytycznym. Google nie jest zbyt pomocny – problem się w nim pojawia, ale podstawowa receptura to “refresh”!

Automatic Repair z płytki nie podziałał, mogłem jedynie zrobić ww. refresh systemu, co zupełnie nie jest rozwiązaniem – nie po to robię upgrade OS z mojej mocno modowanej siódemki, aby teraz wszystkie te zagrzebane w rejestrach ustawienia & dziwne-wyjątki-dla-programów tracić.

Ostatecznie przywróciłem obraz partycji z siódemką, ponowiłem męczący dla mnie i komputera proces upgrade’u do ósemki (trwał na mojej maszynie ładnych parę godzin, ale uważam, że warto), i przed ponownym pobraniem aktualizacji zrobiłem kolejny [świeższy ;)] obraz partycji.

I słusznie, bo problem się powtórzył. Jak wcześniej update’y nie chciały się zainstalować (komputer blokował je obronnie, najwyraźniej) i musiałem je wymusić zatrzymując parę usług, to po całym procesie nawet się nie zapytały, tylko od razu napsuły.

Oficjalnie problem jest nieznany. Występuje tak samo opisany, ale dla komputerów z UEFI (nowszą konkurencją dla BIOSów), jak się dowiaduję ze strony MS. Cóż, wychodzi na to, że jedyne rozwiązanie na tę chwilę, to instalować wyłącznie krytyczne poprawki, przynajmniej do wykrycia, która to konkretnie tak psuje.

Dlaczego OwnCloud to świetne rozwiązanie

Podoba mi się, co tzw. technologia chmur robi z rynkiem usług konsumenckich, nawet jeśli owe usługi nie są rewolucyjne. Nie podoba mi się za to, że połowa chmur leży w rękach wielkich usługodawców, którzy nie mają problemów z odcięciem dostępu do danych użytkownika z dnia na dzień.

Dlatego też sam, po paru próbach, m.in. z Dropboksem, który zdecydowanie mnie nie urzekł i SugarSync’iem, który z kolei jest bardzo dobrą usługą, postanowiłem przejść na swoje. Umożliwił mi to open-source’owy projekt OwnCloud, notabene rozwijany przez grupę KDE. OwnClouda wystarczy zainstalować na obsługującym go serwerze , a że wymagania nie są duże (można go zanstalować nawet na IIS pod Windows 7!), to najprościej jest go odpalić chociażby na hostingu www (tu z kolei polecam Dreamhosta, zero problemów z wdrażaniem OC).

Co daje własna chmura na OwnCloud?

1) Świetną synchronizację dowolnych folderów – podstawowe chyba wykorzystanie dowolnej chmury konsumenckiej, ograniczone jedynie własnym miejscem/hostingiem ;-) OC ma rozwijane na bieżąco klienty (oczywiście również open-source’owe, każdy paranoik może sprawdzić kod) dla Windowsa, sporej ilości dystrybucji Linuksa, OSX-a.

2) Zarządzanie kalendarzami, kontaktami, z WebDAV-em i innymi zabawkami;

3) Prywatność i poczucie bezpieczeństwa.

A także wiele więcej – mamy tutaj i wersjonowanie plików, jak i możliwość zakładania kont dla użytkowników, zarządzanie uprawnieniami, streaming video&audio dla dowolnych urządzeń, klienty mobilne…

Update:

Niestety, jak to czasem bywa z projektami open source, trzeba uważać na aktualizacje. Warto się orientować, którą wersję polecają użytkownicy, bo nowe potrafią wprowadzać nowe błędy. Osobiście polecam wersję 4.5.0 serwera i 1.1.1 klienta.

Linki do pobrania:

Aktualna – serwer Aktualna – klient

4.5.0 – serwer 1.1.1 – klient