linux 用户登陆过程 getty 及 login

开机流程
流程中的 agetty退出,运行login程序,其实是错误的描述
而是 agetty  execute /bin/login
此流程 也应用于 busybox 中的  /etc/inittab

在这里插入图片描述

开机脚本语法-busybox的inittab
# cat /proc/cmdline 
root=/dev/nfs rw nfsroot=192.168.1.250:/xxx,proto=tcp,nfsvers=3 console=tty0 console=ttySAC0,115200 init=/linuxrc ip=192.168.1.120 rootwait 
// 注意,这里的tty0 和 tty1 是一个效果,
// 如果这里是 tty2或者tty8 , 也和 tty1 是一个效果,即登陆后是tty1

这个条件下,/etc/inittab中
console::respawn:/sbin/getty -L  console 0 vt100
	或者 console::respawn:/sbin/getty 0 console
	或者 console::respawn:/sbin/getty console 0
会在 /dev/ttySAC0 上创建一个交互shell,启动信息会打印到屏幕上,但是不会在屏幕上建立一个交互shell

如果添加
tty0::askfirst:-/bin/sh 或 tty0::askfirst:/sbin/getty tty1 9600
也能在 tty0获取一个shell 
注意 : tty0 和 tty1 是同一个tty
// 所以不存在 tty0::respawn:/sbin/getty tty0 9600  ,因为他会和tty1::respawn:/sbin/getty tty1 9600 冲突  
busybox 中有效的 inittab
tty1::askfirst:-/bin/sh
tty2::askfirst:-/bin/sh
tty3::askfirst:-/bin/sh
tty4::askfirst:-/bin/sh
tty5::askfirst:-/bin/sh
tty6::askfirst:-/bin/sh
tty7::askfirst:-/bin/sh
// 一个显示器 配 7个 虚拟 tty(1-7) // tty0等同于 tty1
tty1::respawn:/sbin/getty tty1 9600
tty2::respawn:/sbin/getty tty2 9600
tty3::respawn:/sbin/getty tty3 9600
tty4::respawn:/sbin/getty tty4 9600
tty5::respawn:/sbin/getty tty5 9600
tty6::respawn:/sbin/getty tty6 9600
tty7::respawn:/sbin/getty tty7 9600
如何在shell中手动开启getty
如果没有指定 tty4::respawn:/sbin/getty tty4 9600  , 则切不到 tty4
则需要这么做,在一个终端内
/sbin/getty tty4 9600 ,但会得到如下提示 getty: setsid: Operation not permitted
暂时没有解决方案,可以尝试下面的命令(下面的命令没有解决我的问题)
	su root -c "/sbin/getty tty4 9600"

getty
/sbin/getty -L  console 0 vt100
	// -L 			: Set CLOCAL
	// console  	: 选的tty
	// 0        	: 波特率 // 如果是0 的话,leaves it unchanged,表示不更改其波特率,只写tdr
	// vt100 		: 终端类型

# getty --help
BusyBox v1.35.0 (2023-04-01 13:16:31 CST) multi-call binary.

Usage: getty [OPTIONS] BAUD_RATE[,BAUD_RATE]... TTY [TERMTYPE]

Open TTY, prompt for login name, then invoke /bin/login

        -h              Enable hardware RTS/CTS flow control
        -L              Set CLOCAL (ignore Carrier Detect state)
        -m              Get baud rate from modem's CONNECT status message
        -n              Don't prompt for login name
        -w              Wait for CR or LF before sending /etc/issue
        -i              Don't display /etc/issue
        -f ISSUE_FILE   Display ISSUE_FILE instead of /etc/issue
        -l LOGIN        Invoke LOGIN instead of /bin/login
        -t SEC          Terminate after SEC if no login name is read
        -I INITSTR      Send INITSTR before anything else
        -H HOST         Log HOST into the utmp file as the hostname

BAUD_RATE of 0 leaves it unchanged
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值