1. 程式人生 > >arm linux串列埠新增密碼的總結

arm linux串列埠新增密碼的總結

1,先對init程序啟動過程簡單分析
在kernel/init/main.c的init函式中有如下程式碼:
if(execute_command)
execve(execute_command,argv_init,envp_init);
execve("/sbin/init",argv_init,envp_init);
bootloader會傳給核心的main函式 init=/linuxrc這個引數,於是就會執行下面的這句
execute_command = “linuxrc”,busybox中_install目錄下的linuxrc是Busybox的一個軟連結,指向/bin/busybox,而/sbin/init也是/bin/busybox的符號連結。
Busybox init程序啟動流程:
Busybox initt 程式對應的程式碼在init/init.c檔案中,init啟動的第一個函式是int init_main(int argc UNUSED_PARAM, char **argv)
在init_main()函式中會呼叫parse_inittab(void)函式.
static void parse_inittab(void)
{
#if ENABLE_FEATURE_USE_INITTAB
char *token[4];
parser_t *parser = config_open2("/etc/inittab", fopen_for_read);

if (parser == NULL)

#endif

}
2, /etc/inittab 檔案預設基本流程如下
::sysinit:/etc/init.d/rcS
::respawn:/sbin/getty -L ttyS000 115200 vt100 -n root -I “Auto login as root …” //自動以root登陸
::askfirst:/bin/sh
::ctrlaltdel:/sbin/reboot
::shutdown:/sbin/swapoff -a
::shutdown:/bin/umount -a -r
::restart:/sbin/init
3.給串列埠新增密碼
在/etc/inittab
註釋掉自動以root登陸
#::respawn:/sbin/getty -L ttyS000 115200 vt100 -n root -I “Auto login as root …”
新增:
::sysinit:/bin/hostname noname
::respawn:-/bin/login
hostname 是用來設定主機名稱,可用uname -n 檢視。
4, 網上有些方法:
::respawn:/sbin/getty -L ttyS000 115200 vt100
但經過測試,其超時會直接無需密碼登陸。
5,在第三步前,需要現設定密碼。方法如下
passwd user