zoukankan      html  css  js  c++  java
  • linux更新grub内核启动参数的方法

    #!/bin/bash
    set -x
    set -e
    export PS4=+{$LINENO:${FUNCNAME[0]}}
    trap 'echo "---NEWKERNARGS=$NEWKERNARGS xx=$xx------"' DEBUG
    
    NEWKERNARGS=""
    grubby --info=`/sbin/grubby --default-kernel` 2>/dev/null | grep -q crashkernel
    if [ $? -ne 0 ];then
        NEWKERNARGS="--kernel-args="crashkernel=auto""
    fi
    
    grubby --info=`/sbin/grubby --default-kernel` 2>/dev/null | grep -q "nopti noibrs noibpb"
    if [ $? -ne 0 ];then
        NEWKERNARGS="--kernel-args="crashkernel=auto nopti noibrs noibpb""
    fi
    
    
    /sbin/new-kernel-pkg --package kernel%{?1:-%{1}}  %{!?1:--make-default} --install %{KVERREL}%{?1:.%{1}}
    

    上面的这种做法其实存在3个问题:

    1 缺失一种场景,即是grub的内核入口参数中包含"crashkernel=auto"但不包含"nopti noibrs noibpb", 

    2 转义字符使用过多,不便理解且容易出错,可参照--install将--kernel-args参数选项移出变量的赋值过程,大大简化原有逻辑和复杂度;

    3 NEWKERNARGS参数的赋值其实可以采用字符串加方式,这样可以减少grubby查询次数

    具体做法如下:

    #!/bin/bash
    set -x
    set -e
    export PS4=+{$LINENO:${FUNCNAME[0]}}
    trap 'echo "---NEWKERNARGS=$NEWKERNARGS xx=$xx------"' DEBUG
    
    NEWKERNARGS=""
    grubby --info=`/sbin/grubby --default-kernel` 2>/dev/null | grep -q crashkernel
    if [ $? -ne 0 ];then
        NEWKERNARGS="crashkernel=auto"
    fi
    
    grubby --info=`/sbin/grubby --default-kernel` 2>/dev/null | grep -q "nopti noibrs noibpb"
    if [ $? -ne 0 ];then
        NEWKERNARGS=${NEWKERNARGS}"nopti noibrs noibpb"
    fi
    
    /sbin/new-kernel-pkg --package kernel%{?1:-%{1}}  %{!?1:--make-default} --install %{KVERREL}%{?1:.%{1}} --kernel-args="$NEWKERNARGS"
    

      

      

  • 相关阅读:
    打印机无法访问打印机怎么连
    IDEA 2018 LICENSE SERVER
    idea 项目打包发布
    Oracle的关于小数的使用
    js代码实现购物车效果
    通过shell定时备份数据库
    (二)Linux实操之——网络配置、进程管理、服务管理、组管理、YUM
    (一)Linux实操之——权限、任务调度、磁盘分区
    idea搭建简易ssm项目
    idea右键无法新建Java Class
  • 原文地址:https://www.cnblogs.com/noxy/p/11066018.html
Copyright © 2011-2022 走看看