piątek, 23 listopada 2012

Odczyt trasy z GPSport 245 z pomocą gpsbabel

Na rowerowe wyprawy zabieram ze sobą GPSport 245 - urządzenie będące licznikiem i loggerem trasy jednocześnie. Producent urządzenia zwyczajem większości producentów nie dostarczył programu, za pomocą którego można by odczytać ślad przejechanej trasy w systemie innym niż Microsoft Windows.
Szukając rozwiązania trafiłem na program obsługujący znaczną ilość loggerów i nawigacji GPS - gpsbabel. Program jest prosty w obsłudze, daje możliwość odczytu danych z urządzenia zarówno w trybie tekstowym jak i w trybie graficznym. Obsługa w trybie graficznym jest intuicyjna, więc nie będę opisywał, natomiast odczyt w trybie tekstowym z mojego urządzenia można uzyskać przez wydanie polecenia:
gpsbabel -t -i m241 -f /dev/ttyUSB0 \
-o kml,lines,points,floating,track,trackdata,labels \
-F out.kml
Nie ma jednak róży bez kolców. Program nie potrafi z poziomu zwykłego użytkownika podłączyć się z GPSport 245 podpiętym do USB. Ja radzę sobie z problemem odczytując dane z konta root lub - również z roota - nadając wszystkim uprawnienia do zapisu na /dev/ttyUSB0.
Program jest dostępny w standardowych repozytoriach Fedory, wystarczy więc:
yum install gpsbabel



środa, 14 listopada 2012

Budowanie modułów jądra z pakietów 'akmod-*'

W repozytorium RPM Fusion można znaleźć pakiety zawierające spaczkowane moduły jądra zawierające zamknięte sterowniki grafiki Nvidia i AMD (Catalyst) oraz pakiet ze sterownikami kart sieci bezprzewodowej szczególnie przydatny dla posiadaczy niektórych modeli kart Broadcom (np.BCM4312).
Instalacja pakietu "akmod" wymaga jego kompilacji. Jak się do tego zabrać? Najpierw należy zainstalować pakiet kernel-devel oraz kompilator.
yum install kernel-devel gcc

Następnie instalujemy moduł np.sterowniki kart bezprzewodowych Broadcom
yum install broadcom-wl akmod-wl

Po zainstalowaniu ww. pakietów oraz pakietów wybranych przez yum w celu rozwiązania zależności moduł jadra możemy zbudować i uruchomić kilka sposobów:
  • restartując komputer albo
  • wywołując polecenie:
    akmods --kernels `uname -r`
  • lub restartując odpowiednią usługę:
    systemctl restart akmods.service

    Analogicznie należy postępować z innymi pakietami "akmod" jak np.akmod-nvidia czy akmod-catalyst.

  • sobota, 10 listopada 2012

    Uruchomienie maszyny wirtualnej w VirtualBox z LiveCD nagranego na pendrive

    Do uruchomienia maszyny wirtualnej w VirtualBox z pendrive'a (lub innego napędu USB np.karty SD umieszczonej w czytniku) potrzebne będą:
  • Obraz LiveCD (obrazy Fedory można pobrać ze strony Projektu Fedora
  • program do nagrania pobranego obrazu LiveCD (Fedora dostarcza narzędzie graficzne działające na Linuksie i na Windows - LiveUSB Creator
  • no i oczywiście zainstalowany VirtualBox (dostępny w repozytoriach)
    Obrazu LiveCD nagranego na urządzenie z interfejsem USB nie można niestety uruchomić bezpośrednio. Aby to zrobić trzeba najpierw emulować wirtualny dysk twardy.
    Nie będę opisywał jak nagrać obraz LiveCD na pendrive czy inne urządzenie USB - podany wyżej program graficzny jest intuicyjny i prosty w obsłudze.

    Zakładam, że mamy już gotowe urządzenie USB z nagranym obrazem. Trzeba teraz sprawdzić jak urządzenie widziane jest w systemie. W tym celu podłączamy urządzenie (nie montujemy) i jako root sprawdzamy:
    [root@F17 ~]# fdisk -l

    [tu informacje o innych urządzeniach]

    Dysk /dev/sdc: 8011 MB, bajtów: 8011120640
    głowic: 247, sektorów/ścieżkę: 62, cylindrów: 1021, w sumie sektorów: 15646720
    Jednostka = sektorów, czyli 1 * 512 = 512 bajtów
    Rozmiar sektora (logiczny/fizyczny) w bajtach: 512 / 512
    Rozmiar we/wy (minimalny/optymalny) w bajtach: 512 / 512
    Identyfikator dysku: 0x000c6f43

    Urządzenie Rozruch Początek Koniec Bloków ID System
    /dev/sdc1 * 62 15635593 7817766 b W95 FAT32

    Jak widać pendrive widziany jest jako urządzenie /dev/sdc, możemy więc utworzyć wirtualny dysk twardy. Nadal jako root:
    [root@F17 ~]# VBoxManage internalcommands createrawvmdk -filename /<tu_ścieżka_do_pliku>/usb.vmdk -rawdisk /dev/sdc
    RAW host disk access VMDK file /data/vboxdisk/usb.vmdk created successfully.


    Ponieważ dalej będziemy działać na koncie zwykłego użytkownika, więc najpierw zmienimy uprawnienia do pliku VMDK, który utworzyliśmy:

    [root@F17 ~]# chown user:user /<tu_ścieżka_do_pliku>/usb.vmdk
    [root@F17 ~]# chmod 666 /<tu_ścieżka_do_pliku>/usb.vmdk

    Dodatkowo zmieniamy jeszcze uprawnienia do urządzenia:

    [root@F17 ~]# chmod 666 /dev/sdc

    Wylogowujemy się z root i teraz już jako zwykły użytkownik tworzymy nowa maszynę wirtualną i podłączamy do niej utworzony dysk.

    [user@F17 ~]$ VBoxManage createvm --register --name USB-TEST-FEDORA --ostype Fedora
    Virtual machine 'USB-TEST-FEDORA' is created and registered.
    UUID: ad97404f-2a8c-4219-ba50-fbf4341d1c08 Settings file: '/data/VirtualBox/USB-TEST-FEDORA/USB-TEST-FEDORA.vbox'

    W ten sposób utworzyliśmy maszynę wirtualną o nazwie USB-TEST-FEDORA. Teraz musimy podłączyć do niej dysk:

    [user@F17 ~]$ VBoxManage modifyvm "USB-TEST-FEDORA" --sata on --sataportcount 8 --sataport1 "/<tu_ścieżka_do_pliku>/usb.vmdk"

    Przed uruchomieniem maszyny zmieniamy jeszcze uprawnienia do urządzenia (jako root):

    [root@F17 ~]# chmod 666 /dev/sdc


    Oczywiście wszystkie powyższe czynności można wykonać z GUI VirtualBox. Przy tworzeniu nowej maszyny wirtualnej należy wybrać opcję "Use an existing virtual hard drive file" i wskazać plik usb.vmdk.

    I to w zasadzie wszystko:

    VBoxManage startvm USB-TEST-FEDORA


  • wtorek, 6 listopada 2012

    Komunikat "Cannot open font file True"

    Od jakiegoś czasu deweloperzy postanowili uraczyć nas w parametrach jądra wpisem SYSFONT=True. Skąd to i po co? Nie wiem, ale wiem, że przez to podczas startu systemu pokazuje się błąd "Cannot open font file True". Można temu zaradzić zamieniając w pliku /etc/default/grub w linii GRUB_CMDLINE_LINUX wpis "SYSFONT=True" tekstem "SYSFONT=latarcyrheb-sun16". Np.
    GRUB_TIMEOUT=5
    GRUB_DISTRIBUTOR="Fedora"
    GRUB_DEFAULT=saved
    GRUB_GFXPAYLOAD=keep
    GRUB_CMDLINE_LINUX="rd.md=0 rd.lvm=0 rd.dm=0 SYSFONT=latarcyrheb-sun16 KEYTABLE=pl2 rd.luks=0 LANG=pl_PL.UTF-8 quiet "

    Po tej zmianie trzeba jeszcze zainstalować zmieniony plik /boot/grub2/grub.cfg
    grub2-mkconfig -o /boot/grub2/grub.cfg

    Przy następnym starcie systemu błąd nie pojawi się.