我正在使用虚拟机和主机操作系统作为 Ubuntu 10.10 在 VirtualBox 下调试内核模块。我正在使用 virtualbox 串口,但我的波特率是 115200。我的 grub 配置看起来像这样......
控制台=ttyS0,115200
有没有办法让我在来宾操作系统中更改该设置,以便虚拟串行端口以更快的波特率工作?我试过使用setserial。这并没有给我一个错误,但是当我为控制台使用更快的波特率重新编译时,我没有看到任何变化。
谢谢!
我正在尝试使用来自Igor Pe\xc4\x8dovnik\'s builds的Debian 8 映像将A20-OLinuXino-LIME2设置为无头文件服务器。
\n\n我希望系统在启动过程中将其内核消息输出到串行控制台(ttyS0),并最终在 ttyS0 上显示登录提示。
\n\n默认情况下,该映像使用以下内核命令行:
\n\nconsole=tty1 root=/dev/mmcblk0p1 rootwait rootfstype=ext4 sunxi_ve_mem_reserve=0 sunxi_g2d_mem_reserve=0 sunxi_no_mali_mem_reserve sunxi_fb_mem_reserve=16 hdmi.audio=EDID:0 disp.screen0_output_mode=1920x1080p60 panic=10 consoleblank=0 enforcing=0 loglevel=1\nRun Code Online (Sandbox Code Playgroud)\n\n\xe2\x80\xa6 当然不会向 ttyS0 \xe2\x80\x94 输出任何内核消息 \xe2\x80\x94 我在 U-Boot\ 的“ ”Uncompressing Linux... done, booting the kernel.和产生登录提示的 systemd 之间没有得到任何输出。
我想我只需要替换console=tty1为console=ttyS0,115200n8,但随后 systemd 抓住串行控制台并压制内核,所以我只收到引导加载程序消息,然后是 systemd 的“ [ OK ] Started foo.”样式消息,最后是登录提示。
有没有办法[ 0.000000] foo在 ttyS0 上同时获取内核消息(“”)和 systemd 的输出?
\n或者至少有一种方法可以使 systemd 静音,以便在需要调试启动失败时可以看到内核消息?
我有一台屏幕坏了的笔记本电脑,我将其用作家庭服务器。所以我想通过使用串行控制台在其上安装 Devuan GNU/Linux。
我有一根零调制解调器串行电缆,并且我已成功使用它通过命令从另一台 Linux 笔记本电脑连接到树莓派(运行 FreeBSD)的串行控制台screen。
所以,现在我希望 Devuan 安装 DVD 能够自动设置串行控制台,并且我可以像使用 rpi 一样从另一台笔记本电脑访问它。不幸的是,情况并非如此:在另一台笔记本电脑上我有黑屏。
在 rpi 上我有一个串行适配器卡。在无屏笔记本电脑上,我有一个 USB/串行适配器。
那么:是否可以通过串行控制台运行 Devuan 安装?我是否需要修改安装映像或向其传递任何特殊参数以告诉它应该使用串行控制台?
编辑
我已经取得了一些进展,但还没有解决问题。我已经在有串口的台式机上进行了测试,所以我可以在没有USB适配器的情况下使用它。我的计划是让控制台在正在运行的系统上运行,然后尝试将所需的更改应用到安装映像。
我使用内核参数在串行控制台上获取了内核日志记录console=ttyS0,115200。我成功地通过添加在串行控制台上显示了 grub 菜单
serial --speed=115200 --unit=0 --word=8 --parity=no --stop=1
terminal_input --append serial
terminal_output --append serial
Run Code Online (Sandbox Code Playgroud)
在......的最后/etc/grub.d/40_custom
我还通过编辑/etc/inittab和添加ttyS0.
现在我陷入了下一步。我想用作服务器的计算机没有串行端口,因此我必须使用 USB 串行适配器。USB 适配器显示为/dev/ttyUSB0正在运行的系统上。
/etc/inittab如果我在for中定义一个控制台,ttyUSB0我会得到一个串行控制台。
如果我将内核参数更改为,则串行控制台上不会有内核日志console=ttyUSB0,115200记录。我想这是因为内核没有usbserialUSB/串行适配器所需的模块。我的下一次尝试将是编译带有内置模块的内核。
关于 GRUB2 菜单,我仍然有未解决的问题:
--unit=参数指定什么值:ttyS0映射到--unit=0,怎么样ttyUSB0?要在 Linux 上启用串行控制台,可以使用getty(最常见的是它的变体agetty)。该二进制文件将用于初始化TERM变量的值作为参数。
在 Debian 上,使用 Sys V init,默认值为 vt100。在 systemd 中,默认值曾经是vt102,现在是vt220。
在玩了一些 QEMU 虚拟机和virt-viewer,以及virsh console命令之后,我注意到了一些事情:
ls --color显示颜色,但vim语法高亮不起作用ls,并vim使用颜色所以我想独立于实际的“颜色支持”,每个应用程序都会查看TERM变量并相应地采取行动,这将解释上述差异。
阅读Serial Console HOWTO 后,我了解到TERM变量的值应取决于将连接到串行端口的物理终端的实际型号,根据其功能。
请注意,根据Lennart Poettering 的博客,TERM应仅使用真实虚拟终端(而不是串行终端)设置为linux。另一方面,Arch Linux 的 Wiki似乎并不介意(请参阅/etc/inittab …
所以我想要实现的目标似乎很简单,但我似乎无法找到一种方法来做到这一点,而不使用外部实用程序或不预安装的库。
我有一个运行 Linux 的嵌入式系统(内核 3.x,具体取决于型号)。在它上我可以访问大多数 GNU 核心实用程序(如 cat、sed、ls、tar 等)。
我可以通过它访问 shell 会话/dev/ttyUSBx,例如使用 screen :
screen /dev/ttyUSB0 9600
Run Code Online (Sandbox Code Playgroud)
我运行 screen 的计算机(我们称之为source)安装了 ArchLinux,可以访问互联网。
我试图访问的嵌入式系统(我们称之为target)是一台 Linux 机器,没有任何网络访问权限,只有一个串行端口/dev/ttyUSBx。
我需要将二进制文件复制到目标上的特定位置,然后能够通过 cron 作业自动刷新某些硬件(在本例中为 FPGA)。
我无法真正在 上安装软件target,只能制作小型 shell 脚本。
你知道我可以使用任何 POSIX shell 方式来实现与 scp 相同的行为,但通过接口/dev/ttyUSBx而不是 ssh 吗?
我想到使用管道和文件重定向到:
-cat将二进制文件/dev/ttyUSBx从source.
- 在 上target,将流重定向到文件。
我什至不知道如何开始。我需要使用它的项目将于明天到期,但我现在迷失了方向,欢迎任何想法,最好是我可以直接从 shell 脚本使用的标准 POSIX 工具。
我确实可以在目标上访问 gcc,以防需要编译解决方案,但我仍然更喜欢 shell 解决方案,因为编译速度target非常慢,并且需要更多的努力才能部署到多台计算机。
我的目标是自动化此工作流程(尽可能减少用户交互)。也许像将target文件系统挂载为 NFS …
我正在运行 FreeBSD 12.1-RELEASE 作为bhyve虚拟机的主机。
我有一个在 VM 中运行的 FreeBSD 12.1-RELEASE 来宾。我想为其配置两个 TTY 级设备。
根据手册页,为了使用两个 TTY 类设备启动 VM,我必须使用类似于以下的命令行选项启动 bhyve:-l com1,/dev/nmdm0B -l com2,/dev/nmdm1B. 然后我应该能够通过这两个带有和的nullmodem 终端连接到来宾。cu -l /dev/nmdm0Acu -l /dev/nmdm1A
第一个命令按预期工作:cu -l /dev/nmdm0A向我显示来宾的主控制台。
然而,第二个命令附加到来宾,但什么也不显示。我希望向我显示一个登录提示,就像切换到另一个 TTY 一样。
我错过了什么?
来宾是全新安装的 FreeBSD。
dmesg | grep uart在guest上的输出如下:
uart0: <16550 or compatible> port 0x3f8-0x3ff irq 4 flags 0x10 on acpi0
uart0: console (115200,n,8,1)
uart1: <16550 or compatible> port 0x2f8-0x2ff irq 3 on acpi0
Run Code Online (Sandbox Code Playgroud)
我已经尝试hint.uart.1.flags …
我用(CentOS/RHEL)虚拟机做了很多本地开发工作。与其使用默认的 root 密码配置所有内容——如果暴露在网络中,可能会出现问题——我想将它们配置为仅允许在串行控制台上进行无密码 root 登录。
我的第一次尝试是使用以下选项简单地用命令行替换默认ExecStart命令 :serial-getty@.service--autologin
ExecStart=-/sbin/agetty -o '-p -- \\u' --keep-baud 115200,38400,9600 --noclear --autologin root ttyS0 $TERM
Run Code Online (Sandbox Code Playgroud)
虽然这会跳过login:提示,但它仍会提示输入 root 密码。这似乎是loginLinux 下程序的一个限制。
我还尝试用 shell 替换默认登录程序,如下所示:
ExecStart=-/sbin/agetty -o '-p -- \\u' --keep-baud 115200,38400,9600 --noclear -n -l /bin/bash ttyS0 $TERM
Run Code Online (Sandbox Code Playgroud)
但这与 selinux 发生冲突:虽然我得到了一个bashshell,但它无法访问任何东西:
bash: /root/.bashrc: Permission denied
# ls /etc/systemd
ls: cannot open directory '/etc/systemd': Permission denied
Run Code Online (Sandbox Code Playgroud)
在网络的其他地方,人们建议只从 中删除密码哈希/etc/{password,shadow},但这当然会导致一系列不同的问题:现在任何用户都可以su -没有密码。
关于如何使其正常工作的任何想法?
我正在尝试通过串行端口配置 Cisco(小型企业 300)。我在这里读到: http: //www.commandlinefu.com/commands/view/6130/use-screen-as-a-terminal-emulator-to-connect-to-serial-consoles
我可以使用屏幕连接到交换机,但是当我尝试命令时
screen /dev/ttyUSB0 9600
Run Code Online (Sandbox Code Playgroud)
我得到的只是一堆奇怪的角色。
该设备通过 Logilink 串行 USB 适配器连接。我曾在其中找到过该芯片的名称,但现在似乎再也找不到了。
这是在 Debian 7.0 上进行的,但我也在 Linux Mint 上尝试过。也没起作用。
首先尝试了minicom,没有用。这就是为什么我转向谷歌并找到了上述网站。不过,它似乎在屏幕上工作得很好,这意味着我刚刚在带有最新驱动程序的 Windows 7+putty 上尝试过它,它产生了与屏幕完全相同的输出。所以我开始认为该死的加密狗可能坏了。
在 Solaris 上我使用 stop+a 进入 prom 如果终端是没有停止键的串行控制台,那么中断键是什么?我试试
stty -a
Run Code Online (Sandbox Code Playgroud)
但没有找到破解键。
CTRL+C当然不起作用,因为只有中断程序
我有 2 台通过模拟 vt220 的串行连接(空调制解调器)连接的计算机。我想从 shell 脚本发送中断信号 (Magic SysRq)。在不编写自定义程序的情况下如何做到这一点?
terminal-emulator signals shell-script serial-port serial-console
serial-console ×11
linux ×3
serial-port ×3
console ×2
shell-script ×2
centos ×1
cisco ×1
cp ×1
debian ×1
devuan ×1
embedded ×1
flash-memory ×1
freebsd ×1
gnu-screen ×1
linux-kernel ×1
rhel ×1
signals ×1
solaris ×1
sparc ×1
systemd ×1
tty ×1
ttyusb ×1
u-boot ×1
uart ×1
usb ×1
virtualbox ×1