Автор Тема: Содержимое /usr/src  (Прочитано 409 раз)

Оффлайн woolStone

  • Начинающий
  • *
  • Сообщений: 9
Содержимое /usr/src
« : 14.05.2023 11:57:22 »
Добрый день, коллеги. Не нашел на форуме ответа на свой вопрос. Возможно плохо искал.

Предыстория:

1) Текущая версия ядра в системе, к примеру, 5.15.104-un-def-alt1.
    Соответственно в /usr/src имеется каталог с исходниками /usr/src/linux-5.15.104-un-def-alt1.
2) Обновляем ядро через update-kernel до 6.1.26-un-def-alt1.
    В /usr/src появляется   /usr/src/linux-6.1.26-un-def-alt1, а  /usr/src/linux-5.15.104-un-def-alt1 удаляется.
3) Откатываемся обратно на предыдущее ядро: update-kernel -t un-def -r 5.15.104-un-def-alt1 -f.
    Ядро установилось. Все работает корректно.
    Однако в  /usr/src остался  /usr/src/linux-6.1.26-un-def-alt1.

Собственно вопрос: как вернуть  /usr/src/linux-5.15.104-un-def-alt1 ?
И вообще, в какой момент и результате чего появляется /usr/src/linux-... для конкретного ядра ?

« Последнее редактирование: 14.05.2023 12:20:37 от woolStone »

Оффлайн ruslandh

  • Поспешай не торопясь !
  • Модератор глобальный
  • *****
  • Сообщений: 32 246
  • Учиться .... Телепатами не рождаются, ими ....
    • Email
Re: Содержимое /usr/src
« Ответ #1 : 14.05.2023 12:04:27 »
Так вы ядро обновили, а в /usr/src лежит не ядро, а headers, входящие в kernel-headers и т.п.

Оффлайн woolStone

  • Начинающий
  • *
  • Сообщений: 9
Re: Содержимое /usr/src
« Ответ #2 : 14.05.2023 12:13:07 »
kernel-headers и kernel-sources я переустановил для версии 5.15..., но это не помогло.

Оффлайн stranger573

  • Мастер
  • ***
  • Сообщений: 1 434
    • Email
Re: Содержимое /usr/src
« Ответ #3 : 14.05.2023 15:23:35 »
Собственно вопрос: как вернуть  /usr/src/linux-5.15.104-un-def-alt1 ?
А зачем вам это? Сами же сказали, что всё работает корректно. Заголовочные файлы, как правило, требуются только для компиляции чего-либо из исходников, но не для работы скомпилированного. У меня, например, в /usr/src пусто.

И вообще, в какой момент и результате чего появляется /usr/src/linux-... для конкретного ядра ?
Точно не скажу, но если логически подумать, при установке нового ядра собирается его образ, возможно для этого и заголовки подгружаются. Если файл установлен из пакета, командой:
$ rpm -qf полный-путь/имя-файла
можно посмотреть из какого он пакета.
Когда вы переходите на старое ядро (если, конечно, его не удалили), его образ уже собран ранее и заголовки не требуются. Собственно, вопрос скорее: почему то, что туда установило файлы за собой не прибралось.
« Последнее редактирование: 14.05.2023 15:30:13 от stranger573 »

Оффлайн woolStone

  • Начинающий
  • *
  • Сообщений: 9
Re: Содержимое /usr/src
« Ответ #4 : 14.05.2023 15:38:21 »
Мне это нужно для сборки самописного модуля ядра.
Пока я не откатил ядро, модуль собирался нормально.
Статьи в Alt Wiki про сборку модулей читал, но конкретно мой случай там не освещен (откуда берется /usr/src/linux-....),
указано отлько, что он уже есть. Собирать модуль через gears или hasher  в моем случае будет слишком.
Вообще со сборкой модулей ни в Дебиане, ни в Альте проблем у меня никогда не было. До сегодняшнего дня.

Оффлайн stranger573

  • Мастер
  • ***
  • Сообщений: 1 434
    • Email
Re: Содержимое /usr/src
« Ответ #5 : 14.05.2023 15:56:04 »
Ну, так вы скорее всего kernel-headers сами и установили. Если вам это нужно для конкретного ядра, найти этот пакет можно в архивах репозитория. В текущем репозитории этот пакет скорее всего только для нового ядра.
Для старого ядра вы модуль уже собирали? Если старое ядро не удаляли, собранный модуль для старого ядра сохранился (посмотрите в /lib/modules) и собирать его при откате на старое ядро не надо (он уже есть).
Кстати, kernel-headers в /usr/src из пакета не устанавливается, он ставится в /usr/include. В /usr/src у вас файлы из других пакетов или остатки от последней сборки модуля.
« Последнее редактирование: 14.05.2023 16:36:32 от stranger573 »

Оффлайн woolStone

  • Начинающий
  • *
  • Сообщений: 9
Re: Содержимое /usr/src
« Ответ #6 : 14.05.2023 16:46:33 »
Модуль в разработке, его нужно периодически пересобирать.
Теперь оказалось, что я не могу установить обратно kernel-headers от 5.15, эта версия не доступна через apt.
Где-то в apt версия ядра заблокирована на 6.1.28.
Как вернуть обратно 5.15?
Получается при повышении версии ядра update-kernel производит какие-то необратимые действия в системе,
которые нельзя обратить с помощью самой же update-kernel?

Оффлайн stranger573

  • Мастер
  • ***
  • Сообщений: 1 434
    • Email
Re: Содержимое /usr/src
« Ответ #7 : 14.05.2023 16:54:44 »
Это не apt делает. Просто старых ядер и сопутствующих для них пакетов уже нет в репозитории, там только ядро последней версии. И apt-у просто неоткуда их взять. Вам надо брать все необходимые пакеты из архивных срезов репозитория, устанавливать их вручную и собирать свой модуль, если уж непременно его пересобрать хотите.
« Последнее редактирование: 14.05.2023 16:56:33 от stranger573 »

Оффлайн woolStone

  • Начинающий
  • *
  • Сообщений: 9
Re: Содержимое /usr/src
« Ответ #8 : 14.05.2023 17:08:36 »
Теперь понятно. Спасибо за ответы. Поробую снова перейти на 6.1.
Просто у меня с ним графика падала и машина зависала, а разбираться было некогда.

Оффлайн woolStone

  • Начинающий
  • *
  • Сообщений: 9
Re: Содержимое /usr/src
« Ответ #9 : 14.05.2023 17:32:36 »
Да, не все так просто. Перешел обратно на 6.1 с помощью update-kernel.
Система работает нормально.
Однако ни /usr/src/linux-6.1.28-...   ни ссылка на него /lib/modules/6.1.28-un-def-alt1/build так и не появились.
В какой момент это все настраевается?

Оффлайн stranger573

  • Мастер
  • ***
  • Сообщений: 1 434
    • Email
Re: Содержимое /usr/src
« Ответ #10 : 14.05.2023 17:48:32 »
Ну, build скорее всего появляется при сборке.
А /usr/src/linux-6.1.28-... — посмотрите из какого (каких) пакетов файлы.

Оффлайн woolStone

  • Начинающий
  • *
  • Сообщений: 9
Re: Содержимое /usr/src
« Ответ #11 : 14.05.2023 17:56:40 »
/usr/src/linux-6.1.28-.. принадлежали kernel-headers от 6.1 (rpm -qf) и вместе с ними удалились.
Однако после повторной установки kernel-headers от 6.1 /usr/src/linux-6.1.28-.. не появился.
В дебиане как-то все проще, установил kernel-headers и kernel-source нужнй версии и все работает.
В альте все сложнее.

Оффлайн stranger573

  • Мастер
  • ***
  • Сообщений: 1 434
    • Email
Re: Содержимое /usr/src
« Ответ #12 : 14.05.2023 18:02:32 »
Как уже писал kernel-headers в /usr/src не устанавливается. Если файлы из него там появляются, значит копируются тоже при сборке.
Куда устанавливаются файлы из пакета rpm можно посмотреть с помощью:
$ rpm -ql имя-пакета

Так а в альте как вы свой модуль собирали? Тоже устанавливали kernel-headers и kernel-source? Сейчас они у вас установлены? Так попробуйте свой модуль собрать.
« Последнее редактирование: 14.05.2023 18:25:40 от stranger573 »

Оффлайн woolStone

  • Начинающий
  • *
  • Сообщений: 9
Re: Содержимое /usr/src
« Ответ #13 : 14.05.2023 18:43:27 »
Установил в самом начале kernel-headers, далее только обновлял несколько раз ядро на следующую версию.
Ссылка в /lib/modules обновлялась при обновлении ядра.
Модуль собираю простым способом, через: make -C /lib/modules/`uname -r`/build  M=$PWD.

Оффлайн stranger573

  • Мастер
  • ***
  • Сообщений: 1 434
    • Email
Re: Содержимое /usr/src
« Ответ #14 : 14.05.2023 18:59:05 »
А kernel-source не нужно?
При обновлении ядра с помощью update-kernel не только собственно обновление происходит, там собирается загрузочный образ ядра, к нему пришиваются модули, всё это пакуется, устанавливается, перегенерируется grub. Перед этими процессами ваш модуль уже должен быть собран и добавлен/установлен. Где-то при сборке модуля или загрузочного образа очевидно файлы копируются в /usr/src и создаётся ссылка в /lib/modules.
Сейчас у вас хидеры, исходники, прочие файлы для версии текущего ядра установлены? Модуль собирается? Когда соберёте, как вы этот модуль раньше устанавливали? Повторите всё как раньше (как в первый раз делали). Наверное надо ещё этот модуль установить и перегенерировать загрузочный образ ядра и grub. Ну и перезагрузиться, естественно. Откатом на предыдущее ядро и прочими манипуляциями вы вероятно сбили очерёдность операций. Потому следует повторить всё как делали первоначально, когда собрали свой модуль.
« Последнее редактирование: 14.05.2023 19:31:04 от stranger573 »