#CentOS システムの起動プロセスとは何ですか?
電源ボタンを押すと、システムの背後にある秘密が理解できるでしょうか?ここでは、Linux システムの起動の背後にある秘密を探っていきます。
1. 電源投入時の自己テスト
マザーボードの電源が投入されると、システムはまず POST プログラムを使用して、内部の各種デバイスをチェックします セルフチェックで異常が見つかった場合は、重大な障害(致命的障害)の場合はシャットダウンします この時点では、各種初期化動作が行われていないため、重大な障害が発生した場合は、プロンプトまたは音声アラーム信号が発せられ、ユーザーが対処するのを待ちます。
2. BIOS 起動ブート フェーズ
セルフテストに合格した後、各ブート デバイスが順番に検索され、ブート プログラムを持つ最初のデバイスがブート デバイスとなります。対象の使用機材通常、コンピューターは「F2」または「Del」キーを押すと BIOS に入り、ハードディスクの起動シーケンスを調整できます。
ブート プログラムを持つ最初のデバイスを見つけた後、BIOS はデバイス内の MBR を見つけて、ブートローダーを読み取ります。
3.GRUP ブート フェーズ
この時点で、 Centos システムが表示されますが、通常は何も操作する必要はなく、システムは自動的に起動します。実際、システムを自分で手動で起動することもできます。
3.1 grub コマンド ライン インターフェイスを使用してシステムを手動で起動します:
grub> root (hd#,#) grub> kernel /vmlinuz-VERSION-RELEASE ro root=/dev/DEVICE grub> initrd /initramfs-VERSION-RELEASE.img grub> boot
3.2 grub コマンド ライン インターフェイス:
e: 编辑模式,用于编辑菜单; c: 命令模式,交互式接口; help: 获取帮助列表 help KEYWORD: 详细帮助信息 find (hd#,#)/PATH/TO/SOMEFILE: root (hd#,#) 设定grup的根设备 kernel /PATH/TO/KERNEL_FILE: 设定本次启动时用到的内核文件;额外还可以添加许多内核支持使用的cmdline参数; 例如:init=/path/to/init, selinux=0 initrd /PATH/TO/INITRAMFS_FILE: 设定为选定的内核提供额外文件的ramdisk; boot: 引导启动选定的内核;
3.3設定ファイル: /boot/grub/grub.conf
設定項目:
default=#: 设定默认启动的菜单项;落单项(title)编号从0开始; timeout=#:指定菜单项等待选项选择的时长; splashimage=(hd#,#)/PATH/TO/XPM_PIC_FILE:指明菜单背景图片文件路径; hiddenmenu:隐藏菜单; password [--md5] STRING: 菜单编辑认证; title TITLE:定义菜单项“标题”, 可出现多次;用来引导多个内核或者操作系统 root (hd#,#):grub查找stage2及kernel文件所在设备分区;为grub的“根”; kernel /PATH/TO/VMLINUZ_FILE [PARAMETERS]:启动的内核 initrd /PATH/TO/INITRAMFS_FILE: 内核匹配的ramfs文件; password [--md5] STRING: 启动选定的内核或操作系统时进行认证
4. カーネルのロードフェーズ
カーネル自体が初期化を行います:
すべての識別可能なハードウェア デバイスを検出します;
ハードウェア ドライバーをロードします; (ドライバーは RAM ディスクの助けを借りてロードされる場合があります)
読み取りでマウントします-only モード ルート ファイル システム;
ユーザー空間で最初のアプリケーションを実行します: /sbin/init
5.init 初期化フェーズ
カーネルisloaded , init プログラムを実行します. init プロセスが起動すると、システム起動の制御は init プロセスに転送されます
/sbin/init プロセスはすべてのプロセスの親プロセスです. init が起動すると、まず構成ファイル /etc/inittab を読み取り、次の作業を実行します:
1.执行系统初始化脚本(/etc/rc.d/rc.sysinit),对系统进行基本的配置,以读写方式挂载根文件系统及其它文件系统,到此系统基本算运行起来了,后面需要进行运行级别的确定及相应服务的启动; 2.确定启动后进入的运行级别; 3.执行/etc/rc.d/rc,该文件定义了服务启动的顺序是先K后S,而具体的每个运行级别的服务状态是放在/etc/rc.d/rcn.d(n=0~6)目录下,所有的文件均链接至/etc/init.d下的相应文件。 4.有关key sequence的设置 5.有关UPS的脚本定义 6.启动虚拟终端/sbin/mingetty 7.在运行级别5上运行X
構成ファイル: /etc/inittab
各行はアクションを定義し、対応するプロセス
id:runlevels:action:process id:一个任务的标识符; runlevels:在哪些级别启动此任务;#,###,可以为空,表示所有级别; action:在什么条件下启动此任务; process:任务;(脚本或程序)
action: wait:等待切换至此任务所在的级别时执行一次; respawn:一旦此任务终止,就自动重新启动之; initdefault:设定默认运行级别;此时,process省略; sysinit:设定系统初始化方式,此处一般为指定/etc/rc.d/rc.sysinit脚本;
K*: 停止するサービス、K##*、優先度、数値が小さいほど優先度がシャットダウンされます。依存するサービスが最初にシャットダウンされ、次に依存するサービスがシャットダウンされます。シャットダウンするもの;
#S*: 開始するサービス; S##*、優先度、数値が小さいほど開始する優先度; 依存サービスが最初に開始され、依存サービスが開始されますlast; chkconfig コマンド: control /etc/init .d/各レベルの各サービス スクリプトの起動またはシャットダウン ステータス;查看:chkconfig --list [name] 添加:chkconfig --add name 删除:chkconfig --del name
chkconfig [--level LEVELS] name <on|off|reset> --level LEVELS:指定要控制的级别;默认为2345; init命令: 级别切换:init # 级别查看:who -r
以上がCentOS システムの起動プロセスとは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。