#!/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"

  

  

linux更新grub内核启动参数的方法的更多相关文章

  1. linux内核启动参数

    Linux内核启动参数   Console Options                         参数 说明 选项 内核配置/文件   console=Options 用于说明输出设备 tt ...

  2. Linux移植之内核启动过程start_kernel函数简析

    在Linux移植之内核启动过程引导阶段分析中从arch/arm/kernel/head.S开始分析,最后分析到课start_kernel这个C函数,下面就简单分析下这个函数,因为涉及到Linux的内容 ...

  3. Kali Linux更新后无法启动解决了

    Kali Linux更新后无法启动解决了   1月3日,Kali Linux从上游Debian引入systemd组件的升级版本240-2.一旦更新该版本,就可能造成系统无法启动,直接进入(initra ...

  4. 阿里云(四)Linux 实例常用内核网络参数介绍与常见问题处理

    Linux 实例常用内核网络参数介绍与常见问题处理 https://help.aliyun.com/knowledge_detail/41334.html

  5. linux内核启动参数解析及添加

    1.环境: ubuntu16.04 Linux jello 4.4.0-89-generic #112-Ubuntu SMP Mon Jul 31 19:38:41 UTC 2017 x86_64 x ...

  6. linux系统设置服务开机启动3种方法,Linux开机启动程序详解

    linux系统设置服务开机启动 方法1:.利用ntsysv伪图形进行设置,利用root登陆 终端命令下输入ntsysv 回车:如下图     方法2:利用命令行chkconfig命令进行设置 简要说明 ...

  7. Linux 实例常用内核网络参数介绍与常见问题处理

    本文总结了常见的 Linux 内核参数及相关问题.修改内核参数前,您需要: 从实际需要出发,最好有相关数据的支撑,不建议随意调整内核参数. 了解参数的具体作用,且注意同类型或版本环境的内核参数可能有所 ...

  8. Linux实例常用内核网络参数介绍与常见问题处理---重要

    文章转载自:https://help.aliyun.com/knowledge_detail/41334.html 本文主要介绍如下几点内容,您可以根据实际需要选择. 查看和修改Linux实例内核参数 ...

  9. u-boot 内核 启动参数

    kernel如何得到uboot启动信息: http://blog.sina.com.cn/s/blog_89d9bec60101bzen.html u-boot向linux内核传递启动参数: http ...

随机推荐

  1. upc组队赛12 Janitor Troubles【求最大四边形面积】

    Janitor Troubles Problem Description While working a night shift at the university as a janitor, you ...

  2. Cocos2d-x之Director

    |   版权声明:本文为博主原创文章,未经博主允许不得转载. Director类简介 在Cocos2d-x-3.x引擎中,采用节点树形结构来管理游戏对象,一个游戏可以划分为不同的场景,一个场景又可以分 ...

  3. 第一周复习二 (CSS样式表及其属性)

    样式表三种写法 1内联写法:style直接写在标签内.个人感觉多用于个别标签,一般情况优先级较高 style="font-size:16px;" 2内嵌写法:写在<head& ...

  4. bitmat

    Time Limit: 10 Sec  Memory Limit: 512 MBSubmit: 1138  Solved: 556[Submit][Status][Discuss] Descripti ...

  5. SpringMVC(IntelliJ IDEA)(详细操作)

    1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15.

  6. App加载主要流程

    主要流程 Application OnCreate 加载第三方的sdk 加载自身的逻辑 发送远程数据请求 xxx.json 渲染界面 List

  7. Spyder中的一些快捷键

    熟练spyder中的一些快捷键后,能极大提升code效率. 这里列出常用的快捷键.(注:在spyder导航栏Tools-Preferences-Keyboard shortcut中有所有的快捷键) T ...

  8. Linux系统关闭对ping命令做响应。

    1.测试 ping 192.168.10.5 可以正常ping通, 2,修改 /proc/sys/net/ipv4/icmp_echo_ignore_all  文件的值=1 3.在测试 已经ping不 ...

  9. webpack devServer配置项的坑

    本文所用webpack版本为4+,阅读本章的同学请注意区分. webpack默认不需要配置文件 但是你仍可在项目的node_module目录同级目录建立一个webpack.config.js文件进行配 ...

  10. Nginx---配置详解(转发)

    转载于  http://baijiahao.baidu.com/s?id=1604485941272024493&wfr=spider&for=pc 1.概述 Nginx配置文件的整体 ...