Как лучше делать обновления собранного ядра?

Аватар пользователя Meloman

Не успел поставить kernel, как уже на сайте есть новая версия. Поэтому вопрос: Как лучше обновлять? - Заного скачивать 40М или "тянуть" патч?

Аватар пользователя Tigro

Re: Как лучше делать обновления собранного ядра?

Конечно патч, но тут вот какая штука. Допустим у вас Сейчас ядро 2.6.17.4, надо из него сделать 2.6.17.6

Вам нужен патч для 2.6.17.4 (его надо убрать) и патчи для 2.6.17.6.

Дальше если у вас каталог linux-2.6.17.4 то на него надо создать ссылку

ln -s linux-2.6.17.4 a
ln -s linux-2.6.17.4 b

Обычно так, можно еще взглянуть в патч в строки с "---" и "+++" какое там название каталога. Дальше сказать:

bzcat patch-2.6.17.4.bz2 | patch -p0 -R
и наконец
bzcat patch-2.6.17.6.bz2 | patch -p0

После этого можно приступать к сборке ядра.

Аватар пользователя Meloman

Re: Как лучше делать обновления собранного ядра?

Гуглю, никак не могу найти ответ на вопрос: Зачем делать так:

Цитата:
Дальше если у вас каталог linux-2.6.17.4 то на него надо создать ссылку
ln -s linux-2.6.17.4 a
ln -s linux-2.6.17.4 b
Обычно так, можно еще взглянуть в патч в строки с "---" и "+++" какое там название каталога. Дальше сказать:
....

Почему создавать ссылку, а не сразу говорить patch ? И почему `bzcat patch....`?
И, насчет версии: я собрал/назвал так: 2.6.17.5-meloman - для него patch сам поменяет на 2.6.17.6-meloman или нужно будет ручками править?
(извините за, возможно, глупые вопросы- я возле совего компьютера буду только вечером)

Аватар пользователя Tigro

Re: Как лучше делать обновления собранного ядра?

Понеслось:

1. Смотрим в patch-2.6.17.6.bz2 там видим:

diff --git a/Makefile b/Makefile
index 1700d3f..5c568d3 100644
--- a/Makefile
+++ b/Makefile

Следовательно каталог называется не linux-2.6.17.6 и не, допустим linux-2.6.17.6.orig, а a и b. Если не сделаете ссылки, то патч просто не найдет, что патчить (если у вас не rpm конечно). Почему не одну ссылку, а две надо создавать, не буду пояснять....

2. Почему bzcat, потому что патч в архиве записан, если его сперва распаковать, то просто cat.

3. По поводу названия, возможно при патчи на этом месте будет как раз fail. Потом подправите это место руками, а лучше перед патчем обратно верните к 2.6.17.5.
3.

Аватар пользователя Meloman

Re: Как лучше делать обновления собранного ядра?

Цитата:
Tigro пишет:
Понеслось:
....

Спасибо! И еще один вопрос: Верно ли, что после патча нужно говорить `make oldconfig` или заного `make menuconfig` ? - боюсь, я не все настройки запомнил, когда собирал в 1й раз.

Аватар пользователя sergeil

Re: Как лучше делать обновления собранного ядра?

Цитата:
Skala пишет:

Цитата:
Tigro пишет:
Понеслось:
....

Спасибо! И еще один вопрос: Верно ли, что после патча нужно говорить `make oldconfig` или заного `make menuconfig` ? - боюсь, я не все настройки запомнил, когда собирал в 1й раз.

IMHO, сначала
make oldconfig

А потом, если есть желание проверить, донастроить, то
make menuconfig

Аватар пользователя Meloman

Re: Как лучше делать обновления собранного ядра?

Пока не получается сделать 1й шаг.
Что сделал: скопировал файл patch-2.6.17.6.bz2 в /usr/src/kernels/linux-2.6.17.5-meloman . Потом распаковал: bzip2 -d. Далее: делаю ссылки a и b : [meloman@meloman kernels]$ ln -s linux-2.6.17.5-meloman a([i]b[/b]). Следующий шаг patch -p0 - ничего не происходит. Единственное, что есть- прервать по Ctrl+C. Если сделать как в статье

Цитата:
[meloman@meloman linux-2.6.17.5-meloman]$ patch -p0 -i patch-2.6.17.6
can't find file to patch at input line 5
Perhaps you used the wrong -p or --strip option?
The text leading up to this was:
--------------------------
|diff --git a/Makefile b/Makefile
|index 1700d3f..5c568d3 100644
|--- a/Makefile
|+++ b/Makefile
--------------------------
File to patch:

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

Аватар пользователя Tigro

Re: Как лучше делать обновления собранного ядра?

Не в каталог с ядром, а на уровень выше патч надо класть. И никакого makeoldconfig говорить не надо, достаточно потом запустить make menuconfig (или даже вообще не пускать).

Аватар пользователя Meloman

Re: Как лучше делать обновления собранного ядра?

Вот записи бортового журнала

Цитата:
[meloman@meloman kernels]$ patch -p0 -i patch-2.6.17.6
patching file a/Makefile
Hunk #1 FAILED at 1.
1 out of 1 hunk FAILED -- saving rejects to file a/Makefile.rej
patching file a/arch/sparc/mm/iommu.c
Reversed (or previously applied) patch detected! Assume -R? [n] - Ctrl+C ибо не уверен был...[/i]

[meloman@meloman kernels]$ patch -p0 -i patch-2.6.17.6
patching file a/Makefile
Hunk #1 FAILED at 1.
1 out of 1 hunk FAILED -- saving rejects to file a/Makefile.rej
patching file a/arch/sparc/mm/iommu.c
Reversed (or previously applied) patch detected! Assume -R? [n]
[meloman@meloman kernels]$ patch -p0 -i patch-2.6.17.6 -R
patching file a/Makefile
Hunk #1 FAILED at 1.
1 out of 1 hunk FAILED -- saving rejects to file a/Makefile.rej
patching file a/arch/sparc/mm/iommu.c
patching file a/arch/um/kernel/time_kern.c
patching file a/drivers/ide/ide-io.c
patching file a/drivers/ieee1394/ohci1394.c
patching file a/drivers/input/input.c
patching file a/drivers/net/wireless/bcm43xx/bcm43xx_main.c
patching file a/drivers/parport/Kconfig
patching file a/drivers/scsi/libata-core.c
patching file a/drivers/usb/serial/whiteheat.c
patching file a/fs/ntfs/file.c
patching file a/fs/proc/base.c
Unreversed patch detected! Ignore -R? [n]
Apply anyway? [n]
Skipping patch.
2 out of 2 hunks ignored -- saving rejects to file a/fs/proc/base.c.rej
patching file a/include/asm-i386/alternative.h
patching file a/include/linux/libata.h
patching file a/include/linux/pfkeyv2.h
patching file a/include/net/sctp/structs.h
patching file a/kernel/exit.c
patching file a/kernel/sys.c
patching file a/lib/idr.c
patching file a/net/core/ethtool.c
patching file a/net/ipv4/netfilter/ip_conntrack_proto_sctp.c
patching file a/net/ipv6/addrconf.c
patching file a/net/netfilter/nf_conntrack_proto_sctp.c
patching file a/net/netfilter/xt_sctp.c
patching file a/net/sctp/input.c
patching file a/net/sctp/ipv6.c
patching file a/net/sctp/outqueue.c
patching file a/net/sctp/protocol.c
patching file a/net/sctp/sm_statefuns.c
patching file a/net/sctp/socket.c
patching file a/net/sctp/ulpevent.c
patching file a/usr/Makefile

Это говорит об ошибках? Запустил еще раз

Цитата:
[meloman@meloman kernels]$ patch -p0 -i patch-2.6.17.6
patching file a/Makefile
Hunk #1 FAILED at 1.
1 out of 1 hunk FAILED -- saving rejects to file a/Makefile.rej
patching file a/arch/sparc/mm/iommu.c
patching file a/arch/um/kernel/time_kern.c
patching file a/drivers/ide/ide-io.c
patching file a/drivers/ieee1394/ohci1394.c
patching file a/drivers/input/input.c
patching file a/drivers/net/wireless/bcm43xx/bcm43xx_main.c
patching file a/drivers/parport/Kconfig
patching file a/drivers/scsi/libata-core.c
patching file a/drivers/usb/serial/whiteheat.c
patching file a/fs/ntfs/file.c
patching file a/fs/proc/base.c
Hunk #1 succeeded at 1406 with fuzz 2 (offset 1 line).
patching file a/include/asm-i386/alternative.h
patching file a/include/linux/libata.h
patching file a/include/linux/pfkeyv2.h
patching file a/include/net/sctp/structs.h
patching file a/kernel/exit.c
patching file a/kernel/sys.c
patching file a/lib/idr.c
patching file a/net/core/ethtool.c
patching file a/net/ipv4/netfilter/ip_conntrack_proto_sctp.c
patching file a/net/ipv6/addrconf.c
patching file a/net/netfilter/nf_conntrack_proto_sctp.c
patching file a/net/netfilter/xt_sctp.c
patching file a/net/sctp/input.c
patching file a/net/sctp/ipv6.c
patching file a/net/sctp/outqueue.c
patching file a/net/sctp/protocol.c
patching file a/net/sctp/sm_statefuns.c
patching file a/net/sctp/socket.c
patching file a/net/sctp/ulpevent.c
patching file a/usr/Makefile

Это нормально или где-то ошибка? - Я глянул Makefile - там без изменений:
VERSION = 2
PATCHLEVEL = 6
SUBLEVEL = 17
EXTRAVERSION = .5
NAME=Crazed Snow-Weasel

Аватар пользователя sergeil

Re: Как лучше делать обновления собранного ядра?

Skala писал(а):
[meloman@meloman kernels]$ patch -p0 -i patch-2.6.17.6
patching file a/Makefile
Hunk #1 FAILED at 1.
1 out of 1 hunk FAILED -- saving rejects to file a/Makefile.rej
patching file a/arch/sparc/mm/iommu.c
Reversed (or previously applied) patch detected! Assume -R? [n] - Ctrl+C ибо не уверен был...[/i]

[meloman@meloman kernels]$ patch -p0 -i patch-2.6.17.6
patching file a/Makefile
Hunk #1 FAILED at 1.
1 out of 1 hunk FAILED -- saving rejects to file a/Makefile.rej

Пересохрани .config
Это самое ценное. Все остальное дерево ядра удали и установи по-новой... Потом подложи .config туда, где он должен быть... Восстанавливай дерево, а я пока опишу что делать дальше... Только скажи какая у тебя версия главного архива. Тот, который ~40МБ. У тебя релиз linux-2.6.17.tar.bz2 или уже патченая версия, что-то типа linux-2.6.17.?.tar.bz2

Аватар пользователя sergeil

Re: Как лучше делать обновления собранного ядра?

sergeil писал(а):
linux-2.6.17.?.tar.bz2

Будем думать, что ядро патченное, то есть 2.6.17.4
Итого, дерево
[sergeil@homedesk ~]$ ll /usr/src/

итого 40
drwxr-xr-x 7 root root 4096 Янв 4 2005 asplinux
drwxr-xr-x 3 root root 4096 Июл 14 21:00 kernels
lrwxrwxrwx 1 root root 9 Фев 11 22:32 linux -> linux-2.6
lrwxrwxrwx 1 root root 14 Июл 16 13:36 linux-2.6 -> linux-2.6.17.6
drwxr-xr-x 20 root root 4096 Июл 16 22:42 linux-2.6.17.6

У Вас будет, IMHO

итого 40
drwxr-xr-x 7 root root 4096 Янв 4 2005 asplinux
drwxr-xr-x 3 root root 4096 Июл 14 21:00 kernels
lrwxrwxrwx 1 root root 9 Фев 11 22:32 linux -> linux-2.6
lrwxrwxrwx 1 root root 14 Июл 16 13:36 linux-2.6 -> linux-2.6.17.4
drwxr-xr-x 20 root root 4096 Июл 16 22:42 linux-2.6.17.4

OK, можно сделать так, как предложил Tigro, но раз Вы не справились сделаем по-другому...
Скопируем оба патча (один для реверса, а второй для установки прямо в дерево ядра), то есть в /usr/src/linux. Мы помним, что /usr/src/linux - это мягкая ссылка на Вашу директорию ядра /usr/src/linux-2.6.17.4 А можно просто скопировать патчи в /usr/src/linux-2.6.17.4, что одно и тоже...
Зайдем в это дерево и распакуем патчи.
[root# /] cd /usr/src/linux
[root# /usr/src/linux] bunzip2 patch-2.6.17.6.bz2
[root# /usr/src/linux] bunzip2 patch-2.6.17.4.bz2

Теперь нам их нужно наложить реверсный патчь и восстановить ядро до релиза linux-2.6.17
[root# /usr/src/linux] patch -R -p1 < patch-2.6.17.4
Смотрим, что нет никаких ругательств...

А потом прямой
[root# /usr/src/linux] patch -p1 < patch-2.6.17.6
Смотрим, что нет никаких ругательств...

Если все прошло гладно, то мы справились хорошо... Обратите внимание... Параметр patch -p1 как-бы отбрасывает самый верхний путь в дереве ядра. По этой причине Вы должны находится в /usr/src/linux, а не снаружы, в /usr/src. Но зато получается так, как Вам проще. То есть, патчь - в дереве ядра...
Улыбка

Аватар пользователя Tigro

Re: Как лучше делать обновления собранного ядра?

Короче говоря, как показывает проще скачать 40 М, а потом за кружечкой пивка сделать как мы тут делали и сразу почувствовать себя кульным админо Улыбка

В Makefile у вас без изменений, так как он как раз и не пропатчился... А так вроде бы все ок!

Аватар пользователя Meloman

Re: Как лучше делать обновления собранного ядра?

Цитата:
sergeil пишет:
Пересохрани .config
Это самое ценное. Все остальное дерево ядра удали и установи по-новой... Потом подложи .config туда, где он должен быть... Восстанавливай дерево, а я пока опишу что делать дальше... Только скажи какая у тебя версия главного архива. Тот, который ~40МБ. У тебя релиз linux-2.6.17.tar.bz2 или уже патченая версия, что-то типа linux-2.6.17.?.tar.bz2

Версия linux-2.6.17.5.tar.bz2.
Конфиг сохранил, каталог с исходниками удалил, потом распаковал в этот же каталог, с таким же именем (linux-2.6.17.5-meloman).

Аватар пользователя Meloman

Re: Как лучше делать обновления собранного ядра?

Цитата:
sergeil пишет:
Скопируем оба патча (один для реверса, а второй для установки прямо в дерево ядра),

В чем отличия этих двух видов патчей: для реверса и обычный?

Аватар пользователя sergeil

Re: Как лучше делать обновления собранного ядра?

Skala писал(а):
В чем отличия этих двух видов патчей: для реверса и обычный?

Нет двух видов. Один и тот-же патчь используется как для добавления, так и для вычитания... То есть, эта операция полностью обратимая...

Версия фиксенного ядра linux-2.6.17.4 = релиз (linux-2.6.17) + патчь(фикс) patch-2.6.17.4
[root /usr/src/linux]# patch -p1 < patch-2.6.17.4

Восстановление релиза (linux-2.6.17) = Версия фиксенного ядра версии linux-2.6.17.4 - патч(фикс) patch-2.6.17.4
[root /usr/src/linux]# patch -R -p1 < patch-2.6.17.4

Параметр -R указывает на вычитание (реверсивное наложение).

Аватар пользователя Meloman

Re: Как лучше делать обновления собранного ядра?

Цитата:
sergeil пишет:
Нет двух видов. Один и тот-же патчь используется как для добавления, так и для вычитания...

Признаться, я этого не знал(про откат патчей и про -R) Простите меня Сейчас ядро собирается, всем большое спасибо!

Аватар пользователя Ewgen72

Re: Как лучше делать обновления собранного ядра?

Прочитал я все это. И возник вопрос вот здесь http://linux4u.jinr.ru/docs/add04/kernel-2.6-install-2.0.html рекомендуют последовательно ставить все патчи и где-то ещё я встречал такую-же рекомендацию а здесь прямо противоположное мнение. Кому верить?

Аватар пользователя sergeil

Re: Как лучше делать обновления собранного ядра?

Цитата:
Ewgen72 пишет:
Кому верить?

Хм... Очень любопытный вопрос..
Понимаете, уважаемый..., мы технари, а не священнослужители. И мы не претендуем на веру или неверие. Это в другой плоскости. Мы решает техничнеские вопросы... И Вы сами должны для себя определить, следует ли Вам нашей помощью или советом пользоваться.

Помощь и советы отдаются "AS IS". Дающий советы не несет никакой ответственности за любые последствия, которые могут возникнуть вследствии того, что советом воспользовались или не воспользовались... Если Вы пользуетесь этими советами или помощью, то вы пользуетесь ими исключительно на свой страх и риск.

PS: То, что советуется здесь, не противоречит HOWTO, ссылку на который Вы указали...

Аватар пользователя Ewgen72

Re: Как лучше делать обновления собранного ядра?

я пробовал так и так. получается в любом случае. странно это....

Аватар пользователя sergeil

Re: Как лучше делать обновления собранного ядра?

Цитата:
Ewgen72 пишет:
я пробовал так и так. получается в любом случае. странно это....

Это не взаимоисключение, а взаимодополнение...
Одну и ту же задачу можно решить несколькими путями...
Иногда результаты невозможно отличить, хотя они разные... немножко...
Катается от смеха

RSS-материал