Category Archives: How to

Instalacja Powerline w Debian 9

apt-get install python-setuptools python-pip
pip install wheel powerline-status

Dodajemy do `/etc/bash.bashrc`

# powerline
if [ -f /usr/local/lib/python2.7/dist-packages/powerline/bindings/bash/powerline.sh ]; then
        source /usr/local/lib/python2.7/dist-packages/powerline/bindings/bash/powerline.sh
fi

Ładujemy nową konfigurację:

. /etc/bash.bashrc

Automatyczne przełączanie dźwięku na HDMI

Najczęściej podłączam laptopa do telewizora, aby coś na nim wyświetlić. Chcę wtedy aby obraz i dźwięk szły po kablu HDMI. O ile z obrazem nie ma problemu większego, bo jest automatycznie przełączany, to dźwięk trzeba ustawić samemu.
Jako, że Linuksy mnie rozleniwiły, wolę by robiło sie to samo. Nie jest to skomplikowane.

Tworzymy wykonywalny plik /usr/local/bin/toggle_hdmi_sound z zawartością:

#!/bin/sh
 
USER=`who | grep " :0 " | cut -f1 -d' '`
HDMI_STATUS=`cat /sys/class/drm/card0/*HDMI*/status`
 
export PULSE_SERVER="`pactl info | grep -oE 'unix:.+'`"
 
if [ $HDMI_STATUS = "connected" ]
then
    su $USER -c"pactl --server $PULSE_SERVER set-card-profile 0 output:hdmi-stereo+input:analog-stereo" 
else
    su $USER -c"pactl --server $PULSE_SERVER set-card-profile 0 output:analog-stereo+input:analog-stereo" 
fi

Następnie tworzymy plik /etc/udev/rules.d/hdmi_sound.rules – regułę udev do uruchamiania powyższego polecenia:

KERNEL=="card0", SUBSYSTEM=="drm", ENV{DISPLAY}=":0",  RUN+="/usr/local/bin/hdmi_sound_toggle"

Na koniec wystarczy przeładowac reguły udev:

udevadm control --reload-rules

Dźwięk po HDMI w Arch

Podczas puszczania dźwięku po HDMI w Archu słychać “bzyknięcie” co 10-15 sekund. Bierze się to z różnego próbkowania dźwięku. System domyślnie operuje na 44100 kHz, natomiast po kablu HDMI musi iść dźwięk 48000 kHz.

Jako, że cały dźwięk w Arch obsługuje pulse, najłatwiej to poprawić w nim.  Otwieramy plik /etc/pulse/daemon.conf i odnajdujemy w nim linię:

; default-sample-rate = 44100

Zmieniamy ją na:

default-sample-rate = 48000

Po tym wystarczy uruchomić ponownie komputer i gotowe.

Aktualizacja firmware dysków Seagate Barracuda

Pierwszy wpis w tym blogu opisywał jak naprawić dysk Seagate z wadliwej serii Barracuda 7200.11. Dziś, po trzeciej takiej operacji, przypomniałem sobie o aktualizacji firmware. Operacja te jest szybka i bezbolesna.

Najpierw ściągamy obraz płyty z nowym firmware ze strony Seagate, po czym wypalamy go na płycie CD. Ostatnim punktem przygotowań jest ustawienie w BIOSie CD-ROMu jako pierwszego punktu startowego i odłączenie pozostałych dysków twardych.

Wkładamy płytę z nowym firmware i startujemy z niej system. O ile wszystko poszło dobrze, powinien się pojawić poniższy ekran.

Naciskamy F10, aby zaakceptować licencję (a raczej jej brak). Pojawi nam się ekran z listą operacji do wyboru. Klawisze A, B i C rozpoczynają wgrywanie firmware wybranego modelu.

Dobrze jednak najpierw wybrać S, by przeskanować system.

Zostanie wyświetlony model naszego dysku. Wciskając dowolny klawisz wracamy do poprzedniego menu i wybieramy nasz model. W moim przypadku jest to A. UPEWIJ SIĘ 13 RAZY ZANIM ROZPOCZNIESZ WGRYWANIE NOWEGO FIRMWARE. WYBRANIE ZŁEGO MODELU USZKODZI TRWALE DYSK, CZEGO NIE POKRYJE GWARANCJA SEAGATE!

Po około 30 sekundach aktualizacja się zakończy wyświetlając poniższy ekran.

Naciśnięcie dowolnego klawisza spowoduje wyłączenie komputera. Gotowe. Można podłączyć pozostałe diski i normalnie uruchomić komputer.

Podpisywanie emaili ważnym certyfikatem

Ostatnio opisałem jak zmusić Kmail do akceptacji prawidłowych certyfikatów na przykładzie mBanku. Teraz zapragnąłem czegoś więcej – własnego certyfikatu.
Jest wiele opisów jak utworzyć certyfikat podpisany przez samego siebie. Jednak takie certyfikaty są złe ponieważ nie będą oznaczane automatycznie jako zaufane. Niewiele osób wie, że można uzyskać darmowy certyfikat podpisany przez zaufanego wystawcę. W dalszej części opiszę jak można go uzyskać.

Continue reading

Drukarka Samsung ML-1660 a Linux

Jako, że stara drukarka przeszła do historii, musiałem sobie sprawić nową. Wybór padł na Samsung ML-1660. Bo jest mała, tania i działa pod Linuksem bez problemów.

Niestety, jak zwykle, rzeczywistość nie jest tak piękna. Mała i owszem. Jednak złącza USB i zasilania są na tylnym panelu, podłączane prostopadle do obudowy. Dzięki temu, aby zmieścić wystające wtyczki drukarka musi stać jakieś 5cm od ściany.

To co Samsumg napisał w specyfikacji jest szczerą prawdą. Drukarka działa pod Linuksem. Jednak jej instalacja jest drogą przez mękę. Oto jak tego dokonać, na podstawie systemu PCLinuxOS.

Przede wszystkim trzeba odinstalować pakiet libtmp. Koliduje on z drukarką i podczas jej instalacji powoduje jej nieprawidłowe wykrywanie i zawieszanie.

apt-get remove libmtp8

Zapewne poprosi w tym momencie o usunięcie paru przydatnych programów, jak na przykład VLC, Amarok lub Clementine. Trudno, trzeba się zgodzić, ale to tylko na chwilę.
Ze strony Samsunga ściągamy Unified Driver i rozpakowujemy. Nie będziemy uruchamiali instalatora. Drukarka i tak nie zostanie wykryta przez instalator, a sam program do zarządzania drukarkami nie wygląda na jakiś specjalnie przydatny.

wget "http://org.downloadcenter.samsung.com/downloadfile/ContentsFile.aspx?CDSite=PL&CttFileID=2745812&CDCttType=DR&ModelType=N&ModelName=ML-1660&VPath=DR/201001/20100121132724343/UnifiedLinuxDriver_0.86.tar.gz"
tar -xzf UnifiedLinuxDriver_0.86.tar.gz
 
# Dla i386:
cp cdroot/Linux/i386/at_root/usr/lib/cups/filter/rastertosamsung* /usr/lib/cups/filter/
# dla i64
cp cdroot/Linux/x86_64/at_root/usr/lib64/cups/filter/rastertosamsung* /usr/lib/cups/filter/
 
chmod 755 /usr/lib/cups/filter/rastertosamsung*
chown root:root /usr/lib/cups/filter/rastertosamsung*

Teraz podłącz i włącz drukarkę.
Przejdź do Centrum Sterowania -> Sprzęt -> Set up printer… Jeśli masz szczęście – drukarka pojawi się sama. Jeśli nie – trzeba dodać ją samemu. W takim wypadku jako urządzenie wybieramy /dev/usb/lp0.

Następnie jako typ drukarki należy wybrać własny plik PPD i wskazać na plik cdroot/Linux/noarch/at_opt/share/ppd/ML-1660spl.ppd.

Po instalacji drukarki można z powrotem zainstalować libmtp i usunięte aplikacje.

Oznaczanie certyfikatu mBanku jako zaufanego

Jestem… hmmm… powiedzmy, że szczęśliwym użytkownikiem mBanku. Niestety od zawsze kmail nie potrafił poprawnie zweryfikować ich podpisu. I co jak co, ale trochę dziwnie wyglądają maile od Twojego banku, które mają błędny certyfikat… Po kilku latach męczenia się z tym i paroma niemrawymi próbami w końcu wymyśliłem jak to rozwiązać.

Najpierw trzeba zainstalować wymagane pakiety:

apt-get install pinentry-qt4 kleopatra

Kleopatra nie jest konieczna do działania, ale przyda się, do podglądu, co się dzieje z certyfikatami.

Następnie w katalogu ~/.gnupg tworzymy pliki konfiguracyjne:
gpg-agent.conf:

pinentry-program /usr/bin/pinentry-qt
default-cache-ttl 86400   # be aware that the passphrases will be cached for 86400 seconds! set accordingly to your needs
max-cache-ttl 86400
disable-scdaemon
write-env-file ~/.gnupg/.gpg-agent-info
allow-mark-trusted
keep-display
display :0.0

verbose
debug-level advanced
log-file socket:///home/cyryl/.gnupg/log-socket

gpgsm.conf:

auto-issuer-key-retrieve
include-certs -1  # this will include all certificates in the chain up to the root
debug-level basic

disable-policy-checks
auto-issuer-key-retrieve
prefer-system-dirmngr
debug-level advanced
log-file socket:///home/cyryl/.gnupg/log-socket

Teraz importujemy certyfikaty najwyższego rzędu:

gpgsm --import /etc/pki/tls/certs/ca-bundle.pem

I oznaczenie je jako zaufane. Najprościej to zrobić automatycznie poleceniem:

gpgsm --list-keys 2>/dev/null | grep fingerprint | awk '{print $2 " S"}' >> ~/.gnupg/trustlist.txt

Po tej akcji Kleopatra będzie już widziała większość root certyfikatów jako zaufane.

Teraz wystarczy ponownie wyświetlić naszą podpisaną wiadomość, a jej certyfikat zostanie automatycznie zaimportowany.

I niestety, ale root certyfikat dla mBanku nie jest jeszcze widoczny jako zaufany mimo, że występuje już w pliku trustlist.txt. Na liście certyfikatów odnajdujemy certyfikat mBanku i wchodzimy w szczegóły certyfikatu najwyższego poziomu. Sprawdzamy odcisk palca.

W pliku ~/.gnupg.trustlist.txt odnajdujemy odcisk palca tego certyfikatu i na końcu linii dopisujemy słowo relax. Cała linia powinna wyglądać tak:

61:EF:43:D7:7F:CA:D4:61:51:BC:98:E0:C3:59:12:AF:9F:EB:63:11 S relax

Teraz wszystko powinno już działać. Jeśli Po odświeżeniu wiadomość nie jest zielona, można ubić proces pgp-agent dla odświeżenia konfiguracji.

Kolorowa linia poleceń w Bashu

Po tym jak ostatnio musiałem naprawiać linię poleceń pewnej wielce poważanej serwerowej dystrybucji postawiłem opisać, jak się to robi prawidłowo. Bo z przerażeniem odkryłem, że większość dostępnych opisów zawiera błędy.

Ale zacznijmy od początku. Linia poleceń o której mówię, zwykle wygląda tak:

Wiele osób mówi, jak można zdefiniować kolory. Jednak w większości przypadków taka zabawa kończy się mniej więcej tak:

Jak więc prawidłowo zdefiniować linię poleceń?

W pliku ~/.bashrc definiujemy zmienną

export PS1='tutaj nasza definicja'

Styl definiujemy pomiędzy \[\033[ a m\].

Kody kolorów czcionki (dla koloru tła dodaj 10 do tej liczby):

  • 30 – czarny
  • 31 – czerwony
  • 32 – zielony
  • 33 – brązowy
  • 34 – niebieski
  • 35 – fioletowy
  • 36 – jasnoniebieski
  • 37 – biały
  • 0 – usuń wszelkie formatowanie

Efekty czcionki:

  • 0 – czcionka normalna
  • 1 – pogrubienie
  • 4 – podkreślenie
  • 5 – mruganie
  • 7 – zamień kolory czcionki i tła

Jeśli chcemy połączyć razem kilka efektów, to rozdzielamy poszczególne kody średnikami. Na przykład pogrubiona fioletowa czcionka na białym tle to 1;35;47. Jeśli chcemy wyczyścić całe formatowanie, to wystarczy wpisać 0 (czyli zero).

Większość opisów w sieci zawiera zwykle takie błędy:

  • brak domknięcia definicji \]
  • \e to nie jest idealnie to samo co \[\033

W praktyce ja stosuję takie definicje:

# user
export PS1='\[\033[32m\]\u\[\033[33m\]@\[\033[1;36m\]\h\[\033[0;33m\]:\[\033[31m\]\w \[\033[1;32m\]\$\[\033[0m\] '

# root
export PS1='\[\033[41;1;32m\]\u\[\033[0;33m\]@\[\033[1;36m\]\h\[\033[0;33m\]:\[\033[31m\]\w \[\033[1;31m\]\$\[\033[0m\] '

Pogrubiony host przydaje się zwłaszcza gdy loguję się na wiele serwerów. Łatwo wtedy napsuć wpisując komendę nie w tym oknie, w którym się chce. A gdy jestem rootem dodatkowo podkreślam kolorem, by było to widać z daleka.

Uruchamianie czujki na płytach głównych MSI

Jeśli używasz płyty głównej MSI może się zdziwić dość uboga liczba czujników – w porywach aż jeden. Jeśli dodatkowo w logach widzisz komunikaty

Jan 28 17:11:52 localhost klogd: ACPI: resource f71882fg [io  0x0600-0x0607] conflicts with ACPI region HMOR [??? 0x00000605-0x00000606 flags 0x52]
Jan 28 17:11:52 localhost klogd: ACPI: This conflict may cause random problems and system instability
Jan 28 17:11:52 localhost klogd: ACPI: If an ACPI driver is available for this device, you should use it instead of the native driver

to właśnie poczułeś na własnej dupie jak MSI olewa użytkowników Linuksa.

Na szczęście jednak ten problem da się łatwo rozwiązać. Do linii startowych gruba (lub lilo) wystarczy dopisać acpi_enforce_resources=lax, tak, aby cały wpis wyglądał mniej więcej tak:

title linux
kernel (hd0,0)/boot/vmlinuz BOOT_IMAGE=linux root=UUID=147570a8-f671-4592-8f2c-98808b8dfd14 resume=UUID=b0b40a29-4265-4f7c-bcf9-08dc58490923 splash=silent vga=788 acpi_enforce_resources=lax
initrd (hd0,0)/boot/initrd.img

Po restarcie systemu czujnik zostanie od razu wykryty, jednak nie zaszkodzi uruchomić jeszcze raz sensors-detect.

Dynamiczne wstawianie formuł matematycznych na stronę

Czasami może najść nas potrzeba wstawienia formuły matematycznej na stronie. Proste przypadki można załatwić bezproblemowo z klawiatury, jak na przykład y = 3x^2 + 3/4. Jednak co zrobić, jak najdzie nas ochota zaprezentowania podwójnej całki z pierwiastkiem?

Z pomocą przychodzi nam prosta biblioteka MathTex napisana w C. Jej kompilacja jest bardzo prosta i sprowadza się do uruchomienia (uwaga na \” – to jest prawidłowy zapis!)

cc mathtex.c -DLATEX="\"`which latex`\"" -DDVIPNG="\"`which dvipng`\"" -o mathtex.cgi

Wynikowy plik mathtex.cgi wystarczy wrzucić na serwer i jeśli trzeba – ustawić uprawnienia.
Całość można odpalić z przeglądarki podając w GET formułę: http://blog.cyryl.net/cgi/mathtex/mathtex.cgi?x^2
lub umieścić na stronie jako obrazek:

<img src="/cgi/mathtex/mathtex.cgi?f(x)=\int_{-\infty}^xe^{-t^2}dt" alt="" border=0 align="middle"/>

W rezultacie otrzymamy naszą formułę prawidłowo opływającą tekst.

Sama istota jest prosta w działaniu – tworzony jest plik źródłowy z formula, a następnie jest uruchamiany latex do jej skompilowania. Po czym wynikowy plik gif jest zapisywany w cache i przy kolejnym wywołaniu jest już bezpośrednio zwracany.