<?xml version="1.0" encoding="UTF-8" ?>

<bugzilla version="5.2"
          urlbase="https://bugzilla.altlinux.org/"
          
          maintainer="jenya@basealt.ru"
>

    <bug>
          <bug_id>53849</bug_id>
          
          <creation_ts>2025-04-15 13:51:05 +0300</creation_ts>
          <short_desc>remove-old-kernels иногда не предлагает резервные (backup) версии ядер</short_desc>
          <delta_ts>2025-04-16 06:47:05 +0300</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>4</classification_id>
          <classification>Development</classification>
          <product>Sisyphus</product>
          <component>update-kernel</component>
          <version>unstable</version>
          <rep_platform>x86_64</rep_platform>
          <op_sys>Linux</op_sys>
          <bug_status>NEW</bug_status>
          <resolution></resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P5</priority>
          <bug_severity>enhancement</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Сергей Сысоев">sysoevsa</reporter>
          <assigned_to name="Vitaly Chikunov">vt</assigned_to>
          <cc>boyarsh</cc>
    
    <cc>evg</cc>
    
    <cc>lav</cc>
    
    <cc>mike</cc>
    
    <cc>sysoevsa</cc>
    
    <cc>vt</cc>
          
          <qa_contact>qa-sisyphus</qa_contact>

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>262992</commentid>
    <comment_count>0</comment_count>
    <who name="Сергей Сысоев">sysoevsa</who>
    <bug_when>2025-04-15 13:51:05 +0300</bug_when>
    <thetext>Добрый день.

Иногда remove-old-kernels не предлагает оставить ни одной резервной версии ядер. Примеры:
1.
&gt;# remove-old-kernels 
&gt;Currently booted kernel package: kernel-image-un-def-6.1.131-alt1
&gt;Backup kernel is the same as booted kernel (uptime 14 days).
&gt;Keeping this kernel (with the reason why):
&gt;   kernel-image-un-def-6.1.131-alt1.x86_64 (latest for un-def, currently booted)
&gt;
&gt;Will be removing this kernel:
&gt;   kernel-image-un-def-6.1.121-alt1.x86_64
&gt;
&gt;Confirm uninstall action for this kernel [Y/n]? n

2.
&gt;# remove-old-kernels 
&gt;Currently booted kernel package: kernel-image-un-def-6.1.131-alt1
&gt;Warning: Backup kernel is not determined.
&gt;Keeping this kernel (with the reason why):
&gt;   kernel-image-un-def-6.1.131-alt1.x86_64 (latest for un-def, currently booted)
&gt;
&gt;Will be removing these 4 kernels:
&gt;   kernel-image-un-def-6.1.79-alt1.x86_64
&gt;   kernel-image-un-def-6.1.99-alt1.x86_64
&gt;   kernel-image-un-def-6.1.112-alt1.x86_64
&gt;   kernel-image-un-def-6.1.121-alt1.x86_64
&gt;
&gt;Confirm uninstall action for these 4 kernels [Y/n]? 

Было бы лучше, что если не удается вычислить бекапное ядро (Warning: Backup kernel is not determined), то оставлялось бы просто предпоследнее, не загруженное.

Для удаления всех ядер, если кому надо, всегда есть ключик:
-B, --no-backup   Disable logic which keeps backup kernel (i.e. remove it too).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>262993</commentid>
    <comment_count>1</comment_count>
    <who name="Сергей Сысоев">sysoevsa</who>
    <bug_when>2025-04-15 13:52:26 +0300</bug_when>
    <thetext>Или если вычисляется, что версия backup==booted, то также лучше оставлять предпоследнее, не загруженное.

(Backup kernel is the same as booted kernel (uptime 14 days).)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>263023</commentid>
    <comment_count>2</comment_count>
    <who name="Vitaly Chikunov">vt</who>
    <bug_when>2025-04-15 17:20:11 +0300</bug_when>
    <thetext>Дело в том что &quot;предпоследние&quot; ядра -- не резервные. Резервное ядро - которое было успешно загружено и up в течении суток и более.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>263065</commentid>
    <comment_count>3</comment_count>
    <who name="Сергей Сысоев">sysoevsa</who>
    <bug_when>2025-04-16 06:47:05 +0300</bug_when>
    <thetext>Виталий, выскажу свои мысли.

По первому примеру:

&gt;# last -a reboot
&gt;reboot   system boot  Tue Apr  1 13:29 - 08:19 (14+18:49)   6.1.131-un-def-alt1
&gt;reboot   system boot  Tue Apr  1 13:24 - 13:29  (00:04)     6.1.121-un-def-alt1
&gt;reboot   system boot  Tue Feb  4 12:12 - 13:22 (56+01:10)   6.1.121-un-def-alt1
&gt;reboot   system boot  Mon Jan 27 14:25 - 12:11 (7+21:46)    6.1.121-un-def-alt1
&gt;reboot   system boot  Tue Jan 21 13:39 - 14:25 (6+00:46)    6.1.121-un-def-alt1

Но в good_kernel попадает текущее ядро, так как у него больше 1 дня аптайм:
&gt;# good_kernel=$(LC_ALL=C last -a reboot | awk &apos;$ 10 ~ /+/ {print $10,$11; exit }&apos;)
&gt;# echo $good_kernel
&gt;(&gt;14+18:51) 6.1.131-un-def-alt1

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


По второму примеру в логах вообще только одно ядро, так как на сервере включен расширенный аудит, и логи забиваются этим аудитом (вычищая записи с reboot), хотя по аптайму ядер там примерно также как с предыдущим примером:
&gt;# last -a reboot
&gt;reboot   system boot  Tue Apr 15 09:03 - 08:19  (23:16)     6.1.131-un-def-alt1

И тогда remove-old-kernels не предлагает вообще ни одного запасного ядра.

Понятно, что лучший вариант, оставлять ядро, у которого аптайм &gt;1 дня, но в случае, если таких не нашлось, как запасной вариант оставлять хотя бы предпоследнее.

Лучше иметь хоть одно запасное ядро, чем вообще не иметь никаких.</thetext>
  </long_desc>
      
      

    </bug>

</bugzilla>