3.根文件系統構建(2)

根文件系統構建(1)

編寫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賬戶登錄,沒有配置密碼直接回車即可,之後就可以愉快的玩耍了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章