您当前的位置: 首页 > 学无止境 > 心得笔记 网站首页心得笔记
bash脚本编程之十二(Linux系统裁减之二) 系统函数库-实现mini系统的关机
发布时间:2018-10-13 14:07:28编辑:雪饮阅读()
当完成linux系统精简移植后会发现使用halt命令无法关机,如:
(1)回到原宿主机为当前mini系统建立关机脚本
vi /mount/sysroot/etc/rc.d/rc.sysdone
[root@localhost sysroot]# cat /mount/sysroot/etc/rc.d/rc.sysdone
#!bin/bash
#
sync
sleep 2
sync
exec /sbin/halt -p
脚本解析:
halt:默认只关闭当前进程,-p可切断电源
exec:将以其参数作为运行程序,并将该参数所代表的运行程序的父级程序替换
比如,halt命令是bash的子程序,若使用exec将halt作为参数则exec将替换bash将halt直接在exec上运行而不会继续依靠于原来的bash。
若是不用exec可能会导致bash自身无法关掉。
chmod +x /mount/sysroot/etc/rc.d/rc.sysdone
(2)移植该脚本所依赖的几个命令
[root@localhost sysroot]# which sync
/bin/sync
[root@localhost sysroot]# ldd /bin/sync
linux-vdso.so.1 => (0x00007fff93bfd000)
libc.so.6 => /lib64/libc.so.6 (0x00002af30775e000)
/lib64/ld-linux-x86-64.so.2 (0x00002af307540000)
[root@localhost sysroot]# cp /bin/sync /mount/sysroot/bin
[root@localhost sysroot]# which sleep
/bin/sleep
[root@localhost sysroot]# ldd /bin/sleep
linux-vdso.so.1 => (0x00007fff12ffd000)
libc.so.6 => /lib64/libc.so.6 (0x00002b4f2784a000)
/lib64/ld-linux-x86-64.so.2 (0x00002b4f2762c000)
[root@localhost sysroot]# cp /bin/sleep /mount/sysroot/bin
(3)将关机脚本添加到inittab中
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.sysdone
然后回到mini系统中"init 0或halt"都可以实现关机了。
关键字词:内核,系统,linux