2013-10-07

라즈베리파이에 WiFi USB 셋업

라즈베리파이는 모니터를 달기도 애매하고 보통 WiFi로 연결해서 쓰게 된다. 물론 이더넷 랜선으로 연결해서 쓰면 되지만, 모니터가 없으면 ip알아내기도 번거롭고, WiFi한번 잘 잡아놓으면 공유기 비번이 바뀌지 않는 이상 집에서 쓰기는 편하다. 한번 알아보자.

이게 그냥 되는 동글이 있고 안 되는 것도 있다. 잘 보고 사자.
내가 구입한 제품은 EDIMAX EW-7811UN이란 제품이다.

물건링크:
http://www.amazon.de/EDIMAX-EW-7811UN-Wireless-Adapter-IEEE802-11b/dp/B003MTTJOY/ref=sr_1_1?ie=UTF8&qid=1381135594&sr=8-1&keywords=edimax+raspberry

라즈베리파이 호환 동글목록:
http://elinux.org/RPi_USB_Wi-Fi_Adapters
여기에 호환되는 품목이 있으니까 보고 구입하면 된다. 여기에 없는 물건을 사고 되지만, 드라이버 설정부터 일이 복잡하게 꼬일 수가 있다. iptime n100um은 이 리스트에는 없지만 그냥 동작했다. WiFi수신은 제품특성은 거의 안탄다. 아무거나 잘 되는 듯 싶다.

1.
USB WiFi 동글을 꼽지 말고 부팅한다. USB 동글이 꼽혀 있으면 설정할 때 에러가 날 수 있다.

2.
코드를 실행한다.
sudo cp /etc/network/interfaces /etc/network/interfaces.original
sudo nano /etc/network/interfaces

nano 편집기가 뜰 것이다. 그러면 다음과 같이 바꿔준다. 원본은 .original로 백업해 놨으니까 그냥 지우고 수정하자.

### file: /etc/network/interfaces
auto lo

iface lo inet loopback
iface eth0 inet dhcp

allow-hotplug wlan0
auto wlan0

iface wlan0 inet dhcp
        wpa-ssid "공유기이름"
        wpa-psk "비밀번호"
### file end



3.
재부팅 해보자.
sudo reboot

재부팅 하고 로그인 한 뒤에
ifconfig wlan0

다음과 같이 자동으로 잘 잡혀있다. 192.168.0.15가 파이가 받은 내부 공유기 주소다. 공유기에 접속한 컴퓨터라면 ssh를 통해 저 주소로 파이에 접속 할 수 있다.




ssh로 접속하려면
ssh pi@192.168.0.15
파이의 비밀번호를 물어볼 것이다. 기본 비밀번호는 raspberry다.

참고:
http://learn.adafruit.com/adafruits-raspberry-pi-lesson-3-network-setup/setting-up-wifi-with-occidentalis

맥 라이언이상, /Volumes/MobileBackups 이건 뭔가?

저는 마운틴 라이언을 쓰고 있습니다. 어느 날 폴더를 보다가,

/Volumes/MobileBackups


이건 뭔가? OS 재설치 한지 하루밖에 안 됐는데, 벌써 백업 파일이 150기가나 되고 있습니다.

로컬 하드디스크에 백업을 하고 있었습니다... 이놈...

그러니까 이 폴더로 외장하드로 타임머신 백업을 하지만, 로컬 하드에다가 이중으로 백업을 하고 있습니다.그러니까 없어도 되는데 이중으로 공간을 낭비하고 있는 것 입니다!

어자피 외장하드로 타임머신을 쓰고 있으니 삭제해 버립니다.

sudo tmutil disablelocal

이 폴더는 사라집니다. 그리고 150기가를 얻습니다!

안전은 보장 못하니, 꼭 중요한 데이터는 백업 하시고 진행하세요!

이 방법은 타임머신을 껏다 키면 다시 생성되므로, 다시 실행해 주어야 합니다.

참고:
https://discussions.apple.com/thread/3701356?start=0&tstart=0
http://wiki.summercode.com/how_to_disable_mobile_backups_on_lion

독일어 키보드로 ~ (틸테, Tilde) 쓰기

참 별의 별 것도 포스팅 한다.

독일어 키보드에서 틸데가 안 써져서 황당했다.

방법은

Strg + ~ 그리고 spacebar를 누른다.

Strg + ' 그리고 spacebar도 된다.


참고: Strg은 Ctrl과 같은 것이다.

링크:
http://www.simforum.de/archive/index.php/t-99806.html

2013-10-06

Mountain Lion에서 Emacs로 Lisp환경 설치

OSX 10.8 산사자 Aquaemacs CL

참고: http://www.mohiji.org/2011/01/modern-common-lisp-on-osx/

Aquaemcs설치
Macports설치
Macport시도 실패(sbcl, slime)
Xcode 4, command line-tool 설치 필수(애플개객기)
지금 진행중

라즈베리파이 키보드 레이아웃 바꾸기

쉬운방법:
sudo dpkg-reconfigure keyboard-configuration


혹은,

커맨드 입력:
sudo nano /etc/default/keyboard

바꾼다.
XKBLAYOUT="gb"

en 미국영어
gb 영국영어
de 독일어


참고링크:
http://elinux.org/RPi_Beginners#Keyboard_layout

4,3인치 미니모니터 라즈베리파이에 설치하기

물건:
http://www.amazon.de/TaoTronics%C2%AE-TT-CM05-modische-Digital-Monitor/dp/B0058S323Q/ref=cm_cr_pr_product_top


1382847 668512399839906 1181294624 n

 


1. 설정파일을 백업한다.

sudo cp /boot/config.txt /boot/config.txt.original


2. 설정파일을 연다.

sudo nano /boot/config.txt


3. 다음을 추가한다.

### 4.3 inch monitor
sdtv_mode=0 #for NTSC
sdtv_aspect=3 #for 16:9

framebuffer_width=480

framebuffer_height=272

disable_overscan=1 #non-intuitive but the overscan_scale does the work

overscan_scale=1 #currently undocumented but works
overscan_left=16
overscan_right=16
overscan_top=8
overscan_bottom=8

 

4. 폰트 키우기 설정창을 연다.

sudo dpkg-reconfigure console-setup    (시간이 좀 걸림)


5. 다음과 같이 차례로 선택한다.

UTF-8

Guess Optimal

TerminusBold

8x16


6. 재부팅 한다.

sudo reboot


Raspberry Pi를 3g tethering한 뒤, WiFi 공유기로 만들기

사용방식

3G Tethering을 이용해서 라즈베리 파이를 WiFi공유기로 만들자! 

주의! 설명에 // 라고 나온 것은 코드를 강조하기 위해 들어간 것이므로 입력하지 않는다!

----

준비물:
1. 라즈베리파이 모델B
2. 3G모뎀 혹은 안드로이드 스마트폰
3. USB WiFi 어댑터 (iptime은 드라이버 찾기가 안되서 포기)
http://www.amazon.de/EDIMAX-EW-7811UN-Wireless-Adapter-IEEE802-11b/dp/B003MTTJOY/ref=sr_1_5?ie=UTF8&qid=1381024377&sr=8-5&keywords=raspberry+wifi

----

1. 하드웨어 셋업

USB WiFi Adaptor를 끼우기 전에 라즈베리 파이('파이'라고 줄여 쓰겠음) 전원을 꺼야한다.
//
sudo shutdown -h now
//
다시 파이 전원을 킨다.

ifconfig -a

wlan0 이라는 항목이 보여야 한다.

----

2. 프로그램 설치하기

hostapd와 isc-dhcp-server라는 두 개의 프로그램을 설치한다.
//
sudo apt-get install hostapd isc-dhcp-server
//

----

3.1 DHCP 서버 설정하기 - dhcpd.conf 수정하기

dhcpd.conf 파일을 수정해야 한다.
//
sudo nano /etc/dhcp/dhcpd.conf 
//

이렇게 생긴 줄을 찾아서...
option domain-name "example.org";
option domain-name-servers ns1.example.org, ns2.example.org;

앞에다가 #을 붙여준다. #을 붙이면 주석처리되서 실행이 안된다.
//
#option domain-name "example.org";
#option domain-name-servers ns1.example.org, ns2.example.org;
//

이렇게 생긴 줄을 찾아서...
# If this DHCP server is the official DHCP server for the local
# network, the authoritative directive should be uncommented.
#authoritative;

앞에 붙은 #을 지워준다. 즉 실행하게 해 주는 것이다. 마지막 줄 authoriative;를 실행한다.
//
# If this DHCP server is the official DHCP server for the local
# network, the authoritative directive should be uncommented.
authoritative;
//
그리고 밑으로 내려서 마지막에 이것들을 추가한다. (팁: nano에서 Ctrl+V를 누르면 뒤로 넘어간다.)
//
subnet 192.168.42.0 netmask 255.255.255.0 {
range 192.168.42.10 192.168.42.50;
option broadcast-address 192.168.42.255;
option routers 192.168.42.1;
default-lease-time 600;
max-lease-time 7200;
option domain-name "local";
option domain-name-servers 8.8.8.8, 8.8.4.4;
}
//
Ctrl+X를 누르고 y를 눌러 저장하고 빠져나온다. 

----

3.2 DHCP 서버 설정하기 - isc-dhcp-server 수정하기

isc-dhcp-server를 수정해야 한다.
//
sudo nano /etc/default/isc-dhcp-server 
//
맨 밑으로 내리면 INTERFACES=""항목이 보인다. 이것을
INTERFACES="wlan0"
으로 바꿔준다.

----

4. wlan0을 정적 IP로 바꿔주기

공유기의 ip로 사용할 것이기에 바뀌면 안된다. 그래서 수동으로 설정해 준다.
//
sudo nano /etc/network/interfaces
//
auto wlan0 이라는 항목이 보이면 앞에 #을 붙여주어 비활성화 한다. 만약 없다면 관계없다.

이것을 추가한다.
//
iface wlan0 inet static
address 192.168.42.1
netmask 255.255.255.0
//
저장하고 나온다.(Ctrl-X, y 엔터)

실행한다.
//
sudo ifconfig wlan0 192.168.42.1
//

----

5. WiFi 공유기 AP 설정하기

공유기를 설정한다. 패스워드를 치고 들어오게 설정할 것이다.
//
sudo nano /etc/hostapd/hostapd.conf
//

다음을 입력해 준다.
//
interface=wlan0
driver=rtl871xdrv
ssid=공유기이름(영어로)
hw_mode=g
channel=6
macaddr_acl=0
auth_algs=1
ignore_broadcast_ssid=0
wpa=2
wpa_passphrase=비밀번호(영어나숫자로)
wpa_key_mgmt=WPA-PSK
wpa_pairwise=TKIP
rsn_pairwise=CCMP
//
ssid와 wpa_passphrase는 공유기 이름이고 그 비밀번호다. 각자 알아서 설정한다.

만약 driver를 못 찾는다고 하면, 위의 내용 중 driver=rtl871xdrv 를 driver=nl80211 으로 바꿔준다. 만약 그래도 못 찾으면 각자 알아내야 하는데, 필자는 찾지 못하고, 그냥 커뮤니티에서 추천하는 usb를 구입했다. EDIMAX EW-7811UN을 추천한다. 싸진 않지만 뭐 쓸만하다.

설정한 값을 파이가 인식하게 만들자.
//
sudo nano /etc/default/hostapd
//
이 것을 찾아서
#DAEMON_CONF=""
다음과 같이 고친다.
//
DAEMON_CONF="/etc/hostapd/hostapd.conf"
//
앞에 #을 빼는 것을 잊지말것!

----

6. 3G 테더링 설정하기

안드로이드폰 혹은 3g모뎀 테더링 설정하기. 먼저 핸드폰에서 테더링 설정을 한다.
//
sudo nano /etc/network/interfaces
//
usb로 연결된 장치를 dhcp로 분배하기를 설정한다. 이 것을 추가한다.
//
iface usb0 inet dhcp
//
저장하고 나온 뒤(Ctrl-X, y 엔터), 그리고 이 명령어를 친다.
//
sudo ifup usb0
//
재부팅 한다. sudo reboot
재부팅 한 뒤 스마트폰이나 모뎀에서 테더링을 다시 켜 준다. 켜져 있으면 안해도 
----

7. 네트워크 포트포워딩 설정하기

실행한다.
//
sudo nano /etc/sysctl.conf
//

맨 밑에 이것을 추가한다.
//
net.ipv4.ip_forward=1
//

저장하고 나와서(Ctrl-X, y 엔터) 실행한다.
//
sudo sh -c "echo 1 > /proc/sys/net/ipv4/ip_forward"
//

3G로 받아오는 정보를 WiFi로 쏴주는 작업을 해야한다. usb0에서 받아온 것을 wlan0으로 포워딩 해주기. 아래 3개의 코드를 순서대로 실행한다.
//
sudo iptables -t nat -A POSTROUTING -o usb0 -j MASQUERADE

sudo iptables -A FORWARD -i usb0 -o wlan0 -m state --state RELATED,ESTABLISHED -j ACCEPT

sudo iptables -A FORWARD -i wlan0 -o usb0 -j ACCEPT
//

사실 이 한줄만 있어도 동작한다.
//
sudo iptables -t nat -A POSTROUTING -o usb0 -j MASQUERADE
//

실행여부는 sudo iptables -t nat -S 그리고 sudo iptables -S로 확인해 볼 수 있다.

재부팅 해서도 계속 실행되게 해 주기. 실행한다.
//
sudo sh -c "iptables-save > /etc/iptables.ipv4.nat"
//

인터페이스에 다시 추가해 준다. 실행한다.
//
sudo nano /etc/network/interfaces 
//

이 것을 마지막에 추가한다.
//
up iptables-restore < /etc/iptables.ipv4.nat
//

----

8. 거의 다 끝났다. hostapd 업데이트하기

필요한 파일을 받는다.
//
wget http://www.adafruit.com/downloads/adafruit_hostapd.zip 
//

압축을 푼다.
//
unzip adafruit_hostapd.zip 
//

원래 있던 파일을 안전을 위해 백업한다.
//
sudo mv /usr/sbin/hostapd /usr/sbin/hostapd.bak 
//

실행을 위해 폴더 위치를 옮긴다.
//
sudo mv hostapd /usr/sbin
//

실행할 수 있게 chmod를 실행한다.
//
sudo chmod 755 /usr/sbin/hostapd
//

----

9. 마지막 테스트

----
무선 와이파이를 시험 가동해 보자! 실행한다.
//
sudo /usr/sbin/hostapd /etc/hostapd/hostapd.conf
//
여러분이 설정한 SSID가 보이면 성공이다. 접속은 되지만 아직 파일 송수신은 안된다.

----

10. 마무리

----

서버를 시작해 보자.
//
sudo service hostapd start 
sudo service isc-dhcp-server start
//
시작이 될 것이다. 그리고 start 대신에 status로 상황을 확인할 수 있다.

시작프로그램에 등록해 주자.
//
sudo update-rc.d hostapd enable 
sudo update-rc.d isc-dhcp-server enable
//
그리고 혹시 모르니 키체인을 홈폴더에 복사해 준다.
//
sudo mv /usr/share/dbus-1/system-services/fi.epitest.hostap.WPASupplicant.service ~/
//

끝났다. 재부팅 해보자.
----

문제점: 파이 내에서 ping이나 apt-get, 즉 외부에서 받아 오는 것이 안된다. 아무리 뒤져봐도 이유를 모르겠음.
그래서 발견한 방법. 외부 wifi usb동글을 하나 더 꼽고, wlan1로 인식한 다음에 Pi_AP에서 다시 받아옴.

다음을 /etc/networt/interfaces에 추가:
### wlan0 to wlan1
allow-hotplug wlan1
iface wlan1 inet dhcp
        wpa-ssid "공유기이름"
        wpa-psk "비밀번호"


완성된 파일:









참고문헌:
http://learn.adafruit.com/setting-up-a-raspberry-pi-as-a-wifi-access-point/install-software
http://elinux.org/RPI-Wireless-Hotspot
http://xsatria.wordpress.com/2013/07/09/usb-tethering-from-android-to-raspberry-pi/