如何从 grub.conf 捕获最新的内核版本

如何从 grub.conf 捕获最新的内核版本

如何捕获最新的内核版本grub.conf(如果默认=0)?

例如文件中的最新内核是2.6.18-409.el5

 #          all kernel and initrd paths are relative to /boot/, eg.
 #          root (hd0,0)
 #          kernel /vmlinuz-version ro root=/dev/rootvg/slash
 #          initrd /initrd-version.img

#boot=/dev/cciss/c0d0
default=0
timeout=5
#splashimage=(hd0,0)/grub/splash.xpm.gz
#hiddenmenu
title Red Hat Enterprise Linux Server (2.6.18-409.el5)
    root (hd0,0)
    kernel /vmlinuz-2.6.18-409.el5 ro root=/dev/rootvg/slash
    initrd /initrd-2.6.18-409.el5.img

我试过这个:

  grep kernel /etc/grub.conf | grep -v "#" |sed s'/-/ /' | head -1 | awk '{print $3}'
  2.6.18-409.el5

但我觉得这种方法不可靠并且不能处理某些情况。

仅从“grub.conf”获取最新内核的正确方法是什么?

答案1

该方法特定于 grub 版本,请注意,对于 grub 2+,thenkernel已替换为linux,因此该方法考虑了这一点

awk '/\/vmlinuz{kernel[$2]}
     END{
     asorti(kernel);
     latest=kernel[length(kernel)];
     print "Latest kernel : ",gensub(/\/vmlinuz-([[:digit:].-]*[[:digit:]]).*$/,"\\1","1",latest)}
    ' /boot/grub/grub.cfg

样本输出

Latest kernel :  3.13.0-86

笔记:需要[ gnu-awk ]

答案2

grep title /etc/grub.conf  | awk '{print $7}' |  tr -d "()"

相关内容