We can easily check the battery status through GUI such as current battery percentage, whether it's charging or not charging and how long it will be usable
2DayGeek: This tutorial helps you to check laptop battery status from Linux terminal.
seen from Japan
seen from Türkiye
seen from Finland
seen from Japan
seen from Serbia

seen from Türkiye
seen from United States
seen from United States

seen from Netherlands

seen from India
seen from United States

seen from United States

seen from South Korea
seen from Malaysia

seen from United States
seen from France
seen from United Kingdom
seen from South Korea
seen from China
seen from United States
We can easily check the battery status through GUI such as current battery percentage, whether it's charging or not charging and how long it will be usable
2DayGeek: This tutorial helps you to check laptop battery status from Linux terminal.
Linux cpufreq
Manually adjusting CPUs frequencies using sysfs cpufreq interface
Sysfs interface paths shown as of kernel ver. 4.15
Adjusting scaling governor
List available governors:
# cd /sys/devices/system/cpu/cpufreq /sys/devices/system/cpu/cpufreq# cat policy?/scaling_available_governors | uniq conservative ondemand userspace powersave performance schedutil
Load userspace governor to allow manual frequency setup:
/sys/devices/system/cpu/cpufreq# echo userspace > policy0/scaling_governor /sys/devices/system/cpu/cpufreq# echo userspace > policy1/scaling_governor
Adjusting CPU frequency
List available frequencies:
/sys/devices/system/cpu/cpufreq# cat policy?/scaling_available_frequencies | uniq 2401000 2400000 2000000 1600000 1200000 800000
Set up specific freq of choice:
/sys/devices/system/cpu/cpufreq# echo 2000000 > policy0/scaling_setspeed /sys/devices/system/cpu/cpufreq# echo 2000000 > policy1/scaling_setspeed
Verify current freq was actually set:
/sys/devices/system/cpu/cpufreq# cat policy?/cpuinfo_cur_freq | uniq 2000000 /sys/devices/system/cpu/cpufreq# grep -i mhz /proc/cpuinfo cpu MHz : 1994.998 cpu MHz : 1994.998
Refs.: (1) https://www.kernel.org/doc/Documentation/cpu-freq/
KVM と /proc/cpuinfo の微妙な関係
今回は Libvirt/KVM のマシンをセットアップしている最中に遭遇したトラブルを紹介してみる。 まず、KVM の動作には CPU が仮想化支援機能 (Intel-VT または AMD-V) をサポートしている必要がある。 なので、それを /proc/cpuinfo から確認した。 Intel CPU の場合は vmx が、AMD CPU の場合は svm が flags の中にあれば良い。 この機能は最近の CPU であれば、よほどの廉価版でない限り付いている。
$ egrep -c '(vmx|svm)' /proc/cpuinfo 8
上記を確認した上で virt-install コマンドでドメインのインストールを試みた所 WARNING が出た。 KVM による高速化が使えないので QEMU を使いますと言っている。 端的に言うと、この状況では壮絶に遅くなる。
$ sudo virt-install --accelerate --connect=qemu:///system \ > --name=centos6 --vcpus=1 --ram=512 \ > --disk=/volume/images/centos6.qcow2,format=qcow2 \ > --location='http://ftp.iij.ad.jp/pub/linux/centos/6.5/os/x86_64' \ > --nographics --extra-args='ks=http://192.168.122.1/ks.cfg console=tty0 console=ttyS0,115200n8 keymap=ja' WARNING KVM acceleration not available, using 'qemu'
どういうことだ?と思いながらまずはカーネルモジュールを確認してみる。 kvm モジュールはあるが、何故か kvm_intel モジュールがロードされていない…。
$ lsmod | grep kvm kvm 451511 0
手動で modprobe してみるがダメ。
$ sudo modprobe kvm_intel modprobe: ERROR: could not insert 'kvm_intel': Operation not supported
不思議に思いながら kvm-ok コマンドを使ってみると、やっと原因が分かった。 CPU は KVM 拡張をサポートしているが、BIOS が vmx を無効にしているらしい。
$ sudo /usr/sbin/kvm-ok INFO: /dev/kvm does not exist HINT: sudo modprobe kvm_intel INFO: Your CPU supports KVM extensions INFO: KVM (vmx) is disabled by your BIOS HINT: Enter your BIOS setup and enable Virtualization Technology (VT), and then hard poweroff/poweron your system KVM acceleration can NOT be used
そこで再起動して BIOS で Virtualization (仮想化) の項目を有効にしたところ kvm-ok コマンドの結果が変化した。
$ sudo /usr/sbin/kvm-ok INFO: /dev/kvm exists KVM acceleration can be used
lsmod の結果も kvm_intel モジュールが読み込まれている。 これで大丈夫だ。
$ lsmod | grep kvm kvm_intel 143060 4 kvm 451511 1 kvm_intel
今回得られた知見は /proc/cpuinfo のフラグは、あくまで CPU がその機能をサポートしているかに過ぎず、 機能が有効になっているか否かは別問題ということ。 ところで、メーカーが Virtualization を BIOS で無効にすることにはどういったメリットがあるんだろう? 気になる。
Raspberry Pi で Sysfs を使って LED をチカらせる
Linux には /sys ディレクトリ以下に Sysfs 仮想ファイルシステムというものがある。 これはカーネルの情報をユーザランドからファイルシステムの形で操作できるようにしたインターフェースだ。 Raspbian の場合には Sysfs 経由で簡単な GPIO の制御ができるようになっている。 今回はそれを使って LED をチカらせてみる。 まず、GPIO を制御するディレクトリは /sys/class/gpio 以下にある。
$ ls /sys/class/gpio/ export gpiochip0 unexport
操作する GPIO の Pin を決めたら、まずはその Pin を有効にする。
$ sudo echo 25 > /sys/class/gpio/export
ここで言う Pin の番号は物理的なピン配置とは異なる点に注意する。 物理的なピンと論理的なピン番号の対応については以下のページにある画像が分かりやすかった。 http://www.adafruit.com/blog/2013/02/01/raspberry-pi-gpio-resource-piday-raspberrypi-raspberry_pi/ 上記の操作では 25 番 Pin を有効にしているため、物理的には 22 番 Pin を有効にしていることになる。 有効にすると /sys/class/gpio 以下にその Pin 用のディレクトリができる。
$ ls /sys/class/gpio/ export gpio25 gpiochip0 unexport $ ls /sys/class/gpio/gpio25/ active_low direction edge power subsystem uevent value
デフォルトでは制御の方向が in になっているので out に変更する。
$ cat /sys/class/gpio/gpio25/direction in $ sudo echo out > /sys/class/gpio/gpio25/direction $ cat /sys/class/gpio/gpio25/direction out
Pin の出力状態は value ファイルで確認できる。 今は 0 なので電圧がかかっていない。
$ cat /sys/class/gpio/gpio25/value 0
LED のアノード (長い方) を 22 番 Pin に、カソード (短い方) を GND に繋いだら Pin の状態を 1 に変更する。 これで 3.3V の電圧が 22 番 Pin にかかる。
$ sudo echo 1 > /sys/class/gpio/gpio25/value
以下のように LED がチカれば成功。
使い終わったら Pin を無効にする。
$ sudo echo 25 > /sys/class/gpio/unexport
めでたしめでたし。
Lighting a LED with my raspberry pi directly via command line without any IDE or the likes - using the sysfs interface
echo “25” > /sys/class/gpio/export echo “out” > /sys/class/gpio/gpio25/direction echo “1” > /sys/class/gpio/gpio25/value echo “0” > /sys/class/gpio/gpio25/value
Each pin is mapped to a number. In this case I connected a wire to pin 22 which is mapped as GPIO25.
Good introduction to GPIO on the raspberry pi, its layout, numbering and functionality as well as code examples are given here
I've wondered whether Linux sysfs should be called syphilis.
Charles Forsyth