更改linux默认启动内核版本,修改 GRUB 设置

简介

在本文中,我们将讨论如何在 GRUB 引导加载器中更改默认启动的 Linux 内核版本。这对于在多个内核版本间切换非常有用。已在Ubuntu上验证可用。告别直接修改/boot/grub/grub.cfg的土办法。

查看目前linux上面的内核版本

# 方法一
ls /boot/vmlinuz-*

# 方法二:
cat /boot/grub/grub.cfg | grep menuentry

# 查看目前使用的内核版本
uname -r

以:Linux 5.15.0-86-generic切换到 Linux 5.11.0-40-generic为例子。

步骤概述

1.确认目标内核版本在 GRUB 菜单中的位置
查看 /boot/grub/grub.cfg ,找到想要设置为默认的内核版本对应的 menuentry。记住它在菜单中的位置,计数从 0 开始。具体例子见下面**“grub.cfg实例”**

cat /boot/grub/grub.cfg

2.编辑 GRUB 配置文件
打开 /etc/default/grub,使用管理员权限。使用文本编辑器,如 nanovim

sudo vim /etc/default/grub

3.修改 GRUB_DEFAULT 变量
/etc/default/grub 文件中找到 GRUB_DEFAULT 行。如果目标内核位于子菜单中,使用格式 "主菜单位置>子菜单位置"。例如,如果目标内核是 “Advanced options” 子菜单中的第三个选项(计数为 2),(具体例子见下面**“grub.cfg实例”**,一下子就懂了),则设置为:

#GRUB_DEFAULT=0     #一般默认是 这个,把它注释掉即可。
GRUB_DEFAULT="1>2"

4.更新 GRUB 配置
保存对 /etc/default/grub 的更改后,运行以下命令更新 GRUB:

sudo update-grub

5.重启系统
完成上述步骤后,重启系统。系统现在应该会默认启动到新设置的内核版本。

sudo reboot

注意

  • 直接编辑 /boot/grub/grub.cfg 文件是不推荐的,因为这个文件会在系统更新或执行 update-grub 命令时被自动覆盖。
  • 在做出任何更改之前,请备份相关文件,以防万一出现配置错误。

grub.cfg实例

位置:/boot/grub/grub.cfg,摘录其中内容如下:

### main manu(主菜单),number 0,  starting with 0. => vim /etc/default/grub : GRUB_DEFAULT=0
menuentry 'Ubuntu' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-simple-0ca8df87-68c6-4792-ab3a-cf10e70c71c9' {
        recordfail
        load_video
        gfxmode $linux_gfx_mode
        insmod gzio
        if [ x$grub_platform = xxen ]; then insmod xzio; insmod lzopio; fi
        insmod part_gpt
        insmod ext2
        set root='hd0,gpt2'
        if [ x$feature_platform_search_hint = xy ]; then
          search --no-floppy --fs-uuid --set=root --hint-bios=hd0,gpt2 --hint-efi=hd0,gpt2 --hint-baremetal=ahci0,gpt2  0ca8df87-68c6-4792-ab3a-cf10e70c71c9
        else
          search --no-floppy --fs-uuid --set=root 0ca8df87-68c6-4792-ab3a-cf10e70c71c9
        fi
        linux   /boot/vmlinuz-5.15.0-86-generic root=UUID=0ca8df87-68c6-4792-ab3a-cf10e70c71c9 ro  quiet splash $vt_handoff
        initrd  /boot/initrd.img-5.15.0-86-generic
}
### main manu(主菜单),number 1
submenu 'Advanced options for Ubuntu' $menuentry_id_option 'gnulinux-advanced-0ca8df87-68c6-4792-ab3a-cf10e70c71c9' {
        ### submain manu(子菜单),number 0,starting with 0.  => vim /etc/default/grub : GRUB_DEFAULT="1>0"
        menuentry 'Ubuntu, with Linux 5.15.0-86-generic' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-5.15.0-86-generic-advanced-0ca8df87-68c6-4792-ab3a-cf10e70c71c9' {
                recordfail
                load_video
                gfxmode $linux_gfx_mode
                insmod gzio
                if [ x$grub_platform = xxen ]; then insmod xzio; insmod lzopio; fi
                insmod part_gpt
                insmod ext2
                set root='hd0,gpt2'
                if [ x$feature_platform_search_hint = xy ]; then
                  search --no-floppy --fs-uuid --set=root --hint-bios=hd0,gpt2 --hint-efi=hd0,gpt2 --hint-baremetal=ahci0,gpt2  0ca8df87-68c6-4792-ab3a-cf10e70c71c9
                else
                  search --no-floppy --fs-uuid --set=root 0ca8df87-68c6-4792-ab3a-cf10e70c71c9
                fi
                echo    'Loading Linux 5.15.0-86-generic ...'
                linux   /boot/vmlinuz-5.15.0-86-generic root=UUID=0ca8df87-68c6-4792-ab3a-cf10e70c71c9 ro  quiet splash $vt_handoff
                echo    'Loading initial ramdisk ...'
                initrd  /boot/initrd.img-5.15.0-86-generic
        }
        ### submain manu(子菜单),number 1,  => vim /etc/default/grub : GRUB_DEFAULT="1>1"
        menuentry 'Ubuntu, with Linux 5.15.0-86-generic (recovery mode)' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-5.15.0-86-generic-recovery-0ca8df87-68c6-4792-ab3a-cf10e70c71c9' {
                recordfail
                load_video
                insmod gzio
                if [ x$grub_platform = xxen ]; then insmod xzio; insmod lzopio; fi
                insmod part_gpt
                insmod ext2
                set root='hd0,gpt2'
                if [ x$feature_platform_search_hint = xy ]; then
                  search --no-floppy --fs-uuid --set=root --hint-bios=hd0,gpt2 --hint-efi=hd0,gpt2 --hint-baremetal=ahci0,gpt2  0ca8df87-68c6-4792-ab3a-cf10e70c71c9
                else
                  search --no-floppy --fs-uuid --set=root 0ca8df87-68c6-4792-ab3a-cf10e70c71c9
                fi
                echo    'Loading Linux 5.15.0-86-generic ...'
                linux   /boot/vmlinuz-5.15.0-86-generic root=UUID=0ca8df87-68c6-4792-ab3a-cf10e70c71c9 ro recovery nomodeset dis_ucode_ldr
                echo    'Loading initial ramdisk ...'
                initrd  /boot/initrd.img-5.15.0-86-generic
        }
        ### submain manu(子菜单),number 2,  => vim /etc/default/grub : GRUB_DEFAULT="1>2"
        menuentry 'Ubuntu, with Linux 5.11.0-40-generic' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-5.11.0-40-generic-advanced-0ca8df87-68c6-4792-ab3a-cf10e70c71c9' {
                recordfail
                load_video
                gfxmode $linux_gfx_mode
                insmod gzio
                if [ x$grub_platform = xxen ]; then insmod xzio; insmod lzopio; fi
                insmod part_gpt
                insmod ext2
                set root='hd0,gpt2'
                if [ x$feature_platform_search_hint = xy ]; then
                  search --no-floppy --fs-uuid --set=root --hint-bios=hd0,gpt2 --hint-efi=hd0,gpt2 --hint-baremetal=ahci0,gpt2  0ca8df87-68c6-4792-ab3a-cf10e70c71c9
                else
                  search --no-floppy --fs-uuid --set=root 0ca8df87-68c6-4792-ab3a-cf10e70c71c9
                fi
                echo    'Loading Linux 5.11.0-40-generic ...'
                linux   /boot/vmlinuz-5.11.0-40-generic root=UUID=0ca8df87-68c6-4792-ab3a-cf10e70c71c9 ro  quiet splash $vt_handoff
                echo    'Loading initial ramdisk ...'
                initrd  /boot/initrd.img-5.11.0-40-generic
        }
        ### submain manu(子菜单),number 3,  => vim /etc/default/grub : GRUB_DEFAULT="1>3"
        menuentry 'Ubuntu, with Linux 5.11.0-40-generic (recovery mode)' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-5.11.0-40-generic-recovery-0ca8df87-68c6-4792-ab3a-cf10e70c71c9' {
                recordfail
                load_video
                insmod gzio
                if [ x$grub_platform = xxen ]; then insmod xzio; insmod lzopio; fi
                insmod part_gpt
                insmod ext2
                set root='hd0,gpt2'
                if [ x$feature_platform_search_hint = xy ]; then
                  search --no-floppy --fs-uuid --set=root --hint-bios=hd0,gpt2 --hint-efi=hd0,gpt2 --hint-baremetal=ahci0,gpt2  0ca8df87-68c6-4792-ab3a-cf10e70c71c9
                else
                  search --no-floppy --fs-uuid --set=root 0ca8df87-68c6-4792-ab3a-cf10e70c71c9
                fi
                echo    'Loading Linux 5.11.0-40-generic ...'
                linux   /boot/vmlinuz-5.11.0-40-generic root=UUID=0ca8df87-68c6-4792-ab3a-cf10e70c71c9 ro recovery nomodeset dis_ucode_ldr
                echo    'Loading initial ramdisk ...'
                initrd  /boot/initrd.img-5.11.0-40-generic
        }
}

觉得有用,就点个赞吧

  • 11
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
第一部分:常用命令 常用命令/文件处理 0:基础功能 1:ls 显示文件目录 语法:ls 选项[-ald][文件或目录] 2:cat 显示文件内容(内容少适合) 语法:cat[文件名] 3:tac 显示文件内容 语法:tac[文件名] 4:more 分页显示文件内容(只能往下翻页,不能往上反) 语法:more[文件名] 5:less 分页显示文件内容(上下翻页) 语法:less[文件名] 6:head 显示文件前面几行 语法:head[文件名] 7:tail 显示文件后面几行 语法:tail[文件名] 8:touch 创建空文件 语法:touch[文件名字] 9:mkdir 创建新目录 语法:mkdir -p 目录 10:cd 切换目录 语法:cd 目录 11:pwd 显示当前目录的绝对路径 语法:pwd 12:rmdir 删除空目录 语法:rmdir 目录名字 13:rm 删除文件或目录 语法:rm -rf[文件或目录] 14:cp 复制文件或目录 语法:cp -rp[源文件或目录][目标目录] 15:scp 远程和本地互传文件 语法:scp [参数] [原路径] [目标路径] 16:mv 剪切文件或该名 语法:mv[源文件或目录][目标目录] 17:ln 生成连接文件 语法:ln -s[原件名][目标文件] 常用命令/文件搜索 1:find 文件搜索 语法:find [搜索范围][比配条件] 2:locate 在文件资料库中查找文件 语法:locate 文件名 3:which 搜索命令所在目录级别名信息 语法:which[命令名称] 4:whereis 搜索命令所在目录级帮助文档路径 语法:whereis[命令名称] 5:grep 在文件中搜索字串匹配的行并输出 语法:grep -iv[指定字串][文件] 6:uname 显示当前操作系统名称 常用命令/压缩解压 1:gzip 压缩文件 语法:gzip [文件] 2:gunzip 解压缩.gz文件 语法:gunzip [压缩文件] 3:tar 打包目录 语法:tar 选项[-zcf][压缩后文件名字][目录] 4:zip 压缩文件或目录 语法:zip 选项[-r][压缩后文件名字][文件或目录] 5:unzip 压缩文件或目录 语法:unzip [压缩文件] 6:bzip2 压缩文件 语法:bzip2 选项[-k][文件] 7:bunzip2 解压缩 语法:bunzip2 选项[-k][解压文件] 常用命令/网络 1:write 给在线用户发消息 语法:write 2:wall 发广播消息 语法:wall [发送的消息] 3:ping 测试网络连通性 语法:ping 选项IP地址 4:ifconfig 查看和设置网卡信息 语法:ifconfig [网卡名称] [IP地址] 5:mail 查看发送电子邮件 语法:mail [用户名] 6:last 列出目前与过去登陆系统的用户信息 语法:last 7:lastlog 检查某用户上次登陆的时间 语法:lastlog 8:traceroute 显示数据包到主机间的路径 语法:traceroute 网址 9:netstat 显示网络相关信息 语法:netstat [-tulrn] 10:setup 配置网络 语法:setup 11:mount 挂载 语法:mount [-t 文件系统] 设备文件名挂载点 12:nmap 端口扫描 13:ifup/ifdown 启动/禁止网卡 常用命令/关机重启 1:shutdown 关机或重启 语法:shutdown [选项] 时间 2:halt 关机 语法:halt 3:poweroff 关机 语法:poweroff 4:init 关机或重启 语法:init [0~6]数字 5:reboot 重启 语法:reboot 6:logout 退出终端 语法:logout 常用命令/帮助 1:man 获得帮助信息 语法:man [命令或配置文件] 2:whatis 获得帮助简短信息 语法:whatis 命令 3:apropos 查看配置文件信息 语法:apropos 配置文件 4:--help 查看命令主要选项 语法:命令 --help 5:info 获取帮助信息 语法:info 命令 6:help 获取Shell内置命令的帮助信息 语法:help 命令 7:apt-get 安装卸载程序 第二部分:文件系统 文件系统/文件系统 0:tree 以树形结构显示文件目录结构 1:分区和文件系统 2:文件系统常用命令 df [选项][挂载点] //统计文件系统占情况 du [选项][目录或文件] //统计目录或文件大小 df和du命令的区别 fsck [选项] 分区设备文件名 //文件系统修复命令 dumpe2fs 分区设备文件名 //显示磁盘状态命令 3:挂载命令 mount [选项] 设备文件名 挂载点 4:挂载光盘与U盘 文件系统/fdisk分区 1:fdisk命令分区过程 2:分区自动挂载与fstab文件修复 文件系统/swap分区 1:free 查看内存与swap分区使用状况 2:创建swap分区或开机自动挂载 第三部分:用户权限 用户权限/用户管理命令 1:useradd 添加新用户 语法:useradd [选项] 用户名 2:passwd 设置用户密码 语法:passwd [选项] 用户名 3:usermod 修改用户信息 语法:usermod [选项] 用户名 4:chage 修改用户密码状态 语法:chage [选项] 用户名 5:userdel 删除用户 语法:userdel [-r] 用户名 6:id 查看用户id 语法:id 用户名 7:su 切换用户身份 语法:su [选项]用户名 8:env 查看用户环境变量 语法:env 9:who 查看登陆用户信息 语法:who 10:w 查看登陆用户详细信息 语法:w 用户权限/用户和用户组管理 1:用户配置文件 1.1:/etc/passwd 用户基本信息文件 1.2:/etc/shadow 影子文件(真正密码,root可以看) 1.3:/etc/group 组信息文件 1.4:/etc/gshadow 密码文件 2:用户管理相关文件 2.1:用户的家目录 2.2:用户的邮箱 /var/spool/mail/用户名/ 2.3:用户模板目录 /etc/skel/ 3:用户管理命令 4:用户组管理命令 第四部分:权限管理 权限管理/权限管理 0:创建用户/添加组 1:chmod 改变文件或目录权限 语法:chmod [{ugoa}{+-=}{rwx}][文件或目录] 2:chown 改变文件或目录所有者 语法:chown [用户][文件或目录] 3:chgrp 改变文件或目录的所属组 语法:chgrp [用户组][文件或目录] 4:umask 显示或设置文件缺省权限 语法:umask[-S] 权限管理/文件特殊权限 1:SetUID 可执行的二进制文件(u:w=s 4) 2:SetGID 可执行的二进制文件或目录(g:r=s 2) 3:Sticky BIT 只对目录有效(o:x=t 1) 权限管理/文件系统属性chattr权限 1:chattr 文件系统属性权限 2:lsattr 查看文件系统属性 权限管理/系统命令sudo权限 1:sudo 权限 权限管理/ACL 权限 1:ACL权限开启 2:查看与设定ACL权限 3:最大有效权限与删除ACL权限 4:默认ACL权限和递归ACL权限 5:删除ACL权限 第五部分:系统管理 系统管理/工作管理 1:把进程放入后台(&,ctrl+z) 2:查看后台的工作 语法:jobs [选项] 3:将后台暂停的工作恢复到前台执行 语法:fg %工作号 4:把后台暂停的工作恢复到后台执行 语法:bg %工作号 系统管理/进程管理 1:进程查看 2:进程管理 2.1:判断服务器健康状态 语法:top [选项] 2.2:查看系统中所有进程 语法:ps [选项] 2.3:查看进程数 语法:pstree [选项] 3:终止进程 3.1:kill [选项] //终止进程 3.1:killall [选项][信号] 进程名 //按照进程名杀死进程 3.1:pkill [选项][信号]进程名 //按照进程名终止进程 系统管理/系统定时任务 1:crond服务管理与访问控制 语法:crontab [选项] 系统管理/系统资源查看 1:vmstat命令监控系统资源 语法: vmstat 刷新延时 刷新次数 2:dmesg开机时内核检测信息 语法: dmesg 3:free查看内存使用状态 语法: free [选项] 4:查看CPU信息 /proc/cpuinfo 5:uptime启动时间和平均负载 语法: uptime 6:uname查看系统与内核相关信息 语法: uname [选项] 7:判断当前系统的位数(32位或64位..) 8:查看当前Linux系统的发行版本 语法: lsb_release -a 9:lsof列出进程打开或使用的文件信息 语法: lsof [选项] 10:date 第六部分:服务管理 1:服务简介与分类 2:RPM包安装服务的管理 2.1:独立服务的管理 2.2:基于xinetd服务的管理 3:源码包安装服务管理 3.1:源码包安装服务的启动 3.2:源码包服务的自启动 3.3:让源码包服务被服务管理器命令识别 第七部分:启动管理 启动管理/CentOS 6.x启动管理 1:系统运行级别 1:运行级别(0~6,7个级别) 2:查看运行级别(runlevel,init) 3:系统默认运行级别(/etc/inittab) 2:系统启动过程 1:initramfs内存文件系统 2:调用/etc/init/rcS.conf配置文件 1:先调用/etc/rc.d/rc.sysinit 2:再调用/etc/inittab确定系统默认运行级别 3:调用/etc/rc.d/rc文件 启动管理/启动引导程序grub 1:grub配置文件 2:grub加密与字符界面分辨率调整 启动管理/系统修复模式 1:单用户模式 2:光盘修复模式 3:Linux的安全性 第八部分:日志管理 日志管理简介 1:日志服务 2:rsyslogd的新特点 3:确定服务启动 4:常见日志的作用(lastb,lastlog,last) 5:其他日志 日志-轮替 1:日志文件的命名规则 2:logrotate配置文件 3:把apache日志加入轮替 4:logrotate日志轮替 语法 logrotate [选项] 配置文件名 rsyslogd-日子服务 1:日志文件格式 2:/etc/rsyslog.comf配置文件 第九部分:软件包管理 软件包管理\软件包管理 1:软件包管理简介 1:源码包(源代码安装包,手动安装) 2:二进制包(RPM包,系统默认包) 2:RPM包管理-rpm命令管理 1:RPM包命名规则 2:RPM包依赖性 3:RPM包管理-yum在线管理 1:IP地址配置和网络yum源 2:光盘yum源搭建 4:源码包管理 1:源码包和RPM包区别 2:源码包安装过程 5:脚本安装包与软件包选择 软件包管理/软件包管理命令 1:RPM包管理 rpm命令管理 命令 1:安装 rpm -ivh 包全名 2:升级 rpm -Uvh 包全名 3:卸载 rpm -e 包名 4:查询 rpm -q.. 5:校验 rpm -V 已安装的包名 6:文件提取 rpm2cpio 包全名 | cpio -idv .文件绝对路径 2:rpm包管理 yum在线管理 命令 1:查询 yum list 2:安装 yum -y install 包名 3:升级 yum -y update 包名 4:卸载 yum -y remove 包名 5:软件组管理 yum grouplist 第十部分:备份与恢复 备份与恢复/备份的概述 1:Linux系统需要备份的数据 2:安装服务的数据 3:备份策略 1:完全备份 2:增量备份 3:差异备份 备份与恢复/dump和restore命令 1:dump备份数据 2:restore恢复命令 第十一部分:shell
1. 先安装win10,并给centos 7分出空间。 2. 安装centos 7系统分使用刚预留的分区。 3. 装完centos7,进入系统修改vim /boot/grub2/grub.cfg 最后面插入以下内容: menuentry 'Windows 10' { #显示菜单的名字 insmod ntfs #加载ntfs支持 set root=(hd0,1) #设置第一个硬盘的第一分区为工作目录(根目录) chainloader +1 #加载引导 boot #启动 } 4. 保存重启 5. 安装图形界面。 更新系统: yum -y upgrade 6. 安装必要的软件包: yum -y install grub2-efi fwupdate 7.重启电脑,删除老版本内核: yum -y remove kernel 8.查看可安装组列表: yum grouplist 9. 安装桌面: yum -y groupinstall'GNOME Desktop''Graphical Administration Tools' 10.配置默认启动方式: vim /etc/inittab vi /etc/inittab //查询当前的默认设置: systemctl get-default //启动切换图形化界面: startx //设置默认启动为图形化界面: systemctl set-default graphical.target //设置默认启动为命令行界面: systemctl set-default multi-user.target //命令行界面热切换到图形界面: init 5 //图形界面热切换到命令行界面: init 3 6. 执行以下命令。 systemctl set-default graphical.target systemctl set-default multi-user.target 7. 输入init5 进入图形化界面。 8. 执行以下命令设置图形化界面开机启动。 systemctl set-default graphical.target 图形化安装界面参考地址:https://blog.csdn.net/wqh0830/article/details/86701379 https://blog.csdn.net/qq_37279783/article/details/88086454 双系统安装参考地址;https://www.jianshu.com/p/643b613f4629 删除原来的内核内核工具 [root@test ~]# rpm -qa | grep kernel* kernel-lt-4.4.140-1.el7.elrepo.x86_64 kernel-3.10.0-862.3.2.el7.x86_64 kernel-headers-3.10.0-862.3.3.el7.x86_64 kernel-tools-libs-3.10.0-862.3.2.el7.x86_64 kernel-tools-3.10.0-862.3.2.el7.x86_64 yum remove kernel-3.10.0-862.3.2.el7.x86_64 kernel-headers-3.10.0-862.3.3.el7.x86_64 kernel-tools-libs-3.10.0-862.3.2.el7.x86_64 kernel-tools-3.10.0-862.3.2.el7.x86_64 更新内核: 首先导入第三方的公共key rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org 查看目前可以使用的longterm 版本(生产环境中一定要使用这种版本) yum --disablerepo="*" --enablerepo="elrepo-kernel" list available 安装长期支持版内核 yum --enablerepo=elrepo-kernel install kernel-lt 同时修改默认加载内核启动顺序,修改成如下: [root@test ~]# cat /etc/default/grub GRUB_TIMEOUT=5 GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)" GRUB_DEFAULT=0 GRUB_DISABLE_SUBMENU=true GRUB_TERMINAL_OUTPUT="console" GRUB_CMDL

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Ha-Ha-Interesting

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值