Linux管理员手册(5)--引导和关机

本节说明当Linux系统引导和关机时发生了什么,应该任何正确完成. 如果没有遵循正确的过程, 文件可能损坏或丢失.

  引导和关机概述

  开启计算机并导致其操作系统被加载的过程 叫引导. The name comes from an image of the computer pulling itself up from its bootstraps, but the act itself slightly more realistic.
  启动过程中,计算机首先加载了一小段叫 bootstrap loader的程序,它依次加载和启动操作系统, bootstrap loader通常存储在硬盘或软盘的固定的位置. 这2步过程的理由是操作系统大而复杂,而计算机加载的第一段代码很小(几百字节),以免使固件不必要地复杂化.

  不同的计算机的bootstrap不同. 对于PC, 计算机(它的BIOS)读软盘或硬盘的第一个扇区(叫 引导扇). bootstrap loader包含在这个扇区中. 它加载位于磁盘(和其他)的其他地方的操作系统.

  Linux加载后, 它创始化硬件和设备驱动, 然后运行 init . init 启动其他进程以允许用户登录和做其他事情. 这部分的细节在下面讨论.

  为了关闭一个Linux系统, 首先所有进程被告知结束(这使他们关闭所有文件, 完成必要的其他事情, 使之整齐地结束), 然后unmount文件系统和对换区, 最后打印可以关掉电源的信息到控制台. 如果没有遵循正确的过程, 可怕的事情可能发生. 最重要的, 文件系统缓冲cache可能没有回写, 这意味着其中的所有数据将丢失, 磁盘上的文件系统不完整, 并可能不可用.

  近观引导过程

  可以从软盘或硬盘引导Linux. 安装和开始指南的安装一节 ([Wel]) 告诉你如何安装Linux, 并按你希望的方式引导.

  当PC引导后, BIOS做一些测试保证一切正常, 然后开始真正的引导. 它选择一个磁盘(通常是第一个软驱, 如果有软盘的话, 否则就是第一个硬盘, 如果安装了的话; 顺序是可设置的). 然后读第一个扇区, 这叫引导扇; 对于硬盘, 也叫主引导记录, 因为硬盘可以包含多个分区, 每个分区都有自己的引导扇.

  引导扇包含一个小程序(小到可以存入一个扇区), 它的责任是从磁盘读入真正的操作系统并启动之. 从软盘启动Linux时, 引导扇包含的代码只读前数百个数据块(当然, 依赖于核心的大小)到预定的内存位置. Linux引导软盘上, 没有文件系统, 核心存在连续的扇区中, 因为这样简化了引导过程. 当然, 使用LILO(LInux LOader)可以从文件系统引导.

  从硬盘引导, 主引导记录的代码检查分区表(也在主引导记录扇区中), 确认活动分区(标记为可引导的分区), 从该分区读引导扇区, 然后启动该引导扇区的代码. 该分区的引导扇区的代码做与软盘所做的相同: 从该分区读入核心并启动. 但细节不同, 因为一般只给核心映象做一个单独的分区是没什么用的, 所以分区引导扇中的代码不能只顺序地读磁盘, 它必须找到文件系统把它们放在哪些扇区中. 有几个方法解决这个问题, 但最通常的方法是使用LILO. (关于如何做的细节与这里的讨论无关; 更多的信息请看LILO文档, 它很全面)

  用LILO引导时, 它读入并引导缺省核心. 也可以设置LILO, 使之能引导若干个核心之一, 甚至其他操作系统, 也可以在引导时让用户选择引导哪个核心或操作系统. LILO可以设置为如果有人在引导时按住 alt, shift, or ctrl键 (LILO启动时), LILO将不立即引导缺省的而问用户引导哪个. LILO可以设置为带一个timeout选项并询问, 当超时时, 就引导缺省核心.

  META: 除了LILO还有其他的引导载入程序, 如loadlin, 它们的信息将在下一版本中给出.

  从软盘和硬盘启动各有优势, 但通常从硬盘启动更好, 因为这避免了关于软盘的争论. 而且快. 然而, 安装相同从硬盘启动可能有更多的麻烦, 因此很多人先用软盘引导, 然后当相同工作很好后, 再安装LILO从硬盘引导.

  Linux核心被读入内存后, 才真正启动了, 概述如下:

  Linux核心是被压缩安装的, 所以它首先得解压自己. 核心映象开头包括一个解压的小程序.

  如果你有Linux可识别的super-VGA卡, 且支持一些特殊的文本模式(如100列40行), Linux会问你要用哪个模式. 编译核心时, 可能预定了一个视频模式, 就不会问了. 这也可以用LILO或 rdev 完成.
  然后, 核心检查还有什么其他硬件(硬盘, 软盘, 网卡...), 并配置适当的设备驱动; 同时, 输出查找结果的信息. 例如, 我引导时, 得到类似如下信息:

  LILO boot:
  Loading linux.
  Console: colour EGA+ 80x25, 8 virtual consoles
  Serial driver version 3.94 with no serial options enabled
  tty00 at 0x03f8 (irq = 4) is a 16450
  tty01 at 0x02f8 (irq = 3) is a 16450
  lp_init: lp1 exists (0), using polling driver
  Memory: 7332k/8192k available (300k kernel code, 384k reserved, 176k data)
  Floppy drive(s): fd0 is 1.44M, fd1 is 1.2M
  Loopback device init
  Warning WD8013 board not found at i/o = 280.
  Math coprocessor using irq13 error reporting.
  Partition check:
  hda: hda1 hda2 hda3
  VFS: Mounted root (ext filesystem).
  Linux version 0.99.pl9-1 (root@haven) 05/01/93 14:12:20

  精确的文本在不同系统上不同, 依赖硬件, Linux版本, 及其配置.
  然后核心试图mount根文件系统. 位置可在编译时设置, 或在任何时候使用 rdev 或LILO. 文件系统类型自动检测. 如果根文件系统mount 失败, 例如因为你忘了在核心中包含相关的文件系统驱动, 核心将失败, 系统停止(此时没什么可做了).

  根文件系统通常被只读mount(这可用与位置相同的方法). 这可使文件系统在mount上时检查; 检查一个可读写的已mount的文件系统可不是个好主意.

  然后, 核心在后台启动程序 init (位于/sbin/init ) (它的进程号是1). init 做许多启动工作. 确切的事依赖于设置; 参见章了解更多信息. 它至少要启动一些必要的后台守候程序.

  init 然后切换到多用户模式并启动getty ,提供虚拟控制台和串行线. getty 是一个让用户通过虚拟控制台和串行终端登录的程序. init 还可能启动一些其他程序, 基于设置.

  至此, 引导完成, 系统启动并正常运行.

  关于关机的更多信息

  关闭Linux系统时,遵循正确的过程是很重要的。否则,文件系统可能成为废物,文件可能变成杂乱的。这是因为Linux使用磁盘缓存,并不立即将数据写到磁盘,而是间歇地回写。这极大地改善了性能,但同时也意味着如果你只是关闭电源,cache可能保留着大量数据,而磁盘上的数据可能不是一个全部的正在工作的文件系统(因为有些数据已经回写到硬盘,而有些没有)。

  另一个不能直接关闭电源的原因是:在多任务系统中,后台可能运行着很多东西,关闭电源可能损失惨重。使用正确的关机顺序,可以保证所有的后台进程得以保存他们的数据。

  正常关闭Linux系统的命令是shutdown 。它通常使用2种方法之一。

  如果系统只有你一个用户,使用shutdown 的通常方法是退出所有运行程序,从所有虚拟控制台注销,用root登录(如果你已经是root,当然不必再注销、登录,但应该换到根目录,以免由于unmount出现问题),然后运行命令shutdown -h now (虽然单用户时一般不必要,但如果需要一个延时,用一个加号加一个表示分钟的数目代替now)

  如果系统是多用户,使用命令shutdown -h +time message, time是到系统停止的分钟数,message是告知所有用户系统关机原因的短信息。

  # shutdown -h +10 'We will install a new disk. System should
  〉 be back on-line in three hours.'
  #

  上面的命令警告所有用户,系统将在10分钟后关闭,他们最好保存信息,否则将丢失。警告将显示在所有登录的终端上,包括所有的xterm 上:
  Broadcast message from root (ttyp0) Wed Aug 2 01:03:25 1995...

  We will install a new disk. System should
  be back on-line in three hours.
  The system is going DOWN for system halt in 10 minutes !!

  警告在系统关闭前将自动重复数遍,随着时间流逝,间隔越来越短。

  当延时之后关闭系统真正开始时,所有文件系统(除了根)被unmount,所有用户进程(如果有人还未注销)被终止,守侯进程被关闭,所有东西都停下来。此后,init 打印出一条信息告知你可以关掉电源了。此时,也只有在此时,你才可以关闭电源。

  有时(虽然在任何好的系统上极少),系统可能不能正常关闭。例如,核心紊乱、崩溃等不正常情况,可能无法键入任何命令,因此正常关机可能有些困难,这是只能直接关机。问题可能没那么严重,比如,有人误动了你的键盘,核心和update 程序还在正常运行,等待一些时间可能是个好建议,这能使update 有机会将缓冲cache 中的数据回存硬盘,然后再直接关机。

  有人喜欢用sync 三遍来关闭系统,等到磁盘I/O停止,然后在关闭电源。如果没有什么程序运行着,这和用shutdown 等效。然而,它不unmount任何文件系统,可能导致ext2fs的"干净文件系统"标志出问题。这种3遍sync的方法是不推荐使用的。

  (In case you're wondering: the reason for three syncs is that in the early days of UNIX, when the commands were typed separately, that usually gave sufficient time for most disk I/O to be finished.)

  重启动

  重启动就是完全关闭系统,关掉电源,然后再打开。简单方法是用shutdown 重启动系统而不是仅停止系统。这要使用shutdown的 -r选项,例如命令shutdown -r now。

  许多Linux系统在按ctrl-alt-del键时运行shutdown -r now。这是可设置的,比如在多用户系统中设置一定的延时也许更好。如果是谁都能接触到的系统,那么最好设置为按ctrl-alt-del什么也不干。

  单用户模式

  shutdown命令也可用于切换到单用户模式,这种模式谁也不能登录,只有root可以使用控制台。这对系统一般运行时不能做的系统管理任务很有用。单用户模式将在章详细讨论。

  紧急引导(软)盘

  并非总可以从硬盘引导。例如,LILO设错了,系统可能就无法引导。这时,需要另一个总能引导的方法。对于典型的PC,可能是软驱。

  许多Linux distributions允许在安装时产生一张紧急引导盘emergency boot floppy。应该做。然而,有些这样的引导盘只包含核心,and assume you will be using the programs on the distribution's installation disks to fix whatever problem you have。有时这些程序是不够的:例如你可能需要回存你的备份,而备份/回存软件在Linux安装盘里没有。

  因此,可能需要自己产生root盘。 Graham Chapman写的Bootdisk HOWTO([Cha]) 包含关于此的指导。当然,你必须记得使你的紧急引导盘和root盘最新。

  root盘被mount上时,不能用软驱干其他任何事,因此如果你只有一个软驱可能不太方便。然而,如果你有足够的内存,可以设置引导盘将root盘加载到RAM盘上(为此,引导盘的核心需要特殊设置)。一旦root盘被加载到RAM盘中,软驱就可以用于mount其他盘了。

(0)

相关推荐

  • linux中shell脚本实现下载完关机

    用mint 有一段时间了,下载基本用firefox,有时下载几个G的游戏.可是firefox没有找到下载完关机的选择.处于这个原因,写了这个. download_shutdown.sh #!/bin/bash # Created By: Demo <demo@demo.com> # Created Time: 2015-01-30 12:36:44 # Modified Time: 2015-01-30 12:54:21 dir=$1 while [ "1" ] do if

  • win2003或linux服务器一般多久重启一次

    win2003 server服务器多久重启一次 得根据服务器的负载量来确定,数据量大的话,每次启动时间间隔就需要短些,反之就可以长一些.如果机器维护的比较好,启动时间间隔也可以延长些,只要客户访问速度不慢就好. 在服务器没有问题的情况下: Windows 2003系统的内存管理已经改进的很大了 一般半个月~两个月重新启动一次就可以了. Linux 需要重新启动的时间间隔就可以比较长了.一般3个月到5个月. 这些都得根据你的实际使用情况来看,如果客户访问速度慢了,或者服务器出问题了.就需要重新启动

  • linux正确重启MySQL的方法

    由于是从源码包安装的Mysql,所以系统中是没有红帽常用的servcie mysqld restart这个脚本 只好手工重启 有人建议Killall mysql.这种野蛮的方法其实是不行的,强制终止的话,如果造成表损坏,损失是巨大的. 这里推荐安全的重启方法 $mysql_dir/bin/mysqladmin -u root -p shutdown $mysql_dir/bin/safe_mysqld & mysqladmin和mysqld_safe位于Mysql安装目录的bin目录下,很容易找

  • linux下通过脚本实现自动重启程序

    无论什么程序都不可能完美无缺,理论上,任何程序都有Core Dump的一天,正式运营的程序,尤其是服务器程序,一旦Core Dump,后果不堪设想,有过服务器开发经验的朋友,一定都经历过深夜美梦中,被电话惊醒的惨痛经历,手忙脚乱把服务器重新启动,第二天上班还要被老板一顿狠批.所以,程序发生错误时自动重启变得很重要.这里集中讨论linux实现自动重启程序的方法. linux下实现程序的自动重启有很多方法,这里我们介绍的是通过自己写脚本来实现, 自动重启脚本 假定需要实现重启的程序名为 test ,

  • linux下监视进程 崩溃挂掉后自动重启的shell脚本

    ================================================= 本文为khler原作,转载必须确保本文完整并完整保留原作者信息及本文原始链接 Author: HeYuanHui E-mail: khler@163.com QQ: 23381103 MSN: pragmac@hotmail.com ================================================= 如何保证服务一直运行?如何保证即使服务挂掉了也能自动重启?在写服务

  • 轻松掌握Linux关机重启命令

    在linux下关机和重启系统有shutdown.halt.reboot.init,对于他们来说他们的内部工作过程是不相同的. 又过了一年,进入了2010年,在去年也许微软抢占了Linux的光环,不过对于发展时间不太长的Linux,能在微软面前站稳脚跟,很不简单.其实Linux越来越火热,很多的计算机用户安装了Linux.对于那些Linux初学者,本文为你详细介绍Linux关机重启命令,为你在学习Linux关机命令时起一定的作用. 1.shutdown命令 使用它可以安全地关闭系统,然而在关闭系统

  • linux自动重启tomcat脚本分享

    复制代码 代码如下: #!/bin/bash##chkconfig: 35 88 14#description: tomcat auto start script#script by okhelpercase "$1" instart)echo "Here is start script..."JAVA_HOME=/usr/jdk1.6.0_13;export JAVA_HOMEJRE_HOME=$JAVA_HOME/jre;export JRE_HOMEexpor

  • Linux系统下操作Apache最基本的启动停止和重启命令

    本文假设你的apahce安装目录为/usr/local/apache2,这些方法适合任何情况 apahce启动命令: 推荐/usr/local/apache2/bin/apachectl start apaceh启动 apache停止命令 /usr/local/apache2/bin/apachectl stop 停止 apache重新启动命令: /usr/local/apache2/bin/apachectl restart 重启 要在重启 Apache 服务器时不中断当前的连接,则应运行:

  • php控制linux服务器常用功能 关机 重启 开新站点等

    php 里面有个 system 方法, 可以调用系统命令. 先建立一个脚本(比喻 /root/reboot_server.sh ),重启用的. 复制代码 代码如下: #!/bin/bash reboot 再给他赋予权限 4755 chown root:root /root/reboot_server.sh chmod 4755 /root/reboot_server.sh chmod 4777 /sbin/reboot 再在 php 里, 想办法做如下调用 复制代码 代码如下: <?php sy

  • Linux管理员手册(5)--引导和关机

    本节说明当Linux系统引导和关机时发生了什么,应该任何正确完成. 如果没有遵循正确的过程, 文件可能损坏或丢失. 引导和关机概述 开启计算机并导致其操作系统被加载的过程 叫引导. The name comes from an image of the computer pulling itself up from its bootstraps, but the act itself slightly more realistic. 启动过程中,计算机首先加载了一小段叫 bootstrap lo

  • Linux管理员手册(3)--存贮介质

    Linux管理员手册(3)--磁盘和其他存贮介质的使用 安装和升级系统时,需要对硬盘做很多工作.必须在硬盘上做文件系统,使文件能存在其上,并为系统不同的部分保留空间. 本章说明所有这些初始化工作.通常,一旦你建立了系统,就不必再做这些工作(除了使用软盘).如果你要增加一个新硬盘或更好地调整你的硬盘的使用,那么可能回到这一章. 管理磁盘的基本任务有: 格式化磁盘.这为磁盘进入使用做一些工作,比如检查坏扇区.(现在多数硬盘无须格式化.) 给硬盘分区,如果想用于互相不干扰的几件事.分区的一个原因是要在

  • Linux 管理员手册(5)

    本节说明当Linux系统引导和关机时发生了什么,应该任何正确完成. 如果没有遵循正确的过程, 文件可能损坏或丢失. 引导和关机概述 开启计算机并导致其操作系统被加载的过程 叫引导. The name comes from an image of the computer pulling itself up from its bootstraps, but the act itself slightly more realistic. 启动过程中,计算机首先加载了一小段叫 bootstrap lo

  • Linux 管理员手册(2)

    本章说明标准Linux目录树的重要部分,基于FSSTND文件系统标准.概述根据不同的目的和给定的要求将目录树分为若干分离的文件系统的一般方法.也说明一些其他方法. 背景 本章松散地基于Linux文件系统标准FSSTND版本1.2(见参考书目[Qui95]),它意图建立一个如何组织Linux系统目录树的标准.这样一个标准具有易于写或port(移植?)Linux软件.管理Linux系统的优点,因为所有东西都将在他们的一般地方.此标准没有强制所有人遵从的权威,但它有最多的Linux distribut

  • Linux管理员手册(2)--目录树概述

    本章说明标准Linux目录树的重要部分,基于FSSTND文件系统标准.概述根据不同的目的和给定的要求将目录树分为若干分离的文件系统的一般方法.也说明一些其他方法. 背景 本章松散地基于Linux文件系统标准FSSTND版本1.2(见参考书目[Qui95]),它意图建立一个如何组织Linux系统目录树的标准.这样一个标准具有易于写或port(移植?)Linux软件.管理Linux系统的优点,因为所有东西都将在他们的一般地方.此标准没有强制所有人遵从的权威,但它有最多的Linux distribut

  • Linux 管理员手册(3)

    安装和升级系统时,需要对硬盘做很多工作.必须在硬盘上做文件系统,使文件能存在其上,并为系统不同的部分保留空间. 本章说明所有这些初始化工作.通常,一旦你建立了系统,就不必再做这些工作(除了使用软盘).如果你要增加一个新硬盘或更好地调整你的硬盘的使用,那么可能回到这一章. 管理磁盘的基本任务有: 格式化磁盘.这为磁盘进入使用做一些工作,比如检查坏扇区.(现在多数硬盘无须格式化.) 给硬盘分区,如果想用于互相不干扰的几件事.分区的一个原因是要在一个硬盘上存不同的操作系统.另一个原因是将用户文件和系统

  • Linux管理员手册(1)--系统概述

    本章概述Linux系统.首先描述操作系统提供的主要服务.然后说明实现这些服务的程序 with a considerable lack of detail.本章的目的是理解系统整体,以后再详细说明每个部分. 一个操作系统的不同部分 一个UNIX操作系统包括一个核心程序kernel和一些系统程序system programs.还有一些做某件事情的应用程序application programs.核心是操作系统的心脏 .它跟踪磁盘上的文件,启动程序并运行它们,给不同的进程分配内存和其他资源,从网络接收

  • Linux管理员手册(6)--登录和注销

    说明当一个用户登录和注销时发生了什么.较详细地说明后台进程的各种交互.log文件.配置文件等 通过终端登录 首先,init 确认有一个getty 程序提供给终端连接(或控制台). getty 侦听终端等候用户告知它要登录 (这通常意味着用户必然键入些什么).当它注意到一个用户,getty 输出一个欢迎信息(存在/etc/issue 中),并提示用户名,最后运行login 程序. login 作为一个参数得到用户名,并提示用户输入口令.如果正确,login 启动给此用户设置的shell:否则退出并

  • Linux 管理员手册(6)

    说明当一个用户登录和注销时发生了什么.较详细地说明后台进程的各种交互.log文件.配置文件等 通过终端登录 首先,init 确认有一个getty 程序提供给终端连接(或控制台). getty 侦听终端等候用户告知它要登录 (这通常意味着用户必然键入些什么).当它注意到一个用户,getty 输出一个欢迎信息(存在/etc/issue 中),并提示用户名,最后运行login 程序. login 作为一个参数得到用户名,并提示用户输入口令.如果正确,login 启动给此用户设置的shell:否则退出并

  • Linux 管理员手册(8)--备份

    硬件不肯定是可靠的 软件肯定是不可靠的 人不肯定是不可靠的 而自然肯定是可靠的 本张说明为什么.如何.何时要做备份,及如何回存备份的东西. 备份的重要 数据是有价值的.重新产生它需要你花费时间和努力,并且要花费金钱或至少伤心和眼泪,有时甚至不可能重新产生,例如一些实验结果.由于数据是一种投资,你必须保护它,并采取措施避免丢失. 丢失数据一般有4个原因:硬件失败.软件曲线.人为因素或自然灾害. 虽然现代硬件已经相当可靠,但仍可能自然损坏.存储数据最决定性的硬件是硬盘,它依赖微小的磁区在充满电噪声的

随机推荐