一步步完善rootfs:3.用户登录

用户登录

一、进入终端

  • 免登录方式:先执行 profile 文件,再执行 /bin/sh ,然后就会出现命令行
    ::respawn:-/bin/sh
  • 登录方式:使用 /bin/login 或者 /sbin/getty 来代替 /bin/sh
    ::respawn:/bin/login
    ::respawn:/sbin/getty -L tty 115200 vt100

最常见的用于登录的程序是/sbin/getty,在busybox中/sbin/getty和/bin/login差别不大。

二、修改inittab

下面使用getty方式登录,首先要知道系统中的tty是哪一个设备文件,我的串口设备文件有以下四个。注意不同的系统由于串口驱动不同,所以设备文件名会不一样。

查找控制台在使用哪一个串口设备文件的方法是:先找到类似的四五个比较像的串口设备名,然后依次执行echo hi > /dev/s3c2410_serialx,控制台有响应的串口设备就是我要找的那个设备。

inittab文件登录部分修改为:

#::askfirst:-/bin/sh
::respawn:/sbin/getty -L s3c2410_serial2 115200 vt100

重新启动系统,发现已经出现了登录提示,但是这里是登录不进去的,因为系统中还没有为用户设置密码。

三、添加passwd和shadow文件

passwd文件中存储用户的密码设置,shadow文件存储的是加密后的文件,采用密文存储。这两个文件可以从ubuntu系统中复制粘贴过来,做一些修改就可以用了。

[email protected]:/etc# cp passwd shadow /root/rootfs_zht/rootfs/etc/

修改passwd文件为以下内容,重点是:第一个/表示当前用户的主目录,登录之后会默认切换到此目录,因为目前rootfs下还没有root目录,所以需要手动创建root目录;/bin/sh表示当前用户的默认脚本,登录之后加载此脚本。

root:x:0:0:root:/root:/bin/sh

改到这里就可以进行登录了,root用户的密码和ubuntu中的一样。

四、重置密码

打开shadow文件,将第一行以下不用的东西删掉,保留第一行,再把第一个冒号和第二个冒号之间的内容(即为加密之后的密码)删掉,剩下了如下所示内容:

root::14610:0:99999:7:::

这个时候再使用root用户登录时,不需要输入密码就可以进入系统,使用passwd命令为root用户重新设置密码,到这里密码重置就完成了。


参考资料: 朱老师嵌入式Linux