wtorek, 24 grudnia 2013

Vlc strumieniowanie. FFmpeg, Ubuntu Server i kodeki x264

Obecnie podjąłem się długiej i mozolnej walki jak strumień z kamery USB, wysyłany po ethernecie skompresować i wysłać w świat.

W związku z tym, że Ubuntu prowadzi dosyć dziwną, choć uzasadnioną politykę dot. kodeków i oprogramowania nie-do-końca-otwartego, cała operacja wymaga przede wszystkim. Skompilowania na nowo ffmpeg.

W celu... korzystałem z dwóch tutków:
1. Oficjalnego ze strony ffmpeg, który nie do końca działa.
2. Oraz Googlobloga Wireless Video Sensor.

Łącząc te dwa dzieła wyszły mi takie (mniej więcej) komendy*:
*Ponieważ preferuję zabezpieczenie sobie drogi powrotnej, wszystkie programy są instalowane jako paczki, które łatwo jest usunąć (checkinstall).

Ponieważ Yasm na Ubuntu 12.04 jest za stary...:
wget http://www.tortall.net/projects/yasm/releases/yasm-1.2.0.tar.gz
tar xzvf yasm-1.2.0.tar.gz
cd yasm-1.2.0 
./configure 
make -j2
sudo checkinstall
Wywalamy co nam może przeszkadzać i instalujemy co może** się przydać:
**może, bo instaluję wszystko hurtem. Miejsce mam, a nie chce mi się bawić w poszukiwanie brakujących bibliotek i ich doinstalowywanie - ktoś już to zrobił za mnie.
sudo aptitude remove ffmpeg x264 libx264-dev

sudo aptitude install build-essential checkinstall git libfaac-dev libjack-jackd2-dev libmp3lame-dev libopencore-amrnb-dev libopencore-amrwb-dev libsdl1.2-dev libtheora-dev libva-dev libvdpau-dev libvorbis-dev libavfilter-dev libfreetype6-dev libvpx-dev libxfixes-dev texi2html zlib1g-dev 


sudo aptitude install libgnutls-dev sudo aptitude install libass-dev 

sudo aptitude install libdirac-dev 

sudo aptitude install libgsm1-dev sudo aptitude install libgsmme-dev 
sudo aptitude install libmodplug-dev sudo aptitude install libopenjpeg-dev 
sudo aptitude install librtmp-dev sudo aptitude install libschroedinger-dev 
sudo aptitude install libspeex-dev sudo aptitude install libvo-aacenc-dev 
sudo aptitude install libvo-amrwbenc-dev sudo aptitude install libxvidcore-dev sudo aptitude install libopenal-dev libdc1394-22-dev libv4l-dev 
sudo aptitude install libcdio-dev libcdio-cdda-dev libcdio-paranoia-dev

Teraz instalujemy x264:
git clone git://git.videolan.org/x264 cd x264 ./configure --enable-static --enable-shared --enable-debug --enable-gprof 
make 

sudo checkinstall --pkgname=x264 --pkgversion="3:$(./version.sh | \ awk -F'[" ]' '/POINT/{print $4"+git"$5}')" --backup=no --deldoc=yes \ --fstrans=no --default
oraz FFmpeg. Ucięte wszystko, pozostawione jedynie dekodowanie tego co wysłane zostało w formacie mjpeg i przekonwertowanie tego do h264 bez dźwięku:

 [todo] ./configure --enable-gpl --enable-libx264 --enable-libopenjpeg --enable-nonfree

niedziela, 22 grudnia 2013

Przykładowa komenda do streamowania kamery USB przy pomocy VLC

Przed dokonaniem poniższych komend należy wykonać sudo chmod 777 /dev/video* [sudo adduser <myuser> video nie zadziała], aby łatwiej operowało się na plikach reprezentujących kamery (do sprawdzenia).

vlc -I dummy v4l2c:///dev/video2 --sout '#standard{access=http,mux=ogg,dst=:8080}'
add. kilka uwag:
fps=5 jest jeszcze nie zaimplementowane
--v4l2-color-killer nie daje efektu
chroma=mjpg do sprawdzenia

aby ustawić jakość na maksimum (jpeg) trzeba sprawdzić jakie możliwości daje nam kamera (źródło):
vlc@mini:~$ v4l2-ctl -d /dev/video1 -l

User Controls

                     brightness (int)    : min=0 max=255 step=1 default=128 value=128 flags=slider
                       contrast (int)    : min=0 max=255 step=1 default=128 value=128 flags=slider
                          gamma (int)    : min=1 max=6 step=1 default=3 value=3 flags=slider
                 gain_automatic (bool)   : default=1 value=1
           power_line_frequency (menu)   : min=0 max=2 default=0 value=0
                      sharpness (int)    : min=0 max=3 step=1 default=2 value=2 flags=slider

JPEG Compression Controls

            compression_quality (int)    : min=50 max=87 step=1 default=75 value=87

i, aby ustawić maksymalną jakość:
v4l2-ctl -d /dev/video1 --set-ctrl compression_quality=87 
add end.

Ciekawym zjawiskiem jest to, że przy takich ustawieniach dwie kamery [NGS Bullseye Twin] nie chcą się uruchomić (vlc na nic nie krzyczy, ale w dmesgu pojawiają się informacje typu:

gspca_zc3xx 2-1:1.0: alt 6 - bandwidth not wide enough, trying again
<3>ohci-pci 0000:00:0f.4: leak ed c6b32100 (#81) state 2
gspca_zc3xx 2-1:1.0: alt 5 - bandwidth not wide enough, trying again
ohci-pci 0000:00:0f.4: leak ed c6b32480 (#81) state 2
gspca_main: ISOC data error: [0] len=144, status=-70
Stanowi to niemały problem i wymaga dalszego badania. Obejściem tego problemu, w wypadku tych kamer może być wydanie komendy:
vlc -I dummy v4l2c:///dev/video1:width=320:height=240:chroma=mjpg:fps=5 --v4l2-color-killer --sout '#standard{access=http,mux=ts,dst=:8081}'
I tu dochodzimy do tego ciekawego momentu. Otóż, strumieniowanie działa, a w dmesgu nic niepokojącego się nie pojawia, a obraz i tak jest 640x480.

chroma=mjpg:fps=5 --v4l2-color-killer mogą być niepotrzebne

środa, 18 grudnia 2013

Szybka zmiana rozmiarów wielu obrazów

Convert to świetne i potężne narzędzie do operowania obrazami. (nie)stety tekstowe.

Szybka zmiana rozmiaru wielu obrazów może wyglądać tak:

mkdir resized
for i in *.jpg; do
convert $i -resize 800×600 resized/$i
done
 Źródło:
mogrify -resize 800x600 *.jpg

Grub (legacy) dla systemu na USB

Korzystałem z dwóch tutków i nie do końca wiem który zadziałał.
Tut I i Tut II.

W skrócie:
1. Tworzymy katalog /boot/grub.
2. Do katalogu wrzucamy zawartość /usr/lib/grub/i386-pc. Ważne, by pliki były z wersji 32/64 odpowiednio dla systemu (tu pewny nie jestem, ale były problemy, gdy kopiowałem z 64).
3. Nic nie odmontowujemy. echo '(hd0) /dev/sdu' > /mnt/boot/grub/device.map. Gdzie sdu, to nasz gwizdek, a /mnt, to punkt jego montowania.
4. grub-install --root-directory=/mnt /dev/sdu.

Alternatywna 4., w grub:

- find /boot/grub/stage1 #zwróci potencjalne dyski
- root (hd1,0)
- setup (hd1)

Przykładów /boot/grub/menu.lst jest w internecie pod dostatkiem.

wtorek, 17 grudnia 2013

Informacje o dysku

Na podstawie strony:
sudo hdparm -I /dev/sda
 Przykładowe wyjście:

/dev/sda:

ATA device, with non-removable media
    Model Number:       ST500LT012-9WS142                      
    Serial Number:      W0V46WGG
    Firmware Revision:  0001SDM1
    Transport:          Serial, ATA8-AST, SATA 1.0a, SATA II Extensions, SATA Rev 2.5, SATA Rev 2.6
Standards:
    Used: unknown (minor revision code 0x0029)
    Supported: 8 7 6 5
    Likely used: 8
Configuration:
    Logical        max    current
    cylinders    16383    16383
    heads        16    16
    sectors/track    63    63
    --
    CHS current addressable sectors:   16514064
    LBA    user addressable sectors:  268435455
    LBA48  user addressable sectors:  976773168
    Logical  Sector size:                   512 bytes
    Physical Sector size:                  4096 bytes
    Logical Sector-0 offset:                  0 bytes
    device size with M = 1024*1024:      476940 MBytes
    device size with M = 1000*1000:      500107 MBytes (500 GB)
    cache/buffer size  = 16384 KBytes
    Form Factor: 2.5 inch
    Nominal Media Rotation Rate: 5400
Capabilities:
    LBA, IORDY(can be disabled)
    Queue depth: 32
    Standby timer values: spec'd by Standard, no device specific minimum
    R/W multiple sector transfer: Max = 16    Current = 16
    Advanced power management level: 128
    Recommended acoustic management value: 208, current value: 0
    DMA: mdma0 mdma1 mdma2 udma0 udma1 udma2 udma3 udma4 udma5 *udma6
         Cycle time: min=120ns recommended=120ns
    PIO: pio0 pio1 pio2 pio3 pio4
         Cycle time: no flow control=120ns  IORDY flow control=120ns
Commands/features:
    Enabled    Supported:
       *    SMART feature set
            Security Mode feature set
       *    Power Management feature set
       *    Write cache
       *    Look-ahead
       *    Host Protected Area feature set
       *    WRITE_BUFFER command
       *    READ_BUFFER command
       *    NOP cmd
       *    DOWNLOAD_MICROCODE
       *    Advanced Power Management feature set
            Power-Up In Standby feature set
       *    SET_FEATURES required to spinup after power up
            SET_MAX security extension
       *    48-bit Address feature set
       *    Device Configuration Overlay feature set
       *    Mandatory FLUSH_CACHE
       *    FLUSH_CACHE_EXT
       *    SMART error logging
       *    SMART self-test
       *    General Purpose Logging feature set
       *    WRITE_{DMA|MULTIPLE}_FUA_EXT
       *    64-bit World wide name
       *    IDLE_IMMEDIATE with UNLOAD
       *    Write-Read-Verify feature set
       *    WRITE_UNCORRECTABLE_EXT command
       *    {READ,WRITE}_DMA_EXT_GPL commands
       *    Segmented DOWNLOAD_MICROCODE
       *    Gen1 signaling speed (1.5Gb/s)
       *    Gen2 signaling speed (3.0Gb/s)
       *    Native Command Queueing (NCQ)
       *    Host-initiated interface power management
       *    Phy event counters
       *    Idle-Unload when NCQ is active
            Device-initiated interface power management
       *    Software settings preservation
       *    SMART Command Transport (SCT) feature set
       *    SCT Write Same (AC2)
       *    SCT Features Control (AC4)
       *    SCT Data Tables (AC5)
            unknown 206[12] (vendor specific)
Security:
    Master password revision code = 65534
        supported
    not    enabled
    not    locked
        frozen
    not    expired: security count
        supported: enhanced erase
    104min for SECURITY ERASE UNIT. 104min for ENHANCED SECURITY ERASE UNIT.
Logical Unit WWN Device Identifier: 5000c5005db86e24
    NAA        : 5
    IEEE OUI    : 000c50
    Unique ID    : 05db86e24
Checksum: correct

czwartek, 12 grudnia 2013

Jak rozpakować /proc/config.gz

Zawsze, gdy konfiguruję nowe jądro (dedykowane), dorzucam konfigurację do pliku w /proc. Przydaten, gdy zapomina się o jego odpowiednim przechowywaniu (kopia z datą i 'celem' modyfikacji). Gdy przychodzi czas na wygrzebanie:
[root@PBLinux hints]# cp /proc/config.gz config.gz
[root@PBLinux hints]# bunzip2 config.gz
[root@PBLinux hints]# gunzip config.gz
[root@PBLinux hints]# mv config .config
Info stąd.

środa, 4 grudnia 2013

7zip i "unsupported method"

Część archiwów nie chce się rozpakować przy pomocy 7z.
Prawdopodobnie brakuje w ów czas pakietu obsługującego rar. Zdobyć go można tak:
sudo apt-get install p7zip-full p7zip-rar

piątek, 22 listopada 2013

Instalacja Windows z USB przgotowanego pod linuksem

Przygotowanie pendrive z Windows XP do instalacji z poziomu linuksa przyspażała mi kiedyś ogromne problemy. Teraz, gdy nadeszła pora Windows 7/8 sprawa wygląda trochę lepiej. Na tej stronie można znaleźć przystępny poradnik, a cała operacja sprowadza się do:

1. Utworzenia na gwizdku partycji NTFS z flagą boot (polecam gparted).
2. Ściągnięcia (niestety) odpowiedniej wersji unetbootin (wersja 494).
3. Wybrania obrazu płyty, wybrania opcji Pokaż wszystkie napędy, wybraniu tego odpowiedniego i uruchomienia procesu OK.

poniedziałek, 11 listopada 2013

Klawisze funkcyjne FAN i WLAN, Samsung seria 5

samsung-tools to seria programów i skryptów dla Samsungów.
Konfiguracja samsung-tools-preferences, do konfiguracji skrótów.

UP!
Wreszcie doczekaliśmy się wersji ppa dla Ubuntu Saucy (13.10). Instalacja z ppa (Launchpad) wygląda tak, jak zwykle:
sudo add-apt-repository ppa:voria/ppa
a następnie:
sudo apt-get update
sudo apt-get install samsung-tools

PrintScreen w lUbuntu jak w xUbuntu

Niedawno przesiadłem się z xUbuntu na lUbuntu. Wygodna rzecz, bo ma się ogląd na dwa całkiem różne systemy i można wybrać co się podobało w starym i przenieść to do nowego.
Tak też sprawa wygląda z wykonywaniem zrzutów ekranu. Jest na to kilka rozwiązań, które sprowadzają się do wyboru programu wykonującego zrzut. Jednakże mi najbardziej odpowiadał [program] z xfce, więc postanowiłem odszukać co to było. Długo nie szukałem, wstukanie w google durnego hasła after print screen xfce applet wyprowadziło mnie na stronę xfce.org - a tam do wtycznki xfce4-screenshooter. Szybka instalacja przez apt-get krótkie testy:
xfce4-screenshooter -f   #zrzut całego ekranu
xfce4-screenshooter -w   #zrzut aktywnego okna
...i można brać się za edycję pliku  /home/{user}/.config/openbox/lubuntu-rc.xml:
<!-- Keybinding for PrintScreen Key --> <keybind key="Print"><action name="Execute"> <execute>xfce4-screenshooter -f</execute></action></keybind> <keybind key="C-Print"><action name="Execute"> <execute>xfce4-screenshooter -w</execute></action></keybind>
That's all folks. 




sobota, 9 listopada 2013

Budowanie paczek .deb dla Ubuntu

Tutaj znajduje się krótki opis jak przygotować paczki .deb z programu instalującego się z pomocą Make. Do takiego działania niezbędne będzie dla nas checkinstall oraz pakiety niezbędne do skompilowania/instalowania paczki.
Gdy mamy już wszystko gotowe, należy wykonać komendy jak przy zwykłej instalacji, zastępując jednak sudo make install komendą sudo checkinstall, np.:
./configure && make && sudo checkinstall
 Skuteczne również wtedy, gdy chcemy usunąć program zainstalowany ze źródeł.
W tym celu po 'standardowej instalacji' budujemy paczkę, instalujemy ją za pomocą sudo dpkg -i <paczka>, a następnie sudo apt-get purge <paczka> lub sudo apt-get remove <paczka>. Nazwa paczki dla apt-get to tylko nazwa programu. Jeśli nie wiemy jak dokładnie nazywa się program, wystarczy wpisać początek i <tab><tab>, a linux sam nam podpowie.

czwartek, 7 listopada 2013

Klawisze funkcyj głośności w (lu)Ubuntu

Od kiedy pojawiły się komputery z dwoma kartami dźwiękowymi (analog i HDMI) linux nie bardzo wie, którą kartę wybrać jako tę główną, a że wyjście audio w HDMI jest zazwyczaj pierwsze, to też jest ustawione jako główne.

W lUbuntu za ten problem odpowiedzialny jest plik (w katalogu domowym) ~/.config/openbox/lubuntu-rc.xml. W tym pliku znajdujemy sekcję podobną do tej poniżej:

   <keybind key="XF86AudioRaiseVolume">
      <action name="Execute">
        <command>amixer -q -c 1 sset Master 3%+ unmute</command>
      </action>
    </keybind>
    <keybind key="XF86AudioLowerVolume">
      <action name="Execute">
        <command>amixer -q -c 1 sset Master 3%-</command>
      </action>
    </keybind>
    <keybind key="XF86AudioMute">
      <action name="Execute">
        <command>amixer -q -c 1 sset Master toggle</command>
      </action>
    </keybind>
W moim przypadku dodanie modyfikatora "-c 1" wystarczy, by system wiedział, że przyciski głośności odpowiedzialne są za master na karcie nr. 1. Aby się upewnić która karta jest jak oznaczona wystarczy użyć alsamixer i tam np. zobaczyć menu wyboru karty (F6).

UP!
Wszystko byłoby fajnie, gdyby nie:
  • minimalna głośność wynosi 8%,
  • mute działa, unmute nie.
By ten problem rozwiązać, naży dodać do -c 1 jeszcze -D pulse, by wyglądało to np. tak:

<command>amixer -q -c 1 -D pulse sset Master toggle</command>

UP2!
Kontrola głośności w standardowym lubuntu jest niezadowalająca. Z pomocą przychodzi xfce4-mixer, który jest przy okazji świetnym narzędziem do obsługi wyjścia HDMI.

środa, 6 listopada 2013

Powertop raportuje wyjście audio HDMI oraz eth0, jako prądożerne

Aby wyłączyć wyjście hdmi należy zablokować moduł je obsługujący.
W pliku /etc/modprobe.d/blacklist.conf należy dodać snd_hda_code_realtek lub snd_hda_codec_hdm w zależności od tego co pokazuje lsmod, czyli np.:
blacklist snd_hda_codec_hdmi
Źródło.

UP!
Aby wyłączyć na starcie systemu interfejs eth0, należy do pliku
/etc/rc.local dodać sudo ifconfig eth0 down, przed ostatnią linią.

Źródło.

wtorek, 5 listopada 2013

Arduino IDE oraz ubuntu

Kompletna instrukcja jak zacząć z arduino tutaj.
Żeby zaprogramować arduino przez usb, w skrócie:

Po podłączeniu usb, należy komendą dmesg sprawdzić jako jakie tty zostało ono rozpoznane w jakim systemi. Np. ttyACM0.

Następnie udostępnić je do użytku wszystkim użytkownikom:
sudo chmod a+rw /dev/ttyACM0
Zrestartować arduino i wybrać odpowiedni port.

logind.conf i ustawienia akcji przycisku power

Za askubuntu, aby wyłączyć logind z obsługi przycisków typu sleep, power i pozostawić je menadżerowi zasilania należy w pliku /etc/systemd/logind.conf, znaleźć linię z HandlePowerKey i zastąpić ją:
HandlePowerKey=ignore
a następnie ustwić odpowiednią akcję w power manager.

środa, 30 października 2013

Instalacja sterowników beta od AMD (x86_64)


...i na podstawie Ubuntowego (13.04) tutka:
edit. troszkę zmieniły się wymagania co do zainstalowanych paczek [źródło]:

sudo apt-get install build-essential cdbs fakeroot dh-make debhelper debconf libstdc++6 dkms libqtgui4 wget execstack libelfg0 dh-modaliases xserver-xorg-dev
 edit. zmieniły się wymagania amd, stąd xserver-xorg-dev .
sh amd-driver-installer-catalyst-13-11-x86.x86_64.run --buildpkg Ubuntu/raring
sudo dpkg -i fglrx*.deb
sudo aticonfig --initial
sudo reboot

 Komenda fglrxinfo powinna wyświetlić coś takiego:
fglrxinfo
display: :0  screen: 0
OpenGL vendor string: Advanced Micro Devices, Inc.
OpenGL renderer string: AMD Radeon HD 6300M Series
OpenGL version string: 4.2.11733 Compatibility Profile Context
 
Na koniec ustawienia komendą gksudo amdcccle.

Edit. Na podstawie postu chazdg24 oraz tego tematu:
W przypadku Linux Mint w wersji KDE ważnym jest wydać komendę:
sudo apt-get remove --purge xserver-xorg-video-ati xserver-xorg-video-radeon
W przeciwnym wypadku próby uruchomienia efektów pulpitu skończą się błędem krytycznym Kwin.

edit2.
Podczas używania Eagle ujawnia się (prawdopodobnie) bug w sterownikach od AMD, który ponoć pojawia się i w innych miejscach. Oczywiście nie ma co liczyć na jego szybką naprawę, więc trzeba wydać komendę:
aticonfig --ovt=opengl
i zrestartować X'y. [źródło]

edit8. Jeśli ktoś próbuje instalować sterowniki AMD na jądrze powyżej 3.14, musi zastosować patch (przestaję wierzyć, że AMD potrafi coś zrobić dobrze =/).
Instrukcja oryginalna znajduje się na stronie cchtml.com.

Należy pobrane sterowniki rozpakować (najpierw z zip'a) za pomocą komendy
sh amd-driver-installer-<wersja>.run --extract 
Następnie wejść do nowo powstałego katalogu i wyedytować plik  
common/lib/modules/fglrx/build_mod/firegl_public.c 
znaleźć funkcję
KCL_TYPE_Uid ATI_API_CALL KCL_GetEffectiveUid(void) 

zastąpić całą tą poniższą:
KCL_TYPE_Uid ATI_API_CALL KCL_GetEffectiveUid(void)
{
#ifdef CONFIG_UIDGID_STRICT_TYPE_CHECKS
   return __kuid_val(current_euid());
#else 
#ifdef current_euid
#if LINUX_VERSION_CODE >= KERNEL_VERSION(3,14,0)
   return __kuid_val(current_euid());
#else
   return current_euid();
#endif
#else
   return current->euid;
#endif
#endif
}
 i na koniec utworzyć paczki poprzez amd-driver-installer-14.20-x86.x86_64.run --buildpkg Ubuntu/trusty. Oczywiście wersję instalatora oraz Ubuntu należy dostosować do własnych potrzeb.

wtorek, 22 października 2013

Uzupełnianie zerami do konkretnego rozmiaru

Znowu zabawa z flashrom.
Posiadam różne kości, a biosy są robione pod konkretne kości (upraszczamy sprawy, nie?). Flashrom nie pozwala wgrać 128k na 256k, bo... po prostu nie.

Pomijając fakt, że nie wiem jeszcze czy to 'zadziała', znalazłem takie polecenie, które (w tym przypadku) dopełnia plik .out do 1G:

dd if=/dev/zero of=mytestfile.out bs=1 count=0 seek=1G
 
 

sobota, 12 października 2013

Informacje o modułach

Wszystkie informacje pochodzą stąd.

Lista modułów:
ls -R /lib/modules/`uname -r`/kernel/
lub 
modprobe -c | less
Informacje o modułach:
modinfo nvidia
lub (tłumacząc):
Jeśli szukamy informacji o module 'hisax'
cd /usr/share/doc/kernel-doc-*/Documentation
grep -R -i hisax *
Zwróci listę dokumentów związanych z tym modułem, w tym wypadku jest to sterownik dla karty ISDN Siemensa.

Seria obrazów jako A4 PDF

Aby przerobić obrazy na pdf w A4, dobrze jest pociąć obrazy na odpowiedni rozmiar (1240x1753), a następnie komendą (dzięki maxschlepzig): 

convert a.png b.png -compress jpeg -resize 1240x1753 -units PixelsPerInch -density 150x150 multipage.pdf

lub

convert a.png b.png -compress jpeg -resize 1240x1753 -units PixelsPerInch -density 150x150 -page a4 multipage.pdf

przy pomocy convert przerobić je na pdf (ew. page -> repage). Źródło.
 

poniedziałek, 7 października 2013

Hurtowe przerabianie obrazów z 'convert'

Wszystko jest dokładnie opisane tutaj.

Sam często szukam komendy np.:
for file in *.png; do convert $file -rotate 90 rotated-$file; done
 Warto mieć pod ręką.

Konsola, automagiczne połączenie z wifi

W celu skonfigurowania automagicznego łączenia z internetem wystarczy dodać kilka prostych linijek do pliku /etc/network/interfaces (dla WPA/2):
auto wlan0
iface wlan0 inet dhcp
    wpa-ssid mynetworkname
    wpa-psk mysecretpassphrase
 Więcej tutaj.

APT, brak repo po instacacji bez internetu

Nie pierwszy raz mi się już to trafia, że ubuntu (server) chce się aktualizować wyłącznie z płyty. Sprawa niewygodna i upierdliwa. Do pliku źródeł trzeba jedynie dorzucić adres repo i sprawa załatwiona. Niestety, nie posługuję się jeszcze vi, a nano nie zainstaluję. Na szczęście istnieją bardziej prymitywne (?) narzędzia, które zawsze są - przekierowanie strumienia. Aby dopisać linijkę na końcu pliku tekstowego wystarczy:
echo "deb http://gb.archive.ubuntu.com/ubuntu/ precise main" > /etc/apt/sources.list
 Po więcej informacji, zapraszam tutaj.

Potem, oczywiście (sudo su):
apt-get update
apt-get install nano

Jak sprawdzić czy płyta nagrana jest w multi-sesji.

Ponieważ podstawowe programy, których użyłem, nie zechciały dać mi znać czy płyty są ms czy nie, musiałem poszukać informacji u źródeł.

Spotkałem się z dwoma informacjami nt. wodim -msinfo:

1. Użytkownik, który nie mógł dograć sesji (tutaj), otrzymywał takie wyjście:
0,0
2. Pozostali, powinni otrzymywać np. takie:
 0,13450

czwartek, 3 października 2013

Zmiana rozdzielczości GRUB2 oraz ładowania systemu

Po przeniesieniu komputera i odłączeniu go od TV HD, i po podłączeniu go do starego monitora utraciłem kontrolę nad systemem podczas wczesnego etapu jego ładowania. Problemem była oczywiście rozdzielczość.

Thomas Boxley napisał bardzo łatwą i skuteczną instrukcję jak zmienić rozdzielczość podczas ładowania systemu:


Sprawdzenie obsługiwanych rozdzielczości (opcjonalne):

sudo apt-get install v86d hwinfo
sudo hwinfo --framebuffer

Edycja konfiguracji GRUB:

sudo nano /etc/default/grub

A tak powinna wyglądać nowa linijka (po edycji): GRUB_GFXPAYLOAD_LINUX=1024x768
Na koniec, zapisanie zmian:

echo FRAMEBUFFER=y | sudo tee /etc/initramfs-tools/conf.d/splash
sudo update-grub2
sudo update-initramfs -u
 

czwartek, 26 września 2013

MPD na CLFS

MPD - Music Played Daemon,
CLFS - Cross Linux from Scratch.

Wygląda na to, że MPD działa (po spełnieniu zależności) out-of-the-box na CLFS:
  cd ../mpd-0.17.5
  ./configure --prefix=/usr
  make -j2
  make install

Jeszcze trzeba wszystko posprawdzać. To tylko pierwsze próby.

środa, 25 września 2013

WA-2204C jako klient WiFi

Od jakiegoś czasu poszukiwałem wygodnego urządzenia, które pozwoli mi na połączenie się z routerem wifi za pomocą urządzenia z interfejsem ethernet. Schematycznie:

Dostawca - Ethernet - WiFi Router -> <- WiFi Client - Ethernet - PC

Czemu tak, a nie użyć WiFi na USB? Otóż urządzenia takie jak Wyse 1125 na pewno nie dogada się z nowymi urządzeniami USB a Ethernet to stary, dobry standard.

Do rzeczy, jak to zrobić. Nieodzowną pomoc przyniósł mi temat Proncjusza.

1. Basic Setup:
Ustawienia Routera i Klienta na  ten sam typ sieci (b, g lub b+g).
Mode: Client
Network Type: Infrastructure
SSID: Nazwa sieci rozgłaszanej przez router (choć nie wiem, czy niezbędne)

2. Security:
Encryption, WPA(2) Cipher Suite jak w Routerze
Key Format: Passpharse
Pre-Shared Key: Hasło ustalone na Routerze

3. Site Survey:
Tutaj odświeżamy i wybieramy sieć z którą chcemy się połączyć.

4. TCP/IP ustalamy wymarzony adres IP (najlepiej uwzględniając to co najpewniej przydzieli nam router). DHCP - disabled pozwala na przydzielanie IP Klientom przez Router (choć za pośrednictwem WA).

I to tyle... działa!

wtorek, 24 września 2013

Cross linux from scratch na Wyse S10 (i innych Sx0)

Nieodzowną pomocą podczas kompilowania jądra dla Wyse (winterm) S10 są przewodniki tinkering-is-fun oraz (oczywiście) parkytowers.

[PT] .configure (tj. konfiguracja wyjściowa)

[TIF]:
The CPU used is an AMD Geode LX800, so it's x86-compatible. And the board itself is almost PC-compatible. This means you can run stock x86 Debian on it.

To give you some idea on the insides, here's the output of lspci:

00:01.0 Host bridge: Advanced Micro Devices [AMD] CS5536 [Geode companion] Host Bridge (rev 33)
00:01.2 Entertainment encryption device: Advanced Micro Devices [AMD] Geode LX AES Security Block
00:09.0 Ethernet controller: VIA Technologies, Inc. VT6105M [Rhine-III] (rev 96)
00:0a.0 Ethernet controller: VIA Technologies, Inc. VT6105M [Rhine-III] (rev 96)
00:0b.0 Ethernet controller: VIA Technologies, Inc. VT6105M [Rhine-III] (rev 96)

00:0f.0 ISA bridge: Advanced Micro Devices [AMD] CS5536 [Geode companion] ISA (rev 03)
00:0f.2 IDE interface: Advanced Micro Devices [AMD] CS5536 [Geode companion] IDE (rev 01)
00:0f.4 USB Controller: Advanced Micro Devices [AMD] CS5536 [Geode companion] OHC (rev 02)
00:0f.5 USB Controller: Advanced Micro Devices [AMD] CS5536 [Geode companion] EHC (rev 02)

If you want to customize the kernel yourself (instead of sticking to whatever your distro provides) here are some tips based on my experience:
  • Turn on General setup/Configure standard kernel features (for small systems). This lets you kill off some features that are useless on the ALIX anyway, like PC-speaker and Virtual Terminal support. (uwagi ważne dla lekkości jądra)
  • You probably want to disable any sort of namespaces/virtualization support. (j.w.)
  • In Processor type and features: (ważne ze względu na wydajność)
    • Select Geode GX/LX as the Processor family.
    • There is neither HPET nor MTRR, so turn that off.
  • There's no ACPI/APM, so you can turn that off in Power management and ACPI options. But if you intend to use selective USB suspend, you need to keep Power Management support on. (All other options in this submenu can be off.)
  • In Bus options: There is PCI, so that needs to be enabled. Also turn on NatSemi SCx200 support. But don't turn on NatSemi SCx200 27MHz High-Resolution Timer Support. Enable Geode Multi-Function General Purpose Timer (MFGPT) events. (As the help says this can be use as high-precision timer, turning on Processor type and features/High Resolution Timer Support might be a good idea(?)) (jak i autor, nie wiem, jak to może się przydać, ale może)
  • In Device drivers:
    • Decide if you wish to use the legacy ATA way or the newer libata way. I've been using the libata approach for a long time without any problem, so I suggest you use that. But beware -- switching between those two results in the CF card being visible as either /dev/hda or /dev/sda and this can break you boot.
    • For the old ATA way choose: ATA/ATAPI/MFM/RLL support/CS5536 chipset support (or AMD CS5535 chipset support in older kernels)
    • For the libata way choose: Serial ATA (prod) and Parallel ATA (experimental) drivers/ATA SFF support/CS5536 PATA support (zdecydowanie - nowa infrastruktura jądra - sda)
    • Enable Network device support/Ethernet (10 or 100Mbit)/EISA, VLB, PCI and on board controllers/VIA Rhine support. You can also enable Use MMIO instead of PIO for VIA Rhine. (Works fine for me.)
    • Input device support: Enable if you plan to connect any such thing to your ALIX. If it's just gonna sit on your shelf chewing some network traffic you don't need that.
    • Character devices: Feel free to disable Virtual terminal as it's of no use on an ALIX 2 anyway. To use the HW random number generator that the Geode contains enable Hardware Random Number Generator Core support/AMD Geode HW Random Number Generator support. Don't forget to enable the serial console: Serial drivers/8250/16550 and compatible serial support and Console on 8250/16550 and compatible serial port.
    • Enable Hardware Monitoring support/National Semiconductor LM90 and compatibles to be able to see what's going on inside your ALIX. (You also need to enable I2C Support for this.)
    • There's hadware watchdog too. To use it, enable Watchdog Timer Support/AMD Geode CS5535/CS5536 Watchdog. In debian, look into the package "watchdog" for an app to use it. (w naszym przypaku watchdog jest niewykrywany)
    • Graphics support: Feel free to uncheck everything there. :-)
    • Sound card support: The same, unless you buy some USB sound thingy. :-) (fb dla naszego CS'a już jest w jądrze)
    • USB support: To get USB functionality enable EHCI HCD (USB 2.0) support and OHCI HCD support.
    • To get access to the ALIX leds, enable LED Support/LED Support for ALIX.2 and ALIX.3 series and also select some LED Triggers.
    • You can freely uncheck Real Time Clock. While there's an option to add a battery to the board so that it keeps the time, even if I enable RTC, I don't get /dev/rtc. Either way, without the battery you'll always boot into Jan 1st 2000, so I think RTC support is useless here. (kwestia sporna. i u nas rtc zawsze się restartuje)
    • You can enable GPOI Support/AMD CS5535/CS5536 GPIO (Geode Companion Device) -- This can probably used to read the status of the front ALIX button (?) Also I2C Support/I2C Hardware Bus support/Geode ACCESS.bus support seems relevant. But I don't know more and so far was too lazy to look for it. Any info is welcome. :-)
  • To use the hardware AES crypto engine enable Cryptographic API/Hardware crypto devices/Support for the Geode LX AES engine. (nie ma)
  • I suggest you enable Magic SysRq key (Kernel hacking/Magic SysRq key), as it works also over serial (instead of SysRq, you send a break, see Documentation/sysrq.txt).

(The menu items are as per the 2.6.31.6 kernel, but they should be reasonably similar for any kernel version that is not too distant.)

The other options pretty much depend on your specific requirements and there's not anything board-specific that influences them.

 Części z tych rzeczy nie ma lub nie były wypróbowany. Dalszy 'research' będzie potrzebny.

Wkrótce udostępnię moje dmesg i config (uwzględniające sterowniki dla wirtualnej maszyny, tj. VirtualBox).

poniedziałek, 23 września 2013

Montowanie partycji /dev dla chroot

Czasem programy wymagają do skompilowania plików z drzewa /dev.
Podobnie sytuacja wygląda przy Python3 (/dev/urandom). Proste
mount --bind /dev <chroot dir>/dev 
rozwiązuje problem.

niedziela, 22 września 2013

Brak partycji root gdy system uruchamiany z usb

Unable to detect/mount root device.

Znowu walcząc z Wyse S10 musiałem się naszukać, by odkryć powód, dla którego mój system nie wstaje. Oczywiście wszystkie niezbędne (i kilka zbędnych) sterowniki zostały wkompilowane w jądro. Gdy walczyłem z tinycorem utkwił mi w pamięci parametr dla jądra usbdelay=5 ale to akurat nie pomogło.
Nie wiadomo jak i kiedy trafiłem jednak na rootdelay, który to, ustawiony na 3 (sekundy) dawał urządzeniom USB czas na przedstawienie się systemowi.


Zmiana daty wszystkich plików w okolicy

Dziś walczę z kompilacją mpd oraz bibliotek na terminalu Wyse S10.
Pudełko małe i zgrabne, i z niedziałającym RTC.

./configure zatrzymuje się z powodu plików, które mają nowszą datę utworzenia od obecnej. quirkasaurus podaje na to proste rozwiązanie:
find . -exec touch {} \;
Które świetnie rozwiązuje problem.
Przy okazji okazuje się, że find to świetne narzędzie i nadaje się nie tylko do robienia listy plików.