boost library arm cross build

boost library를 다운받아서 압축을 푼다
아래 스크립트를 실행한다

$ ./bootstrap.sh

proejct-build.jam 파일에 아래 내용을 추가한다

using gcc : arm : arm-linux-gnueabi-g++ ;

빌드 한다

$ ./bjam --prefix=/home/abcode/setup/boost2_arm install
Advertisements

pulse audio 고생기

5422보드에서 오디오 작업을 하고 있는데 어느 순간 부터 재생음이 끊기고 겹치는 현상이 발생했다.
처음엔 안 괜찮다가, 어느 순간 부터 그랬다.
뭔가 apt-get으로 시스템 업데이트를 하면서 꼬였거나, 설정을 잘못 건들인 것으로 생각되서 문제점을 뒤졌다.
증상을 자세히 살펴보니,

$ aplay -D hw:0,0 test.wav

이렇게 명시적으로 장치를 지정하면 문제가 없는데,

$ aplay test.wav

이렇게 default 장치를 쓰면 문제가 발생했다.

차이점을 살펴보니 default 장치를 사용하게 되면, aplay가 PulseAudio PCM I/O Plugin을 이용해서 소리르 재생한다는 것을 알았다.

aplay는 alsa를 이용하는 저수준 프로그램인데 그 상위 계층인 PulseAudio에게 음악 재생을 시키다니..? 이해가 안됬지만, 뭐 편리함을 위해서 그럴수 있지…라고 결론짓고 이 부분은 그냥 패스..

문제의 핵심은 audio device -> ALSA -> PulseAudio로 넘어갔다.

PulseAudio는 디버깅 해본적이 한번도 없어서 자료를 찾아서 문제점을 파악하는 방법을 공부했다.
우선 PulseAudio는 환경설정 파일이 /etc/pulse 디렉토리에 몰려있었다.
여기서 특히 default.pa 파일은 어떤 모듈을 로딩할지에 대한 설정을 담고 있었다.
그 외에는 ~/.config/pulse 디렉토리에 안에 캐시 파일이나 개인 환경 설정이 저장된다.

여튼 PulseAudio가 밷어내는 출력 메세지를 보는 방법을 찾았는데 아래 문서에 자세하게 설명되어 있다.
https://wiki.ubuntu.com/PulseAudio/Log

$ echo autospawn = no >> ~/.config/pulse/client.conf

위 명령은 PulseAudio 서버가 자동으로 실행되는 것을 막아준다.

$ killall pulseaudio

이미 실행되고 있는 PulseAuido 서버를 다 죽인다.

LANG=C pulseaudio -vvvv –log-time=1 > ~/pulseverbose.log 2>&1

로그 기능을 활성화 해서 새롭게 PulseAudio 데몬 하나를 띄운다.

이렇게 해서 음악을 재생하면 긴 로그가 쌓이게 된다. 너무 내용도 길고 어려워서 뭔말인지 모르겠다…

그래서 실시간으로 보기 위해서 그냥 콘솔에서 직업 로그가 나오게 했다.

$ pulseaudio -vvvv –log-level=debug

이렇게 하고 다른 창에서 aplay로 음악을 재생해보니, 음이 문제가 되는 시점마다 로그에 아래 메세지가 찍힌다.

( 4.176| 0.000) I: [alsa-sink-Playback wm8960-hifi-0] alsa-sink.c: Increasing wakeup watermark to 40.00 ms

구글링을 통해서 정확한 답은 찾지 못했지만 비슷한 이슈를 하나 찾았다.
http://mailman.alsa-project.org/pipermail/alsa-devel/2015-August/097068.html

그래서 나도 /etc/pulse/default.pa 파일의 아래 라인을 수정했더니 잘 되었다!

load-module module-alsa-sink rate=44100 tsched=0

이 글은 Ubuntu 14.04 에서 테스트 되었음

PulseAudio 관련 명령어들

$ pacmd

이 문제를 조사하면서 참고한 자료들이다.
* https://wiki.ubuntu.com/PulseAudio
* https://wiki.ubuntu.com/PulseAudio/Log
* https://wiki.archlinux.org/index.php/PulseAudio/Examples

우분투 14.04 부팅시 실행되는 서비스 관리하기

우분투는 버전에 따라서 system v init, upstart, systemd가 다 쓰인다 -_-;

자신이 쓰고 있는 우분투 버전이 뭔지에 따라서 어떤걸 쓰는지 다른것이다. 우분투 14.04 같은 경우는 upstart를 사용한다.

그런데 system v init 시스템이 그대로 존재하는 것처럼 보인다. 이 부분이 오해를 일으켰다..

rcconf 프로그램으로 아무리 rc 설정을 바꿔도 반영이 이루어지지 않았다.

이 내용을 잘 설명해준 글이 있어서 링크를 첨부~ 불펌은 안되니까 ㅋ

http://snoopybox.co.kr/1720

zsh 설치

zsh를 설치한다

sudo apt-get install zsh

zsh를 기본 쉘로 변경한다

chsh -s `which zsh`

oh-my-zsh를 설치한다

wget https://github.com/robbyrussell/oh-my-zsh/raw/master/tools/install.sh -O – | zsh

alias-tips 플러그인을 설치한다

$ cd ${ZSH_CUSTOM1:-$ZSH/custom}/plugins
$ git clone https://github.com/djui/alias-tips.git

~/.zshrc 파일을 열어서 아래 설정으로 변경해서, 테마와 자동완성시 빨간점이 보이게 바꾼다

ZSH_THEME=”agnoster”
COMPLETION_WAITING_DOTS=”true”
plugins=(git alias-tips)

agnoster 테마는 powerline-patched-font가 필요하다. 여기로 가서 받아서 터미널 프로그램을 설정한다.

 

참고자료

마운트된 파티션 크기 늘리기

이미 사용중인 파일 시스템의 크기를 늘릴 수 있다
조건은 사용중인 파티션 뒤쪽으로 붙어있는 파티션만 가능하다는 점이다. (앞쪽에 비어있는 파티션은 불가)

$ cfdisk /dev/mmcblk0

위 명령으로 들어가서 현재 사용중인 파티션, 합쳐질 파티션 2개를 전부 DELETE 한다
그리고 새롭게 파티션을 만든다. 이때 크기는 2개 파티션을 합친 크기만큼의 파티션이 만들어 질 것이다
종료전에 WRITE 를 수행해야 변경 내용이 반영된다

리붓한다

이제 새롭게 늘어난 파티션의 파일 시스템 크기도 늘려준다

$ resize2fs /dev/mmcblk0p3

참고자료 : http://positon.org/resize-an-ext3-ext4-partition

리눅스 콘솔에서 WIFI 설정하기

iwconfig를 이용하는 방법이 있는데 이 방법은 AP에 암호가 걸려 있으면 좀 복잡하다

우분투에서는 아래 설정으로 되었다

root@torooc:~/work# cat /etc/network/interfaces
# interfaces(5) file used by ifup(8) and ifdown(8)
# Include files from /etc/network/interfaces.d:
source-directory /etc/network/interfaces.d

auto wlan0
iface wlan0 inet dhcp

wpa-ssid "xxxxxxx"
wpa-psk "xxxxxxx"

auto eth0
iface eth0 inet static
        address 192.168.0.93
        netmask 255.255.255.0
        gateway 192.168.0.1

다 됬으면 아래 명령으로 활성화를 해보자

$ sudo dhclient wlan0