笔记整理—内核!启动!—kernel部分(7)rcs文件和登录部分与密码解析
该文件的位置在/etc/init.d/rcs,前文说过这个是一个配置文件,最开始的地方首先就是PATH相关的用export导出相关的PATH做环境变量,将可执行路径导为PATH执行时就不用写全路径了,该位置的PATH路径导出了/bin、/sbin、/usr/bin、/usr/sbin一类的路径,作为常见的执行指令的路径,在进入命令行后可以直接使用。
busybox用硬编码的方式写入了一些PATH(bb_PATH_ROOT_PATH[]ALIGN1)。导出的PATH路径可以通过echo PATH进行查看。
runlevel=S export runlevel。运行级别(0~6)也可说作是状态,在启动阶段,init runlevel例如:init 0意为关机、init 6意为restart、runlevel S为单用户模式。
umask 022是一个shell指令,用于设置umask值,用于决定用户创建文件的默认权限。
mount -a挂载文件系统,-a表示挂载所有能挂载的文件系统,根据fstab进行挂载,起挂载的几乎是虚拟文件系统。
当一个文件输出为不存在,但实际上是有这个文件时:①去看看权限。②去看看内容(例如文件在windows转linux时的/r/n的换行符不同的问题)。③动态链接库不存在的问题。
umask值+文件的真实权限=666.如umask=022,则文件的权限=644。
mount挂载将虚拟文件挂载到某个文夹,挂载点就是将目标文件系统挂载到某个目录,这个目录就是挂载点。
/pros目录在服务器中为空,但是在板子上进行内容查看是有东西的,/sys目录也一样,这说明文件系统挂载成功了。
mdev是udev的简化版本,是linux驱动工作的一个软件,只要用于生成驱动设备文件,生成在/dev下的设备文件。
echo /sbin/mdev >/proc/sys/kernel/hotplug
mdev -s
hostname是linux下的一个命令,shell指令,可以用于设置系统主机名.
/bin/hostname -F /etc/sysconfig/HOSTNAME (rcs中可进行设置)
-F是用于指定主机名的配置文件的,该文件放主机名字就行。在不设置hostname的情况下,打印hostname将会是IP地址。
ifconfig ethx xxx.xxx.xxx.xxx设置网络,默认ip地址是在bootargs中进行的设置(nfsroot)。
profile文件在/etc/profile是对hostname的完善,这样在命令行就能显示用户名了[@HOSTNAME]#。profile是被busybox(init进程)调用的。
用户登录界面:用多个小程序实现的大功能,如:inittab。askfirst:-/bin/sh会出现命令行,回车直接进入,所有就先不能去执行/bin/sh程序。
所有应该在之前添加/bin/login和/sbin/getty用这两去代替/bin/sh,可以将ubuntu的login/getty放进去,是能用的,但密码是加密文件,非明文。
将/bin/login添加到sysinit,将askfirst代替为::sysinit:bin/login。现将会出现用户界面,但依然无法实现用户登录,因为没有配置passwd和shadow。linux中在pawsswd与shadow文件存放密码,位置在/etc/,password放的是密码设置,shadow放的是密文密码。
password格式:用户名:口令:用户表示号:组表标识号:注释性描述:目录:登录shell。
口令段用x或者*代替password和shadow加密文件,直接cp ubuntu的文件进行使用,只保留root用户修改主目录在“/”,与登录的shell(/bin/sh)。
shadow只需保留root用户,busybox没有普通用户,若是root字段没有密码字段则会直接登录(ubuntu不行)。susybox在登录后可以用passwd root指令设置密码。所以可以想法去通过删除shadow的用户密码字段实现重置密码。
通过在inittab中,在sysinit段添加tty(串口/dev/xxx)可以消除tty报错。
getty与上文的十分相似,最常见的不是login而是getty,在busybox中用谁都一样。
本章结束了,下一章将会对动态链接库移植进行介绍。