2013년 11월 18일 월요일

ThinkPad L410 : openbox 설치 후 전원관리

Deskto 전원관리

데비안 설치시 표준 시스템 유틸리티만 설치하면 powermgmt-base, acpi및 acpid가 설치되어 파워 버튼이 눌러졌을 때 동작 (전원종료)이 설치되며,
일반적으로 추가로 pm-utils를 설치하여 절전등의 전원관리를 합니다.
pm-utils 설치시에 무선랜, 블루투스를 on/off하는 rfkill이 recommends로 같이 설치됩니다.


추가로 Laptop 전원관리

Desktop에서와 같이  powermgmt-base, acpi및 acpid에 더해서,
랩탑은 acpi-support를 설치하여 절전 복구시 화면 잠금, 랩탑을 닫을 때 절전하기등을 설정할 수 있습니다.
추가로 laptop-mode-tools 설치로 랩탑이 배터리 상태 (또는 닫을 때)에서 HDD, 무선랜, USB 등의 중지 및 터미널 창 깜박임등을 정할 수 있습니다.

laptop-mode-tools는 사용을 안하게 되어, acpi-support만 설치합니다.
acpi-support를 설치하면 pm-utils이 같이 설치됩니다.

  • # apt-get install --no-install-recommends acpi-support

    다음 패키지를 더 설치할 것입니다:
      acpi-fakekey pm-utils
    제안하는 패키지:
      radeontool vbetool xinput cpufrequtils
    추천하는 패키지:
      rfkill xscreensaver gnome-screensaver ethtool
    다음 새 패키지를 설치할 것입니다:
      acpi-fakekey acpi-support pm-utils
    0개 업그레이드, 3개 새로 설치, 0개 제거 및 0개 업그레이드 안 함.


  • # nano /etc/default/acpi-support
    #LOCK_SCREEN=true
    LID_SLEEP=true


  • 참고)
    acpi-support를 --no-install-recommends 없이 설치하면

    다음 패키지를 더 설치할 것입니다:
      acpi-fakekey ethtool libjpeg-progs libx86-1 pm-utils rfkill vbetool xscreensaver xscreensaver-data
    제안하는 패키지:
      radeontool xinput cpufrequtils xfishtank xdaliclock xscreensaver-gl fortune qcam streamer gdm3 kdm-gdmcompat
    다음 새 패키지를 설치할 것입니다:
      acpi-fakekey acpi-support ethtool libjpeg-progs libx86-1 pm-utils rfkill vbetool xscreensaver xscreensaver-data

    pm-utils가 depends로, recommends로 xscreensaver ethtool rfkill vbetool등이 설치됩니다.

  • 참고)
    jessie에서 표준 시스템 유틸리티만 설치후, task-laptop를 추가로 설치하면 아래와 같이 설치됩니다.

    다음 패키지를 더 설치할 것입니다:
      acpi-fakekey acpi-support anacron avahi-autoipd bluetooth bluez bluez-alsa
      bluez-gstreamer ethtool libdaemon0 libjpeg-progs libx86-1 pcmciautils
      pm-utils powertop rfkill vbetool xscreensaver xscreensaver-data
    제안하는 패키지:
      radeontool xinput bluez-cups cpufrequtils laptop-mode-tools xfishtank
      xdaliclock xscreensaver-gl fortune qcam streamer gdm3 kdm-gdmcompat
    다음 새 패키지를 설치할 것입니다:
      acpi-fakekey acpi-support anacron avahi-autoipd bluetooth bluez bluez-alsa
      bluez-gstreamer ethtool libdaemon0 libjpeg-progs libx86-1 pcmciautils
      pm-utils powertop rfkill task-laptop vbetool xscreensaver xscreensaver-data
    0개 업그레이드, 20개 새로 설치, 0개 제거 및 0개 업그레이드 안 함.

    task-laptop대신에 anacron acpi-support pcmciautils avahi-autoipd bluetooth powertop pm-utils 설치하는 것과 같습니다.

ThinkPad L410에서 tp_smapi : 배터리 관리

ThinkPad 랩탑에 추가된 하드웨어 (accelometer와 독자적인 EC회로)가 있어서, 이를 통해 배터리 전원관리, 하드 디스크 충격 보호, 팬조절 등을 할 수 있습니다.
이러한 추가된 하드웨어나 기능을 위해 독자적인 규격인  SMAPI (System Management Application Program Interface)가 있습니다.

리눅스에서는 커널모듈 thinkpad_acpi, thinkpad_ec, tp_smapi, hdaps로 이러한 하드웨어에 접근할 수 있습니다.
ThinkPad에 리눅스를 설치하면, 일반적인 컴퓨터의 ACPI같이 thinkpad_acpi는 제대로 올려집니다.
hdaps와 tp_smapi는 사용자가 직접 설정을 해야하는 경우가 있습니다.
Debian 리눅스에서 tp_smapi 모듈이 올려질 때 thinkpad_ec가 같이 올려집니다
ThinkPad L410 모델을 사용하면서 배터리 전원관리는 완벽하지는 않지만 잘 되나,
하드 디스크 충격 보호는 에러로 사용하지 못하고, 팬 조절은 내장된 EC회로에서 하는 것이 좋아보여 그대로 사용중입니다.

새로운 ThinkPad 랩탑이 나올 때 SMAPI도 조금 바뀌거나 개선되므로 모델마다 차이가 있으며, 바이오스가 새로 개정될 때에도 변화가 있습니다. ThinkPad L410도 바이오스를 업데이트를 한 후에 설정이 원할하였습니다.

# dmidecode -t 11
SMBIOS 정보와 Embedded Controller가 있는지 알 수 있습니다.

HDAPS (Hard Drive Active Protection System)
랩탑에 내장된 가속센서(accelerometer)가 충격이 감지하여, 하드디스크의 헤드를 파킹하여 보호하게 됩니다.
Solid State Disk (SSD)는 물리적인 헤드가 없으므로 해당되지 않습니다.
리눅스 커널에 hdaps가 있으나, tp-smapi-dkms를 설치하면 커널보다 향상된 hdaps가 설치됩니다.
내장된 가속센서(accelerometer) -> hdaps -> sysfs interface -> hdapsd 과정을 거쳐서, hdapsd가 하드 디스크 헤드 파킹을 하게 됩니다.

그러나 L410에서 하드디스크 충격보호기능은 사용하지 못하였습니다.
부팅시에 아래의 에러가 보이며, 모듈 thinkpad_ec tp_smapi 조차도 올려지지 않았습니다.
thinkpad_ec: thinkpad_ec_read_row: failed requesting row: (0x11:0x00)->0xfffffff0
hdaps init failed at: hdaps_get_ec_mode failed
직접 임의로 /etc/modprobe.d/hdaps.conf를 만들어 install hdaps /bin/false으로 기록하여 hdaps를 사용하지 않게 한 후, 리부팅해도 같은 에러가 보이며 모듈 thinkpad_ec tp_smapi도 올려지지 않았습니다.
결국에는 하드웨어 리셋(배터리 및 전원 빼고, 전원버튼 30초 이상 눌러 노트북안에 남은 전기를 모두 방전하게 함) 한 후에,
/etc/modprobe.d/hdaps.conf가 있는 상태에서 새로 부팅해야  thinkpad_ec tp_smapi이나마 정상적으로 올려집니다.

참고로 HDAPS는 랩탑에 내장된 가속센서 뿐 아니라, 이에 맞게 하드 디스크 자체에도 알맞게 헤드를 파킹하는 기능이 있어야 합니다. 일반적인 헤드 파킹이 아닌 하드 디스크의 firmware에서 HDAPS에 맞게 지원이 필요하다고 합니다.

tp_smapi
커널 모듈인 tp_smapi를 설치하면 랩탑의 배터리를 관리할 수 있습니다.
일반적으로 리듐이온 배터리는 저온 상태에서 사용해야 수명이 오래가고, 완전 충전이나 완전 방전시에 배터리 수명이 짧아진다고 합니다.
온도는 어쩔 수 없더라도, 배터리 용량의 40%에서 80%에서 충전과 방전을 하는 것이 배터리 수명을 늘린다고 합니다.

tp_smapi는 ThinkPad 랩탑에 내장된 하드웨어에서 얻은 정보를 /sys/devices/platform/smapi/에 보여주며,
반대로 /sys/devices/platform/smapi/에 사용자가 변경한 정보를 하드웨어에 전달합니다.
  • 설치.
    # aptitude install tp-smapi-dkms
    # echo tp_smapi >> /etc/modules

    이제 부팅시 tp_smapi 모듈이 올려지며, 의존 모듈인 thinkpad_ec도 같이 올려집니다.

    # echo "install hdaps /bin/false" > /etc/modprobe.d/hdaps.conf
    위의 HDAPS 문제로 사용하지 않게 하였습니다.

    # echo "35" > /sys/devices/platform/smapi/BAT0/start_charge_thresh
    이렇게 하면 배터리가 35%이상인 상태에서는 충전이 되지 않고, 배터리 전원이 아닌 AC 전원을 사용하게 됩니다.
    확인은  /sys/devices/platform/smapi/BAT0/state를 보면 idle이 AC 전원을 사용중인 상태입니다.
    이렇게 정한 값은 다시 부팅을 하여도 유지가 되나, 배터리를 뺐다 끼우거나 교체하면 새로 설정해주어야 합니다.
    자주 교체하는 경우에는 script를 만들어 update-rc.d하거나 sysfsutils을 설치하여 /etc/sysfs.conf에 설정하여 부팅시마다 설정이 되도록 하는 것이 필요할 수 있습니다.
ThinkPad L410에서 start_charge_thresh와 stop_charge_thresh가 따로 따로 설정이 안되는 문제가 있습니다.
start_charge_thresh를 설정하면 stop_charge_thresh 값이  바뀌고,
반대로 stop_charge_thresh를 설정하면 start_charge_thresh가 바뀝니다.
배터리 충전 횟수를 줄이기 위해 start_charge_thresh만 사용중입니다.

thinkfan
추가로 fan control을 직접 조절할 수 있는데, EC회로에서 자동으로 하는 것과 특별한 차이가 없어서 설정을 안하고 사용중입니다.
/sys/module/thinkpad_acpi/parameters/fan_control 값이 N 으로 EC회로에서 자동으로 조절하여 사용중입니다.
fancontrol 하려면 아래와 같이 설치한 후,
# apt-get install thinkfan
/etc/default/thinkfan.conf 에서  START=yes
/etc/modprobe.d/thinkfan_acpi.conf 에서 options thinkpad_acpi fan_control=1
CPU와 하드디스크 온도에 따라 팬 조절을 추가로 설정하면 됩니다.

2013년 11월 8일 금요일

노트북의 터치패드 설정 (touchpad)

노트북의 터치패드가 어떤종류인지 확인합니다. (Synaptics, ALPS, Elantech)
$ grep -E -i 'synap|alps|etps' /proc/bus/input/devices

아래아 같이 synaptics 회사 제품입니다.
N: Name="SynPS/2 Synaptics TouchPad"
P: Phys=synaptics-pt/serio0/input0

Gnome에서 간단한 설정을 할 수 있으나, 1 곳 터치를 마우스 좌 클릭으로, 2 군데 터치는 마우스 우 클릭으로 변경하기위해 다음과 같이 합니다.

xorg에서 설정하려면 
  • /etc/X11/xorg.conf.d/ 에 아래에 같이 파일을 만듭니다.
    참고로, $ synclient 해보면 다른 여러 항목에 대해 볼 수 있습니다
  • # nano /etc/X11/xorg.conf.d/synaptics.conf
    Section "InputClass"
      Identifier      "Touchpad"      # required
      MatchIsTouchpad "yes"       # required
      Driver          "synaptics"      # required
      Option         "TapButton1"   "1"  # one touch
      Option         "TapButton2"   "3"  # two touch
    EndSection
LXDE에서 설정하려면
  • 모든 사용자에게 적용하려면
    # nano /etc/xdg/lxsession/LXDE/autostart
    @synclient TapButton1=1
    @synclient TapButton2=3
  • 개별 사용자에게 적용하려면
    $ nano ~/.config/lxsession/LXDE/autostart
    @synclient TapButton1=1
    @synclient TapButton2=3
  • 참고로 openbox에서는
    모든 사용자에게 적용되는 /etc/xdg/openbox/autostart에서,
    또는 개별 사용자에게 적용되는 ~/.config/openbox/autostart에서
    다음과 같이 설정합니다.
    synclient TapButton1=1
    synclient TapButton2=3
사용해보니 /etc/X11/xorg.conf.d/에서 설정파일을 만드는 것이 더 안정적입니다.

2013년 11월 7일 목요일

LXDE (Openbox) 의 autostart (자동 실행)

LXDE에서 autostart 자동실행 설정

Autostart file

모든 사용자에게 적요되는 /etc/xdg/lxsession/LXDE/autostart
개별 사용자에게 적용되는 ~/.config/lxsession/LXDE/autostart
  • LXDE의 autostart 파일은 각각의 행이 실행될 명령이지만,  openbox의 autostart와 달리 shell scrip가 아닙니다.
  • 기호 @로 시작하는 명령은 오류가 생기면 다시 실행되며, 명령의 끝부분은 &가 아닙니다.
Autostart directory

/etc/xdg/autostart에 있는 모든 desktop fille (*.desktop files)은 모든 사용자에게,
~/.config/autostart/에 있는 모든 desktop fille (*.desktop files)은 개별 사용자에게,
자동으로 실행됩니다.
  • /usr/share/applications/의 desktop 파일을 링크하면 됩니다.
    예를 들어
    $ ln -s /usr/share/applications/lxterminal.desktop ~/.config/autostart/
  • 일단 .desktop file이 추가되면 lxsession-edit로 선택 또는 선택안함을 할 수 있습니다.
  • /etc/xdg/autostart에 있는 desktop fille은 openbox-session에도 적용됩니다.
openbox에서 

참고로 LXDE의 기본 window manager는 openbox입니다.
LXDE와 같은 방식으로
  • Autostart script

    /etc/xdg/openbox/autostart는 모든 사용자에게 적용되며,
    daemon이나 backgroud로 실행되어야 합니다.

    ~/.config/openbox/autostart는 개별 사용자에게 적용되며,
    사용자가 직접 파일을 만들어야 합니다.
  • Autostart directory

    /etc/xdg/autostart에 있는 모든 desktop fille (*.desktop files)이 모든 사용자에게,
    ~/.config/autostart에 있는 모든 desktop fille (*.desktop files)은 개별 사용자에게,
     자동으로 실행됩니다.
desktop fille 

destkop file이 있어도 파일 안에 OnlyShowIn=GNOME; 같이 설정되어 있으면, Gnome에서만 실행됩니다.
직접 OnlyShowIn=GNOME;LXDE;OPENBOX; 같이 변경해야 합니다.

/etc/xdg/autostart의 desktop파일을 ~/.config/autostart에 복사한 후, ~/.config/autostartetc/xdg/autostart의 desktop 파일을 변경하면 됩니다.

참고로

openbox에서는 다음과 같이
  • $ nano ~/.config/openbox/autostart
    lxpanel &
    pcmanfm --desktop &
    sleep 1s
    lxterminal &
    xbacklight -set 65

하드디스크 상태에 대해서 : smartmontools smart-notifier gsmartcontrol

하드디스크 상태를 살펴보려면, 아래의 패키지를 설치합니다.
# apt-get install smartmontools smart-notifier

smartmontools
하드디스크에 내장되어 있는 자기 감시 분석 및 보고 기술(S.M.A.R.T.)를 이용하여 하드디스크의 상태를 알 수 있습니다.
  • smartctl
    # smartctl -i /dev/sda
    하드디스크 /dev/sda의 정보를 보여줍니다.
    # smartctl -H /dev/sda
    간단히 SMART 상태를 보여줍니다.
    # smartctl -a /dev/sda
    모든 SMART 정보를 보여줍니다.
  • smartd
    데몬으로 백그라운드에서 실행되어 하드디스크에 오류가 생기면, 사용자가 설정한 E-mail로 알려줄 수 있습니다.
    E-mail 대신에 아래의 smart-notifier 설치하면 오류가 생길 때에 사용자의 컴퓨터 화면에서 경고창이 보이게 됩니다.
smart-notifier
설정을 다음과 같이 합니다.
  • 먼저 위의 smartd이 백그라운드에서 실행할 수 있게 설정합니다.
    /etc/default/smartmontools 파일에서
    #start_smartd=yes 를 #를 제거하여, 
    start_smartd=yes로 변경합니다.
  • /etc/smartd.conf 에서
    기본값 DEVICESCAN -d removable -n standby -m root -M exec /usr/share/smartmontools/smartd-runner을
    DEVICESCAN -d removable -n standby -m root -M test -M exec /usr/share/smartmontools/smartd-runner로 바꾸어 줍니다.
  • # /etc/init.d/smartmontools restart
    Hard Disk Health Warning 이 보이면 제대로 설정된 상태이므로 위의 -M test를 지우고 저장합니다.

    이제 하드디스크 오류가 생기면 화면에 경고창이 보이게 됩니다.
  • openbox이면 /etc/xdg/autostart/에 smart-notifier.desktop 파일이 있어야 openbox가 실행시에 smart-notifier가 실행되며,LXDE이면 추가로 [기본 설정] -> [데스크톱 세션 설정] 에서 (또는 $ lxsession-edit), 자동으로 시작한 프로그램에 Smart Notifier 가 선택되어 있어야 합니다.
gsmartcontrol
콘솔에서 사용하는 smartctl 의 graphical user interface 입니다.

  • # apt-get install  gsmartcontrol

2013년 10월 12일 토요일

mythtv 절전 supend to RAM

Debian (Wheezy)에서, 절전후 복구하면 mythtv backend가 작동하지 않아
다음과 같이 하였습니다.
TV카드는 디비코 FusionHDTV5 RT Silver 입니다.

먼저 01_mythtv-sleep 라는 임의의 파일을 만든 후,
# nano /etc/pm/sleep.d/01_mythtv-sleep

아래아 같이 입력 하고,
#!/bin/sh

case "$1" in
suspend)
/etc/init.d/mythtv-backend stop
sleep 1
modprobe -r cx88_dvb
sleep 1
;;
resume)
modprobe cx88_dvb
sleep 1
/etc/init.d/mythtv-backend start
sleep 1
;;
esac

이 파일을 실행 가능하게 하였습니다.
# chmod a+x /etc/pm/sleep.d/01_mythtv-sleep