«Аккумулятор отсутствует» на Toshiba Satellite L655

Я использую ноутбук Toshiba Satellite L655, я недавно установил Ubuntu 10.10. В gnome-power-manager нет кнопки «On Battery». Когда я запускаю команду: dmesg | grep batt она возвращает:

[ 0.752856] ACPI: Battery Slot [BAT1] (battery absent)

Пожалуйста, помогите решить эту проблему!


thuci@ubuntu:~$ cat /sys/firmware/acpi/tables/DSDT > DSDT.dat
cat: /sys/firmware/acpi/tables/DSDT: Permission denied
2
задан 5 October 2011 в 15:49

1 ответ

Существует предложенное исправление, как описано этим блоггером здесь.

Я воспроизвел статью здесь для завершения ответа на вопрос.

ВАЖНОЕ ПРИМЕЧАНИЕ: Это предложенное исправление очень включено и вовлекает Вас перекомпилировавший Ваше собственное ядро. Так будьте подготовлены к работе нескольких часов. Я настоятельно рекомендовал бы взять резервное копирование системы сначала - например, используют clonezilla.

Я также рекомендовал бы прочитать комментарии из блога сначала, чтобы видеть, сообщила ли какая-либо из проблем, мог бы относиться к Вам. Так как Вы используете 10.10 - существует один комментарий о создании 2.6.35 ядер, которые могут относиться к Вам.

"Причина проблемы состоит в том, потому что Toshiba включала два набора данных начальной загрузки, которые говорят ОС, какие аппаратные средства существуют в машине. Windows читает корректный, тогда как Linux не делает. Мы должны будем создать наше собственное ядро, чтобы заставить это произойти. Мы должны будем извлечь DSDT (Дифференцируемая Системная Таблица Описания) от машины, ASL, измененный, и может быть скомпилирован новый AML DSDT. Разделы ниже показывают способ сказать Linux использовать, это изменило DSDT вместо версии, которая шла с BIOS.

Получите исходный DSDL машины:

sudo su
cat /sys/firmware/acpi/tables/DSDT > DSDT.dat

Демонтируйте его

iasl -d DSDT.dat

Внесите изменения:

vi DSDT.dsl

поиск строки: OperationRegion (EMEM, SystemMemory, 0xFF808001, 0xFF) и замена это с: OperationRegion (EMEM, EmbeddedControl, 0×00, 0xFF) сохранили файл.

Создайте его:

iasl -tc DSDT.dsl

Это создаст файл DSDT.hex (Этот файл используется для перекомпиляции ядра),

Я получил ниже двух ошибок во время этой компиляции

N:B:-Вы может на самом деле проигнорировать эти ошибки, это работает, даже открепляя их ошибка. Но, если заинтересовано можно удаться для получения зафиксированных. Еще непосредственно раздел 'Kernel Recompilation' goto.

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 и перейдите к строке, где iasl указал на ошибку. В моем случае я перехожу к строкам 2656 и 2663.

iasl жалуется на строку “Длины” “0×00000000 ″. Это неправильно. Посмотрите на “Минимум Диапазона” и “Максимум Диапазона”. Откройте свой Kcalc или независимо от того, что Вы люди Gnome используете и изменяете его на Режим Системы счисления. Удостоверьтесь, что ШЕСТНАДЦАТЕРИЧНОЕ ЧИСЛО выбрано, и теперь мы вычитаем диапазон minimun от диапазона maximun, и затем мы добавляем 1. Так как минимальный диапазон 0 (И Вы не можете вычесть 0), я введу FEAFFFFF и затем добавлю 1, который дает мне FEB00000 (Не запутывайтесь, я просто опускаю “0x”, калькулятору не нужно это). Я изменяю 0×00000000 на 0xFEB00000 Длиной. Таким образом, теперь это похоже на это:

0×00000000,         // Granularity
0×00000000,         // Range Minimum
0xFEAFFFFF,         // Range Maximum
0×00000000,         // Translation Offset
0xFEB00000,         // Length

Строка 2 663 измененных к

0×00000000,    // Granularity
0xFED40000,         // Range Minimum
0xFED44FFF,         // Range Maximum
0×00000000,         // Translation Offset
0×00005000,         // Length

скомпилируйте снова.

Перекомпиляция ядра:

Установите необходимые пакеты:

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 /root/source

cd /root/source

apt-get source linux-image-$(uname -r)

NB: Мой uname-r был 2.6.38.2-универсален

cd linux-2.6.38

(замените это своей версией ядра),

файл конфигурации ядра копии от Вашего текущего ядра:

cp -vi /boot/config-`uname -r` .config

теперь скопируйте файл DSDT.hex во включать папку в источнике ядра

cp DSDT.hex /root/source/linux-2.6.38/include

откройте .config файл, который мы только что скопировали

vi /root/source/linux-2.6.38/.config

Сделайте ниже изменений

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

сохраните и выйдите.

Мой pwd:/root/source/linux-2.6.38

начните компилировать Ядро:

make menuconfig

загрузите .config файл, сохраните файл меню и выход.

Мы собираемся запустить процесс компиляции. Немного приема, который можно сделать, должно установить переменную CONCURRENCY_LEVEL для ускорения компиляции ядра. Число должно быть количеством процессоров, которые Вы имеете плюс один. Таким образом в моем случае у меня есть двухъядерный процессор, таким образом, я добавлю тот, который был бы три.

export CONCURRENCY_LEVEL=3

Начните создавать:

Здесь я назвал свое пользовательское ядро как tuxsage, замените его тем, которого Вы желаете.

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

(Это займет время),

После того как это завершается, Вы найдете созданное ядро одним каталогом из Вашего существующего каталога

cd /root/source
dpkg -i linux-image-2.6.38.(This part will be whatever name you gave it).deb
dpkg -i linux-headers-2.6.38.(This part will be whatever name you gave it).deb

Сделайте initramfs:

update-initramfs -c -k 2.6.38+tuxsage (replace tuxsage with correct name)

Личинка обновления:

update-grub

Перезагрузка к новому ядру"

1
ответ дан 2 December 2019 в 05:45

Другие вопросы по тегам:

Похожие вопросы: