1. 问题
在安装Nvidia驱动时,需要按 ctrl+alt+F1
切换到纯命令行模式,然后输入用户名密码登录。
但是出现了一个很诡异的问题,当时没有截图,我描述一下:
- 输入用户名并且回车以后,正常来讲会叫你输入密码,但是我这里直接跳到了输入密码的下一行,过几秒钟后,显示
login incorrect
,并且让你重新输入用户名登录,然后无限循环。 - 我试着在输入用户名以后快速输入密码,大家都知道在Linux下输入密码是不显示的,但是这里会在输入密码的下一行明文显示你的密码,然后依然是
login incorrect
。
搜了一下,网上的很多问题都是出在使用小键盘输入啊什么的,跟我的问题完全不一样,找了半天终于找到了问题所在。
我使用命令:
uname -sr # 查看当前内核版本
发现我的内核版本是 linux-images 4.15.0-45
,这个版本下面就会出现上述问题。同时,在 linux-images 4.15.0-44
也是一样的。
2. 解决方法
既然是内核出现了问题,那就是要更换内核了,大部分选择的是退回到 linux-images 4.15.0-43
,我一开始升级到了 linux-images 4.16.1
,后面因为 linux-images 4.16.1
使用 gcc 7.2
,与显卡驱动不匹配,所以我还是选择退回到了 linux-images 4.15.0-43
。
3. 更换内核(方法一)
下载
到Linux Kernel下载对应版本的内核。
比如我要下载内核版本是 4.16.1
,点进以上网址后先找到 v4.16.1
这个文件夹,点进去。
因为我的系统是64位的,所以下载 Build for amd64 succeeded(see BUILD.LOG.amd64)
下的三个 .deb
文件:
linux-headers-4.16.1-041601_4.16.1-041601.201804081334_all.deb
linux-headers-4.16.1-041601-generic_4.16.1-041601.201804081334_amd64.deb
linux-image-4.16.1-041601-generic_4.16.1-041601.201804081334_amd64.deb
安装
进入以上文件的目录,打开终端,运行:
sudo dpkg -i *.deb
切换
重启电脑,在选择系统的界面选择 Ubuntu高级选项
进入,选择刚刚安装的内核启动。如果能正常启动,一般就没有问题了。
启动后,可以运行:
uname -sr
查看内核版本。
然后按 ctrl+alt+F1
进入 tty1,应该就可以正常登录了。
4. 更换内核(方法二)
因为 4.16.1 是用 GCC 7.2
编译的,而我要安装的 Nvidia 驱动是用 GCC 5.4
编译的,会有冲突,所以我还是选择退回 4.15.0-43。
使用以下命令看到当前内核使用的编译器版本:
cat /proc/version
我按照之前的方法去安装,但是下载页面中找不到 4.15.0-43 版本的内核,所以就采用了另一种安装方法。
添加软件源
sudo gedit /etc/apt/sources.list
在文件最后一行添加:
deb http://security.ubuntu/ubuntu trusty-security main
然后更新软件源:
sudo apt-get update
安装内核
sudo apt-get install linux-image-extra-3.15.0-43-generic
5. 设置默认启动内核
降级了内核以后,因为Linux默认是使用比较新版本的内核启动,虽然可以在开机的时候选择启动的内核,但是这样太麻烦了,万一哪一天忘了选择,指不定出什么问题,所以我们通过更改 /etc/default/grub
文件来更换启动选项。
在启动的时候进入 grub 界面,比如我的是这样的:
Ubuntu
Advanced options for Ubuntu # 找到这一行,记住在第几行,从0开始数,假设为第 x 行
Memory test (memtest86+)
Memory test (memtest86+, serial console 115200)
Windows 10 (loader) (on /dev/sda1)
system setup
一般来说,Advanced options for Ubuntu
或者 Ubuntu高级选项
在第 1 行(从0开始数)。
然后进入 Advanced options for Ubuntu
,我的界面是这样的:
Ubuntu, with Linux 4.15.0-45-generic
Ubuntu, with Linux 4.15.0-45-generic (upstart)
Ubuntu, with Linux 4.15.0-45-generic (recovery mode)
Ubuntu, with Linux 4.15.0-43-generic #我想默认启动的内核,在第3行(从0开始数)
Ubuntu, with Linux 4.15.0-43-generic (upstart)
Ubuntu, with Linux 4.15.0-43-generic (recovery mode)
也是从上往下数,从0开始数,看你想要启动的内核在第几行,假设为第 y 行。
启动后在命令行输入:
sudo gedit /etc/default/grub
找到:
GRUB_DEFAULT = 0
改为:
GRUB_DEFAULT = "x> y" # x, y是上面要你记住的行号
比如我改成了:
GRUB_DEFAULT = "1> 3"
然后使配置生效:
sudo update-grub
重启电脑即可。
6. 卸载内核
如果需要卸载不需要用到的内核,先查看系统已安装的内核:
sudo dpkg --get-selections |grep linux
然后使用以下命令卸载内核:
sudo apt purge linux-headers-4.15.0-45 linux-image-4.15.0-45-generic
参考:
tty不给输入密码机会怎么办
ubuntu 16.04 tty登录显示 login incorrect,输入用户名后无法输入密码
Ubantu 16.04升级内核版本和还原到升级之前的内核版本的方法
Ubuntu 16.04 内核降级
Ubuntu 设置内核版本的GRUB默认启动
更多推荐
Ubuntu tty下无法输入密码 / Ubuntu 内核安装
发布评论