라즈베리파이에 무선랜 USB를 꽂고, (무선랜이 지원되는 버전3의 경우에도 비슷하리라 생각되는데) 이동하면서 작업할 때, 무선랜 접속 설정을 변경해야 할 일이 생긴다. 무선랜에 접속하는 정보는 /etc/wpa_supplicant/wpa_supplicant.conf 파일에 저장되며, 여기에 알려진 무선랜 접속 정보를 기록해두는데, 대략의 설정은 다음과 같다.


ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1

network={
	ssid="lorthlorien"
	psk="xxxxxxxxx"
	key_mgmt=WPA-PSK
}

network={
	ssid="TOMNTOMS"
	psk="toms5123"
	key_mgmt=WPA-PSK
}

저 network 항목하나만 추가하면 될 일인데, micro sd card를 빼어 수정하면 될 일이지만, adapter가 없거나, 노트북에서 읽을 수 없는 파티션으로 만들어졌다면, 라즈베리파이 화면이 보이지 않기 때문에 손 쓸 수 있는 방법이 쉽지 않다.


다음과 같은 방법으로 해결한다. 안전한 곳에서 연결되었을 때 미리 해두어야한다.


/etc/rc.local 에 /etc/rc.hojin 을 실행하도록 한다.


#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.

# Print the IP address
_IP=$(hostname -I) || true
if [ "$_IP" ]; then
  printf "My IP address is %s\n" "$_IP"
fi

/etc/rc.hojin &
exit 0

그리고 /etc/rc.hojin은 다음과 같이 부팅후 접속되어 있는 모든 파티션에서 wpa_supplicant.conf 가 있는지 확인해서 뒤에 추가하는 방식을 취한다. 소스에는 기존 내용을 덮어 쓰지 않기 위한 장치를 마련했으나 자세한 설명은 생략한다.


#!/bin/sh

W=wpa_supplicant.conf
T=/etc/wpa_supplicant/wpa_supplicant.conf

fdisk -l /dev/sd[abcd] 2>/dev/null | grep ^/ | awk '{print $1}' |
while read partition
do
	mount $partition /media
	if test -f /media/$W 2>/dev/null; then
		echo "Found setup file: $partition"
		LINE=`grep -n HOJIN $T | awk -F: '{print $1}'`
		if test -z "$LINE"; then
			echo "#HOJIN" >> $T
			cat /media/$W >> $T
		else
			( head -n +$LINE $T; cat /media/$W ) > /tmp/$W
			mv /tmp/$W $T
		fi
		( sleep 20; mount $partition /media; ifconfig -a > /media/ifconfig.log; umount /media ) &
	fi
	if test -f /media/rc.sh; then
		bash /media/rc.sh
	fi
	umount /media 2>/dev/null
done

일단 처음 부팅하면 wpa_supplicant.conf를 수정하는 일만 일어나므로 다시 부팅하도록 한다.


두번째 부팅후 20초가 지나면 같은 파티션에 ifconfig.log 로 현재 ip 정보를 기록하도록 되어 있으므로 노트북으로 확인할 수 있다.





저작자 표시 동일 조건 변경 허락
크리에이티브 커먼즈 라이선스
Creative Commons License

+ Recent posts