3.根文件系统构建(2)

rootfs系列文章:

  1. 构建最小根文件系统
  2. 根文件系统构建(2)
  3. 构建Ubuntu系统

编写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账户登录,没有配置密码直接回车即可,之后就可以愉快的玩耍了。

猜你喜欢

转载自blog.csdn.net/qq_16054639/article/details/106671832