rootfs系列文章:
编写inittab
inittab的格式为 终端设备:运行级别:执行条件:命令
执行条件可选有:sysinit, respawn, askfirst, wait, once,restart, ctrlaltdel, and shutdown.
sysinit:在系统引导期间执行进程
respawn:无论什么时候进程结束,都会重启这个进程
askfirst:和respawn的唯一区别是,在运行这个进程前,需要按下entr键确认
wait:进程执行,init将等待这个进程执行结束
once:进程执行
restart:重启时执行的进程
ctrlaltdel:接收到SIGINT信号,执行进程。在系统控制终端中按下ctrl+alt+del,可以发送SIGINT信号
shutdown:关闭时,执行的操作
::sysinit:/etc/init.d/rcS
::askfirst:-/bin/sh
::ctrlaltdel:/sbin/reboot
::shutdown:/bin/umount -a –r
1:在系统引导的时候执行/etc/init.d/rcS
2.按下enter执行sh
3.ctrl+alt+del被按下就重启
4.关机的时候卸载所有挂载设备
编写rcS文件
#!/bin/sh
PATH=/sbin:/bin:/usr/sbin:/usr/bin
#设置环境变量
runlevel=S
#单用户运行模式
prevlevel=N
umask 022
#文件创建默认权限
export PATH runlevel prevlevel
#导出环境变量
mount -a
#挂载/etc/fstab的所有配置
echo /sbin/mdev > /proc/sys/kernel/hotplug
mdev -s
#启用mdev
/bin/hostname -F /etc/sysconfig/HOSTNAME
#设置用户名
#ifconfig eth0 192.168.0.88
编写fstab文件
/etc/fstab
#device mount-point type options dump fsck order
proc /proc proc defaults 0 0
tmpfs /tmp tmpfs defaults 0 0
sysfs /sys sysfs defaults 0 0
tmpfs /dev tmpfs defaults 0 0
var /dev tmpfs defaults 0 0
添加hostname文件
/etc/sysconfig/HOSTNAME
直接写入主机名
minicoco
到这里可以启动下系统看看了,设备挂载和/dev下的驱动节点都已经生成好了,执行命令hostname可以显示出minicoco,可是命令行开头并没有显示主机名和登录用户名,这时候还要配置登录行为。
profile文件
etc/profile
这个文件配置了最大文件句柄和用户名
# Ash profile
# vim: syntax=sh
# No core files by default
ulimit -S -c 0 > /dev/null 2>&1
USER="`id -un`"
LOGNAME=$USER
PS1='[\u@\h \W]\# '
PATH=$PATH
HOSTNAME=`/bin/hostname`
export USER LOGNAME PS1 PATH
这个时候有主机名了,但还缺少用户名
passwd文件
/etc/passwd 先配个root用户,其他的等后面再创建
root:x:0:0:root:/root:/bin/sh
shadow文件
/etc/shadow
root:::0:99999:7:::
分九段,第二段为加密后的密码,直接先为空,这个时候登录以及可以看到用户名和主机了,但是还没有登录流程,下面配置一下用户登录。
修改inittab
之前是使用
::askfirst:-/bin/sh
直接进入了终端,下面吧这行换成getty来登录,先看一下自己机器上的串口驱动有哪些,以及正在使用的串口驱动
cat /proc/tty/drivers
/dev/tty /dev/tty 5 0 system:/dev/tty
/dev/console /dev/console 5 1 system:console
/dev/ptmx /dev/ptmx 5 2 system
/dev/vc/0 /dev/vc/0 4 0 system:vtmaster
usbserial /dev/ttyUSB 188 0-253 serial
pty_slave /dev/pts 136 0-1048575 pty:slave
pty_master /dev/ptm 128 0-1048575 pty:master
pty_slave /dev/ttyp 3 0-31 pty:slave
pty_master /dev/pty 2 0-31 pty:master
unknown /dev/tty 4 1-63 console
ttyAMA /dev/ttyAMA 204 64-77 serial
cat /proc/tty/driver/ttyAMA
serinfo:1.0 driver revision:
0: uart:PL011 rev3 mmio:0xC00A1000 irq:7 tx:113149 rx:5329 RTS|DTR
1: uart:PL011 rev3 mmio:0xC00A0000 irq:6 tx:0 rx:0 CTS|DSR|CD
2: uart:PL011 rev3 mmio:0xC00A2000 irq:8 tx:0 rx:0
3: uart:PL011 rev3 mmio:0xC00A3000 irq:9 tx:0 rx:0
4: uart:PL011 rev3 mmio:0xC006D000 irq:10 tx:0 rx:0
我这里是ttyAMA,查看/dev下的驱动文件,其实是ttyAMA0,可以使用下面的方法来验证,可以看到终端会另起一行打印123
echo 123 > /dev/ttyAMA0
因此将inittab中启动的配置换成
ttyAMA0::respawn:/sbin/getty -L ttyAMA0 115200
这个时候重启会让我们登录,先用root账户登录,没有配置密码直接回车即可,之后就可以愉快的玩耍了。