您当前的位置: 首页 > 学无止境 > 心得笔记 网站首页心得笔记
bash脚本编程之十二(Linux系统裁减之二) 系统函数库-实现mini系统免登陆
发布时间:2018-10-13 14:21:52编辑:雪饮阅读()
(1)自动挂载常用分区
[root@localhost ~]# vi /mount/sysroot/etc/fstab
[root@localhost ~]# cat /mount/sysroot/etc/fstab
/dev/hda2 / ext3 defaults 0 0
/dev/hda1 /boot ext3 defaults 0 0
proc /proc proc defaults 0 0
sysfs /sys sysfs defaults 0 0
解析:
fstab文件解析
第一列:待挂载设备
第二列:设备的挂载点,就是你要挂载到哪个目录下
第三列:磁盘文件系统的格式
第四列:文件系统的参数
defaults: 同时具有rw,suid,dev,exec,auto,nouser,async等默认参数的设置
第五列:能否被dump备份命令作用
0:代表不被dump备份
第六列:是否检查扇区
0:不用检查
(2)配置inittab
[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/agetty -n -l /bin/bash 38400 tty1
2:2345:respawn:/sbin/agetty -n -l /bin/bash 38400 tty2
解析:
agetty:打开 tty端口,为登录名称建立命令控制符,并引出login程序
-n:不登录
-l:指定login脚本
38400:设定终端速率,即每秒显示字符数,这个值可以自定义,个人建议最好是38400
(3)配置sysinit
[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"
echo "Remount rootfs..."
mount -n -o remount,rw /
echo "Set the hostname..."
[ -f /etc/sysconfig/network ] && . /etc/sysconfig/network
[ -z $HOSTNAME -o "$HOSTNAME" == '(none)' ] && HOSTNAME=localhost
/bin/hostname $HOSTNAME
解析:
这里将之前脚本中已经注释的进入bash代码段直接替换为挂载根文件系统为读写以及读取或设定读取hostname的代码段.
[ -z STRING ] “STRING” 的长度为零则为真。
[ -o OPTIONNAME ] 如果 shell选项 “OPTIONNAME” 开启则为真。
(4)认识stty
打印或更改terminal(终端)的设置
-F --file=DEVICE 打开或使用指定的“设备(DEVICE)”用以代替stdin
size:-F指定的设备的大小,显示的值分别代表纵向和横向。
speed:-F指定的设备的显示字符速度。
[root@localhost ~]# stty -F /dev/console size
25 80
[root@localhost ~]# stty -F /dev/console speed
0
(5)配置sysconfig/network
[root@localhost ~]# mkdir /mount/sysroot/etc/sysconfig
[root@localhost ~]# vi /mount/sysroot/etc/sysconfig/network
[root@localhost ~]# cat /mount/sysroot/etc/sysconfig/network
HOSTNAME=minilinux.magedu.com
(6)修复上一次的tserver一处bug(usage方法)
[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
(7)移植相关命令
agetty:
[root@localhost ~]# which agetty
/sbin/agetty
[root@localhost ~]# ldd /sbin/agetty
linux-vdso.so.1 => (0x00007fffc96a5000)
libc.so.6 => /lib64/libc.so.6 (0x00000039f4e00000)
/lib64/ld-linux-x86-64.so.2 (0x00000039f4a00000)
[root@localhost ~]# cp /sbin/agetty /mount/sysroot/sbin/
hostname:
[root@localhost ~]# ldd /bin/hostname
linux-vdso.so.1 => (0x00007fff8c3fd000)
libselinux.so.1 => /lib64/libselinux.so.1 (0x00000039f6600000)
libc.so.6 => /lib64/libc.so.6 (0x00000039f4e00000)
libdl.so.2 => /lib64/libdl.so.2 (0x00000039f5a00000)
libsepol.so.1 => /lib64/libsepol.so.1 (0x00000039f6a00000)
/lib64/ld-linux-x86-64.so.2 (0x00000039f4a00000)
[root@localhost ~]# cp /bin/hostname /mount/sysroot/bin
basename:
[root@localhost ~]# which basename
/bin/basename
[root@localhost ~]# ldd /bin/basename
linux-vdso.so.1 => (0x00007fff92bfd000)
libc.so.6 => /lib64/libc.so.6 (0x00000039f4e00000)
/lib64/ld-linux-x86-64.so.2 (0x00000039f4a00000)
[root@localhost ~]# cp /bin/basename /mount/sysroot/bin/
关键字词:linux,系统,登陆
相关文章
- bash脚本编程之十二(Linux系统裁减之二) 系统函数库-
- bash脚本编程之十二(Linux系统裁减之二) 系统函数库-
- bash脚本编程之十二(Linux系统裁减之二) 系统函数库-
- bash脚本编程之十二(Linux系统裁减之二) 系统函数库-
- bash脚本编程之十二(Linux系统裁减之二) 系统函数库-
- bash脚本编程之十二(Linux系统裁减之二) 系统函数库-
- 马哥linux运维学习笔记-Linux内核编译及系统裁减之一
- 马哥linux运维学习笔记-Linux系统启动流程之二 内核及
- 马哥linux运维学习笔记-Linux系统启动流程详解之一 运
- 马哥linux运维学习笔记-Linux进程管理之二