· KLDP.org · KLDP.net · KLDP Wiki · KLDP BBS ·
Gentoo Laptop


1. GentooLaptop

젠투 리눅스 노트북사용자에게 편리할 만한 설정 모음. - 송효진

2. Packages

  • USE 를 반드시 보자. nvidia, nforce2 등이 있다.
emerge acpi acpid acpitool cpufreqd cpufrequtils laptop-mode-tools hibernate-script
  • xfce4 용 각종 모니터링 도구. 없어도 상관없지만 하단에 좌악 늘어놓으면 멋있다.
emerge xfce4-battery xfce4-cpu-freq xfce4-cpugraph xfce4-netload xfce4-sensors xfce4-systemload xfce4-wavelan

3. init.d

rc-update add acpid default
rc-update add cpufreqd default
rc-update add cpufrequtils default
rc-update add lm_sensors default
rc-update add laptop_mode default

4. ACPI

  • /etc/acpi/default.sh 일단 default.sh 에서는 다 뺀다.
  • acpilog 의 주석을 풀고 이것저것 눌러보면 /acpilog.txt 에 로그가 쌓인다. 그걸 보고 스크립트 등록하면 된다.
# /etc/acpi/default.sh
# Default acpi script that takes an entry for all actions

set $*
#echo $* >> /acpilog.txt

group=${1%%/*}
action=${1#*/}
device=$2
id=$3
value=$4
  • /etc/acpi/events/default 를 제외하고 모두 날린 후 아래것으로 대체하자.
  • 이 파일이 수정되면 /etc/init.d/acpid 를 restart 해야 한다.
  • lm_ac_adapter
event=ac_adapter
action=/etc/acpi/actions/lm_ac_adapter.sh %e
  • lm_battery
event=battery.*
action=/etc/acpi/actions/lm_battery.sh %e
  • lm_lid
event=button[ /]lid
action=/etc/acpi/actions/lm_lid.sh %e
  • lm_power
event=button[ /]power
action=/etc/acpi/actions/lm_power.sh %e
  • lm_sleep
event=button[ /]sleep
action=/etc/acpi/actions/lm_sleep.sh %e
  • /etc/acpi/actions/ 도 다 날려버린 후 아래것으로 대체하자. 여기는 x 권한이 필요하다.
  • lm_ac_adapter.sh, lm_battery.sh (cpufreq 가 담당하니 아무것도 안한다.)

  • net.sh, netstart.sh 는 아래에 설명한다.
  • lm_lid.sh (뚜껑덮기), lm_power.sh (전원버튼)
/usr/local/bin/net.sh
hibernate-ram
/usr/local/bin/netstart.sh
  • lm_sleep.sh (xnote p300 의 경우 fn+f4 가 공식(?)수면모드 키인데 뚜껑과,전원에 할당하였으므로 그냥 화면을 최대한 어둡게 하는걸로 설정하였다. 자리를 오래 뜰 때 쓴다. 대부분의 ACPI 이벤트는 16진수로 카운트 된다. 따라서 아래와 같이 하면 적절히 토글되게 동작시킬 수 있다.)
case "$*" in
	*[13579bdf])
		echo 1 > /proc/acpi/video/EGFX/LCD0/brightness
		;;
	*[02468ace])
		echo 7 > /proc/acpi/video/EGFX/LCD0/brightness
		;;
esac

5. cpufreq

  • AC전원, 배터리 모드 등에 능동적으로 반응하는 스크립트다. 안건드려도 기본값이 꽤 잘 되어있지만, LCD 밝기조절을 걸어놓으면 더 좋다.
  • /etc/cpufreqd.conf 의 Rule 쪽 부분의 exec_post 에 적절히 스크립트를 걸면 된다.
  • 예제에는 소니 /proc/acpi/sony/brightness 가 걸려있고, xnote p300 (nvidia 8400M GS) 은 /proc/acpi/video/EGFX/LCD0/brightness 이다. find /proc/acpi -name brightness 하면 쉽게 찾을 수 있다.
  • 나는 AC 7, Battery High 5, Battery Medium 4, Battery Low 3 으로 걸어놓았다.

6. net.sh

  • 어느 배포판이든 집과 회사를 왔다갔다 하고, 유선과 무선을 오가는 상황에서의 능동적인 대처가 되는 스크립트를 제공하지는 않는것 같다. 그래서 만들었다.
  • VirtualBox 용 bridge 설정도 한꺼번에 되므로 필요없는 부분은 지워주면 된다.
  • 무선 bridge 에 필요한 parprouted 는 layman gentoo-kr 에 올려놓았고 bcrelay 는 net-dialup/pptpd 에 들어있다.
  • acpi 의 절전모드 직전에 걸어놓았으므로 절전되기 전에 네트워크를 끊는다.
  • 사용법 net.sh eth0, net.sh wlan0, net.sh (끊기)
  • /usr/local/bin/net.sh
killall -TERM dhcpcd
# for bridge start
killall -TERM parprouted
killall -TERM bcrelay
brctl delif br0 eth0
brctl delif br0 wlan0
brctl delif br0 wmaster0
brctl delif br0 tap0
brctl delif br0 tap1
# for bridge end
ifconfig eth0 0.0.0.0
ifconfig eth0 down
ifconfig wlan0 0.0.0.0
ifconfig wlan0 down
# for bridge start
ifconfig tap0 0.0.0.0
ifconfig tap1 0.0.0.0
ifconfig br0 down
brctl delbr br0
# for bridge end
rmmod iwlagn iwlcore # 4965 wireless 안쓸때 모듈조차 내려버리면 전원에 도움 좀 될것같다. 근거는 없음.
/etc/init.d/iptables stop # for bridge

case "$1" in
	eth0)
		ifconfig eth0 up
# for bridge start
		brctl addbr br0
		brctl addif br0 eth0
		dhcpcd br0 -A
		brctl addif br0 tap0
		brctl addif br0 tap1
# for bridge end
# not bridge : dhcpcd eth0 -A
	;;
	wlan0)
		modprobe iwlagn # 자신에게 맞는 wireless 모듈
		ifconfig wlan0 up
		ESSIDS=`iwlist wlan0 scanning | grep ESSID | sed -e 's/\s*ESSID://g' -e 's/"//g'`
		KNOWNS="myessid companyessid iptime" # 여기에 자신이 사용하는 essid 를 적는다.
		for ESS in $KNOWNS;
		do
			ESSID=`echo "$ESSIDS" | grep $ESS`
			if [[ "$ESSID" != "" ]]; then
				break
			fi
		done
		if [[ "$ESSID" == "" ]]; then
			ESSID=`echo "$ESSIDS" | head -n 1`
		fi
		iwconfig wlan0 essid $ESSID
		if [[ "$ESSID" == "companyessid" ]]; then
			# 암호가 필요하면 이렇게 하면 된다.
			iwconfig wlan0 key s:BF43425FC5B123
			iwconfig wlan0 essid companyessid
		fi
		echo $ESSID
		dhcpcd wlan0 -A
# for bridge start
		WLANIP=`ifconfig wlan0 | grep 'inet addr' | awk '{ print $2 }' | awk -F : '{ print $2 }' | awk -F . '{ print $1"."$2"."$3 }'`
		ifconfig tap0 $WLANIP.222 netmask 255.255.255.0
		ifconfig tap1 $WLANIP.223 netmask 255.255.255.0
		route del -net 192.168.0.0 netmask 255.255.255.0 tap0
		route del -net 192.168.0.0 netmask 255.255.255.0 tap1
		/etc/init.d/iptables start
		parprouted wlan0 tap0
		parprouted wlan0 tap1
		route add -net 192.168.0.0 netmask 255.255.255.0 tap0
		route add -net 192.168.0.0 netmask 255.255.255.0 tap1
		bcrelay -i tap0 -o wlan0 -d
		bcrelay -i tap1 -o wlan0 -d
# for bridge end
	;;
esac
  • 무선으로 bridge 를 사용한다면 iptables 룰 하나를 추가하자.
  • /etc/sysctl.conf 의 net.ipv4.ip_forward = 1 주석을 해제하고
  • echo 1 > /proc/sys/net/ipv4/ip_forward
/etc/init.d/iptables start
iptables -t nat -A POSTROUTING -o wlan0 -j MASQUERADE
/etc/init.d/iptables save
/etc/init.d/iptables stop

7. netstart.sh

  • 전원을 켜거나 절전모드에서 나올 때 유/무선 구별 없이 dhcp 시도를 하면 곤란할것이다.
  • 유선의 연결여부 파악을 위해 ethtool 을 사용한다. 이더넷선을 빼면 10M Half 가 되고 꽂으면 100M Full 이 되는 상태를 이용했다. 10M Half 를 쓰는곳은 설마 없겠지.
  • 유선이 꽂혀있나 확인한 후 접속하고, 안꽂혀있거나 접속이 되지 않으면 무선을 시도한 후 그마저 실패하면 모두 정지한다.
  • acpi 이벤트로 걸어놓았으므로 절전모드에서 살아날 때 실행될 것이다.
  • echo /usr/local/bin/netstart.sh > /etc/X11/xinit/xinitrc.d/80-net; chmod 755 /etc/X11/xinit/xinitrc.d/80-net 정도 해 놓으면 X 뜰때 실행된다. /etc/conf.d/local 에 놓으면 그만큼 지연이 생긴다.
  • /usr/local/bin/netstart.sh
NET=/usr/local/bin/net.sh
ethstart () {
	STATE=`ethtool eth0 | grep Duplex | awk -F : '{ print $2 }'`
	if [[ "$STATE" == " Full" ]]; then
		$NET eth0
		STATE=`ifconfig br0 | grep 'inet addr' | awk '{ print $2 }' | awk -F : '{ print $2 }' | awk -F . '{ print $1"."$2 }'` # bridge 안쓰면 br0 대신 eth0
		if [[ "$STATE" == "169.254" ]]; then
			wlanstart
		fi
		exit
	fi
}
wlanstart () {
	$NET wlan0
	STATE=`ifconfig wlan0 | grep 'inet addr' | awk '{ print $2 }' | awk -F : '{ print $2 }' | awk -F . '{ print $1"."$2 }'`
	if [[ "$STATE" == "169.254" ]]; then
		$NET
		exit
	fi
}

ethstart
wlanstart

ID
Password
Join
You have an ambitious nature and may make a name for yourself.


sponsored by andamiro
sponsored by cdnetworks
sponsored by HP

Valid XHTML 1.0! Valid CSS! powered by MoniWiki
last modified 2008-11-22 17:49:26
Processing time 0.0082 sec