诸葛孔明没灯

导航

 
系统:Ubuntu
笔记本型号:Toshiba L600
问题:无法显示电脑电池相关信息
1 secret@L600:~$ cat /proc/acpi/battery/BAT1/*
2 present:                 no
3 present:                 no
4 present:                 no
5 secret@L600:~$ dmesg | grep battary
6 [ 1.370268] ACPI: Battery Slot [BAT1] (battery absent)

解决办法:

得到系统原始的DSDT:

# cat /sys/firmware/acpi/tables/DSDT > DSDT.dat

反汇编:

# iasl -d DSDT.dat  #(如果没有iasl, 就安装一下)
# vim DSDT.dsl

找到:

OperationRegion (EMEM, SystemMemory, 0×FF808001, 0×FF)
修改成
OperationRegion (EMEM, SystemMemory, 0×00, 0×FF)

然后再重新编译:

# iasl -tc DSDT.dsl

可能会出现如下错误:

DSDT.dsl  2656:         0x00000000,         // Length
Error    4122 -            ^ Invalid combination of Length and Min/Max fixed flags
DSDT.dsl  2663:         0x00000000,         // Length
Error    4122 -            ^ Invalid combination of Length and Min/Max fixed flags

解决方法:

重新打开DSDT.dsl文件,定位到有问题的两行,这两个错误都是长度不正确,所以只要修改长度就可以了,根据有问题行上面的Range Minimum和Range Maximum的值修改Length, 打开一个十六进制的计算器,用Range Maximum - Range Minimum,将得到的值+1,得到的十六进制即为Length的值,修改原来的0x00000000后保存。然后再重新编译:

# iasl -tc DSDT.dsl

就不会有错了,此时仍然有警告,忽略就可以了。接下来,重新编译内核,首先安装必要的数据包:

#apt-get install fakeroot kernel-wedge build-essential makedumpfile kernel-package libncurses5 libncurses5-dev
#apt-get build-dep --no-install-recommends linux-image-$(uname -r)
#mkdir ~/source
#cd ~/source
#apt-get source linux-image-$(uname -r)

从你当前的内核中复制配置文件:

#cp -vi /boot/config-`uname -r` ./linux-*/.config

复制之前编译生成的DSDT.hex到内核的include文件夹中:

#cp [PATH]/DSDT.hex linux-*/include #PATH为刚才编译的路径

再打开刚才拷贝的配置文件:

#vim ./linux-*/.config

修改如下:

CONFIG_STANDALONE=n
CONFIG_ACPI_CUSTOM_DSDT=y
CONFIG_ACPI_CUSTOM_DSDT_FILE="DSDT.hex"

如果没有自己给添加上,然后保存退出,然后进入内核文件夹

#cd linux-*/
#make menuconfig

在最后找到 Load an Alternate Configuration File

解决东芝笔记本Linux系统里面无法找到电池信息的问题 - 不知道叫什么好 - 东东大学生

选择修改够的.config文件,最后选择Save an Alternate Configuration File. 保存即可。

接下来就是编译内核的过程了,首先应该导出CONCURRENCY_LEVEL变量的值,这个值应该为你CPU核心数+1

1 #cat /proc/cpuinfo | grep -i processor
2 processor    : 0
3 processor    : 1
4 processor    : 2
5 processor    : 3

我的电脑为i3CPU 4核心,所以

# export CONCURRENCY_LEVEL=5

开始编译:

我将我的内核命名为dream,你可以换成任何你喜欢的,或者直接复制也没有问题:

# make-kpkg clean
# fakeroot make-kpkg --initrd --append-to-version=-dream kernel-image kernel-headers

(编译是一个很漫长的过程,大约要1个小时,根据机器配置而定)编译完成后会在上一层目录中找到生成的内核文件。

# cd ../
# dpkg -i linux-image-*.(根据自己的当前的内核版本选择).deb
# dpkg -i linux-headers-*.(根据自己的当前的内核版本选择).deb
# update-initramfs -c -k [3.2.14-dream] #([]部分要根据你自己生成的文件名)

最后更新引导程序

# update-grub

重新启动后进入新的内核即可。最后效果:

解决东芝笔记本Linux系统里面无法找到电池信息的问题 - 不知道叫什么好 - 东东大学生

可以看到电池的信息了,感觉Ubuntu还是比较省电,无线网开着,大约可以使用两个半小时,与Windows差不多。

 

 

 

 

 

 

 

 

posted on 2013-04-28 15:56  诸葛孔明没灯  阅读(1444)  评论(1编辑  收藏  举报