龙芯在启动参数里添加串口信息
一、背景
系统启动时若整机或板卡出现卡住现象,无法进入系统,可通过添加调试串口信息来追踪内核启动进度,以便快速定位问题。
龙芯平台默认使用UART0作为调试串口,配置参数为:console=ttyS0,115200 earlycon=uart,mmio,0x1fe001e0
,添加串口信息时也要去掉quiet
参数 ,也可以添加上,设置日志级别 loglevel=8
。
操作环境:
- 固件UEFI和PMON
- loongnix系统
- 整机LS3A6000 NUC
下面将分别说明具体配置方法。
二、固件UEFI
大部分系统基本都支持uefi启动,都有grubloongarch64.efi与grub.cfg文件。
2.1 启动到grub启动项界面
需要加串口调试,在此界面按e
进入编辑选项
2.2 进入编译选项界面
2.3 添加串口信息
- 去掉
quiet
- 添加
console=ttyS0,115200 earlycon=uart,mmio,0x1fe001e0
将光标通过上下左右按键,移动至linux开头的那一行,并在行末加入串口参数console=ttyS0,115200 earlycon=uart,mmio,0x1fe001e0
操作完成之后,按Ctrl+x
或F10
即可启动系统,此时串口上会输出内核启动日志信息。
备注:
以上改动是单次生效!!! 如果想永久生效,系统下修改grub.cfg 文件
三、固件PMON
固件是pmon时,需要确认系统是否支持pmon引导,一般支持pmon引导的系统,在根/
目录或/boot/
目录下都有boot.cfg文件。
启动到pmon命令行,按C可以进入pmon命令行,命令行下执行devls
,查看盘识别情况。例如:系统存在nvme盘里
3.1 有boot.cfg启动文件
- 查找boot.cfg文件
执行命令:load /dev/fs/ext3@nvme0b/
- 打印出boot.cfg内容
执行命令:devcp /dev/fs/ext3@nvme0b/boot.cfg tty0
- 手动加载启动
3.2 没有boot.cfg启动文件
系统不支持pmon引导时,可以尝试手动引导,首先要找到内核与文件系统镜像文件,以及启动参数信息。
- 查找nvme盘第一个分区(一般是fat格式)所有目录,未发现内核与文件系统镜像文件。
- 查找nvme盘第二个分区(一般是ext4格式)目录,
发现镜像文件
- 查找启动参数信息,一般在grub目录下grub.cfg文件里
查看grub.cfg内容,执行devcp /dev/fs/ext4@nvme0b/grub/grub.cfg tty0
,找到启动项,从linux 行获取启动参数信息
- 手动加载启动
3.3 使能efi_support
当3.1与3.2 都不能满足时,可以在pmon配置文件里使能efi_support,这样可以使用bootefi
命令加载BOOTLOONGARCH.EFI文件
加载命令:bootefi /dev/fs/fat@nvme0/EFI/BOOT/BOOTLOONGARCH.EFI
四、UEFI 手动加载其他情况
4.1 有grub.cfg
在UEFI下执行GRUB的efi文件后, 加入grub.cfg的路径有问题,则需要手动找到grub.cfg并且加载:
4.2 没有grub.cfg
有时候会遇到有grub,,但是没有grub.cfg的情况,这时需要手动加载内核和加载initrd文件,命令是: linux
命令和initrd
命令
例子:从U盘启动
- 内核文件vmlinux-es8388
- 系统镜像文件ls-mytools-2.cpio
boot
命令执行后开始启动
4.3 直接没有grub
详见:UEFI从U盘引导内核