
Ubuntu日本語フォーラム

ログインしていません。
パネルにバッテリーの電池残量を表示させたいのですが、表示の仕方がわかりません。
"unity Tweak Tool" を使っても表示されず、acpiコマンドを使ってもbattery情報が取得できません。
/proc/acpi/batteryディレクトリの中は空です。
一応、/sys/class/power_supply/ADP1/のなかにファイルがあるのを確認しましたが、どう変更を加えればいいかもわかりません。
どなたか回答お願いします。
OS: ubuntu 14.04LTS
PC: NEC Lavie G
オフライン
ADP1 は AC アダプターに対応します。私が使っているのは Lavie Z なので違っているかも知れませんがバッテリーは多分 BAT1 になるはずです。
/sys/class/power_supply の下にあるのは ADP1 だけですか?もしそうなら端末から
sudo grep BIX /var/log/dmesg
を実行してみてください。ひょっとして
ACPI Warning: \_SB_.PCI0.LPCB.EC__.BAT1._BIX: Return Package is too small - found 19 elements, expected 20 (20131115/nsprepkg-339)
のようなログがありませんか?もしそうなら BIOS の bug のせいです。もし、カーネルを作り直すことを厭わないのであれば「12.04.02, カーネル 3.5.0-39 → 3.5.0-40 で電池が認識されなくなった(NEC Lavie Z)」が参考になるかと思います。だだ、12.04.02 とは kernel が違うので行番号に若干の差異がでます。
12.04 trusty kernel ではこれでバッテリーが kernel に認識される(/sys/class/power_supply/BAT1 ができる)ようになりますので 14.04 でも同じなのではないかと予想します。
kernel には認識されているがパネルに表示されないという状況の場合は私には分かりません。
オフライン
どうやら同じような症状のようなので,カーネルをいじってみます.
まだまだ知識が足りないようので,調べながら頑張ります.
情報ありがとうございました.
オフライン
14.04 の linux-image-3.13.0-35-generic(3.13.0-35.62) のソースをダウンロードして12.04 の linux-image-3.13.0-35-generic(3.13.0-35.62~precise1) と比較しました。結構差異があるようですが drivers/acpi/battery.c は同一でした。ですので、基本的には12.04.02 の対処と似たような手順でカーネルを作れば電池を認識するはずです。手順の変更点ですが(項番はそこの#7に書いた手順の項番に対応しています。)
(1) ダウンロードするのは linux_3.13.0.orig.tar.gz と linux_3.13.0-35.62.diff.gz の二つです。kernel のバージョンが上がっても大抵は orig.tar.gz は変わりません。diff.gz はバージョンが上がる度にダウンロードする必要があります。
(2) パッケージを作成するディレクトリに cd して
tar -xzvf ダウンロードディレクトリ/linux_3.13.0.orig.tar.gz
cd linux-3.13
zcat ダウンロードディレクトリ/linux_3.13.0-35.62.diff.gz | patch -p1 -s
を実行してください。正常なら patch は何もメッセージを出さずに終了するはずです。1行でもエラーメッセージが出たら何か問題があります。
(3) battery.c を変更するところは 3.13.0-35 では 122 行めと 365 行めです。問題の行を単に削除した場合、diff -u の出力は
--- battery.c-dist 2014-08-30 08:31:07.561214557 +0900
+++ battery.c 2014-08-30 08:35:53.080249340 +0900
@@ -119,7 +119,6 @@
struct acpi_device *device;
struct notifier_block pm_nb;
unsigned long update_time;
- int revision;
int rate_now;
int capacity_now;
int voltage_now;
@@ -362,7 +361,6 @@
};
static struct acpi_offsets extended_info_offsets[] = {
- {offsetof(struct acpi_battery, revision), 0},
{offsetof(struct acpi_battery, power_unit), 0},
{offsetof(struct acpi_battery, design_capacity), 0},
{offsetof(struct acpi_battery, full_charge_capacity), 0},
と(時刻以外は)なるはずです。
(6) バージョン番号は作成するカーネルに応じて変更してください。
上記は 12.04 で実行して確かめたもので、14.04 ならではの変更が何か必要になるかもしれません。
それから以前書き忘れたのですが、本体ディスクに空きが無いなどの理由で USB メモリー中にカーネルを作成する場合は ext2, ext3, ext4 など symbolic link をサポートするファイルシステムを作成してください。FAT のままではダメです。本体 HDD に空きが十分あるのならそちらを使うことをお勧めします。
オフライン
丁寧な説明ありがとうございます.
ためしてみたところ,makeすると以下のエラーが発生しました。
make[1]: *** `scripts/kconfig/qconf.o' に必要なターゲット `scripts/kconfig/.tmp_qtcheck' を make するルールがありません. 中止.
make: *** [xconfig] エラー 2
どうすればよいでしょうか?
オフライン
make[1]: *** `scripts/kconfig/qconf.o' に必要なターゲット `scripts/kconfig/.tmp_qtcheck' を make するルールがありません. 中止
このエラーメッセージは見たことがありませんが、Makefile を眺めてみたところ、qt 関連のパッケージが不足していることが考えられます。
とりあえず、次のコマンドの実行結果を教えてください。
pkg-config --modversion QtCore pkg-config --modversion QtGui pkg-config --modversion Qt3Support pkg-config --modversion qt pkg-config --modversion qt-mt
オフライン
1行目のコマンドを実行したところ以下の結果が出ました.
他のコマンドも同じ結果です.
Package QtCore was not found in the pkg-config search path. Perhaps you should add the directory containing `QtCore.pc' to the PKG_CONFIG_PATH environment variable No package 'QtCore' found
オフライン
qt4 開発環境も qt3 開発環境もないのが原因かと思われます。
が、この先どうすればよいかが私には分かりません。
12.04 ですとパッケージ qt4-dev-tools と libqt4-dev をインストールすれば問題は解決するはずですが、14.04 ではどうすれば良いんでしょうかね?
(http://packages.ubuntu.com/trusty/allpackages には記載がありません。ここをみると 14.04 は qt5 が基本なのですね。)
ただ、これは kernel の再構築とは独立な、純粋に Qt の問題なので新たにスレッドを開いて「12.04 の qt4-dev-tools と libqt4-dev に相当する 14.04 のパッケージ名」を聞かれた方が良いと思います。(単に同名のパッケージをインストールすれば良いだけかも知れませんし、14.04 の他のパッケージと干渉しないようになにか手立てが必要なのかもしれません。手元に 14.04 がないのでこの辺は私にはまったく分かりません。)
インストールしたら pkg-config --modversion QtCore QtGui Qt3Support でバージョンが表示されることを確かめてください。問題がなければ kernel の再構築を再開してください。
オフライン
とりあえずqt4-dev-tools と libqt4-devをインストールしましたが、まだqt,qt-mtがないようです。
ほかに何をインストールすべきでしょう。
以下のエラーがでました。
HOSTCXX scripts/kconfig/qconf.o /bin/sh: 1: g++: not found make[1]: *** [scripts/kconfig/qconf.o] エラー 127 make: *** [xconfig] エラー 2
オフライン
apt-get か synaptic で g++ パッケージをインストールしてください。binutils-dev をまだインストールしていなければそれもインストールしてください。
とりあえずqt4-dev-tools と libqt4-devをインストールしましたが、まだqt,qt-mtがないようです。
pkg-config の引数にするパッケージ名 qt と qt-mt は qt3 のものです。
QtCore, QtGui と Qt3Supoort は qt4 のものです。これらは ubuntu のパッケージ qt4-dev-tools と libqt4-dev に含まれています。
kernel 再構築には qt3 開発環境か qt4 開発環境のどちらかがあれば make xconfig は通るはずです。(参考までに: make xconfig では qt3 は qt4 がないときのみ使われるようです。)
オフライン