LINUX.ORG.RU

Обновление ядра openSUSE: вопросы, и поиск уже написанного руководства

 ,


0

1

Решил я обновить ядро Linux 3.1 из состава openSUSE 12.1 до последнего (сейчас это 3.4-rc6), чтобы потестировать открытый видеодрайвер ATi. Решил сделать RPM из openSUSE Kernel GIT, чтобы:

  1. Не приходилось прописывать новое ядро вручную в список загрузки
  2. Чтобы многочисленные патчи от разработчиков openSUSE применились, начиная от картинки при загрузке и заканчивая AppArmor
  3. Чтобы не создавать вручную файл ".config" с помощью команды make oldconfig, а просто сделать несколько команд - установить пакет RPM с новым ядром Linux!

Оказалось, что легче было сделать всё вручную, так как при создании RPM столкнулся с проблемами. В связи с этим прошу прочитать мои действия и исправить ошибки, и ещё посоветовать мне готовое руководство по обновлению ядра Linux в дистрибутиве openSUSE, если оно есть.

Первое действие в статье Wiki об openSUSE Kernel GIT было такое:

git clone git://gitorious.org/opensuse/kernel-source.git

Я очень удивился тому, что загружалось 850 Мб. И всё это время думал: что же там может быть? Полное ядро в архиве TAR без сжатия? Оказалось, что файлов там всего лишь на 15 Мб, а архивы с патчами занимают 5 Мб (из них 3 - патчи для виртуализации Xen). 850 Мб - это полная история коммитов! Мне уже подсказали в другой теме другую команду для загрузки последнего репозитория GIT:

git clone --depth 1 git://gitorious.org/opensuse/kernel-source.git

Одна из следующих команд:

scripts/sequence-patch.sh --quilt

выдала ошибку «не найдены исходные коды ядра» и предложила мне загрузить их с сайта kernel.org и положить в каталог tmp/linux-3.4-rc6.orig. При этом непонятно: распаковать их туда, или просто положить. Сначала просто положил файл архива - не получилось, распаковал - получилось.

Теперь - команда для создания RPM:

scripts/tar-up.sh

Тоже сначала не заработала, и ей нужно было подсунуть уже архив с исходными кодами ядра. Подсунул. Получил каталог kernel-sources, и удалил все остальные, потому что они больше не нужны. Какие пакеты можно создать:

zenitur@linux-athlon64:/4/zenitur/kernel-source/kernel-source> ls *spec*
kernel-binary.spec.in  kernel-omap2plus.spec  kernel-syms.spec.in
kernel-debug.spec      kernel-pae.spec        kernel-tegra.spec
kernel-default.spec    kernel-ppc64.spec      kernel-trace.spec
kernel-desktop.spec    kernel-s390.spec       kernel-u8500.spec
kernel-docs.spec       kernel-source.spec     kernel-vanilla.spec
kernel-docs.spec.in    kernel-source.spec.in  kernel-xen.spec
kernel-ec2.spec        kernel-spec-macros     mkspec
kernel-imx51.spec      kernel-syms.spec
zenitur@linux-athlon64:/4/zenitur/kernel-source/kernel-source>

Я сначала просто создал пакет kernel-source, подумав, что там же уже есть патчи внутри, и следовательно можно создать RPM! Получился файл kernel-source-3.4.rc6-0.src.rpm, но внутри только они spec-файл, для kernel-source. Для kernel-desktop и kernel-default там ничего нет... А как сделать - не знаю (оказалось - запустить файл mkspec), загрузил репозиторий GIT заново.

Запустил rpmbuild -ba kernel-desktop.spec - сразу получил ошибку «не найден файл kernel-module-subpackage в каталоге /home/zenitur/rpmbuild/SOURCES». Сделал символьную ссылку /home/zenitur/rpmbuild/SOURCES на /4/zenitur/kernel-source/kernel-source - и компиляция пошла.

Когда всё скомпилировалось, я получил файлы RPM kernel-desktop-3.4.rc6-0.x86_64.rpm, kernel-desktop-base-3.4.rc6-0.x86_64.rpm, kernel-desktop-devel-3.4.rc6-0.x86_64.rpm. Первый и второй конфликтовали, и я установил только первый - зачем нужен второй? Затем оказалось, что пакет kernel-desktop конфликтует с пакетом xen-kmp-desktop, который должен иметь ту же версию, что и номер ядра. Спрашивается - а его где взять? Пока что удалил. Всё установилось, кроме kernel-desktop-devel-3.4.rc6-0.x86_64.rpm:

# rpm -ivh kernel-desktop-devel-3.4.rc6-0.x86_64.rpm
ошибка: Неудовлетворенные зависимости:
        kernel-devel = 3.4.rc6-0 нужен для kernel-desktop-devel-3.4.rc6-0.x86_64
#

Ну и где взять пакет kernel-devel? Оказалось что в noarch: kernel-devel-3.4.rc6-0.noarch.rpm.

# rpm -Uvh kernel-desktop-devel-3.4.rc6-0.x86_64.rpm ../noarch/kernel-devel-3.4.rc6-0.noarch.rpm
ошибка: Неудовлетворенные зависимости:
        kernel-desktop-devel = 3.1.0-1.2 нужен для (установлен)kernel-syms-3.1.0-1.2.1.x86_64
        kernel-devel = 3.1.0-1.2 нужен для (установлен)kernel-xen-devel-3.1.0-1.2.1.x86_64
        kernel-devel = 3.1.0-1.2 нужен для (установлен)kernel-default-devel-3.1.0-1.2.1.x86_64
        kernel-devel = 3.1.0-1.2.1 нужен для (установлен)kernel-source-3.1.0-1.2.1.noarch
        kernel-devel = 3.1.0-1.2 нужен для (установлен)kernel-syms-3.1.0-1.2.1.x86_64
#

Наверное, kernel-devel - это мета-пакет для всех возможных kernel-xxx-devel. Пробую удалить kernel-devel, чтобы установить kernel-desktop-devel, и вижу это: скриншот. Да и список файлов там большой - а значит это не метапакет.

Как правильно обновлять ядро Linux в дистрибутиве openSUSE?

P.S. Где в openSUSE в YaST кнопка «Просмотр системных журналов» (View System Log)? Не могу найти ни в YaST, ни в списке пакетов для yast2. Дело в том, что новое ядро не работает идеально: при загрузке вываливает предупреждения. Например AppArmor: хоть и успешно загружается (с ванильным ядром - нет), но пишет раз 20 ошибку про какие-то патчи AppArmor 2.4, и в /var/log/messages стали постоянно появляться такие сообщения:

May 13 15:26:00 linux-athlon64 su: pam_apparmor(su:session): Unknown error occurred changing to root hat: Operation not permitted

Я не знаю, в каком файле находился лог загрузки, поэтому спрашиваю, куда пропала утилита просмотра системных журналов.

P.P.S. Обновил всё до конца:

# rpm -Uvh kernel-desktop-devel-3.4.rc6-0.x86_64.rpm ../noarch/kernel-devel-3.4.rc6-0.noarch.rpm kernel-syms-3.4.rc6-0.x86_64.rpm kernel-xen-3.4.rc6-0.x86_64.rpm kernel-xen-devel-3.4.rc6-0.x86_64.rpm kernel-default-3.4.rc6-0.x86_64.rpm kernel-default-devel-3.4.rc6-0.x86_64.rpm ../noarch/kernel-source-3.4.rc6-0.noarch.rpm
Подготовка...     ########################################### [100%]
   1:kernel-devel           ########################################### [ 13%]
Changing symlink /usr/src/linux from linux-3.1.0-1.2 to linux-3.4.0-rc6-0
   2:kernel-desktop-devel   ########################################### [ 25%]
Changing symlink /usr/src/linux-obj/x86_64/desktop from ../../linux-3.1.0-1.2-obj/x86_64/desktop to ../../linux-3.4.0-rc6-0-obj/x86_64/desktop
   3:kernel-xen-devel       ########################################### [ 38%]
Changing symlink /usr/src/linux-obj/x86_64/xen from ../../linux-3.1.0-1.2-obj/x86_64/xen to ../../linux-3.4.0-rc6-0-obj/x86_64/xen
   4:kernel-default-devel   ########################################### [ 50%]
Changing symlink /usr/src/linux-obj/x86_64/default from ../../linux-3.1.0-1.2-obj/x86_64/default to ../../linux-3.4.0-rc6-0-obj/x86_64/default
   5:kernel-syms            ########################################### [ 63%]
   6:kernel-source          ########################################### [ 75%]
   7:kernel-default         ########################################### [ 88%]

Kernel image:   /boot/vmlinuz-3.4.0-rc6-0-default
Initrd image:   /boot/initrd-3.4.0-rc6-0-default
Root device:    /dev/disk/by-id/usb-Kingston_DataTraveler_160_001CC07CEBE1BB81F16D0029-0:0-part1 (/dev/sdb1) (mounted on / as ext2)
Kernel Modules: thermal_sys thermal processor fan pata_atiixp ata_generic usb-common usbcore usb-storage pcmcia_core pcmcia mmc_core ssb ohci-hcd uhci-hcd ehci-hcd usbhid
Features:       acpi block usb resume.userspace resume.kernel
Bootsplash:     openSUSE (1280x1024)
   8:kernel-xen             ########################################### [100%]

Kernel image:   /boot/vmlinuz-3.4.0-rc6-0-xen
Initrd image:   /boot/initrd-3.4.0-rc6-0-xen
Root device:    /dev/disk/by-id/usb-Kingston_DataTraveler_160_001CC07CEBE1BB81F16D0029-0:0-part1 (/dev/sdb1) (mounted on / as ext2)
Kernel Modules: hwmon thermal_sys thermal processor fan pata_atiixp ata_generic xennet cdrom xenblk usb-common usbcore usb-storage pcmcia_core pcmcia mmc_core ssb ohci-hcd uhci-hcd ehci-hcd hid usbhid
Features:       acpi block usb resume.userspace resume.kernel
Bootsplash:     openSUSE (1280x1024)
#

Однако если эти ошибки при загрузке не пропадут, придётся возвращать старое ядро.

А зачем это всё делать, а не спокойно использовать OBS? Сделать «Branch package» для нужных пакетов из Factory (там как раз 3.4-RC6) и собрать для 12.1?

dinn ★★★★★
()
Ответ на: комментарий от ZenitharChampion

Если не хочется регистрироваться целую 1 минуту, то можно и просто взять исходные коды из OBS и собрать самому с rpmbuild или osc.

dinn ★★★★★
()

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

Novell-ch ★★★★★
()

Разве в последних ядрах нельзя просто в конфигах включить поддержку AppArmor? Я это там видел. Легче взять ванильное ядро и на него накладывать сусевские патчи (если надо). Лень настраивать - возьми их конфиг.

make

make modules_install

make install

tyakos ★★★
()
Ответ на: комментарий от ZenitharChampion

Я там не зарегистрирован.

ЛОООЛ. И поэтому ты собираешь ядро самостоятельно? Это типа легче, чем зарегистрироваться?

Nxx ★★★★★
()
Ответ на: комментарий от Nxx

Да какая разница, rpmbuild -ba *.spec или регистрация в OBS? У меня шестиядерник.

ZenitharChampion ★★★★★
() автор топика
Ответ на: комментарий от Novell-ch

для проверки открытых дров я собстевнно и делаю сборку суси с гитовскими дровами, месой и ядром.

Полностью дистр? Или только пакеты?

ekzotech ★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.