1 (25.11.2010 06:40:19 отредактировано aldms)

Поставил Gentoo, первый раз  ab
Ядро кофигурировал сам. Все работает, но все же хотелось бы кое-что подправить: кое-что отключить совсем; что-то перевести из ядра  в модули...
Собственно, вопрос. Если я буду делать по хандбуку, как то:

cd /usr/src/linux
make clean
make menuconfig
make && make modules_install
cp arch/i386/boot/bzImage /boot

что я получу в итоге? Модули старого (первого ядра) заменятся новыми, или же в /lib/module будет создан новый каталог?
Экспериментировать в слепую не хочется ab Проконсультируйте плиз ab

2

Если версия ядра другая, то новые модули не заменят старые, а лягут в соседнем каталоге.
Если ядро то же самое, то заменятся.

3

Еще, если у вас ядро той же версии, но вы не хотите потерять
старые модули, можете присвоить ядру локальную версию
make menuconfig
General setup -> Local version - append to kernel release
Написать что-нибудь наподобие "my_kernel". И звездочку поставить в
General setup -> Automatically append version information to the version string
У вас будет ядро "как бы" другой версии, но в действительности той же самой.

Йа тьомный эльф

4 (01.03.2010 15:03:56 отредактировано deadhead)

make menuconfig

General setup -> Local version -> Automatically append version information to the version string
(тут могут быть неточности)
Тут вы можете дать новому ядру специальное название, которое позволит вам легко его идентифицировать, например "test1".
Далее все как обычно :-) Модули будут помещены в /lib/modules с указанием в суффиксе вашего идентификатора, т.е. test1. Рекомендую еще ядро ложить в другой каталог в имени которого присутствует идентификатор, это позволит вам не запутаться в версиях.
И еще, оставляйте хотя бы одно работоспособное ядро (и соответствующую запись в grub.conf) на случай если вы не сможете загрузится с вновь собранного ядра.

Удачи!

P.S. пока отвечал уже все разъяснили :-)

Ищите мою подпись на UnixForum

5 (18.07.2010 14:52:45 отредактировано aldms)

Что делать с новоиспеченным ядром?

Стабильная ветвь. Долгое время использовал ядро 2.6.32-gentoo-r*, но вот подошло новое, из новой ветки (если можно так выразиться) 2.6.34-gentoo-r*.
Возник вопрос, а что с ним делать; скопировать .config предыдущей ветки или же начинать настройку заново?

6

aldms пишет:

Что делать с "новоиспеченным" ядром?

Стабильная ветвь. Долгое время использовал ядро 2.6.32-gentoo-r*, но вот подошло новое, из новой ветки (если можно так выразиться  smile ) 2.6.34-gentoo-r* .
Возник вопрос, а что с ним делать; скопировать .config предыдущей ветки или же начинать настройку заново?

Вы можете использовать старый конф(скопировать). Но перед make menuconfig нада сделать make oldconfig( оно должно его иправить ):
1. cd /usr/src/linux
2. make mrproper
3. cp oldconfig ./.config
4. make oldconfig
5. make menuconfig
6. make
7. make modules_install
8. cp bzimage

7

Можно вместо cp bzImage /boot делать просто make install, новое ядро установится в /boot, старое переименуется, если оно было в vmlinuz.old и будет создан симлинк vmlinuz->vmlinuz-2.6.*
Только в Gentoo нужно не забывать примонтировать /boot, если он не монтируется в fstab при загрузке, как это рекомендуют в хэндбуке.

Йа тьомный эльф

8 (11.07.2010 19:56:06 отредактировано vux)

bobr пишет:

Можно вместо cp bzImage /boot делать просто make install, новое ядро установится в /boot, старое переименуется, если оно было в vmlinuz.old и будет создан симлинк vmlinuz->vmlinuz-2.6.*
Только в Gentoo нужно не забывать примонтировать /boot, если он не монтируется в fstab при загрузке, как это рекомендуют в хэндбуке.

так даже лучше( может даже для новичков в зборке ядра, тк им это нада делать неоднократно )

9 (11.07.2010 23:44:45 отредактировано Lupo Alberto)

При различных «экспериментах» с ядром, чтобы исключить перезапись установленных модулей,  я немного изменяю значение переменной EXTRAVERSION в файле /usr/src/linux/Makefile, т. е.
было

grep '^EXTRAVERSION' Makefile
EXTRAVERSION = -zen1

делаю

grep '^EXTRAVERSION' Makefile
EXTRAVERSION = -zen1a

При копировании в /boot образа ядра и файла System.map добавляю тот же индекс.
В результате получаю:

ls -1 /boot | grep '2.6.34'
bzImage-2.6.34-zen1a
bzImage-2.6.34-zen1b
System.map-2.6.34-zen1a
System.map-2.6.34-zen1b
ls -1 /lib/modules
2.6.34-zen1a/
2.6.34-zen1b/
Был, был и весь вышел...

10

Здравствуйте всем.

Вопрос, нужен ли initrd? В Ubuntu при установке ядра нужно было копировать само ядро (bzImage), устанавливать модули, копировать System.map и создавать initrd (inital RAM disk) командой "mkinitramfs". При этом все работало.

В Gentoo же (по крайней мере по рекомендациям хендбука) мы устанавливаем модули и копируем ядро в /boot. Все. При пользовании genkernel автоматом создается этот самый initrd и все работает. При ручной настройке и установке - нет.

Решил, что дело именно в этом, потому что загрузка полностью останавливается на сообщениях о init. Сообщений этих довольно много и последние начинаются с "?".

Можно ли выключить эту опцию в ядре или все-таки использование initrd является необходимостью? Тогда как его создавать в Gentoo?

11

Виктор, initrd не является обязательным в большинстве случаев. Проверьте, чтобы поддержка драйверов вашего жёсткого диска и корневой файловой системы была включена в ядро НЕ модулем.
Возьмём, для примера, мой ноутбук:
Проверяем, что отвечает за поддержку жёсткого диска с SATA-интерфейсом, обращая внимание на строку «Kernel driver in use»:

# lspci -k | grep SATA -A 2
00:1f.2 IDE interface: Intel Corporation 82801GBM/GHM (ICH7 Family) SATA IDE Controller (rev 02)
    Subsystem: Toshiba America Info Systems Device ff00
    Kernel driver in use: ata_piix

Теперь смотрим соответствующие опции ядра:

# zegrep ATA_PIIX /proc/config.gz | grep -v '^#'
CONFIG_ATA_PIIX=y

Смотрим, какая файловая система на корневом разделе:

 # grep sda5 /etc/fstab
/dev/sda5        /                reiserfs    noatime,nodiratime,notail        0 0

Смотрим поддержку Reiserfs в ядре:

 # zegrep -i reiserfs /proc/config.gz
CONFIG_REISERFS_FS=y
# CONFIG_REISERFS_CHECK is not set
CONFIG_REISERFS_PROC_INFO=y
CONFIG_REISERFS_FS_XATTR=y
CONFIG_REISERFS_FS_POSIX_ACL=y
CONFIG_REISERFS_FS_SECURITY=y
Был, был и весь вышел...

12

Lupo Alberto, благодарю за развернутый ответ, какие файловые системы знаю, потому как сам вот только диск переразбивал, поддержку их в ядре включил. Драйвера на свои устройства вроде тоже включил в ядро. Все это не модулем.

У меня система только-только установлена, и это первое ядро, которое и не запускает систему. До этого ставил, используя genkernel, но он столько всякой всячины включил в ядро, что, намучавшись все это выпиливать, решил сделать свое (благо в ядре уже более-менее сносно ориентируюсь). Плюс не было поддержки сетевой карты. Т.к. при первой установке не все прошло гладко, решил переустановить всю систему, а не только одно ядро.

Теперь вопрос, могу ли я с LiveCD использовать "zegrep" и /proc/config.gz? Кстати, grep - это какая-то утилита или стандартная команда?

13

Виктор пишет:

Теперь вопрос, могу ли я с LiveCD использовать "zegrep" и /proc/config.gz?

Да, можете.

Виктор пишет:

grep - это какая-то утилита или стандартная команда?

Можно сказать, это стандартная утилита. Она есть во всех дистрибутивах в т.ч. и лив-СД

Йа тьомный эльф

14

Виктор, я вообще, пока не собрал ядро, пользуюсь ядром с установочного диска. В качестве установочного рекомендую RescueCD. Помимо лучшей, на мой взгляд, поддержки «железа», чем в MinimalCD, он позволяет производить установку в графическом интерфейсе со всеми сопутствующими ему «плюшками».
Для ещё более полного изучения опций ядра, а, главное, для более тщательной подгонки его конфигурации под ваши нужды советую изучить ссылки:
http://62.3.120.141/~pappy/working.html
http://cateee.net/lkddb/
http://lxr.linux.no/+trees

Был, был и весь вышел...

15

Виктор, столкнувшись с проблемами, и не только при конфигурировании ядра, выкладывайте больше информации. Не «пересказывайте»  wink логи и сообщения об ошибках, а дайте на них посмотреть  smile
Ещё немного занудства: обновляя ядро, всегда оставляйте возможность «отката» на рабочую конфигурацию.

Был, был и весь вышел...

16

Lupo Alberto пишет:

столкнувшись с проблемами, и не только при конфигурировании ядра, выкладывайте больше информации. Не пересказывайте   логи и сообщения об ошибках, а дайте на них посмотреть

+1 Может эту фразу где-нить на видном месте написать. Очень уж часто приходиться говорить что-то подобное.

Йа тьомный эльф

17

Виктор, кстати, загрузившись то ли с MinimalCD, то ли, как я советовал, с RescueCD, вы имеете возможность получить конфигурационный файл запущенного ядра:

zcat /proc/config.gz > /usr/src/linux/.config

а при большом желании и некотором везении и незапущенного — http://linuxforum.ru/viewtopic.php?pid=75231#p75231

Был, был и весь вышел...

18

Lupo Alberto пишет:

Не «пересказывайте»   логи и сообщения об ошибках, а дайте на них посмотреть

Я бы и рад, но копипастить тут никак, потому как в интернетах с настольника, а Генту мучаю на ноутбуке:) А набирать надо много

Lupo Alberto, за ссылки благодарю, поизучаю, только уже открытые вкладки не влазят в экран при разрешении 1680*1050:)

19

Виктор пишет:

Я бы и рад, но копипастить тут никак, потому как в интернетах с настольника, а Генту мучаю на ноутбуке:) А набирать надо много

Не надо набирать: для этого существует утилита app-text/wgetpaste. Я её устанавливаю сразу же после app-misc/mc  wink

Был, был и весь вышел...

20

Lupo Alberto пишет:

для этого существует утилита app-text/wgetpaste

И ее можно использовать при недозагрузке системы? bx

Lupo Alberto пишет:

имеете возможность получить конфигурационный файл запущенного ядра

Так и сделал, надоело уже. Охота потрогать новую ОС, а я все на старте топчусь. Не пойму уже что не так. В качестве драйвера на жесткий диск выдал

 Консоль:

SATA controller: ATI technologies Inc SB700/SB800 SATA Controller [AHCI mode]
Subsystem: Acer Incorporated [ALI] Device 0166
Kernel driver in use: ahci

он у меня и был включен в ядре (AHCI driver support). Все необходимые файловые системы тоже.

Кстати, компилирование и установка модулей (make && make modules_install) на моем AMD TurionX2 64 с 2Гц на ядро длится около 10 минут. В Ubuntu это все длилось часа 1.5-2...

21

Виктор, загрузившись с установочного диска, покажите вывод команд

lsmod
lspci

Выложите куда-либо конфигурационный файл собираемого вами ядра.

Был, был и весь вышел...

22

Lupo Alberto, сделал с ядром из LiveCD. Ругается на том же месте при запуске. Что-то типа "не могу примонтировать раздел /boot" и дальше продолжает ругаться на "init". Либо все-таки нужно ему подсунуть этот initrd, либо я что-то не так сделал (что крайне маловероятно). Пробовал в grub указывать

noinitrd

не помогло.

lsmod

Выдает много текста. Как прокручивать список в консоли? Стрелка вверх и "pgup" выдают последнюю введенную команду

23

Виктор пишет:

Как прокручивать список в консоли?

 Консоль:
lsmod | less

например, если в ядре не указан большой буфер, вы увидите только ~одну страницу выше.
по этому лучше использовать "пейджер", less или more или ещё какой.

24

Виктор, при использовании ядра от загрузочного диска нужно использовать также и модули для этого ядра, и файл initrd. Ну и, разумеется, настроить grub.conf

Был, был и весь вышел...

25

Виктор,  опишите последовательность ваших действий при самостоятельной сборке и установке ядра.

Был, был и весь вышел...

26

Виктор пишет:

Как прокручивать список в консоли?

Shift+PgUp. Соответственно, прокрутка вниз Shift+PgDn. Но лучше все же пользоваться пейджером, как это советует system-root.

Йа тьомный эльф

27

Lupo Alberto пишет:

при использовании ядра от загрузочного диска нужно использовать также и модули для этого ядра, и файл initrd

Модули-то вроде устанавливаются командой "make modules_install", а где брать initrd?

Последовательность действий при самостоятельной сборке и установке ядра:

1. Загрузка с LiveCD

2. Изменение корневого каталога:

 Консоль:
chroot /mnt/gentoo /bin/bash
env-update
source /etc/profile
export PS1="(chroot) $PS1"

3. Переход в каталог с исходниками ядра

 Консоль:
cd /usr/src/linux

4. Дальше удаление всего, что было сконфигурировано ранее

 Консоль:
make mrproper

5. Настройка

(Если уже есть .config, то копирование его в папку с исходниками ядра)

 Консоль:
make menuconfig

6. Компиляция и установка модулей

 Консоль:
make && make modules_install

7. Копирование файла ядра в /boot

 Консоль:
cp arch/x86_64/boot/bzImage /boot/(название скомпилированного ядра)

Настройка Grub:

title=Gentoo Linux (версия)
root (hd0,0)
kernel /boot/имя_образа root=/dev/hda3

Диск разбил в соответствии с хендбуком. Выделил /boot в отдельный раздел (1), корень в 3.

28

Сделал с LiveCD Ubuntu, потому что уже устал, а здесь можно копипастом воспользоваться. Думаю особо большой разницы нет.

По поводу .config куда его можно выложить? Сейчас подумал, ведь .config - это просто текстовый файл содержащий указания компилятору? Значит можно править его вручную в соответствии с используемыми модулями?

ubuntu@ubuntu:~$ lspci
00:00.0 Host bridge: Advanced Micro Devices [AMD] RS780 Host Bridge
00:01.0 PCI bridge: Acer Incorporated [ALI] Device 9602
00:02.0 PCI bridge: Advanced Micro Devices [AMD] RS780 PCI to PCI bridge (ext gfx port 0)
00:05.0 PCI bridge: Advanced Micro Devices [AMD] RS780 PCI to PCI bridge (PCIE port 1)
00:07.0 PCI bridge: Advanced Micro Devices [AMD] RS780 PCI to PCI bridge (PCIE port 3)
00:09.0 PCI bridge: Advanced Micro Devices [AMD] RS780 PCI to PCI bridge (PCIE port 4)
00:11.0 SATA controller: ATI Technologies Inc SB700/SB800 SATA Controller [AHCI mode]
00:12.0 USB Controller: ATI Technologies Inc SB700/SB800 USB OHCI0 Controller
00:12.1 USB Controller: ATI Technologies Inc SB700 USB OHCI1 Controller
00:12.2 USB Controller: ATI Technologies Inc SB700/SB800 USB EHCI Controller
00:13.0 USB Controller: ATI Technologies Inc SB700/SB800 USB OHCI0 Controller
00:13.1 USB Controller: ATI Technologies Inc SB700 USB OHCI1 Controller
00:13.2 USB Controller: ATI Technologies Inc SB700/SB800 USB EHCI Controller
00:14.0 SMBus: ATI Technologies Inc SBx00 SMBus Controller (rev 3a)
00:14.1 IDE interface: ATI Technologies Inc SB700/SB800 IDE Controller
00:14.2 Audio device: ATI Technologies Inc SBx00 Azalia (Intel HDA)
00:14.3 ISA bridge: ATI Technologies Inc SB700/SB800 LPC host controller
00:14.4 PCI bridge: ATI Technologies Inc SBx00 PCI to PCI Bridge
00:18.0 Host bridge: Advanced Micro Devices [AMD] Mobile K10 [Turion X2, Athlon X2, Sempron] HyperTransport Configuration (rev 40)
00:18.1 Host bridge: Advanced Micro Devices [AMD] Family 11h [Turion X2, Athlon X2, Sempron] Address Map
00:18.2 Host bridge: Advanced Micro Devices [AMD] Mobile K10 [Turion X2, Athlon X2, Sempron] DRAM Controller
00:18.3 Host bridge: Advanced Micro Devices [AMD] Mobile K10 [Turion X2, Athlon X2, Sempron] Miscellaneous Control
00:18.4 Host bridge: Advanced Micro Devices [AMD] Mobile K10 [Turion X2, Athlon X2, Sempron] Link Control
01:05.0 VGA compatible controller: ATI Technologies Inc RS780M/RS780MN [Radeon HD 3200 Graphics]
02:00.0 VGA compatible controller: ATI Technologies Inc Mobility Radeon HD 3400 Series
02:00.1 Audio device: ATI Technologies Inc RV620 Audio device [Radeon HD 34xx Series]
09:00.0 Ethernet controller: Atheros Communications Inc. AR5001 Wireless Network Adapter (rev 01)
0a:00.0 Ethernet controller: Atheros Communications Atheros AR8121/AR8113/AR8114 PCI-E Ethernet Controller (rev b0)
Module                  Size  Used by
binfmt_misc             7960  1 
ppdev                   6375  0 
lp                      9336  0 
parport                37160  2 ppdev,lp
dm_crypt               13043  0 
snd_hda_codec_atihdmi     3023  1 
snd_hda_codec_realtek   278890  1 
snd_hda_intel          25645  2 
snd_hda_codec          85727  3 snd_hda_codec_atihdmi,snd_hda_codec_realtek,snd_hda_intel
snd_pcm_oss            41394  0 
snd_mixer_oss          16299  1 snd_pcm_oss
snd_hwdep               6924  1 snd_hda_codec
snd_seq_dummy           1782  0 
snd_pcm                87850  3 snd_hda_intel,snd_hda_codec,snd_pcm_oss
snd_seq_oss            31219  0 
snd_seq_midi            5829  0 
snd_rawmidi            23388  1 snd_seq_midi
snd_seq_midi_event      7267  2 snd_seq_oss,snd_seq_midi
arc4                    1473  2 
snd_seq                57417  6 snd_seq_dummy,snd_seq_oss,snd_seq_midi,snd_seq_midi_event
snd_timer              23553  2 snd_pcm,snd_seq
ath5k                 134437  0 
snd_seq_device          6824  5 snd_seq_dummy,snd_seq_oss,snd_seq_midi,snd_rawmidi,snd_seq
joydev                 11072  0 
snd                    70978  16 snd_hda_codec_realtek,snd_hda_intel,snd_hda_codec,snd_pcm_oss,snd_mixer_oss,snd_hwdep,snd_pcm,snd_s
eq_oss,snd_rawmidi,snd_seq,snd_timer,snd_seq_device
uvcvideo               62403  0 
mac80211              238128  1 ath5k
videodev               40486  1 uvcvideo
ath                     9723  1 ath5k
acer_wmi               15829  0 
cfg80211              148386  3 ath5k,mac80211,ath
psmouse                64608  0 
v4l1_compat            15495  2 uvcvideo,videodev
edac_core              45423  0 
soundcore               8052  1 snd
v4l2_compat_ioctl32    12020  1 videodev
i2c_piix4               9639  0 
edac_mce_amd            9214  0 
snd_page_alloc          8500  2 snd_hda_intel,snd_pcm
serio_raw               4918  0 
shpchp                 33679  0 
led_class               3732  2 ath5k,acer_wmi
squashfs               21868  1 
aufs                  175432  1 
nls_cp437               6351  1 
isofs                  33399  1 
dm_raid45              75436  0 
xor                     4685  1 dm_raid45
fbcon                  39270  71 
tileblit                2487  1 fbcon
font                    8053  1 fbcon
bitblit                 5811  1 fbcon
softcursor              1565  1 bitblit
usbhid                 40988  0 
vga16fb                12757  0 
vgastate                9857  1 vga16fb
hid                    83376  1 usbhid
usb_storage            49833  0 
radeon                739595  3 
ttm                    60815  1 radeon
video                  20623  0 
output                  2503  1 video
pata_atiixp             4209  1 
drm_kms_helper         30742  1 radeon
ahci                   37646  1 
drm                   198770  5 radeon,ttm,drm_kms_helper
i2c_algo_bit            6024  1 radeon
atl1e                  33233  0 
(END) 

29

Виктор пишет:

Модули-то вроде устанавливаются командой "make modules_install", а где брать initrd?

Если вы используете ядро с установочного диска, то и модули, уже собранные находятся тоже на диске. По памяти не помню, просмотрите структуру диска, скорее всего где-то в /lib/modules, обращайте внимание, чтобы они соответствовали ядру (версия, субверсия в названии). Соответственно, initrd ищете в /boot в структуре смонтированного установочного диска.

Виктор пишет:

Последовательность действий при самостоятельной сборке и установке ядра:

3. Переход в каталог с исходниками ядра

 Консоль:
cd /usr/src/linux

4. Дальше удаление всего, что было сконфигурировано ранее

 Консоль:
make mrproper

5. Настройка
(Если уже есть .config, то копирование его в папку с исходниками ядра)

 Консоль:
make menuconfig

6. Компиляция и установка модулей

 Консоль:
make && make modules_install

Не помню, что делает make без аргументов, я обычно делаю сначала make bzImage для сборки, но не установки ядра.

Виктор пишет:

7. Копирование файла ядра в /boot

 Консоль:
cp arch/x86_64/boot/bzImage /boot/(название скомпилированного ядра)

Каталог /boot смонтирован? Копируете ли вы и файл System.map-ВЕРСИЯ_ЯДРА?

Был, был и весь вышел...

30

Виктор пишет:

По поводу .config куда его можно выложить? Сейчас подумал, ведь .config - это просто текстовый файл содержащий указания компилятору? Значит можно править его вручную в соответствии с используемыми модулями?

Выложить можно на любой сервис, предоставляющий такую услугу. Или воспользоваться «спойлером», появившимся на форуме.
Руками редактировать файл нельзя, так он формируется, в некотором роде, «в реальном времени» — выбор одних опций влияет на появление или исчезновение других.

Был, был и весь вышел...