3

Linux系统管理手册第二章习题实践

 2 years ago
source link: https://blogread.cn/it/article/696?f=hot1
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

Linux系统管理手册第二章习题实践

浏览:1620次  出处信息
  • E2.1 为什么在安装LILO引导加载程序之前先运行lilo -t很重要?该怎样引导一个名字不是vmlinuz的内核?

A: 任何引导程序在加载到MBR之前都应该检查配置文件的正确性,对于没有引导时可编辑特性的LILO更应如此,因此在执行lilo或者lilo -v 之前,先执行lilo -t 来测试配置文件的正确性是一个良好的习惯。引导配置/etc/lilo.conf里可以通过image指令来指定内核的名字,和内核具体的命名没有关系。

  • E2.2 为什么不应该用计算机机箱上的电源开关来关闭Linux系统?有什么别的办法来替代?

A: 似乎很多人觉得Linux的文件系统不够健壮,因为一次意外的掉电或者非法关机都会导致文件系统损毁,从而无法正常引导系统。所以,正确的关闭Linux系统是非常重要的。遗憾的是,目前Linux在ACPI方面支持得并不太好,所以有些机器不同通过直接按电源按钮来触发系统正常关闭。这种情况下,使用正确的关机指令很重要,比如shutdown -h now,init 0,poweroff等指令都能正常关闭系统。

  • E2.3 用grub命令行引导一个grub.conf里没有的内核?

A: 这就是考察对grub命令行的掌握了,在出现grub引导界面时,按字母c,进入grub命令行,然后依次输入
root (hdX,Y)
kernel /vmlinuz-<version> root=LABEL=<label> [ options ]
initrd /initrd-<version>
boot
就可以引导你指定的内核。

  • ♥ E2.4 试述运行级的概念,列出Linux定义的运行级,并简短描述每一个运行级。运行级1和S有什么区别?

A:运行级是Linux系统定义的进入系统不同状态的一个描述,每一个运行级用来补充运行特定的服务。目前,Linux定义了0-6,S/single,emergency等9个运行级别。分别描述如下:

0 关机,永远不要设置它为默认运行级别
1 单用户模式,用于系统紧急恢复,备份等特殊情况
2 多用户,没有NFS支持
3 全特征多用户文字模式
4 保留
5 全特征图形模式(X11)
6 重启,永远不要设置它为默认运行级别
s,S,Single 单用户模式的另外一个选择,但是有区别
emergency 绕过rc.sysinit,执行sulogin

运行级1关闭所有的多用户和远程登录进程,确保系统运行在最小的软件组合模式下。而S仅仅是提供一个用户输入root口令的提示,而它本身不是最终的运行目的。

  • ♥ E2.5 编写一个启动脚本,启动名为“foot”的守护进程(/usr/local/sbin/foo),它是一项网络服务。说明如何把它融入系统,在引导时刻自动启动。

A:脚本模型如下:

#cat /etc/init.d/foo
 
#!/bin/bash
#
# chkconfig: 35 90 12
# description: Foo server
#
 
# Get function from functions library
. /etc/init.d/functions
 
# Start the service foo
start() {
        initlog -c "echo -n Starting foo server: "
        /usr/local/sbin/foo &
        ### Create the lock file ###
        touch /var/lock/subsys/foo
        success $"FOO server startup"
        echo
}
 
# Restart the service foo
stop() {
        initlog -c "echo -n Stopping foo server: "
        killproc foo
        ### Now, delete the lock file ###
        rm -f /var/lock/subsys/foo
        echo
}
 
### main logic ###
case "$1" in
  start)
        start
        ;;
  stop)
        stop
        ;;
  status)
        status foo
        ;;
  restart|reload|condrestart)
        stop
        start
        ;;
  *)
        echo $"Usage: $0 {start|stop|restart|reload|status}"
        exit 1
esac
 
exit 0

对于R系统,使用chkconfig -add foo 方式添加到系统里,如何使用chkconfig -level 的方式设定每一个运行级别的启动停止选项。对于D系统,脚本头需要加入一些LSB的信息进去,类似如下:

### BEGIN INIT INFO
# Provides:          foo
# Required-Start:    $remote_fs $syslog
# Required-Stop:     $remote_fs $syslog
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Start daemon at boot time
# Description:       Enable service provided by daemon.
### END INIT INFO

而后使用update-rc.d foo default,先加入到系统中,最后使用update-rc.d foo start 0123 stop 456来设定个运行级的启动停止情况。

  • ♥ E2.6 取得并安装mactime程序。运行mactime(它是TCT工具集的一部分),创建一个域文件系统相关联的时间戳初始数据库。重启机器。再次运行mactime,判断因为引导机器而被修改的文件有哪些,哪些文件访问了而没有修改?(需要root权限)

A:对于D系统,可以使用sudo apt-get install tct来安装tct工具集。对于R系统,如果yum仓库里没有,就从官方站点http://www.porcupine.org/forensics/tct.html 下载最新的版本并编译。
mactime需要配合TCT工具集里的其他程序一起使用,因此我打算找一个时间单独说说TCT以及TCT的补充工具集。

  • ♥♥ E2.7 如果一个系统处于运行级4,而用户运行了命令telinit 1,init会采取哪些步骤?命令最终的结果将会是什么样子?

A:简单的来说,执行telinit 1指令,需要两个阶段的工作要做。第一个阶段是将当前运行级(即运行级4)的所有已经运行的服务停止,也就是所有/etc/rc.d/rc3.d/(Debian是/etc/rc3.d/)下所有S开头的服务,执行对应的K开头的脚本。完成这个步骤后。转入到/etc/rc.d/rc1.d/(Debian是/etc/rc1.d/),执行所有S开头的服务。
执行后完,系统进入到单用户模式。

  • ♥♥ E2.8 绘制一张依赖关系图,画出在您的Linux系统上启动别的守护进程之前,必须启动哪些守护进程?

A: 手工做这件事情,不是不可以,但是显然很累。我目前想到的一个办法是用bootchart这个记录系统启动时间的工具,虽然它的功能是分析系统启动时,各服务所占用的时间,不过它绘制的图,也同事暗示了各服务的依赖关系。比如这个链接地址(http://www.bootchart.org/images/bootchart.debian.mcrae.0.png),图片太大,就不粘贴到这里了。

  • ♥♥ E2.9 顺序列出创建一个能工作的多OS系统-包含Linux和Windows-所用到的步骤。使用GRUB和Windows的引导加载程序。

A:只要是包含了Windows的多OS系统,一定要先安装Windows系统,因为Windows的ntldr程序太霸道,只认自家系统的引导程序,别的一律删除。因此安装完Windows后,然后再安装Linux,绝大部分发行版本在安装的过程中,都能顺利识别出当前机器已经安装的OS,并在其引导配置文件里加入对应的启动入口。无论是GRUB还是LILO均能完成这个功能。如果没有。只需要在GRUB里,加入类似下面的几行:
title windows
rootnoverify (hd0,1)
chainloader +1
就可以了。

建议继续学习:

QQ技术交流群:445447336,欢迎加入!
扫一扫订阅我的微信号:IT技术博客大学习

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK