# Linux云服务器如何配置串口日志？
#### 操作场景
当ECS发生夯机、异常重启或者无法正常启动时，运维人员需要定位导致问题发生的根本原因，及时解决问题并且避免该问题反复发生。
Linux系统ECS运行的稳定性会受多方面影响，既与承载运行的基础设施硬件和软件环境有关，也受操作系统内部的运行环境影响。
- 如果ECS的异常状态是由承载运行的基础设施硬件或软件故障导致，系统会通过事件通知用户，以便于用户了解该类故障对ECS运行的影响。 事件的更多信息，请参见[事件概述](https://support.huaweicloud.com/usermanual-ecs/ecs_03_2302.html)。
  
- 如果ECS的异常状态是由操作系统内核bug、系统配置不当或程序过载等原因导致，则需要查看操作系统日志进行分析和诊断。
在Linux云服务器中，您可以配置将启动日志和异常故障等信息通过服务器的串口（串行端口，Serial Port）打印输出。
本节介绍为Linux云服务器配置串口日志的操作指导。
#### 背景知识
串口打印输出的日志会包含两种类型的信息：
- 系统启动开机时的日志内容。 Linux操作系统ECS启动开机时，默认会将开机过程产生的日志信息输出到串口。开机信息会被系统内核存储在ring buffer中，显示系统架构、CPU、RAM、挂载的硬件以及软件启动相关的系统信息。这类信息可以用于了解系统是否正常启动，检查预先设定的应用程序是否随系统启动等情况。
  
- 系统内核故障或异常时的日志内容。 内核故障或异常错误发生时，系统会按照配置的日志级别（由内核参数kernel.printk决定，默认级别为4 - KERN_WARNING）将对应信息输出到串口。内核错误(Kernel panic)是指操作系统在监测到内部的致命错误，并无法安全处理此错误时采取的动作。操作系统内核中处理Kernel panic的子程序通常会向串口控制台输出错误信息，以便于故障的调试，并等待系统被手动或自动重新引导。该程序提供的技术性信息通常用于诊断问题。
  
表1内核日志级别 
| 日志级别 | 对应名称         | 说明                                                                       |
|:---|:---|:---|
| 0   | KERN_EMERG   | The system is unusable.                                                |
| 1    | KERN_ALERT  | Actions that must be taken care of immediately.                        |
| 2    | KERN_CRIT     | Critical conditions.                                                     |
| 3    | KERN_ERR      | Noncritical error conditions.                                           |
| 4   | KERN_WARNING  | Warning conditions that should be taken care of.                        |
| 5     | KERN_NOTICE | Normal, but significant events.                                          |
| 6    | KERN_INFO  | Informational messages that require no action.                          |
| 7    | KERN_DEBUG  | Kernel debugging messages, output by the kernel if the developer enabled |
   
#### 操作步骤
介绍为x86以及鲲鹏架构ECS配置串口日志的操作步骤，公共镜像默认已配置。
- [x86架构ECS配置方法]
  本操作以CentOS操作系统为例进行介绍。
  1. 远程登录弹性云服务器。 详细操作，请参见[通过VNC登录Linux ECS](https://support.huaweicloud.com/usermanual-ecs/ecs_03_0136.html)。
     
  
  2. 执行以下命令，编辑/etc/default/grub，在GRUB_CMDLINE_LINUX双引号里最后添加：console=tty0 console=ttyS0,115200n8。 **vim /etc/default/grub**
     图1执行结果   
     ![](https://support.huaweicloud.com/ecs_faq/zh-cn_image_0000002477773953.png "点击放大") 
  
  3. 执行以下命令，刷新grub配置文件/boot/grub2/grub.cfg，不同操作系统命令和配置文件路径可能不同，请以实际情况为准。
     - CentOS：**grub2-mkconfig** **-o /boot/grub2/grub.cfg**
     
     - Ubuntu：**grub-mkconfig** **-o /boot/grub2/grub.cfg**
     
     
     图2执行结果（CentOS）   
     ![](https://support.huaweicloud.com/ecs_faq/zh-cn_image_0000002477776353.png "点击放大") 
  
  
  
  4. 执行以下命令，重启ECS使配置生效。 **reboot**
     
  
  5. 执行以下命令，检查配置结果。 **cat /proc/cmdline**
     图3检查结果   
     ![](https://support.huaweicloud.com/ecs_faq/zh-cn_image_0000002477777745.png "点击放大") 
   
- [鲲鹏架构ECS配置方法]
  本操作以Ubuntu操作系统为例进行介绍。
  1. 远程登录弹性云服务器。 详细操作，请参见[通过VNC登录Linux ECS](https://support.huaweicloud.com/usermanual-ecs/ecs_03_0136.html)。
     
  
  2. 执行以下命令，编辑/etc/default/grub，在GRUB_CMDLINE_LINUX双引号里最后添加：console=tty0 console=ttyAMA0,115200n8。 **vim /etc/default/grub**
     图4执行结果   
     ![](https://support.huaweicloud.com/ecs_faq/zh-cn_image_0000002477778425.png "点击放大") 
  
  3. 执行以下命令，刷新grub配置文件/boot/efi/EFI/\<操作系统\>/grub.cfg，不同操作系统命令和配置文件路径可能不同，请以实际情况为准。
     - centos：**grub2-mkconfig** **-o /boot/efi/EFI/centos/grub.cfg**
     
     - Ubuntu：**grub-mkconfig** **-o /boot/efi/EFI/ubuntu/grub.cfg**
     
     
     图5执行结果（Ubuntu）   
     ![](https://support.huaweicloud.com/ecs_faq/zh-cn_image_0000002444499374.png "点击放大") 
  
  
  
  4. 执行以下命令，重启ECS使配置生效。 **reboot**
     
  
  5. 执行以下命令，检查配置结果。 **cat /proc/cmdline**
     图6检查结果   
     ![](https://support.huaweicloud.com/ecs_faq/zh-cn_image_0000002444502054.png "点击放大") 
   
