当前位置: 首页 > news >正文

修改 Ubuntu Installer 从串口输出的方法

修改 Ubuntu Installer 从串口输出的方法

1. 问题背景

在某些只有串口(无VGA/显示器)的设备上安装 Ubuntu 时,发现默认的安装器(installer)输出在VGA,导致无法通过串口终端看到安装界面,影响无人值守或远程安装。

2. 初步尝试:修改 ISO 的 grub.cfg

  • 首先尝试将制作好的 Ubuntu 安装U盘或ISO镜像挂载到Linux系统。
  • 编辑 /boot/grub/grub.cfg/boot/grub/loopback.cfg,在 linux 启动参数行末尾添加:
    console=ttyS0,115200n8
    
  • 保存后重新制作U盘并启动设备,发现串口依然没有输出
  • 进入installer的命令行(shell)后,查看 /proc/cmdline,发现并没有包含自己添加的串口参数。

3. 问题定位:查找实际生效的启动参数

  • 在installer的命令行下,使用如下命令查找启动参数来源:
    grep -r '<cmdline内容片段>' /
    
  • 发现 /cdrom/isolinux/txt.cfg 文件中有与 /proc/cmdline 相同的启动参数内容。
  • 说明实际生效的启动参数并不是来自 grub.cfg,而是来自 isolinux/txt.cfg

4. 解决办法:两种方式修改 txt.cfg 增加串口参数

方式一:Linux下直接挂载和编辑

  1. 挂载ISO镜像或U盘
    sudo mount -o loop ubuntu-xx.xx.iso /mnt/iso
    # 或
    sudo mount /dev/sdX1 /mnt/usb
    
  2. 编辑 /isolinux/txt.cfg 文件
    • 找到类似如下的启动项:
      append   initrd=/casper/initrd quiet ---
      
    • 在行末添加串口参数:
      append  initrd=/casper/initrd  console=ttyS0,115200n8
      
    • 保存文件。
  3. 重新制作启动U盘或ISO(如有需要)。
  4. 启动设备并连接串口终端(如minicom、putty、screen等,波特率115200)。
  5. 此时Ubuntu installer的输出即可在串口终端看到,可以通过串口进行安装操作。

方式二:Windows下使用PowerISO修改ISO文件

  1. 用PowerISO打开Ubuntu ISO镜像文件
  2. 在PowerISO中浏览到 /isolinux/txt.cfg 文件。
  3. txt.cfg 文件导出到本地磁盘
  4. 用记事本或其他文本编辑器打开 txt.cfg,找到类似如下的启动项:
    append   initrd=/casper/initrd quiet ---
    
    在行末添加串口参数:
      append  initrd=/casper/initrd  console=ttyS0,115200n8
    
    保存文件。
  5. 将修改后的 txt.cfg 文件重新导入到ISO镜像的原位置,覆盖原文件。
  6. 保存ISO镜像。
  7. 用修改后的ISO制作启动U盘,或直接用作安装介质。
  8. 启动设备并连接串口终端(如putty、SecureCRT等,波特率115200),即可看到Ubuntu installer的串口输出。

5. 总结与建议

  • Ubuntu installer 的实际启动参数可能来源于 isolinux/txt.cfg,而不是 grub.cfg,尤其是在传统BIOS/Legacy模式下启动时。
  • 修改 txt.cfgappend 行,添加 console=ttyS0,115200n8,即可让安装器输出重定向到串口。
  • 如遇到串口无输出,建议进入installer命令行,查看 /proc/cmdline,并全盘 grep 启动参数,定位实际生效的配置文件。
  • 不同发行版/镜像可能配置文件路径略有不同,建议多尝试和查找。

http://www.xdnf.cn/news/674623.html

相关文章:

  • 电子邮箱设置SSL:构建邮件传输的加密护城河
  • Qwen2.5-VL视觉-语言模型做图片理解调研
  • 深入解析Spring Boot与Redis的集成实践
  • 麒麟系统 Linux(aarch64处理器)系统java项目接入海康SDK问题
  • 自动化Web页面性能测试介绍
  • [Java实战]Spring Boot切面编程实现日志记录(三十六)
  • ojs导入显示空白页错误信息
  • C-自定义类型
  • go中的channel
  • 蓝桥杯b组c++赛道---字典树
  • WPF【10_2】数据库与WPF实战-示例
  • 中级统计师-统计学基础知识-第七章 回归分析
  • 8.安卓逆向2-frida hook技术-frida环境安装
  • 【IOS】【OC】【应用内打印功能的实现】如何在APP内实现打印功能,连接本地打印机,把想要打印的界面打印成图片
  • 简单网络交换、路由-华三单区域OSPF
  • AGI大模型(34):Advanced RAG之Pre-Retrieval(预检索)优化
  • OpenAI O3惊现算法的自由意识,AGI初现?
  • 在VSTO C#中获取Excel范围内最后一个非空单元格,可以通过以下几种方法实现
  • C标准库函数:字符串操作
  • 【深度学习】7. 深度卷积神经网络架构:从 ILSVRC、LeNet 到 AlexNet、ZFNet、VGGNet,含pytorch代码结构
  • NLP助力非结构化文本抽取:实体关系提取实战
  • 【ASR】基于分块非自回归模型的流式端到端语音识别
  • qt之开发大恒usb3.0相机二
  • Pytorch
  • 题目 3341: 蓝桥杯2025年第十六届省赛真题-抽奖
  • 颠覆传统,智领未来——UMI企业智脑:重新定义企业智能化转型的全新可能
  • 不同电脑同一个网络ip地址一样吗?如何更改
  • ODSA架构与操作-1
  • 【Elasticsearch】_update api的增量更新
  • 企业级RAG技术实战指南:从理论到落地的全景解析