起因是安装了ubuntu 20.04 版本 其内核是5.8,用该版本内核编译 正点原子 MX6ULL 开发板的4.15版本内核时提示 文件系统报错,无论是NXP原厂还是正点原子的都报错。但是自己下载5.10版本的内核编译则顺利通过。不知道是何种原因,既然不想会重新装ubuntu 16.04 ,只能选择内核降级。

本次安装的是 linux-4.15.0-39 版本内核,其他版本大家自行选择下载

一、添加源镜像,防止出现 “E: 无法定位软件包问题 ”

1、切换到root模式

2、备份镜像源

sudo cp ~/etc/apt/sources.list ~/etc/apt/sources.list.bak

3、编辑镜像源

sudo vim /etc/apt/sources.list

4、增加镜像源,本次添加的是清华的镜像源,也可以添加其他源
在sources.list 最后一行添加以下内容

deb http://security.ubuntu.com/ubuntu trusty-security main
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-updates main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-backports main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-security main restricted universe multiverse

5、更新镜像

sudo apt-get update

二、下载linux 内核 (方式1)
1、查询内核列表

sudo apt-cache search linux-image   查询列表中可更新的内核

2、安装4.15.0-39版本镜像

sudo apt-get install linux-image-4.15.0-39-generic  
  

3、安装4.15.0-39版本的内核

sudo apt-get install linux-headers-4.15.0-39-generic      

4、安装4.15.0-39版本内核模块

sudo apt-get install linux-modules-4.15.0-39-generic	   

5、安装4.15.0-39版本的驱动

sudo apt-get install linux-modules-extra-4.15.0-39-generic    

6、查询当前当前已安装的内核

dpkg -l |grep linux-image      

在这里插入图片描述
从上面可以查看内核是否安装成功。

三 安装linux内核(方式二)
1、从内核官网或者其他地方下载linux内核安装包
2、使用cd 命令进入到安装装包目录下
3、安装内核

sudo dpkg -i *.deb

4、查询当前当前已安装的内核

dpkg -l |grep linux-image      

如果报错,根据提示查找错误原因,解决后重新执行

四、切换内核版本 (重要)
众所周知,Bootloader是计算机启动时运行的第一个程序。 负责装载和传输控制信息到操作系统内核,而内核负责初始化其余的操作系统。 GNU GRUB是一个非常强大的Bootloader,可以加载很多种免费操作系统以及使用chain-loading的操作系统。

GRUB有两种不同的引导方法,一种是直接加载操作系统,另外一种是链式加载(chain-load)。通常采用的是第一种方式,因为它不需要安装或维护其他引导装载程序,GRUB能够通过这种方式从任意磁盘/分区加载操作系统。但是,后一种方式有时是必需的,因为GRUB并不支持对所有操作系统的直接加载。链式加载只支持PC BIOS和EFI平台。

GRUB由’grub.cfg’文件进行配置,通常位于/boot/grub路径下。这个文件相当灵活,但它通常不需要完全由用户手动写入

1、 查看需要使用的内核位置

gedit /boot/grub/grub.cfg

打开后如下所示,第2行明确的写着 “不要编辑该文件”。
在这里插入图片描述

之后我们向下查找,直至看到 menuentry ‘Ubuntu’ ,menuentry表示grub启动选项的显示条目。如下所示。

export linux_gfx_mode
menuentry 'Ubuntu' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-simple-0adfee8d-6cc2-4769-8572-b4936f092cc3' {
	recordfail
	load_video
	gfxmode $linux_gfx_mode
	insmod gzio
	if [ x$grub_platform = xxen ]; then insmod xzio; insmod lzopio; fi
	insmod part_msdos
	insmod ext2
	set root='hd0,msdos5'
	if [ x$feature_platform_search_hint = xy ]; then
	  search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos5 --hint-efi=hd0,msdos5 --hint-baremetal=ahci0,msdos5  0adfee8d-6cc2-4769-8572-b4936f092cc3
	else
	  search --no-floppy --fs-uuid --set=root 0adfee8d-6cc2-4769-8572-b4936f092cc3
	fi
	linux	/boot/vmlinuz-5.8.0-48-generic root=UUID=0adfee8d-6cc2-4769-8572-b4936f092cc3 ro  quiet splash $vt_handoff
	initrd	/boot/initrd.img-5.8.0-48-generic
}
submenu 'Ubuntu 的高级选项' $menuentry_id_option 'gnulinux-advanced-0adfee8d-6cc2-4769-8572-b4936f092cc3' {
	menuentry 'Ubuntu,Linux 5.8.0-48-generic' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-5.8.0-48-generic-advanced-0adfee8d-6cc2-4769-8572-b4936f092cc3' {
		recordfail
		load_video
		gfxmode $linux_gfx_mode
		insmod gzio
		if [ x$grub_platform = xxen ]; then insmod xzio; insmod lzopio; fi
		insmod part_msdos
		insmod ext2
		set root='hd0,msdos5'
		if [ x$feature_platform_search_hint = xy ]; then
		  search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos5 --hint-efi=hd0,msdos5 --hint-baremetal=ahci0,msdos5  0adfee8d-6cc2-4769-8572-b4936f092cc3
		else
		  search --no-floppy --fs-uuid --set=root 0adfee8d-6cc2-4769-8572-b4936f092cc3
		fi
		echo	'载入 Linux 5.8.0-48-generic ...'
		linux	/boot/vmlinuz-5.8.0-48-generic root=UUID=0adfee8d-6cc2-4769-8572-b4936f092cc3 ro  quiet splash $vt_handoff
		echo	'载入初始化内存盘...'
		initrd	/boot/initrd.img-5.8.0-48-generic
	}
	menuentry 'Ubuntu, with Linux 5.8.0-48-generic (recovery mode)' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-5.8.0-48-generic-recovery-0adfee8d-6cc2-4769-8572-b4936f092cc3' {
		recordfail
		load_video
		insmod gzio
		if [ x$grub_platform = xxen ]; then insmod xzio; insmod lzopio; fi
		insmod part_msdos
		insmod ext2
		set root='hd0,msdos5'
		if [ x$feature_platform_search_hint = xy ]; then
		  search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos5 --hint-efi=hd0,msdos5 --hint-baremetal=ahci0,msdos5  0adfee8d-6cc2-4769-8572-b4936f092cc3
		else
		  search --no-floppy --fs-uuid --set=root 0adfee8d-6cc2-4769-8572-b4936f092cc3
		fi
		echo	'载入 Linux 5.8.0-48-generic ...'
		linux	/boot/vmlinuz-5.8.0-48-generic root=UUID=0adfee8d-6cc2-4769-8572-b4936f092cc3 ro recovery nomodeset dis_ucode_ldr 
		echo	'载入初始化内存盘...'
		initrd	/boot/initrd.img-5.8.0-48-generic
	}
	menuentry 'Ubuntu,Linux 5.8.0-45-generic' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-5.8.0-45-generic-advanced-0adfee8d-6cc2-4769-8572-b4936f092cc3' {
		recordfail
		load_video
		gfxmode $linux_gfx_mode
		insmod gzio
		if [ x$grub_platform = xxen ]; then insmod xzio; insmod lzopio; fi
		insmod part_msdos
		insmod ext2
		set root='hd0,msdos5'
		if [ x$feature_platform_search_hint = xy ]; then
		  search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos5 --hint-efi=hd0,msdos5 --hint-baremetal=ahci0,msdos5  0adfee8d-6cc2-4769-8572-b4936f092cc3
		else
		  search --no-floppy --fs-uuid --set=root 0adfee8d-6cc2-4769-8572-b4936f092cc3
		fi
		echo	'载入 Linux 5.8.0-45-generic ...'
		linux	/boot/vmlinuz-5.8.0-45-generic root=UUID=0adfee8d-6cc2-4769-8572-b4936f092cc3 ro  quiet splash $vt_handoff
		echo	'载入初始化内存盘...'
		initrd	/boot/initrd.img-5.8.0-45-generic
	}
	menuentry 'Ubuntu, with Linux 5.8.0-45-generic (recovery mode)' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-5.8.0-45-generic-recovery-0adfee8d-6cc2-4769-8572-b4936f092cc3' {
		recordfail
		load_video
		insmod gzio
		if [ x$grub_platform = xxen ]; then insmod xzio; insmod lzopio; fi
		insmod part_msdos
		insmod ext2
		set root='hd0,msdos5'
		if [ x$feature_platform_search_hint = xy ]; then
		  search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos5 --hint-efi=hd0,msdos5 --hint-baremetal=ahci0,msdos5  0adfee8d-6cc2-4769-8572-b4936f092cc3
		else
		  search --no-floppy --fs-uuid --set=root 0adfee8d-6cc2-4769-8572-b4936f092cc3
		fi
		echo	'载入 Linux 5.8.0-45-generic ...'
		linux	/boot/vmlinuz-5.8.0-45-generic root=UUID=0adfee8d-6cc2-4769-8572-b4936f092cc3 ro recovery nomodeset dis_ucode_ldr 
		echo	'载入初始化内存盘...'
		initrd	/boot/initrd.img-5.8.0-45-generic
	}
	menuentry 'Ubuntu,Linux 4.15.0-39-generic' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-4.15.0-39-generic-advanced-0adfee8d-6cc2-4769-8572-b4936f092cc3' {
		recordfail
		load_video
		gfxmode $linux_gfx_mode
		insmod gzio
		if [ x$grub_platform = xxen ]; then insmod xzio; insmod lzopio; fi
		insmod part_msdos
		insmod ext2
		set root='hd0,msdos5'
		if [ x$feature_platform_search_hint = xy ]; then
		  search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos5 --hint-efi=hd0,msdos5 --hint-baremetal=ahci0,msdos5  0adfee8d-6cc2-4769-8572-b4936f092cc3
		else
		  search --no-floppy --fs-uuid --set=root 0adfee8d-6cc2-4769-8572-b4936f092cc3
		fi
		echo	'载入 Linux 4.15.0-39-generic ...'
		linux	/boot/vmlinuz-4.15.0-39-generic root=UUID=0adfee8d-6cc2-4769-8572-b4936f092cc3 ro  quiet splash $vt_handoff
		echo	'载入初始化内存盘...'
		initrd	/boot/initrd.img-4.15.0-39-generic
	}
	menuentry 'Ubuntu, with Linux 4.15.0-39-generic (recovery mode)' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-4.15.0-39-generic-recovery-0adfee8d-6cc2-4769-8572-b4936f092cc3' {
		recordfail
		load_video
		insmod gzio
		if [ x$grub_platform = xxen ]; then insmod xzio; insmod lzopio; fi
		insmod part_msdos
		insmod ext2
		set root='hd0,msdos5'
		if [ x$feature_platform_search_hint = xy ]; then
		  search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos5 --hint-efi=hd0,msdos5 --hint-baremetal=ahci0,msdos5  0adfee8d-6cc2-4769-8572-b4936f092cc3
		else
		  search --no-floppy --fs-uuid --set=root 0adfee8d-6cc2-4769-8572-b4936f092cc3
		fi
		echo	'载入 Linux 4.15.0-39-generic ...'
		linux	/boot/vmlinuz-4.15.0-39-generic root=UUID=0adfee8d-6cc2-4769-8572-b4936f092cc3 ro recovery nomodeset dis_ucode_ldr 
		echo	'载入初始化内存盘...'
		initrd	/boot/initrd.img-4.15.0-39-generic
	}
	menuentry 'Ubuntu,Linux 4.8.0-040800-generic' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-4.8.0-040800-generic-advanced-0adfee8d-6cc2-4769-8572-b4936f092cc3' {
		recordfail
		load_video
		gfxmode $linux_gfx_mode
		insmod gzio
		if [ x$grub_platform = xxen ]; then insmod xzio; insmod lzopio; fi
		insmod part_msdos
		insmod ext2
		set root='hd0,msdos5'
		if [ x$feature_platform_search_hint = xy ]; then
		  search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos5 --hint-efi=hd0,msdos5 --hint-baremetal=ahci0,msdos5  0adfee8d-6cc2-4769-8572-b4936f092cc3
		else
		  search --no-floppy --fs-uuid --set=root 0adfee8d-6cc2-4769-8572-b4936f092cc3
		fi
		echo	'载入 Linux 4.8.0-040800-generic ...'
		linux	/boot/vmlinuz-4.8.0-040800-generic root=UUID=0adfee8d-6cc2-4769-8572-b4936f092cc3 ro  quiet splash $vt_handoff
		echo	'载入初始化内存盘...'
		initrd	/boot/initrd.img-4.8.0-040800-generic
	}
	menuentry 'Ubuntu, with Linux 4.8.0-040800-generic (recovery mode)' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-4.8.0-040800-generic-recovery-0adfee8d-6cc2-4769-8572-b4936f092cc3' {
		recordfail
		load_video
		insmod gzio
		if [ x$grub_platform = xxen ]; then insmod xzio; insmod lzopio; fi
		insmod part_msdos
		insmod ext2
		set root='hd0,msdos5'
		if [ x$feature_platform_search_hint = xy ]; then
		  search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos5 --hint-efi=hd0,msdos5 --hint-baremetal=ahci0,msdos5  0adfee8d-6cc2-4769-8572-b4936f092cc3
		else
		  search --no-floppy --fs-uuid --set=root 0adfee8d-6cc2-4769-8572-b4936f092cc3
		fi
		echo	'载入 Linux 4.8.0-040800-generic ...'
		linux	/boot/vmlinuz-4.8.0-040800-generic root=UUID=0adfee8d-6cc2-4769-8572-b4936f092cc3 ro recovery nomodeset dis_ucode_ldr 
		echo	'载入初始化内存盘...'
		initrd	/boot/initrd.img-4.8.0-040800-generic
	}
}

骑上就是grub开机启动界面显示的菜单结构,可以概括如下:

0   Ubuntu          
1   Ubuntu 高级选项  
	   1>0  Ubuntu,Linux 5.8.0-48-generic
	   1>1	Ubuntu, with Linux 5.8.0-48-generic (recovery mode)
   	   1>2	Ubuntu, with Linux 5.8.0-45-generic
	   1>3  Ubuntu,Linux 5.8.0-45-generic (recovery mode)
       1>4	Ubuntu, with Linux 4.15.0-39-generic
   	   1>5	Ubuntu, with Linux 4.15.0-39-generic (recovery mode)
   	   1>6	Ubuntu, Linux 4.8.0-040800-generic
   	   1>7	Ubuntu, with Linux 4.8.0-040800-generic (recovery mode)

因此 我们要切换的内核版本是 Ubuntu 高级选项下的第5个。由于默认从0计算因此 Linux 4.15.0-39-generic的顺序为 1> 4。
之后关闭 grub.cfg文件即可。

2、更改grub默认启动项
该命令需要root模式下操作

sudo gedit /etc/default/grub

3、切换启动内核
打开grub文件后,找到 GRUB_DEFAULT=0 该项定义,将其修改为 GRUB_DEFAULT=“1 > 4”
其中’1>4’就表示选择ubuntu高级选项中的 第4个 内核文件(由于从0计算,实际是第5个文件)。
在这里插入图片描述
4、更新开机引导文件

sudo update-grub

5、重启内核

reboot

6、开机后 查看内核等级,验证是否成功

uname
Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐