linux平台实现多个console控制台

linux的启动阶段分为内核加载、根文件系统加载,在内核加载时可以通过命令行支持多个控制台,而在根文件系统里可以在/etc/inittab表里添加多个控制台,这样就实现了多控制台监控。

具体步骤如下:
1. 内核命令行配置双控制台,如ttyS0、ttyUSB0,注意命令行里这两个设备的顺序,ttyUSB0的优先级要比ttyS0高。

Kernel command line: root=/dev/mtdblock4 rootfstype=cramfs rootflags=inband-tags console=ttyS0 console=ttyUSB0,115200n8 rdinit=/sbin/init mem=32M quiet

 

2. 在第1.执行完后,将会在根文件系统内部创建/dev/console设备,假如终端在上电时就在usb口上插入了usb-232,那么从内核跨度到根文件系统时/dev/console指向的是ttyUSB0设备,反之指向的是/dev/ttyS0。这里会引发另外一个问题,usb-232在usb口上热插拔,将导致/dev/ttyUSBx的序号增加,如ttyUSB0、ttyUSB1、ttyUSB2...所以需要修改驱动,
    内核驱动路径:drivers\usb\serial\usb-serial.c

static struct usb_serial *get_free_serial(struct usb_serial *serial,
				int num_ports, unsigned int *minor)
{
	unsigned int i, j;
	int good_spot;

	dev_dbg(&serial->interface->dev, "%s %d\n", __func__, num_ports);

	*minor = 0;
	
	mutex_lock(&table_lock);
	//-------------------------------------------------------
	//这里修改主要是为了实现USB作为控制台使用,强制
	//serial_table[0]=NULL,为了防止usb-232热插拔,
	//导致设备号增加(如/dev/ttyUSB0-->拔插-->/dev/ttyUSB1...), 
	//-------------------------------------------------------
	serial_table[0] = NULL;
	for (i = 0; i < SERIAL_TTY_MINORS; ++i) {
	...

 

3.修改根文件系统文件/etc/inittab,需要屏蔽console作为控制台来引导/bin/sh,原因是如果上电时就插入了usb-232,那么内核将选择ttyUSB0控制台传送给根文件系统,创建1号进程init,以此来加载我们的应用程序...如果此时拔掉了usb-232,那么/dev/ttyUSB0设备将被释放,init=1号进程将退出,导致根文件系统崩溃,所以要改为下面两种方式来启动控制台,这样两个控制台可以同时工作

#console::respawn:-/bin/sh
ttyS0::respawn:-/bin/sh
ttyUSB0::respawn:-/bin/sh

4. 在第3.步执行两个控制台后最终都会调用/bin/sh,通过busybox查看ash.c源码知道最终会调用/etc/profile文件,而我要运行的应用程序却在/etc/profile文件里启动,这里两个控制台将启动两个应用程序,很明显这不满足要求,所以需要修改profile文件,即在根文件系统里需确定ttyS0、ttyUSB0哪个为主,哪个为辅,由于ttyS0设备是一直存在,ttyUSB0设备插入时才可以生成,所以这里以ttyS0为主,即只在控制台为ttyS0才加载应用程序,其它控制台都跳过,修改profile文件如下

if [ $(tty) = "/dev/ttyS0" ]; then
	#加载运行的应用程序
fi	

5. 实测,ok!

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Linux控制台是指在Linux操作系统中,用户可以通过命令行界面(CLI)与系统进行交互的界面。它是一个基于文本的界面,用户可以使用命令来执行各种操作,如文件管理、进程管理、网络配置等。Linux控制台通常被称为终端或控制台,它是Linux系统中最基本的用户界面之一。 ### 回答2: Linux consoleLinux系统中的一个命令行终端,也被称为“虚拟终端”(Virtual Console)。与图形化用户界面(GUI)不同的是,Linux console采用字符化方式,用户可以通过键盘输入命令,并在屏幕上显示字符,进行文件管理、系统配置以及程序运行等操作。 Linux console支持多个终端会话,每个终端会话都是一个独立的进程,可以同时运行多个不同的命令。 Linux console的优点主要体现在以下方面: 1.速度快:相比于图形化用户界面(GUI),Linux console占用的资源更少,启动更快,响应更迅速。 2.高效:通过Linux console可以快速执行命令,查看系统状态、管理文件和软件等。 3.稳定:Linux console是系统的核心组成部,稳定性更高,可以保证系统运行的稳定性。 4.安全:由于Linux console只有root用户才有权限访问,因此可以避免非授权用户对系统的篡改和破坏。 5.可定制:Linux console支持用户自定义配色方案,使得用户可以根据自己的需求对终端界面进行定制。 尽管Linux console需要用户有一定的命令行操作基础,但对于一些需要远程控制、批量管理等场景,Linux console的优势依然突出,是Linux系统中不可或缺的一环。 ### 回答3: Linux console是一种基于字符的命令行界面,是Linux操作系统的重要组成部。它通常被认为是一个比较复杂和不适合普通用户的界面,但是对于Linux系统管理员和开发者来说,Linux console是十重要的。 Linux console可以让用户通过输入命令来完成各种任务。与图形用户界面不同的是,Linux console不需要任何图形资源和驱动程序支持,因此对系统的资源和性能要求更低,适合在低配置的设备上使用。此外,Linux console具有以下优点: 1. 可定制性高:用户可以自由地配置Linux console的颜色、字体、显示方式等,以便于自己的使用需求。 2. 安全性好:由于用户在Linux console中操作比在图形界面中更难犯错误,因此Linux console也更安全。此外,由于一些安全策略需要在命令行下使用,所以Linux console也很重要。 3. 能力强:Linux console因为可以直接操作系统,所以具备很强的能力,例如可以方便地进行文件管理、进程管理、软件安装等。 4. 可远程操作:由于Linux console是基于网络的,所以用户可以远程登录到其他计算机,执行操作和管理任务。 5. 可批处理:Linux console支持批处理任务,用户可以编写一系列命令来自动执行任务,提高工作效率。 总之,Linux console虽然对于新手来说较为复杂,但对于经验丰富的管理员来说,它是必不可少的工具。它提供了丰富的功能和强大的能力,使得管理员能够更有效、更方便地管理Linux系统。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值