梵想固态硬盘安装linux系统后开机报错:nvme nvme0:Device not ready: aborting initialisation, CSTS=0x0
起因
前天因科研需求在已经安装了Windows台式机上装双系统Linux,安装完ubuntu22.04后重启,结果启动时黑屏报错显示nvme nvme0:Device not ready: aborting initialisation, CSTS=0x0
一整个懵逼
查找各种资料 每个博主都写的很具体 但是只能解决其中一部分问题
写这篇贴是为了给遇到同样问题的朋友提供一条龙服务
参考博主1:梵想固态硬盘无法安装linux系统是什么原因?
如果黑屏报错时能显示shell命令行(应该是显示成(initialisation)________ )
按顺序逐行输入以下代码 尝试加载出固态硬盘 从而正常打开linux
ls /dev/nvme0
sudo dmesg -c
sudo rmmod nvme
sudo modprobe nvme #如果出现/dev/nvme0,否则重复加载
sudo dmesg -c #再输入一次
#如果能显示出/dev/nvme0,而不是CSTS=0x0即可进入下一步,否则重复上述步骤
成功进入linux系统后,打开终端
安装所需工具
sudo apt update
sudo apt upgrade
sudo apt-get update
sudo apt-get install g++
sudo apt-get install gcc
sudo apt-get install make
sudo apt-get install
sudo apt-get build-essential
sudo apt-get libncurses-dev
sudo apt-get bison
sudo apt-get flex
sudo apt-get libssl-dev
后续编译内核时,若出现fatal error: openssl/opensslv.h: No such file or directory类似的报错就说明缺少了对应的包,再安装一下就可以解决了(此处openssl需要的是libssl-dev)
查看当前Ubuntu系统中的Linux内核的版本
sudo uname -r
下载ubuntu内核源码
cd
mkdir ubuntu
cd ubuntu
sudo apt source linux-headers-$(uname -r)
cp /boot/config-$(uname -r) .config
若报错E: 您必须在 sources.list 中指定代码源(deb-src)
打开软件和更新勾选上源代码
修改内核代码nvme驱动
sudo vim ./drivers/nvme/host/core.c
一般在两千多行左右
修改如下函数 添加两行
保存退出(输入 :wq)
编译内核
参考博主2 Ubuntu系统更换Linux内核的详细方法汇总
进入到名为linux-***的目录下
sudo make distclean O=build
sudo make menuconfig
(以下若想看具体步骤的图片可以点击上方的原帖链接查看)
出现UI界面后,选择“Save”后按一下“Enter”
然后会出现新的界面,选择“Ok”后按一下“Enter”
然后会出现另一个新界面,选择“Exit”后按一下“Enter”
然后会回到第一个UI界面,选择“Exit”后按一下“Enter”
回到命令行界面,顺序执行如下命令
sudo make -j8 #时间可能比较久 耐心等待
sudo make -j8 modules_install
sudo make -j8 install
然后使用如下命令更新GRUB引导程序,并重启系统
sudo update-grub
sudo reboot
计算机重启时候,选择“Ubuntu高级选项”后按一下“Enter”
选择红框处后,按一下“Enter”键(版本不一定为5.5 没有关系!)
完美解决!!!!感天动地!!!!
感谢上述链接提到的两位博主 也感谢无私奉献linux经验的各位大佬