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