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+의 경우 로 kernel대체되었으므로 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

노트:필요[그누-awk]

답변2

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

관련 정보