笔者正在进行服务器的调试,其中的过程需要观测到开机信息的输出,因此不得不配一台显示器进行输出信息打印,但是这样对显示器比较浪费,因此笔者把输出信息也尝试着打印到了串口进行输出,想快速输出到串口的可以直接跳过笔者的操作过程,直接到实际过程即可,但是笔者建议把必做项做了,要不然操作失误可能会导致服务器不能正常显示。
必做项
由于修改grub配置文件比较重要,稍有不慎就开不了机了,笔者这里建议
先把系统盘找到:lsblk
进入服务器把boot文件夹下的所有文件全部拷贝到U盘里面去,方便查看grub.cfg文件里面的配置内容,不会拷u盘的可以看看笔者的这篇帖子。服务器文件拷贝到u盘_韩xinwu的博客-CSDN博客
上述操作十分重要,请务必进行,grub的recovery模式有时候会没用(bug,后续会讲)
笔者的操作过程
首先,找到grub配置文件grub.cfg(grub.conf文件也可以),通常在这个/boot/grub/grub.cfg文件夹下。
路径到目标文件夹下
vim grub.conf
添加console =ttys0,115200
重启
输出报错can't find command `/etc/grub.d',bios串口还是不输出之后的信息(此时显示器可以显示进入操作系统)。
然后接着又在/etc/default下的grub文件修改,
cmdline添加了console=ttys0,115200
执行
sudo update-grub
该命令作用是更新原来的/boot/grub/grub.cfg文件,但修改配置时不要修改/boot/grub/grub.cfg文件,而是要修改/etc/default/grub文件,然后sudo update-grub
接着就开不了机了,一直卡在setup的界面
点到grub引导配置界面,选择recovery mode,点进去发现还是一直卡在界面。
理论上来说sudo update-grub命令只修改了ubuntu的启动而没有修改ubuntu recovery的启动项参数,不知道为什么不能显示。
不知道怎么找grub的,如果你的bios里面有uefi shell的话,可以先进入uefi shell
#fs0:
#ls
#cd efi
#cd ubuntu
如果你的系统是ubuntu系统,那就是cd ubuntu.
#grubx64.efi
如果你做了上面的必做项的话,这里你能很快找到你所要启动的系统路径,照着上述操作执行你的grub的efi文件,这个时候就能进入grub图形界面
按下c进入grub的命令行
我是按照这篇帖子进行操作的不慎修改linux中的grub文件导致无法进入操作系统的解决方案_woooorld的博客-CSDN博客_开机grub无法进入系统
为防丢失,复制了一段内容过来。
ls # 会显示所有挂载硬盘,如(hd0,msdos1),(hd0,msdos2)...
ls (hd0,msdos1) # 查看(hd0,msdos1)盘,如果显示是未知的文件系统则再查下一个,直到找到系统盘,系统盘的类型一般是xfs
# 3. 激活
insmod xfs
# 4. 配置变量
set root=(hd0,msdos1) #第二步找到的系统盘
set prefix=(hd0,msdos1)/grub2 # 有的系统里是grub,这和grub版本有关
# 5.
linux /vmlinuz-3.10.XXXX root=/dev/mapper/centos-root # 后面的XXX可以用Tab键自动补全,root的位置一般是/dev/mapper/centos-root,但是也存在不一样的情况
# 6.
initrd /initramfs-3.10.XXX.img # 自动补全,使用和上一步对应的版本
# 7.
boot
实际操作时只需要把系统盘换成你的系统盘就可以了,图中的5和6对应的的代码可以在必做项里面的grub.cfg或者grub.conf文件里面找到,比如说我的是这样的,对应着替换就行了,最后boot就成功启动了操作系统。
进去之后发现笔者的ttyS0写成了ttys0,正确的选项如图中所示。
console=tty0 console=ttyS0,115200
console=tty0和console=ttyS0的顺序不能反,否则只有显示器有输出,至于为什么,笔者目前也不太清楚。
下面第二个红框的前面的注释符#我给删掉了,不知道有没有什么影响
实际过程
#cd etc
#cd default
#vim grub
按i进行编辑
cmdline添加console=tty0 console=ttyS0,115200
按esc,输入:wq保存退出
#sudo update-grub
#reboot
让信息输出到串口上,其实会有一些不适应,比如说vim的时候