您当前的位置: 首页 > 学无止境 > 心得笔记 网站首页心得笔记
bash脚本编程之十二(Linux系统裁减之二) 系统函数库-实现mini系统运行到命令行模式(运行级别3)
发布时间:2018-10-13 14:20:05编辑:雪饮阅读()
(1)为inittab新增命令模式运行级别3的启动项并给该模式下配置两个tty终端(标准情况下不止2个,这里只增加两个学习之用而已)
[root@localhost ~]# vi /mount/sysroot/etc/inittab
[root@localhost ~]# cat /mount/sysroot/etc/inittab
id:3:initdefault:
si::sysinit:/etc/rc.d/rc.sysinit
lo:0:wait:/etc/rc.d/rc 0
l3:3:wait:/etc/rc.d/rc 3
l6:6:wait:/etc/rc.d/rc 6
1:2345:respawn:/sbin/mingetty --loginprog=/bin/bash tty1
2:2345:respawn:/sbin/mingetty --loginprog=/bin/bash tty2
解析:
Linux mingetty命令是精简版的getty。
mingetty适用于本机上的登入程序。
(2)注释之前rc.sysinit脚本中打开bash的代码
[root@localhost ~]# vi /mount/sysroot/etc/rc.d/rc.sysinit
[root@localhost ~]# cat /mount/sysroot/etc/rc.d/rc.sysinit
#!/bin/bash
#
echo -e "\tWelcome to \033[34mMageEdu\033[0m Linux"
#/bin/bash
解析:
因为我们在(1)中新增了我们的两个tty,命令还没有运行到我们的运行级别3时候就已经给该脚本中的bash阻止了,因为bash运行后会运行一个用户登录的命令,而我们的微型系统目前还没有实现用户。
(3)编写一个测试服务脚本
[root@localhost ~]# vi /mount/sysroot/etc/rc.d/init.d/tserver
[root@localhost ~]# cat /mount/sysroot/etc/rc.d/init.d/tserver
#!/bin/bash
#
# chkconfig: 35 66 33
# description: test service script
#
prog=`basename $0`
lockfile=/var/lock/subsys/$prog
start(){
echo "Starting $prog .."
touch $lockfile
}
stop(){
echo "Stopping $prog ..."
rm -rf $lockfile
}
status(){
if [ -f $lockfile ]; then
echo "Running ..."
else
echo "Stopped..."
fi
}
usage(){
echo "Usage:$prog {start|stop|status|restart}
}
case $1 in
start)
start ;;
stop)
stop ;;
restart)
stop
start
;;
status)
status
;;
*)
usage
exit 1
;;
esac
赋予执行权限
chmod +x /mount/sysroot/etc/rc.d/init.d/tserver
解析:该脚本将用于模拟一个标准的服务chkconfig类脚本,我们预定他可以在3和5级别下运行,并且在3、5级别中66代表该脚本在其模式下运行,33代表该脚本在其模式下关闭。
(4)手动模拟运行3级别时测试脚本对各自级别文件夹的操作
3级别:
cd /mount/sysroot/etc/rc.d/rc3.d/
ln -sv ../init.d/tserver S66tserver
0级别:
cd /mount/sysroot/etc/rc.d/rc0.d/
ln -sv ../init.d/tserver K33tserver
6级别:
cd /mount/sysroot/etc/rc.d/rc6.d/
ln -sv ../init.d/tserver K33tserver
解析:
S:开启
K:关闭
注意:此处设定各个级别中符号链接的时候一定要是相对路径,因为我们将要在非宿主机中用。在非宿主机中可不认我们的绝对路径。
(5)移植sh命令和mingetty命令
sh:
[root@localhost ~]# cd /mount/sysroot/bin/
[root@localhost bin]# ln -sv bash sh
create symbolic link `sh' to `bash'
mingetty:
[root@localhost ~]# which mingetty
/sbin/mingetty
[root@localhost ~]# ldd /sbin/mingetty
linux-vdso.so.1 => (0x00007fff90518000)
libc.so.6 => /lib64/libc.so.6 (0x00000039f4e00000)
/lib64/ld-linux-x86-64.so.2 (0x00000039f4a00000)
[root@localhost ~]# cp /sbin/mingetty /mount/sysroot/sbin/
(6)进入命令行模式运行级别3
直接正常启动mini系统,若没有异常就会看到如下即表示成功进入了运行级别3的命令行模式,在vmwaer虚拟机中可以使用alt+f1或alt+f2进行切换刚才我们预定配置的两个tty
关键字词:内核,linux,模式