Перекомпиляция ядра (с поддержкой acpi)

SLAX, Deep Style, ZenWalk

Модератор: Модераторы разделов

Аватара пользователя
kernel_mode
Сообщения: 347
Статус: infinity++
ОС: Gentoo(desktop)/Arch(laptop)

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

Сообщение kernel_mode »

После ввода команды poweroff, halt или shutdown -h now linux успешно вырубается, но мой ноутбук "подвисает" (выводится надпись Power off и всё, не выключается). Посмотрел аналогичные темы и вычитал, что надо пересобирать ядро с зашитыми в него acpi и apm. Всё перекомпилил, вот только при загрузке никак не связанным с этим файла rc.pcima (точно не помню, как-то так :)) система зависает...
Критично ли выключать ноут кнопкой после halt'a или можно оставить всё в таком виде? :) Если да, то как можно исправить данную ситуацию?
Спасибо сказали:
*F1reb1rd
Сообщения: 69
ОС: slackware

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

Сообщение *F1reb1rd »

я инит делал, туда добавлял acpi модули, поэтому ядро можно и не собирать монолитом.
ну а rc.pcmcia, попробуй вырубить если не пользуешся.
asus v1j | slackware current
Спасибо сказали:
TwisT
Сообщения: 265
ОС: Debian

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

Сообщение TwisT »

*F1reb1rd писал(а):
09.11.2006 00:12
я инит делал, туда добавлял acpi модули, поэтому ядро можно и не собирать монолитом.
ну а rc.pcmcia, попробуй вырубить если не пользуешся.

Не могли бы вы расказать что в инит нужно пихать а что нет.
ЗЫ: Стоит на reiserfs, я млдуль туда леплю. Както подозрительно мало :ph34r:
Linux user #432536.
Спасибо сказали:
Аватара пользователя
Matvey
Сообщения: 16

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

Сообщение Matvey »

Не знаю. Пересобирал ядро 2.4.26 с поддержкой acpi. И ноут прекрасно вырубается.
А старенький пенек третий нет. А надпись "Power off" штатная. Тоже самое, что в винде -
"Теперь питанае компьютера можно отключить."
Too much will kill you...
Спасибо сказали:
Аватара пользователя
pzp-5
Сообщения: 558
Статус: Главный модератор "Пингвинария" на Лафоксе.

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

Сообщение pzp-5 »

DEATH писал(а):
08.11.2006 23:34
Если да, то как можно исправить данную ситуацию?

В штатном ядре Слаки-10.0 поддержка APM включена в виде модуля.

Код: Выделить всё

$ cat /boot/config | grep APM | grep -v '#'
CONFIG_APM=m

У меня на материнке I815 оказалось достаточным раскомментировать строку /sbin/modprobe apm в файле /etc/rc.d/rc.modules (загружать модуль apm).
Комп командой начал отключаться нормально.
Угадайте: где на фотографии, которая представляет мой аватавр, спрятана птичка?
Спасибо сказали:
Аватара пользователя
kernel_mode
Сообщения: 347
Статус: infinity++
ОС: Gentoo(desktop)/Arch(laptop)

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

Сообщение kernel_mode »

pzp-5 писал(а):
09.11.2006 13:06
DEATH писал(а):
08.11.2006 23:34

Если да, то как можно исправить данную ситуацию?

В штатном ядре Слаки-10.0 поддержка APM включена в виде модуля.

Код: Выделить всё

$ cat /boot/config | grep APM | grep -v '#'
CONFIG_APM=m

У меня на материнке I815 оказалось достаточным раскомментировать строку /sbin/modprobe apm в файле /etc/rc.d/rc.modules (загружать модуль apm).
Комп командой начал отключаться нормально.

При загрузке выводится:
apm: BIOS not found =)
Спасибо сказали:
*F1reb1rd
Сообщения: 69
ОС: slackware

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

Сообщение *F1reb1rd »

mkinitrd -c -k [версия ядра] -m reiserfs:ac:battery ну и то что собсно нужно еще.
мне этого хватило. остальное в rc.modules можно выбрать.
asus v1j | slackware current
Спасибо сказали:
Аватара пользователя
kernel_mode
Сообщения: 347
Статус: infinity++
ОС: Gentoo(desktop)/Arch(laptop)

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

Сообщение kernel_mode »

*F1reb1rd писал(а):
10.11.2006 18:09
mkinitrd -c -k [версия ядра] -m reiserfs:ac:battery ну и то что собсно нужно еще.
мне этого хватило. остальное в rc.modules можно выбрать.

Код: Выделить всё

root@localhost:~# mkinitrd -c -k 2.4.33.3 -m reiserfs:ac:battery
WARNING:  Could not find module for "ac"
WARNING:  Could not find module for "battery"

Вот так.
=====
у меня ext3, там не надо riserfs на него менять?
=====
Вот что происходит после модпроба:

Код: Выделить всё

root@localhost:~# modprobe apm
/lib/modules/2.4.33.3/kernel/arch/i386/kernel/apm.o.gz: init_module: No such device
/lib/modules/2.4.33.3/kernel/arch/i386/kernel/apm.o.gz: Hint: insmod errors can be caused by incorrect module parameters, including invalid IO or IRQ parameters.
      You may find more information in syslog or the output from dmesg
/lib/modules/2.4.33.3/kernel/arch/i386/kernel/apm.o.gz: insmod /lib/modules/2.4.33.3/kernel/arch/i386/kernel/apm.o.gz failed
/lib/modules/2.4.33.3/kernel/arch/i386/kernel/apm.o.gz: insmod apm failed

=====
Вот ещё кое что, может поможет? :)

Код: Выделить всё

root@localhost:~# dmesg | grep apm*
shpchp: shpc_init : shpc_cap_offset == 0
shpchp: shpc_init : shpc_cap_offset == 0
shpchp: shpc_init : shpc_cap_offset == 0
shpchp: shpc_init : shpc_cap_offset == 0
shpchp: shpc_init : shpc_cap_offset == 0
shpchp: shpc_init : shpc_cap_offset == 0
shpchp: shpc_init : shpc_cap_offset == 0
shpchp: shpc_init : shpc_cap_offset == 0
shpchp: shpc_init : shpc_cap_offset == 0
shpchp: shpc_init : shpc_cap_offset == 0
shpchp: shpc_init : shpc_cap_offset == 0
shpchp: shpc_init : shpc_cap_offset == 0
shpchp: shpc_init : shpc_cap_offset == 0
shpchp: shpc_init : shpc_cap_offset == 0
shpchp: shpc_init : shpc_cap_offset == 0
shpchp: shpc_init : shpc_cap_offset == 0
shpchp: shpc_init : shpc_cap_offset == 0
shpchp: shpc_init : shpc_cap_offset == 0
shpchp: shpc_init : shpc_cap_offset == 0
shpchp: shpc_init : shpc_cap_offset == 0
shpchp: shpc_init : shpc_cap_offset == 0
shpchp: shpc_init : shpc_cap_offset == 0
shpchp: shpc_init : shpc_cap_offset == 0
shpchp: shpc_init : shpc_cap_offset == 0
shpchp: shpc_init : shpc_cap_offset == 0
shpchp: shpc_init : shpc_cap_offset == 0
shpchp: shpc_init : shpc_cap_offset == 0
shpchp: shpc_init : shpc_cap_offset == 0
shpchp: shpc_init : shpc_cap_offset == 0
shpchp: shpc_init : shpc_cap_offset == 0
shpchp: shpc_init : shpc_cap_offset == 0
shpchp: shpc_init : shpc_cap_offset == 0
shpchp: shpc_init : shpc_cap_offset == 0
shpchp: shpc_init : shpc_cap_offset == 0
shpchp: shpc_init : shpc_cap_offset == 0
shpchp: shpc_init : shpc_cap_offset == 0
shpchp: shpc_init : shpc_cap_offset == 0
shpchp: shpc_init : shpc_cap_offset == 0
shpchp: shpc_init : shpc_cap_offset == 0
shpchp: shpc_init : shpc_cap_offset == 0
shpchp: shpc_init : shpc_cap_offset == 0
shpchp: shpc_init : shpc_cap_offset == 0
shpchp: shpc_init : shpc_cap_offset == 0
shpchp: shpc_init : shpc_cap_offset == 0
shpchp: shpc_init : shpc_cap_offset == 0
shpchp: shpc_init : shpc_cap_offset == 0
shpchp: shpc_init : shpc_cap_offset == 0
shpchp: shpc_init : shpc_cap_offset == 0
shpchp: shpc_init : shpc_cap_offset == 0
shpchp: shpc_init : shpc_cap_offset == 0
shpchp: shpc_init : shpc_cap_offset == 0
shpchp: shpc_init : shpc_cap_offset == 0
shpchp: shpc_init : shpc_cap_offset == 0
shpchp: shpc_init : shpc_cap_offset == 0
shpchp: shpc_init : shpc_cap_offset == 0
shpchp: shpc_init : shpc_cap_offset == 0
shpchp: shpc_init : shpc_cap_offset == 0
shpchp: shpc_init : shpc_cap_offset == 0
shpchp: shpc_init : shpc_cap_offset == 0
shpchp: shpc_init : shpc_cap_offset == 0
shpchp: shpc_init : shpc_cap_offset == 0
shpchp: shpc_init : shpc_cap_offset == 0
shpchp: shpc_init : shpc_cap_offset == 0
shpchp: shpc_init : shpc_cap_offset == 0
shpchp: shpc_init : shpc_cap_offset == 0
shpchp: shpc_init : shpc_cap_offset == 0
shpchp: shpc_init : shpc_cap_offset == 0
shpchp: shpc_init : shpc_cap_offset == 0
shpchp: shpc_init : shpc_cap_offset == 0
shpchp: shpc_init : shpc_cap_offset == 0
shpchp: shpc_init : shpc_cap_offset == 0
shpchp: shpc_init : shpc_cap_offset == 0
shpchp: shpc_init : shpc_cap_offset == 0
shpchp: shpc_init : shpc_cap_offset == 0
shpchp: shpc_init : shpc_cap_offset == 0
shpchp: shpc_init : shpc_cap_offset == 0
shpchp: shpc_init : shpc_cap_offset == 0
shpchp: shpc_init : shpc_cap_offset == 0
shpchp: shpc_init : shpc_cap_offset == 0
shpchp: shpc_init : shpc_cap_offset == 0
shpchp: shpc_init : shpc_cap_offset == 0
shpchp: shpc_init : shpc_cap_offset == 0
shpchp: shpc_init : shpc_cap_offset == 0
shpchp: shpc_init : shpc_cap_offset == 0
shpchp: shpc_init : shpc_cap_offset == 0
shpchp: shpc_init : shpc_cap_offset == 0
shpchp: shpc_init : shpc_cap_offset == 0
shpchp: shpc_init : shpc_cap_offset == 0
shpchp: shpc_init : shpc_cap_offset == 0
shpchp: shpc_init : shpc_cap_offset == 0
shpchp: shpc_init : shpc_cap_offset == 0
shpchp: shpc_init : shpc_cap_offset == 0
shpchp: shpc_init : shpc_cap_offset == 0
shpchp: shpc_init : shpc_cap_offset == 0
shpchp: shpc_init : shpc_cap_offset == 0
shpchp: shpc_init : shpc_cap_offset == 0
apm: BIOS not found.
apm: BIOS not found.
Спасибо сказали:
Аватара пользователя
pzp-5
Сообщения: 558
Статус: Главный модератор "Пингвинария" на Лафоксе.

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

Сообщение pzp-5 »

DEATH писал(а):
10.11.2006 18:15
Вот ещё кое что, может поможет? :)

Код: Выделить всё

root@localhost:~# dmesg | grep apm*
shpchp: shpc_init : shpc_cap_offset == 0
....
apm: BIOS not found.
apm: BIOS not found.

Символ * не нужен в грепе.
Смысл имеют только 2 последние строчки.
У меня:

Код: Выделить всё

pzp-5@pzp:~/bin$ dmesg | grep apm
apm: BIOS version 1.2 Flags 0x07 (Driver version 1.16)

В чем ваша проблемма - не знаю, похоже не создался девайс /dev/apm_bios (этот девайс (ИМХО) создается ядром и к модулю отношения не имеет) .
Может все-таки попробуете мой совет с дефолтным ядром?
Угадайте: где на фотографии, которая представляет мой аватавр, спрятана птичка?
Спасибо сказали:
neron
Сообщения: 169
ОС: Slackware 12;Gentoo

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

Сообщение neron »

а зачем тебе именно apm?насколько я знаю он в основном на старых машинах используется,acpi моднее,попробуй его!перекомпиль ядро с поддержкой только acpi:

CONFIG_PM=y
CONFIG_ACPI=y
CONFIG_ACPI_SLEEP=y
CONFIG_ACPI_SLEEP_PROC_FS=y
и все что связано с acpi

# CONFIG_APM is not set

да и еще...запустить acpid:
#chmod +x /etc/rc.d/rc.acpid

у меня на 2.4.33 все замечательно работает,а вот с 2.6.18 проблемы
Спасибо сказали:
Аватара пользователя
kernel_mode
Сообщения: 347
Статус: infinity++
ОС: Gentoo(desktop)/Arch(laptop)

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

Сообщение kernel_mode »

neron писал(а):
10.11.2006 20:07
а зачем тебе именно apm?насколько я знаю он в основном на старых машинах используется,acpi моднее,попробуй его!перекомпиль ядро с поддержкой только acpi:

CONFIG_PM=y
CONFIG_ACPI=y
CONFIG_ACPI_SLEEP=y
CONFIG_ACPI_SLEEP_PROC_FS=y
и все что связано с acpi

# CONFIG_APM is not set

да и еще...запустить acpid:
#chmod +x /etc/rc.d/rc.acpid

у меня на 2.4.33 все замечательно работает,а вот с 2.6.18 проблемы

Уже пробовал... Всё та-же проблема с rc.pcima...
=====
В /etc/rc.d вроде уже есть rc.acpid, запускается он нормально, но:

Код: Выделить всё

root@localhost:/etc/rc.d# /usr/sbin/acpid
acpid: can't open /proc/acpi/event: No such file or directory
Спасибо сказали:
neron
Сообщения: 169
ОС: Slackware 12;Gentoo

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

Сообщение neron »

поищи файл /etc/rc.d/rc.pcima или что там...
сделай ему chmod -x <полное имя файла>
или посмотри ссылку на него в rc.sysinit rc.M rc.S в зависимости от того на каком runlevel грузишься
а с АЦПИ у меня такая же беда была пока не персобрал ядро с вкомпилиным АЦПИ модулем
CONFIG_ACPI=y
Спасибо сказали:
Аватара пользователя
kernel_mode
Сообщения: 347
Статус: infinity++
ОС: Gentoo(desktop)/Arch(laptop)

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

Сообщение kernel_mode »

neron писал(а):
10.11.2006 22:05
поищи файл /etc/rc.d/rc.pcima или что там...
сделай ему chmod -x <полное имя файла>
или посмотри ссылку на него в rc.sysinit rc.M rc.S в зависимости от того на каком runlevel грузишься
а с АЦПИ у меня такая же беда была пока не персобрал ядро с вкомпилиным АЦПИ модулем
CONFIG_ACPI=y

Всётаки решил повозится с acpi :). Перекомпилировал ядро со "вшитым" в него acpi (поясняю: в menuconfig General setup->ACPI support, воставил все на *, кроме ASUS Laptop suppot и Toshiba Laptop support). make modules и make modules_install не делал, т.к. никаких модулей не добавлял/исключал. Щас попробую повозиться с chmod'ом, напишу что получится. А вообще процесс загрузни зависает на чём-то похожем на это:
starting rc.pcmcia...
cardmgr[86] watching 1 socket...
и всё...
=====
почитал руководство по установке ubuntu и suse 10 на мою модель и вычитал там вот что:
ACPI Setup

The bios in this laptop is buggy (at best), so you have to configure your system to use a custom DSDT file. I'm not going to go into detail about exactly what this is, because frankly i don't really know myself. All i know is the steps on making the stuff work like battery display, etc.

First off, we need to find out what version bios we have. To get this, execute the following:
sudo dmidecode | grep Version

You should get a few lines of output, the top line should tell us what the bios version it is. Here is an example output:
Version: 3A28

Now, we need to go to [1] and download a DSDT for your bios version. For example, i grabbed the "3A28 for Aspire 1690 DDR2 (custom)".

Next we need to install nessesary software to compile the dsdt file:
sudo apt-get install build-essential bison flex-old
wget http://www.intel.com/technology/iapc/acpi/...20050624.tar.gz
cd ~
mkdir acpi
cd acpi
tar zxvf /path/to/acpica-unix-20050624.tar.gz
gunzip /path/to/yourdsdtfile.gz
cd acpica-unix-20050624/compiler
make
cp iasl ../..
cd ../..

Now you should have the iasl compiled binary in the same directory as your DSDT file. Now, compile it:
./iasl -tc dsdt.asl

This should create the file "DSDT.aml". We need to move this to a directory:
sudo mv DSDT.aml /etc/mkinitramfs/DSDT.aml

And configure the kernel to use it:
sudo dpkg-reconfigure linux-image-$(uname -r)

Now, reboot your computer, and everything should be working again. I know this section can be a bit confusing but basically all we're doing is downloading the source code for our bios version, downloading the intel compiler, compiling the compiler, then using it to compile the bios code to something the kernel can use. Then configuring the kernel to see it.

Может что нибудь похожее проделать надо?
Спасибо сказали:
*F1reb1rd
Сообщения: 69
ОС: slackware

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

Сообщение *F1reb1rd »

плохо знаю про ядро сей ветки, есть ли там вообще поддержка батареек и прочих ноут девайсов.
почему бы не перейти на 2.6.18 ? которое идет в testing.
asus v1j | slackware current
Спасибо сказали:
Аватара пользователя
kernel_mode
Сообщения: 347
Статус: infinity++
ОС: Gentoo(desktop)/Arch(laptop)

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

Сообщение kernel_mode »

*F1reb1rd писал(а):
11.11.2006 17:55
плохо знаю про ядро сей ветки, есть ли там вообще поддержка батареек и прочих ноут девайсов.
почему бы не перейти на 2.6.18 ? которое идет в testing.

Щас попробую =)
=====
Вроде всё, сменил ядро (acpi пока ещё не работает =)). А как узнать версию ядра, хочу проверить?
Спасибо сказали:
Аватара пользователя
pzp-5
Сообщения: 558
Статус: Главный модератор "Пингвинария" на Лафоксе.

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

Сообщение pzp-5 »

DEATH писал(а):
11.11.2006 17:59
как узнать версию ядра, хочу проверить?

uname -r
Угадайте: где на фотографии, которая представляет мой аватавр, спрятана птичка?
Спасибо сказали:
Аватара пользователя
kernel_mode
Сообщения: 347
Статус: infinity++
ОС: Gentoo(desktop)/Arch(laptop)

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

Сообщение kernel_mode »

pzp-5 писал(а):
11.11.2006 18:22
DEATH писал(а):
11.11.2006 17:59

как узнать версию ядра, хочу проверить?

uname -r

Гмммм... Пишет 2.4.3.33. Делел так: скопировал из папки test26 файлы System.map, config, и bzImage (впоследствии переименовал его в vmlinuz) в /boot. Щас из исходников соберу, так просче :)
=====
а где можно rc.modules для 2.6.18.1 взять?
Спасибо сказали:
Аватара пользователя
pzp-5
Сообщения: 558
Статус: Главный модератор "Пингвинария" на Лафоксе.

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

Сообщение pzp-5 »

DEATH писал(а):
11.11.2006 18:29
Гмммм... Пишет 2.4.3.33. Делел так: скопировал из папки test26 файлы System.map, config, и bzImage (впоследствии переименовал его в vmlinuz) в /boot. Щас из исходников соберу, так просче :)
=====
а где можно rc.modules для 2.6.18.1 взять?

Из слакбука:
Файл Назначение
System.map Map-файл системы для этого ядра
bzImage Собственно, образ ядра
config Конфигурационный файл для исходных текстов этого ядра

Чтобы использовать ядро, скопируйте файлы System.map и config в каталог /boot, а ядро скопируйте в /boot/vmlinuz. Запустите /sbin/lilo(8), чтобы установить LILO для нового ядра, а затем перезагрузите свою систему. Вот и всё. Новое ядро установлено.

Это:
Запустите /sbin/lilo
было пропущено?
Угадайте: где на фотографии, которая представляет мой аватавр, спрятана птичка?
Спасибо сказали:
*F1reb1rd
Сообщения: 69
ОС: slackware

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

Сообщение *F1reb1rd »

asus v1j | slackware current
Спасибо сказали: